aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-10-27 07:38:02 -0400
committerIngo Molnar <mingo@elte.hu>2008-10-27 07:38:02 -0400
commit5292ae11babca23c3ff82593630d2d7eebc350a9 (patch)
tree30a6c8123b35686098f306ea39398b7621f42054 /arch
parentb0f209898f1a177bd503d49215b8c6628797a81c (diff)
parent0173a3265b228da319ceb9c1ec6a5682fd1b2d92 (diff)
Merge commit 'v2.6.28-rc2' into x86/uv
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/osf_sys.c20
-rw-r--r--arch/alpha/oprofile/common.c2
-rw-r--r--arch/arm/Kconfig13
-rw-r--r--arch/arm/Makefile2
-rw-r--r--arch/arm/common/Kconfig2
-rw-r--r--arch/arm/common/sa1111.c4
-rw-r--r--arch/arm/configs/corgi_defconfig1396
-rw-r--r--arch/arm/configs/msm_defconfig2
-rw-r--r--arch/arm/configs/spitz_defconfig1294
-rw-r--r--arch/arm/configs/trizeps4_defconfig1
-rw-r--r--arch/arm/include/asm/div64.h6
-rw-r--r--arch/arm/mach-at91/gpio.c1
-rw-r--r--arch/arm/mach-clps711x/include/mach/memory.h2
-rw-r--r--arch/arm/mach-ixp4xx/Kconfig5
-rw-r--r--arch/arm/mach-kirkwood/Makefile2
-rw-r--r--arch/arm/mach-kirkwood/common.c35
-rw-r--r--arch/arm/mach-kirkwood/common.h2
-rw-r--r--arch/arm/mach-kirkwood/rd88f6281-setup.c11
-rw-r--r--arch/arm/mach-msm/Kconfig17
-rw-r--r--arch/arm/mach-msm/Makefile7
-rw-r--r--arch/arm/mach-msm/board-halibut.c38
-rw-r--r--arch/arm/mach-msm/clock-7x01a.c126
-rw-r--r--arch/arm/mach-msm/clock.c218
-rw-r--r--arch/arm/mach-msm/clock.h48
-rw-r--r--arch/arm/mach-msm/common.c116
-rw-r--r--arch/arm/mach-msm/devices.c267
-rw-r--r--arch/arm/mach-msm/devices.h36
-rw-r--r--arch/arm/mach-msm/dma.c72
-rw-r--r--arch/arm/mach-msm/include/mach/board.h1
-rw-r--r--arch/arm/mach-msm/include/mach/debug-macro.S8
-rw-r--r--arch/arm/mach-msm/include/mach/dma.h24
-rw-r--r--arch/arm/mach-msm/include/mach/msm_iomap.h69
-rw-r--r--arch/arm/mach-msm/include/mach/vreg.h29
-rw-r--r--arch/arm/mach-msm/io.c12
-rw-r--r--arch/arm/mach-msm/irq.c10
-rw-r--r--arch/arm/mach-msm/proc_comm.c110
-rw-r--r--arch/arm/mach-msm/proc_comm.h165
-rw-r--r--arch/arm/mach-msm/timer.c2
-rw-r--r--arch/arm/mach-msm/vreg.c143
-rw-r--r--arch/arm/mach-mv78xx0/db78x00-bp-setup.c5
-rw-r--r--arch/arm/mach-orion5x/common.c38
-rw-r--r--arch/arm/mach-orion5x/common.h2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c11
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-ge-setup.c11
-rw-r--r--arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c11
-rw-r--r--arch/arm/mach-orion5x/wrt350n-v2-setup.c11
-rw-r--r--arch/arm/mach-pxa/Kconfig9
-rw-r--r--arch/arm/mach-pxa/Makefile1
-rw-r--r--arch/arm/mach-pxa/corgi_lcd.c289
-rw-r--r--arch/arm/mach-pxa/corgi_ssp.c276
-rw-r--r--arch/arm/mach-pxa/include/mach/corgi.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/irqs.h5
-rw-r--r--arch/arm/mach-pxa/include/mach/spitz.h3
-rw-r--r--arch/arm/mach-pxa/include/mach/tosa.h3
-rw-r--r--arch/arm/mach-pxa/pwm.c2
-rw-r--r--arch/arm/mach-pxa/sharpsl_pm.c17
-rw-r--r--arch/arm/mach-pxa/tosa.c21
-rw-r--r--arch/arm/mach-pxa/trizeps4.c2
-rw-r--r--arch/arm/mach-s3c2443/clock.c3
-rw-r--r--arch/arm/mm/Kconfig4
-rw-r--r--arch/arm/mm/cache-v4.S6
-rw-r--r--arch/arm/mm/proc-v7.S4
-rw-r--r--arch/arm/plat-s3c24xx/pwm-clock.c2
-rw-r--r--arch/arm/plat-s3c24xx/pwm.c12
-rw-r--r--arch/avr32/Kconfig12
-rw-r--r--arch/avr32/Makefile2
-rw-r--r--arch/avr32/boards/atngw100/Kconfig35
-rw-r--r--arch/avr32/boards/atngw100/Makefile3
-rw-r--r--arch/avr32/boards/atngw100/evklcd10x.c155
-rw-r--r--arch/avr32/boards/atngw100/setup.c7
-rw-r--r--arch/avr32/boards/atstk1000/atstk1002.c2
-rw-r--r--arch/avr32/boards/atstk1000/atstk1003.c2
-rw-r--r--arch/avr32/boards/atstk1000/atstk1004.c2
-rw-r--r--arch/avr32/boards/favr-32/Kconfig22
-rw-r--r--arch/avr32/boards/favr-32/Makefile1
-rw-r--r--arch/avr32/boards/favr-32/flash.c98
-rw-r--r--arch/avr32/boards/favr-32/setup.c352
-rw-r--r--arch/avr32/boards/mimc200/Makefile1
-rw-r--r--arch/avr32/boards/mimc200/flash.c143
-rw-r--r--arch/avr32/boards/mimc200/fram.c80
-rw-r--r--arch/avr32/boards/mimc200/setup.c237
-rw-r--r--arch/avr32/configs/atngw100_evklcd100_defconfig1264
-rw-r--r--arch/avr32/configs/atngw100_evklcd101_defconfig1264
-rw-r--r--arch/avr32/configs/favr-32_defconfig1235
-rw-r--r--arch/avr32/configs/mimc200_defconfig1109
-rw-r--r--arch/avr32/mach-at32ap/at32ap700x.c11
-rw-r--r--arch/avr32/mach-at32ap/cpufreq.c14
-rw-r--r--arch/avr32/mach-at32ap/include/mach/board.h10
-rw-r--r--arch/cris/Kconfig2
-rw-r--r--arch/h8300/Kconfig2
-rw-r--r--arch/ia64/Kconfig50
-rw-r--r--arch/ia64/Makefile3
-rw-r--r--arch/ia64/configs/generic_defconfig2
-rw-r--r--arch/ia64/configs/tiger_defconfig2
-rw-r--r--arch/ia64/dig/Makefile5
-rw-r--r--arch/ia64/dig/dig_vtd_iommu.c59
-rw-r--r--arch/ia64/dig/machvec_vtd.c3
-rw-r--r--arch/ia64/ia32/audit.c2
-rw-r--r--arch/ia64/ia32/ia32_entry.S11
-rw-r--r--arch/ia64/ia32/sys_ia32.c106
-rw-r--r--arch/ia64/include/asm/break.h9
-rw-r--r--arch/ia64/include/asm/cacheflush.h2
-rw-r--r--arch/ia64/include/asm/device.h3
-rw-r--r--arch/ia64/include/asm/dma-mapping.h50
-rw-r--r--arch/ia64/include/asm/iommu.h16
-rw-r--r--arch/ia64/include/asm/kregs.h2
-rw-r--r--arch/ia64/include/asm/machvec.h4
-rw-r--r--arch/ia64/include/asm/machvec_dig_vtd.h38
-rw-r--r--arch/ia64/include/asm/machvec_init.h1
-rw-r--r--arch/ia64/include/asm/machvec_xen.h22
-rw-r--r--arch/ia64/include/asm/meminit.h3
-rw-r--r--arch/ia64/include/asm/native/inst.h10
-rw-r--r--arch/ia64/include/asm/native/pvchk_inst.h263
-rw-r--r--arch/ia64/include/asm/paravirt.h4
-rw-r--r--arch/ia64/include/asm/pci.h3
-rw-r--r--arch/ia64/include/asm/ptrace.h8
-rw-r--r--arch/ia64/include/asm/pvclock-abi.h48
-rw-r--r--arch/ia64/include/asm/swiotlb.h56
-rw-r--r--arch/ia64/include/asm/sync_bitops.h51
-rw-r--r--arch/ia64/include/asm/syscall.h163
-rw-r--r--arch/ia64/include/asm/thread_info.h3
-rw-r--r--arch/ia64/include/asm/timex.h2
-rw-r--r--arch/ia64/include/asm/unistd.h1
-rw-r--r--arch/ia64/include/asm/xen/events.h50
-rw-r--r--arch/ia64/include/asm/xen/grant_table.h29
-rw-r--r--arch/ia64/include/asm/xen/hypercall.h265
-rw-r--r--arch/ia64/include/asm/xen/hypervisor.h89
-rw-r--r--arch/ia64/include/asm/xen/inst.h458
-rw-r--r--arch/ia64/include/asm/xen/interface.h346
-rw-r--r--arch/ia64/include/asm/xen/irq.h44
-rw-r--r--arch/ia64/include/asm/xen/minstate.h134
-rw-r--r--arch/ia64/include/asm/xen/page.h65
-rw-r--r--arch/ia64/include/asm/xen/privop.h129
-rw-r--r--arch/ia64/include/asm/xen/xcom_hcall.h51
-rw-r--r--arch/ia64/include/asm/xen/xencomm.h42
-rw-r--r--arch/ia64/kernel/Makefile22
-rw-r--r--arch/ia64/kernel/acpi.c22
-rw-r--r--arch/ia64/kernel/asm-offsets.c31
-rw-r--r--arch/ia64/kernel/entry.S5
-rw-r--r--arch/ia64/kernel/ivt.S6
-rw-r--r--arch/ia64/kernel/msi_ia64.c80
-rw-r--r--arch/ia64/kernel/nr-irqs.c1
-rw-r--r--arch/ia64/kernel/paravirt.c2
-rw-r--r--arch/ia64/kernel/paravirt_inst.h4
-rw-r--r--arch/ia64/kernel/pci-dma.c129
-rw-r--r--arch/ia64/kernel/pci-swiotlb.c46
-rw-r--r--arch/ia64/kernel/perfmon.c7
-rw-r--r--arch/ia64/kernel/process.c22
-rw-r--r--arch/ia64/kernel/ptrace.c112
-rw-r--r--arch/ia64/kernel/setup.c42
-rw-r--r--arch/ia64/kernel/signal.c8
-rw-r--r--arch/ia64/kvm/kvm-ia64.c2
-rw-r--r--arch/ia64/lib/flush.S55
-rw-r--r--arch/ia64/mm/tlb.c8
-rw-r--r--arch/ia64/oprofile/init.c4
-rw-r--r--arch/ia64/oprofile/perfmon.c4
-rw-r--r--arch/ia64/scripts/pvcheck.sed32
-rw-r--r--arch/ia64/sn/kernel/io_acpi_init.c10
-rw-r--r--arch/ia64/xen/Kconfig26
-rw-r--r--arch/ia64/xen/Makefile22
-rw-r--r--arch/ia64/xen/grant-table.c155
-rw-r--r--arch/ia64/xen/hypercall.S91
-rw-r--r--arch/ia64/xen/hypervisor.c96
-rw-r--r--arch/ia64/xen/irq_xen.c435
-rw-r--r--arch/ia64/xen/irq_xen.h34
-rw-r--r--arch/ia64/xen/machvec.c4
-rw-r--r--arch/ia64/xen/suspend.c64
-rw-r--r--arch/ia64/xen/time.c213
-rw-r--r--arch/ia64/xen/time.h24
-rw-r--r--arch/ia64/xen/xcom_hcall.c441
-rw-r--r--arch/ia64/xen/xen_pv_ops.c364
-rw-r--r--arch/ia64/xen/xencomm.c105
-rw-r--r--arch/ia64/xen/xenivt.S52
-rw-r--r--arch/ia64/xen/xensetup.S83
-rw-r--r--arch/m32r/oprofile/init.c2
-rw-r--r--arch/m68k/amiga/config.c21
-rw-r--r--arch/m68k/atari/config.c15
-rw-r--r--arch/m68k/atari/stram.c28
-rw-r--r--arch/m68k/bvme6000/config.c11
-rw-r--r--arch/m68k/kernel/setup.c35
-rw-r--r--arch/m68k/mvme147/config.c10
-rw-r--r--arch/m68k/mvme16x/config.c15
-rw-r--r--arch/m68k/q40/config.c10
-rw-r--r--arch/m68k/sun3/config.c12
-rw-r--r--arch/m68k/sun3x/config.c12
-rw-r--r--arch/mips/include/asm/txx9/tx4938.h13
-rw-r--r--arch/mips/oprofile/common.c2
-rw-r--r--arch/mips/oprofile/op_impl.h2
-rw-r--r--arch/mips/oprofile/op_model_rm9000.c2
-rw-r--r--arch/mips/txx9/generic/setup_tx4938.c47
-rw-r--r--arch/mips/txx9/rbtx4938/setup.c1
-rw-r--r--arch/parisc/hpux/fs.c5
-rw-r--r--arch/parisc/oprofile/init.c2
-rw-r--r--arch/powerpc/Kconfig13
-rw-r--r--arch/powerpc/boot/Makefile7
-rw-r--r--arch/powerpc/boot/addnote.c41
-rw-r--r--arch/powerpc/boot/cuboot-52xx.c4
-rw-r--r--arch/powerpc/boot/cuboot-acadia.c174
-rw-r--r--arch/powerpc/boot/dts/acadia.dts224
-rw-r--r--arch/powerpc/boot/dts/hcu4.dts168
-rw-r--r--arch/powerpc/boot/dts/mpc8315erdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc832x_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitx.dts16
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitxgp.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc834x_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc836x_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8377_rdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc8378_rdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc8379_rdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc8536ds.dts12
-rw-r--r--arch/powerpc/boot/dts/mpc8568mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8572ds.dts27
-rw-r--r--arch/powerpc/boot/libfdt-wrapper.c22
-rw-r--r--arch/powerpc/boot/main.c14
-rw-r--r--arch/powerpc/boot/ops.h6
-rw-r--r--arch/powerpc/boot/string.S4
-rwxr-xr-xarch/powerpc/boot/wrapper5
-rw-r--r--arch/powerpc/configs/40x/acadia_defconfig921
-rw-r--r--arch/powerpc/configs/40x/hcu4_defconfig929
-rw-r--r--arch/powerpc/include/asm/kdump.h17
-rw-r--r--arch/powerpc/include/asm/page.h1
-rw-r--r--arch/powerpc/include/asm/signal.h1
-rw-r--r--arch/powerpc/kernel/cputable.c13
-rw-r--r--arch/powerpc/kernel/crash_dump.c2
-rw-r--r--arch/powerpc/kernel/head_64.S39
-rw-r--r--arch/powerpc/kernel/iommu.c69
-rw-r--r--arch/powerpc/kernel/machine_kexec.c2
-rw-r--r--arch/powerpc/kernel/machine_kexec_64.c26
-rw-r--r--arch/powerpc/kernel/misc_64.S9
-rw-r--r--arch/powerpc/kernel/pci-common.c3
-rw-r--r--arch/powerpc/kernel/prom_init.c61
-rw-r--r--arch/powerpc/kernel/prom_init_check.sh2
-rw-r--r--arch/powerpc/kernel/setup-common.c7
-rw-r--r--arch/powerpc/kernel/signal.h2
-rw-r--r--arch/powerpc/kernel/signal_64.c2
-rw-r--r--arch/powerpc/kernel/udbg_16550.c2
-rw-r--r--arch/powerpc/mm/hash_utils_64.c6
-rw-r--r--arch/powerpc/mm/numa.c21
-rw-r--r--arch/powerpc/oprofile/cell/pr_util.h13
-rw-r--r--arch/powerpc/oprofile/cell/spu_profiler.c6
-rw-r--r--arch/powerpc/oprofile/cell/spu_task_sync.c236
-rw-r--r--arch/powerpc/oprofile/op_model_cell.c2
-rw-r--r--arch/powerpc/platforms/40x/Kconfig38
-rw-r--r--arch/powerpc/platforms/40x/Makefile2
-rw-r--r--arch/powerpc/platforms/40x/hcu4.c61
-rw-r--r--arch/powerpc/platforms/40x/ppc40x_simple.c80
-rw-r--r--arch/powerpc/platforms/44x/Kconfig8
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_common.c7
-rw-r--r--arch/powerpc/platforms/85xx/ksi8560.c4
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_ads.c4
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_cds.c4
-rw-r--r--arch/powerpc/platforms/85xx/sbc8548.c4
-rw-r--r--arch/powerpc/platforms/85xx/sbc8560.c4
-rw-r--r--arch/powerpc/platforms/85xx/stx_gp3.c4
-rw-r--r--arch/powerpc/platforms/85xx/tqm85xx.c4
-rw-r--r--arch/powerpc/platforms/86xx/gef_sbc610.c2
-rw-r--r--arch/powerpc/platforms/86xx/mpc86xx_hpcn.c2
-rw-r--r--arch/powerpc/platforms/86xx/sbc8641d.c2
-rw-r--r--arch/powerpc/platforms/cell/ras.c6
-rw-r--r--arch/powerpc/platforms/cell/smp.c10
-rw-r--r--arch/powerpc/platforms/cell/spufs/file.c155
-rw-r--r--arch/powerpc/platforms/cell/spufs/run.c3
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c24
-rw-r--r--arch/powerpc/platforms/cell/spufs/spufs.h1
-rw-r--r--arch/powerpc/platforms/cell/spufs/sputrace.c37
-rw-r--r--arch/powerpc/platforms/cell/spufs/syscalls.c4
-rw-r--r--arch/powerpc/platforms/embedded6xx/c2k.c3
-rw-r--r--arch/powerpc/platforms/embedded6xx/prpmc2800.c3
-rw-r--r--arch/powerpc/platforms/pseries/hotplug-memory.c6
-rw-r--r--arch/powerpc/platforms/pseries/iommu.c6
-rw-r--r--arch/powerpc/platforms/pseries/smp.c13
-rw-r--r--arch/powerpc/sysdev/Makefile1
-rw-r--r--arch/powerpc/sysdev/ppc4xx_gpio.c217
-rw-r--r--arch/sh/boards/board-ap325rxa.c64
-rw-r--r--arch/sh/boards/board-rsk7203.c44
-rw-r--r--arch/sh/boards/mach-highlander/Kconfig1
-rw-r--r--arch/sh/boards/mach-highlander/Makefile10
-rw-r--r--arch/sh/boards/mach-highlander/pinmux-r7785rp.c20
-rw-r--r--arch/sh/boards/mach-highlander/setup.c2
-rw-r--r--arch/sh/boards/mach-migor/setup.c18
-rw-r--r--arch/sh/configs/ap325rxa_defconfig72
-rw-r--r--arch/sh/configs/cayman_defconfig406
-rw-r--r--arch/sh/configs/dreamcast_defconfig76
-rw-r--r--arch/sh/configs/edosk7760_defconfig168
-rw-r--r--arch/sh/configs/hp6xx_defconfig65
-rw-r--r--arch/sh/configs/landisk_defconfig129
-rw-r--r--arch/sh/configs/lboxre2_defconfig88
-rw-r--r--arch/sh/configs/magicpanelr2_defconfig78
-rw-r--r--arch/sh/configs/microdev_defconfig83
-rw-r--r--arch/sh/configs/migor_defconfig125
-rw-r--r--arch/sh/configs/r7780mp_defconfig223
-rw-r--r--arch/sh/configs/r7785rp_defconfig280
-rw-r--r--arch/sh/configs/rsk7203_defconfig111
-rw-r--r--arch/sh/configs/rts7751r2d1_defconfig121
-rw-r--r--arch/sh/configs/rts7751r2dplus_defconfig121
-rw-r--r--arch/sh/configs/rts7751r2dplus_qemu_defconfig72
-rw-r--r--arch/sh/configs/sdk7780_defconfig135
-rw-r--r--arch/sh/configs/se7206_defconfig75
-rw-r--r--arch/sh/configs/se7343_defconfig80
-rw-r--r--arch/sh/configs/se7619_defconfig56
-rw-r--r--arch/sh/configs/se7705_defconfig659
-rw-r--r--arch/sh/configs/se7712_defconfig113
-rw-r--r--arch/sh/configs/se7721_defconfig263
-rw-r--r--arch/sh/configs/se7722_defconfig458
-rw-r--r--arch/sh/configs/se7750_defconfig700
-rw-r--r--arch/sh/configs/se7751_defconfig693
-rw-r--r--arch/sh/configs/se7780_defconfig292
-rw-r--r--arch/sh/configs/sh03_defconfig801
-rw-r--r--arch/sh/configs/sh7710voipgw_defconfig222
-rw-r--r--arch/sh/configs/sh7763rdp_defconfig75
-rw-r--r--arch/sh/configs/sh7785lcr_defconfig199
-rw-r--r--arch/sh/configs/shmin_defconfig639
-rw-r--r--arch/sh/configs/shx3_defconfig627
-rw-r--r--arch/sh/configs/snapgear_defconfig237
-rw-r--r--arch/sh/configs/systemh_defconfig478
-rw-r--r--arch/sh/configs/titan_defconfig1061
-rw-r--r--arch/sh/include/asm/gpio.h19
-rw-r--r--arch/sh/include/asm/kdebug.h1
-rw-r--r--arch/sh/include/cpu-sh4/cpu/sh7785.h234
-rw-r--r--arch/sh/include/mach-common/mach/highlander.h6
-rw-r--r--arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c30
-rw-r--r--arch/sh/kernel/cpu/sh4a/Makefile1
-rw-r--r--arch/sh/kernel/cpu/sh4a/clock-sh7763.c1
-rw-r--r--arch/sh/kernel/cpu/sh4a/pinmux-sh7785.c1310
-rw-r--r--arch/sh/kernel/gpio.c8
-rw-r--r--arch/sh/kernel/sh_ksyms_32.c7
-rw-r--r--arch/sh/kernel/smp.c1
-rw-r--r--arch/sh/kernel/traps_32.c2
-rw-r--r--arch/sh/mm/init.c17
-rw-r--r--arch/sparc/kernel/apc.c2
-rw-r--r--arch/sparc/kernel/head.S1
-rw-r--r--arch/sparc/oprofile/init.c2
-rw-r--r--arch/sparc64/kernel/trampoline.S18
-rw-r--r--arch/sparc64/oprofile/init.c2
-rw-r--r--arch/um/Kconfig.common77
-rw-r--r--arch/um/Kconfig.rest42
-rw-r--r--arch/um/Kconfig.um (renamed from arch/um/Kconfig)122
-rw-r--r--arch/um/Kconfig.x86 (renamed from arch/um/Kconfig.i386)43
-rw-r--r--arch/um/Kconfig.x86_6439
-rw-r--r--arch/um/Makefile93
-rw-r--r--arch/um/Makefile-os-Linux1
-rw-r--r--arch/um/drivers/Makefile1
-rw-r--r--arch/um/drivers/ubd_kern.c19
-rw-r--r--arch/um/include/asm/a.out-core.h27
-rw-r--r--arch/um/include/asm/apic.h4
-rw-r--r--arch/um/include/asm/auxvec.h4
-rw-r--r--arch/um/include/asm/bugs.h6
-rw-r--r--arch/um/include/asm/cache.h17
-rw-r--r--arch/um/include/asm/checksum.h6
-rw-r--r--arch/um/include/asm/common.lds.S130
-rw-r--r--arch/um/include/asm/cputime.h6
-rw-r--r--arch/um/include/asm/current.h13
-rw-r--r--arch/um/include/asm/delay.h20
-rw-r--r--arch/um/include/asm/desc.h16
-rw-r--r--arch/um/include/asm/device.h7
-rw-r--r--arch/um/include/asm/dma-mapping.h128
-rw-r--r--arch/um/include/asm/dma.h10
-rw-r--r--arch/um/include/asm/emergency-restart.h6
-rw-r--r--arch/um/include/asm/fixmap.h99
-rw-r--r--arch/um/include/asm/futex.h6
-rw-r--r--arch/um/include/asm/hardirq.h25
-rw-r--r--arch/um/include/asm/hw_irq.h7
-rw-r--r--arch/um/include/asm/io.h57
-rw-r--r--arch/um/include/asm/irq.h23
-rw-r--r--arch/um/include/asm/irq_regs.h1
-rw-r--r--arch/um/include/asm/irq_vectors.h20
-rw-r--r--arch/um/include/asm/irqflags.h6
-rw-r--r--arch/um/include/asm/kdebug.h1
-rw-r--r--arch/um/include/asm/kmap_types.h29
-rw-r--r--arch/um/include/asm/mmu.h22
-rw-r--r--arch/um/include/asm/mmu_context.h54
-rw-r--r--arch/um/include/asm/mutex.h9
-rw-r--r--arch/um/include/asm/page.h122
-rw-r--r--arch/um/include/asm/page_offset.h1
-rw-r--r--arch/um/include/asm/param.h20
-rw-r--r--arch/um/include/asm/pci.h7
-rw-r--r--arch/um/include/asm/pda.h31
-rw-r--r--arch/um/include/asm/pgalloc.h72
-rw-r--r--arch/um/include/asm/pgtable-2level.h53
-rw-r--r--arch/um/include/asm/pgtable-3level.h146
-rw-r--r--arch/um/include/asm/pgtable.h366
-rw-r--r--arch/um/include/asm/processor-generic.h136
-rw-r--r--arch/um/include/asm/ptrace-generic.h55
-rw-r--r--arch/um/include/asm/required-features.h9
-rw-r--r--arch/um/include/asm/sections.h7
-rw-r--r--arch/um/include/asm/segment.h10
-rw-r--r--arch/um/include/asm/setup.h10
-rw-r--r--arch/um/include/asm/smp.h33
-rw-r--r--arch/um/include/asm/suspend.h4
-rw-r--r--arch/um/include/asm/system.h35
-rw-r--r--arch/um/include/asm/thread_info.h83
-rw-r--r--arch/um/include/asm/timex.h13
-rw-r--r--arch/um/include/asm/tlb.h127
-rw-r--r--arch/um/include/asm/tlbflush.h31
-rw-r--r--arch/um/include/asm/topology.h6
-rw-r--r--arch/um/include/asm/uaccess.h99
-rw-r--r--arch/um/include/asm/xor.h6
-rw-r--r--arch/um/include/shared/aio.h (renamed from arch/um/include/aio.h)0
-rw-r--r--arch/um/include/shared/arch.h (renamed from arch/um/include/arch.h)0
-rw-r--r--arch/um/include/shared/as-layout.h (renamed from arch/um/include/as-layout.h)1
-rw-r--r--arch/um/include/shared/chan_kern.h (renamed from arch/um/include/chan_kern.h)0
-rw-r--r--arch/um/include/shared/chan_user.h (renamed from arch/um/include/chan_user.h)0
-rw-r--r--arch/um/include/shared/common-offsets.h (renamed from arch/um/include/common-offsets.h)13
-rw-r--r--arch/um/include/shared/elf_user.h (renamed from arch/um/include/elf_user.h)0
-rw-r--r--arch/um/include/shared/frame_kern.h (renamed from arch/um/include/frame_kern.h)0
-rw-r--r--arch/um/include/shared/init.h (renamed from arch/um/include/init.h)0
-rw-r--r--arch/um/include/shared/initrd.h (renamed from arch/um/include/initrd.h)0
-rw-r--r--arch/um/include/shared/irq_kern.h (renamed from arch/um/include/irq_kern.h)0
-rw-r--r--arch/um/include/shared/irq_user.h (renamed from arch/um/include/irq_user.h)0
-rw-r--r--arch/um/include/shared/kern.h (renamed from arch/um/include/kern.h)0
-rw-r--r--arch/um/include/shared/kern_util.h (renamed from arch/um/include/kern_util.h)0
-rw-r--r--arch/um/include/shared/ldt.h37
-rw-r--r--arch/um/include/shared/line.h (renamed from arch/um/include/line.h)0
-rw-r--r--arch/um/include/shared/longjmp.h (renamed from arch/um/include/longjmp.h)0
-rw-r--r--arch/um/include/shared/mconsole.h (renamed from arch/um/include/mconsole.h)0
-rw-r--r--arch/um/include/shared/mconsole_kern.h (renamed from arch/um/include/mconsole_kern.h)0
-rw-r--r--arch/um/include/shared/mem.h (renamed from arch/um/include/mem.h)0
-rw-r--r--arch/um/include/shared/mem_kern.h (renamed from arch/um/include/mem_kern.h)0
-rw-r--r--arch/um/include/shared/mem_user.h (renamed from arch/um/include/mem_user.h)0
-rw-r--r--arch/um/include/shared/net_kern.h (renamed from arch/um/include/net_kern.h)0
-rw-r--r--arch/um/include/shared/net_user.h (renamed from arch/um/include/net_user.h)0
-rw-r--r--arch/um/include/shared/os.h (renamed from arch/um/include/os.h)1
-rw-r--r--arch/um/include/shared/process.h (renamed from arch/um/include/process.h)0
-rw-r--r--arch/um/include/shared/ptrace_user.h (renamed from arch/um/include/ptrace_user.h)0
-rw-r--r--arch/um/include/shared/registers.h (renamed from arch/um/include/registers.h)0
-rw-r--r--arch/um/include/shared/sigio.h (renamed from arch/um/include/sigio.h)0
-rw-r--r--arch/um/include/shared/skas/mm_id.h (renamed from arch/um/include/skas/mm_id.h)0
-rw-r--r--arch/um/include/shared/skas/proc_mm.h (renamed from arch/um/include/skas/proc_mm.h)0
-rw-r--r--arch/um/include/shared/skas/skas.h (renamed from arch/um/include/skas/skas.h)0
-rw-r--r--arch/um/include/shared/skas/stub-data.h (renamed from arch/um/include/skas/stub-data.h)0
-rw-r--r--arch/um/include/shared/skas_ptrace.h (renamed from arch/um/include/skas_ptrace.h)0
-rw-r--r--arch/um/include/shared/skas_ptregs.h (renamed from arch/um/include/skas_ptregs.h)0
-rw-r--r--arch/um/include/shared/syscall.h (renamed from arch/um/include/syscall.h)0
-rw-r--r--arch/um/include/shared/sysrq.h (renamed from arch/um/include/sysrq.h)0
-rw-r--r--arch/um/include/shared/task.h (renamed from arch/um/include/task.h)0
-rw-r--r--arch/um/include/shared/tlb.h (renamed from arch/um/include/tlb.h)0
-rw-r--r--arch/um/include/shared/ubd_user.h (renamed from arch/um/include/ubd_user.h)0
-rw-r--r--arch/um/include/shared/um_malloc.h (renamed from arch/um/include/um_malloc.h)0
-rw-r--r--arch/um/include/shared/um_mmu.h (renamed from arch/um/include/um_mmu.h)3
-rw-r--r--arch/um/include/shared/um_uaccess.h (renamed from arch/um/include/um_uaccess.h)0
-rw-r--r--arch/um/include/shared/user.h (renamed from arch/um/include/user.h)2
-rw-r--r--arch/um/include/sigcontext.h25
-rw-r--r--arch/um/kernel/exec.c1
-rw-r--r--arch/um/kernel/internal.h1
-rw-r--r--arch/um/kernel/signal.c2
-rw-r--r--arch/um/kernel/syscall.c1
-rw-r--r--arch/um/os-Linux/include/file.h11
-rw-r--r--arch/um/os-Linux/skas/mem.c1
-rw-r--r--arch/um/sys-i386/asm/archparam.h26
-rw-r--r--arch/um/sys-i386/asm/elf.h163
-rw-r--r--arch/um/sys-i386/asm/module.h13
-rw-r--r--arch/um/sys-i386/asm/processor.h78
-rw-r--r--arch/um/sys-i386/asm/ptrace.h56
-rw-r--r--arch/um/sys-i386/shared/sysdep/archsetjmp.h (renamed from arch/um/include/sysdep-i386/archsetjmp.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/barrier.h (renamed from arch/um/include/sysdep-i386/barrier.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/checksum.h (renamed from arch/um/include/sysdep-i386/checksum.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/faultinfo.h (renamed from arch/um/include/sysdep-i386/faultinfo.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/host_ldt.h34
-rw-r--r--arch/um/sys-i386/shared/sysdep/kernel-offsets.h (renamed from arch/um/include/sysdep-i386/kernel-offsets.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/ptrace.h (renamed from arch/um/include/sysdep-i386/ptrace.h)1
-rw-r--r--arch/um/sys-i386/shared/sysdep/ptrace_user.h (renamed from arch/um/include/sysdep-i386/ptrace_user.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/sc.h (renamed from arch/um/include/sysdep-i386/sc.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/sigcontext.h (renamed from arch/um/include/sysdep-i386/sigcontext.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/skas_ptrace.h (renamed from arch/um/include/sysdep-i386/skas_ptrace.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/stub.h (renamed from arch/um/include/sysdep-i386/stub.h)1
-rw-r--r--arch/um/sys-i386/shared/sysdep/syscalls.h (renamed from arch/um/include/sysdep-i386/syscalls.h)0
-rw-r--r--arch/um/sys-i386/shared/sysdep/system.h132
-rw-r--r--arch/um/sys-i386/shared/sysdep/tls.h (renamed from arch/um/include/sysdep-i386/tls.h)2
-rw-r--r--arch/um/sys-i386/shared/sysdep/vm-flags.h14
-rw-r--r--arch/um/sys-i386/stub.S1
-rw-r--r--arch/um/sys-i386/syscalls.c1
-rw-r--r--arch/um/sys-ia64/sysdep/ptrace.h (renamed from arch/um/include/sysdep-ia64/ptrace.h)0
-rw-r--r--arch/um/sys-ia64/sysdep/sigcontext.h (renamed from arch/um/include/sysdep-ia64/sigcontext.h)0
-rw-r--r--arch/um/sys-ia64/sysdep/skas_ptrace.h (renamed from arch/um/include/sysdep-ia64/skas_ptrace.h)0
-rw-r--r--arch/um/sys-ia64/sysdep/syscalls.h (renamed from arch/um/include/sysdep-ia64/syscalls.h)0
-rw-r--r--arch/um/sys-ppc/asm/archparam.h8
-rw-r--r--arch/um/sys-ppc/asm/elf.h53
-rw-r--r--arch/um/sys-ppc/asm/processor.h15
-rw-r--r--arch/um/sys-ppc/shared/sysdep/ptrace.h (renamed from arch/um/include/sysdep-ppc/ptrace.h)0
-rw-r--r--arch/um/sys-ppc/shared/sysdep/sigcontext.h (renamed from arch/um/include/sysdep-ppc/sigcontext.h)0
-rw-r--r--arch/um/sys-ppc/shared/sysdep/skas_ptrace.h (renamed from arch/um/include/sysdep-ppc/skas_ptrace.h)0
-rw-r--r--arch/um/sys-ppc/shared/sysdep/syscalls.h (renamed from arch/um/include/sysdep-ppc/syscalls.h)0
-rw-r--r--arch/um/sys-x86_64/asm/archparam.h26
-rw-r--r--arch/um/sys-x86_64/asm/elf.h119
-rw-r--r--arch/um/sys-x86_64/asm/module.h30
-rw-r--r--arch/um/sys-x86_64/asm/processor.h56
-rw-r--r--arch/um/sys-x86_64/asm/ptrace.h72
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/archsetjmp.h (renamed from arch/um/include/sysdep-x86_64/archsetjmp.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/barrier.h (renamed from arch/um/include/sysdep-x86_64/barrier.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/checksum.h (renamed from arch/um/include/sysdep-x86_64/checksum.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/faultinfo.h (renamed from arch/um/include/sysdep-x86_64/faultinfo.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/host_ldt.h38
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/kernel-offsets.h (renamed from arch/um/include/sysdep-x86_64/kernel-offsets.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/ptrace.h (renamed from arch/um/include/sysdep-x86_64/ptrace.h)1
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/ptrace_user.h (renamed from arch/um/include/sysdep-x86_64/ptrace_user.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/sc.h (renamed from arch/um/include/sysdep-x86_64/sc.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/sigcontext.h (renamed from arch/um/include/sysdep-x86_64/sigcontext.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/skas_ptrace.h (renamed from arch/um/include/sysdep-x86_64/skas_ptrace.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/stub.h (renamed from arch/um/include/sysdep-x86_64/stub.h)1
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/syscalls.h (renamed from arch/um/include/sysdep-x86_64/syscalls.h)0
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/system.h132
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/tls.h (renamed from arch/um/include/sysdep-x86_64/tls.h)2
-rw-r--r--arch/um/sys-x86_64/shared/sysdep/vm-flags.h33
-rw-r--r--arch/um/sys-x86_64/stub.S1
-rw-r--r--arch/um/sys-x86_64/syscall_table.c8
-rw-r--r--arch/x86/Kconfig5
-rw-r--r--arch/x86/Makefile6
-rw-r--r--arch/x86/boot/compressed/misc.c2
-rw-r--r--arch/x86/boot/video-bios.c4
-rw-r--r--arch/x86/boot/video-vesa.c4
-rw-r--r--arch/x86/include/asm/Kbuild24
-rw-r--r--arch/x86/include/asm/a.out-core.h73
-rw-r--r--arch/x86/include/asm/a.out.h20
-rw-r--r--arch/x86/include/asm/acpi.h178
-rw-r--r--arch/x86/include/asm/agp.h35
-rw-r--r--arch/x86/include/asm/alternative-asm.h22
-rw-r--r--arch/x86/include/asm/alternative.h183
-rw-r--r--arch/x86/include/asm/amd_iommu.h35
-rw-r--r--arch/x86/include/asm/amd_iommu_types.h404
-rw-r--r--arch/x86/include/asm/apic.h199
-rw-r--r--arch/x86/include/asm/apicdef.h417
-rw-r--r--arch/x86/include/asm/arch_hooks.h26
-rw-r--r--arch/x86/include/asm/asm.h47
-rw-r--r--arch/x86/include/asm/atomic.h5
-rw-r--r--arch/x86/include/asm/atomic_32.h259
-rw-r--r--arch/x86/include/asm/atomic_64.h473
-rw-r--r--arch/x86/include/asm/auxvec.h12
-rw-r--r--arch/x86/include/asm/bigsmp/apic.h139
-rw-r--r--arch/x86/include/asm/bigsmp/apicdef.h13
-rw-r--r--arch/x86/include/asm/bigsmp/ipi.h25
-rw-r--r--arch/x86/include/asm/bios_ebda.h36
-rw-r--r--arch/x86/include/asm/bitops.h451
-rw-r--r--arch/x86/include/asm/boot.h26
-rw-r--r--arch/x86/include/asm/bootparam.h111
-rw-r--r--arch/x86/include/asm/bug.h39
-rw-r--r--arch/x86/include/asm/bugs.h12
-rw-r--r--arch/x86/include/asm/byteorder.h81
-rw-r--r--arch/x86/include/asm/cache.h20
-rw-r--r--arch/x86/include/asm/cacheflush.h118
-rw-r--r--arch/x86/include/asm/calgary.h72
-rw-r--r--arch/x86/include/asm/calling.h170
-rw-r--r--arch/x86/include/asm/checksum.h5
-rw-r--r--arch/x86/include/asm/checksum_32.h189
-rw-r--r--arch/x86/include/asm/checksum_64.h191
-rw-r--r--arch/x86/include/asm/cmpxchg.h5
-rw-r--r--arch/x86/include/asm/cmpxchg_32.h344
-rw-r--r--arch/x86/include/asm/cmpxchg_64.h185
-rw-r--r--arch/x86/include/asm/compat.h218
-rw-r--r--arch/x86/include/asm/cpu.h20
-rw-r--r--arch/x86/include/asm/cpufeature.h271
-rw-r--r--arch/x86/include/asm/cputime.h1
-rw-r--r--arch/x86/include/asm/current.h39
-rw-r--r--arch/x86/include/asm/debugreg.h70
-rw-r--r--arch/x86/include/asm/delay.h31
-rw-r--r--arch/x86/include/asm/desc.h409
-rw-r--r--arch/x86/include/asm/desc_defs.h95
-rw-r--r--arch/x86/include/asm/device.h16
-rw-r--r--arch/x86/include/asm/div64.h60
-rw-r--r--arch/x86/include/asm/dma-mapping.h308
-rw-r--r--arch/x86/include/asm/dma.h318
-rw-r--r--arch/x86/include/asm/dmi.h26
-rw-r--r--arch/x86/include/asm/ds.h238
-rw-r--r--arch/x86/include/asm/dwarf2.h61
-rw-r--r--arch/x86/include/asm/e820.h146
-rw-r--r--arch/x86/include/asm/edac.h18
-rw-r--r--arch/x86/include/asm/efi.h110
-rw-r--r--arch/x86/include/asm/elf.h336
-rw-r--r--arch/x86/include/asm/emergency-restart.h18
-rw-r--r--arch/x86/include/asm/errno.h1
-rw-r--r--arch/x86/include/asm/es7000/apic.h193
-rw-r--r--arch/x86/include/asm/es7000/apicdef.h13
-rw-r--r--arch/x86/include/asm/es7000/ipi.h24
-rw-r--r--arch/x86/include/asm/es7000/mpparse.h30
-rw-r--r--arch/x86/include/asm/es7000/wakecpu.h59
-rw-r--r--arch/x86/include/asm/fb.h21
-rw-r--r--arch/x86/include/asm/fcntl.h1
-rw-r--r--arch/x86/include/asm/fixmap.h68
-rw-r--r--arch/x86/include/asm/fixmap_32.h123
-rw-r--r--arch/x86/include/asm/fixmap_64.h83
-rw-r--r--arch/x86/include/asm/floppy.h281
-rw-r--r--arch/x86/include/asm/frame.h27
-rw-r--r--arch/x86/include/asm/ftrace.h24
-rw-r--r--arch/x86/include/asm/futex.h140
-rw-r--r--arch/x86/include/asm/gart.h73
-rw-r--r--arch/x86/include/asm/genapic.h5
-rw-r--r--arch/x86/include/asm/genapic_32.h126
-rw-r--r--arch/x86/include/asm/genapic_64.h58
-rw-r--r--arch/x86/include/asm/geode.h253
-rw-r--r--arch/x86/include/asm/gpio.h56
-rw-r--r--arch/x86/include/asm/hardirq.h11
-rw-r--r--arch/x86/include/asm/hardirq_32.h28
-rw-r--r--arch/x86/include/asm/hardirq_64.h23
-rw-r--r--arch/x86/include/asm/highmem.h82
-rw-r--r--arch/x86/include/asm/hpet.h114
-rw-r--r--arch/x86/include/asm/hugetlb.h93
-rw-r--r--arch/x86/include/asm/hw_irq.h131
-rw-r--r--arch/x86/include/asm/hypertransport.h45
-rw-r--r--arch/x86/include/asm/i387.h400
-rw-r--r--arch/x86/include/asm/i8253.h18
-rw-r--r--arch/x86/include/asm/i8259.h63
-rw-r--r--arch/x86/include/asm/ia32.h170
-rw-r--r--arch/x86/include/asm/ia32_unistd.h18
-rw-r--r--arch/x86/include/asm/idle.h16
-rw-r--r--arch/x86/include/asm/intel_arch_perfmon.h31
-rw-r--r--arch/x86/include/asm/io.h91
-rw-r--r--arch/x86/include/asm/io_32.h284
-rw-r--r--arch/x86/include/asm/io_64.h244
-rw-r--r--arch/x86/include/asm/io_apic.h204
-rw-r--r--arch/x86/include/asm/ioctl.h1
-rw-r--r--arch/x86/include/asm/ioctls.h94
-rw-r--r--arch/x86/include/asm/iommu.h50
-rw-r--r--arch/x86/include/asm/ipcbuf.h28
-rw-r--r--arch/x86/include/asm/ipi.h138
-rw-r--r--arch/x86/include/asm/irq.h50
-rw-r--r--arch/x86/include/asm/irq_regs.h5
-rw-r--r--arch/x86/include/asm/irq_regs_32.h29
-rw-r--r--arch/x86/include/asm/irq_regs_64.h1
-rw-r--r--arch/x86/include/asm/irq_remapping.h8
-rw-r--r--arch/x86/include/asm/irq_vectors.h164
-rw-r--r--arch/x86/include/asm/irqflags.h211
-rw-r--r--arch/x86/include/asm/ist.h34
-rw-r--r--arch/x86/include/asm/k8.h15
-rw-r--r--arch/x86/include/asm/kdebug.h37
-rw-r--r--arch/x86/include/asm/kexec.h175
-rw-r--r--arch/x86/include/asm/kgdb.h79
-rw-r--r--arch/x86/include/asm/kmap_types.h29
-rw-r--r--arch/x86/include/asm/kprobes.h88
-rw-r--r--arch/x86/include/asm/kvm.h211
-rw-r--r--arch/x86/include/asm/kvm_host.h752
-rw-r--r--arch/x86/include/asm/kvm_para.h147
-rw-r--r--arch/x86/include/asm/kvm_x86_emulate.h184
-rw-r--r--arch/x86/include/asm/ldt.h40
-rw-r--r--arch/x86/include/asm/lguest.h94
-rw-r--r--arch/x86/include/asm/lguest_hcall.h71
-rw-r--r--arch/x86/include/asm/linkage.h61
-rw-r--r--arch/x86/include/asm/local.h235
-rw-r--r--arch/x86/include/asm/mach-default/apm.h73
-rw-r--r--arch/x86/include/asm/mach-default/do_timer.h16
-rw-r--r--arch/x86/include/asm/mach-default/entry_arch.h36
-rw-r--r--arch/x86/include/asm/mach-default/mach_apic.h156
-rw-r--r--arch/x86/include/asm/mach-default/mach_apicdef.h24
-rw-r--r--arch/x86/include/asm/mach-default/mach_ipi.h64
-rw-r--r--arch/x86/include/asm/mach-default/mach_mpparse.h17
-rw-r--r--arch/x86/include/asm/mach-default/mach_mpspec.h12
-rw-r--r--arch/x86/include/asm/mach-default/mach_timer.h48
-rw-r--r--arch/x86/include/asm/mach-default/mach_traps.h33
-rw-r--r--arch/x86/include/asm/mach-default/mach_wakecpu.h42
-rw-r--r--arch/x86/include/asm/mach-default/pci-functions.h19
-rw-r--r--arch/x86/include/asm/mach-default/setup_arch.h3
-rw-r--r--arch/x86/include/asm/mach-default/smpboot_hooks.h59
-rw-r--r--arch/x86/include/asm/mach-generic/gpio.h15
-rw-r--r--arch/x86/include/asm/mach-generic/mach_apic.h33
-rw-r--r--arch/x86/include/asm/mach-generic/mach_apicdef.h11
-rw-r--r--arch/x86/include/asm/mach-generic/mach_ipi.h10
-rw-r--r--arch/x86/include/asm/mach-generic/mach_mpparse.h10
-rw-r--r--arch/x86/include/asm/mach-generic/mach_mpspec.h12
-rw-r--r--arch/x86/include/asm/mach-rdc321x/gpio.h60
-rw-r--r--arch/x86/include/asm/mach-rdc321x/rdc321x_defs.h12
-rw-r--r--arch/x86/include/asm/mach-voyager/do_timer.h17
-rw-r--r--arch/x86/include/asm/mach-voyager/entry_arch.h26
-rw-r--r--arch/x86/include/asm/mach-voyager/setup_arch.h12
-rw-r--r--arch/x86/include/asm/math_emu.h31
-rw-r--r--arch/x86/include/asm/mc146818rtc.h104
-rw-r--r--arch/x86/include/asm/mca.h43
-rw-r--r--arch/x86/include/asm/mca_dma.h201
-rw-r--r--arch/x86/include/asm/mce.h130
-rw-r--r--arch/x86/include/asm/microcode.h47
-rw-r--r--arch/x86/include/asm/mman.h20
-rw-r--r--arch/x86/include/asm/mmconfig.h12
-rw-r--r--arch/x86/include/asm/mmu.h26
-rw-r--r--arch/x86/include/asm/mmu_context.h37
-rw-r--r--arch/x86/include/asm/mmu_context_32.h56
-rw-r--r--arch/x86/include/asm/mmu_context_64.h54
-rw-r--r--arch/x86/include/asm/mmx.h14
-rw-r--r--arch/x86/include/asm/mmzone.h5
-rw-r--r--arch/x86/include/asm/mmzone_32.h134
-rw-r--r--arch/x86/include/asm/mmzone_64.h51
-rw-r--r--arch/x86/include/asm/module.h80
-rw-r--r--arch/x86/include/asm/mpspec.h145
-rw-r--r--arch/x86/include/asm/mpspec_def.h180
-rw-r--r--arch/x86/include/asm/msgbuf.h39
-rw-r--r--arch/x86/include/asm/msidef.h55
-rw-r--r--arch/x86/include/asm/msr-index.h332
-rw-r--r--arch/x86/include/asm/msr.h247
-rw-r--r--arch/x86/include/asm/mtrr.h173
-rw-r--r--arch/x86/include/asm/mutex.h5
-rw-r--r--arch/x86/include/asm/mutex_32.h125
-rw-r--r--arch/x86/include/asm/mutex_64.h100
-rw-r--r--arch/x86/include/asm/nmi.h81
-rw-r--r--arch/x86/include/asm/nops.h118
-rw-r--r--arch/x86/include/asm/numa.h5
-rw-r--r--arch/x86/include/asm/numa_32.h11
-rw-r--r--arch/x86/include/asm/numa_64.h43
-rw-r--r--arch/x86/include/asm/numaq.h169
-rw-r--r--arch/x86/include/asm/numaq/apic.h136
-rw-r--r--arch/x86/include/asm/numaq/apicdef.h14
-rw-r--r--arch/x86/include/asm/numaq/ipi.h25
-rw-r--r--arch/x86/include/asm/numaq/mpparse.h7
-rw-r--r--arch/x86/include/asm/numaq/wakecpu.h43
-rw-r--r--arch/x86/include/asm/olpc.h132
-rw-r--r--arch/x86/include/asm/page.h209
-rw-r--r--arch/x86/include/asm/page_32.h136
-rw-r--r--arch/x86/include/asm/page_64.h105
-rw-r--r--arch/x86/include/asm/param.h22
-rw-r--r--arch/x86/include/asm/paravirt.h1650
-rw-r--r--arch/x86/include/asm/parport.h10
-rw-r--r--arch/x86/include/asm/pat.h22
-rw-r--r--arch/x86/include/asm/pci-direct.h21
-rw-r--r--arch/x86/include/asm/pci.h114
-rw-r--r--arch/x86/include/asm/pci_32.h34
-rw-r--r--arch/x86/include/asm/pci_64.h66
-rw-r--r--arch/x86/include/asm/pda.h137
-rw-r--r--arch/x86/include/asm/percpu.h218
-rw-r--r--arch/x86/include/asm/pgalloc.h114
-rw-r--r--arch/x86/include/asm/pgtable-2level-defs.h20
-rw-r--r--arch/x86/include/asm/pgtable-2level.h79
-rw-r--r--arch/x86/include/asm/pgtable-3level-defs.h28
-rw-r--r--arch/x86/include/asm/pgtable-3level.h175
-rw-r--r--arch/x86/include/asm/pgtable.h562
-rw-r--r--arch/x86/include/asm/pgtable_32.h191
-rw-r--r--arch/x86/include/asm/pgtable_64.h285
-rw-r--r--arch/x86/include/asm/poll.h1
-rw-r--r--arch/x86/include/asm/posix_types.h13
-rw-r--r--arch/x86/include/asm/posix_types_32.h85
-rw-r--r--arch/x86/include/asm/posix_types_64.h119
-rw-r--r--arch/x86/include/asm/prctl.h10
-rw-r--r--arch/x86/include/asm/processor-cyrix.h38
-rw-r--r--arch/x86/include/asm/processor-flags.h100
-rw-r--r--arch/x86/include/asm/processor.h936
-rw-r--r--arch/x86/include/asm/proto.h32
-rw-r--r--arch/x86/include/asm/ptrace-abi.h145
-rw-r--r--arch/x86/include/asm/ptrace.h280
-rw-r--r--arch/x86/include/asm/pvclock-abi.h42
-rw-r--r--arch/x86/include/asm/pvclock.h14
-rw-r--r--arch/x86/include/asm/reboot.h21
-rw-r--r--arch/x86/include/asm/reboot_fixups.h6
-rw-r--r--arch/x86/include/asm/required-features.h82
-rw-r--r--arch/x86/include/asm/resource.h1
-rw-r--r--arch/x86/include/asm/resume-trace.h21
-rw-r--r--arch/x86/include/asm/rio.h63
-rw-r--r--arch/x86/include/asm/rtc.h1
-rw-r--r--arch/x86/include/asm/rwlock.h8
-rw-r--r--arch/x86/include/asm/rwsem.h265
-rw-r--r--arch/x86/include/asm/scatterlist.h33
-rw-r--r--arch/x86/include/asm/seccomp.h5
-rw-r--r--arch/x86/include/asm/seccomp_32.h17
-rw-r--r--arch/x86/include/asm/seccomp_64.h25
-rw-r--r--arch/x86/include/asm/sections.h1
-rw-r--r--arch/x86/include/asm/segment.h209
-rw-r--r--arch/x86/include/asm/sembuf.h24
-rw-r--r--arch/x86/include/asm/serial.h29
-rw-r--r--arch/x86/include/asm/setup.h105
-rw-r--r--arch/x86/include/asm/shmbuf.h51
-rw-r--r--arch/x86/include/asm/shmparam.h6
-rw-r--r--arch/x86/include/asm/sigcontext.h284
-rw-r--r--arch/x86/include/asm/sigcontext32.h75
-rw-r--r--arch/x86/include/asm/siginfo.h10
-rw-r--r--arch/x86/include/asm/signal.h262
-rw-r--r--arch/x86/include/asm/smp.h229
-rw-r--r--arch/x86/include/asm/socket.h57
-rw-r--r--arch/x86/include/asm/sockios.h13
-rw-r--r--arch/x86/include/asm/sparsemem.h34
-rw-r--r--arch/x86/include/asm/spinlock.h364
-rw-r--r--arch/x86/include/asm/spinlock_types.h20
-rw-r--r--arch/x86/include/asm/srat.h39
-rw-r--r--arch/x86/include/asm/stacktrace.h21
-rw-r--r--arch/x86/include/asm/stat.h114
-rw-r--r--arch/x86/include/asm/statfs.h12
-rw-r--r--arch/x86/include/asm/string.h5
-rw-r--r--arch/x86/include/asm/string_32.h326
-rw-r--r--arch/x86/include/asm/string_64.h60
-rw-r--r--arch/x86/include/asm/summit/apic.h184
-rw-r--r--arch/x86/include/asm/summit/apicdef.h13
-rw-r--r--arch/x86/include/asm/summit/ipi.h25
-rw-r--r--arch/x86/include/asm/summit/mpparse.h109
-rw-r--r--arch/x86/include/asm/suspend.h5
-rw-r--r--arch/x86/include/asm/suspend_32.h51
-rw-r--r--arch/x86/include/asm/suspend_64.h52
-rw-r--r--arch/x86/include/asm/swiotlb.h58
-rw-r--r--arch/x86/include/asm/sync_bitops.h130
-rw-r--r--arch/x86/include/asm/syscall.h213
-rw-r--r--arch/x86/include/asm/syscalls.h93
-rw-r--r--arch/x86/include/asm/system.h425
-rw-r--r--arch/x86/include/asm/system_64.h22
-rw-r--r--arch/x86/include/asm/tce.h48
-rw-r--r--arch/x86/include/asm/termbits.h198
-rw-r--r--arch/x86/include/asm/termios.h113
-rw-r--r--arch/x86/include/asm/therm_throt.h9
-rw-r--r--arch/x86/include/asm/thread_info.h264
-rw-r--r--arch/x86/include/asm/time.h63
-rw-r--r--arch/x86/include/asm/timer.h66
-rw-r--r--arch/x86/include/asm/timex.h19
-rw-r--r--arch/x86/include/asm/tlb.h11
-rw-r--r--arch/x86/include/asm/tlbflush.h178
-rw-r--r--arch/x86/include/asm/topology.h258
-rw-r--r--arch/x86/include/asm/trampoline.h21
-rw-r--r--arch/x86/include/asm/traps.h81
-rw-r--r--arch/x86/include/asm/tsc.h62
-rw-r--r--arch/x86/include/asm/types.h36
-rw-r--r--arch/x86/include/asm/uaccess.h454
-rw-r--r--arch/x86/include/asm/uaccess_32.h218
-rw-r--r--arch/x86/include/asm/uaccess_64.h202
-rw-r--r--arch/x86/include/asm/ucontext.h18
-rw-r--r--arch/x86/include/asm/unaligned.h14
-rw-r--r--arch/x86/include/asm/unistd.h13
-rw-r--r--arch/x86/include/asm/unistd_32.h379
-rw-r--r--arch/x86/include/asm/unistd_64.h693
-rw-r--r--arch/x86/include/asm/unwind.h13
-rw-r--r--arch/x86/include/asm/user.h5
-rw-r--r--arch/x86/include/asm/user32.h70
-rw-r--r--arch/x86/include/asm/user_32.h131
-rw-r--r--arch/x86/include/asm/user_64.h137
-rw-r--r--arch/x86/include/asm/uv/bios.h94
-rw-r--r--arch/x86/include/asm/uv/uv_bau.h332
-rw-r--r--arch/x86/include/asm/uv/uv_hub.h354
-rw-r--r--arch/x86/include/asm/uv/uv_irq.h36
-rw-r--r--arch/x86/include/asm/uv/uv_mmrs.h1295
-rw-r--r--arch/x86/include/asm/vdso.h47
-rw-r--r--arch/x86/include/asm/vga.h20
-rw-r--r--arch/x86/include/asm/vgtod.h29
-rw-r--r--arch/x86/include/asm/vic.h61
-rw-r--r--arch/x86/include/asm/visws/cobalt.h125
-rw-r--r--arch/x86/include/asm/visws/lithium.h53
-rw-r--r--arch/x86/include/asm/visws/piix4.h107
-rw-r--r--arch/x86/include/asm/visws/sgivw.h5
-rw-r--r--arch/x86/include/asm/vm86.h208
-rw-r--r--arch/x86/include/asm/vmi.h263
-rw-r--r--arch/x86/include/asm/vmi_time.h98
-rw-r--r--arch/x86/include/asm/voyager.h528
-rw-r--r--arch/x86/include/asm/vsyscall.h44
-rw-r--r--arch/x86/include/asm/xcr.h49
-rw-r--r--arch/x86/include/asm/xen/events.h24
-rw-r--r--arch/x86/include/asm/xen/grant_table.h7
-rw-r--r--arch/x86/include/asm/xen/hypercall.h527
-rw-r--r--arch/x86/include/asm/xen/hypervisor.h82
-rw-r--r--arch/x86/include/asm/xen/interface.h175
-rw-r--r--arch/x86/include/asm/xen/interface_32.h97
-rw-r--r--arch/x86/include/asm/xen/interface_64.h159
-rw-r--r--arch/x86/include/asm/xen/page.h165
-rw-r--r--arch/x86/include/asm/xor.h5
-rw-r--r--arch/x86/include/asm/xor_32.h888
-rw-r--r--arch/x86/include/asm/xor_64.h361
-rw-r--r--arch/x86/include/asm/xsave.h118
-rw-r--r--arch/x86/kernel/acpi/boot.c15
-rw-r--r--arch/x86/kernel/acpi/sleep.c4
-rw-r--r--arch/x86/kernel/amd_iommu_init.c2
-rw-r--r--arch/x86/kernel/asm-offsets_64.c2
-rw-r--r--arch/x86/kernel/cpu/Makefile2
-rw-r--r--arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c3
-rw-r--r--arch/x86/kernel/cpu/cpufreq/powernow-k8.c42
-rw-r--r--arch/x86/kernel/cpu/proc.c6
-rw-r--r--arch/x86/kernel/dumpstack_32.c2
-rw-r--r--arch/x86/kernel/early-quirks.c55
-rw-r--r--arch/x86/kernel/entry_32.S2
-rw-r--r--arch/x86/kernel/genapic_flat_64.c4
-rw-r--r--arch/x86/kernel/genx2apic_cluster.c2
-rw-r--r--arch/x86/kernel/genx2apic_phys.c2
-rw-r--r--arch/x86/kernel/genx2apic_uv_x.c2
-rw-r--r--arch/x86/kernel/irq.c4
-rw-r--r--arch/x86/kernel/pci-dma.c16
-rw-r--r--arch/x86/kernel/process_64.c7
-rw-r--r--arch/x86/kernel/setup_percpu.c2
-rw-r--r--arch/x86/kernel/smpboot.c8
-rw-r--r--arch/x86/kernel/syscall_64.c4
-rw-r--r--arch/x86/kernel/tlb_uv.c2
-rw-r--r--arch/x86/kernel/traps.c8
-rw-r--r--arch/x86/kernel/xsave.c2
-rw-r--r--arch/x86/kvm/i8254.c8
-rw-r--r--arch/x86/kvm/lapic.c6
-rw-r--r--arch/x86/mm/memtest.c7
-rw-r--r--arch/x86/mm/pageattr.c11
-rw-r--r--arch/x86/oprofile/backtrace.c3
-rw-r--r--arch/x86/oprofile/nmi_int.c173
-rw-r--r--arch/x86/oprofile/op_counter.h18
-rw-r--r--arch/x86/oprofile/op_model_amd.c59
-rw-r--r--arch/x86/oprofile/op_model_p4.c32
-rw-r--r--arch/x86/oprofile/op_model_ppro.c120
-rw-r--r--arch/x86/oprofile/op_x86_model.h13
-rw-r--r--arch/xtensa/Kconfig7
-rw-r--r--arch/xtensa/Makefile1
-rw-r--r--arch/xtensa/kernel/irq.c2
-rw-r--r--arch/xtensa/platforms/iss/network.c2
882 files changed, 69408 insertions, 6592 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 8509dad31204..18a3ea1aac51 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -165,14 +165,11 @@ osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent,
165 buf.error = 0; 165 buf.error = 0;
166 166
167 error = vfs_readdir(file, osf_filldir, &buf); 167 error = vfs_readdir(file, osf_filldir, &buf);
168 if (error < 0) 168 if (error >= 0)
169 goto out_putf; 169 error = buf.error;
170
171 error = buf.error;
172 if (count != buf.count) 170 if (count != buf.count)
173 error = count - buf.count; 171 error = count - buf.count;
174 172
175 out_putf:
176 fput(file); 173 fput(file);
177 out: 174 out:
178 return error; 175 return error;
@@ -986,10 +983,12 @@ asmlinkage int
986osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, 983osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
987 struct timeval32 __user *tvp) 984 struct timeval32 __user *tvp)
988{ 985{
989 s64 timeout = MAX_SCHEDULE_TIMEOUT; 986 struct timespec end_time, *to = NULL;
990 if (tvp) { 987 if (tvp) {
991 time_t sec, usec; 988 time_t sec, usec;
992 989
990 to = &end_time;
991
993 if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp)) 992 if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp))
994 || __get_user(sec, &tvp->tv_sec) 993 || __get_user(sec, &tvp->tv_sec)
995 || __get_user(usec, &tvp->tv_usec)) { 994 || __get_user(usec, &tvp->tv_usec)) {
@@ -999,14 +998,13 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
999 if (sec < 0 || usec < 0) 998 if (sec < 0 || usec < 0)
1000 return -EINVAL; 999 return -EINVAL;
1001 1000
1002 if ((unsigned long) sec < MAX_SELECT_SECONDS) { 1001 if (poll_select_set_timeout(to, sec, usec * NSEC_PER_USEC))
1003 timeout = (usec + 1000000/HZ - 1) / (1000000/HZ); 1002 return -EINVAL;
1004 timeout += sec * (unsigned long) HZ; 1003
1005 }
1006 } 1004 }
1007 1005
1008 /* OSF does not copy back the remaining time. */ 1006 /* OSF does not copy back the remaining time. */
1009 return core_sys_select(n, inp, outp, exp, &timeout); 1007 return core_sys_select(n, inp, outp, exp, to);
1010} 1008}
1011 1009
1012struct rusage32 { 1010struct rusage32 {
diff --git a/arch/alpha/oprofile/common.c b/arch/alpha/oprofile/common.c
index 7c3d5ec6ec67..bd8ac533a504 100644
--- a/arch/alpha/oprofile/common.c
+++ b/arch/alpha/oprofile/common.c
@@ -106,7 +106,7 @@ op_axp_stop(void)
106} 106}
107 107
108static int 108static int
109op_axp_create_files(struct super_block * sb, struct dentry * root) 109op_axp_create_files(struct super_block *sb, struct dentry *root)
110{ 110{
111 int i; 111 int i;
112 112
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index df39d20f7425..5021db2217ed 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -356,7 +356,7 @@ config ARCH_IXP4XX
356 select GENERIC_GPIO 356 select GENERIC_GPIO
357 select GENERIC_TIME 357 select GENERIC_TIME
358 select GENERIC_CLOCKEVENTS 358 select GENERIC_CLOCKEVENTS
359 select ZONE_DMA if PCI 359 select DMABOUNCE if PCI
360 help 360 help
361 Support for Intel's IXP4XX (XScale) family of processors. 361 Support for Intel's IXP4XX (XScale) family of processors.
362 362
@@ -540,16 +540,15 @@ config ARCH_OMAP
540 help 540 help
541 Support for TI's OMAP platform (OMAP1 and OMAP2). 541 Support for TI's OMAP platform (OMAP1 and OMAP2).
542 542
543config ARCH_MSM7X00A 543config ARCH_MSM
544 bool "Qualcomm MSM7X00A" 544 bool "Qualcomm MSM"
545 select GENERIC_TIME 545 select GENERIC_TIME
546 select GENERIC_CLOCKEVENTS 546 select GENERIC_CLOCKEVENTS
547 help 547 help
548 Support for Qualcomm MSM7X00A based systems. This runs on the ARM11 548 Support for Qualcomm MSM7K based systems. This runs on the ARM11
549 apps processor of the MSM7X00A and depends on a shared memory 549 apps processor of the MSM7K and depends on a shared memory
550 interface to the ARM9 modem processor which runs the baseband stack 550 interface to the ARM9 modem processor which runs the baseband stack
551 and controls some vital subsystems (clock and power control, etc). 551 and controls some vital subsystems (clock and power control, etc).
552 <http://www.cdmatech.com/products/msm7200_chipset_solution.jsp>
553 552
554endchoice 553endchoice
555 554
@@ -1256,6 +1255,8 @@ source "drivers/hid/Kconfig"
1256 1255
1257source "drivers/usb/Kconfig" 1256source "drivers/usb/Kconfig"
1258 1257
1258source "drivers/uwb/Kconfig"
1259
1259source "drivers/mmc/Kconfig" 1260source "drivers/mmc/Kconfig"
1260 1261
1261source "drivers/memstick/Kconfig" 1262source "drivers/memstick/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 7d5121260fda..bd6e28115ebb 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -141,7 +141,7 @@ endif
141 machine-$(CONFIG_ARCH_MX3) := mx3 141 machine-$(CONFIG_ARCH_MX3) := mx3
142 machine-$(CONFIG_ARCH_ORION5X) := orion5x 142 machine-$(CONFIG_ARCH_ORION5X) := orion5x
143 plat-$(CONFIG_PLAT_ORION) := orion 143 plat-$(CONFIG_PLAT_ORION) := orion
144 machine-$(CONFIG_ARCH_MSM7X00A) := msm 144 machine-$(CONFIG_ARCH_MSM) := msm
145 machine-$(CONFIG_ARCH_LOKI) := loki 145 machine-$(CONFIG_ARCH_LOKI) := loki
146 machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0 146 machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0
147 147
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
index 2e32acca02fb..86b5e6982660 100644
--- a/arch/arm/common/Kconfig
+++ b/arch/arm/common/Kconfig
@@ -13,10 +13,10 @@ config ICST307
13config SA1111 13config SA1111
14 bool 14 bool
15 select DMABOUNCE if !ARCH_PXA 15 select DMABOUNCE if !ARCH_PXA
16 select ZONE_DMA if !ARCH_PXA
17 16
18config DMABOUNCE 17config DMABOUNCE
19 bool 18 bool
19 select ZONE_DMA
20 20
21config TIMER_ACORN 21config TIMER_ACORN
22 bool 22 bool
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index fb86f248aab8..47ccec95f3e8 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -581,6 +581,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
581 goto out; 581 goto out;
582 } 582 }
583 583
584#ifdef CONFIG_DMABOUNCE
584 /* 585 /*
585 * If the parent device has a DMA mask associated with it, 586 * If the parent device has a DMA mask associated with it,
586 * propagate it down to the children. 587 * propagate it down to the children.
@@ -598,6 +599,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
598 } 599 }
599 } 600 }
600 } 601 }
602#endif
601 603
602out: 604out:
603 return ret; 605 return ret;
@@ -937,7 +939,7 @@ static int sa1111_resume(struct platform_device *dev)
937#define sa1111_resume NULL 939#define sa1111_resume NULL
938#endif 940#endif
939 941
940static int sa1111_probe(struct platform_device *pdev) 942static int __devinit sa1111_probe(struct platform_device *pdev)
941{ 943{
942 struct resource *mem; 944 struct resource *mem;
943 int irq; 945 int irq;
diff --git a/arch/arm/configs/corgi_defconfig b/arch/arm/configs/corgi_defconfig
index 9b8748a8d9dd..f3af0b593eb0 100644
--- a/arch/arm/configs/corgi_defconfig
+++ b/arch/arm/configs/corgi_defconfig
@@ -1,71 +1,111 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15-rc2 3# Linux kernel version: 2.6.27
4# Mon Nov 28 10:30:09 2005 4# Mon Oct 20 10:12:23 2008
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
7CONFIG_MMU=y 11CONFIG_MMU=y
8CONFIG_UID16=y 12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17CONFIG_TRACE_IRQFLAGS_SUPPORT=y
18CONFIG_HARDIRQS_SW_RESEND=y
19CONFIG_GENERIC_IRQ_PROBE=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 20CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 24CONFIG_GENERIC_CALIBRATE_DELAY=y
25CONFIG_ARCH_MTD_XIP=y
26CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
27CONFIG_VECTORS_BASE=0xffff0000
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 29
12# 30#
13# Code maturity level options 31# General setup
14# 32#
15CONFIG_EXPERIMENTAL=y 33CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 34CONFIG_BROKEN_ON_SMP=y
18CONFIG_LOCK_KERNEL=y 35CONFIG_LOCK_KERNEL=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 36CONFIG_INIT_ENV_ARG_LIMIT=32
20
21#
22# General setup
23#
24CONFIG_LOCALVERSION="" 37CONFIG_LOCALVERSION=""
25CONFIG_LOCALVERSION_AUTO=y 38CONFIG_LOCALVERSION_AUTO=y
26CONFIG_SWAP=y 39CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
41CONFIG_SYSVIPC_SYSCTL=y
28# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
29CONFIG_BSD_PROCESS_ACCT=y 43CONFIG_BSD_PROCESS_ACCT=y
30# CONFIG_BSD_PROCESS_ACCT_V3 is not set 44# CONFIG_BSD_PROCESS_ACCT_V3 is not set
31CONFIG_SYSCTL=y 45# CONFIG_TASKSTATS is not set
32# CONFIG_AUDIT is not set 46# CONFIG_AUDIT is not set
33CONFIG_HOTPLUG=y
34CONFIG_KOBJECT_UEVENT=y
35# CONFIG_IKCONFIG is not set 47# CONFIG_IKCONFIG is not set
36CONFIG_INITRAMFS_SOURCE="" 48CONFIG_LOG_BUF_SHIFT=14
49# CONFIG_CGROUPS is not set
50# CONFIG_GROUP_SCHED is not set
51CONFIG_SYSFS_DEPRECATED=y
52CONFIG_SYSFS_DEPRECATED_V2=y
53# CONFIG_RELAY is not set
54# CONFIG_NAMESPACES is not set
55# CONFIG_BLK_DEV_INITRD is not set
56# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
57CONFIG_SYSCTL=y
37CONFIG_EMBEDDED=y 58CONFIG_EMBEDDED=y
59CONFIG_UID16=y
60CONFIG_SYSCTL_SYSCALL=y
38CONFIG_KALLSYMS=y 61CONFIG_KALLSYMS=y
39# CONFIG_KALLSYMS_ALL is not set 62# CONFIG_KALLSYMS_ALL is not set
40# CONFIG_KALLSYMS_EXTRA_PASS is not set 63# CONFIG_KALLSYMS_EXTRA_PASS is not set
64CONFIG_HOTPLUG=y
41CONFIG_PRINTK=y 65CONFIG_PRINTK=y
42CONFIG_BUG=y 66CONFIG_BUG=y
67CONFIG_ELF_CORE=y
68CONFIG_COMPAT_BRK=y
43CONFIG_BASE_FULL=y 69CONFIG_BASE_FULL=y
44CONFIG_FUTEX=y 70CONFIG_FUTEX=y
71CONFIG_ANON_INODES=y
45CONFIG_EPOLL=y 72CONFIG_EPOLL=y
46# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 73CONFIG_SIGNALFD=y
74CONFIG_TIMERFD=y
75CONFIG_EVENTFD=y
47CONFIG_SHMEM=y 76CONFIG_SHMEM=y
48CONFIG_CC_ALIGN_FUNCTIONS=0 77CONFIG_AIO=y
49CONFIG_CC_ALIGN_LABELS=0 78CONFIG_VM_EVENT_COUNTERS=y
50CONFIG_CC_ALIGN_LOOPS=0 79CONFIG_SLUB_DEBUG=y
51CONFIG_CC_ALIGN_JUMPS=0 80# CONFIG_SLAB is not set
81CONFIG_SLUB=y
82# CONFIG_SLOB is not set
83CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85CONFIG_OPROFILE=m
86CONFIG_HAVE_OPROFILE=y
87# CONFIG_KPROBES is not set
88CONFIG_HAVE_KPROBES=y
89CONFIG_HAVE_KRETPROBES=y
90CONFIG_HAVE_CLK=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
92CONFIG_SLABINFO=y
93CONFIG_RT_MUTEXES=y
52# CONFIG_TINY_SHMEM is not set 94# CONFIG_TINY_SHMEM is not set
53CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
54
55#
56# Loadable module support
57#
58CONFIG_MODULES=y 96CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set
59CONFIG_MODULE_UNLOAD=y 98CONFIG_MODULE_UNLOAD=y
60CONFIG_MODULE_FORCE_UNLOAD=y 99CONFIG_MODULE_FORCE_UNLOAD=y
61CONFIG_OBSOLETE_MODPARM=y
62# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
63# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
64CONFIG_KMOD=y 102CONFIG_KMOD=y
65 103CONFIG_BLOCK=y
66# 104# CONFIG_LBD is not set
67# Block layer 105# CONFIG_BLK_DEV_IO_TRACE is not set
68# 106# CONFIG_LSF is not set
107# CONFIG_BLK_DEV_BSG is not set
108# CONFIG_BLK_DEV_INTEGRITY is not set
69 109
70# 110#
71# IO Schedulers 111# IO Schedulers
@@ -79,50 +119,97 @@ CONFIG_DEFAULT_AS=y
79# CONFIG_DEFAULT_CFQ is not set 119# CONFIG_DEFAULT_CFQ is not set
80# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
81CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
122CONFIG_CLASSIC_RCU=y
82 123
83# 124#
84# System Type 125# System Type
85# 126#
127# CONFIG_ARCH_AAEC2000 is not set
128# CONFIG_ARCH_INTEGRATOR is not set
129# CONFIG_ARCH_REALVIEW is not set
130# CONFIG_ARCH_VERSATILE is not set
131# CONFIG_ARCH_AT91 is not set
86# CONFIG_ARCH_CLPS7500 is not set 132# CONFIG_ARCH_CLPS7500 is not set
87# CONFIG_ARCH_CLPS711X is not set 133# CONFIG_ARCH_CLPS711X is not set
88# CONFIG_ARCH_CO285 is not set
89# CONFIG_ARCH_EBSA110 is not set 134# CONFIG_ARCH_EBSA110 is not set
135# CONFIG_ARCH_EP93XX is not set
90# CONFIG_ARCH_FOOTBRIDGE is not set 136# CONFIG_ARCH_FOOTBRIDGE is not set
91# CONFIG_ARCH_INTEGRATOR is not set 137# CONFIG_ARCH_NETX is not set
92# CONFIG_ARCH_IOP3XX is not set 138# CONFIG_ARCH_H720X is not set
93# CONFIG_ARCH_IXP4XX is not set 139# CONFIG_ARCH_IMX is not set
140# CONFIG_ARCH_IOP13XX is not set
141# CONFIG_ARCH_IOP32X is not set
142# CONFIG_ARCH_IOP33X is not set
143# CONFIG_ARCH_IXP23XX is not set
94# CONFIG_ARCH_IXP2000 is not set 144# CONFIG_ARCH_IXP2000 is not set
145# CONFIG_ARCH_IXP4XX is not set
95# CONFIG_ARCH_L7200 is not set 146# CONFIG_ARCH_L7200 is not set
147# CONFIG_ARCH_KIRKWOOD is not set
148# CONFIG_ARCH_KS8695 is not set
149# CONFIG_ARCH_NS9XXX is not set
150# CONFIG_ARCH_LOKI is not set
151# CONFIG_ARCH_MV78XX0 is not set
152# CONFIG_ARCH_MXC is not set
153# CONFIG_ARCH_ORION5X is not set
154# CONFIG_ARCH_PNX4008 is not set
96CONFIG_ARCH_PXA=y 155CONFIG_ARCH_PXA=y
97# CONFIG_ARCH_RPC is not set 156# CONFIG_ARCH_RPC is not set
98# CONFIG_ARCH_SA1100 is not set 157# CONFIG_ARCH_SA1100 is not set
99# CONFIG_ARCH_S3C2410 is not set 158# CONFIG_ARCH_S3C2410 is not set
100# CONFIG_ARCH_SHARK is not set 159# CONFIG_ARCH_SHARK is not set
101# CONFIG_ARCH_LH7A40X is not set 160# CONFIG_ARCH_LH7A40X is not set
161# CONFIG_ARCH_DAVINCI is not set
102# CONFIG_ARCH_OMAP is not set 162# CONFIG_ARCH_OMAP is not set
103# CONFIG_ARCH_VERSATILE is not set 163# CONFIG_ARCH_MSM7X00A is not set
104# CONFIG_ARCH_REALVIEW is not set
105# CONFIG_ARCH_IMX is not set
106# CONFIG_ARCH_H720X is not set
107# CONFIG_ARCH_AAEC2000 is not set
108 164
109# 165#
110# Intel PXA2xx Implementations 166# Intel PXA2xx/PXA3xx Implementations
111# 167#
168# CONFIG_ARCH_GUMSTIX is not set
112# CONFIG_ARCH_LUBBOCK is not set 169# CONFIG_ARCH_LUBBOCK is not set
170# CONFIG_MACH_LOGICPD_PXA270 is not set
113# CONFIG_MACH_MAINSTONE is not set 171# CONFIG_MACH_MAINSTONE is not set
172# CONFIG_MACH_MP900C is not set
114# CONFIG_ARCH_PXA_IDP is not set 173# CONFIG_ARCH_PXA_IDP is not set
115CONFIG_PXA_SHARPSL=y 174CONFIG_PXA_SHARPSL=y
116CONFIG_PXA_SHARPSL_25x=y
117# CONFIG_PXA_SHARPSL_27x is not set
118CONFIG_MACH_POODLE=y 175CONFIG_MACH_POODLE=y
119CONFIG_MACH_CORGI=y 176CONFIG_MACH_CORGI=y
120CONFIG_MACH_SHEPHERD=y 177CONFIG_MACH_SHEPHERD=y
121CONFIG_MACH_HUSKY=y 178CONFIG_MACH_HUSKY=y
179# CONFIG_MACH_AKITA is not set
180# CONFIG_MACH_SPITZ is not set
181# CONFIG_MACH_BORZOI is not set
122CONFIG_MACH_TOSA=y 182CONFIG_MACH_TOSA=y
183# CONFIG_ARCH_VIPER is not set
184# CONFIG_ARCH_PXA_ESERIES is not set
185# CONFIG_TRIZEPS_PXA is not set
186# CONFIG_MACH_EM_X270 is not set
187# CONFIG_MACH_COLIBRI is not set
188# CONFIG_MACH_ZYLONITE is not set
189# CONFIG_MACH_LITTLETON is not set
190# CONFIG_MACH_TAVOREVB is not set
191# CONFIG_MACH_SAAR is not set
192# CONFIG_MACH_ARMCORE is not set
193# CONFIG_MACH_CM_X300 is not set
194# CONFIG_MACH_MAGICIAN is not set
195# CONFIG_MACH_MIOA701 is not set
196# CONFIG_MACH_PCM027 is not set
197# CONFIG_ARCH_PXA_PALM is not set
198# CONFIG_PXA_EZX is not set
123CONFIG_PXA25x=y 199CONFIG_PXA25x=y
124CONFIG_PXA_SHARP_C7xx=y 200CONFIG_PXA_SHARP_C7xx=y
125CONFIG_PXA_SSP=y 201CONFIG_PXA_SSP=y
202# CONFIG_PXA_PWM is not set
203# CONFIG_TOSA_BT is not set
204CONFIG_PXA_HAVE_BOARD_IRQS=y
205
206#
207# Boot options
208#
209
210#
211# Power management
212#
126 213
127# 214#
128# Processor Type 215# Processor Type
@@ -131,25 +218,30 @@ CONFIG_CPU_32=y
131CONFIG_CPU_XSCALE=y 218CONFIG_CPU_XSCALE=y
132CONFIG_CPU_32v5=y 219CONFIG_CPU_32v5=y
133CONFIG_CPU_ABRT_EV5T=y 220CONFIG_CPU_ABRT_EV5T=y
221CONFIG_CPU_PABRT_NOIFAR=y
134CONFIG_CPU_CACHE_VIVT=y 222CONFIG_CPU_CACHE_VIVT=y
135CONFIG_CPU_TLB_V4WBI=y 223CONFIG_CPU_TLB_V4WBI=y
224CONFIG_CPU_CP15=y
225CONFIG_CPU_CP15_MMU=y
136 226
137# 227#
138# Processor Features 228# Processor Features
139# 229#
140CONFIG_ARM_THUMB=y 230CONFIG_ARM_THUMB=y
231# CONFIG_CPU_DCACHE_DISABLE is not set
232# CONFIG_OUTER_CACHE is not set
233# CONFIG_IWMMXT is not set
141CONFIG_XSCALE_PMU=y 234CONFIG_XSCALE_PMU=y
235CONFIG_SHARP_LOCOMO=y
142CONFIG_SHARP_PARAM=y 236CONFIG_SHARP_PARAM=y
237CONFIG_SHARPSL_PM=y
143CONFIG_SHARP_SCOOP=y 238CONFIG_SHARP_SCOOP=y
144 239
145# 240#
146# Bus support 241# Bus support
147# 242#
148CONFIG_ISA_DMA_API=y 243# CONFIG_PCI_SYSCALL is not set
149 244# CONFIG_ARCH_SUPPORTS_MSI is not set
150#
151# PCCARD (PCMCIA/CardBus) support
152#
153CONFIG_PCCARD=y 245CONFIG_PCCARD=y
154# CONFIG_PCMCIA_DEBUG is not set 246# CONFIG_PCMCIA_DEBUG is not set
155CONFIG_PCMCIA=y 247CONFIG_PCMCIA=y
@@ -164,16 +256,32 @@ CONFIG_PCMCIA_PXA2XX=y
164# 256#
165# Kernel Features 257# Kernel Features
166# 258#
259CONFIG_TICK_ONESHOT=y
260# CONFIG_NO_HZ is not set
261# CONFIG_HIGH_RES_TIMERS is not set
262CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
263CONFIG_VMSPLIT_3G=y
264# CONFIG_VMSPLIT_2G is not set
265# CONFIG_VMSPLIT_1G is not set
266CONFIG_PAGE_OFFSET=0xC0000000
167CONFIG_PREEMPT=y 267CONFIG_PREEMPT=y
168# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 268CONFIG_HZ=100
269# CONFIG_AEABI is not set
270CONFIG_ARCH_FLATMEM_HAS_HOLES=y
271# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
272# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
169CONFIG_SELECT_MEMORY_MODEL=y 273CONFIG_SELECT_MEMORY_MODEL=y
170CONFIG_FLATMEM_MANUAL=y 274CONFIG_FLATMEM_MANUAL=y
171# CONFIG_DISCONTIGMEM_MANUAL is not set 275# CONFIG_DISCONTIGMEM_MANUAL is not set
172# CONFIG_SPARSEMEM_MANUAL is not set 276# CONFIG_SPARSEMEM_MANUAL is not set
173CONFIG_FLATMEM=y 277CONFIG_FLATMEM=y
174CONFIG_FLAT_NODE_MEM_MAP=y 278CONFIG_FLAT_NODE_MEM_MAP=y
175# CONFIG_SPARSEMEM_STATIC is not set 279CONFIG_PAGEFLAGS_EXTENDED=y
176CONFIG_SPLIT_PTLOCK_CPUS=4096 280CONFIG_SPLIT_PTLOCK_CPUS=4096
281# CONFIG_RESOURCES_64BIT is not set
282# CONFIG_PHYS_ADDR_T_64BIT is not set
283CONFIG_ZONE_DMA_FLAG=0
284CONFIG_VIRT_TO_BUS=y
177CONFIG_ALIGNMENT_TRAP=y 285CONFIG_ALIGNMENT_TRAP=y
178 286
179# 287#
@@ -183,6 +291,13 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
183CONFIG_ZBOOT_ROM_BSS=0x0 291CONFIG_ZBOOT_ROM_BSS=0x0
184CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" 292CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug"
185# CONFIG_XIP_KERNEL is not set 293# CONFIG_XIP_KERNEL is not set
294# CONFIG_KEXEC is not set
295
296#
297# CPU Power Management
298#
299# CONFIG_CPU_FREQ is not set
300# CONFIG_CPU_IDLE is not set
186 301
187# 302#
188# Floating point emulation 303# Floating point emulation
@@ -199,6 +314,7 @@ CONFIG_FPE_NWFPE=y
199# Userspace binary formats 314# Userspace binary formats
200# 315#
201CONFIG_BINFMT_ELF=y 316CONFIG_BINFMT_ELF=y
317CONFIG_HAVE_AOUT=y
202CONFIG_BINFMT_AOUT=m 318CONFIG_BINFMT_AOUT=m
203CONFIG_BINFMT_MISC=m 319CONFIG_BINFMT_MISC=m
204# CONFIG_ARTHUR is not set 320# CONFIG_ARTHUR is not set
@@ -207,12 +323,12 @@ CONFIG_BINFMT_MISC=m
207# Power management options 323# Power management options
208# 324#
209CONFIG_PM=y 325CONFIG_PM=y
210# CONFIG_PM_LEGACY is not set 326# CONFIG_PM_DEBUG is not set
211CONFIG_APM=y 327CONFIG_PM_SLEEP=y
212 328CONFIG_SUSPEND=y
213# 329CONFIG_SUSPEND_FREEZER=y
214# Networking 330CONFIG_APM_EMULATION=y
215# 331CONFIG_ARCH_SUSPEND_POSSIBLE=y
216CONFIG_NET=y 332CONFIG_NET=y
217 333
218# 334#
@@ -223,6 +339,10 @@ CONFIG_PACKET_MMAP=y
223CONFIG_UNIX=y 339CONFIG_UNIX=y
224CONFIG_XFRM=y 340CONFIG_XFRM=y
225CONFIG_XFRM_USER=m 341CONFIG_XFRM_USER=m
342# CONFIG_XFRM_SUB_POLICY is not set
343# CONFIG_XFRM_MIGRATE is not set
344# CONFIG_XFRM_STATISTICS is not set
345CONFIG_XFRM_IPCOMP=m
226# CONFIG_NET_KEY is not set 346# CONFIG_NET_KEY is not set
227CONFIG_INET=y 347CONFIG_INET=y
228# CONFIG_IP_MULTICAST is not set 348# CONFIG_IP_MULTICAST is not set
@@ -236,140 +356,131 @@ CONFIG_SYN_COOKIES=y
236# CONFIG_INET_AH is not set 356# CONFIG_INET_AH is not set
237# CONFIG_INET_ESP is not set 357# CONFIG_INET_ESP is not set
238# CONFIG_INET_IPCOMP is not set 358# CONFIG_INET_IPCOMP is not set
239# CONFIG_INET_TUNNEL is not set 359# CONFIG_INET_XFRM_TUNNEL is not set
360CONFIG_INET_TUNNEL=m
361CONFIG_INET_XFRM_MODE_TRANSPORT=y
362CONFIG_INET_XFRM_MODE_TUNNEL=y
363CONFIG_INET_XFRM_MODE_BEET=y
364# CONFIG_INET_LRO is not set
240CONFIG_INET_DIAG=y 365CONFIG_INET_DIAG=y
241CONFIG_INET_TCP_DIAG=y 366CONFIG_INET_TCP_DIAG=y
242# CONFIG_TCP_CONG_ADVANCED is not set 367# CONFIG_TCP_CONG_ADVANCED is not set
243CONFIG_TCP_CONG_BIC=y 368CONFIG_TCP_CONG_CUBIC=y
244 369CONFIG_DEFAULT_TCP_CONG="cubic"
245# 370# CONFIG_TCP_MD5SIG is not set
246# IP: Virtual Server Configuration
247#
248# CONFIG_IP_VS is not set
249CONFIG_IPV6=m 371CONFIG_IPV6=m
250# CONFIG_IPV6_PRIVACY is not set 372# CONFIG_IPV6_PRIVACY is not set
373# CONFIG_IPV6_ROUTER_PREF is not set
374# CONFIG_IPV6_OPTIMISTIC_DAD is not set
251CONFIG_INET6_AH=m 375CONFIG_INET6_AH=m
252CONFIG_INET6_ESP=m 376CONFIG_INET6_ESP=m
253CONFIG_INET6_IPCOMP=m 377CONFIG_INET6_IPCOMP=m
378# CONFIG_IPV6_MIP6 is not set
379CONFIG_INET6_XFRM_TUNNEL=m
254CONFIG_INET6_TUNNEL=m 380CONFIG_INET6_TUNNEL=m
381CONFIG_INET6_XFRM_MODE_TRANSPORT=m
382CONFIG_INET6_XFRM_MODE_TUNNEL=m
383CONFIG_INET6_XFRM_MODE_BEET=m
384# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
385CONFIG_IPV6_SIT=m
386CONFIG_IPV6_NDISC_NODETYPE=y
255CONFIG_IPV6_TUNNEL=m 387CONFIG_IPV6_TUNNEL=m
388# CONFIG_IPV6_MULTIPLE_TABLES is not set
389# CONFIG_IPV6_MROUTE is not set
390# CONFIG_NETWORK_SECMARK is not set
256CONFIG_NETFILTER=y 391CONFIG_NETFILTER=y
257# CONFIG_NETFILTER_DEBUG is not set 392# CONFIG_NETFILTER_DEBUG is not set
393CONFIG_NETFILTER_ADVANCED=y
258 394
259# 395#
260# Core Netfilter Configuration 396# Core Netfilter Configuration
261# 397#
262# CONFIG_NETFILTER_NETLINK is not set 398# CONFIG_NETFILTER_NETLINK_QUEUE is not set
399# CONFIG_NETFILTER_NETLINK_LOG is not set
400# CONFIG_NF_CONNTRACK is not set
401CONFIG_NETFILTER_XTABLES=m
402# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
403# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
404# CONFIG_NETFILTER_XT_TARGET_MARK is not set
405# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
406# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
407# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
408# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
409# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
410# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
411# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
412# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
413# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
414# CONFIG_NETFILTER_XT_MATCH_ESP is not set
415# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
416# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
417# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
418# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
419# CONFIG_NETFILTER_XT_MATCH_MAC is not set
420# CONFIG_NETFILTER_XT_MATCH_MARK is not set
421# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
422# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
423# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
424# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
425# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
426# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
427# CONFIG_NETFILTER_XT_MATCH_REALM is not set
428# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
429# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
430# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
431# CONFIG_NETFILTER_XT_MATCH_STRING is not set
432# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
433# CONFIG_NETFILTER_XT_MATCH_TIME is not set
434# CONFIG_NETFILTER_XT_MATCH_U32 is not set
435# CONFIG_IP_VS is not set
263 436
264# 437#
265# IP: Netfilter Configuration 438# IP: Netfilter Configuration
266# 439#
267CONFIG_IP_NF_CONNTRACK=m 440# CONFIG_NF_DEFRAG_IPV4 is not set
268# CONFIG_IP_NF_CT_ACCT is not set
269# CONFIG_IP_NF_CONNTRACK_MARK is not set
270# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
271CONFIG_IP_NF_CT_PROTO_SCTP=m
272CONFIG_IP_NF_FTP=m
273CONFIG_IP_NF_IRC=m
274# CONFIG_IP_NF_NETBIOS_NS is not set
275CONFIG_IP_NF_TFTP=m
276CONFIG_IP_NF_AMANDA=m
277# CONFIG_IP_NF_PPTP is not set
278CONFIG_IP_NF_QUEUE=m 441CONFIG_IP_NF_QUEUE=m
279CONFIG_IP_NF_IPTABLES=m 442CONFIG_IP_NF_IPTABLES=m
280CONFIG_IP_NF_MATCH_LIMIT=m 443CONFIG_IP_NF_MATCH_ADDRTYPE=m
281CONFIG_IP_NF_MATCH_IPRANGE=m 444# CONFIG_IP_NF_MATCH_AH is not set
282CONFIG_IP_NF_MATCH_MAC=m
283CONFIG_IP_NF_MATCH_PKTTYPE=m
284CONFIG_IP_NF_MATCH_MARK=m
285CONFIG_IP_NF_MATCH_MULTIPORT=m
286CONFIG_IP_NF_MATCH_TOS=m
287CONFIG_IP_NF_MATCH_RECENT=m
288CONFIG_IP_NF_MATCH_ECN=m 445CONFIG_IP_NF_MATCH_ECN=m
289CONFIG_IP_NF_MATCH_DSCP=m
290CONFIG_IP_NF_MATCH_AH_ESP=m
291CONFIG_IP_NF_MATCH_LENGTH=m
292CONFIG_IP_NF_MATCH_TTL=m 446CONFIG_IP_NF_MATCH_TTL=m
293CONFIG_IP_NF_MATCH_TCPMSS=m
294CONFIG_IP_NF_MATCH_HELPER=m
295CONFIG_IP_NF_MATCH_STATE=m
296CONFIG_IP_NF_MATCH_CONNTRACK=m
297CONFIG_IP_NF_MATCH_OWNER=m
298CONFIG_IP_NF_MATCH_ADDRTYPE=m
299CONFIG_IP_NF_MATCH_REALM=m
300CONFIG_IP_NF_MATCH_SCTP=m
301# CONFIG_IP_NF_MATCH_DCCP is not set
302CONFIG_IP_NF_MATCH_COMMENT=m
303CONFIG_IP_NF_MATCH_HASHLIMIT=m
304# CONFIG_IP_NF_MATCH_STRING is not set
305CONFIG_IP_NF_FILTER=m 447CONFIG_IP_NF_FILTER=m
306# CONFIG_IP_NF_TARGET_REJECT is not set 448# CONFIG_IP_NF_TARGET_REJECT is not set
307CONFIG_IP_NF_TARGET_LOG=m 449CONFIG_IP_NF_TARGET_LOG=m
308CONFIG_IP_NF_TARGET_ULOG=m 450CONFIG_IP_NF_TARGET_ULOG=m
309CONFIG_IP_NF_TARGET_TCPMSS=m
310# CONFIG_IP_NF_TARGET_NFQUEUE is not set
311CONFIG_IP_NF_NAT=m
312CONFIG_IP_NF_NAT_NEEDED=y
313# CONFIG_IP_NF_TARGET_MASQUERADE is not set
314# CONFIG_IP_NF_TARGET_REDIRECT is not set
315# CONFIG_IP_NF_TARGET_NETMAP is not set
316# CONFIG_IP_NF_TARGET_SAME is not set
317# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
318CONFIG_IP_NF_NAT_IRC=m
319CONFIG_IP_NF_NAT_FTP=m
320CONFIG_IP_NF_NAT_TFTP=m
321CONFIG_IP_NF_NAT_AMANDA=m
322CONFIG_IP_NF_MANGLE=m 451CONFIG_IP_NF_MANGLE=m
323# CONFIG_IP_NF_TARGET_TOS is not set
324# CONFIG_IP_NF_TARGET_ECN is not set 452# CONFIG_IP_NF_TARGET_ECN is not set
325# CONFIG_IP_NF_TARGET_DSCP is not set
326# CONFIG_IP_NF_TARGET_MARK is not set
327# CONFIG_IP_NF_TARGET_CLASSIFY is not set
328# CONFIG_IP_NF_TARGET_TTL is not set 453# CONFIG_IP_NF_TARGET_TTL is not set
329CONFIG_IP_NF_RAW=m 454CONFIG_IP_NF_RAW=m
330# CONFIG_IP_NF_TARGET_NOTRACK is not set
331CONFIG_IP_NF_ARPTABLES=m 455CONFIG_IP_NF_ARPTABLES=m
332CONFIG_IP_NF_ARPFILTER=m 456CONFIG_IP_NF_ARPFILTER=m
333CONFIG_IP_NF_ARP_MANGLE=m 457CONFIG_IP_NF_ARP_MANGLE=m
334 458
335# 459#
336# IPv6: Netfilter Configuration (EXPERIMENTAL) 460# IPv6: Netfilter Configuration
337# 461#
338CONFIG_IP6_NF_QUEUE=m 462CONFIG_IP6_NF_QUEUE=m
339CONFIG_IP6_NF_IPTABLES=m 463CONFIG_IP6_NF_IPTABLES=m
340CONFIG_IP6_NF_MATCH_LIMIT=m 464# CONFIG_IP6_NF_MATCH_AH is not set
341CONFIG_IP6_NF_MATCH_MAC=m 465CONFIG_IP6_NF_MATCH_EUI64=m
342CONFIG_IP6_NF_MATCH_RT=m
343CONFIG_IP6_NF_MATCH_OPTS=m
344CONFIG_IP6_NF_MATCH_FRAG=m 466CONFIG_IP6_NF_MATCH_FRAG=m
467CONFIG_IP6_NF_MATCH_OPTS=m
345CONFIG_IP6_NF_MATCH_HL=m 468CONFIG_IP6_NF_MATCH_HL=m
346CONFIG_IP6_NF_MATCH_MULTIPORT=m
347CONFIG_IP6_NF_MATCH_OWNER=m
348CONFIG_IP6_NF_MATCH_MARK=m
349CONFIG_IP6_NF_MATCH_IPV6HEADER=m 469CONFIG_IP6_NF_MATCH_IPV6HEADER=m
350CONFIG_IP6_NF_MATCH_AHESP=m 470# CONFIG_IP6_NF_MATCH_MH is not set
351CONFIG_IP6_NF_MATCH_LENGTH=m 471CONFIG_IP6_NF_MATCH_RT=m
352CONFIG_IP6_NF_MATCH_EUI64=m
353CONFIG_IP6_NF_FILTER=m
354# CONFIG_IP6_NF_TARGET_LOG is not set 472# CONFIG_IP6_NF_TARGET_LOG is not set
473CONFIG_IP6_NF_FILTER=m
355# CONFIG_IP6_NF_TARGET_REJECT is not set 474# CONFIG_IP6_NF_TARGET_REJECT is not set
356# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
357CONFIG_IP6_NF_MANGLE=m 475CONFIG_IP6_NF_MANGLE=m
358# CONFIG_IP6_NF_TARGET_MARK is not set
359# CONFIG_IP6_NF_TARGET_HL is not set 476# CONFIG_IP6_NF_TARGET_HL is not set
360CONFIG_IP6_NF_RAW=m 477CONFIG_IP6_NF_RAW=m
361
362#
363# DCCP Configuration (EXPERIMENTAL)
364#
365# CONFIG_IP_DCCP is not set 478# CONFIG_IP_DCCP is not set
366
367#
368# SCTP Configuration (EXPERIMENTAL)
369#
370# CONFIG_IP_SCTP is not set 479# CONFIG_IP_SCTP is not set
480# CONFIG_TIPC is not set
371# CONFIG_ATM is not set 481# CONFIG_ATM is not set
372# CONFIG_BRIDGE is not set 482# CONFIG_BRIDGE is not set
483# CONFIG_NET_DSA is not set
373# CONFIG_VLAN_8021Q is not set 484# CONFIG_VLAN_8021Q is not set
374# CONFIG_DECNET is not set 485# CONFIG_DECNET is not set
375# CONFIG_LLC2 is not set 486# CONFIG_LLC2 is not set
@@ -377,21 +488,16 @@ CONFIG_IP6_NF_RAW=m
377# CONFIG_ATALK is not set 488# CONFIG_ATALK is not set
378# CONFIG_X25 is not set 489# CONFIG_X25 is not set
379# CONFIG_LAPB is not set 490# CONFIG_LAPB is not set
380# CONFIG_NET_DIVERT is not set
381# CONFIG_ECONET is not set 491# CONFIG_ECONET is not set
382# CONFIG_WAN_ROUTER is not set 492# CONFIG_WAN_ROUTER is not set
383
384#
385# QoS and/or fair queueing
386#
387# CONFIG_NET_SCHED is not set 493# CONFIG_NET_SCHED is not set
388CONFIG_NET_CLS_ROUTE=y
389 494
390# 495#
391# Network testing 496# Network testing
392# 497#
393# CONFIG_NET_PKTGEN is not set 498# CONFIG_NET_PKTGEN is not set
394# CONFIG_HAMRADIO is not set 499# CONFIG_HAMRADIO is not set
500# CONFIG_CAN is not set
395CONFIG_IRDA=m 501CONFIG_IRDA=m
396 502
397# 503#
@@ -421,27 +527,17 @@ CONFIG_IRCOMM=m
421# 527#
422# Dongle support 528# Dongle support
423# 529#
424 530# CONFIG_KINGSUN_DONGLE is not set
425# 531# CONFIG_KSDAZZLE_DONGLE is not set
426# Old SIR device drivers 532# CONFIG_KS959_DONGLE is not set
427#
428# CONFIG_IRPORT_SIR is not set
429
430#
431# Old Serial dongle support
432#
433 533
434# 534#
435# FIR device drivers 535# FIR device drivers
436# 536#
437# CONFIG_USB_IRDA is not set 537# CONFIG_USB_IRDA is not set
438# CONFIG_SIGMATEL_FIR is not set 538# CONFIG_SIGMATEL_FIR is not set
439# CONFIG_NSC_FIR is not set
440# CONFIG_WINBOND_FIR is not set
441# CONFIG_SMC_IRCC_FIR is not set
442# CONFIG_ALI_FIR is not set
443# CONFIG_VIA_FIR is not set
444CONFIG_PXA_FICP=m 539CONFIG_PXA_FICP=m
540# CONFIG_MCS_FIR is not set
445CONFIG_BT=m 541CONFIG_BT=m
446CONFIG_BT_L2CAP=m 542CONFIG_BT_L2CAP=m
447CONFIG_BT_SCO=m 543CONFIG_BT_SCO=m
@@ -457,9 +553,12 @@ CONFIG_BT_HIDP=m
457# 553#
458CONFIG_BT_HCIUSB=m 554CONFIG_BT_HCIUSB=m
459# CONFIG_BT_HCIUSB_SCO is not set 555# CONFIG_BT_HCIUSB_SCO is not set
556# CONFIG_BT_HCIBTUSB is not set
557# CONFIG_BT_HCIBTSDIO is not set
460CONFIG_BT_HCIUART=m 558CONFIG_BT_HCIUART=m
461CONFIG_BT_HCIUART_H4=y 559CONFIG_BT_HCIUART_H4=y
462CONFIG_BT_HCIUART_BCSP=y 560CONFIG_BT_HCIUART_BCSP=y
561# CONFIG_BT_HCIUART_LL is not set
463CONFIG_BT_HCIBCM203X=m 562CONFIG_BT_HCIBCM203X=m
464CONFIG_BT_HCIBPA10X=m 563CONFIG_BT_HCIBPA10X=m
465CONFIG_BT_HCIBFUSB=m 564CONFIG_BT_HCIBFUSB=m
@@ -468,11 +567,20 @@ CONFIG_BT_HCIBT3C=m
468CONFIG_BT_HCIBLUECARD=m 567CONFIG_BT_HCIBLUECARD=m
469CONFIG_BT_HCIBTUART=m 568CONFIG_BT_HCIBTUART=m
470CONFIG_BT_HCIVHCI=m 569CONFIG_BT_HCIVHCI=m
570# CONFIG_AF_RXRPC is not set
571# CONFIG_PHONET is not set
572CONFIG_WIRELESS=y
573# CONFIG_CFG80211 is not set
574# CONFIG_WIRELESS_OLD_REGULATORY is not set
575# CONFIG_WIRELESS_EXT is not set
576# CONFIG_MAC80211 is not set
471CONFIG_IEEE80211=m 577CONFIG_IEEE80211=m
472# CONFIG_IEEE80211_DEBUG is not set 578# CONFIG_IEEE80211_DEBUG is not set
473CONFIG_IEEE80211_CRYPT_WEP=m 579CONFIG_IEEE80211_CRYPT_WEP=m
474# CONFIG_IEEE80211_CRYPT_CCMP is not set 580# CONFIG_IEEE80211_CRYPT_CCMP is not set
475# CONFIG_IEEE80211_CRYPT_TKIP is not set 581# CONFIG_IEEE80211_CRYPT_TKIP is not set
582# CONFIG_RFKILL is not set
583# CONFIG_NET_9P is not set
476 584
477# 585#
478# Device Drivers 586# Device Drivers
@@ -481,19 +589,16 @@ CONFIG_IEEE80211_CRYPT_WEP=m
481# 589#
482# Generic Driver Options 590# Generic Driver Options
483# 591#
592CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
484CONFIG_STANDALONE=y 593CONFIG_STANDALONE=y
485CONFIG_PREVENT_FIRMWARE_BUILD=y 594CONFIG_PREVENT_FIRMWARE_BUILD=y
486CONFIG_FW_LOADER=y 595CONFIG_FW_LOADER=y
596CONFIG_FIRMWARE_IN_KERNEL=y
597CONFIG_EXTRA_FIRMWARE=""
487# CONFIG_DEBUG_DRIVER is not set 598# CONFIG_DEBUG_DRIVER is not set
488 599# CONFIG_DEBUG_DEVRES is not set
489# 600# CONFIG_SYS_HYPERVISOR is not set
490# Connector - unified userspace <-> kernelspace linker
491#
492# CONFIG_CONNECTOR is not set 601# CONFIG_CONNECTOR is not set
493
494#
495# Memory Technology Devices (MTD)
496#
497CONFIG_MTD=y 602CONFIG_MTD=y
498# CONFIG_MTD_DEBUG is not set 603# CONFIG_MTD_DEBUG is not set
499# CONFIG_MTD_CONCAT is not set 604# CONFIG_MTD_CONCAT is not set
@@ -501,16 +606,20 @@ CONFIG_MTD_PARTITIONS=y
501# CONFIG_MTD_REDBOOT_PARTS is not set 606# CONFIG_MTD_REDBOOT_PARTS is not set
502CONFIG_MTD_CMDLINE_PARTS=y 607CONFIG_MTD_CMDLINE_PARTS=y
503# CONFIG_MTD_AFS_PARTS is not set 608# CONFIG_MTD_AFS_PARTS is not set
609# CONFIG_MTD_AR7_PARTS is not set
504 610
505# 611#
506# User Modules And Translation Layers 612# User Modules And Translation Layers
507# 613#
508CONFIG_MTD_CHAR=y 614CONFIG_MTD_CHAR=y
615CONFIG_MTD_BLKDEVS=y
509CONFIG_MTD_BLOCK=y 616CONFIG_MTD_BLOCK=y
510# CONFIG_FTL is not set 617# CONFIG_FTL is not set
511# CONFIG_NFTL is not set 618# CONFIG_NFTL is not set
512# CONFIG_INFTL is not set 619# CONFIG_INFTL is not set
513# CONFIG_RFD_FTL is not set 620# CONFIG_RFD_FTL is not set
621# CONFIG_SSFDC is not set
622# CONFIG_MTD_OOPS is not set
514 623
515# 624#
516# RAM/ROM/Flash chip drivers 625# RAM/ROM/Flash chip drivers
@@ -535,16 +644,18 @@ CONFIG_MTD_ROM=y
535# Mapping drivers for chip access 644# Mapping drivers for chip access
536# 645#
537CONFIG_MTD_COMPLEX_MAPPINGS=y 646CONFIG_MTD_COMPLEX_MAPPINGS=y
647# CONFIG_MTD_PHYSMAP is not set
538CONFIG_MTD_SHARP_SL=y 648CONFIG_MTD_SHARP_SL=y
539# CONFIG_MTD_PLATRAM is not set 649# CONFIG_MTD_PLATRAM is not set
540 650
541# 651#
542# Self-contained MTD device drivers 652# Self-contained MTD device drivers
543# 653#
654# CONFIG_MTD_DATAFLASH is not set
655# CONFIG_MTD_M25P80 is not set
544# CONFIG_MTD_SLRAM is not set 656# CONFIG_MTD_SLRAM is not set
545# CONFIG_MTD_PHRAM is not set 657# CONFIG_MTD_PHRAM is not set
546# CONFIG_MTD_MTDRAM is not set 658# CONFIG_MTD_MTDRAM is not set
547# CONFIG_MTD_BLKMTD is not set
548# CONFIG_MTD_BLOCK2MTD is not set 659# CONFIG_MTD_BLOCK2MTD is not set
549 660
550# 661#
@@ -553,78 +664,66 @@ CONFIG_MTD_SHARP_SL=y
553# CONFIG_MTD_DOC2000 is not set 664# CONFIG_MTD_DOC2000 is not set
554# CONFIG_MTD_DOC2001 is not set 665# CONFIG_MTD_DOC2001 is not set
555# CONFIG_MTD_DOC2001PLUS is not set 666# CONFIG_MTD_DOC2001PLUS is not set
556
557#
558# NAND Flash Device Drivers
559#
560CONFIG_MTD_NAND=y 667CONFIG_MTD_NAND=y
561CONFIG_MTD_NAND_VERIFY_WRITE=y 668CONFIG_MTD_NAND_VERIFY_WRITE=y
669# CONFIG_MTD_NAND_ECC_SMC is not set
670# CONFIG_MTD_NAND_MUSEUM_IDS is not set
562# CONFIG_MTD_NAND_H1900 is not set 671# CONFIG_MTD_NAND_H1900 is not set
563CONFIG_MTD_NAND_IDS=y 672CONFIG_MTD_NAND_IDS=y
564# CONFIG_MTD_NAND_DISKONCHIP is not set 673# CONFIG_MTD_NAND_DISKONCHIP is not set
565CONFIG_MTD_NAND_SHARPSL=y 674CONFIG_MTD_NAND_SHARPSL=y
566# CONFIG_MTD_NAND_NANDSIM is not set 675# CONFIG_MTD_NAND_NANDSIM is not set
567 676# CONFIG_MTD_NAND_PLATFORM is not set
568# 677# CONFIG_MTD_ALAUDA is not set
569# OneNAND Flash Device Drivers
570#
571# CONFIG_MTD_ONENAND is not set 678# CONFIG_MTD_ONENAND is not set
572 679
573# 680#
574# Parallel port support 681# UBI - Unsorted block images
575# 682#
683# CONFIG_MTD_UBI is not set
576# CONFIG_PARPORT is not set 684# CONFIG_PARPORT is not set
577 685CONFIG_BLK_DEV=y
578#
579# Plug and Play support
580#
581
582#
583# Block devices
584#
585# CONFIG_BLK_DEV_COW_COMMON is not set 686# CONFIG_BLK_DEV_COW_COMMON is not set
586CONFIG_BLK_DEV_LOOP=y 687CONFIG_BLK_DEV_LOOP=y
587# CONFIG_BLK_DEV_CRYPTOLOOP is not set 688# CONFIG_BLK_DEV_CRYPTOLOOP is not set
588# CONFIG_BLK_DEV_NBD is not set 689# CONFIG_BLK_DEV_NBD is not set
589# CONFIG_BLK_DEV_UB is not set 690# CONFIG_BLK_DEV_UB is not set
590# CONFIG_BLK_DEV_RAM is not set 691# CONFIG_BLK_DEV_RAM is not set
591CONFIG_BLK_DEV_RAM_COUNT=16
592# CONFIG_CDROM_PKTCDVD is not set 692# CONFIG_CDROM_PKTCDVD is not set
593# CONFIG_ATA_OVER_ETH is not set 693# CONFIG_ATA_OVER_ETH is not set
594 694CONFIG_MISC_DEVICES=y
595# 695# CONFIG_EEPROM_93CX6 is not set
596# ATA/ATAPI/MFM/RLL support 696# CONFIG_ENCLOSURE_SERVICES is not set
597# 697CONFIG_HAVE_IDE=y
598CONFIG_IDE=y 698CONFIG_IDE=y
599CONFIG_BLK_DEV_IDE=y
600 699
601# 700#
602# Please see Documentation/ide.txt for help/info on IDE drives 701# Please see Documentation/ide/ide.txt for help/info on IDE drives
603# 702#
604# CONFIG_BLK_DEV_IDE_SATA is not set 703# CONFIG_BLK_DEV_IDE_SATA is not set
605CONFIG_BLK_DEV_IDEDISK=y 704CONFIG_BLK_DEV_IDEDISK=y
606# CONFIG_IDEDISK_MULTI_MODE is not set
607CONFIG_BLK_DEV_IDECS=y 705CONFIG_BLK_DEV_IDECS=y
608# CONFIG_BLK_DEV_IDECD is not set 706# CONFIG_BLK_DEV_IDECD is not set
609# CONFIG_BLK_DEV_IDETAPE is not set 707# CONFIG_BLK_DEV_IDETAPE is not set
610# CONFIG_BLK_DEV_IDEFLOPPY is not set 708# CONFIG_BLK_DEV_IDEFLOPPY is not set
611# CONFIG_BLK_DEV_IDESCSI is not set 709# CONFIG_BLK_DEV_IDESCSI is not set
612# CONFIG_IDE_TASK_IOCTL is not set 710# CONFIG_IDE_TASK_IOCTL is not set
711CONFIG_IDE_PROC_FS=y
613 712
614# 713#
615# IDE chipset support/bugfixes 714# IDE chipset support/bugfixes
616# 715#
617CONFIG_IDE_GENERIC=y 716# CONFIG_BLK_DEV_PLATFORM is not set
618# CONFIG_IDE_ARM is not set
619# CONFIG_BLK_DEV_IDEDMA is not set 717# CONFIG_BLK_DEV_IDEDMA is not set
620# CONFIG_IDEDMA_AUTO is not set
621# CONFIG_BLK_DEV_HD is not set
622 718
623# 719#
624# SCSI device support 720# SCSI device support
625# 721#
626# CONFIG_RAID_ATTRS is not set 722# CONFIG_RAID_ATTRS is not set
627CONFIG_SCSI=m 723CONFIG_SCSI=m
724CONFIG_SCSI_DMA=y
725# CONFIG_SCSI_TGT is not set
726# CONFIG_SCSI_NETLINK is not set
628CONFIG_SCSI_PROC_FS=y 727CONFIG_SCSI_PROC_FS=y
629 728
630# 729#
@@ -644,121 +743,76 @@ CONFIG_CHR_DEV_SG=m
644CONFIG_SCSI_MULTI_LUN=y 743CONFIG_SCSI_MULTI_LUN=y
645# CONFIG_SCSI_CONSTANTS is not set 744# CONFIG_SCSI_CONSTANTS is not set
646# CONFIG_SCSI_LOGGING is not set 745# CONFIG_SCSI_LOGGING is not set
746# CONFIG_SCSI_SCAN_ASYNC is not set
747CONFIG_SCSI_WAIT_SCAN=m
647 748
648# 749#
649# SCSI Transport Attributes 750# SCSI Transports
650# 751#
651# CONFIG_SCSI_SPI_ATTRS is not set 752# CONFIG_SCSI_SPI_ATTRS is not set
652# CONFIG_SCSI_FC_ATTRS is not set 753# CONFIG_SCSI_FC_ATTRS is not set
653# CONFIG_SCSI_ISCSI_ATTRS is not set 754# CONFIG_SCSI_ISCSI_ATTRS is not set
654# CONFIG_SCSI_SAS_ATTRS is not set 755# CONFIG_SCSI_SAS_LIBSAS is not set
655 756# CONFIG_SCSI_SRP_ATTRS is not set
656# 757CONFIG_SCSI_LOWLEVEL=y
657# SCSI low-level drivers
658#
659# CONFIG_ISCSI_TCP is not set 758# CONFIG_ISCSI_TCP is not set
660# CONFIG_SCSI_SATA is not set
661# CONFIG_SCSI_DEBUG is not set 759# CONFIG_SCSI_DEBUG is not set
662 760# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
663# 761# CONFIG_SCSI_DH is not set
664# PCMCIA SCSI adapter support 762# CONFIG_ATA is not set
665#
666# CONFIG_PCMCIA_AHA152X is not set
667# CONFIG_PCMCIA_FDOMAIN is not set
668# CONFIG_PCMCIA_NINJA_SCSI is not set
669# CONFIG_PCMCIA_QLOGIC is not set
670# CONFIG_PCMCIA_SYM53C500 is not set
671
672#
673# Multi-device support (RAID and LVM)
674#
675# CONFIG_MD is not set 763# CONFIG_MD is not set
676
677#
678# Fusion MPT device support
679#
680# CONFIG_FUSION is not set
681
682#
683# IEEE 1394 (FireWire) support
684#
685
686#
687# I2O device support
688#
689
690#
691# Network device support
692#
693CONFIG_NETDEVICES=y 764CONFIG_NETDEVICES=y
694# CONFIG_DUMMY is not set 765# CONFIG_DUMMY is not set
695# CONFIG_BONDING is not set 766# CONFIG_BONDING is not set
767# CONFIG_MACVLAN is not set
696# CONFIG_EQUALIZER is not set 768# CONFIG_EQUALIZER is not set
697# CONFIG_TUN is not set 769# CONFIG_TUN is not set
698 770# CONFIG_VETH is not set
699#
700# PHY device support
701#
702# CONFIG_PHYLIB is not set 771# CONFIG_PHYLIB is not set
703
704#
705# Ethernet (10 or 100Mbit)
706#
707CONFIG_NET_ETHERNET=y 772CONFIG_NET_ETHERNET=y
708CONFIG_MII=m 773CONFIG_MII=m
774# CONFIG_AX88796 is not set
709# CONFIG_SMC91X is not set 775# CONFIG_SMC91X is not set
710# CONFIG_DM9000 is not set 776# CONFIG_DM9000 is not set
777# CONFIG_ENC28J60 is not set
778# CONFIG_SMC911X is not set
779# CONFIG_IBM_NEW_EMAC_ZMII is not set
780# CONFIG_IBM_NEW_EMAC_RGMII is not set
781# CONFIG_IBM_NEW_EMAC_TAH is not set
782# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
783# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
784# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
785# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
786# CONFIG_B44 is not set
787CONFIG_NETDEV_1000=y
788CONFIG_NETDEV_10000=y
711 789
712# 790#
713# Ethernet (1000 Mbit) 791# Wireless LAN
714#
715
716#
717# Ethernet (10000 Mbit)
718#
719
720#
721# Token Ring devices
722#
723
724#
725# Wireless LAN (non-hamradio)
726#
727CONFIG_NET_RADIO=y
728
729#
730# Obsolete Wireless cards support (pre-802.11)
731#
732# CONFIG_STRIP is not set
733# CONFIG_PCMCIA_WAVELAN is not set
734# CONFIG_PCMCIA_NETWAVE is not set
735
736#
737# Wireless 802.11 Frequency Hopping cards support
738# 792#
739# CONFIG_PCMCIA_RAYCS is not set 793# CONFIG_WLAN_PRE80211 is not set
794# CONFIG_WLAN_80211 is not set
795# CONFIG_IWLWIFI_LEDS is not set
740 796
741# 797#
742# Wireless 802.11b ISA/PCI cards support 798# USB Network Adapters
743#
744CONFIG_HERMES=m
745# CONFIG_ATMEL is not set
746
747#
748# Wireless 802.11b Pcmcia/Cardbus cards support
749#
750CONFIG_PCMCIA_HERMES=m
751CONFIG_PCMCIA_SPECTRUM=m
752# CONFIG_AIRO_CS is not set
753# CONFIG_PCMCIA_WL3501 is not set
754CONFIG_HOSTAP=m
755CONFIG_HOSTAP_FIRMWARE=y
756CONFIG_HOSTAP_CS=m
757CONFIG_NET_WIRELESS=y
758
759#
760# PCMCIA network device support
761# 799#
800CONFIG_USB_CATC=m
801CONFIG_USB_KAWETH=m
802CONFIG_USB_PEGASUS=m
803CONFIG_USB_RTL8150=m
804CONFIG_USB_USBNET=m
805CONFIG_USB_NET_AX8817X=m
806CONFIG_USB_NET_CDCETHER=m
807# CONFIG_USB_NET_DM9601 is not set
808# CONFIG_USB_NET_SMSC95XX is not set
809# CONFIG_USB_NET_GL620A is not set
810CONFIG_USB_NET_NET1080=m
811# CONFIG_USB_NET_PLUSB is not set
812# CONFIG_USB_NET_MCS7830 is not set
813# CONFIG_USB_NET_RNDIS_HOST is not set
814# CONFIG_USB_NET_CDC_SUBSET is not set
815CONFIG_USB_NET_ZAURUS=m
762CONFIG_NET_PCMCIA=y 816CONFIG_NET_PCMCIA=y
763# CONFIG_PCMCIA_3C589 is not set 817# CONFIG_PCMCIA_3C589 is not set
764# CONFIG_PCMCIA_3C574 is not set 818# CONFIG_PCMCIA_3C574 is not set
@@ -768,10 +822,6 @@ CONFIG_PCMCIA_PCNET=m
768# CONFIG_PCMCIA_SMC91C92 is not set 822# CONFIG_PCMCIA_SMC91C92 is not set
769# CONFIG_PCMCIA_XIRC2PS is not set 823# CONFIG_PCMCIA_XIRC2PS is not set
770# CONFIG_PCMCIA_AXNET is not set 824# CONFIG_PCMCIA_AXNET is not set
771
772#
773# Wan interfaces
774#
775# CONFIG_WAN is not set 825# CONFIG_WAN is not set
776CONFIG_PPP=m 826CONFIG_PPP=m
777# CONFIG_PPP_MULTILINK is not set 827# CONFIG_PPP_MULTILINK is not set
@@ -782,30 +832,29 @@ CONFIG_PPP_ASYNC=m
782CONFIG_PPP_BSDCOMP=m 832CONFIG_PPP_BSDCOMP=m
783# CONFIG_PPP_MPPE is not set 833# CONFIG_PPP_MPPE is not set
784# CONFIG_PPPOE is not set 834# CONFIG_PPPOE is not set
835# CONFIG_PPPOL2TP is not set
785# CONFIG_SLIP is not set 836# CONFIG_SLIP is not set
786# CONFIG_SHAPER is not set 837CONFIG_SLHC=m
787# CONFIG_NETCONSOLE is not set 838# CONFIG_NETCONSOLE is not set
788# CONFIG_NETPOLL is not set 839# CONFIG_NETPOLL is not set
789# CONFIG_NET_POLL_CONTROLLER is not set 840# CONFIG_NET_POLL_CONTROLLER is not set
790
791#
792# ISDN subsystem
793#
794# CONFIG_ISDN is not set 841# CONFIG_ISDN is not set
795 842
796# 843#
797# Input device support 844# Input device support
798# 845#
799CONFIG_INPUT=y 846CONFIG_INPUT=y
847CONFIG_INPUT_FF_MEMLESS=m
848# CONFIG_INPUT_POLLDEV is not set
800 849
801# 850#
802# Userland interfaces 851# Userland interfaces
803# 852#
804# CONFIG_INPUT_MOUSEDEV is not set 853# CONFIG_INPUT_MOUSEDEV is not set
805# CONFIG_INPUT_JOYDEV is not set 854# CONFIG_INPUT_JOYDEV is not set
806# CONFIG_INPUT_TSDEV is not set
807CONFIG_INPUT_EVDEV=y 855CONFIG_INPUT_EVDEV=y
808# CONFIG_INPUT_EVBUG is not set 856# CONFIG_INPUT_EVBUG is not set
857# CONFIG_INPUT_APMPOWER is not set
809 858
810# 859#
811# Input Device Drivers 860# Input Device Drivers
@@ -814,19 +863,39 @@ CONFIG_INPUT_KEYBOARD=y
814# CONFIG_KEYBOARD_ATKBD is not set 863# CONFIG_KEYBOARD_ATKBD is not set
815# CONFIG_KEYBOARD_SUNKBD is not set 864# CONFIG_KEYBOARD_SUNKBD is not set
816# CONFIG_KEYBOARD_LKKBD is not set 865# CONFIG_KEYBOARD_LKKBD is not set
866# CONFIG_KEYBOARD_LOCOMO is not set
817# CONFIG_KEYBOARD_XTKBD is not set 867# CONFIG_KEYBOARD_XTKBD is not set
818# CONFIG_KEYBOARD_NEWTON is not set 868# CONFIG_KEYBOARD_NEWTON is not set
869# CONFIG_KEYBOARD_STOWAWAY is not set
819CONFIG_KEYBOARD_CORGI=y 870CONFIG_KEYBOARD_CORGI=y
820CONFIG_KEYBOARD_SPITZ=y 871CONFIG_KEYBOARD_SPITZ=y
872CONFIG_KEYBOARD_TOSA=y
873# CONFIG_KEYBOARD_TOSA_USE_EXT_KEYCODES is not set
874# CONFIG_KEYBOARD_GPIO is not set
821# CONFIG_INPUT_MOUSE is not set 875# CONFIG_INPUT_MOUSE is not set
822# CONFIG_INPUT_JOYSTICK is not set 876# CONFIG_INPUT_JOYSTICK is not set
877# CONFIG_INPUT_TABLET is not set
823CONFIG_INPUT_TOUCHSCREEN=y 878CONFIG_INPUT_TOUCHSCREEN=y
824CONFIG_TOUCHSCREEN_CORGI=y 879CONFIG_TOUCHSCREEN_ADS7846=y
880# CONFIG_TOUCHSCREEN_CORGI is not set
881# CONFIG_TOUCHSCREEN_FUJITSU is not set
825# CONFIG_TOUCHSCREEN_GUNZE is not set 882# CONFIG_TOUCHSCREEN_GUNZE is not set
826# CONFIG_TOUCHSCREEN_ELO is not set 883# CONFIG_TOUCHSCREEN_ELO is not set
827# CONFIG_TOUCHSCREEN_MTOUCH is not set 884# CONFIG_TOUCHSCREEN_MTOUCH is not set
885# CONFIG_TOUCHSCREEN_INEXIO is not set
828# CONFIG_TOUCHSCREEN_MK712 is not set 886# CONFIG_TOUCHSCREEN_MK712 is not set
887# CONFIG_TOUCHSCREEN_PENMOUNT is not set
888# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
889# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
890# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
891# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
829CONFIG_INPUT_MISC=y 892CONFIG_INPUT_MISC=y
893# CONFIG_INPUT_ATI_REMOTE is not set
894# CONFIG_INPUT_ATI_REMOTE2 is not set
895# CONFIG_INPUT_KEYSPAN_REMOTE is not set
896# CONFIG_INPUT_POWERMATE is not set
897# CONFIG_INPUT_YEALINK is not set
898# CONFIG_INPUT_CM109 is not set
830CONFIG_INPUT_UINPUT=m 899CONFIG_INPUT_UINPUT=m
831 900
832# 901#
@@ -839,8 +908,11 @@ CONFIG_INPUT_UINPUT=m
839# Character devices 908# Character devices
840# 909#
841CONFIG_VT=y 910CONFIG_VT=y
911CONFIG_CONSOLE_TRANSLATIONS=y
842CONFIG_VT_CONSOLE=y 912CONFIG_VT_CONSOLE=y
843CONFIG_HW_CONSOLE=y 913CONFIG_HW_CONSOLE=y
914# CONFIG_VT_HW_CONSOLE_BINDING is not set
915CONFIG_DEVKMEM=y
844# CONFIG_SERIAL_NONSTANDARD is not set 916# CONFIG_SERIAL_NONSTANDARD is not set
845 917
846# 918#
@@ -849,6 +921,7 @@ CONFIG_HW_CONSOLE=y
849CONFIG_SERIAL_8250=m 921CONFIG_SERIAL_8250=m
850CONFIG_SERIAL_8250_CS=m 922CONFIG_SERIAL_8250_CS=m
851CONFIG_SERIAL_8250_NR_UARTS=4 923CONFIG_SERIAL_8250_NR_UARTS=4
924CONFIG_SERIAL_8250_RUNTIME_UARTS=4
852# CONFIG_SERIAL_8250_EXTENDED is not set 925# CONFIG_SERIAL_8250_EXTENDED is not set
853 926
854# 927#
@@ -860,97 +933,130 @@ CONFIG_SERIAL_CORE=y
860CONFIG_SERIAL_CORE_CONSOLE=y 933CONFIG_SERIAL_CORE_CONSOLE=y
861CONFIG_UNIX98_PTYS=y 934CONFIG_UNIX98_PTYS=y
862# CONFIG_LEGACY_PTYS is not set 935# CONFIG_LEGACY_PTYS is not set
863
864#
865# IPMI
866#
867# CONFIG_IPMI_HANDLER is not set 936# CONFIG_IPMI_HANDLER is not set
868 937CONFIG_HW_RANDOM=m
869#
870# Watchdog Cards
871#
872# CONFIG_WATCHDOG is not set
873# CONFIG_NVRAM is not set 938# CONFIG_NVRAM is not set
874# CONFIG_RTC is not set
875# CONFIG_DTLK is not set
876# CONFIG_R3964 is not set 939# CONFIG_R3964 is not set
877 940
878# 941#
879# Ftape, the floppy tape device driver
880#
881
882#
883# PCMCIA character devices 942# PCMCIA character devices
884# 943#
885# CONFIG_SYNCLINK_CS is not set 944# CONFIG_SYNCLINK_CS is not set
886# CONFIG_CARDMAN_4000 is not set 945# CONFIG_CARDMAN_4000 is not set
887# CONFIG_CARDMAN_4040 is not set 946# CONFIG_CARDMAN_4040 is not set
947# CONFIG_IPWIRELESS is not set
888# CONFIG_RAW_DRIVER is not set 948# CONFIG_RAW_DRIVER is not set
889
890#
891# TPM devices
892#
893# CONFIG_TCG_TPM is not set 949# CONFIG_TCG_TPM is not set
894# CONFIG_TELCLOCK is not set
895
896#
897# I2C support
898#
899CONFIG_I2C=y 950CONFIG_I2C=y
951CONFIG_I2C_BOARDINFO=y
900# CONFIG_I2C_CHARDEV is not set 952# CONFIG_I2C_CHARDEV is not set
953CONFIG_I2C_HELPER_AUTO=y
901 954
902# 955#
903# I2C Algorithms 956# I2C Hardware Bus support
904# 957#
905CONFIG_I2C_ALGOBIT=y
906# CONFIG_I2C_ALGOPCF is not set
907# CONFIG_I2C_ALGOPCA is not set
908 958
909# 959#
910# I2C Hardware Bus support 960# I2C system bus drivers (mostly embedded / system-on-chip)
911# 961#
962# CONFIG_I2C_GPIO is not set
963# CONFIG_I2C_OCORES is not set
912CONFIG_I2C_PXA=y 964CONFIG_I2C_PXA=y
913# CONFIG_I2C_PXA_SLAVE is not set 965# CONFIG_I2C_PXA_SLAVE is not set
966# CONFIG_I2C_SIMTEC is not set
967
968#
969# External I2C/SMBus adapter drivers
970#
914# CONFIG_I2C_PARPORT_LIGHT is not set 971# CONFIG_I2C_PARPORT_LIGHT is not set
972# CONFIG_I2C_TAOS_EVM is not set
973# CONFIG_I2C_TINY_USB is not set
974
975#
976# Other I2C/SMBus bus drivers
977#
978# CONFIG_I2C_PCA_PLATFORM is not set
915# CONFIG_I2C_STUB is not set 979# CONFIG_I2C_STUB is not set
916# CONFIG_I2C_PCA_ISA is not set
917 980
918# 981#
919# Miscellaneous I2C Chip support 982# Miscellaneous I2C Chip support
920# 983#
921# CONFIG_SENSORS_DS1337 is not set 984# CONFIG_DS1682 is not set
922# CONFIG_SENSORS_DS1374 is not set 985# CONFIG_AT24 is not set
923# CONFIG_SENSORS_EEPROM is not set 986# CONFIG_SENSORS_EEPROM is not set
924# CONFIG_SENSORS_PCF8574 is not set 987# CONFIG_SENSORS_PCF8574 is not set
988# CONFIG_PCF8575 is not set
925# CONFIG_SENSORS_PCA9539 is not set 989# CONFIG_SENSORS_PCA9539 is not set
926# CONFIG_SENSORS_PCF8591 is not set 990# CONFIG_SENSORS_PCF8591 is not set
927# CONFIG_SENSORS_RTC8564 is not set 991# CONFIG_TPS65010 is not set
928# CONFIG_SENSORS_MAX6875 is not set 992# CONFIG_SENSORS_MAX6875 is not set
929# CONFIG_RTC_X1205_I2C is not set 993# CONFIG_SENSORS_TSL2550 is not set
930# CONFIG_I2C_DEBUG_CORE is not set 994# CONFIG_I2C_DEBUG_CORE is not set
931# CONFIG_I2C_DEBUG_ALGO is not set 995# CONFIG_I2C_DEBUG_ALGO is not set
932# CONFIG_I2C_DEBUG_BUS is not set 996# CONFIG_I2C_DEBUG_BUS is not set
933# CONFIG_I2C_DEBUG_CHIP is not set 997# CONFIG_I2C_DEBUG_CHIP is not set
998CONFIG_SPI=y
999# CONFIG_SPI_DEBUG is not set
1000CONFIG_SPI_MASTER=y
934 1001
935# 1002#
936# Hardware Monitoring support 1003# SPI Master Controller Drivers
937# 1004#
1005# CONFIG_SPI_BITBANG is not set
1006CONFIG_SPI_PXA2XX=y
1007
1008#
1009# SPI Protocol Masters
1010#
1011# CONFIG_SPI_AT25 is not set
1012# CONFIG_SPI_SPIDEV is not set
1013# CONFIG_SPI_TLE62X0 is not set
1014CONFIG_ARCH_REQUIRE_GPIOLIB=y
1015CONFIG_GPIOLIB=y
1016# CONFIG_DEBUG_GPIO is not set
1017# CONFIG_GPIO_SYSFS is not set
1018
1019#
1020# I2C GPIO expanders:
1021#
1022# CONFIG_GPIO_MAX732X is not set
1023# CONFIG_GPIO_PCA953X is not set
1024# CONFIG_GPIO_PCF857X is not set
1025
1026#
1027# PCI GPIO expanders:
1028#
1029
1030#
1031# SPI GPIO expanders:
1032#
1033# CONFIG_GPIO_MAX7301 is not set
1034# CONFIG_GPIO_MCP23S08 is not set
1035# CONFIG_W1 is not set
1036# CONFIG_POWER_SUPPLY is not set
938CONFIG_HWMON=y 1037CONFIG_HWMON=y
939# CONFIG_HWMON_VID is not set 1038# CONFIG_HWMON_VID is not set
1039# CONFIG_SENSORS_AD7414 is not set
1040# CONFIG_SENSORS_AD7418 is not set
1041# CONFIG_SENSORS_ADCXX is not set
940# CONFIG_SENSORS_ADM1021 is not set 1042# CONFIG_SENSORS_ADM1021 is not set
941# CONFIG_SENSORS_ADM1025 is not set 1043# CONFIG_SENSORS_ADM1025 is not set
942# CONFIG_SENSORS_ADM1026 is not set 1044# CONFIG_SENSORS_ADM1026 is not set
1045# CONFIG_SENSORS_ADM1029 is not set
943# CONFIG_SENSORS_ADM1031 is not set 1046# CONFIG_SENSORS_ADM1031 is not set
944# CONFIG_SENSORS_ADM9240 is not set 1047# CONFIG_SENSORS_ADM9240 is not set
945# CONFIG_SENSORS_ASB100 is not set 1048# CONFIG_SENSORS_ADT7470 is not set
1049# CONFIG_SENSORS_ADT7473 is not set
946# CONFIG_SENSORS_ATXP1 is not set 1050# CONFIG_SENSORS_ATXP1 is not set
947# CONFIG_SENSORS_DS1621 is not set 1051# CONFIG_SENSORS_DS1621 is not set
948# CONFIG_SENSORS_FSCHER is not set 1052# CONFIG_SENSORS_F71805F is not set
949# CONFIG_SENSORS_FSCPOS is not set 1053# CONFIG_SENSORS_F71882FG is not set
1054# CONFIG_SENSORS_F75375S is not set
950# CONFIG_SENSORS_GL518SM is not set 1055# CONFIG_SENSORS_GL518SM is not set
951# CONFIG_SENSORS_GL520SM is not set 1056# CONFIG_SENSORS_GL520SM is not set
952# CONFIG_SENSORS_IT87 is not set 1057# CONFIG_SENSORS_IT87 is not set
953# CONFIG_SENSORS_LM63 is not set 1058# CONFIG_SENSORS_LM63 is not set
1059# CONFIG_SENSORS_LM70 is not set
954# CONFIG_SENSORS_LM75 is not set 1060# CONFIG_SENSORS_LM75 is not set
955# CONFIG_SENSORS_LM77 is not set 1061# CONFIG_SENSORS_LM77 is not set
956# CONFIG_SENSORS_LM78 is not set 1062# CONFIG_SENSORS_LM78 is not set
@@ -960,70 +1066,193 @@ CONFIG_HWMON=y
960# CONFIG_SENSORS_LM87 is not set 1066# CONFIG_SENSORS_LM87 is not set
961# CONFIG_SENSORS_LM90 is not set 1067# CONFIG_SENSORS_LM90 is not set
962# CONFIG_SENSORS_LM92 is not set 1068# CONFIG_SENSORS_LM92 is not set
1069# CONFIG_SENSORS_LM93 is not set
1070CONFIG_SENSORS_MAX1111=y
963# CONFIG_SENSORS_MAX1619 is not set 1071# CONFIG_SENSORS_MAX1619 is not set
1072# CONFIG_SENSORS_MAX6650 is not set
964# CONFIG_SENSORS_PC87360 is not set 1073# CONFIG_SENSORS_PC87360 is not set
1074# CONFIG_SENSORS_PC87427 is not set
1075# CONFIG_SENSORS_DME1737 is not set
965# CONFIG_SENSORS_SMSC47M1 is not set 1076# CONFIG_SENSORS_SMSC47M1 is not set
1077# CONFIG_SENSORS_SMSC47M192 is not set
966# CONFIG_SENSORS_SMSC47B397 is not set 1078# CONFIG_SENSORS_SMSC47B397 is not set
1079# CONFIG_SENSORS_ADS7828 is not set
1080# CONFIG_SENSORS_THMC50 is not set
1081# CONFIG_SENSORS_VT1211 is not set
967# CONFIG_SENSORS_W83781D is not set 1082# CONFIG_SENSORS_W83781D is not set
1083# CONFIG_SENSORS_W83791D is not set
968# CONFIG_SENSORS_W83792D is not set 1084# CONFIG_SENSORS_W83792D is not set
1085# CONFIG_SENSORS_W83793 is not set
969# CONFIG_SENSORS_W83L785TS is not set 1086# CONFIG_SENSORS_W83L785TS is not set
1087# CONFIG_SENSORS_W83L786NG is not set
970# CONFIG_SENSORS_W83627HF is not set 1088# CONFIG_SENSORS_W83627HF is not set
971# CONFIG_SENSORS_W83627EHF is not set 1089# CONFIG_SENSORS_W83627EHF is not set
972# CONFIG_HWMON_DEBUG_CHIP is not set 1090# CONFIG_HWMON_DEBUG_CHIP is not set
1091# CONFIG_THERMAL is not set
1092# CONFIG_THERMAL_HWMON is not set
1093# CONFIG_WATCHDOG is not set
973 1094
974# 1095#
975# Misc devices 1096# Sonics Silicon Backplane
976# 1097#
1098CONFIG_SSB_POSSIBLE=y
1099# CONFIG_SSB is not set
977 1100
978# 1101#
979# Multimedia Capabilities Port drivers 1102# Multifunction device drivers
980# 1103#
1104# CONFIG_MFD_CORE is not set
1105# CONFIG_MFD_SM501 is not set
1106# CONFIG_MFD_ASIC3 is not set
1107# CONFIG_HTC_EGPIO is not set
1108# CONFIG_HTC_PASIC3 is not set
1109# CONFIG_UCB1400_CORE is not set
1110# CONFIG_MFD_TMIO is not set
1111# CONFIG_MFD_T7L66XB is not set
1112# CONFIG_MFD_TC6387XB is not set
1113# CONFIG_MFD_TC6393XB is not set
1114# CONFIG_MFD_WM8400 is not set
1115# CONFIG_MFD_WM8350_I2C is not set
981 1116
982# 1117#
983# Multimedia devices 1118# Multimedia devices
984# 1119#
985CONFIG_VIDEO_DEV=m
986
987#
988# Video For Linux
989#
990 1120
991# 1121#
992# Video Adapters 1122# Multimedia core support
993# 1123#
1124CONFIG_VIDEO_DEV=m
1125CONFIG_VIDEO_V4L2_COMMON=m
1126CONFIG_VIDEO_ALLOW_V4L1=y
1127CONFIG_VIDEO_V4L1_COMPAT=y
1128# CONFIG_DVB_CORE is not set
1129CONFIG_VIDEO_MEDIA=m
1130
1131#
1132# Multimedia drivers
1133#
1134# CONFIG_MEDIA_ATTACH is not set
1135CONFIG_MEDIA_TUNER=m
1136# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
1137CONFIG_MEDIA_TUNER_SIMPLE=m
1138CONFIG_MEDIA_TUNER_TDA8290=m
1139CONFIG_MEDIA_TUNER_TDA9887=m
1140CONFIG_MEDIA_TUNER_TEA5761=m
1141CONFIG_MEDIA_TUNER_TEA5767=m
1142CONFIG_MEDIA_TUNER_MT20XX=m
1143CONFIG_MEDIA_TUNER_XC2028=m
1144CONFIG_MEDIA_TUNER_XC5000=m
1145CONFIG_VIDEO_V4L2=m
1146CONFIG_VIDEO_V4L1=m
1147CONFIG_VIDEO_CAPTURE_DRIVERS=y
1148# CONFIG_VIDEO_ADV_DEBUG is not set
1149# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
1150CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
1151# CONFIG_VIDEO_VIVI is not set
994# CONFIG_VIDEO_CPIA is not set 1152# CONFIG_VIDEO_CPIA is not set
1153# CONFIG_VIDEO_CPIA2 is not set
995# CONFIG_VIDEO_SAA5246A is not set 1154# CONFIG_VIDEO_SAA5246A is not set
996# CONFIG_VIDEO_SAA5249 is not set 1155# CONFIG_VIDEO_SAA5249 is not set
997# CONFIG_TUNER_3036 is not set 1156# CONFIG_SOC_CAMERA is not set
1157CONFIG_V4L_USB_DRIVERS=y
1158# CONFIG_USB_VIDEO_CLASS is not set
1159CONFIG_USB_GSPCA=m
1160# CONFIG_USB_M5602 is not set
1161# CONFIG_USB_GSPCA_CONEX is not set
1162# CONFIG_USB_GSPCA_ETOMS is not set
1163# CONFIG_USB_GSPCA_FINEPIX is not set
1164# CONFIG_USB_GSPCA_MARS is not set
1165# CONFIG_USB_GSPCA_OV519 is not set
1166# CONFIG_USB_GSPCA_PAC207 is not set
1167# CONFIG_USB_GSPCA_PAC7311 is not set
1168# CONFIG_USB_GSPCA_SONIXB is not set
1169# CONFIG_USB_GSPCA_SONIXJ is not set
1170# CONFIG_USB_GSPCA_SPCA500 is not set
1171# CONFIG_USB_GSPCA_SPCA501 is not set
1172# CONFIG_USB_GSPCA_SPCA505 is not set
1173# CONFIG_USB_GSPCA_SPCA506 is not set
1174# CONFIG_USB_GSPCA_SPCA508 is not set
1175# CONFIG_USB_GSPCA_SPCA561 is not set
1176# CONFIG_USB_GSPCA_STK014 is not set
1177# CONFIG_USB_GSPCA_SUNPLUS is not set
1178# CONFIG_USB_GSPCA_T613 is not set
1179# CONFIG_USB_GSPCA_TV8532 is not set
1180# CONFIG_USB_GSPCA_VC032X is not set
1181# CONFIG_USB_GSPCA_ZC3XX is not set
1182# CONFIG_VIDEO_PVRUSB2 is not set
998# CONFIG_VIDEO_EM28XX is not set 1183# CONFIG_VIDEO_EM28XX is not set
1184# CONFIG_VIDEO_USBVISION is not set
1185CONFIG_VIDEO_USBVIDEO=m
1186CONFIG_USB_VICAM=m
1187CONFIG_USB_IBMCAM=m
1188CONFIG_USB_KONICAWC=m
1189# CONFIG_USB_QUICKCAM_MESSENGER is not set
1190# CONFIG_USB_ET61X251 is not set
999# CONFIG_VIDEO_OVCAMCHIP is not set 1191# CONFIG_VIDEO_OVCAMCHIP is not set
1000# CONFIG_VIDEO_AUDIO_DECODER is not set 1192CONFIG_USB_OV511=m
1001# CONFIG_VIDEO_DECODER is not set 1193CONFIG_USB_SE401=m
1002 1194CONFIG_USB_SN9C102=m
1003# 1195CONFIG_USB_STV680=m
1004# Radio Adapters 1196# CONFIG_USB_ZC0301 is not set
1005# 1197# CONFIG_USB_PWC is not set
1006# CONFIG_RADIO_MAESTRO is not set 1198# CONFIG_USB_ZR364XX is not set
1007 1199# CONFIG_USB_STKWEBCAM is not set
1008# 1200# CONFIG_USB_S2255 is not set
1009# Digital Video Broadcasting Devices 1201CONFIG_RADIO_ADAPTERS=y
1010# 1202CONFIG_USB_DSBR=m
1011# CONFIG_DVB is not set 1203# CONFIG_USB_SI470X is not set
1204# CONFIG_USB_MR800 is not set
1205# CONFIG_DAB is not set
1012 1206
1013# 1207#
1014# Graphics support 1208# Graphics support
1015# 1209#
1210# CONFIG_VGASTATE is not set
1211# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1016CONFIG_FB=y 1212CONFIG_FB=y
1213# CONFIG_FIRMWARE_EDID is not set
1214# CONFIG_FB_DDC is not set
1215# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1017CONFIG_FB_CFB_FILLRECT=y 1216CONFIG_FB_CFB_FILLRECT=y
1018CONFIG_FB_CFB_COPYAREA=y 1217CONFIG_FB_CFB_COPYAREA=y
1019CONFIG_FB_CFB_IMAGEBLIT=y 1218CONFIG_FB_CFB_IMAGEBLIT=y
1219# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1220# CONFIG_FB_SYS_FILLRECT is not set
1221# CONFIG_FB_SYS_COPYAREA is not set
1222# CONFIG_FB_SYS_IMAGEBLIT is not set
1223# CONFIG_FB_FOREIGN_ENDIAN is not set
1224# CONFIG_FB_SYS_FOPS is not set
1225# CONFIG_FB_SVGALIB is not set
1020# CONFIG_FB_MACMODES is not set 1226# CONFIG_FB_MACMODES is not set
1227# CONFIG_FB_BACKLIGHT is not set
1021# CONFIG_FB_MODE_HELPERS is not set 1228# CONFIG_FB_MODE_HELPERS is not set
1022# CONFIG_FB_TILEBLITTING is not set 1229# CONFIG_FB_TILEBLITTING is not set
1230
1231#
1232# Frame buffer hardware drivers
1233#
1023# CONFIG_FB_S1D13XXX is not set 1234# CONFIG_FB_S1D13XXX is not set
1024# CONFIG_FB_PXA is not set 1235# CONFIG_FB_PXA is not set
1236# CONFIG_FB_MBX is not set
1025CONFIG_FB_W100=y 1237CONFIG_FB_W100=y
1026# CONFIG_FB_VIRTUAL is not set 1238# CONFIG_FB_VIRTUAL is not set
1239# CONFIG_FB_METRONOME is not set
1240CONFIG_BACKLIGHT_LCD_SUPPORT=y
1241CONFIG_LCD_CLASS_DEVICE=y
1242CONFIG_LCD_CORGI=y
1243# CONFIG_LCD_LTV350QV is not set
1244# CONFIG_LCD_ILI9320 is not set
1245# CONFIG_LCD_TDO24M is not set
1246# CONFIG_LCD_VGG2432A4 is not set
1247# CONFIG_LCD_PLATFORM is not set
1248CONFIG_BACKLIGHT_CLASS_DEVICE=y
1249# CONFIG_BACKLIGHT_CORGI is not set
1250CONFIG_BACKLIGHT_LOCOMO=y
1251
1252#
1253# Display device support
1254#
1255# CONFIG_DISPLAY_SUPPORT is not set
1027 1256
1028# 1257#
1029# Console display driver support 1258# Console display driver support
@@ -1031,6 +1260,7 @@ CONFIG_FB_W100=y
1031# CONFIG_VGA_CONSOLE is not set 1260# CONFIG_VGA_CONSOLE is not set
1032CONFIG_DUMMY_CONSOLE=y 1261CONFIG_DUMMY_CONSOLE=y
1033CONFIG_FRAMEBUFFER_CONSOLE=y 1262CONFIG_FRAMEBUFFER_CONSOLE=y
1263# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
1034# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 1264# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
1035CONFIG_FONTS=y 1265CONFIG_FONTS=y
1036CONFIG_FONT_8x8=y 1266CONFIG_FONT_8x8=y
@@ -1043,93 +1273,95 @@ CONFIG_FONT_8x16=y
1043# CONFIG_FONT_SUN8x16 is not set 1273# CONFIG_FONT_SUN8x16 is not set
1044# CONFIG_FONT_SUN12x22 is not set 1274# CONFIG_FONT_SUN12x22 is not set
1045# CONFIG_FONT_10x18 is not set 1275# CONFIG_FONT_10x18 is not set
1046
1047#
1048# Logo configuration
1049#
1050# CONFIG_LOGO is not set 1276# CONFIG_LOGO is not set
1051CONFIG_BACKLIGHT_LCD_SUPPORT=y
1052CONFIG_BACKLIGHT_CLASS_DEVICE=y
1053CONFIG_BACKLIGHT_DEVICE=y
1054# CONFIG_LCD_CLASS_DEVICE is not set
1055CONFIG_BACKLIGHT_CORGI=y
1056
1057#
1058# Sound
1059#
1060CONFIG_SOUND=y 1277CONFIG_SOUND=y
1278CONFIG_SOUND_OSS_CORE=y
1279# CONFIG_SND is not set
1280CONFIG_SOUND_PRIME=y
1281CONFIG_HID_SUPPORT=y
1282CONFIG_HID=y
1283# CONFIG_HID_DEBUG is not set
1284# CONFIG_HIDRAW is not set
1061 1285
1062# 1286#
1063# Advanced Linux Sound Architecture 1287# USB Input Devices
1064# 1288#
1065# CONFIG_SND is not set 1289CONFIG_USB_HID=m
1290# CONFIG_HID_PID is not set
1291# CONFIG_USB_HIDDEV is not set
1066 1292
1067# 1293#
1068# Open Sound System 1294# USB HID Boot Protocol drivers
1069# 1295#
1070CONFIG_SOUND_PRIME=y 1296CONFIG_USB_KBD=m
1071# CONFIG_SOUND_MSNDCLAS is not set 1297CONFIG_USB_MOUSE=m
1072# CONFIG_SOUND_MSNDPIN is not set 1298
1073CONFIG_SOUND_OSS=y
1074# CONFIG_SOUND_TRACEINIT is not set
1075# CONFIG_SOUND_DMAP is not set
1076# CONFIG_SOUND_AD1816 is not set
1077# CONFIG_SOUND_SGALAXY is not set
1078# CONFIG_SOUND_ADLIB is not set
1079# CONFIG_SOUND_ACI_MIXER is not set
1080# CONFIG_SOUND_CS4232 is not set
1081# CONFIG_SOUND_SSCAPE is not set
1082# CONFIG_SOUND_GUS is not set
1083# CONFIG_SOUND_VMIDI is not set
1084# CONFIG_SOUND_TRIX is not set
1085# CONFIG_SOUND_MSS is not set
1086# CONFIG_SOUND_MPU401 is not set
1087# CONFIG_SOUND_NM256 is not set
1088# CONFIG_SOUND_MAD16 is not set
1089# CONFIG_SOUND_PAS is not set
1090# CONFIG_SOUND_PSS is not set
1091# CONFIG_SOUND_SB is not set
1092# CONFIG_SOUND_AWE32_SYNTH is not set
1093# CONFIG_SOUND_WAVEFRONT is not set
1094# CONFIG_SOUND_MAUI is not set
1095# CONFIG_SOUND_YM3812 is not set
1096# CONFIG_SOUND_OPL3SA1 is not set
1097# CONFIG_SOUND_OPL3SA2 is not set
1098# CONFIG_SOUND_UART6850 is not set
1099# CONFIG_SOUND_AEDSP16 is not set
1100# CONFIG_SOUND_TVMIXER is not set
1101# CONFIG_SOUND_AD1980 is not set
1102
1103#
1104# USB support
1105# 1299#
1300# Special HID drivers
1301#
1302CONFIG_HID_COMPAT=y
1303CONFIG_HID_A4TECH=m
1304CONFIG_HID_APPLE=m
1305CONFIG_HID_BELKIN=m
1306CONFIG_HID_BRIGHT=m
1307CONFIG_HID_CHERRY=m
1308CONFIG_HID_CHICONY=m
1309CONFIG_HID_CYPRESS=m
1310CONFIG_HID_DELL=m
1311CONFIG_HID_EZKEY=m
1312CONFIG_HID_GYRATION=m
1313CONFIG_HID_LOGITECH=m
1314# CONFIG_LOGITECH_FF is not set
1315# CONFIG_LOGIRUMBLEPAD2_FF is not set
1316CONFIG_HID_MICROSOFT=m
1317CONFIG_HID_MONTEREY=m
1318CONFIG_HID_PANTHERLORD=m
1319# CONFIG_PANTHERLORD_FF is not set
1320CONFIG_HID_PETALYNX=m
1321CONFIG_HID_SAMSUNG=m
1322CONFIG_HID_SONY=m
1323CONFIG_HID_SUNPLUS=m
1324CONFIG_THRUSTMASTER_FF=m
1325CONFIG_ZEROPLUS_FF=m
1326CONFIG_USB_SUPPORT=y
1106CONFIG_USB_ARCH_HAS_HCD=y 1327CONFIG_USB_ARCH_HAS_HCD=y
1107# CONFIG_USB_ARCH_HAS_OHCI is not set 1328# CONFIG_USB_ARCH_HAS_OHCI is not set
1329# CONFIG_USB_ARCH_HAS_EHCI is not set
1108CONFIG_USB=m 1330CONFIG_USB=m
1109# CONFIG_USB_DEBUG is not set 1331# CONFIG_USB_DEBUG is not set
1332# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1110 1333
1111# 1334#
1112# Miscellaneous USB options 1335# Miscellaneous USB options
1113# 1336#
1114CONFIG_USB_DEVICEFS=y 1337CONFIG_USB_DEVICEFS=y
1115# CONFIG_USB_BANDWIDTH is not set 1338CONFIG_USB_DEVICE_CLASS=y
1116# CONFIG_USB_DYNAMIC_MINORS is not set 1339# CONFIG_USB_DYNAMIC_MINORS is not set
1117# CONFIG_USB_SUSPEND is not set 1340# CONFIG_USB_SUSPEND is not set
1118# CONFIG_USB_OTG is not set 1341# CONFIG_USB_OTG is not set
1342# CONFIG_USB_OTG_WHITELIST is not set
1343# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1344CONFIG_USB_MON=y
1119 1345
1120# 1346#
1121# USB Host Controller Drivers 1347# USB Host Controller Drivers
1122# 1348#
1349# CONFIG_USB_C67X00_HCD is not set
1123# CONFIG_USB_ISP116X_HCD is not set 1350# CONFIG_USB_ISP116X_HCD is not set
1351# CONFIG_USB_ISP1760_HCD is not set
1124CONFIG_USB_SL811_HCD=m 1352CONFIG_USB_SL811_HCD=m
1125CONFIG_USB_SL811_CS=m 1353CONFIG_USB_SL811_CS=m
1354# CONFIG_USB_R8A66597_HCD is not set
1355# CONFIG_USB_MUSB_HDRC is not set
1356# CONFIG_USB_GADGET_MUSB_HDRC is not set
1126 1357
1127# 1358#
1128# USB Device Class drivers 1359# USB Device Class drivers
1129# 1360#
1130# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
1131CONFIG_USB_ACM=m 1361CONFIG_USB_ACM=m
1132CONFIG_USB_PRINTER=m 1362CONFIG_USB_PRINTER=m
1363# CONFIG_USB_WDM is not set
1364# CONFIG_USB_TMC is not set
1133 1365
1134# 1366#
1135# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1367# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1148,33 +1380,11 @@ CONFIG_USB_STORAGE=m
1148# CONFIG_USB_STORAGE_SDDR09 is not set 1380# CONFIG_USB_STORAGE_SDDR09 is not set
1149# CONFIG_USB_STORAGE_SDDR55 is not set 1381# CONFIG_USB_STORAGE_SDDR55 is not set
1150# CONFIG_USB_STORAGE_JUMPSHOT is not set 1382# CONFIG_USB_STORAGE_JUMPSHOT is not set
1151 1383# CONFIG_USB_STORAGE_ALAUDA is not set
1152# 1384# CONFIG_USB_STORAGE_ONETOUCH is not set
1153# USB Input Devices 1385# CONFIG_USB_STORAGE_KARMA is not set
1154# 1386# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1155CONFIG_USB_HID=m 1387# CONFIG_USB_LIBUSUAL is not set
1156CONFIG_USB_HIDINPUT=y
1157# CONFIG_HID_FF is not set
1158# CONFIG_USB_HIDDEV is not set
1159
1160#
1161# USB HID Boot Protocol drivers
1162#
1163CONFIG_USB_KBD=m
1164CONFIG_USB_MOUSE=m
1165CONFIG_USB_AIPTEK=m
1166CONFIG_USB_WACOM=m
1167# CONFIG_USB_ACECAD is not set
1168CONFIG_USB_KBTAB=m
1169CONFIG_USB_POWERMATE=m
1170CONFIG_USB_MTOUCH=m
1171# CONFIG_USB_ITMTOUCH is not set
1172CONFIG_USB_EGALAX=m
1173# CONFIG_USB_YEALINK is not set
1174CONFIG_USB_XPAD=m
1175CONFIG_USB_ATI_REMOTE=m
1176# CONFIG_USB_KEYSPAN_REMOTE is not set
1177# CONFIG_USB_APPLETOUCH is not set
1178 1388
1179# 1389#
1180# USB Imaging devices 1390# USB Imaging devices
@@ -1183,56 +1393,22 @@ CONFIG_USB_MDC800=m
1183CONFIG_USB_MICROTEK=m 1393CONFIG_USB_MICROTEK=m
1184 1394
1185# 1395#
1186# USB Multimedia devices
1187#
1188CONFIG_USB_DABUSB=m
1189CONFIG_USB_VICAM=m
1190CONFIG_USB_DSBR=m
1191CONFIG_USB_IBMCAM=m
1192CONFIG_USB_KONICAWC=m
1193CONFIG_USB_OV511=m
1194CONFIG_USB_SE401=m
1195CONFIG_USB_SN9C102=m
1196CONFIG_USB_STV680=m
1197# CONFIG_USB_PWC is not set
1198
1199#
1200# USB Network Adapters
1201#
1202CONFIG_USB_CATC=m
1203CONFIG_USB_KAWETH=m
1204CONFIG_USB_PEGASUS=m
1205CONFIG_USB_RTL8150=m
1206CONFIG_USB_USBNET=m
1207CONFIG_USB_NET_AX8817X=m
1208CONFIG_USB_NET_CDCETHER=m
1209# CONFIG_USB_NET_GL620A is not set
1210CONFIG_USB_NET_NET1080=m
1211# CONFIG_USB_NET_PLUSB is not set
1212# CONFIG_USB_NET_RNDIS_HOST is not set
1213# CONFIG_USB_NET_CDC_SUBSET is not set
1214CONFIG_USB_NET_ZAURUS=m
1215# CONFIG_USB_ZD1201 is not set
1216CONFIG_USB_MON=y
1217
1218#
1219# USB port drivers 1396# USB port drivers
1220# 1397#
1221
1222#
1223# USB Serial Converter support
1224#
1225CONFIG_USB_SERIAL=m 1398CONFIG_USB_SERIAL=m
1399CONFIG_USB_EZUSB=y
1226CONFIG_USB_SERIAL_GENERIC=y 1400CONFIG_USB_SERIAL_GENERIC=y
1227# CONFIG_USB_SERIAL_AIRPRIME is not set 1401# CONFIG_USB_SERIAL_AIRCABLE is not set
1228# CONFIG_USB_SERIAL_ANYDATA is not set 1402# CONFIG_USB_SERIAL_ARK3116 is not set
1229CONFIG_USB_SERIAL_BELKIN=m 1403CONFIG_USB_SERIAL_BELKIN=m
1404# CONFIG_USB_SERIAL_CH341 is not set
1230# CONFIG_USB_SERIAL_WHITEHEAT is not set 1405# CONFIG_USB_SERIAL_WHITEHEAT is not set
1231CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m 1406CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
1232# CONFIG_USB_SERIAL_CP2101 is not set 1407# CONFIG_USB_SERIAL_CP2101 is not set
1233CONFIG_USB_SERIAL_CYPRESS_M8=m 1408CONFIG_USB_SERIAL_CYPRESS_M8=m
1234CONFIG_USB_SERIAL_EMPEG=m 1409CONFIG_USB_SERIAL_EMPEG=m
1235CONFIG_USB_SERIAL_FTDI_SIO=m 1410CONFIG_USB_SERIAL_FTDI_SIO=m
1411# CONFIG_USB_SERIAL_FUNSOFT is not set
1236CONFIG_USB_SERIAL_VISOR=m 1412CONFIG_USB_SERIAL_VISOR=m
1237CONFIG_USB_SERIAL_IPAQ=m 1413CONFIG_USB_SERIAL_IPAQ=m
1238CONFIG_USB_SERIAL_IR=m 1414CONFIG_USB_SERIAL_IR=m
@@ -1240,6 +1416,7 @@ CONFIG_USB_SERIAL_EDGEPORT=m
1240CONFIG_USB_SERIAL_EDGEPORT_TI=m 1416CONFIG_USB_SERIAL_EDGEPORT_TI=m
1241CONFIG_USB_SERIAL_GARMIN=m 1417CONFIG_USB_SERIAL_GARMIN=m
1242CONFIG_USB_SERIAL_IPW=m 1418CONFIG_USB_SERIAL_IPW=m
1419# CONFIG_USB_SERIAL_IUU is not set
1243CONFIG_USB_SERIAL_KEYSPAN_PDA=m 1420CONFIG_USB_SERIAL_KEYSPAN_PDA=m
1244CONFIG_USB_SERIAL_KEYSPAN=m 1421CONFIG_USB_SERIAL_KEYSPAN=m
1245# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set 1422# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
@@ -1257,50 +1434,68 @@ CONFIG_USB_SERIAL_KEYSPAN=m
1257CONFIG_USB_SERIAL_KLSI=m 1434CONFIG_USB_SERIAL_KLSI=m
1258CONFIG_USB_SERIAL_KOBIL_SCT=m 1435CONFIG_USB_SERIAL_KOBIL_SCT=m
1259CONFIG_USB_SERIAL_MCT_U232=m 1436CONFIG_USB_SERIAL_MCT_U232=m
1437# CONFIG_USB_SERIAL_MOS7720 is not set
1438# CONFIG_USB_SERIAL_MOS7840 is not set
1439# CONFIG_USB_SERIAL_MOTOROLA is not set
1440# CONFIG_USB_SERIAL_NAVMAN is not set
1260CONFIG_USB_SERIAL_PL2303=m 1441CONFIG_USB_SERIAL_PL2303=m
1442# CONFIG_USB_SERIAL_OTI6858 is not set
1443# CONFIG_USB_SERIAL_SPCP8X5 is not set
1261# CONFIG_USB_SERIAL_HP4X is not set 1444# CONFIG_USB_SERIAL_HP4X is not set
1262CONFIG_USB_SERIAL_SAFE=m 1445CONFIG_USB_SERIAL_SAFE=m
1263# CONFIG_USB_SERIAL_SAFE_PADDED is not set 1446# CONFIG_USB_SERIAL_SAFE_PADDED is not set
1447# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
1264CONFIG_USB_SERIAL_TI=m 1448CONFIG_USB_SERIAL_TI=m
1265CONFIG_USB_SERIAL_CYBERJACK=m 1449CONFIG_USB_SERIAL_CYBERJACK=m
1266CONFIG_USB_SERIAL_XIRCOM=m 1450CONFIG_USB_SERIAL_XIRCOM=m
1451# CONFIG_USB_SERIAL_OPTION is not set
1267CONFIG_USB_SERIAL_OMNINET=m 1452CONFIG_USB_SERIAL_OMNINET=m
1268CONFIG_USB_EZUSB=y 1453# CONFIG_USB_SERIAL_DEBUG is not set
1269 1454
1270# 1455#
1271# USB Miscellaneous drivers 1456# USB Miscellaneous drivers
1272# 1457#
1273CONFIG_USB_EMI62=m 1458CONFIG_USB_EMI62=m
1274CONFIG_USB_EMI26=m 1459CONFIG_USB_EMI26=m
1275CONFIG_USB_AUERSWALD=m 1460# CONFIG_USB_ADUTUX is not set
1461# CONFIG_USB_SEVSEG is not set
1276CONFIG_USB_RIO500=m 1462CONFIG_USB_RIO500=m
1277CONFIG_USB_LEGOTOWER=m 1463CONFIG_USB_LEGOTOWER=m
1278CONFIG_USB_LCD=m 1464CONFIG_USB_LCD=m
1465# CONFIG_USB_BERRY_CHARGE is not set
1279CONFIG_USB_LED=m 1466CONFIG_USB_LED=m
1467# CONFIG_USB_CYPRESS_CY7C63 is not set
1280CONFIG_USB_CYTHERM=m 1468CONFIG_USB_CYTHERM=m
1281CONFIG_USB_PHIDGETKIT=m 1469# CONFIG_USB_PHIDGET is not set
1282CONFIG_USB_PHIDGETSERVO=m
1283CONFIG_USB_IDMOUSE=m 1470CONFIG_USB_IDMOUSE=m
1471# CONFIG_USB_FTDI_ELAN is not set
1472# CONFIG_USB_APPLEDISPLAY is not set
1284# CONFIG_USB_LD is not set 1473# CONFIG_USB_LD is not set
1474# CONFIG_USB_TRANCEVIBRATOR is not set
1475# CONFIG_USB_IOWARRIOR is not set
1285# CONFIG_USB_TEST is not set 1476# CONFIG_USB_TEST is not set
1286 1477# CONFIG_USB_ISIGHTFW is not set
1287# 1478# CONFIG_USB_VST is not set
1288# USB DSL modem support
1289#
1290
1291#
1292# USB Gadget Support
1293#
1294CONFIG_USB_GADGET=y 1479CONFIG_USB_GADGET=y
1480# CONFIG_USB_GADGET_DEBUG is not set
1295# CONFIG_USB_GADGET_DEBUG_FILES is not set 1481# CONFIG_USB_GADGET_DEBUG_FILES is not set
1482CONFIG_USB_GADGET_VBUS_DRAW=2
1296CONFIG_USB_GADGET_SELECTED=y 1483CONFIG_USB_GADGET_SELECTED=y
1297# CONFIG_USB_GADGET_NET2280 is not set 1484# CONFIG_USB_GADGET_AT91 is not set
1298CONFIG_USB_GADGET_PXA2XX=y 1485# CONFIG_USB_GADGET_ATMEL_USBA is not set
1299CONFIG_USB_PXA2XX=y 1486# CONFIG_USB_GADGET_FSL_USB2 is not set
1300# CONFIG_USB_PXA2XX_SMALL is not set
1301# CONFIG_USB_GADGET_GOKU is not set
1302# CONFIG_USB_GADGET_LH7A40X is not set 1487# CONFIG_USB_GADGET_LH7A40X is not set
1303# CONFIG_USB_GADGET_OMAP is not set 1488# CONFIG_USB_GADGET_OMAP is not set
1489CONFIG_USB_GADGET_PXA25X=y
1490CONFIG_USB_PXA25X=y
1491# CONFIG_USB_PXA25X_SMALL is not set
1492# CONFIG_USB_GADGET_PXA27X is not set
1493# CONFIG_USB_GADGET_S3C2410 is not set
1494# CONFIG_USB_GADGET_M66592 is not set
1495# CONFIG_USB_GADGET_AMD5536UDC is not set
1496# CONFIG_USB_GADGET_FSL_QE is not set
1497# CONFIG_USB_GADGET_NET2280 is not set
1498# CONFIG_USB_GADGET_GOKU is not set
1304# CONFIG_USB_GADGET_DUMMY_HCD is not set 1499# CONFIG_USB_GADGET_DUMMY_HCD is not set
1305# CONFIG_USB_GADGET_DUALSPEED is not set 1500# CONFIG_USB_GADGET_DUALSPEED is not set
1306CONFIG_USB_ZERO=m 1501CONFIG_USB_ZERO=m
@@ -1310,15 +1505,42 @@ CONFIG_USB_GADGETFS=m
1310CONFIG_USB_FILE_STORAGE=m 1505CONFIG_USB_FILE_STORAGE=m
1311# CONFIG_USB_FILE_STORAGE_TEST is not set 1506# CONFIG_USB_FILE_STORAGE_TEST is not set
1312CONFIG_USB_G_SERIAL=m 1507CONFIG_USB_G_SERIAL=m
1508# CONFIG_USB_MIDI_GADGET is not set
1509# CONFIG_USB_G_PRINTER is not set
1510# CONFIG_USB_CDC_COMPOSITE is not set
1511CONFIG_MMC=y
1512# CONFIG_MMC_DEBUG is not set
1513# CONFIG_MMC_UNSAFE_RESUME is not set
1313 1514
1314# 1515#
1315# MMC/SD Card support 1516# MMC/SD/SDIO Card Drivers
1316# 1517#
1317CONFIG_MMC=y
1318# CONFIG_MMC_DEBUG is not set
1319CONFIG_MMC_BLOCK=y 1518CONFIG_MMC_BLOCK=y
1519CONFIG_MMC_BLOCK_BOUNCE=y
1520# CONFIG_SDIO_UART is not set
1521# CONFIG_MMC_TEST is not set
1522
1523#
1524# MMC/SD/SDIO Host Controller Drivers
1525#
1320CONFIG_MMC_PXA=y 1526CONFIG_MMC_PXA=y
1321# CONFIG_MMC_WBSD is not set 1527# CONFIG_MMC_SDHCI is not set
1528# CONFIG_MMC_SPI is not set
1529# CONFIG_MEMSTICK is not set
1530# CONFIG_ACCESSIBILITY is not set
1531# CONFIG_NEW_LEDS is not set
1532CONFIG_RTC_LIB=y
1533# CONFIG_RTC_CLASS is not set
1534# CONFIG_DMADEVICES is not set
1535
1536#
1537# Voltage and Current regulators
1538#
1539# CONFIG_REGULATOR is not set
1540# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
1541# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
1542# CONFIG_REGULATOR_BQ24022 is not set
1543# CONFIG_UIO is not set
1322 1544
1323# 1545#
1324# File systems 1546# File systems
@@ -1327,16 +1549,17 @@ CONFIG_EXT2_FS=y
1327# CONFIG_EXT2_FS_XATTR is not set 1549# CONFIG_EXT2_FS_XATTR is not set
1328# CONFIG_EXT2_FS_XIP is not set 1550# CONFIG_EXT2_FS_XIP is not set
1329# CONFIG_EXT3_FS is not set 1551# CONFIG_EXT3_FS is not set
1330# CONFIG_JBD is not set 1552# CONFIG_EXT4_FS is not set
1331# CONFIG_REISERFS_FS is not set 1553# CONFIG_REISERFS_FS is not set
1332# CONFIG_JFS_FS is not set 1554# CONFIG_JFS_FS is not set
1333# CONFIG_FS_POSIX_ACL is not set 1555# CONFIG_FS_POSIX_ACL is not set
1556CONFIG_FILE_LOCKING=y
1334# CONFIG_XFS_FS is not set 1557# CONFIG_XFS_FS is not set
1335# CONFIG_MINIX_FS is not set 1558# CONFIG_OCFS2_FS is not set
1336# CONFIG_ROMFS_FS is not set 1559CONFIG_DNOTIFY=y
1337CONFIG_INOTIFY=y 1560CONFIG_INOTIFY=y
1561CONFIG_INOTIFY_USER=y
1338# CONFIG_QUOTA is not set 1562# CONFIG_QUOTA is not set
1339CONFIG_DNOTIFY=y
1340# CONFIG_AUTOFS_FS is not set 1563# CONFIG_AUTOFS_FS is not set
1341# CONFIG_AUTOFS4_FS is not set 1564# CONFIG_AUTOFS4_FS is not set
1342# CONFIG_FUSE_FS is not set 1565# CONFIG_FUSE_FS is not set
@@ -1361,11 +1584,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1361# Pseudo filesystems 1584# Pseudo filesystems
1362# 1585#
1363CONFIG_PROC_FS=y 1586CONFIG_PROC_FS=y
1587CONFIG_PROC_SYSCTL=y
1588CONFIG_PROC_PAGE_MONITOR=y
1364CONFIG_SYSFS=y 1589CONFIG_SYSFS=y
1365CONFIG_TMPFS=y 1590CONFIG_TMPFS=y
1591# CONFIG_TMPFS_POSIX_ACL is not set
1366# CONFIG_HUGETLB_PAGE is not set 1592# CONFIG_HUGETLB_PAGE is not set
1367CONFIG_RAMFS=y 1593# CONFIG_CONFIGFS_FS is not set
1368# CONFIG_RELAYFS_FS is not set
1369 1594
1370# 1595#
1371# Miscellaneous filesystems 1596# Miscellaneous filesystems
@@ -1377,39 +1602,42 @@ CONFIG_RAMFS=y
1377# CONFIG_BEFS_FS is not set 1602# CONFIG_BEFS_FS is not set
1378# CONFIG_BFS_FS is not set 1603# CONFIG_BFS_FS is not set
1379# CONFIG_EFS_FS is not set 1604# CONFIG_EFS_FS is not set
1380# CONFIG_JFFS_FS is not set
1381CONFIG_JFFS2_FS=y 1605CONFIG_JFFS2_FS=y
1382CONFIG_JFFS2_FS_DEBUG=0 1606CONFIG_JFFS2_FS_DEBUG=0
1383CONFIG_JFFS2_FS_WRITEBUFFER=y 1607CONFIG_JFFS2_FS_WRITEBUFFER=y
1608# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1384CONFIG_JFFS2_SUMMARY=y 1609CONFIG_JFFS2_SUMMARY=y
1610# CONFIG_JFFS2_FS_XATTR is not set
1385CONFIG_JFFS2_COMPRESSION_OPTIONS=y 1611CONFIG_JFFS2_COMPRESSION_OPTIONS=y
1386CONFIG_JFFS2_ZLIB=y 1612CONFIG_JFFS2_ZLIB=y
1613# CONFIG_JFFS2_LZO is not set
1387CONFIG_JFFS2_RTIME=y 1614CONFIG_JFFS2_RTIME=y
1388CONFIG_JFFS2_RUBIN=y 1615CONFIG_JFFS2_RUBIN=y
1389# CONFIG_JFFS2_CMODE_NONE is not set 1616# CONFIG_JFFS2_CMODE_NONE is not set
1390CONFIG_JFFS2_CMODE_PRIORITY=y 1617CONFIG_JFFS2_CMODE_PRIORITY=y
1391# CONFIG_JFFS2_CMODE_SIZE is not set 1618# CONFIG_JFFS2_CMODE_SIZE is not set
1619# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
1392CONFIG_CRAMFS=m 1620CONFIG_CRAMFS=m
1393# CONFIG_VXFS_FS is not set 1621# CONFIG_VXFS_FS is not set
1622# CONFIG_MINIX_FS is not set
1623# CONFIG_OMFS_FS is not set
1394# CONFIG_HPFS_FS is not set 1624# CONFIG_HPFS_FS is not set
1395# CONFIG_QNX4FS_FS is not set 1625# CONFIG_QNX4FS_FS is not set
1626# CONFIG_ROMFS_FS is not set
1396# CONFIG_SYSV_FS is not set 1627# CONFIG_SYSV_FS is not set
1397# CONFIG_UFS_FS is not set 1628# CONFIG_UFS_FS is not set
1398 1629CONFIG_NETWORK_FILESYSTEMS=y
1399#
1400# Network File Systems
1401#
1402CONFIG_NFS_FS=m 1630CONFIG_NFS_FS=m
1403CONFIG_NFS_V3=y 1631CONFIG_NFS_V3=y
1404# CONFIG_NFS_V3_ACL is not set 1632# CONFIG_NFS_V3_ACL is not set
1405CONFIG_NFS_V4=y 1633CONFIG_NFS_V4=y
1406# CONFIG_NFS_DIRECTIO is not set
1407# CONFIG_NFSD is not set 1634# CONFIG_NFSD is not set
1408CONFIG_LOCKD=m 1635CONFIG_LOCKD=m
1409CONFIG_LOCKD_V4=y 1636CONFIG_LOCKD_V4=y
1410CONFIG_NFS_COMMON=y 1637CONFIG_NFS_COMMON=y
1411CONFIG_SUNRPC=m 1638CONFIG_SUNRPC=m
1412CONFIG_SUNRPC_GSS=m 1639CONFIG_SUNRPC_GSS=m
1640# CONFIG_SUNRPC_REGISTER_V4 is not set
1413CONFIG_RPCSEC_GSS_KRB5=m 1641CONFIG_RPCSEC_GSS_KRB5=m
1414# CONFIG_RPCSEC_GSS_SPKM3 is not set 1642# CONFIG_RPCSEC_GSS_SPKM3 is not set
1415CONFIG_SMB_FS=m 1643CONFIG_SMB_FS=m
@@ -1419,7 +1647,6 @@ CONFIG_SMB_NLS_REMOTE="cp437"
1419# CONFIG_NCP_FS is not set 1647# CONFIG_NCP_FS is not set
1420# CONFIG_CODA_FS is not set 1648# CONFIG_CODA_FS is not set
1421# CONFIG_AFS_FS is not set 1649# CONFIG_AFS_FS is not set
1422# CONFIG_9P_FS is not set
1423 1650
1424# 1651#
1425# Partition Types 1652# Partition Types
@@ -1439,11 +1666,9 @@ CONFIG_MSDOS_PARTITION=y
1439# CONFIG_SGI_PARTITION is not set 1666# CONFIG_SGI_PARTITION is not set
1440# CONFIG_ULTRIX_PARTITION is not set 1667# CONFIG_ULTRIX_PARTITION is not set
1441# CONFIG_SUN_PARTITION is not set 1668# CONFIG_SUN_PARTITION is not set
1669# CONFIG_KARMA_PARTITION is not set
1442# CONFIG_EFI_PARTITION is not set 1670# CONFIG_EFI_PARTITION is not set
1443 1671# CONFIG_SYSV68_PARTITION is not set
1444#
1445# Native Language Support
1446#
1447CONFIG_NLS=y 1672CONFIG_NLS=y
1448CONFIG_NLS_DEFAULT="cp437" 1673CONFIG_NLS_DEFAULT="cp437"
1449CONFIG_NLS_CODEPAGE_437=y 1674CONFIG_NLS_CODEPAGE_437=y
@@ -1484,35 +1709,71 @@ CONFIG_NLS_ISO8859_1=y
1484# CONFIG_NLS_KOI8_R is not set 1709# CONFIG_NLS_KOI8_R is not set
1485# CONFIG_NLS_KOI8_U is not set 1710# CONFIG_NLS_KOI8_U is not set
1486CONFIG_NLS_UTF8=y 1711CONFIG_NLS_UTF8=y
1487 1712# CONFIG_DLM is not set
1488#
1489# Profiling support
1490#
1491CONFIG_PROFILING=y
1492CONFIG_OPROFILE=m
1493 1713
1494# 1714#
1495# Kernel hacking 1715# Kernel hacking
1496# 1716#
1497# CONFIG_PRINTK_TIME is not set 1717# CONFIG_PRINTK_TIME is not set
1498CONFIG_DEBUG_KERNEL=y 1718CONFIG_ENABLE_WARN_DEPRECATED=y
1719CONFIG_ENABLE_MUST_CHECK=y
1720CONFIG_FRAME_WARN=1024
1499CONFIG_MAGIC_SYSRQ=y 1721CONFIG_MAGIC_SYSRQ=y
1500CONFIG_LOG_BUF_SHIFT=14 1722# CONFIG_UNUSED_SYMBOLS is not set
1723# CONFIG_DEBUG_FS is not set
1724# CONFIG_HEADERS_CHECK is not set
1725CONFIG_DEBUG_KERNEL=y
1726# CONFIG_DEBUG_SHIRQ is not set
1501CONFIG_DETECT_SOFTLOCKUP=y 1727CONFIG_DETECT_SOFTLOCKUP=y
1728# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1729CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1730CONFIG_SCHED_DEBUG=y
1502# CONFIG_SCHEDSTATS is not set 1731# CONFIG_SCHEDSTATS is not set
1503# CONFIG_DEBUG_SLAB is not set 1732# CONFIG_TIMER_STATS is not set
1733# CONFIG_DEBUG_OBJECTS is not set
1734# CONFIG_SLUB_DEBUG_ON is not set
1735# CONFIG_SLUB_STATS is not set
1504# CONFIG_DEBUG_PREEMPT is not set 1736# CONFIG_DEBUG_PREEMPT is not set
1737# CONFIG_DEBUG_RT_MUTEXES is not set
1738# CONFIG_RT_MUTEX_TESTER is not set
1505# CONFIG_DEBUG_SPINLOCK is not set 1739# CONFIG_DEBUG_SPINLOCK is not set
1740# CONFIG_DEBUG_MUTEXES is not set
1741# CONFIG_DEBUG_LOCK_ALLOC is not set
1742# CONFIG_PROVE_LOCKING is not set
1743# CONFIG_LOCK_STAT is not set
1506# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1744# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1745# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1507# CONFIG_DEBUG_KOBJECT is not set 1746# CONFIG_DEBUG_KOBJECT is not set
1508CONFIG_DEBUG_BUGVERBOSE=y 1747CONFIG_DEBUG_BUGVERBOSE=y
1509# CONFIG_DEBUG_INFO is not set 1748# CONFIG_DEBUG_INFO is not set
1510# CONFIG_DEBUG_FS is not set
1511# CONFIG_DEBUG_VM is not set 1749# CONFIG_DEBUG_VM is not set
1750# CONFIG_DEBUG_WRITECOUNT is not set
1751# CONFIG_DEBUG_MEMORY_INIT is not set
1752# CONFIG_DEBUG_LIST is not set
1753# CONFIG_DEBUG_SG is not set
1512CONFIG_FRAME_POINTER=y 1754CONFIG_FRAME_POINTER=y
1755# CONFIG_BOOT_PRINTK_DELAY is not set
1513# CONFIG_RCU_TORTURE_TEST is not set 1756# CONFIG_RCU_TORTURE_TEST is not set
1757# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1758# CONFIG_BACKTRACE_SELF_TEST is not set
1759# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1760# CONFIG_FAULT_INJECTION is not set
1761# CONFIG_LATENCYTOP is not set
1762# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1763CONFIG_HAVE_FTRACE=y
1764CONFIG_HAVE_DYNAMIC_FTRACE=y
1765# CONFIG_FTRACE is not set
1766# CONFIG_IRQSOFF_TRACER is not set
1767# CONFIG_PREEMPT_TRACER is not set
1768# CONFIG_SCHED_TRACER is not set
1769# CONFIG_CONTEXT_SWITCH_TRACER is not set
1770# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1771# CONFIG_SAMPLES is not set
1772CONFIG_HAVE_ARCH_KGDB=y
1773# CONFIG_KGDB is not set
1514# CONFIG_DEBUG_USER is not set 1774# CONFIG_DEBUG_USER is not set
1515CONFIG_DEBUG_ERRORS=y 1775CONFIG_DEBUG_ERRORS=y
1776# CONFIG_DEBUG_STACK_USAGE is not set
1516CONFIG_DEBUG_LL=y 1777CONFIG_DEBUG_LL=y
1517# CONFIG_DEBUG_ICEDCC is not set 1778# CONFIG_DEBUG_ICEDCC is not set
1518 1779
@@ -1521,46 +1782,113 @@ CONFIG_DEBUG_LL=y
1521# 1782#
1522# CONFIG_KEYS is not set 1783# CONFIG_KEYS is not set
1523# CONFIG_SECURITY is not set 1784# CONFIG_SECURITY is not set
1785# CONFIG_SECURITYFS is not set
1786# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1787CONFIG_CRYPTO=y
1524 1788
1525# 1789#
1526# Cryptographic options 1790# Crypto core or helper
1527# 1791#
1528CONFIG_CRYPTO=y 1792# CONFIG_CRYPTO_FIPS is not set
1529CONFIG_CRYPTO_HMAC=y 1793CONFIG_CRYPTO_ALGAPI=y
1794CONFIG_CRYPTO_AEAD=y
1795CONFIG_CRYPTO_BLKCIPHER=y
1796CONFIG_CRYPTO_HASH=y
1797CONFIG_CRYPTO_RNG=y
1798CONFIG_CRYPTO_MANAGER=y
1799# CONFIG_CRYPTO_GF128MUL is not set
1530CONFIG_CRYPTO_NULL=m 1800CONFIG_CRYPTO_NULL=m
1801# CONFIG_CRYPTO_CRYPTD is not set
1802CONFIG_CRYPTO_AUTHENC=m
1803CONFIG_CRYPTO_TEST=m
1804
1805#
1806# Authenticated Encryption with Associated Data
1807#
1808# CONFIG_CRYPTO_CCM is not set
1809# CONFIG_CRYPTO_GCM is not set
1810# CONFIG_CRYPTO_SEQIV is not set
1811
1812#
1813# Block modes
1814#
1815CONFIG_CRYPTO_CBC=m
1816# CONFIG_CRYPTO_CTR is not set
1817# CONFIG_CRYPTO_CTS is not set
1818CONFIG_CRYPTO_ECB=m
1819# CONFIG_CRYPTO_LRW is not set
1820# CONFIG_CRYPTO_PCBC is not set
1821# CONFIG_CRYPTO_XTS is not set
1822
1823#
1824# Hash modes
1825#
1826CONFIG_CRYPTO_HMAC=y
1827# CONFIG_CRYPTO_XCBC is not set
1828
1829#
1830# Digest
1831#
1832CONFIG_CRYPTO_CRC32C=m
1531CONFIG_CRYPTO_MD4=m 1833CONFIG_CRYPTO_MD4=m
1532CONFIG_CRYPTO_MD5=m 1834CONFIG_CRYPTO_MD5=m
1835CONFIG_CRYPTO_MICHAEL_MIC=m
1836# CONFIG_CRYPTO_RMD128 is not set
1837# CONFIG_CRYPTO_RMD160 is not set
1838# CONFIG_CRYPTO_RMD256 is not set
1839# CONFIG_CRYPTO_RMD320 is not set
1533CONFIG_CRYPTO_SHA1=m 1840CONFIG_CRYPTO_SHA1=m
1534CONFIG_CRYPTO_SHA256=m 1841CONFIG_CRYPTO_SHA256=m
1535CONFIG_CRYPTO_SHA512=m 1842CONFIG_CRYPTO_SHA512=m
1536CONFIG_CRYPTO_WP512=m
1537# CONFIG_CRYPTO_TGR192 is not set 1843# CONFIG_CRYPTO_TGR192 is not set
1538CONFIG_CRYPTO_DES=m 1844CONFIG_CRYPTO_WP512=m
1539CONFIG_CRYPTO_BLOWFISH=m 1845
1540CONFIG_CRYPTO_TWOFISH=m 1846#
1541CONFIG_CRYPTO_SERPENT=m 1847# Ciphers
1848#
1542CONFIG_CRYPTO_AES=m 1849CONFIG_CRYPTO_AES=m
1850CONFIG_CRYPTO_ANUBIS=m
1851CONFIG_CRYPTO_ARC4=m
1852CONFIG_CRYPTO_BLOWFISH=m
1853# CONFIG_CRYPTO_CAMELLIA is not set
1543CONFIG_CRYPTO_CAST5=m 1854CONFIG_CRYPTO_CAST5=m
1544CONFIG_CRYPTO_CAST6=m 1855CONFIG_CRYPTO_CAST6=m
1545CONFIG_CRYPTO_TEA=m 1856CONFIG_CRYPTO_DES=m
1546CONFIG_CRYPTO_ARC4=m 1857# CONFIG_CRYPTO_FCRYPT is not set
1547CONFIG_CRYPTO_KHAZAD=m 1858CONFIG_CRYPTO_KHAZAD=m
1548CONFIG_CRYPTO_ANUBIS=m 1859# CONFIG_CRYPTO_SALSA20 is not set
1860# CONFIG_CRYPTO_SEED is not set
1861CONFIG_CRYPTO_SERPENT=m
1862CONFIG_CRYPTO_TEA=m
1863CONFIG_CRYPTO_TWOFISH=m
1864CONFIG_CRYPTO_TWOFISH_COMMON=m
1865
1866#
1867# Compression
1868#
1549CONFIG_CRYPTO_DEFLATE=m 1869CONFIG_CRYPTO_DEFLATE=m
1550CONFIG_CRYPTO_MICHAEL_MIC=m 1870# CONFIG_CRYPTO_LZO is not set
1551CONFIG_CRYPTO_CRC32C=m
1552CONFIG_CRYPTO_TEST=m
1553 1871
1554# 1872#
1555# Hardware crypto devices 1873# Random Number Generation
1556# 1874#
1875# CONFIG_CRYPTO_ANSI_CPRNG is not set
1876CONFIG_CRYPTO_HW=y
1557 1877
1558# 1878#
1559# Library routines 1879# Library routines
1560# 1880#
1881CONFIG_BITREVERSE=y
1561CONFIG_CRC_CCITT=y 1882CONFIG_CRC_CCITT=y
1562# CONFIG_CRC16 is not set 1883# CONFIG_CRC16 is not set
1884# CONFIG_CRC_T10DIF is not set
1885# CONFIG_CRC_ITU_T is not set
1563CONFIG_CRC32=y 1886CONFIG_CRC32=y
1887# CONFIG_CRC7 is not set
1564CONFIG_LIBCRC32C=m 1888CONFIG_LIBCRC32C=m
1565CONFIG_ZLIB_INFLATE=y 1889CONFIG_ZLIB_INFLATE=y
1566CONFIG_ZLIB_DEFLATE=y 1890CONFIG_ZLIB_DEFLATE=y
1891CONFIG_PLIST=y
1892CONFIG_HAS_IOMEM=y
1893CONFIG_HAS_IOPORT=y
1894CONFIG_HAS_DMA=y
diff --git a/arch/arm/configs/msm_defconfig b/arch/arm/configs/msm_defconfig
index ae4c5e62086a..3b4ecf2a90dd 100644
--- a/arch/arm/configs/msm_defconfig
+++ b/arch/arm/configs/msm_defconfig
@@ -133,7 +133,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
133# CONFIG_ARCH_LH7A40X is not set 133# CONFIG_ARCH_LH7A40X is not set
134# CONFIG_ARCH_DAVINCI is not set 134# CONFIG_ARCH_DAVINCI is not set
135# CONFIG_ARCH_OMAP is not set 135# CONFIG_ARCH_OMAP is not set
136CONFIG_ARCH_MSM7X00A=y 136CONFIG_ARCH_MSM=y
137 137
138# 138#
139# Boot options 139# Boot options
diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig
index 7d59fb1f1cea..4df5b4db2aa0 100644
--- a/arch/arm/configs/spitz_defconfig
+++ b/arch/arm/configs/spitz_defconfig
@@ -1,71 +1,111 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15-rc2 3# Linux kernel version: 2.6.27
4# Mon Nov 28 10:26:52 2005 4# Mon Oct 20 10:25:37 2008
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y
7CONFIG_MMU=y 11CONFIG_MMU=y
8CONFIG_UID16=y 12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17CONFIG_TRACE_IRQFLAGS_SUPPORT=y
18CONFIG_HARDIRQS_SW_RESEND=y
19CONFIG_GENERIC_IRQ_PROBE=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 20CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 24CONFIG_GENERIC_CALIBRATE_DELAY=y
25CONFIG_ARCH_MTD_XIP=y
26CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
27CONFIG_VECTORS_BASE=0xffff0000
28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 29
12# 30#
13# Code maturity level options 31# General setup
14# 32#
15CONFIG_EXPERIMENTAL=y 33CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 34CONFIG_BROKEN_ON_SMP=y
18CONFIG_LOCK_KERNEL=y 35CONFIG_LOCK_KERNEL=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 36CONFIG_INIT_ENV_ARG_LIMIT=32
20
21#
22# General setup
23#
24CONFIG_LOCALVERSION="" 37CONFIG_LOCALVERSION=""
25CONFIG_LOCALVERSION_AUTO=y 38CONFIG_LOCALVERSION_AUTO=y
26CONFIG_SWAP=y 39CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
41CONFIG_SYSVIPC_SYSCTL=y
28# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
29CONFIG_BSD_PROCESS_ACCT=y 43CONFIG_BSD_PROCESS_ACCT=y
30# CONFIG_BSD_PROCESS_ACCT_V3 is not set 44# CONFIG_BSD_PROCESS_ACCT_V3 is not set
31CONFIG_SYSCTL=y 45# CONFIG_TASKSTATS is not set
32# CONFIG_AUDIT is not set 46# CONFIG_AUDIT is not set
33CONFIG_HOTPLUG=y
34CONFIG_KOBJECT_UEVENT=y
35# CONFIG_IKCONFIG is not set 47# CONFIG_IKCONFIG is not set
36CONFIG_INITRAMFS_SOURCE="" 48CONFIG_LOG_BUF_SHIFT=14
49# CONFIG_CGROUPS is not set
50# CONFIG_GROUP_SCHED is not set
51CONFIG_SYSFS_DEPRECATED=y
52CONFIG_SYSFS_DEPRECATED_V2=y
53# CONFIG_RELAY is not set
54# CONFIG_NAMESPACES is not set
55# CONFIG_BLK_DEV_INITRD is not set
56# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
57CONFIG_SYSCTL=y
37CONFIG_EMBEDDED=y 58CONFIG_EMBEDDED=y
59CONFIG_UID16=y
60CONFIG_SYSCTL_SYSCALL=y
38CONFIG_KALLSYMS=y 61CONFIG_KALLSYMS=y
39# CONFIG_KALLSYMS_ALL is not set 62# CONFIG_KALLSYMS_ALL is not set
40# CONFIG_KALLSYMS_EXTRA_PASS is not set 63# CONFIG_KALLSYMS_EXTRA_PASS is not set
64CONFIG_HOTPLUG=y
41CONFIG_PRINTK=y 65CONFIG_PRINTK=y
42CONFIG_BUG=y 66CONFIG_BUG=y
67CONFIG_ELF_CORE=y
68CONFIG_COMPAT_BRK=y
43CONFIG_BASE_FULL=y 69CONFIG_BASE_FULL=y
44CONFIG_FUTEX=y 70CONFIG_FUTEX=y
71CONFIG_ANON_INODES=y
45CONFIG_EPOLL=y 72CONFIG_EPOLL=y
46# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 73CONFIG_SIGNALFD=y
74CONFIG_TIMERFD=y
75CONFIG_EVENTFD=y
47CONFIG_SHMEM=y 76CONFIG_SHMEM=y
48CONFIG_CC_ALIGN_FUNCTIONS=0 77CONFIG_AIO=y
49CONFIG_CC_ALIGN_LABELS=0 78CONFIG_VM_EVENT_COUNTERS=y
50CONFIG_CC_ALIGN_LOOPS=0 79CONFIG_SLUB_DEBUG=y
51CONFIG_CC_ALIGN_JUMPS=0 80# CONFIG_SLAB is not set
81CONFIG_SLUB=y
82# CONFIG_SLOB is not set
83CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85CONFIG_OPROFILE=m
86CONFIG_HAVE_OPROFILE=y
87# CONFIG_KPROBES is not set
88CONFIG_HAVE_KPROBES=y
89CONFIG_HAVE_KRETPROBES=y
90CONFIG_HAVE_CLK=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
92CONFIG_SLABINFO=y
93CONFIG_RT_MUTEXES=y
52# CONFIG_TINY_SHMEM is not set 94# CONFIG_TINY_SHMEM is not set
53CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
54
55#
56# Loadable module support
57#
58CONFIG_MODULES=y 96CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set
59CONFIG_MODULE_UNLOAD=y 98CONFIG_MODULE_UNLOAD=y
60CONFIG_MODULE_FORCE_UNLOAD=y 99CONFIG_MODULE_FORCE_UNLOAD=y
61CONFIG_OBSOLETE_MODPARM=y
62# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
63# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
64CONFIG_KMOD=y 102CONFIG_KMOD=y
65 103CONFIG_BLOCK=y
66# 104# CONFIG_LBD is not set
67# Block layer 105# CONFIG_BLK_DEV_IO_TRACE is not set
68# 106# CONFIG_LSF is not set
107# CONFIG_BLK_DEV_BSG is not set
108# CONFIG_BLK_DEV_INTEGRITY is not set
69 109
70# 110#
71# IO Schedulers 111# IO Schedulers
@@ -79,49 +119,95 @@ CONFIG_DEFAULT_AS=y
79# CONFIG_DEFAULT_CFQ is not set 119# CONFIG_DEFAULT_CFQ is not set
80# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
81CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
122CONFIG_CLASSIC_RCU=y
82 123
83# 124#
84# System Type 125# System Type
85# 126#
127# CONFIG_ARCH_AAEC2000 is not set
128# CONFIG_ARCH_INTEGRATOR is not set
129# CONFIG_ARCH_REALVIEW is not set
130# CONFIG_ARCH_VERSATILE is not set
131# CONFIG_ARCH_AT91 is not set
86# CONFIG_ARCH_CLPS7500 is not set 132# CONFIG_ARCH_CLPS7500 is not set
87# CONFIG_ARCH_CLPS711X is not set 133# CONFIG_ARCH_CLPS711X is not set
88# CONFIG_ARCH_CO285 is not set
89# CONFIG_ARCH_EBSA110 is not set 134# CONFIG_ARCH_EBSA110 is not set
135# CONFIG_ARCH_EP93XX is not set
90# CONFIG_ARCH_FOOTBRIDGE is not set 136# CONFIG_ARCH_FOOTBRIDGE is not set
91# CONFIG_ARCH_INTEGRATOR is not set 137# CONFIG_ARCH_NETX is not set
92# CONFIG_ARCH_IOP3XX is not set 138# CONFIG_ARCH_H720X is not set
93# CONFIG_ARCH_IXP4XX is not set 139# CONFIG_ARCH_IMX is not set
140# CONFIG_ARCH_IOP13XX is not set
141# CONFIG_ARCH_IOP32X is not set
142# CONFIG_ARCH_IOP33X is not set
143# CONFIG_ARCH_IXP23XX is not set
94# CONFIG_ARCH_IXP2000 is not set 144# CONFIG_ARCH_IXP2000 is not set
145# CONFIG_ARCH_IXP4XX is not set
95# CONFIG_ARCH_L7200 is not set 146# CONFIG_ARCH_L7200 is not set
147# CONFIG_ARCH_KIRKWOOD is not set
148# CONFIG_ARCH_KS8695 is not set
149# CONFIG_ARCH_NS9XXX is not set
150# CONFIG_ARCH_LOKI is not set
151# CONFIG_ARCH_MV78XX0 is not set
152# CONFIG_ARCH_MXC is not set
153# CONFIG_ARCH_ORION5X is not set
154# CONFIG_ARCH_PNX4008 is not set
96CONFIG_ARCH_PXA=y 155CONFIG_ARCH_PXA=y
97# CONFIG_ARCH_RPC is not set 156# CONFIG_ARCH_RPC is not set
98# CONFIG_ARCH_SA1100 is not set 157# CONFIG_ARCH_SA1100 is not set
99# CONFIG_ARCH_S3C2410 is not set 158# CONFIG_ARCH_S3C2410 is not set
100# CONFIG_ARCH_SHARK is not set 159# CONFIG_ARCH_SHARK is not set
101# CONFIG_ARCH_LH7A40X is not set 160# CONFIG_ARCH_LH7A40X is not set
161# CONFIG_ARCH_DAVINCI is not set
102# CONFIG_ARCH_OMAP is not set 162# CONFIG_ARCH_OMAP is not set
103# CONFIG_ARCH_VERSATILE is not set 163# CONFIG_ARCH_MSM7X00A is not set
104# CONFIG_ARCH_REALVIEW is not set
105# CONFIG_ARCH_IMX is not set
106# CONFIG_ARCH_H720X is not set
107# CONFIG_ARCH_AAEC2000 is not set
108 164
109# 165#
110# Intel PXA2xx Implementations 166# Intel PXA2xx/PXA3xx Implementations
111# 167#
168# CONFIG_ARCH_GUMSTIX is not set
112# CONFIG_ARCH_LUBBOCK is not set 169# CONFIG_ARCH_LUBBOCK is not set
170# CONFIG_MACH_LOGICPD_PXA270 is not set
113# CONFIG_MACH_MAINSTONE is not set 171# CONFIG_MACH_MAINSTONE is not set
172# CONFIG_MACH_MP900C is not set
114# CONFIG_ARCH_PXA_IDP is not set 173# CONFIG_ARCH_PXA_IDP is not set
115CONFIG_PXA_SHARPSL=y 174CONFIG_PXA_SHARPSL=y
116# CONFIG_PXA_SHARPSL_25x is not set 175# CONFIG_MACH_POODLE is not set
117CONFIG_PXA_SHARPSL_27x=y 176# CONFIG_MACH_CORGI is not set
177# CONFIG_MACH_SHEPHERD is not set
178# CONFIG_MACH_HUSKY is not set
118CONFIG_MACH_AKITA=y 179CONFIG_MACH_AKITA=y
119CONFIG_MACH_SPITZ=y 180CONFIG_MACH_SPITZ=y
120CONFIG_MACH_BORZOI=y 181CONFIG_MACH_BORZOI=y
182# CONFIG_MACH_TOSA is not set
183# CONFIG_ARCH_VIPER is not set
184# CONFIG_ARCH_PXA_ESERIES is not set
185# CONFIG_TRIZEPS_PXA is not set
186# CONFIG_MACH_EM_X270 is not set
187# CONFIG_MACH_COLIBRI is not set
188# CONFIG_MACH_ZYLONITE is not set
189# CONFIG_MACH_LITTLETON is not set
190# CONFIG_MACH_TAVOREVB is not set
191# CONFIG_MACH_SAAR is not set
192# CONFIG_MACH_ARMCORE is not set
193# CONFIG_MACH_CM_X300 is not set
194# CONFIG_MACH_MAGICIAN is not set
195# CONFIG_MACH_MIOA701 is not set
196# CONFIG_MACH_PCM027 is not set
197# CONFIG_ARCH_PXA_PALM is not set
198# CONFIG_PXA_EZX is not set
121CONFIG_PXA27x=y 199CONFIG_PXA27x=y
122CONFIG_IWMMXT=y
123CONFIG_PXA_SHARP_Cxx00=y 200CONFIG_PXA_SHARP_Cxx00=y
124CONFIG_PXA_SSP=y 201CONFIG_PXA_SSP=y
202# CONFIG_PXA_PWM is not set
203
204#
205# Boot options
206#
207
208#
209# Power management
210#
125 211
126# 212#
127# Processor Type 213# Processor Type
@@ -130,25 +216,29 @@ CONFIG_CPU_32=y
130CONFIG_CPU_XSCALE=y 216CONFIG_CPU_XSCALE=y
131CONFIG_CPU_32v5=y 217CONFIG_CPU_32v5=y
132CONFIG_CPU_ABRT_EV5T=y 218CONFIG_CPU_ABRT_EV5T=y
219CONFIG_CPU_PABRT_NOIFAR=y
133CONFIG_CPU_CACHE_VIVT=y 220CONFIG_CPU_CACHE_VIVT=y
134CONFIG_CPU_TLB_V4WBI=y 221CONFIG_CPU_TLB_V4WBI=y
222CONFIG_CPU_CP15=y
223CONFIG_CPU_CP15_MMU=y
135 224
136# 225#
137# Processor Features 226# Processor Features
138# 227#
139CONFIG_ARM_THUMB=y 228CONFIG_ARM_THUMB=y
229# CONFIG_CPU_DCACHE_DISABLE is not set
230# CONFIG_OUTER_CACHE is not set
231CONFIG_IWMMXT=y
140CONFIG_XSCALE_PMU=y 232CONFIG_XSCALE_PMU=y
141CONFIG_SHARP_PARAM=y 233CONFIG_SHARP_PARAM=y
234CONFIG_SHARPSL_PM=y
142CONFIG_SHARP_SCOOP=y 235CONFIG_SHARP_SCOOP=y
143 236
144# 237#
145# Bus support 238# Bus support
146# 239#
147CONFIG_ISA_DMA_API=y 240# CONFIG_PCI_SYSCALL is not set
148 241# CONFIG_ARCH_SUPPORTS_MSI is not set
149#
150# PCCARD (PCMCIA/CardBus) support
151#
152CONFIG_PCCARD=y 242CONFIG_PCCARD=y
153# CONFIG_PCMCIA_DEBUG is not set 243# CONFIG_PCMCIA_DEBUG is not set
154CONFIG_PCMCIA=y 244CONFIG_PCMCIA=y
@@ -163,16 +253,32 @@ CONFIG_PCMCIA_PXA2XX=y
163# 253#
164# Kernel Features 254# Kernel Features
165# 255#
256CONFIG_TICK_ONESHOT=y
257# CONFIG_NO_HZ is not set
258# CONFIG_HIGH_RES_TIMERS is not set
259CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
260CONFIG_VMSPLIT_3G=y
261# CONFIG_VMSPLIT_2G is not set
262# CONFIG_VMSPLIT_1G is not set
263CONFIG_PAGE_OFFSET=0xC0000000
166CONFIG_PREEMPT=y 264CONFIG_PREEMPT=y
167# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 265CONFIG_HZ=100
266# CONFIG_AEABI is not set
267CONFIG_ARCH_FLATMEM_HAS_HOLES=y
268# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
269# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
168CONFIG_SELECT_MEMORY_MODEL=y 270CONFIG_SELECT_MEMORY_MODEL=y
169CONFIG_FLATMEM_MANUAL=y 271CONFIG_FLATMEM_MANUAL=y
170# CONFIG_DISCONTIGMEM_MANUAL is not set 272# CONFIG_DISCONTIGMEM_MANUAL is not set
171# CONFIG_SPARSEMEM_MANUAL is not set 273# CONFIG_SPARSEMEM_MANUAL is not set
172CONFIG_FLATMEM=y 274CONFIG_FLATMEM=y
173CONFIG_FLAT_NODE_MEM_MAP=y 275CONFIG_FLAT_NODE_MEM_MAP=y
174# CONFIG_SPARSEMEM_STATIC is not set 276CONFIG_PAGEFLAGS_EXTENDED=y
175CONFIG_SPLIT_PTLOCK_CPUS=4096 277CONFIG_SPLIT_PTLOCK_CPUS=4096
278# CONFIG_RESOURCES_64BIT is not set
279# CONFIG_PHYS_ADDR_T_64BIT is not set
280CONFIG_ZONE_DMA_FLAG=0
281CONFIG_VIRT_TO_BUS=y
176CONFIG_ALIGNMENT_TRAP=y 282CONFIG_ALIGNMENT_TRAP=y
177 283
178# 284#
@@ -182,6 +288,13 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
182CONFIG_ZBOOT_ROM_BSS=0x0 288CONFIG_ZBOOT_ROM_BSS=0x0
183CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" 289CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug"
184# CONFIG_XIP_KERNEL is not set 290# CONFIG_XIP_KERNEL is not set
291# CONFIG_KEXEC is not set
292
293#
294# CPU Power Management
295#
296# CONFIG_CPU_FREQ is not set
297# CONFIG_CPU_IDLE is not set
185 298
186# 299#
187# Floating point emulation 300# Floating point emulation
@@ -198,6 +311,7 @@ CONFIG_FPE_NWFPE=y
198# Userspace binary formats 311# Userspace binary formats
199# 312#
200CONFIG_BINFMT_ELF=y 313CONFIG_BINFMT_ELF=y
314CONFIG_HAVE_AOUT=y
201CONFIG_BINFMT_AOUT=m 315CONFIG_BINFMT_AOUT=m
202CONFIG_BINFMT_MISC=m 316CONFIG_BINFMT_MISC=m
203# CONFIG_ARTHUR is not set 317# CONFIG_ARTHUR is not set
@@ -206,12 +320,12 @@ CONFIG_BINFMT_MISC=m
206# Power management options 320# Power management options
207# 321#
208CONFIG_PM=y 322CONFIG_PM=y
209# CONFIG_PM_LEGACY is not set 323# CONFIG_PM_DEBUG is not set
210CONFIG_APM=y 324CONFIG_PM_SLEEP=y
211 325CONFIG_SUSPEND=y
212# 326CONFIG_SUSPEND_FREEZER=y
213# Networking 327CONFIG_APM_EMULATION=y
214# 328CONFIG_ARCH_SUSPEND_POSSIBLE=y
215CONFIG_NET=y 329CONFIG_NET=y
216 330
217# 331#
@@ -222,6 +336,10 @@ CONFIG_PACKET_MMAP=y
222CONFIG_UNIX=y 336CONFIG_UNIX=y
223CONFIG_XFRM=y 337CONFIG_XFRM=y
224# CONFIG_XFRM_USER is not set 338# CONFIG_XFRM_USER is not set
339# CONFIG_XFRM_SUB_POLICY is not set
340# CONFIG_XFRM_MIGRATE is not set
341# CONFIG_XFRM_STATISTICS is not set
342CONFIG_XFRM_IPCOMP=m
225# CONFIG_NET_KEY is not set 343# CONFIG_NET_KEY is not set
226CONFIG_INET=y 344CONFIG_INET=y
227# CONFIG_IP_MULTICAST is not set 345# CONFIG_IP_MULTICAST is not set
@@ -235,140 +353,131 @@ CONFIG_SYN_COOKIES=y
235# CONFIG_INET_AH is not set 353# CONFIG_INET_AH is not set
236# CONFIG_INET_ESP is not set 354# CONFIG_INET_ESP is not set
237# CONFIG_INET_IPCOMP is not set 355# CONFIG_INET_IPCOMP is not set
238# CONFIG_INET_TUNNEL is not set 356# CONFIG_INET_XFRM_TUNNEL is not set
357CONFIG_INET_TUNNEL=m
358CONFIG_INET_XFRM_MODE_TRANSPORT=y
359CONFIG_INET_XFRM_MODE_TUNNEL=y
360CONFIG_INET_XFRM_MODE_BEET=y
361# CONFIG_INET_LRO is not set
239CONFIG_INET_DIAG=y 362CONFIG_INET_DIAG=y
240CONFIG_INET_TCP_DIAG=y 363CONFIG_INET_TCP_DIAG=y
241# CONFIG_TCP_CONG_ADVANCED is not set 364# CONFIG_TCP_CONG_ADVANCED is not set
242CONFIG_TCP_CONG_BIC=y 365CONFIG_TCP_CONG_CUBIC=y
243 366CONFIG_DEFAULT_TCP_CONG="cubic"
244# 367# CONFIG_TCP_MD5SIG is not set
245# IP: Virtual Server Configuration
246#
247# CONFIG_IP_VS is not set
248CONFIG_IPV6=m 368CONFIG_IPV6=m
249# CONFIG_IPV6_PRIVACY is not set 369# CONFIG_IPV6_PRIVACY is not set
370# CONFIG_IPV6_ROUTER_PREF is not set
371# CONFIG_IPV6_OPTIMISTIC_DAD is not set
250CONFIG_INET6_AH=m 372CONFIG_INET6_AH=m
251CONFIG_INET6_ESP=m 373CONFIG_INET6_ESP=m
252CONFIG_INET6_IPCOMP=m 374CONFIG_INET6_IPCOMP=m
375# CONFIG_IPV6_MIP6 is not set
376CONFIG_INET6_XFRM_TUNNEL=m
253CONFIG_INET6_TUNNEL=m 377CONFIG_INET6_TUNNEL=m
378CONFIG_INET6_XFRM_MODE_TRANSPORT=m
379CONFIG_INET6_XFRM_MODE_TUNNEL=m
380CONFIG_INET6_XFRM_MODE_BEET=m
381# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
382CONFIG_IPV6_SIT=m
383CONFIG_IPV6_NDISC_NODETYPE=y
254CONFIG_IPV6_TUNNEL=m 384CONFIG_IPV6_TUNNEL=m
385# CONFIG_IPV6_MULTIPLE_TABLES is not set
386# CONFIG_IPV6_MROUTE is not set
387# CONFIG_NETWORK_SECMARK is not set
255CONFIG_NETFILTER=y 388CONFIG_NETFILTER=y
256# CONFIG_NETFILTER_DEBUG is not set 389# CONFIG_NETFILTER_DEBUG is not set
390CONFIG_NETFILTER_ADVANCED=y
257 391
258# 392#
259# Core Netfilter Configuration 393# Core Netfilter Configuration
260# 394#
261# CONFIG_NETFILTER_NETLINK is not set 395# CONFIG_NETFILTER_NETLINK_QUEUE is not set
396# CONFIG_NETFILTER_NETLINK_LOG is not set
397# CONFIG_NF_CONNTRACK is not set
398CONFIG_NETFILTER_XTABLES=m
399# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
400# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
401# CONFIG_NETFILTER_XT_TARGET_MARK is not set
402# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
403# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
404# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
405# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
406# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
407# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
408# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
409# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
410# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
411# CONFIG_NETFILTER_XT_MATCH_ESP is not set
412# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
413# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
414# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
415# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
416# CONFIG_NETFILTER_XT_MATCH_MAC is not set
417# CONFIG_NETFILTER_XT_MATCH_MARK is not set
418# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
419# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
420# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
421# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
422# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
423# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
424# CONFIG_NETFILTER_XT_MATCH_REALM is not set
425# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
426# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
427# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
428# CONFIG_NETFILTER_XT_MATCH_STRING is not set
429# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
430# CONFIG_NETFILTER_XT_MATCH_TIME is not set
431# CONFIG_NETFILTER_XT_MATCH_U32 is not set
432# CONFIG_IP_VS is not set
262 433
263# 434#
264# IP: Netfilter Configuration 435# IP: Netfilter Configuration
265# 436#
266CONFIG_IP_NF_CONNTRACK=m 437# CONFIG_NF_DEFRAG_IPV4 is not set
267# CONFIG_IP_NF_CT_ACCT is not set
268# CONFIG_IP_NF_CONNTRACK_MARK is not set
269# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
270CONFIG_IP_NF_CT_PROTO_SCTP=m
271CONFIG_IP_NF_FTP=m
272CONFIG_IP_NF_IRC=m
273# CONFIG_IP_NF_NETBIOS_NS is not set
274CONFIG_IP_NF_TFTP=m
275CONFIG_IP_NF_AMANDA=m
276# CONFIG_IP_NF_PPTP is not set
277CONFIG_IP_NF_QUEUE=m 438CONFIG_IP_NF_QUEUE=m
278CONFIG_IP_NF_IPTABLES=m 439CONFIG_IP_NF_IPTABLES=m
279CONFIG_IP_NF_MATCH_LIMIT=m 440CONFIG_IP_NF_MATCH_ADDRTYPE=m
280CONFIG_IP_NF_MATCH_IPRANGE=m 441# CONFIG_IP_NF_MATCH_AH is not set
281CONFIG_IP_NF_MATCH_MAC=m
282CONFIG_IP_NF_MATCH_PKTTYPE=m
283CONFIG_IP_NF_MATCH_MARK=m
284CONFIG_IP_NF_MATCH_MULTIPORT=m
285CONFIG_IP_NF_MATCH_TOS=m
286CONFIG_IP_NF_MATCH_RECENT=m
287CONFIG_IP_NF_MATCH_ECN=m 442CONFIG_IP_NF_MATCH_ECN=m
288CONFIG_IP_NF_MATCH_DSCP=m
289CONFIG_IP_NF_MATCH_AH_ESP=m
290CONFIG_IP_NF_MATCH_LENGTH=m
291CONFIG_IP_NF_MATCH_TTL=m 443CONFIG_IP_NF_MATCH_TTL=m
292CONFIG_IP_NF_MATCH_TCPMSS=m
293CONFIG_IP_NF_MATCH_HELPER=m
294CONFIG_IP_NF_MATCH_STATE=m
295CONFIG_IP_NF_MATCH_CONNTRACK=m
296CONFIG_IP_NF_MATCH_OWNER=m
297CONFIG_IP_NF_MATCH_ADDRTYPE=m
298CONFIG_IP_NF_MATCH_REALM=m
299CONFIG_IP_NF_MATCH_SCTP=m
300# CONFIG_IP_NF_MATCH_DCCP is not set
301CONFIG_IP_NF_MATCH_COMMENT=m
302CONFIG_IP_NF_MATCH_HASHLIMIT=m
303# CONFIG_IP_NF_MATCH_STRING is not set
304CONFIG_IP_NF_FILTER=m 444CONFIG_IP_NF_FILTER=m
305# CONFIG_IP_NF_TARGET_REJECT is not set 445# CONFIG_IP_NF_TARGET_REJECT is not set
306CONFIG_IP_NF_TARGET_LOG=m 446CONFIG_IP_NF_TARGET_LOG=m
307CONFIG_IP_NF_TARGET_ULOG=m 447CONFIG_IP_NF_TARGET_ULOG=m
308CONFIG_IP_NF_TARGET_TCPMSS=m
309# CONFIG_IP_NF_TARGET_NFQUEUE is not set
310CONFIG_IP_NF_NAT=m
311CONFIG_IP_NF_NAT_NEEDED=y
312# CONFIG_IP_NF_TARGET_MASQUERADE is not set
313# CONFIG_IP_NF_TARGET_REDIRECT is not set
314# CONFIG_IP_NF_TARGET_NETMAP is not set
315# CONFIG_IP_NF_TARGET_SAME is not set
316# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
317CONFIG_IP_NF_NAT_IRC=m
318CONFIG_IP_NF_NAT_FTP=m
319CONFIG_IP_NF_NAT_TFTP=m
320CONFIG_IP_NF_NAT_AMANDA=m
321CONFIG_IP_NF_MANGLE=m 448CONFIG_IP_NF_MANGLE=m
322# CONFIG_IP_NF_TARGET_TOS is not set
323# CONFIG_IP_NF_TARGET_ECN is not set 449# CONFIG_IP_NF_TARGET_ECN is not set
324# CONFIG_IP_NF_TARGET_DSCP is not set
325# CONFIG_IP_NF_TARGET_MARK is not set
326# CONFIG_IP_NF_TARGET_CLASSIFY is not set
327# CONFIG_IP_NF_TARGET_TTL is not set 450# CONFIG_IP_NF_TARGET_TTL is not set
328CONFIG_IP_NF_RAW=m 451CONFIG_IP_NF_RAW=m
329# CONFIG_IP_NF_TARGET_NOTRACK is not set
330CONFIG_IP_NF_ARPTABLES=m 452CONFIG_IP_NF_ARPTABLES=m
331CONFIG_IP_NF_ARPFILTER=m 453CONFIG_IP_NF_ARPFILTER=m
332CONFIG_IP_NF_ARP_MANGLE=m 454CONFIG_IP_NF_ARP_MANGLE=m
333 455
334# 456#
335# IPv6: Netfilter Configuration (EXPERIMENTAL) 457# IPv6: Netfilter Configuration
336# 458#
337CONFIG_IP6_NF_QUEUE=m 459CONFIG_IP6_NF_QUEUE=m
338CONFIG_IP6_NF_IPTABLES=m 460CONFIG_IP6_NF_IPTABLES=m
339CONFIG_IP6_NF_MATCH_LIMIT=m 461# CONFIG_IP6_NF_MATCH_AH is not set
340CONFIG_IP6_NF_MATCH_MAC=m 462CONFIG_IP6_NF_MATCH_EUI64=m
341CONFIG_IP6_NF_MATCH_RT=m
342CONFIG_IP6_NF_MATCH_OPTS=m
343CONFIG_IP6_NF_MATCH_FRAG=m 463CONFIG_IP6_NF_MATCH_FRAG=m
464CONFIG_IP6_NF_MATCH_OPTS=m
344CONFIG_IP6_NF_MATCH_HL=m 465CONFIG_IP6_NF_MATCH_HL=m
345CONFIG_IP6_NF_MATCH_MULTIPORT=m
346CONFIG_IP6_NF_MATCH_OWNER=m
347CONFIG_IP6_NF_MATCH_MARK=m
348CONFIG_IP6_NF_MATCH_IPV6HEADER=m 466CONFIG_IP6_NF_MATCH_IPV6HEADER=m
349CONFIG_IP6_NF_MATCH_AHESP=m 467# CONFIG_IP6_NF_MATCH_MH is not set
350CONFIG_IP6_NF_MATCH_LENGTH=m 468CONFIG_IP6_NF_MATCH_RT=m
351CONFIG_IP6_NF_MATCH_EUI64=m
352CONFIG_IP6_NF_FILTER=m
353# CONFIG_IP6_NF_TARGET_LOG is not set 469# CONFIG_IP6_NF_TARGET_LOG is not set
470CONFIG_IP6_NF_FILTER=m
354# CONFIG_IP6_NF_TARGET_REJECT is not set 471# CONFIG_IP6_NF_TARGET_REJECT is not set
355# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
356CONFIG_IP6_NF_MANGLE=m 472CONFIG_IP6_NF_MANGLE=m
357# CONFIG_IP6_NF_TARGET_MARK is not set
358# CONFIG_IP6_NF_TARGET_HL is not set 473# CONFIG_IP6_NF_TARGET_HL is not set
359CONFIG_IP6_NF_RAW=m 474CONFIG_IP6_NF_RAW=m
360
361#
362# DCCP Configuration (EXPERIMENTAL)
363#
364# CONFIG_IP_DCCP is not set 475# CONFIG_IP_DCCP is not set
365
366#
367# SCTP Configuration (EXPERIMENTAL)
368#
369# CONFIG_IP_SCTP is not set 476# CONFIG_IP_SCTP is not set
477# CONFIG_TIPC is not set
370# CONFIG_ATM is not set 478# CONFIG_ATM is not set
371# CONFIG_BRIDGE is not set 479# CONFIG_BRIDGE is not set
480# CONFIG_NET_DSA is not set
372# CONFIG_VLAN_8021Q is not set 481# CONFIG_VLAN_8021Q is not set
373# CONFIG_DECNET is not set 482# CONFIG_DECNET is not set
374# CONFIG_LLC2 is not set 483# CONFIG_LLC2 is not set
@@ -376,21 +485,16 @@ CONFIG_IP6_NF_RAW=m
376# CONFIG_ATALK is not set 485# CONFIG_ATALK is not set
377# CONFIG_X25 is not set 486# CONFIG_X25 is not set
378# CONFIG_LAPB is not set 487# CONFIG_LAPB is not set
379# CONFIG_NET_DIVERT is not set
380# CONFIG_ECONET is not set 488# CONFIG_ECONET is not set
381# CONFIG_WAN_ROUTER is not set 489# CONFIG_WAN_ROUTER is not set
382
383#
384# QoS and/or fair queueing
385#
386# CONFIG_NET_SCHED is not set 490# CONFIG_NET_SCHED is not set
387CONFIG_NET_CLS_ROUTE=y
388 491
389# 492#
390# Network testing 493# Network testing
391# 494#
392# CONFIG_NET_PKTGEN is not set 495# CONFIG_NET_PKTGEN is not set
393# CONFIG_HAMRADIO is not set 496# CONFIG_HAMRADIO is not set
497# CONFIG_CAN is not set
394CONFIG_IRDA=m 498CONFIG_IRDA=m
395 499
396# 500#
@@ -420,27 +524,17 @@ CONFIG_IRCOMM=m
420# 524#
421# Dongle support 525# Dongle support
422# 526#
423 527# CONFIG_KINGSUN_DONGLE is not set
424# 528# CONFIG_KSDAZZLE_DONGLE is not set
425# Old SIR device drivers 529# CONFIG_KS959_DONGLE is not set
426#
427# CONFIG_IRPORT_SIR is not set
428
429#
430# Old Serial dongle support
431#
432 530
433# 531#
434# FIR device drivers 532# FIR device drivers
435# 533#
436# CONFIG_USB_IRDA is not set 534# CONFIG_USB_IRDA is not set
437# CONFIG_SIGMATEL_FIR is not set 535# CONFIG_SIGMATEL_FIR is not set
438# CONFIG_NSC_FIR is not set
439# CONFIG_WINBOND_FIR is not set
440# CONFIG_SMC_IRCC_FIR is not set
441# CONFIG_ALI_FIR is not set
442# CONFIG_VIA_FIR is not set
443CONFIG_PXA_FICP=m 536CONFIG_PXA_FICP=m
537# CONFIG_MCS_FIR is not set
444CONFIG_BT=m 538CONFIG_BT=m
445CONFIG_BT_L2CAP=m 539CONFIG_BT_L2CAP=m
446CONFIG_BT_SCO=m 540CONFIG_BT_SCO=m
@@ -456,9 +550,12 @@ CONFIG_BT_HIDP=m
456# 550#
457CONFIG_BT_HCIUSB=m 551CONFIG_BT_HCIUSB=m
458# CONFIG_BT_HCIUSB_SCO is not set 552# CONFIG_BT_HCIUSB_SCO is not set
553# CONFIG_BT_HCIBTUSB is not set
554# CONFIG_BT_HCIBTSDIO is not set
459CONFIG_BT_HCIUART=m 555CONFIG_BT_HCIUART=m
460CONFIG_BT_HCIUART_H4=y 556CONFIG_BT_HCIUART_H4=y
461CONFIG_BT_HCIUART_BCSP=y 557CONFIG_BT_HCIUART_BCSP=y
558# CONFIG_BT_HCIUART_LL is not set
462CONFIG_BT_HCIBCM203X=m 559CONFIG_BT_HCIBCM203X=m
463CONFIG_BT_HCIBPA10X=m 560CONFIG_BT_HCIBPA10X=m
464CONFIG_BT_HCIBFUSB=m 561CONFIG_BT_HCIBFUSB=m
@@ -467,11 +564,20 @@ CONFIG_BT_HCIBT3C=m
467CONFIG_BT_HCIBLUECARD=m 564CONFIG_BT_HCIBLUECARD=m
468CONFIG_BT_HCIBTUART=m 565CONFIG_BT_HCIBTUART=m
469CONFIG_BT_HCIVHCI=m 566CONFIG_BT_HCIVHCI=m
567# CONFIG_AF_RXRPC is not set
568# CONFIG_PHONET is not set
569CONFIG_WIRELESS=y
570# CONFIG_CFG80211 is not set
571# CONFIG_WIRELESS_OLD_REGULATORY is not set
572# CONFIG_WIRELESS_EXT is not set
573# CONFIG_MAC80211 is not set
470CONFIG_IEEE80211=m 574CONFIG_IEEE80211=m
471# CONFIG_IEEE80211_DEBUG is not set 575# CONFIG_IEEE80211_DEBUG is not set
472CONFIG_IEEE80211_CRYPT_WEP=m 576CONFIG_IEEE80211_CRYPT_WEP=m
473# CONFIG_IEEE80211_CRYPT_CCMP is not set 577# CONFIG_IEEE80211_CRYPT_CCMP is not set
474# CONFIG_IEEE80211_CRYPT_TKIP is not set 578# CONFIG_IEEE80211_CRYPT_TKIP is not set
579# CONFIG_RFKILL is not set
580# CONFIG_NET_9P is not set
475 581
476# 582#
477# Device Drivers 583# Device Drivers
@@ -480,19 +586,16 @@ CONFIG_IEEE80211_CRYPT_WEP=m
480# 586#
481# Generic Driver Options 587# Generic Driver Options
482# 588#
589CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
483CONFIG_STANDALONE=y 590CONFIG_STANDALONE=y
484CONFIG_PREVENT_FIRMWARE_BUILD=y 591CONFIG_PREVENT_FIRMWARE_BUILD=y
485CONFIG_FW_LOADER=y 592CONFIG_FW_LOADER=y
593CONFIG_FIRMWARE_IN_KERNEL=y
594CONFIG_EXTRA_FIRMWARE=""
486# CONFIG_DEBUG_DRIVER is not set 595# CONFIG_DEBUG_DRIVER is not set
487 596# CONFIG_DEBUG_DEVRES is not set
488# 597# CONFIG_SYS_HYPERVISOR is not set
489# Connector - unified userspace <-> kernelspace linker
490#
491# CONFIG_CONNECTOR is not set 598# CONFIG_CONNECTOR is not set
492
493#
494# Memory Technology Devices (MTD)
495#
496CONFIG_MTD=y 599CONFIG_MTD=y
497# CONFIG_MTD_DEBUG is not set 600# CONFIG_MTD_DEBUG is not set
498# CONFIG_MTD_CONCAT is not set 601# CONFIG_MTD_CONCAT is not set
@@ -500,16 +603,20 @@ CONFIG_MTD_PARTITIONS=y
500# CONFIG_MTD_REDBOOT_PARTS is not set 603# CONFIG_MTD_REDBOOT_PARTS is not set
501CONFIG_MTD_CMDLINE_PARTS=y 604CONFIG_MTD_CMDLINE_PARTS=y
502# CONFIG_MTD_AFS_PARTS is not set 605# CONFIG_MTD_AFS_PARTS is not set
606# CONFIG_MTD_AR7_PARTS is not set
503 607
504# 608#
505# User Modules And Translation Layers 609# User Modules And Translation Layers
506# 610#
507CONFIG_MTD_CHAR=y 611CONFIG_MTD_CHAR=y
612CONFIG_MTD_BLKDEVS=y
508CONFIG_MTD_BLOCK=y 613CONFIG_MTD_BLOCK=y
509# CONFIG_FTL is not set 614# CONFIG_FTL is not set
510# CONFIG_NFTL is not set 615# CONFIG_NFTL is not set
511# CONFIG_INFTL is not set 616# CONFIG_INFTL is not set
512# CONFIG_RFD_FTL is not set 617# CONFIG_RFD_FTL is not set
618# CONFIG_SSFDC is not set
619# CONFIG_MTD_OOPS is not set
513 620
514# 621#
515# RAM/ROM/Flash chip drivers 622# RAM/ROM/Flash chip drivers
@@ -534,16 +641,18 @@ CONFIG_MTD_ROM=y
534# Mapping drivers for chip access 641# Mapping drivers for chip access
535# 642#
536CONFIG_MTD_COMPLEX_MAPPINGS=y 643CONFIG_MTD_COMPLEX_MAPPINGS=y
644# CONFIG_MTD_PHYSMAP is not set
537CONFIG_MTD_SHARP_SL=y 645CONFIG_MTD_SHARP_SL=y
538# CONFIG_MTD_PLATRAM is not set 646# CONFIG_MTD_PLATRAM is not set
539 647
540# 648#
541# Self-contained MTD device drivers 649# Self-contained MTD device drivers
542# 650#
651# CONFIG_MTD_DATAFLASH is not set
652# CONFIG_MTD_M25P80 is not set
543# CONFIG_MTD_SLRAM is not set 653# CONFIG_MTD_SLRAM is not set
544# CONFIG_MTD_PHRAM is not set 654# CONFIG_MTD_PHRAM is not set
545# CONFIG_MTD_MTDRAM is not set 655# CONFIG_MTD_MTDRAM is not set
546# CONFIG_MTD_BLKMTD is not set
547# CONFIG_MTD_BLOCK2MTD is not set 656# CONFIG_MTD_BLOCK2MTD is not set
548 657
549# 658#
@@ -552,78 +661,66 @@ CONFIG_MTD_SHARP_SL=y
552# CONFIG_MTD_DOC2000 is not set 661# CONFIG_MTD_DOC2000 is not set
553# CONFIG_MTD_DOC2001 is not set 662# CONFIG_MTD_DOC2001 is not set
554# CONFIG_MTD_DOC2001PLUS is not set 663# CONFIG_MTD_DOC2001PLUS is not set
555
556#
557# NAND Flash Device Drivers
558#
559CONFIG_MTD_NAND=y 664CONFIG_MTD_NAND=y
560CONFIG_MTD_NAND_VERIFY_WRITE=y 665CONFIG_MTD_NAND_VERIFY_WRITE=y
666# CONFIG_MTD_NAND_ECC_SMC is not set
667# CONFIG_MTD_NAND_MUSEUM_IDS is not set
561# CONFIG_MTD_NAND_H1900 is not set 668# CONFIG_MTD_NAND_H1900 is not set
562CONFIG_MTD_NAND_IDS=y 669CONFIG_MTD_NAND_IDS=y
563# CONFIG_MTD_NAND_DISKONCHIP is not set 670# CONFIG_MTD_NAND_DISKONCHIP is not set
564CONFIG_MTD_NAND_SHARPSL=y 671CONFIG_MTD_NAND_SHARPSL=y
565# CONFIG_MTD_NAND_NANDSIM is not set 672# CONFIG_MTD_NAND_NANDSIM is not set
566 673# CONFIG_MTD_NAND_PLATFORM is not set
567# 674# CONFIG_MTD_ALAUDA is not set
568# OneNAND Flash Device Drivers
569#
570# CONFIG_MTD_ONENAND is not set 675# CONFIG_MTD_ONENAND is not set
571 676
572# 677#
573# Parallel port support 678# UBI - Unsorted block images
574# 679#
680# CONFIG_MTD_UBI is not set
575# CONFIG_PARPORT is not set 681# CONFIG_PARPORT is not set
576 682CONFIG_BLK_DEV=y
577#
578# Plug and Play support
579#
580
581#
582# Block devices
583#
584# CONFIG_BLK_DEV_COW_COMMON is not set 683# CONFIG_BLK_DEV_COW_COMMON is not set
585CONFIG_BLK_DEV_LOOP=y 684CONFIG_BLK_DEV_LOOP=y
586# CONFIG_BLK_DEV_CRYPTOLOOP is not set 685# CONFIG_BLK_DEV_CRYPTOLOOP is not set
587# CONFIG_BLK_DEV_NBD is not set 686# CONFIG_BLK_DEV_NBD is not set
588# CONFIG_BLK_DEV_UB is not set 687# CONFIG_BLK_DEV_UB is not set
589# CONFIG_BLK_DEV_RAM is not set 688# CONFIG_BLK_DEV_RAM is not set
590CONFIG_BLK_DEV_RAM_COUNT=16
591# CONFIG_CDROM_PKTCDVD is not set 689# CONFIG_CDROM_PKTCDVD is not set
592# CONFIG_ATA_OVER_ETH is not set 690# CONFIG_ATA_OVER_ETH is not set
593 691CONFIG_MISC_DEVICES=y
594# 692# CONFIG_EEPROM_93CX6 is not set
595# ATA/ATAPI/MFM/RLL support 693# CONFIG_ENCLOSURE_SERVICES is not set
596# 694CONFIG_HAVE_IDE=y
597CONFIG_IDE=y 695CONFIG_IDE=y
598CONFIG_BLK_DEV_IDE=y
599 696
600# 697#
601# Please see Documentation/ide.txt for help/info on IDE drives 698# Please see Documentation/ide/ide.txt for help/info on IDE drives
602# 699#
603# CONFIG_BLK_DEV_IDE_SATA is not set 700# CONFIG_BLK_DEV_IDE_SATA is not set
604CONFIG_BLK_DEV_IDEDISK=y 701CONFIG_BLK_DEV_IDEDISK=y
605# CONFIG_IDEDISK_MULTI_MODE is not set
606CONFIG_BLK_DEV_IDECS=y 702CONFIG_BLK_DEV_IDECS=y
607# CONFIG_BLK_DEV_IDECD is not set 703# CONFIG_BLK_DEV_IDECD is not set
608# CONFIG_BLK_DEV_IDETAPE is not set 704# CONFIG_BLK_DEV_IDETAPE is not set
609# CONFIG_BLK_DEV_IDEFLOPPY is not set 705# CONFIG_BLK_DEV_IDEFLOPPY is not set
610# CONFIG_BLK_DEV_IDESCSI is not set 706# CONFIG_BLK_DEV_IDESCSI is not set
611# CONFIG_IDE_TASK_IOCTL is not set 707# CONFIG_IDE_TASK_IOCTL is not set
708CONFIG_IDE_PROC_FS=y
612 709
613# 710#
614# IDE chipset support/bugfixes 711# IDE chipset support/bugfixes
615# 712#
616CONFIG_IDE_GENERIC=y 713# CONFIG_BLK_DEV_PLATFORM is not set
617# CONFIG_IDE_ARM is not set
618# CONFIG_BLK_DEV_IDEDMA is not set 714# CONFIG_BLK_DEV_IDEDMA is not set
619# CONFIG_IDEDMA_AUTO is not set
620# CONFIG_BLK_DEV_HD is not set
621 715
622# 716#
623# SCSI device support 717# SCSI device support
624# 718#
625# CONFIG_RAID_ATTRS is not set 719# CONFIG_RAID_ATTRS is not set
626CONFIG_SCSI=m 720CONFIG_SCSI=m
721CONFIG_SCSI_DMA=y
722# CONFIG_SCSI_TGT is not set
723# CONFIG_SCSI_NETLINK is not set
627CONFIG_SCSI_PROC_FS=y 724CONFIG_SCSI_PROC_FS=y
628 725
629# 726#
@@ -643,121 +740,76 @@ CONFIG_CHR_DEV_SG=m
643CONFIG_SCSI_MULTI_LUN=y 740CONFIG_SCSI_MULTI_LUN=y
644# CONFIG_SCSI_CONSTANTS is not set 741# CONFIG_SCSI_CONSTANTS is not set
645# CONFIG_SCSI_LOGGING is not set 742# CONFIG_SCSI_LOGGING is not set
743# CONFIG_SCSI_SCAN_ASYNC is not set
744CONFIG_SCSI_WAIT_SCAN=m
646 745
647# 746#
648# SCSI Transport Attributes 747# SCSI Transports
649# 748#
650# CONFIG_SCSI_SPI_ATTRS is not set 749# CONFIG_SCSI_SPI_ATTRS is not set
651# CONFIG_SCSI_FC_ATTRS is not set 750# CONFIG_SCSI_FC_ATTRS is not set
652# CONFIG_SCSI_ISCSI_ATTRS is not set 751# CONFIG_SCSI_ISCSI_ATTRS is not set
653# CONFIG_SCSI_SAS_ATTRS is not set 752# CONFIG_SCSI_SAS_LIBSAS is not set
654 753# CONFIG_SCSI_SRP_ATTRS is not set
655# 754CONFIG_SCSI_LOWLEVEL=y
656# SCSI low-level drivers
657#
658# CONFIG_ISCSI_TCP is not set 755# CONFIG_ISCSI_TCP is not set
659# CONFIG_SCSI_SATA is not set
660# CONFIG_SCSI_DEBUG is not set 756# CONFIG_SCSI_DEBUG is not set
661 757# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
662# 758# CONFIG_SCSI_DH is not set
663# PCMCIA SCSI adapter support 759# CONFIG_ATA is not set
664#
665# CONFIG_PCMCIA_AHA152X is not set
666# CONFIG_PCMCIA_FDOMAIN is not set
667# CONFIG_PCMCIA_NINJA_SCSI is not set
668# CONFIG_PCMCIA_QLOGIC is not set
669# CONFIG_PCMCIA_SYM53C500 is not set
670
671#
672# Multi-device support (RAID and LVM)
673#
674# CONFIG_MD is not set 760# CONFIG_MD is not set
675
676#
677# Fusion MPT device support
678#
679# CONFIG_FUSION is not set
680
681#
682# IEEE 1394 (FireWire) support
683#
684
685#
686# I2O device support
687#
688
689#
690# Network device support
691#
692CONFIG_NETDEVICES=y 761CONFIG_NETDEVICES=y
693# CONFIG_DUMMY is not set 762# CONFIG_DUMMY is not set
694# CONFIG_BONDING is not set 763# CONFIG_BONDING is not set
764# CONFIG_MACVLAN is not set
695# CONFIG_EQUALIZER is not set 765# CONFIG_EQUALIZER is not set
696# CONFIG_TUN is not set 766# CONFIG_TUN is not set
697 767# CONFIG_VETH is not set
698#
699# PHY device support
700#
701# CONFIG_PHYLIB is not set 768# CONFIG_PHYLIB is not set
702
703#
704# Ethernet (10 or 100Mbit)
705#
706CONFIG_NET_ETHERNET=y 769CONFIG_NET_ETHERNET=y
707CONFIG_MII=m 770CONFIG_MII=m
771# CONFIG_AX88796 is not set
708# CONFIG_SMC91X is not set 772# CONFIG_SMC91X is not set
709# CONFIG_DM9000 is not set 773# CONFIG_DM9000 is not set
774# CONFIG_ENC28J60 is not set
775# CONFIG_SMC911X is not set
776# CONFIG_IBM_NEW_EMAC_ZMII is not set
777# CONFIG_IBM_NEW_EMAC_RGMII is not set
778# CONFIG_IBM_NEW_EMAC_TAH is not set
779# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
780# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
781# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
782# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
783# CONFIG_B44 is not set
784CONFIG_NETDEV_1000=y
785CONFIG_NETDEV_10000=y
710 786
711# 787#
712# Ethernet (1000 Mbit) 788# Wireless LAN
713#
714
715#
716# Ethernet (10000 Mbit)
717#
718
719#
720# Token Ring devices
721# 789#
790# CONFIG_WLAN_PRE80211 is not set
791# CONFIG_WLAN_80211 is not set
792# CONFIG_IWLWIFI_LEDS is not set
722 793
723# 794#
724# Wireless LAN (non-hamradio) 795# USB Network Adapters
725#
726CONFIG_NET_RADIO=y
727
728#
729# Obsolete Wireless cards support (pre-802.11)
730#
731# CONFIG_STRIP is not set
732# CONFIG_PCMCIA_WAVELAN is not set
733# CONFIG_PCMCIA_NETWAVE is not set
734
735#
736# Wireless 802.11 Frequency Hopping cards support
737#
738# CONFIG_PCMCIA_RAYCS is not set
739
740#
741# Wireless 802.11b ISA/PCI cards support
742#
743CONFIG_HERMES=m
744# CONFIG_ATMEL is not set
745
746#
747# Wireless 802.11b Pcmcia/Cardbus cards support
748#
749CONFIG_PCMCIA_HERMES=m
750CONFIG_PCMCIA_SPECTRUM=m
751# CONFIG_AIRO_CS is not set
752# CONFIG_PCMCIA_WL3501 is not set
753CONFIG_HOSTAP=m
754CONFIG_HOSTAP_FIRMWARE=y
755CONFIG_HOSTAP_CS=m
756CONFIG_NET_WIRELESS=y
757
758#
759# PCMCIA network device support
760# 796#
797CONFIG_USB_CATC=m
798CONFIG_USB_KAWETH=m
799CONFIG_USB_PEGASUS=m
800CONFIG_USB_RTL8150=m
801CONFIG_USB_USBNET=m
802CONFIG_USB_NET_AX8817X=m
803CONFIG_USB_NET_CDCETHER=m
804# CONFIG_USB_NET_DM9601 is not set
805# CONFIG_USB_NET_SMSC95XX is not set
806# CONFIG_USB_NET_GL620A is not set
807CONFIG_USB_NET_NET1080=m
808# CONFIG_USB_NET_PLUSB is not set
809# CONFIG_USB_NET_MCS7830 is not set
810# CONFIG_USB_NET_RNDIS_HOST is not set
811# CONFIG_USB_NET_CDC_SUBSET is not set
812CONFIG_USB_NET_ZAURUS=m
761CONFIG_NET_PCMCIA=y 813CONFIG_NET_PCMCIA=y
762# CONFIG_PCMCIA_3C589 is not set 814# CONFIG_PCMCIA_3C589 is not set
763# CONFIG_PCMCIA_3C574 is not set 815# CONFIG_PCMCIA_3C574 is not set
@@ -767,10 +819,6 @@ CONFIG_PCMCIA_PCNET=m
767# CONFIG_PCMCIA_SMC91C92 is not set 819# CONFIG_PCMCIA_SMC91C92 is not set
768# CONFIG_PCMCIA_XIRC2PS is not set 820# CONFIG_PCMCIA_XIRC2PS is not set
769# CONFIG_PCMCIA_AXNET is not set 821# CONFIG_PCMCIA_AXNET is not set
770
771#
772# Wan interfaces
773#
774# CONFIG_WAN is not set 822# CONFIG_WAN is not set
775CONFIG_PPP=m 823CONFIG_PPP=m
776# CONFIG_PPP_MULTILINK is not set 824# CONFIG_PPP_MULTILINK is not set
@@ -781,31 +829,29 @@ CONFIG_PPP_ASYNC=m
781CONFIG_PPP_BSDCOMP=m 829CONFIG_PPP_BSDCOMP=m
782# CONFIG_PPP_MPPE is not set 830# CONFIG_PPP_MPPE is not set
783# CONFIG_PPPOE is not set 831# CONFIG_PPPOE is not set
832# CONFIG_PPPOL2TP is not set
784# CONFIG_SLIP is not set 833# CONFIG_SLIP is not set
785# CONFIG_SHAPER is not set 834CONFIG_SLHC=m
786# CONFIG_NETCONSOLE is not set 835# CONFIG_NETCONSOLE is not set
787# CONFIG_NETPOLL is not set 836# CONFIG_NETPOLL is not set
788# CONFIG_NET_POLL_CONTROLLER is not set 837# CONFIG_NET_POLL_CONTROLLER is not set
789
790#
791# ISDN subsystem
792#
793# CONFIG_ISDN is not set 838# CONFIG_ISDN is not set
794 839
795# 840#
796# Input device support 841# Input device support
797# 842#
798CONFIG_INPUT=y 843CONFIG_INPUT=y
844CONFIG_INPUT_FF_MEMLESS=m
845# CONFIG_INPUT_POLLDEV is not set
799 846
800# 847#
801# Userland interfaces 848# Userland interfaces
802# 849#
803# CONFIG_INPUT_MOUSEDEV is not set 850# CONFIG_INPUT_MOUSEDEV is not set
804# CONFIG_INPUT_JOYDEV is not set 851# CONFIG_INPUT_JOYDEV is not set
805# CONFIG_INPUT_TSDEV is not set
806CONFIG_INPUT_EVDEV=y 852CONFIG_INPUT_EVDEV=y
807# CONFIG_INPUT_EVBUG is not set 853# CONFIG_INPUT_EVBUG is not set
808# CONFIG_INPUT_POWER is not set 854# CONFIG_INPUT_APMPOWER is not set
809 855
810# 856#
811# Input Device Drivers 857# Input Device Drivers
@@ -816,17 +862,35 @@ CONFIG_INPUT_KEYBOARD=y
816# CONFIG_KEYBOARD_LKKBD is not set 862# CONFIG_KEYBOARD_LKKBD is not set
817# CONFIG_KEYBOARD_XTKBD is not set 863# CONFIG_KEYBOARD_XTKBD is not set
818# CONFIG_KEYBOARD_NEWTON is not set 864# CONFIG_KEYBOARD_NEWTON is not set
865# CONFIG_KEYBOARD_STOWAWAY is not set
819# CONFIG_KEYBOARD_CORGI is not set 866# CONFIG_KEYBOARD_CORGI is not set
820CONFIG_KEYBOARD_SPITZ=y 867CONFIG_KEYBOARD_SPITZ=y
868# CONFIG_KEYBOARD_PXA27x is not set
869# CONFIG_KEYBOARD_GPIO is not set
821# CONFIG_INPUT_MOUSE is not set 870# CONFIG_INPUT_MOUSE is not set
822# CONFIG_INPUT_JOYSTICK is not set 871# CONFIG_INPUT_JOYSTICK is not set
872# CONFIG_INPUT_TABLET is not set
823CONFIG_INPUT_TOUCHSCREEN=y 873CONFIG_INPUT_TOUCHSCREEN=y
824CONFIG_TOUCHSCREEN_CORGI=y 874CONFIG_TOUCHSCREEN_ADS7846=y
875# CONFIG_TOUCHSCREEN_CORGI is not set
876# CONFIG_TOUCHSCREEN_FUJITSU is not set
825# CONFIG_TOUCHSCREEN_GUNZE is not set 877# CONFIG_TOUCHSCREEN_GUNZE is not set
826# CONFIG_TOUCHSCREEN_ELO is not set 878# CONFIG_TOUCHSCREEN_ELO is not set
827# CONFIG_TOUCHSCREEN_MTOUCH is not set 879# CONFIG_TOUCHSCREEN_MTOUCH is not set
880# CONFIG_TOUCHSCREEN_INEXIO is not set
828# CONFIG_TOUCHSCREEN_MK712 is not set 881# CONFIG_TOUCHSCREEN_MK712 is not set
882# CONFIG_TOUCHSCREEN_PENMOUNT is not set
883# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
884# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
885# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
886# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
829CONFIG_INPUT_MISC=y 887CONFIG_INPUT_MISC=y
888# CONFIG_INPUT_ATI_REMOTE is not set
889# CONFIG_INPUT_ATI_REMOTE2 is not set
890# CONFIG_INPUT_KEYSPAN_REMOTE is not set
891# CONFIG_INPUT_POWERMATE is not set
892# CONFIG_INPUT_YEALINK is not set
893# CONFIG_INPUT_CM109 is not set
830CONFIG_INPUT_UINPUT=m 894CONFIG_INPUT_UINPUT=m
831 895
832# 896#
@@ -839,8 +903,11 @@ CONFIG_INPUT_UINPUT=m
839# Character devices 903# Character devices
840# 904#
841CONFIG_VT=y 905CONFIG_VT=y
906CONFIG_CONSOLE_TRANSLATIONS=y
842CONFIG_VT_CONSOLE=y 907CONFIG_VT_CONSOLE=y
843CONFIG_HW_CONSOLE=y 908CONFIG_HW_CONSOLE=y
909# CONFIG_VT_HW_CONSOLE_BINDING is not set
910CONFIG_DEVKMEM=y
844# CONFIG_SERIAL_NONSTANDARD is not set 911# CONFIG_SERIAL_NONSTANDARD is not set
845 912
846# 913#
@@ -849,6 +916,7 @@ CONFIG_HW_CONSOLE=y
849CONFIG_SERIAL_8250=m 916CONFIG_SERIAL_8250=m
850CONFIG_SERIAL_8250_CS=m 917CONFIG_SERIAL_8250_CS=m
851CONFIG_SERIAL_8250_NR_UARTS=4 918CONFIG_SERIAL_8250_NR_UARTS=4
919CONFIG_SERIAL_8250_RUNTIME_UARTS=4
852# CONFIG_SERIAL_8250_EXTENDED is not set 920# CONFIG_SERIAL_8250_EXTENDED is not set
853 921
854# 922#
@@ -860,101 +928,253 @@ CONFIG_SERIAL_CORE=y
860CONFIG_SERIAL_CORE_CONSOLE=y 928CONFIG_SERIAL_CORE_CONSOLE=y
861CONFIG_UNIX98_PTYS=y 929CONFIG_UNIX98_PTYS=y
862# CONFIG_LEGACY_PTYS is not set 930# CONFIG_LEGACY_PTYS is not set
863
864#
865# IPMI
866#
867# CONFIG_IPMI_HANDLER is not set 931# CONFIG_IPMI_HANDLER is not set
868 932CONFIG_HW_RANDOM=m
869#
870# Watchdog Cards
871#
872# CONFIG_WATCHDOG is not set
873# CONFIG_NVRAM is not set 933# CONFIG_NVRAM is not set
874# CONFIG_RTC is not set
875# CONFIG_DTLK is not set
876# CONFIG_R3964 is not set 934# CONFIG_R3964 is not set
877 935
878# 936#
879# Ftape, the floppy tape device driver
880#
881
882#
883# PCMCIA character devices 937# PCMCIA character devices
884# 938#
885# CONFIG_SYNCLINK_CS is not set 939# CONFIG_SYNCLINK_CS is not set
886# CONFIG_CARDMAN_4000 is not set 940# CONFIG_CARDMAN_4000 is not set
887# CONFIG_CARDMAN_4040 is not set 941# CONFIG_CARDMAN_4040 is not set
942# CONFIG_IPWIRELESS is not set
888# CONFIG_RAW_DRIVER is not set 943# CONFIG_RAW_DRIVER is not set
889
890#
891# TPM devices
892#
893# CONFIG_TCG_TPM is not set 944# CONFIG_TCG_TPM is not set
894# CONFIG_TELCLOCK is not set
895
896#
897# I2C support
898#
899CONFIG_I2C=y 945CONFIG_I2C=y
946CONFIG_I2C_BOARDINFO=y
900# CONFIG_I2C_CHARDEV is not set 947# CONFIG_I2C_CHARDEV is not set
948CONFIG_I2C_HELPER_AUTO=y
901 949
902# 950#
903# I2C Algorithms 951# I2C Hardware Bus support
904# 952#
905# CONFIG_I2C_ALGOBIT is not set
906# CONFIG_I2C_ALGOPCF is not set
907# CONFIG_I2C_ALGOPCA is not set
908 953
909# 954#
910# I2C Hardware Bus support 955# I2C system bus drivers (mostly embedded / system-on-chip)
911# 956#
957# CONFIG_I2C_GPIO is not set
958# CONFIG_I2C_OCORES is not set
912CONFIG_I2C_PXA=y 959CONFIG_I2C_PXA=y
913# CONFIG_I2C_PXA_SLAVE is not set 960# CONFIG_I2C_PXA_SLAVE is not set
961# CONFIG_I2C_SIMTEC is not set
962
963#
964# External I2C/SMBus adapter drivers
965#
914# CONFIG_I2C_PARPORT_LIGHT is not set 966# CONFIG_I2C_PARPORT_LIGHT is not set
967# CONFIG_I2C_TAOS_EVM is not set
968# CONFIG_I2C_TINY_USB is not set
969
970#
971# Other I2C/SMBus bus drivers
972#
973# CONFIG_I2C_PCA_PLATFORM is not set
915# CONFIG_I2C_STUB is not set 974# CONFIG_I2C_STUB is not set
916# CONFIG_I2C_PCA_ISA is not set
917 975
918# 976#
919# Hardware Monitoring support 977# Miscellaneous I2C Chip support
978#
979# CONFIG_DS1682 is not set
980# CONFIG_AT24 is not set
981# CONFIG_SENSORS_EEPROM is not set
982# CONFIG_SENSORS_PCF8574 is not set
983# CONFIG_PCF8575 is not set
984# CONFIG_SENSORS_PCA9539 is not set
985# CONFIG_SENSORS_PCF8591 is not set
986# CONFIG_TPS65010 is not set
987# CONFIG_SENSORS_MAX6875 is not set
988# CONFIG_SENSORS_TSL2550 is not set
989# CONFIG_I2C_DEBUG_CORE is not set
990# CONFIG_I2C_DEBUG_ALGO is not set
991# CONFIG_I2C_DEBUG_BUS is not set
992# CONFIG_I2C_DEBUG_CHIP is not set
993CONFIG_SPI=y
994# CONFIG_SPI_DEBUG is not set
995CONFIG_SPI_MASTER=y
996
997#
998# SPI Master Controller Drivers
999#
1000# CONFIG_SPI_BITBANG is not set
1001CONFIG_SPI_PXA2XX=y
1002
1003#
1004# SPI Protocol Masters
1005#
1006# CONFIG_SPI_AT25 is not set
1007# CONFIG_SPI_SPIDEV is not set
1008# CONFIG_SPI_TLE62X0 is not set
1009CONFIG_ARCH_REQUIRE_GPIOLIB=y
1010CONFIG_GPIOLIB=y
1011# CONFIG_DEBUG_GPIO is not set
1012# CONFIG_GPIO_SYSFS is not set
1013
1014#
1015# I2C GPIO expanders:
1016#
1017# CONFIG_GPIO_MAX732X is not set
1018# CONFIG_GPIO_PCA953X is not set
1019# CONFIG_GPIO_PCF857X is not set
1020
1021#
1022# PCI GPIO expanders:
1023#
1024
1025#
1026# SPI GPIO expanders:
920# 1027#
1028# CONFIG_GPIO_MAX7301 is not set
1029# CONFIG_GPIO_MCP23S08 is not set
1030# CONFIG_W1 is not set
1031# CONFIG_POWER_SUPPLY is not set
921CONFIG_HWMON=y 1032CONFIG_HWMON=y
922# CONFIG_HWMON_VID is not set 1033# CONFIG_HWMON_VID is not set
1034# CONFIG_SENSORS_AD7414 is not set
1035# CONFIG_SENSORS_AD7418 is not set
1036# CONFIG_SENSORS_ADCXX is not set
1037# CONFIG_SENSORS_ADM1021 is not set
1038# CONFIG_SENSORS_ADM1025 is not set
1039# CONFIG_SENSORS_ADM1026 is not set
1040# CONFIG_SENSORS_ADM1029 is not set
1041# CONFIG_SENSORS_ADM1031 is not set
1042# CONFIG_SENSORS_ADM9240 is not set
1043# CONFIG_SENSORS_ADT7470 is not set
1044# CONFIG_SENSORS_ADT7473 is not set
1045# CONFIG_SENSORS_ATXP1 is not set
1046# CONFIG_SENSORS_DS1621 is not set
1047# CONFIG_SENSORS_F71805F is not set
1048# CONFIG_SENSORS_F71882FG is not set
1049# CONFIG_SENSORS_F75375S is not set
1050# CONFIG_SENSORS_GL518SM is not set
1051# CONFIG_SENSORS_GL520SM is not set
1052# CONFIG_SENSORS_IT87 is not set
1053# CONFIG_SENSORS_LM63 is not set
1054# CONFIG_SENSORS_LM70 is not set
1055# CONFIG_SENSORS_LM75 is not set
1056# CONFIG_SENSORS_LM77 is not set
1057# CONFIG_SENSORS_LM78 is not set
1058# CONFIG_SENSORS_LM80 is not set
1059# CONFIG_SENSORS_LM83 is not set
1060# CONFIG_SENSORS_LM85 is not set
1061# CONFIG_SENSORS_LM87 is not set
1062# CONFIG_SENSORS_LM90 is not set
1063# CONFIG_SENSORS_LM92 is not set
1064# CONFIG_SENSORS_LM93 is not set
1065CONFIG_SENSORS_MAX1111=y
1066# CONFIG_SENSORS_MAX1619 is not set
1067# CONFIG_SENSORS_MAX6650 is not set
1068# CONFIG_SENSORS_PC87360 is not set
1069# CONFIG_SENSORS_PC87427 is not set
1070# CONFIG_SENSORS_DME1737 is not set
1071# CONFIG_SENSORS_SMSC47M1 is not set
1072# CONFIG_SENSORS_SMSC47M192 is not set
1073# CONFIG_SENSORS_SMSC47B397 is not set
1074# CONFIG_SENSORS_ADS7828 is not set
1075# CONFIG_SENSORS_THMC50 is not set
1076# CONFIG_SENSORS_VT1211 is not set
1077# CONFIG_SENSORS_W83781D is not set
1078# CONFIG_SENSORS_W83791D is not set
1079# CONFIG_SENSORS_W83792D is not set
1080# CONFIG_SENSORS_W83793 is not set
1081# CONFIG_SENSORS_W83L785TS is not set
1082# CONFIG_SENSORS_W83L786NG is not set
1083# CONFIG_SENSORS_W83627HF is not set
1084# CONFIG_SENSORS_W83627EHF is not set
923# CONFIG_HWMON_DEBUG_CHIP is not set 1085# CONFIG_HWMON_DEBUG_CHIP is not set
1086# CONFIG_THERMAL is not set
1087# CONFIG_THERMAL_HWMON is not set
1088# CONFIG_WATCHDOG is not set
924 1089
925# 1090#
926# Misc devices 1091# Sonics Silicon Backplane
927# 1092#
1093CONFIG_SSB_POSSIBLE=y
1094# CONFIG_SSB is not set
928 1095
929# 1096#
930# Multimedia Capabilities Port drivers 1097# Multifunction device drivers
931# 1098#
1099# CONFIG_MFD_CORE is not set
1100# CONFIG_MFD_SM501 is not set
1101# CONFIG_MFD_ASIC3 is not set
1102# CONFIG_HTC_EGPIO is not set
1103# CONFIG_HTC_PASIC3 is not set
1104# CONFIG_UCB1400_CORE is not set
1105# CONFIG_MFD_TMIO is not set
1106# CONFIG_MFD_T7L66XB is not set
1107# CONFIG_MFD_TC6387XB is not set
1108# CONFIG_MFD_TC6393XB is not set
1109# CONFIG_MFD_WM8400 is not set
1110# CONFIG_MFD_WM8350_I2C is not set
932 1111
933# 1112#
934# Multimedia devices 1113# Multimedia devices
935# 1114#
1115
1116#
1117# Multimedia core support
1118#
936# CONFIG_VIDEO_DEV is not set 1119# CONFIG_VIDEO_DEV is not set
1120# CONFIG_DVB_CORE is not set
1121# CONFIG_VIDEO_MEDIA is not set
937 1122
938# 1123#
939# Digital Video Broadcasting Devices 1124# Multimedia drivers
940# 1125#
941# CONFIG_DVB is not set 1126# CONFIG_DAB is not set
942 1127
943# 1128#
944# Graphics support 1129# Graphics support
945# 1130#
1131# CONFIG_VGASTATE is not set
1132# CONFIG_VIDEO_OUTPUT_CONTROL is not set
946CONFIG_FB=y 1133CONFIG_FB=y
1134# CONFIG_FIRMWARE_EDID is not set
1135# CONFIG_FB_DDC is not set
1136# CONFIG_FB_BOOT_VESA_SUPPORT is not set
947CONFIG_FB_CFB_FILLRECT=y 1137CONFIG_FB_CFB_FILLRECT=y
948CONFIG_FB_CFB_COPYAREA=y 1138CONFIG_FB_CFB_COPYAREA=y
949CONFIG_FB_CFB_IMAGEBLIT=y 1139CONFIG_FB_CFB_IMAGEBLIT=y
1140# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1141# CONFIG_FB_SYS_FILLRECT is not set
1142# CONFIG_FB_SYS_COPYAREA is not set
1143# CONFIG_FB_SYS_IMAGEBLIT is not set
1144# CONFIG_FB_FOREIGN_ENDIAN is not set
1145# CONFIG_FB_SYS_FOPS is not set
1146# CONFIG_FB_SVGALIB is not set
950# CONFIG_FB_MACMODES is not set 1147# CONFIG_FB_MACMODES is not set
1148# CONFIG_FB_BACKLIGHT is not set
951# CONFIG_FB_MODE_HELPERS is not set 1149# CONFIG_FB_MODE_HELPERS is not set
952# CONFIG_FB_TILEBLITTING is not set 1150# CONFIG_FB_TILEBLITTING is not set
1151
1152#
1153# Frame buffer hardware drivers
1154#
953# CONFIG_FB_S1D13XXX is not set 1155# CONFIG_FB_S1D13XXX is not set
954CONFIG_FB_PXA=y 1156CONFIG_FB_PXA=y
1157# CONFIG_FB_PXA_SMARTPANEL is not set
955# CONFIG_FB_PXA_PARAMETERS is not set 1158# CONFIG_FB_PXA_PARAMETERS is not set
1159# CONFIG_FB_MBX is not set
956# CONFIG_FB_W100 is not set 1160# CONFIG_FB_W100 is not set
957# CONFIG_FB_VIRTUAL is not set 1161# CONFIG_FB_VIRTUAL is not set
1162# CONFIG_FB_METRONOME is not set
1163CONFIG_BACKLIGHT_LCD_SUPPORT=y
1164CONFIG_LCD_CLASS_DEVICE=y
1165CONFIG_LCD_CORGI=y
1166# CONFIG_LCD_LTV350QV is not set
1167# CONFIG_LCD_ILI9320 is not set
1168# CONFIG_LCD_TDO24M is not set
1169# CONFIG_LCD_VGG2432A4 is not set
1170# CONFIG_LCD_PLATFORM is not set
1171CONFIG_BACKLIGHT_CLASS_DEVICE=y
1172# CONFIG_BACKLIGHT_CORGI is not set
1173
1174#
1175# Display device support
1176#
1177# CONFIG_DISPLAY_SUPPORT is not set
958 1178
959# 1179#
960# Console display driver support 1180# Console display driver support
@@ -962,6 +1182,7 @@ CONFIG_FB_PXA=y
962# CONFIG_VGA_CONSOLE is not set 1182# CONFIG_VGA_CONSOLE is not set
963CONFIG_DUMMY_CONSOLE=y 1183CONFIG_DUMMY_CONSOLE=y
964CONFIG_FRAMEBUFFER_CONSOLE=y 1184CONFIG_FRAMEBUFFER_CONSOLE=y
1185# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
965CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y 1186CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
966CONFIG_FONTS=y 1187CONFIG_FONTS=y
967CONFIG_FONT_8x8=y 1188CONFIG_FONT_8x8=y
@@ -974,55 +1195,96 @@ CONFIG_FONT_8x16=y
974# CONFIG_FONT_SUN8x16 is not set 1195# CONFIG_FONT_SUN8x16 is not set
975# CONFIG_FONT_SUN12x22 is not set 1196# CONFIG_FONT_SUN12x22 is not set
976# CONFIG_FONT_10x18 is not set 1197# CONFIG_FONT_10x18 is not set
1198# CONFIG_LOGO is not set
1199# CONFIG_SOUND is not set
1200CONFIG_HID_SUPPORT=y
1201CONFIG_HID=y
1202# CONFIG_HID_DEBUG is not set
1203# CONFIG_HIDRAW is not set
977 1204
978# 1205#
979# Logo configuration 1206# USB Input Devices
980# 1207#
981# CONFIG_LOGO is not set 1208CONFIG_USB_HID=m
982CONFIG_BACKLIGHT_LCD_SUPPORT=y 1209# CONFIG_HID_PID is not set
983CONFIG_BACKLIGHT_CLASS_DEVICE=y 1210# CONFIG_USB_HIDDEV is not set
984CONFIG_BACKLIGHT_DEVICE=y
985CONFIG_LCD_CLASS_DEVICE=y
986CONFIG_LCD_DEVICE=y
987CONFIG_BACKLIGHT_CORGI=y
988 1211
989# 1212#
990# Sound 1213# USB HID Boot Protocol drivers
991# 1214#
992# CONFIG_SOUND is not set 1215CONFIG_USB_KBD=m
1216CONFIG_USB_MOUSE=m
993 1217
994# 1218#
995# USB support 1219# Special HID drivers
996# 1220#
1221CONFIG_HID_COMPAT=y
1222CONFIG_HID_A4TECH=m
1223CONFIG_HID_APPLE=m
1224CONFIG_HID_BELKIN=m
1225CONFIG_HID_BRIGHT=m
1226CONFIG_HID_CHERRY=m
1227CONFIG_HID_CHICONY=m
1228CONFIG_HID_CYPRESS=m
1229CONFIG_HID_DELL=m
1230CONFIG_HID_EZKEY=m
1231CONFIG_HID_GYRATION=m
1232CONFIG_HID_LOGITECH=m
1233# CONFIG_LOGITECH_FF is not set
1234# CONFIG_LOGIRUMBLEPAD2_FF is not set
1235CONFIG_HID_MICROSOFT=m
1236CONFIG_HID_MONTEREY=m
1237CONFIG_HID_PANTHERLORD=m
1238# CONFIG_PANTHERLORD_FF is not set
1239CONFIG_HID_PETALYNX=m
1240CONFIG_HID_SAMSUNG=m
1241CONFIG_HID_SONY=m
1242CONFIG_HID_SUNPLUS=m
1243CONFIG_THRUSTMASTER_FF=m
1244CONFIG_ZEROPLUS_FF=m
1245CONFIG_USB_SUPPORT=y
997CONFIG_USB_ARCH_HAS_HCD=y 1246CONFIG_USB_ARCH_HAS_HCD=y
998CONFIG_USB_ARCH_HAS_OHCI=y 1247CONFIG_USB_ARCH_HAS_OHCI=y
1248# CONFIG_USB_ARCH_HAS_EHCI is not set
999CONFIG_USB=m 1249CONFIG_USB=m
1000# CONFIG_USB_DEBUG is not set 1250# CONFIG_USB_DEBUG is not set
1251# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1001 1252
1002# 1253#
1003# Miscellaneous USB options 1254# Miscellaneous USB options
1004# 1255#
1005CONFIG_USB_DEVICEFS=y 1256CONFIG_USB_DEVICEFS=y
1006# CONFIG_USB_BANDWIDTH is not set 1257CONFIG_USB_DEVICE_CLASS=y
1007# CONFIG_USB_DYNAMIC_MINORS is not set 1258# CONFIG_USB_DYNAMIC_MINORS is not set
1008# CONFIG_USB_SUSPEND is not set 1259# CONFIG_USB_SUSPEND is not set
1009# CONFIG_USB_OTG is not set 1260# CONFIG_USB_OTG is not set
1261# CONFIG_USB_OTG_WHITELIST is not set
1262# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1263CONFIG_USB_MON=y
1010 1264
1011# 1265#
1012# USB Host Controller Drivers 1266# USB Host Controller Drivers
1013# 1267#
1268# CONFIG_USB_C67X00_HCD is not set
1014# CONFIG_USB_ISP116X_HCD is not set 1269# CONFIG_USB_ISP116X_HCD is not set
1270# CONFIG_USB_ISP1760_HCD is not set
1015CONFIG_USB_OHCI_HCD=m 1271CONFIG_USB_OHCI_HCD=m
1016# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1272# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1273# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1017CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1274CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1018CONFIG_USB_SL811_HCD=m 1275CONFIG_USB_SL811_HCD=m
1019CONFIG_USB_SL811_CS=m 1276CONFIG_USB_SL811_CS=m
1277# CONFIG_USB_R8A66597_HCD is not set
1278# CONFIG_USB_MUSB_HDRC is not set
1279# CONFIG_USB_GADGET_MUSB_HDRC is not set
1020 1280
1021# 1281#
1022# USB Device Class drivers 1282# USB Device Class drivers
1023# 1283#
1024CONFIG_USB_ACM=m 1284CONFIG_USB_ACM=m
1025CONFIG_USB_PRINTER=m 1285CONFIG_USB_PRINTER=m
1286# CONFIG_USB_WDM is not set
1287# CONFIG_USB_TMC is not set
1026 1288
1027# 1289#
1028# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1290# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1041,33 +1303,11 @@ CONFIG_USB_STORAGE=m
1041# CONFIG_USB_STORAGE_SDDR09 is not set 1303# CONFIG_USB_STORAGE_SDDR09 is not set
1042# CONFIG_USB_STORAGE_SDDR55 is not set 1304# CONFIG_USB_STORAGE_SDDR55 is not set
1043# CONFIG_USB_STORAGE_JUMPSHOT is not set 1305# CONFIG_USB_STORAGE_JUMPSHOT is not set
1044 1306# CONFIG_USB_STORAGE_ALAUDA is not set
1045# 1307# CONFIG_USB_STORAGE_ONETOUCH is not set
1046# USB Input Devices 1308# CONFIG_USB_STORAGE_KARMA is not set
1047# 1309# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1048CONFIG_USB_HID=m 1310# CONFIG_USB_LIBUSUAL is not set
1049CONFIG_USB_HIDINPUT=y
1050# CONFIG_HID_FF is not set
1051# CONFIG_USB_HIDDEV is not set
1052
1053#
1054# USB HID Boot Protocol drivers
1055#
1056CONFIG_USB_KBD=m
1057CONFIG_USB_MOUSE=m
1058CONFIG_USB_AIPTEK=m
1059CONFIG_USB_WACOM=m
1060# CONFIG_USB_ACECAD is not set
1061CONFIG_USB_KBTAB=m
1062CONFIG_USB_POWERMATE=m
1063CONFIG_USB_MTOUCH=m
1064# CONFIG_USB_ITMTOUCH is not set
1065CONFIG_USB_EGALAX=m
1066# CONFIG_USB_YEALINK is not set
1067CONFIG_USB_XPAD=m
1068CONFIG_USB_ATI_REMOTE=m
1069# CONFIG_USB_KEYSPAN_REMOTE is not set
1070# CONFIG_USB_APPLETOUCH is not set
1071 1311
1072# 1312#
1073# USB Imaging devices 1313# USB Imaging devices
@@ -1076,51 +1316,22 @@ CONFIG_USB_MDC800=m
1076CONFIG_USB_MICROTEK=m 1316CONFIG_USB_MICROTEK=m
1077 1317
1078# 1318#
1079# USB Multimedia devices
1080#
1081CONFIG_USB_DABUSB=m
1082
1083#
1084# Video4Linux support is needed for USB Multimedia device support
1085#
1086
1087#
1088# USB Network Adapters
1089#
1090CONFIG_USB_CATC=m
1091CONFIG_USB_KAWETH=m
1092CONFIG_USB_PEGASUS=m
1093CONFIG_USB_RTL8150=m
1094CONFIG_USB_USBNET=m
1095CONFIG_USB_NET_AX8817X=m
1096CONFIG_USB_NET_CDCETHER=m
1097# CONFIG_USB_NET_GL620A is not set
1098CONFIG_USB_NET_NET1080=m
1099# CONFIG_USB_NET_PLUSB is not set
1100# CONFIG_USB_NET_RNDIS_HOST is not set
1101# CONFIG_USB_NET_CDC_SUBSET is not set
1102CONFIG_USB_NET_ZAURUS=m
1103# CONFIG_USB_ZD1201 is not set
1104CONFIG_USB_MON=y
1105
1106#
1107# USB port drivers 1319# USB port drivers
1108# 1320#
1109
1110#
1111# USB Serial Converter support
1112#
1113CONFIG_USB_SERIAL=m 1321CONFIG_USB_SERIAL=m
1322CONFIG_USB_EZUSB=y
1114CONFIG_USB_SERIAL_GENERIC=y 1323CONFIG_USB_SERIAL_GENERIC=y
1115# CONFIG_USB_SERIAL_AIRPRIME is not set 1324# CONFIG_USB_SERIAL_AIRCABLE is not set
1116# CONFIG_USB_SERIAL_ANYDATA is not set 1325# CONFIG_USB_SERIAL_ARK3116 is not set
1117CONFIG_USB_SERIAL_BELKIN=m 1326CONFIG_USB_SERIAL_BELKIN=m
1327# CONFIG_USB_SERIAL_CH341 is not set
1118# CONFIG_USB_SERIAL_WHITEHEAT is not set 1328# CONFIG_USB_SERIAL_WHITEHEAT is not set
1119CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m 1329CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
1120# CONFIG_USB_SERIAL_CP2101 is not set 1330# CONFIG_USB_SERIAL_CP2101 is not set
1121CONFIG_USB_SERIAL_CYPRESS_M8=m 1331CONFIG_USB_SERIAL_CYPRESS_M8=m
1122CONFIG_USB_SERIAL_EMPEG=m 1332CONFIG_USB_SERIAL_EMPEG=m
1123CONFIG_USB_SERIAL_FTDI_SIO=m 1333CONFIG_USB_SERIAL_FTDI_SIO=m
1334# CONFIG_USB_SERIAL_FUNSOFT is not set
1124CONFIG_USB_SERIAL_VISOR=m 1335CONFIG_USB_SERIAL_VISOR=m
1125CONFIG_USB_SERIAL_IPAQ=m 1336CONFIG_USB_SERIAL_IPAQ=m
1126CONFIG_USB_SERIAL_IR=m 1337CONFIG_USB_SERIAL_IR=m
@@ -1128,6 +1339,7 @@ CONFIG_USB_SERIAL_EDGEPORT=m
1128CONFIG_USB_SERIAL_EDGEPORT_TI=m 1339CONFIG_USB_SERIAL_EDGEPORT_TI=m
1129CONFIG_USB_SERIAL_GARMIN=m 1340CONFIG_USB_SERIAL_GARMIN=m
1130CONFIG_USB_SERIAL_IPW=m 1341CONFIG_USB_SERIAL_IPW=m
1342# CONFIG_USB_SERIAL_IUU is not set
1131CONFIG_USB_SERIAL_KEYSPAN_PDA=m 1343CONFIG_USB_SERIAL_KEYSPAN_PDA=m
1132CONFIG_USB_SERIAL_KEYSPAN=m 1344CONFIG_USB_SERIAL_KEYSPAN=m
1133# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set 1345# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
@@ -1145,49 +1357,66 @@ CONFIG_USB_SERIAL_KEYSPAN=m
1145CONFIG_USB_SERIAL_KLSI=m 1357CONFIG_USB_SERIAL_KLSI=m
1146CONFIG_USB_SERIAL_KOBIL_SCT=m 1358CONFIG_USB_SERIAL_KOBIL_SCT=m
1147CONFIG_USB_SERIAL_MCT_U232=m 1359CONFIG_USB_SERIAL_MCT_U232=m
1360# CONFIG_USB_SERIAL_MOS7720 is not set
1361# CONFIG_USB_SERIAL_MOS7840 is not set
1362# CONFIG_USB_SERIAL_MOTOROLA is not set
1363# CONFIG_USB_SERIAL_NAVMAN is not set
1148CONFIG_USB_SERIAL_PL2303=m 1364CONFIG_USB_SERIAL_PL2303=m
1365# CONFIG_USB_SERIAL_OTI6858 is not set
1366# CONFIG_USB_SERIAL_SPCP8X5 is not set
1149# CONFIG_USB_SERIAL_HP4X is not set 1367# CONFIG_USB_SERIAL_HP4X is not set
1150CONFIG_USB_SERIAL_SAFE=m 1368CONFIG_USB_SERIAL_SAFE=m
1151# CONFIG_USB_SERIAL_SAFE_PADDED is not set 1369# CONFIG_USB_SERIAL_SAFE_PADDED is not set
1370# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
1152CONFIG_USB_SERIAL_TI=m 1371CONFIG_USB_SERIAL_TI=m
1153CONFIG_USB_SERIAL_CYBERJACK=m 1372CONFIG_USB_SERIAL_CYBERJACK=m
1154CONFIG_USB_SERIAL_XIRCOM=m 1373CONFIG_USB_SERIAL_XIRCOM=m
1155# CONFIG_USB_SERIAL_OPTION is not set 1374# CONFIG_USB_SERIAL_OPTION is not set
1156CONFIG_USB_SERIAL_OMNINET=m 1375CONFIG_USB_SERIAL_OMNINET=m
1157CONFIG_USB_EZUSB=y 1376# CONFIG_USB_SERIAL_DEBUG is not set
1158 1377
1159# 1378#
1160# USB Miscellaneous drivers 1379# USB Miscellaneous drivers
1161# 1380#
1162CONFIG_USB_EMI62=m 1381CONFIG_USB_EMI62=m
1163CONFIG_USB_EMI26=m 1382CONFIG_USB_EMI26=m
1164CONFIG_USB_AUERSWALD=m 1383# CONFIG_USB_ADUTUX is not set
1384# CONFIG_USB_SEVSEG is not set
1165CONFIG_USB_RIO500=m 1385CONFIG_USB_RIO500=m
1166CONFIG_USB_LEGOTOWER=m 1386CONFIG_USB_LEGOTOWER=m
1167CONFIG_USB_LCD=m 1387CONFIG_USB_LCD=m
1388# CONFIG_USB_BERRY_CHARGE is not set
1168CONFIG_USB_LED=m 1389CONFIG_USB_LED=m
1390# CONFIG_USB_CYPRESS_CY7C63 is not set
1169CONFIG_USB_CYTHERM=m 1391CONFIG_USB_CYTHERM=m
1170CONFIG_USB_PHIDGETKIT=m 1392# CONFIG_USB_PHIDGET is not set
1171CONFIG_USB_PHIDGETSERVO=m
1172CONFIG_USB_IDMOUSE=m 1393CONFIG_USB_IDMOUSE=m
1394# CONFIG_USB_FTDI_ELAN is not set
1395# CONFIG_USB_APPLEDISPLAY is not set
1173# CONFIG_USB_LD is not set 1396# CONFIG_USB_LD is not set
1397# CONFIG_USB_TRANCEVIBRATOR is not set
1398# CONFIG_USB_IOWARRIOR is not set
1174# CONFIG_USB_TEST is not set 1399# CONFIG_USB_TEST is not set
1175 1400# CONFIG_USB_ISIGHTFW is not set
1176# 1401# CONFIG_USB_VST is not set
1177# USB DSL modem support
1178#
1179
1180#
1181# USB Gadget Support
1182#
1183CONFIG_USB_GADGET=m 1402CONFIG_USB_GADGET=m
1403# CONFIG_USB_GADGET_DEBUG is not set
1184# CONFIG_USB_GADGET_DEBUG_FILES is not set 1404# CONFIG_USB_GADGET_DEBUG_FILES is not set
1405CONFIG_USB_GADGET_VBUS_DRAW=2
1185CONFIG_USB_GADGET_SELECTED=y 1406CONFIG_USB_GADGET_SELECTED=y
1186# CONFIG_USB_GADGET_NET2280 is not set 1407# CONFIG_USB_GADGET_AT91 is not set
1187# CONFIG_USB_GADGET_PXA2XX is not set 1408# CONFIG_USB_GADGET_ATMEL_USBA is not set
1188# CONFIG_USB_GADGET_GOKU is not set 1409# CONFIG_USB_GADGET_FSL_USB2 is not set
1189# CONFIG_USB_GADGET_LH7A40X is not set 1410# CONFIG_USB_GADGET_LH7A40X is not set
1190# CONFIG_USB_GADGET_OMAP is not set 1411# CONFIG_USB_GADGET_OMAP is not set
1412# CONFIG_USB_GADGET_PXA25X is not set
1413# CONFIG_USB_GADGET_PXA27X is not set
1414# CONFIG_USB_GADGET_S3C2410 is not set
1415# CONFIG_USB_GADGET_M66592 is not set
1416# CONFIG_USB_GADGET_AMD5536UDC is not set
1417# CONFIG_USB_GADGET_FSL_QE is not set
1418# CONFIG_USB_GADGET_NET2280 is not set
1419# CONFIG_USB_GADGET_GOKU is not set
1191CONFIG_USB_GADGET_DUMMY_HCD=y 1420CONFIG_USB_GADGET_DUMMY_HCD=y
1192CONFIG_USB_DUMMY_HCD=m 1421CONFIG_USB_DUMMY_HCD=m
1193CONFIG_USB_GADGET_DUALSPEED=y 1422CONFIG_USB_GADGET_DUALSPEED=y
@@ -1198,15 +1427,42 @@ CONFIG_USB_GADGETFS=m
1198CONFIG_USB_FILE_STORAGE=m 1427CONFIG_USB_FILE_STORAGE=m
1199# CONFIG_USB_FILE_STORAGE_TEST is not set 1428# CONFIG_USB_FILE_STORAGE_TEST is not set
1200CONFIG_USB_G_SERIAL=m 1429CONFIG_USB_G_SERIAL=m
1430# CONFIG_USB_MIDI_GADGET is not set
1431# CONFIG_USB_G_PRINTER is not set
1432# CONFIG_USB_CDC_COMPOSITE is not set
1433CONFIG_MMC=y
1434# CONFIG_MMC_DEBUG is not set
1435# CONFIG_MMC_UNSAFE_RESUME is not set
1201 1436
1202# 1437#
1203# MMC/SD Card support 1438# MMC/SD/SDIO Card Drivers
1204# 1439#
1205CONFIG_MMC=y
1206# CONFIG_MMC_DEBUG is not set
1207CONFIG_MMC_BLOCK=y 1440CONFIG_MMC_BLOCK=y
1441CONFIG_MMC_BLOCK_BOUNCE=y
1442# CONFIG_SDIO_UART is not set
1443# CONFIG_MMC_TEST is not set
1444
1445#
1446# MMC/SD/SDIO Host Controller Drivers
1447#
1208CONFIG_MMC_PXA=y 1448CONFIG_MMC_PXA=y
1209# CONFIG_MMC_WBSD is not set 1449# CONFIG_MMC_SDHCI is not set
1450# CONFIG_MMC_SPI is not set
1451# CONFIG_MEMSTICK is not set
1452# CONFIG_ACCESSIBILITY is not set
1453# CONFIG_NEW_LEDS is not set
1454CONFIG_RTC_LIB=y
1455# CONFIG_RTC_CLASS is not set
1456# CONFIG_DMADEVICES is not set
1457
1458#
1459# Voltage and Current regulators
1460#
1461# CONFIG_REGULATOR is not set
1462# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
1463# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
1464# CONFIG_REGULATOR_BQ24022 is not set
1465# CONFIG_UIO is not set
1210 1466
1211# 1467#
1212# File systems 1468# File systems
@@ -1218,18 +1474,19 @@ CONFIG_EXT2_FS_SECURITY=y
1218# CONFIG_EXT2_FS_XIP is not set 1474# CONFIG_EXT2_FS_XIP is not set
1219CONFIG_EXT3_FS=y 1475CONFIG_EXT3_FS=y
1220# CONFIG_EXT3_FS_XATTR is not set 1476# CONFIG_EXT3_FS_XATTR is not set
1477# CONFIG_EXT4_FS is not set
1221CONFIG_JBD=y 1478CONFIG_JBD=y
1222# CONFIG_JBD_DEBUG is not set
1223CONFIG_FS_MBCACHE=y 1479CONFIG_FS_MBCACHE=y
1224# CONFIG_REISERFS_FS is not set 1480# CONFIG_REISERFS_FS is not set
1225# CONFIG_JFS_FS is not set 1481# CONFIG_JFS_FS is not set
1226CONFIG_FS_POSIX_ACL=y 1482CONFIG_FS_POSIX_ACL=y
1483CONFIG_FILE_LOCKING=y
1227# CONFIG_XFS_FS is not set 1484# CONFIG_XFS_FS is not set
1228# CONFIG_MINIX_FS is not set 1485# CONFIG_OCFS2_FS is not set
1229# CONFIG_ROMFS_FS is not set 1486CONFIG_DNOTIFY=y
1230CONFIG_INOTIFY=y 1487CONFIG_INOTIFY=y
1488CONFIG_INOTIFY_USER=y
1231# CONFIG_QUOTA is not set 1489# CONFIG_QUOTA is not set
1232CONFIG_DNOTIFY=y
1233# CONFIG_AUTOFS_FS is not set 1490# CONFIG_AUTOFS_FS is not set
1234# CONFIG_AUTOFS4_FS is not set 1491# CONFIG_AUTOFS4_FS is not set
1235# CONFIG_FUSE_FS is not set 1492# CONFIG_FUSE_FS is not set
@@ -1254,11 +1511,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1254# Pseudo filesystems 1511# Pseudo filesystems
1255# 1512#
1256CONFIG_PROC_FS=y 1513CONFIG_PROC_FS=y
1514CONFIG_PROC_SYSCTL=y
1515CONFIG_PROC_PAGE_MONITOR=y
1257CONFIG_SYSFS=y 1516CONFIG_SYSFS=y
1258CONFIG_TMPFS=y 1517CONFIG_TMPFS=y
1518# CONFIG_TMPFS_POSIX_ACL is not set
1259# CONFIG_HUGETLB_PAGE is not set 1519# CONFIG_HUGETLB_PAGE is not set
1260CONFIG_RAMFS=y 1520# CONFIG_CONFIGFS_FS is not set
1261# CONFIG_RELAYFS_FS is not set
1262 1521
1263# 1522#
1264# Miscellaneous filesystems 1523# Miscellaneous filesystems
@@ -1270,39 +1529,42 @@ CONFIG_RAMFS=y
1270# CONFIG_BEFS_FS is not set 1529# CONFIG_BEFS_FS is not set
1271# CONFIG_BFS_FS is not set 1530# CONFIG_BFS_FS is not set
1272# CONFIG_EFS_FS is not set 1531# CONFIG_EFS_FS is not set
1273# CONFIG_JFFS_FS is not set
1274CONFIG_JFFS2_FS=y 1532CONFIG_JFFS2_FS=y
1275CONFIG_JFFS2_FS_DEBUG=0 1533CONFIG_JFFS2_FS_DEBUG=0
1276CONFIG_JFFS2_FS_WRITEBUFFER=y 1534CONFIG_JFFS2_FS_WRITEBUFFER=y
1535# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1277CONFIG_JFFS2_SUMMARY=y 1536CONFIG_JFFS2_SUMMARY=y
1537# CONFIG_JFFS2_FS_XATTR is not set
1278CONFIG_JFFS2_COMPRESSION_OPTIONS=y 1538CONFIG_JFFS2_COMPRESSION_OPTIONS=y
1279CONFIG_JFFS2_ZLIB=y 1539CONFIG_JFFS2_ZLIB=y
1540# CONFIG_JFFS2_LZO is not set
1280CONFIG_JFFS2_RTIME=y 1541CONFIG_JFFS2_RTIME=y
1281CONFIG_JFFS2_RUBIN=y 1542CONFIG_JFFS2_RUBIN=y
1282# CONFIG_JFFS2_CMODE_NONE is not set 1543# CONFIG_JFFS2_CMODE_NONE is not set
1283CONFIG_JFFS2_CMODE_PRIORITY=y 1544CONFIG_JFFS2_CMODE_PRIORITY=y
1284# CONFIG_JFFS2_CMODE_SIZE is not set 1545# CONFIG_JFFS2_CMODE_SIZE is not set
1546# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
1285CONFIG_CRAMFS=m 1547CONFIG_CRAMFS=m
1286# CONFIG_VXFS_FS is not set 1548# CONFIG_VXFS_FS is not set
1549# CONFIG_MINIX_FS is not set
1550# CONFIG_OMFS_FS is not set
1287# CONFIG_HPFS_FS is not set 1551# CONFIG_HPFS_FS is not set
1288# CONFIG_QNX4FS_FS is not set 1552# CONFIG_QNX4FS_FS is not set
1553# CONFIG_ROMFS_FS is not set
1289# CONFIG_SYSV_FS is not set 1554# CONFIG_SYSV_FS is not set
1290# CONFIG_UFS_FS is not set 1555# CONFIG_UFS_FS is not set
1291 1556CONFIG_NETWORK_FILESYSTEMS=y
1292#
1293# Network File Systems
1294#
1295CONFIG_NFS_FS=m 1557CONFIG_NFS_FS=m
1296CONFIG_NFS_V3=y 1558CONFIG_NFS_V3=y
1297# CONFIG_NFS_V3_ACL is not set 1559# CONFIG_NFS_V3_ACL is not set
1298CONFIG_NFS_V4=y 1560CONFIG_NFS_V4=y
1299# CONFIG_NFS_DIRECTIO is not set
1300# CONFIG_NFSD is not set 1561# CONFIG_NFSD is not set
1301CONFIG_LOCKD=m 1562CONFIG_LOCKD=m
1302CONFIG_LOCKD_V4=y 1563CONFIG_LOCKD_V4=y
1303CONFIG_NFS_COMMON=y 1564CONFIG_NFS_COMMON=y
1304CONFIG_SUNRPC=m 1565CONFIG_SUNRPC=m
1305CONFIG_SUNRPC_GSS=m 1566CONFIG_SUNRPC_GSS=m
1567# CONFIG_SUNRPC_REGISTER_V4 is not set
1306CONFIG_RPCSEC_GSS_KRB5=m 1568CONFIG_RPCSEC_GSS_KRB5=m
1307# CONFIG_RPCSEC_GSS_SPKM3 is not set 1569# CONFIG_RPCSEC_GSS_SPKM3 is not set
1308CONFIG_SMB_FS=m 1570CONFIG_SMB_FS=m
@@ -1312,7 +1574,6 @@ CONFIG_SMB_NLS_REMOTE="cp437"
1312# CONFIG_NCP_FS is not set 1574# CONFIG_NCP_FS is not set
1313# CONFIG_CODA_FS is not set 1575# CONFIG_CODA_FS is not set
1314# CONFIG_AFS_FS is not set 1576# CONFIG_AFS_FS is not set
1315# CONFIG_9P_FS is not set
1316 1577
1317# 1578#
1318# Partition Types 1579# Partition Types
@@ -1332,11 +1593,9 @@ CONFIG_MSDOS_PARTITION=y
1332# CONFIG_SGI_PARTITION is not set 1593# CONFIG_SGI_PARTITION is not set
1333# CONFIG_ULTRIX_PARTITION is not set 1594# CONFIG_ULTRIX_PARTITION is not set
1334# CONFIG_SUN_PARTITION is not set 1595# CONFIG_SUN_PARTITION is not set
1596# CONFIG_KARMA_PARTITION is not set
1335# CONFIG_EFI_PARTITION is not set 1597# CONFIG_EFI_PARTITION is not set
1336 1598# CONFIG_SYSV68_PARTITION is not set
1337#
1338# Native Language Support
1339#
1340CONFIG_NLS=y 1599CONFIG_NLS=y
1341CONFIG_NLS_DEFAULT="cp437" 1600CONFIG_NLS_DEFAULT="cp437"
1342CONFIG_NLS_CODEPAGE_437=y 1601CONFIG_NLS_CODEPAGE_437=y
@@ -1377,35 +1636,71 @@ CONFIG_NLS_ISO8859_1=y
1377# CONFIG_NLS_KOI8_R is not set 1636# CONFIG_NLS_KOI8_R is not set
1378# CONFIG_NLS_KOI8_U is not set 1637# CONFIG_NLS_KOI8_U is not set
1379CONFIG_NLS_UTF8=y 1638CONFIG_NLS_UTF8=y
1380 1639# CONFIG_DLM is not set
1381#
1382# Profiling support
1383#
1384CONFIG_PROFILING=y
1385CONFIG_OPROFILE=m
1386 1640
1387# 1641#
1388# Kernel hacking 1642# Kernel hacking
1389# 1643#
1390# CONFIG_PRINTK_TIME is not set 1644# CONFIG_PRINTK_TIME is not set
1391CONFIG_DEBUG_KERNEL=y 1645CONFIG_ENABLE_WARN_DEPRECATED=y
1646CONFIG_ENABLE_MUST_CHECK=y
1647CONFIG_FRAME_WARN=1024
1392CONFIG_MAGIC_SYSRQ=y 1648CONFIG_MAGIC_SYSRQ=y
1393CONFIG_LOG_BUF_SHIFT=14 1649# CONFIG_UNUSED_SYMBOLS is not set
1650# CONFIG_DEBUG_FS is not set
1651# CONFIG_HEADERS_CHECK is not set
1652CONFIG_DEBUG_KERNEL=y
1653# CONFIG_DEBUG_SHIRQ is not set
1394CONFIG_DETECT_SOFTLOCKUP=y 1654CONFIG_DETECT_SOFTLOCKUP=y
1655# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1656CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1657CONFIG_SCHED_DEBUG=y
1395# CONFIG_SCHEDSTATS is not set 1658# CONFIG_SCHEDSTATS is not set
1396# CONFIG_DEBUG_SLAB is not set 1659# CONFIG_TIMER_STATS is not set
1660# CONFIG_DEBUG_OBJECTS is not set
1661# CONFIG_SLUB_DEBUG_ON is not set
1662# CONFIG_SLUB_STATS is not set
1397# CONFIG_DEBUG_PREEMPT is not set 1663# CONFIG_DEBUG_PREEMPT is not set
1664# CONFIG_DEBUG_RT_MUTEXES is not set
1665# CONFIG_RT_MUTEX_TESTER is not set
1398# CONFIG_DEBUG_SPINLOCK is not set 1666# CONFIG_DEBUG_SPINLOCK is not set
1667# CONFIG_DEBUG_MUTEXES is not set
1668# CONFIG_DEBUG_LOCK_ALLOC is not set
1669# CONFIG_PROVE_LOCKING is not set
1670# CONFIG_LOCK_STAT is not set
1399# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1671# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1672# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1400# CONFIG_DEBUG_KOBJECT is not set 1673# CONFIG_DEBUG_KOBJECT is not set
1401CONFIG_DEBUG_BUGVERBOSE=y 1674CONFIG_DEBUG_BUGVERBOSE=y
1402# CONFIG_DEBUG_INFO is not set 1675# CONFIG_DEBUG_INFO is not set
1403# CONFIG_DEBUG_FS is not set
1404# CONFIG_DEBUG_VM is not set 1676# CONFIG_DEBUG_VM is not set
1677# CONFIG_DEBUG_WRITECOUNT is not set
1678# CONFIG_DEBUG_MEMORY_INIT is not set
1679# CONFIG_DEBUG_LIST is not set
1680# CONFIG_DEBUG_SG is not set
1405CONFIG_FRAME_POINTER=y 1681CONFIG_FRAME_POINTER=y
1682# CONFIG_BOOT_PRINTK_DELAY is not set
1406# CONFIG_RCU_TORTURE_TEST is not set 1683# CONFIG_RCU_TORTURE_TEST is not set
1684# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1685# CONFIG_BACKTRACE_SELF_TEST is not set
1686# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1687# CONFIG_FAULT_INJECTION is not set
1688# CONFIG_LATENCYTOP is not set
1689# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1690CONFIG_HAVE_FTRACE=y
1691CONFIG_HAVE_DYNAMIC_FTRACE=y
1692# CONFIG_FTRACE is not set
1693# CONFIG_IRQSOFF_TRACER is not set
1694# CONFIG_PREEMPT_TRACER is not set
1695# CONFIG_SCHED_TRACER is not set
1696# CONFIG_CONTEXT_SWITCH_TRACER is not set
1697# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1698# CONFIG_SAMPLES is not set
1699CONFIG_HAVE_ARCH_KGDB=y
1700# CONFIG_KGDB is not set
1407# CONFIG_DEBUG_USER is not set 1701# CONFIG_DEBUG_USER is not set
1408CONFIG_DEBUG_ERRORS=y 1702CONFIG_DEBUG_ERRORS=y
1703# CONFIG_DEBUG_STACK_USAGE is not set
1409CONFIG_DEBUG_LL=y 1704CONFIG_DEBUG_LL=y
1410# CONFIG_DEBUG_ICEDCC is not set 1705# CONFIG_DEBUG_ICEDCC is not set
1411 1706
@@ -1414,46 +1709,113 @@ CONFIG_DEBUG_LL=y
1414# 1709#
1415# CONFIG_KEYS is not set 1710# CONFIG_KEYS is not set
1416# CONFIG_SECURITY is not set 1711# CONFIG_SECURITY is not set
1712# CONFIG_SECURITYFS is not set
1713# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1714CONFIG_CRYPTO=y
1417 1715
1418# 1716#
1419# Cryptographic options 1717# Crypto core or helper
1420# 1718#
1421CONFIG_CRYPTO=y 1719# CONFIG_CRYPTO_FIPS is not set
1422CONFIG_CRYPTO_HMAC=y 1720CONFIG_CRYPTO_ALGAPI=y
1721CONFIG_CRYPTO_AEAD=y
1722CONFIG_CRYPTO_BLKCIPHER=y
1723CONFIG_CRYPTO_HASH=y
1724CONFIG_CRYPTO_RNG=y
1725CONFIG_CRYPTO_MANAGER=y
1726# CONFIG_CRYPTO_GF128MUL is not set
1423CONFIG_CRYPTO_NULL=m 1727CONFIG_CRYPTO_NULL=m
1728# CONFIG_CRYPTO_CRYPTD is not set
1729CONFIG_CRYPTO_AUTHENC=m
1730CONFIG_CRYPTO_TEST=m
1731
1732#
1733# Authenticated Encryption with Associated Data
1734#
1735# CONFIG_CRYPTO_CCM is not set
1736# CONFIG_CRYPTO_GCM is not set
1737# CONFIG_CRYPTO_SEQIV is not set
1738
1739#
1740# Block modes
1741#
1742CONFIG_CRYPTO_CBC=m
1743# CONFIG_CRYPTO_CTR is not set
1744# CONFIG_CRYPTO_CTS is not set
1745CONFIG_CRYPTO_ECB=m
1746# CONFIG_CRYPTO_LRW is not set
1747# CONFIG_CRYPTO_PCBC is not set
1748# CONFIG_CRYPTO_XTS is not set
1749
1750#
1751# Hash modes
1752#
1753CONFIG_CRYPTO_HMAC=y
1754# CONFIG_CRYPTO_XCBC is not set
1755
1756#
1757# Digest
1758#
1759CONFIG_CRYPTO_CRC32C=m
1424CONFIG_CRYPTO_MD4=m 1760CONFIG_CRYPTO_MD4=m
1425CONFIG_CRYPTO_MD5=m 1761CONFIG_CRYPTO_MD5=m
1762CONFIG_CRYPTO_MICHAEL_MIC=m
1763# CONFIG_CRYPTO_RMD128 is not set
1764# CONFIG_CRYPTO_RMD160 is not set
1765# CONFIG_CRYPTO_RMD256 is not set
1766# CONFIG_CRYPTO_RMD320 is not set
1426CONFIG_CRYPTO_SHA1=m 1767CONFIG_CRYPTO_SHA1=m
1427CONFIG_CRYPTO_SHA256=m 1768CONFIG_CRYPTO_SHA256=m
1428CONFIG_CRYPTO_SHA512=m 1769CONFIG_CRYPTO_SHA512=m
1429CONFIG_CRYPTO_WP512=m
1430# CONFIG_CRYPTO_TGR192 is not set 1770# CONFIG_CRYPTO_TGR192 is not set
1431CONFIG_CRYPTO_DES=m 1771CONFIG_CRYPTO_WP512=m
1432CONFIG_CRYPTO_BLOWFISH=m 1772
1433CONFIG_CRYPTO_TWOFISH=m 1773#
1434CONFIG_CRYPTO_SERPENT=m 1774# Ciphers
1775#
1435CONFIG_CRYPTO_AES=m 1776CONFIG_CRYPTO_AES=m
1777CONFIG_CRYPTO_ANUBIS=m
1778CONFIG_CRYPTO_ARC4=m
1779CONFIG_CRYPTO_BLOWFISH=m
1780# CONFIG_CRYPTO_CAMELLIA is not set
1436CONFIG_CRYPTO_CAST5=m 1781CONFIG_CRYPTO_CAST5=m
1437CONFIG_CRYPTO_CAST6=m 1782CONFIG_CRYPTO_CAST6=m
1438CONFIG_CRYPTO_TEA=m 1783CONFIG_CRYPTO_DES=m
1439CONFIG_CRYPTO_ARC4=m 1784# CONFIG_CRYPTO_FCRYPT is not set
1440CONFIG_CRYPTO_KHAZAD=m 1785CONFIG_CRYPTO_KHAZAD=m
1441CONFIG_CRYPTO_ANUBIS=m 1786# CONFIG_CRYPTO_SALSA20 is not set
1787# CONFIG_CRYPTO_SEED is not set
1788CONFIG_CRYPTO_SERPENT=m
1789CONFIG_CRYPTO_TEA=m
1790CONFIG_CRYPTO_TWOFISH=m
1791CONFIG_CRYPTO_TWOFISH_COMMON=m
1792
1793#
1794# Compression
1795#
1442CONFIG_CRYPTO_DEFLATE=m 1796CONFIG_CRYPTO_DEFLATE=m
1443CONFIG_CRYPTO_MICHAEL_MIC=m 1797# CONFIG_CRYPTO_LZO is not set
1444CONFIG_CRYPTO_CRC32C=m
1445CONFIG_CRYPTO_TEST=m
1446 1798
1447# 1799#
1448# Hardware crypto devices 1800# Random Number Generation
1449# 1801#
1802# CONFIG_CRYPTO_ANSI_CPRNG is not set
1803CONFIG_CRYPTO_HW=y
1450 1804
1451# 1805#
1452# Library routines 1806# Library routines
1453# 1807#
1808CONFIG_BITREVERSE=y
1454CONFIG_CRC_CCITT=y 1809CONFIG_CRC_CCITT=y
1455# CONFIG_CRC16 is not set 1810# CONFIG_CRC16 is not set
1811# CONFIG_CRC_T10DIF is not set
1812# CONFIG_CRC_ITU_T is not set
1456CONFIG_CRC32=y 1813CONFIG_CRC32=y
1814# CONFIG_CRC7 is not set
1457CONFIG_LIBCRC32C=m 1815CONFIG_LIBCRC32C=m
1458CONFIG_ZLIB_INFLATE=y 1816CONFIG_ZLIB_INFLATE=y
1459CONFIG_ZLIB_DEFLATE=y 1817CONFIG_ZLIB_DEFLATE=y
1818CONFIG_PLIST=y
1819CONFIG_HAS_IOMEM=y
1820CONFIG_HAS_IOPORT=y
1821CONFIG_HAS_DMA=y
diff --git a/arch/arm/configs/trizeps4_defconfig b/arch/arm/configs/trizeps4_defconfig
index 8b7a431a8bfc..9033d147f052 100644
--- a/arch/arm/configs/trizeps4_defconfig
+++ b/arch/arm/configs/trizeps4_defconfig
@@ -147,6 +147,7 @@ CONFIG_ARCH_PXA=y
147# CONFIG_MACH_MAINSTONE is not set 147# CONFIG_MACH_MAINSTONE is not set
148# CONFIG_ARCH_PXA_IDP is not set 148# CONFIG_ARCH_PXA_IDP is not set
149# CONFIG_PXA_SHARPSL is not set 149# CONFIG_PXA_SHARPSL is not set
150CONFIG_TRIZEPS_PXA=y
150CONFIG_MACH_TRIZEPS4=y 151CONFIG_MACH_TRIZEPS4=y
151CONFIG_MACH_TRIZEPS4_CONXS=y 152CONFIG_MACH_TRIZEPS4_CONXS=y
152# CONFIG_MACH_TRIZEPS4_ANY is not set 153# CONFIG_MACH_TRIZEPS4_ANY is not set
diff --git a/arch/arm/include/asm/div64.h b/arch/arm/include/asm/div64.h
index 5001390be958..d3f0a9eee9f6 100644
--- a/arch/arm/include/asm/div64.h
+++ b/arch/arm/include/asm/div64.h
@@ -165,7 +165,7 @@
165 __res = __m; \ 165 __res = __m; \
166 asm ( "umlal %Q0, %R0, %Q1, %Q2\n\t" \ 166 asm ( "umlal %Q0, %R0, %Q1, %Q2\n\t" \
167 "mov %Q0, #0" \ 167 "mov %Q0, #0" \
168 : "+r" (__res) \ 168 : "+&r" (__res) \
169 : "r" (__m), "r" (__n) \ 169 : "r" (__m), "r" (__n) \
170 : "cc" ); \ 170 : "cc" ); \
171 } else { \ 171 } else { \
@@ -182,7 +182,7 @@
182 "umlal %R0, %Q0, %Q1, %R2\n\t" \ 182 "umlal %R0, %Q0, %Q1, %R2\n\t" \
183 "mov %R0, #0\n\t" \ 183 "mov %R0, #0\n\t" \
184 "umlal %Q0, %R0, %R1, %R2" \ 184 "umlal %Q0, %R0, %R1, %R2" \
185 : "+r" (__res) \ 185 : "+&r" (__res) \
186 : "r" (__m), "r" (__n) \ 186 : "r" (__m), "r" (__n) \
187 : "cc" ); \ 187 : "cc" ); \
188 } else { \ 188 } else { \
@@ -192,7 +192,7 @@
192 "adds %Q0, %1, %Q0\n\t" \ 192 "adds %Q0, %1, %Q0\n\t" \
193 "adc %R0, %R0, #0\n\t" \ 193 "adc %R0, %R0, #0\n\t" \
194 "umlal %Q0, %R0, %R2, %R3" \ 194 "umlal %Q0, %R0, %R2, %R3" \
195 : "+r" (__res), "+r" (__z) \ 195 : "+&r" (__res), "+&r" (__z) \
196 : "r" (__m), "r" (__n) \ 196 : "r" (__m), "r" (__n) \
197 : "cc" ); \ 197 : "cc" ); \
198 } \ 198 } \
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c
index 7e5ebb5bdd17..9b0447c3d59b 100644
--- a/arch/arm/mach-at91/gpio.c
+++ b/arch/arm/mach-at91/gpio.c
@@ -404,6 +404,7 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
404 } 404 }
405 405
406 pin = bank->chipbase; 406 pin = bank->chipbase;
407 gpio = &irq_desc[pin];
407 408
408 while (isr) { 409 while (isr) {
409 if (isr & 1) { 410 if (isr & 1) {
diff --git a/arch/arm/mach-clps711x/include/mach/memory.h b/arch/arm/mach-clps711x/include/mach/memory.h
index 71c2fa70c8e8..98ec30c97bbe 100644
--- a/arch/arm/mach-clps711x/include/mach/memory.h
+++ b/arch/arm/mach-clps711x/include/mach/memory.h
@@ -89,6 +89,8 @@
89 * node 3: 0xd8000000 - 0xdfffffff 89 * node 3: 0xd8000000 - 0xdfffffff
90 */ 90 */
91#define NODE_MEM_SIZE_BITS 24 91#define NODE_MEM_SIZE_BITS 24
92#define SECTION_SIZE_BITS 24
93#define MAX_PHYSMEM_BITS 32
92 94
93#endif 95#endif
94 96
diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig
index db8b5fe06c0d..2c5a02b8520e 100644
--- a/arch/arm/mach-ixp4xx/Kconfig
+++ b/arch/arm/mach-ixp4xx/Kconfig
@@ -167,11 +167,6 @@ config MACH_GTWX5715
167 167
168comment "IXP4xx Options" 168comment "IXP4xx Options"
169 169
170config DMABOUNCE
171 bool
172 default y
173 depends on PCI
174
175config IXP4XX_INDIRECT_PCI 170config IXP4XX_INDIRECT_PCI
176 bool "Use indirect PCI memory access" 171 bool "Use indirect PCI memory access"
177 depends on PCI 172 depends on PCI
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index e14bf40bfb07..b96c55dad343 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -2,4 +2,4 @@ obj-y += common.o addr-map.o irq.o pcie.o
2 2
3obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o 3obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o
4obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o 4obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o
5obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6281-setup.o 5obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index 85cad05d8c5b..0bb1fbd84ccb 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -16,6 +16,7 @@
16#include <linux/mv643xx_eth.h> 16#include <linux/mv643xx_eth.h>
17#include <linux/ata_platform.h> 17#include <linux/ata_platform.h>
18#include <linux/spi/orion_spi.h> 18#include <linux/spi/orion_spi.h>
19#include <net/dsa.h>
19#include <asm/page.h> 20#include <asm/page.h>
20#include <asm/timex.h> 21#include <asm/timex.h>
21#include <asm/mach/map.h> 22#include <asm/mach/map.h>
@@ -152,6 +153,40 @@ void __init kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data)
152 153
153 154
154/***************************************************************************** 155/*****************************************************************************
156 * Ethernet switch
157 ****************************************************************************/
158static struct resource kirkwood_switch_resources[] = {
159 {
160 .start = 0,
161 .end = 0,
162 .flags = IORESOURCE_IRQ,
163 },
164};
165
166static struct platform_device kirkwood_switch_device = {
167 .name = "dsa",
168 .id = 0,
169 .num_resources = 0,
170 .resource = kirkwood_switch_resources,
171};
172
173void __init kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq)
174{
175 if (irq != NO_IRQ) {
176 kirkwood_switch_resources[0].start = irq;
177 kirkwood_switch_resources[0].end = irq;
178 kirkwood_switch_device.num_resources = 1;
179 }
180
181 d->mii_bus = &kirkwood_ge00_shared.dev;
182 d->netdev = &kirkwood_ge00.dev;
183 kirkwood_switch_device.dev.platform_data = d;
184
185 platform_device_register(&kirkwood_switch_device);
186}
187
188
189/*****************************************************************************
155 * SoC RTC 190 * SoC RTC
156 ****************************************************************************/ 191 ****************************************************************************/
157static struct resource kirkwood_rtc_resource = { 192static struct resource kirkwood_rtc_resource = {
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
index 8fa0f6a27635..5774632a67e3 100644
--- a/arch/arm/mach-kirkwood/common.h
+++ b/arch/arm/mach-kirkwood/common.h
@@ -11,6 +11,7 @@
11#ifndef __ARCH_KIRKWOOD_COMMON_H 11#ifndef __ARCH_KIRKWOOD_COMMON_H
12#define __ARCH_KIRKWOOD_COMMON_H 12#define __ARCH_KIRKWOOD_COMMON_H
13 13
14struct dsa_platform_data;
14struct mv643xx_eth_platform_data; 15struct mv643xx_eth_platform_data;
15struct mv_sata_platform_data; 16struct mv_sata_platform_data;
16 17
@@ -29,6 +30,7 @@ void kirkwood_pcie_id(u32 *dev, u32 *rev);
29 30
30void kirkwood_ehci_init(void); 31void kirkwood_ehci_init(void);
31void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data); 32void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data);
33void kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq);
32void kirkwood_pcie_init(void); 34void kirkwood_pcie_init(void);
33void kirkwood_rtc_init(void); 35void kirkwood_rtc_init(void);
34void kirkwood_sata_init(struct mv_sata_platform_data *sata_data); 36void kirkwood_sata_init(struct mv_sata_platform_data *sata_data);
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c
index f785093e433f..175054abd630 100644
--- a/arch/arm/mach-kirkwood/rd88f6281-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c
@@ -19,6 +19,7 @@
19#include <linux/ata_platform.h> 19#include <linux/ata_platform.h>
20#include <linux/mv643xx_eth.h> 20#include <linux/mv643xx_eth.h>
21#include <linux/ethtool.h> 21#include <linux/ethtool.h>
22#include <net/dsa.h>
22#include <asm/mach-types.h> 23#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
24#include <asm/mach/pci.h> 25#include <asm/mach/pci.h>
@@ -74,6 +75,15 @@ static struct mv643xx_eth_platform_data rd88f6281_ge00_data = {
74 .duplex = DUPLEX_FULL, 75 .duplex = DUPLEX_FULL,
75}; 76};
76 77
78static struct dsa_platform_data rd88f6281_switch_data = {
79 .port_names[0] = "lan1",
80 .port_names[1] = "lan2",
81 .port_names[2] = "lan3",
82 .port_names[3] = "lan4",
83 .port_names[4] = "wan",
84 .port_names[5] = "cpu",
85};
86
77static struct mv_sata_platform_data rd88f6281_sata_data = { 87static struct mv_sata_platform_data rd88f6281_sata_data = {
78 .n_ports = 2, 88 .n_ports = 2,
79}; 89};
@@ -87,6 +97,7 @@ static void __init rd88f6281_init(void)
87 97
88 kirkwood_ehci_init(); 98 kirkwood_ehci_init();
89 kirkwood_ge00_init(&rd88f6281_ge00_data); 99 kirkwood_ge00_init(&rd88f6281_ge00_data);
100 kirkwood_ge00_switch_init(&rd88f6281_switch_data, NO_IRQ);
90 kirkwood_rtc_init(); 101 kirkwood_rtc_init();
91 kirkwood_sata_init(&rd88f6281_sata_data); 102 kirkwood_sata_init(&rd88f6281_sata_data);
92 kirkwood_uart0_init(); 103 kirkwood_uart0_init();
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index 3553babbbf05..d140abca690a 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -1,18 +1,13 @@
1if ARCH_MSM7X00A 1if ARCH_MSM
2 2
3comment "MSM7X00A Board Type" 3comment "MSM Board Type"
4 depends on ARCH_MSM7X00A 4 depends on ARCH_MSM
5 5
6config MACH_HALIBUT 6config MACH_HALIBUT
7 depends on ARCH_MSM7X00A 7 depends on ARCH_MSM
8 default y 8 default y
9 bool "Halibut Board (QCT SURF7200A)" 9 bool "Halibut Board (QCT SURF7201A)"
10 help 10 help
11 Support for the Qualcomm SURF7200A eval board. 11 Support for the Qualcomm SURF7201A eval board.
12
13config MSM7X00A_IDLE
14 depends on ARCH_MSM7X00A
15 default y
16 bool "Idle Support for MSM7X00A"
17 12
18endif 13endif
diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile
index d12f23655850..1aa47001aa3b 100644
--- a/arch/arm/mach-msm/Makefile
+++ b/arch/arm/mach-msm/Makefile
@@ -1,7 +1,8 @@
1obj-y += io.o idle.o irq.o timer.o dma.o 1obj-y += io.o idle.o irq.o timer.o dma.o
2 2obj-y += devices.o
3# Common code for board init 3obj-y += proc_comm.o
4obj-y += common.o 4obj-y += vreg.o
5obj-y += clock.o clock-7x01a.o
5 6
6obj-$(CONFIG_MACH_HALIBUT) += board-halibut.o 7obj-$(CONFIG_MACH_HALIBUT) += board-halibut.o
7 8
diff --git a/arch/arm/mach-msm/board-halibut.c b/arch/arm/mach-msm/board-halibut.c
index a24259133e07..c2a96e3965a6 100644
--- a/arch/arm/mach-msm/board-halibut.c
+++ b/arch/arm/mach-msm/board-halibut.c
@@ -33,6 +33,8 @@
33#include <linux/mtd/nand.h> 33#include <linux/mtd/nand.h>
34#include <linux/mtd/partitions.h> 34#include <linux/mtd/partitions.h>
35 35
36#include "devices.h"
37
36static struct resource smc91x_resources[] = { 38static struct resource smc91x_resources[] = {
37 [0] = { 39 [0] = {
38 .start = 0x9C004300, 40 .start = 0x9C004300,
@@ -53,31 +55,12 @@ static struct platform_device smc91x_device = {
53 .resource = smc91x_resources, 55 .resource = smc91x_resources,
54}; 56};
55 57
56static void mddi0_panel_power(int on)
57{
58}
59
60static struct msm_mddi_platform_data msm_mddi0_pdata = {
61 .panel_power = mddi0_panel_power,
62 .has_vsync_irq = 0,
63};
64
65static struct platform_device msm_mddi0_device = {
66 .name = "msm_mddi",
67 .id = 0,
68 .dev = {
69 .platform_data = &msm_mddi0_pdata
70 },
71};
72
73static struct platform_device msm_serial0_device = {
74 .name = "msm_serial",
75 .id = 0,
76};
77
78static struct platform_device *devices[] __initdata = { 58static struct platform_device *devices[] __initdata = {
79 &msm_serial0_device, 59 &msm_device_uart3,
80 &msm_mddi0_device, 60 &msm_device_smd,
61 &msm_device_nand,
62 &msm_device_hsusb,
63 &msm_device_i2c,
81 &smc91x_device, 64 &smc91x_device,
82}; 65};
83 66
@@ -91,20 +74,15 @@ static void __init halibut_init_irq(void)
91static void __init halibut_init(void) 74static void __init halibut_init(void)
92{ 75{
93 platform_add_devices(devices, ARRAY_SIZE(devices)); 76 platform_add_devices(devices, ARRAY_SIZE(devices));
94 msm_add_devices();
95} 77}
96 78
97static void __init halibut_map_io(void) 79static void __init halibut_map_io(void)
98{ 80{
99 msm_map_common_io(); 81 msm_map_common_io();
82 msm_clock_init();
100} 83}
101 84
102MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)") 85MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
103
104/* UART for LL DEBUG */
105 .phys_io = MSM_UART1_PHYS,
106 .io_pg_offst = ((MSM_UART1_BASE) >> 18) & 0xfffc,
107
108 .boot_params = 0x10000100, 86 .boot_params = 0x10000100,
109 .map_io = halibut_map_io, 87 .map_io = halibut_map_io,
110 .init_irq = halibut_init_irq, 88 .init_irq = halibut_init_irq,
diff --git a/arch/arm/mach-msm/clock-7x01a.c b/arch/arm/mach-msm/clock-7x01a.c
new file mode 100644
index 000000000000..62230a3428ee
--- /dev/null
+++ b/arch/arm/mach-msm/clock-7x01a.c
@@ -0,0 +1,126 @@
1/* arch/arm/mach-msm/clock-7x01a.c
2 *
3 * Clock tables for MSM7X01A
4 *
5 * Copyright (C) 2007 Google, Inc.
6 * Copyright (c) 2007 QUALCOMM Incorporated
7 *
8 * This software is licensed under the terms of the GNU General Public
9 * License version 2, as published by the Free Software Foundation, and
10 * may be copied, distributed, and modified under those terms.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 */
18
19#include <linux/kernel.h>
20#include <linux/platform_device.h>
21
22#include "clock.h"
23#include "devices.h"
24
25/* clock IDs used by the modem processor */
26
27#define ACPU_CLK 0 /* Applications processor clock */
28#define ADM_CLK 1 /* Applications data mover clock */
29#define ADSP_CLK 2 /* ADSP clock */
30#define EBI1_CLK 3 /* External bus interface 1 clock */
31#define EBI2_CLK 4 /* External bus interface 2 clock */
32#define ECODEC_CLK 5 /* External CODEC clock */
33#define EMDH_CLK 6 /* External MDDI host clock */
34#define GP_CLK 7 /* General purpose clock */
35#define GRP_CLK 8 /* Graphics clock */
36#define I2C_CLK 9 /* I2C clock */
37#define ICODEC_RX_CLK 10 /* Internal CODEX RX clock */
38#define ICODEC_TX_CLK 11 /* Internal CODEX TX clock */
39#define IMEM_CLK 12 /* Internal graphics memory clock */
40#define MDC_CLK 13 /* MDDI client clock */
41#define MDP_CLK 14 /* Mobile display processor clock */
42#define PBUS_CLK 15 /* Peripheral bus clock */
43#define PCM_CLK 16 /* PCM clock */
44#define PMDH_CLK 17 /* Primary MDDI host clock */
45#define SDAC_CLK 18 /* Stereo DAC clock */
46#define SDC1_CLK 19 /* Secure Digital Card clocks */
47#define SDC1_PCLK 20
48#define SDC2_CLK 21
49#define SDC2_PCLK 22
50#define SDC3_CLK 23
51#define SDC3_PCLK 24
52#define SDC4_CLK 25
53#define SDC4_PCLK 26
54#define TSIF_CLK 27 /* Transport Stream Interface clocks */
55#define TSIF_REF_CLK 28
56#define TV_DAC_CLK 29 /* TV clocks */
57#define TV_ENC_CLK 30
58#define UART1_CLK 31 /* UART clocks */
59#define UART2_CLK 32
60#define UART3_CLK 33
61#define UART1DM_CLK 34
62#define UART2DM_CLK 35
63#define USB_HS_CLK 36 /* High speed USB core clock */
64#define USB_HS_PCLK 37 /* High speed USB pbus clock */
65#define USB_OTG_CLK 38 /* Full speed USB clock */
66#define VDC_CLK 39 /* Video controller clock */
67#define VFE_CLK 40 /* Camera / Video Front End clock */
68#define VFE_MDC_CLK 41 /* VFE MDDI client clock */
69
70#define NR_CLKS 42
71
72#define CLOCK(clk_name, clk_id, clk_dev, clk_flags) { \
73 .name = clk_name, \
74 .id = clk_id, \
75 .flags = clk_flags, \
76 .dev = clk_dev, \
77 }
78
79#define OFF CLKFLAG_AUTO_OFF
80#define MINMAX CLKFLAG_USE_MIN_MAX_TO_SET
81
82struct clk msm_clocks[] = {
83 CLOCK("adm_clk", ADM_CLK, NULL, 0),
84 CLOCK("adsp_clk", ADSP_CLK, NULL, 0),
85 CLOCK("ebi1_clk", EBI1_CLK, NULL, 0),
86 CLOCK("ebi2_clk", EBI2_CLK, NULL, 0),
87 CLOCK("ecodec_clk", ECODEC_CLK, NULL, 0),
88 CLOCK("emdh_clk", EMDH_CLK, NULL, OFF),
89 CLOCK("gp_clk", GP_CLK, NULL, 0),
90 CLOCK("grp_clk", GRP_CLK, NULL, OFF),
91 CLOCK("i2c_clk", I2C_CLK, &msm_device_i2c.dev, 0),
92 CLOCK("icodec_rx_clk", ICODEC_RX_CLK, NULL, 0),
93 CLOCK("icodec_tx_clk", ICODEC_TX_CLK, NULL, 0),
94 CLOCK("imem_clk", IMEM_CLK, NULL, OFF),
95 CLOCK("mdc_clk", MDC_CLK, NULL, 0),
96 CLOCK("mdp_clk", MDP_CLK, NULL, OFF),
97 CLOCK("pbus_clk", PBUS_CLK, NULL, 0),
98 CLOCK("pcm_clk", PCM_CLK, NULL, 0),
99 CLOCK("pmdh_clk", PMDH_CLK, NULL, OFF | MINMAX),
100 CLOCK("sdac_clk", SDAC_CLK, NULL, OFF),
101 CLOCK("sdc_clk", SDC1_CLK, &msm_device_sdc1.dev, OFF),
102 CLOCK("sdc_pclk", SDC1_PCLK, &msm_device_sdc1.dev, OFF),
103 CLOCK("sdc_clk", SDC2_CLK, &msm_device_sdc2.dev, OFF),
104 CLOCK("sdc_pclk", SDC2_PCLK, &msm_device_sdc2.dev, OFF),
105 CLOCK("sdc_clk", SDC3_CLK, &msm_device_sdc3.dev, OFF),
106 CLOCK("sdc_pclk", SDC3_PCLK, &msm_device_sdc3.dev, OFF),
107 CLOCK("sdc_clk", SDC4_CLK, &msm_device_sdc4.dev, OFF),
108 CLOCK("sdc_pclk", SDC4_PCLK, &msm_device_sdc4.dev, OFF),
109 CLOCK("tsif_clk", TSIF_CLK, NULL, 0),
110 CLOCK("tsif_ref_clk", TSIF_REF_CLK, NULL, 0),
111 CLOCK("tv_dac_clk", TV_DAC_CLK, NULL, 0),
112 CLOCK("tv_enc_clk", TV_ENC_CLK, NULL, 0),
113 CLOCK("uart_clk", UART1_CLK, &msm_device_uart1.dev, OFF),
114 CLOCK("uart_clk", UART2_CLK, &msm_device_uart2.dev, 0),
115 CLOCK("uart_clk", UART3_CLK, &msm_device_uart3.dev, OFF),
116 CLOCK("uart1dm_clk", UART1DM_CLK, NULL, OFF),
117 CLOCK("uart2dm_clk", UART2DM_CLK, NULL, 0),
118 CLOCK("usb_hs_clk", USB_HS_CLK, &msm_device_hsusb.dev, OFF),
119 CLOCK("usb_hs_pclk", USB_HS_PCLK, &msm_device_hsusb.dev, OFF),
120 CLOCK("usb_otg_clk", USB_OTG_CLK, NULL, 0),
121 CLOCK("vdc_clk", VDC_CLK, NULL, OFF | MINMAX),
122 CLOCK("vfe_clk", VFE_CLK, NULL, OFF),
123 CLOCK("vfe_mdc_clk", VFE_MDC_CLK, NULL, OFF),
124};
125
126unsigned msm_num_clocks = ARRAY_SIZE(msm_clocks);
diff --git a/arch/arm/mach-msm/clock.c b/arch/arm/mach-msm/clock.c
new file mode 100644
index 000000000000..3b1ce36f1032
--- /dev/null
+++ b/arch/arm/mach-msm/clock.c
@@ -0,0 +1,218 @@
1/* arch/arm/mach-msm/clock.c
2 *
3 * Copyright (C) 2007 Google, Inc.
4 * Copyright (c) 2007 QUALCOMM Incorporated
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#include <linux/version.h>
18#include <linux/kernel.h>
19#include <linux/init.h>
20#include <linux/module.h>
21#include <linux/list.h>
22#include <linux/err.h>
23#include <linux/clk.h>
24#include <linux/spinlock.h>
25
26#include "clock.h"
27#include "proc_comm.h"
28
29static DEFINE_MUTEX(clocks_mutex);
30static DEFINE_SPINLOCK(clocks_lock);
31static LIST_HEAD(clocks);
32
33/*
34 * glue for the proc_comm interface
35 */
36static inline int pc_clk_enable(unsigned id)
37{
38 return msm_proc_comm(PCOM_CLKCTL_RPC_ENABLE, &id, NULL);
39}
40
41static inline void pc_clk_disable(unsigned id)
42{
43 msm_proc_comm(PCOM_CLKCTL_RPC_DISABLE, &id, NULL);
44}
45
46static inline int pc_clk_set_rate(unsigned id, unsigned rate)
47{
48 return msm_proc_comm(PCOM_CLKCTL_RPC_SET_RATE, &id, &rate);
49}
50
51static inline int pc_clk_set_min_rate(unsigned id, unsigned rate)
52{
53 return msm_proc_comm(PCOM_CLKCTL_RPC_MIN_RATE, &id, &rate);
54}
55
56static inline int pc_clk_set_max_rate(unsigned id, unsigned rate)
57{
58 return msm_proc_comm(PCOM_CLKCTL_RPC_MAX_RATE, &id, &rate);
59}
60
61static inline int pc_clk_set_flags(unsigned id, unsigned flags)
62{
63 return msm_proc_comm(PCOM_CLKCTL_RPC_SET_FLAGS, &id, &flags);
64}
65
66static inline unsigned pc_clk_get_rate(unsigned id)
67{
68 if (msm_proc_comm(PCOM_CLKCTL_RPC_RATE, &id, NULL))
69 return 0;
70 else
71 return id;
72}
73
74static inline unsigned pc_clk_is_enabled(unsigned id)
75{
76 if (msm_proc_comm(PCOM_CLKCTL_RPC_ENABLED, &id, NULL))
77 return 0;
78 else
79 return id;
80}
81
82static inline int pc_pll_request(unsigned id, unsigned on)
83{
84 on = !!on;
85 return msm_proc_comm(PCOM_CLKCTL_RPC_PLL_REQUEST, &id, &on);
86}
87
88/*
89 * Standard clock functions defined in include/linux/clk.h
90 */
91struct clk *clk_get(struct device *dev, const char *id)
92{
93 struct clk *clk;
94
95 mutex_lock(&clocks_mutex);
96
97 list_for_each_entry(clk, &clocks, list)
98 if (!strcmp(id, clk->name) && clk->dev == dev)
99 goto found_it;
100
101 list_for_each_entry(clk, &clocks, list)
102 if (!strcmp(id, clk->name) && clk->dev == NULL)
103 goto found_it;
104
105 clk = ERR_PTR(-ENOENT);
106found_it:
107 mutex_unlock(&clocks_mutex);
108 return clk;
109}
110EXPORT_SYMBOL(clk_get);
111
112void clk_put(struct clk *clk)
113{
114}
115EXPORT_SYMBOL(clk_put);
116
117int clk_enable(struct clk *clk)
118{
119 unsigned long flags;
120 spin_lock_irqsave(&clocks_lock, flags);
121 clk->count++;
122 if (clk->count == 1)
123 pc_clk_enable(clk->id);
124 spin_unlock_irqrestore(&clocks_lock, flags);
125 return 0;
126}
127EXPORT_SYMBOL(clk_enable);
128
129void clk_disable(struct clk *clk)
130{
131 unsigned long flags;
132 spin_lock_irqsave(&clocks_lock, flags);
133 BUG_ON(clk->count == 0);
134 clk->count--;
135 if (clk->count == 0)
136 pc_clk_disable(clk->id);
137 spin_unlock_irqrestore(&clocks_lock, flags);
138}
139EXPORT_SYMBOL(clk_disable);
140
141unsigned long clk_get_rate(struct clk *clk)
142{
143 return pc_clk_get_rate(clk->id);
144}
145EXPORT_SYMBOL(clk_get_rate);
146
147int clk_set_rate(struct clk *clk, unsigned long rate)
148{
149 int ret;
150 if (clk->flags & CLKFLAG_USE_MIN_MAX_TO_SET) {
151 ret = pc_clk_set_max_rate(clk->id, rate);
152 if (ret)
153 return ret;
154 return pc_clk_set_min_rate(clk->id, rate);
155 }
156 return pc_clk_set_rate(clk->id, rate);
157}
158EXPORT_SYMBOL(clk_set_rate);
159
160int clk_set_parent(struct clk *clk, struct clk *parent)
161{
162 return -ENOSYS;
163}
164EXPORT_SYMBOL(clk_set_parent);
165
166struct clk *clk_get_parent(struct clk *clk)
167{
168 return ERR_PTR(-ENOSYS);
169}
170EXPORT_SYMBOL(clk_get_parent);
171
172int clk_set_flags(struct clk *clk, unsigned long flags)
173{
174 if (clk == NULL || IS_ERR(clk))
175 return -EINVAL;
176 return pc_clk_set_flags(clk->id, flags);
177}
178EXPORT_SYMBOL(clk_set_flags);
179
180
181void __init msm_clock_init(void)
182{
183 unsigned n;
184
185 spin_lock_init(&clocks_lock);
186 mutex_lock(&clocks_mutex);
187 for (n = 0; n < msm_num_clocks; n++)
188 list_add_tail(&msm_clocks[n].list, &clocks);
189 mutex_unlock(&clocks_mutex);
190}
191
192/* The bootloader and/or AMSS may have left various clocks enabled.
193 * Disable any clocks that belong to us (CLKFLAG_AUTO_OFF) but have
194 * not been explicitly enabled by a clk_enable() call.
195 */
196static int __init clock_late_init(void)
197{
198 unsigned long flags;
199 struct clk *clk;
200 unsigned count = 0;
201
202 mutex_lock(&clocks_mutex);
203 list_for_each_entry(clk, &clocks, list) {
204 if (clk->flags & CLKFLAG_AUTO_OFF) {
205 spin_lock_irqsave(&clocks_lock, flags);
206 if (!clk->count) {
207 count++;
208 pc_clk_disable(clk->id);
209 }
210 spin_unlock_irqrestore(&clocks_lock, flags);
211 }
212 }
213 mutex_unlock(&clocks_mutex);
214 pr_info("clock_late_init() disabled %d unused clocks\n", count);
215 return 0;
216}
217
218late_initcall(clock_late_init);
diff --git a/arch/arm/mach-msm/clock.h b/arch/arm/mach-msm/clock.h
new file mode 100644
index 000000000000..f875e1544e5f
--- /dev/null
+++ b/arch/arm/mach-msm/clock.h
@@ -0,0 +1,48 @@
1/* arch/arm/mach-msm/clock.h
2 *
3 * Copyright (C) 2007 Google, Inc.
4 * Copyright (c) 2007 QUALCOMM Incorporated
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#ifndef __ARCH_ARM_MACH_MSM_CLOCK_H
18#define __ARCH_ARM_MACH_MSM_CLOCK_H
19
20#include <linux/list.h>
21
22#define CLKFLAG_INVERT 0x00000001
23#define CLKFLAG_NOINVERT 0x00000002
24#define CLKFLAG_NONEST 0x00000004
25#define CLKFLAG_NORESET 0x00000008
26
27#define CLK_FIRST_AVAILABLE_FLAG 0x00000100
28#define CLKFLAG_USE_MIN_MAX_TO_SET 0x00000200
29#define CLKFLAG_AUTO_OFF 0x00000400
30
31struct clk {
32 uint32_t id;
33 uint32_t count;
34 uint32_t flags;
35 const char *name;
36 struct list_head list;
37 struct device *dev;
38};
39
40#define A11S_CLK_CNTL_ADDR (MSM_CSR_BASE + 0x100)
41#define A11S_CLK_SEL_ADDR (MSM_CSR_BASE + 0x104)
42#define A11S_VDD_SVS_PLEVEL_ADDR (MSM_CSR_BASE + 0x124)
43
44extern struct clk msm_clocks[];
45extern unsigned msm_num_clocks;
46
47#endif
48
diff --git a/arch/arm/mach-msm/common.c b/arch/arm/mach-msm/common.c
deleted file mode 100644
index 604f8ade9587..000000000000
--- a/arch/arm/mach-msm/common.c
+++ /dev/null
@@ -1,116 +0,0 @@
1/* linux/arch/arm/mach-msm/common.c
2 *
3 * Common setup code for MSM7K Boards
4 *
5 * Copyright (C) 2007 Google, Inc.
6 * Author: Brian Swetland <swetland@google.com>
7 *
8 * This software is licensed under the terms of the GNU General Public
9 * License version 2, as published by the Free Software Foundation, and
10 * may be copied, distributed, and modified under those terms.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 */
18
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/platform_device.h>
22#include <linux/io.h>
23
24#include <asm/mach/flash.h>
25
26#include <asm/setup.h>
27
28#include <linux/mtd/nand.h>
29#include <linux/mtd/partitions.h>
30
31#include <mach/msm_iomap.h>
32
33#include <mach/board.h>
34
35struct flash_platform_data msm_nand_data = {
36 .parts = 0,
37 .nr_parts = 0,
38};
39
40static struct resource msm_nand_resources[] = {
41 [0] = {
42 .start = 7,
43 .end = 7,
44 .flags = IORESOURCE_DMA,
45 },
46};
47
48static struct platform_device msm_nand_device = {
49 .name = "msm_nand",
50 .id = -1,
51 .num_resources = ARRAY_SIZE(msm_nand_resources),
52 .resource = msm_nand_resources,
53 .dev = {
54 .platform_data = &msm_nand_data,
55 },
56};
57
58static struct platform_device msm_smd_device = {
59 .name = "msm_smd",
60 .id = -1,
61};
62
63static struct resource msm_i2c_resources[] = {
64 {
65 .start = MSM_I2C_BASE,
66 .end = MSM_I2C_BASE + MSM_I2C_SIZE - 1,
67 .flags = IORESOURCE_MEM,
68 },
69 {
70 .start = INT_PWB_I2C,
71 .end = INT_PWB_I2C,
72 .flags = IORESOURCE_IRQ,
73 },
74};
75
76static struct platform_device msm_i2c_device = {
77 .name = "msm_i2c",
78 .id = 0,
79 .num_resources = ARRAY_SIZE(msm_i2c_resources),
80 .resource = msm_i2c_resources,
81};
82
83static struct resource usb_resources[] = {
84 {
85 .start = MSM_HSUSB_PHYS,
86 .end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE,
87 .flags = IORESOURCE_MEM,
88 },
89 {
90 .start = INT_USB_HS,
91 .end = INT_USB_HS,
92 .flags = IORESOURCE_IRQ,
93 },
94};
95
96static struct platform_device msm_hsusb_device = {
97 .name = "msm_hsusb",
98 .id = -1,
99 .num_resources = ARRAY_SIZE(usb_resources),
100 .resource = usb_resources,
101 .dev = {
102 .coherent_dma_mask = 0xffffffff,
103 },
104};
105
106static struct platform_device *devices[] __initdata = {
107 &msm_nand_device,
108 &msm_smd_device,
109 &msm_i2c_device,
110 &msm_hsusb_device,
111};
112
113void __init msm_add_devices(void)
114{
115 platform_add_devices(devices, ARRAY_SIZE(devices));
116}
diff --git a/arch/arm/mach-msm/devices.c b/arch/arm/mach-msm/devices.c
new file mode 100644
index 000000000000..f2a74b92a97f
--- /dev/null
+++ b/arch/arm/mach-msm/devices.c
@@ -0,0 +1,267 @@
1/* linux/arch/arm/mach-msm/devices.c
2 *
3 * Copyright (C) 2008 Google, Inc.
4 *
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 */
15
16#include <linux/kernel.h>
17#include <linux/platform_device.h>
18
19#include <mach/msm_iomap.h>
20#include "devices.h"
21
22#include <asm/mach/flash.h>
23#include <linux/mtd/nand.h>
24#include <linux/mtd/partitions.h>
25
26static struct resource resources_uart1[] = {
27 {
28 .start = INT_UART1,
29 .end = INT_UART1,
30 .flags = IORESOURCE_IRQ,
31 },
32 {
33 .start = MSM_UART1_PHYS,
34 .end = MSM_UART1_PHYS + MSM_UART1_SIZE - 1,
35 .flags = IORESOURCE_MEM,
36 },
37};
38
39static struct resource resources_uart2[] = {
40 {
41 .start = INT_UART2,
42 .end = INT_UART2,
43 .flags = IORESOURCE_IRQ,
44 },
45 {
46 .start = MSM_UART2_PHYS,
47 .end = MSM_UART2_PHYS + MSM_UART2_SIZE - 1,
48 .flags = IORESOURCE_MEM,
49 },
50};
51
52static struct resource resources_uart3[] = {
53 {
54 .start = INT_UART3,
55 .end = INT_UART3,
56 .flags = IORESOURCE_IRQ,
57 },
58 {
59 .start = MSM_UART3_PHYS,
60 .end = MSM_UART3_PHYS + MSM_UART3_SIZE - 1,
61 .flags = IORESOURCE_MEM,
62 },
63};
64
65struct platform_device msm_device_uart1 = {
66 .name = "msm_serial",
67 .id = 0,
68 .num_resources = ARRAY_SIZE(resources_uart1),
69 .resource = resources_uart1,
70};
71
72struct platform_device msm_device_uart2 = {
73 .name = "msm_serial",
74 .id = 1,
75 .num_resources = ARRAY_SIZE(resources_uart2),
76 .resource = resources_uart2,
77};
78
79struct platform_device msm_device_uart3 = {
80 .name = "msm_serial",
81 .id = 2,
82 .num_resources = ARRAY_SIZE(resources_uart3),
83 .resource = resources_uart3,
84};
85
86static struct resource resources_i2c[] = {
87 {
88 .start = MSM_I2C_PHYS,
89 .end = MSM_I2C_PHYS + MSM_I2C_SIZE - 1,
90 .flags = IORESOURCE_MEM,
91 },
92 {
93 .start = INT_PWB_I2C,
94 .end = INT_PWB_I2C,
95 .flags = IORESOURCE_IRQ,
96 },
97};
98
99struct platform_device msm_device_i2c = {
100 .name = "msm_i2c",
101 .id = 0,
102 .num_resources = ARRAY_SIZE(resources_i2c),
103 .resource = resources_i2c,
104};
105
106static struct resource resources_hsusb[] = {
107 {
108 .start = MSM_HSUSB_PHYS,
109 .end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE,
110 .flags = IORESOURCE_MEM,
111 },
112 {
113 .start = INT_USB_HS,
114 .end = INT_USB_HS,
115 .flags = IORESOURCE_IRQ,
116 },
117};
118
119struct platform_device msm_device_hsusb = {
120 .name = "msm_hsusb",
121 .id = -1,
122 .num_resources = ARRAY_SIZE(resources_hsusb),
123 .resource = resources_hsusb,
124 .dev = {
125 .coherent_dma_mask = 0xffffffff,
126 },
127};
128
129struct flash_platform_data msm_nand_data = {
130 .parts = NULL,
131 .nr_parts = 0,
132};
133
134static struct resource resources_nand[] = {
135 [0] = {
136 .start = 7,
137 .end = 7,
138 .flags = IORESOURCE_DMA,
139 },
140};
141
142struct platform_device msm_device_nand = {
143 .name = "msm_nand",
144 .id = -1,
145 .num_resources = ARRAY_SIZE(resources_nand),
146 .resource = resources_nand,
147 .dev = {
148 .platform_data = &msm_nand_data,
149 },
150};
151
152struct platform_device msm_device_smd = {
153 .name = "msm_smd",
154 .id = -1,
155};
156
157static struct resource resources_sdc1[] = {
158 {
159 .start = MSM_SDC1_PHYS,
160 .end = MSM_SDC1_PHYS + MSM_SDC1_SIZE - 1,
161 .flags = IORESOURCE_MEM,
162 },
163 {
164 .start = INT_SDC1_0,
165 .end = INT_SDC1_1,
166 .flags = IORESOURCE_IRQ,
167 },
168 {
169 .start = 8,
170 .end = 8,
171 .flags = IORESOURCE_DMA,
172 },
173};
174
175static struct resource resources_sdc2[] = {
176 {
177 .start = MSM_SDC2_PHYS,
178 .end = MSM_SDC2_PHYS + MSM_SDC2_SIZE - 1,
179 .flags = IORESOURCE_MEM,
180 },
181 {
182 .start = INT_SDC2_0,
183 .end = INT_SDC2_1,
184 .flags = IORESOURCE_IRQ,
185 },
186 {
187 .start = 8,
188 .end = 8,
189 .flags = IORESOURCE_DMA,
190 },
191};
192
193static struct resource resources_sdc3[] = {
194 {
195 .start = MSM_SDC3_PHYS,
196 .end = MSM_SDC3_PHYS + MSM_SDC3_SIZE - 1,
197 .flags = IORESOURCE_MEM,
198 },
199 {
200 .start = INT_SDC3_0,
201 .end = INT_SDC3_1,
202 .flags = IORESOURCE_IRQ,
203 },
204 {
205 .start = 8,
206 .end = 8,
207 .flags = IORESOURCE_DMA,
208 },
209};
210
211static struct resource resources_sdc4[] = {
212 {
213 .start = MSM_SDC4_PHYS,
214 .end = MSM_SDC4_PHYS + MSM_SDC4_SIZE - 1,
215 .flags = IORESOURCE_MEM,
216 },
217 {
218 .start = INT_SDC4_0,
219 .end = INT_SDC4_1,
220 .flags = IORESOURCE_IRQ,
221 },
222 {
223 .start = 8,
224 .end = 8,
225 .flags = IORESOURCE_DMA,
226 },
227};
228
229struct platform_device msm_device_sdc1 = {
230 .name = "msm_sdcc",
231 .id = 1,
232 .num_resources = ARRAY_SIZE(resources_sdc1),
233 .resource = resources_sdc1,
234 .dev = {
235 .coherent_dma_mask = 0xffffffff,
236 },
237};
238
239struct platform_device msm_device_sdc2 = {
240 .name = "msm_sdcc",
241 .id = 2,
242 .num_resources = ARRAY_SIZE(resources_sdc2),
243 .resource = resources_sdc2,
244 .dev = {
245 .coherent_dma_mask = 0xffffffff,
246 },
247};
248
249struct platform_device msm_device_sdc3 = {
250 .name = "msm_sdcc",
251 .id = 3,
252 .num_resources = ARRAY_SIZE(resources_sdc3),
253 .resource = resources_sdc3,
254 .dev = {
255 .coherent_dma_mask = 0xffffffff,
256 },
257};
258
259struct platform_device msm_device_sdc4 = {
260 .name = "msm_sdcc",
261 .id = 4,
262 .num_resources = ARRAY_SIZE(resources_sdc4),
263 .resource = resources_sdc4,
264 .dev = {
265 .coherent_dma_mask = 0xffffffff,
266 },
267};
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
new file mode 100644
index 000000000000..0744c4a27d6a
--- /dev/null
+++ b/arch/arm/mach-msm/devices.h
@@ -0,0 +1,36 @@
1/* linux/arch/arm/mach-msm/devices.h
2 *
3 * Copyright (C) 2008 Google, Inc.
4 *
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 */
15
16#ifndef __ARCH_ARM_MACH_MSM_DEVICES_H
17#define __ARCH_ARM_MACH_MSM_DEVICES_H
18
19extern struct platform_device msm_device_uart1;
20extern struct platform_device msm_device_uart2;
21extern struct platform_device msm_device_uart3;
22
23extern struct platform_device msm_device_sdc1;
24extern struct platform_device msm_device_sdc2;
25extern struct platform_device msm_device_sdc3;
26extern struct platform_device msm_device_sdc4;
27
28extern struct platform_device msm_device_hsusb;
29
30extern struct platform_device msm_device_i2c;
31
32extern struct platform_device msm_device_smd;
33
34extern struct platform_device msm_device_nand;
35
36#endif
diff --git a/arch/arm/mach-msm/dma.c b/arch/arm/mach-msm/dma.c
index 0c8f252637e1..f5420f9585c5 100644
--- a/arch/arm/mach-msm/dma.c
+++ b/arch/arm/mach-msm/dma.c
@@ -26,7 +26,7 @@ enum {
26}; 26};
27 27
28static DEFINE_SPINLOCK(msm_dmov_lock); 28static DEFINE_SPINLOCK(msm_dmov_lock);
29static struct msm_dmov_cmd active_command; 29static unsigned int channel_active;
30static struct list_head ready_commands[MSM_DMOV_CHANNEL_COUNT]; 30static struct list_head ready_commands[MSM_DMOV_CHANNEL_COUNT];
31static struct list_head active_commands[MSM_DMOV_CHANNEL_COUNT]; 31static struct list_head active_commands[MSM_DMOV_CHANNEL_COUNT];
32unsigned int msm_dmov_print_mask = MSM_DMOV_PRINT_ERRORS; 32unsigned int msm_dmov_print_mask = MSM_DMOV_PRINT_ERRORS;
@@ -43,6 +43,11 @@ unsigned int msm_dmov_print_mask = MSM_DMOV_PRINT_ERRORS;
43#define PRINT_FLOW(format, args...) \ 43#define PRINT_FLOW(format, args...) \
44 MSM_DMOV_DPRINTF(MSM_DMOV_PRINT_FLOW, format, args); 44 MSM_DMOV_DPRINTF(MSM_DMOV_PRINT_FLOW, format, args);
45 45
46void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd, int graceful)
47{
48 writel((graceful << 31), DMOV_FLUSH0(id));
49}
50
46void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd) 51void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd)
47{ 52{
48 unsigned long irq_flags; 53 unsigned long irq_flags;
@@ -60,6 +65,9 @@ void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd)
60#endif 65#endif
61 PRINT_IO("msm_dmov_enqueue_cmd(%d), start command, status %x\n", id, status); 66 PRINT_IO("msm_dmov_enqueue_cmd(%d), start command, status %x\n", id, status);
62 list_add_tail(&cmd->list, &active_commands[id]); 67 list_add_tail(&cmd->list, &active_commands[id]);
68 if (!channel_active)
69 enable_irq(INT_ADM_AARM);
70 channel_active |= 1U << id;
63 writel(cmd->cmdptr, DMOV_CMD_PTR(id)); 71 writel(cmd->cmdptr, DMOV_CMD_PTR(id));
64 } else { 72 } else {
65 if (list_empty(&active_commands[id])) 73 if (list_empty(&active_commands[id]))
@@ -76,21 +84,19 @@ struct msm_dmov_exec_cmdptr_cmd {
76 struct completion complete; 84 struct completion complete;
77 unsigned id; 85 unsigned id;
78 unsigned int result; 86 unsigned int result;
79 unsigned int flush[6]; 87 struct msm_dmov_errdata err;
80}; 88};
81 89
82static void dmov_exec_cmdptr_complete_func(struct msm_dmov_cmd *_cmd, unsigned int result) 90static void
91dmov_exec_cmdptr_complete_func(struct msm_dmov_cmd *_cmd,
92 unsigned int result,
93 struct msm_dmov_errdata *err)
83{ 94{
84 struct msm_dmov_exec_cmdptr_cmd *cmd = container_of(_cmd, struct msm_dmov_exec_cmdptr_cmd, dmov_cmd); 95 struct msm_dmov_exec_cmdptr_cmd *cmd = container_of(_cmd, struct msm_dmov_exec_cmdptr_cmd, dmov_cmd);
85 cmd->result = result; 96 cmd->result = result;
86 if (result != 0x80000002) { 97 if (result != 0x80000002 && err)
87 cmd->flush[0] = readl(DMOV_FLUSH0(cmd->id)); 98 memcpy(&cmd->err, err, sizeof(struct msm_dmov_errdata));
88 cmd->flush[1] = readl(DMOV_FLUSH1(cmd->id)); 99
89 cmd->flush[2] = readl(DMOV_FLUSH2(cmd->id));
90 cmd->flush[3] = readl(DMOV_FLUSH3(cmd->id));
91 cmd->flush[4] = readl(DMOV_FLUSH4(cmd->id));
92 cmd->flush[5] = readl(DMOV_FLUSH5(cmd->id));
93 }
94 complete(&cmd->complete); 100 complete(&cmd->complete);
95} 101}
96 102
@@ -111,7 +117,7 @@ int msm_dmov_exec_cmd(unsigned id, unsigned int cmdptr)
111 if (cmd.result != 0x80000002) { 117 if (cmd.result != 0x80000002) {
112 PRINT_ERROR("dmov_exec_cmdptr(%d): ERROR, result: %x\n", id, cmd.result); 118 PRINT_ERROR("dmov_exec_cmdptr(%d): ERROR, result: %x\n", id, cmd.result);
113 PRINT_ERROR("dmov_exec_cmdptr(%d): flush: %x %x %x %x\n", 119 PRINT_ERROR("dmov_exec_cmdptr(%d): flush: %x %x %x %x\n",
114 id, cmd.flush[0], cmd.flush[1], cmd.flush[2], cmd.flush[3]); 120 id, cmd.err.flush[0], cmd.err.flush[1], cmd.err.flush[2], cmd.err.flush[3]);
115 return -EIO; 121 return -EIO;
116 } 122 }
117 PRINT_FLOW("dmov_exec_cmdptr(%d, %x) done\n", id, cmdptr); 123 PRINT_FLOW("dmov_exec_cmdptr(%d, %x) done\n", id, cmdptr);
@@ -159,25 +165,40 @@ static irqreturn_t msm_datamover_irq_handler(int irq, void *dev_id)
159 "for %p, result %x\n", id, cmd, ch_result); 165 "for %p, result %x\n", id, cmd, ch_result);
160 if (cmd) { 166 if (cmd) {
161 list_del(&cmd->list); 167 list_del(&cmd->list);
162 cmd->complete_func(cmd, ch_result); 168 cmd->complete_func(cmd, ch_result, NULL);
163 } 169 }
164 } 170 }
165 if (ch_result & DMOV_RSLT_FLUSH) { 171 if (ch_result & DMOV_RSLT_FLUSH) {
166 unsigned int flush0 = readl(DMOV_FLUSH0(id)); 172 struct msm_dmov_errdata errdata;
173
174 errdata.flush[0] = readl(DMOV_FLUSH0(id));
175 errdata.flush[1] = readl(DMOV_FLUSH1(id));
176 errdata.flush[2] = readl(DMOV_FLUSH2(id));
177 errdata.flush[3] = readl(DMOV_FLUSH3(id));
178 errdata.flush[4] = readl(DMOV_FLUSH4(id));
179 errdata.flush[5] = readl(DMOV_FLUSH5(id));
167 PRINT_FLOW("msm_datamover_irq_handler id %d, status %x\n", id, ch_status); 180 PRINT_FLOW("msm_datamover_irq_handler id %d, status %x\n", id, ch_status);
168 PRINT_FLOW("msm_datamover_irq_handler id %d, flush, result %x, flush0 %x\n", id, ch_result, flush0); 181 PRINT_FLOW("msm_datamover_irq_handler id %d, flush, result %x, flush0 %x\n", id, ch_result, errdata.flush[0]);
169 if (cmd) { 182 if (cmd) {
170 list_del(&cmd->list); 183 list_del(&cmd->list);
171 cmd->complete_func(cmd, ch_result); 184 cmd->complete_func(cmd, ch_result, &errdata);
172 } 185 }
173 } 186 }
174 if (ch_result & DMOV_RSLT_ERROR) { 187 if (ch_result & DMOV_RSLT_ERROR) {
175 unsigned int flush0 = readl(DMOV_FLUSH0(id)); 188 struct msm_dmov_errdata errdata;
189
190 errdata.flush[0] = readl(DMOV_FLUSH0(id));
191 errdata.flush[1] = readl(DMOV_FLUSH1(id));
192 errdata.flush[2] = readl(DMOV_FLUSH2(id));
193 errdata.flush[3] = readl(DMOV_FLUSH3(id));
194 errdata.flush[4] = readl(DMOV_FLUSH4(id));
195 errdata.flush[5] = readl(DMOV_FLUSH5(id));
196
176 PRINT_ERROR("msm_datamover_irq_handler id %d, status %x\n", id, ch_status); 197 PRINT_ERROR("msm_datamover_irq_handler id %d, status %x\n", id, ch_status);
177 PRINT_ERROR("msm_datamover_irq_handler id %d, error, result %x, flush0 %x\n", id, ch_result, flush0); 198 PRINT_ERROR("msm_datamover_irq_handler id %d, error, result %x, flush0 %x\n", id, ch_result, errdata.flush[0]);
178 if (cmd) { 199 if (cmd) {
179 list_del(&cmd->list); 200 list_del(&cmd->list);
180 cmd->complete_func(cmd, ch_result); 201 cmd->complete_func(cmd, ch_result, &errdata);
181 } 202 }
182 /* this does not seem to work, once we get an error */ 203 /* this does not seem to work, once we get an error */
183 /* the datamover will no longer accept commands */ 204 /* the datamover will no longer accept commands */
@@ -193,8 +214,14 @@ static irqreturn_t msm_datamover_irq_handler(int irq, void *dev_id)
193 writel(cmd->cmdptr, DMOV_CMD_PTR(id)); 214 writel(cmd->cmdptr, DMOV_CMD_PTR(id));
194 } 215 }
195 } while (ch_status & DMOV_STATUS_RSLT_VALID); 216 } while (ch_status & DMOV_STATUS_RSLT_VALID);
217 if (list_empty(&active_commands[id]) && list_empty(&ready_commands[id]))
218 channel_active &= ~(1U << id);
196 PRINT_FLOW("msm_datamover_irq_handler id %d, status %x\n", id, ch_status); 219 PRINT_FLOW("msm_datamover_irq_handler id %d, status %x\n", id, ch_status);
197 } 220 }
221
222 if (!channel_active)
223 disable_irq(INT_ADM_AARM);
224
198 spin_unlock_irqrestore(&msm_dmov_lock, irq_flags); 225 spin_unlock_irqrestore(&msm_dmov_lock, irq_flags);
199 return IRQ_HANDLED; 226 return IRQ_HANDLED;
200} 227}
@@ -202,12 +229,17 @@ static irqreturn_t msm_datamover_irq_handler(int irq, void *dev_id)
202static int __init msm_init_datamover(void) 229static int __init msm_init_datamover(void)
203{ 230{
204 int i; 231 int i;
232 int ret;
205 for (i = 0; i < MSM_DMOV_CHANNEL_COUNT; i++) { 233 for (i = 0; i < MSM_DMOV_CHANNEL_COUNT; i++) {
206 INIT_LIST_HEAD(&ready_commands[i]); 234 INIT_LIST_HEAD(&ready_commands[i]);
207 INIT_LIST_HEAD(&active_commands[i]); 235 INIT_LIST_HEAD(&active_commands[i]);
208 writel(DMOV_CONFIG_IRQ_EN | DMOV_CONFIG_FORCE_TOP_PTR_RSLT | DMOV_CONFIG_FORCE_FLUSH_RSLT, DMOV_CONFIG(i)); 236 writel(DMOV_CONFIG_IRQ_EN | DMOV_CONFIG_FORCE_TOP_PTR_RSLT | DMOV_CONFIG_FORCE_FLUSH_RSLT, DMOV_CONFIG(i));
209 } 237 }
210 return request_irq(INT_ADM_AARM, msm_datamover_irq_handler, 0, "msmdatamover", NULL); 238 ret = request_irq(INT_ADM_AARM, msm_datamover_irq_handler, 0, "msmdatamover", NULL);
239 if (ret)
240 return ret;
241 disable_irq(INT_ADM_AARM);
242 return 0;
211} 243}
212 244
213arch_initcall(msm_init_datamover); 245arch_initcall(msm_init_datamover);
diff --git a/arch/arm/mach-msm/include/mach/board.h b/arch/arm/mach-msm/include/mach/board.h
index a7639493c095..264d62e519f3 100644
--- a/arch/arm/mach-msm/include/mach/board.h
+++ b/arch/arm/mach-msm/include/mach/board.h
@@ -33,5 +33,6 @@ void __init msm_add_devices(void);
33void __init msm_map_common_io(void); 33void __init msm_map_common_io(void);
34void __init msm_init_irq(void); 34void __init msm_init_irq(void);
35void __init msm_init_gpio(void); 35void __init msm_init_gpio(void);
36void __init msm_clock_init(void);
36 37
37#endif 38#endif
diff --git a/arch/arm/mach-msm/include/mach/debug-macro.S b/arch/arm/mach-msm/include/mach/debug-macro.S
index 528eef4b605c..1db3c97dbc49 100644
--- a/arch/arm/mach-msm/include/mach/debug-macro.S
+++ b/arch/arm/mach-msm/include/mach/debug-macro.S
@@ -22,18 +22,22 @@
22 mrc p15, 0, \rx, c1, c0 22 mrc p15, 0, \rx, c1, c0
23 tst \rx, #1 23 tst \rx, #1
24 ldreq \rx, =MSM_UART1_PHYS 24 ldreq \rx, =MSM_UART1_PHYS
25 ldrne \rx, =MSM_UART1_BASE 25 movne \rx, #0
26 .endm 26 .endm
27 27
28 .macro senduart,rd,rx 28 .macro senduart,rd,rx
29 str \rd, [\rx, #0x0C] 29 teq \rx, #0
30 strne \rd, [\rx, #0x0C]
30 .endm 31 .endm
31 32
32 .macro waituart,rd,rx 33 .macro waituart,rd,rx
33 @ wait for TX_READY 34 @ wait for TX_READY
35 teq \rx, #0
36 bne 2f
341: ldr \rd, [\rx, #0x08] 371: ldr \rd, [\rx, #0x08]
35 tst \rd, #0x04 38 tst \rd, #0x04
36 beq 1b 39 beq 1b
402:
37 .endm 41 .endm
38 42
39 .macro busyuart,rd,rx 43 .macro busyuart,rd,rx
diff --git a/arch/arm/mach-msm/include/mach/dma.h b/arch/arm/mach-msm/include/mach/dma.h
index ad1c87f86d10..5ab5bdffab07 100644
--- a/arch/arm/mach-msm/include/mach/dma.h
+++ b/arch/arm/mach-msm/include/mach/dma.h
@@ -1,4 +1,4 @@
1/* arch/arm/mach-msm/include/mach/dma.h 1/* linux/include/asm-arm/arch-msm/dma.h
2 * 2 *
3 * Copyright (C) 2007 Google, Inc. 3 * Copyright (C) 2007 Google, Inc.
4 * 4 *
@@ -18,17 +18,21 @@
18#include <linux/list.h> 18#include <linux/list.h>
19#include <mach/msm_iomap.h> 19#include <mach/msm_iomap.h>
20 20
21struct msm_dmov_errdata {
22 uint32_t flush[6];
23};
24
21struct msm_dmov_cmd { 25struct msm_dmov_cmd {
22 struct list_head list; 26 struct list_head list;
23 unsigned int cmdptr; 27 unsigned int cmdptr;
24 void (*complete_func)(struct msm_dmov_cmd *cmd, unsigned int result); 28 void (*complete_func)(struct msm_dmov_cmd *cmd,
25/* void (*user_result_func)(struct msm_dmov_cmd *cmd); */ 29 unsigned int result,
30 struct msm_dmov_errdata *err);
26}; 31};
27 32
28void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd); 33void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd);
29void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd); 34void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd, int graceful);
30int msm_dmov_exec_cmd(unsigned id, unsigned int cmdptr); 35int msm_dmov_exec_cmd(unsigned id, unsigned int cmdptr);
31/* int msm_dmov_exec_cmd_etc(unsigned id, unsigned int cmdptr, int timeout, int interruptible); */
32 36
33 37
34 38
@@ -122,6 +126,16 @@ typedef struct {
122 unsigned _reserved; 126 unsigned _reserved;
123} dmov_sg; 127} dmov_sg;
124 128
129/* Box mode */
130typedef struct {
131 uint32_t cmd;
132 uint32_t src_row_addr;
133 uint32_t dst_row_addr;
134 uint32_t src_dst_len;
135 uint32_t num_rows;
136 uint32_t row_offset;
137} dmov_box;
138
125/* bits for the cmd field of the above structures */ 139/* bits for the cmd field of the above structures */
126 140
127#define CMD_LC (1 << 31) /* last command */ 141#define CMD_LC (1 << 31) /* last command */
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap.h b/arch/arm/mach-msm/include/mach/msm_iomap.h
index e221f58ceea3..2f7b4c8620d9 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap.h
@@ -37,11 +37,17 @@
37 * 37 *
38 */ 38 */
39 39
40#define MSM_VIC_BASE 0xE0000000 40#ifdef __ASSEMBLY__
41#define IOMEM(x) x
42#else
43#define IOMEM(x) ((void __force __iomem *)(x))
44#endif
45
46#define MSM_VIC_BASE IOMEM(0xE0000000)
41#define MSM_VIC_PHYS 0xC0000000 47#define MSM_VIC_PHYS 0xC0000000
42#define MSM_VIC_SIZE SZ_4K 48#define MSM_VIC_SIZE SZ_4K
43 49
44#define MSM_CSR_BASE 0xE0001000 50#define MSM_CSR_BASE IOMEM(0xE0001000)
45#define MSM_CSR_PHYS 0xC0100000 51#define MSM_CSR_PHYS 0xC0100000
46#define MSM_CSR_SIZE SZ_4K 52#define MSM_CSR_SIZE SZ_4K
47 53
@@ -49,56 +55,67 @@
49#define MSM_GPT_BASE MSM_CSR_BASE 55#define MSM_GPT_BASE MSM_CSR_BASE
50#define MSM_GPT_SIZE SZ_4K 56#define MSM_GPT_SIZE SZ_4K
51 57
52#define MSM_DMOV_BASE 0xE0002000 58#define MSM_DMOV_BASE IOMEM(0xE0002000)
53#define MSM_DMOV_PHYS 0xA9700000 59#define MSM_DMOV_PHYS 0xA9700000
54#define MSM_DMOV_SIZE SZ_4K 60#define MSM_DMOV_SIZE SZ_4K
55 61
56#define MSM_UART1_BASE 0xE0003000 62#define MSM_GPIO1_BASE IOMEM(0xE0003000)
63#define MSM_GPIO1_PHYS 0xA9200000
64#define MSM_GPIO1_SIZE SZ_4K
65
66#define MSM_GPIO2_BASE IOMEM(0xE0004000)
67#define MSM_GPIO2_PHYS 0xA9300000
68#define MSM_GPIO2_SIZE SZ_4K
69
70#define MSM_CLK_CTL_BASE IOMEM(0xE0005000)
71#define MSM_CLK_CTL_PHYS 0xA8600000
72#define MSM_CLK_CTL_SIZE SZ_4K
73
74#define MSM_SHARED_RAM_BASE IOMEM(0xE0100000)
75#define MSM_SHARED_RAM_PHYS 0x01F00000
76#define MSM_SHARED_RAM_SIZE SZ_1M
77
57#define MSM_UART1_PHYS 0xA9A00000 78#define MSM_UART1_PHYS 0xA9A00000
58#define MSM_UART1_SIZE SZ_4K 79#define MSM_UART1_SIZE SZ_4K
59 80
60#define MSM_UART2_BASE 0xE0004000
61#define MSM_UART2_PHYS 0xA9B00000 81#define MSM_UART2_PHYS 0xA9B00000
62#define MSM_UART2_SIZE SZ_4K 82#define MSM_UART2_SIZE SZ_4K
63 83
64#define MSM_UART3_BASE 0xE0005000
65#define MSM_UART3_PHYS 0xA9C00000 84#define MSM_UART3_PHYS 0xA9C00000
66#define MSM_UART3_SIZE SZ_4K 85#define MSM_UART3_SIZE SZ_4K
67 86
68#define MSM_I2C_BASE 0xE0006000 87#define MSM_SDC1_PHYS 0xA0400000
69#define MSM_I2C_PHYS 0xA9900000 88#define MSM_SDC1_SIZE SZ_4K
70#define MSM_I2C_SIZE SZ_4K
71 89
72#define MSM_GPIO1_BASE 0xE0007000 90#define MSM_SDC2_PHYS 0xA0500000
73#define MSM_GPIO1_PHYS 0xA9200000 91#define MSM_SDC2_SIZE SZ_4K
74#define MSM_GPIO1_SIZE SZ_4K
75 92
76#define MSM_GPIO2_BASE 0xE0008000 93#define MSM_SDC3_PHYS 0xA0600000
77#define MSM_GPIO2_PHYS 0xA9300000 94#define MSM_SDC3_SIZE SZ_4K
78#define MSM_GPIO2_SIZE SZ_4K 95
96#define MSM_SDC4_PHYS 0xA0700000
97#define MSM_SDC4_SIZE SZ_4K
98
99#define MSM_I2C_PHYS 0xA9900000
100#define MSM_I2C_SIZE SZ_4K
79 101
80#define MSM_HSUSB_BASE 0xE0009000
81#define MSM_HSUSB_PHYS 0xA0800000 102#define MSM_HSUSB_PHYS 0xA0800000
82#define MSM_HSUSB_SIZE SZ_4K 103#define MSM_HSUSB_SIZE SZ_4K
83 104
84#define MSM_CLK_CTL_BASE 0xE000A000
85#define MSM_CLK_CTL_PHYS 0xA8600000
86#define MSM_CLK_CTL_SIZE SZ_4K
87
88#define MSM_PMDH_BASE 0xE000B000
89#define MSM_PMDH_PHYS 0xAA600000 105#define MSM_PMDH_PHYS 0xAA600000
90#define MSM_PMDH_SIZE SZ_4K 106#define MSM_PMDH_SIZE SZ_4K
91 107
92#define MSM_EMDH_BASE 0xE000C000
93#define MSM_EMDH_PHYS 0xAA700000 108#define MSM_EMDH_PHYS 0xAA700000
94#define MSM_EMDH_SIZE SZ_4K 109#define MSM_EMDH_SIZE SZ_4K
95 110
96#define MSM_MDP_BASE 0xE0010000
97#define MSM_MDP_PHYS 0xAA200000 111#define MSM_MDP_PHYS 0xAA200000
98#define MSM_MDP_SIZE 0x000F0000 112#define MSM_MDP_SIZE 0x000F0000
99 113
100#define MSM_SHARED_RAM_BASE 0xE0100000 114#define MSM_MDC_PHYS 0xAA500000
101#define MSM_SHARED_RAM_PHYS 0x01F00000 115#define MSM_MDC_SIZE SZ_1M
102#define MSM_SHARED_RAM_SIZE SZ_1M 116
117#define MSM_AD5_PHYS 0xAC000000
118#define MSM_AD5_SIZE (SZ_1M*13)
119
103 120
104#endif 121#endif
diff --git a/arch/arm/mach-msm/include/mach/vreg.h b/arch/arm/mach-msm/include/mach/vreg.h
new file mode 100644
index 000000000000..9f9e25cb718e
--- /dev/null
+++ b/arch/arm/mach-msm/include/mach/vreg.h
@@ -0,0 +1,29 @@
1/* linux/include/asm-arm/arch-msm/vreg.h
2 *
3 * Copyright (C) 2008 Google, Inc.
4 * Author: Brian Swetland <swetland@google.com>
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#ifndef __ARCH_ARM_MACH_MSM_VREG_H
18#define __ARCH_ARM_MACH_MSM_VREG_H
19
20struct vreg;
21
22struct vreg *vreg_get(struct device *dev, const char *id);
23void vreg_put(struct vreg *vreg);
24
25int vreg_enable(struct vreg *vreg);
26void vreg_disable(struct vreg *vreg);
27int vreg_set_level(struct vreg *vreg, unsigned mv);
28
29#endif
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c
index 7999e4ba8e20..6e7692ff6f2c 100644
--- a/arch/arm/mach-msm/io.c
+++ b/arch/arm/mach-msm/io.c
@@ -28,7 +28,7 @@
28#include <mach/board.h> 28#include <mach/board.h>
29 29
30#define MSM_DEVICE(name) { \ 30#define MSM_DEVICE(name) { \
31 .virtual = MSM_##name##_BASE, \ 31 .virtual = (unsigned long) MSM_##name##_BASE, \
32 .pfn = __phys_to_pfn(MSM_##name##_PHYS), \ 32 .pfn = __phys_to_pfn(MSM_##name##_PHYS), \
33 .length = MSM_##name##_SIZE, \ 33 .length = MSM_##name##_SIZE, \
34 .type = MT_DEVICE_NONSHARED, \ 34 .type = MT_DEVICE_NONSHARED, \
@@ -39,19 +39,11 @@ static struct map_desc msm_io_desc[] __initdata = {
39 MSM_DEVICE(CSR), 39 MSM_DEVICE(CSR),
40 MSM_DEVICE(GPT), 40 MSM_DEVICE(GPT),
41 MSM_DEVICE(DMOV), 41 MSM_DEVICE(DMOV),
42 MSM_DEVICE(UART1),
43 MSM_DEVICE(UART2),
44 MSM_DEVICE(UART3),
45 MSM_DEVICE(I2C),
46 MSM_DEVICE(GPIO1), 42 MSM_DEVICE(GPIO1),
47 MSM_DEVICE(GPIO2), 43 MSM_DEVICE(GPIO2),
48 MSM_DEVICE(HSUSB),
49 MSM_DEVICE(CLK_CTL), 44 MSM_DEVICE(CLK_CTL),
50 MSM_DEVICE(PMDH),
51 MSM_DEVICE(EMDH),
52 MSM_DEVICE(MDP),
53 { 45 {
54 .virtual = MSM_SHARED_RAM_BASE, 46 .virtual = (unsigned long) MSM_SHARED_RAM_BASE,
55 .pfn = __phys_to_pfn(MSM_SHARED_RAM_PHYS), 47 .pfn = __phys_to_pfn(MSM_SHARED_RAM_PHYS),
56 .length = MSM_SHARED_RAM_SIZE, 48 .length = MSM_SHARED_RAM_SIZE,
57 .type = MT_DEVICE, 49 .type = MT_DEVICE,
diff --git a/arch/arm/mach-msm/irq.c b/arch/arm/mach-msm/irq.c
index 04b8d182ff8a..69ca0dd79bdf 100644
--- a/arch/arm/mach-msm/irq.c
+++ b/arch/arm/mach-msm/irq.c
@@ -66,20 +66,20 @@
66 66
67static void msm_irq_ack(unsigned int irq) 67static void msm_irq_ack(unsigned int irq)
68{ 68{
69 unsigned reg = VIC_INT_CLEAR0 + ((irq & 32) ? 4 : 0); 69 void __iomem *reg = VIC_INT_CLEAR0 + ((irq & 32) ? 4 : 0);
70 irq = 1 << (irq & 31); 70 irq = 1 << (irq & 31);
71 writel(irq, reg); 71 writel(irq, reg);
72} 72}
73 73
74static void msm_irq_mask(unsigned int irq) 74static void msm_irq_mask(unsigned int irq)
75{ 75{
76 unsigned reg = VIC_INT_ENCLEAR0 + ((irq & 32) ? 4 : 0); 76 void __iomem *reg = VIC_INT_ENCLEAR0 + ((irq & 32) ? 4 : 0);
77 writel(1 << (irq & 31), reg); 77 writel(1 << (irq & 31), reg);
78} 78}
79 79
80static void msm_irq_unmask(unsigned int irq) 80static void msm_irq_unmask(unsigned int irq)
81{ 81{
82 unsigned reg = VIC_INT_ENSET0 + ((irq & 32) ? 4 : 0); 82 void __iomem *reg = VIC_INT_ENSET0 + ((irq & 32) ? 4 : 0);
83 writel(1 << (irq & 31), reg); 83 writel(1 << (irq & 31), reg);
84} 84}
85 85
@@ -90,8 +90,8 @@ static int msm_irq_set_wake(unsigned int irq, unsigned int on)
90 90
91static int msm_irq_set_type(unsigned int irq, unsigned int flow_type) 91static int msm_irq_set_type(unsigned int irq, unsigned int flow_type)
92{ 92{
93 unsigned treg = VIC_INT_TYPE0 + ((irq & 32) ? 4 : 0); 93 void __iomem *treg = VIC_INT_TYPE0 + ((irq & 32) ? 4 : 0);
94 unsigned preg = VIC_INT_POLARITY0 + ((irq & 32) ? 4 : 0); 94 void __iomem *preg = VIC_INT_POLARITY0 + ((irq & 32) ? 4 : 0);
95 int b = 1 << (irq & 31); 95 int b = 1 << (irq & 31);
96 96
97 if (flow_type & (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_LOW)) 97 if (flow_type & (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_LOW))
diff --git a/arch/arm/mach-msm/proc_comm.c b/arch/arm/mach-msm/proc_comm.c
new file mode 100644
index 000000000000..915ee704ed3c
--- /dev/null
+++ b/arch/arm/mach-msm/proc_comm.c
@@ -0,0 +1,110 @@
1/* arch/arm/mach-msm/proc_comm.c
2 *
3 * Copyright (C) 2007-2008 Google, Inc.
4 * Author: Brian Swetland <swetland@google.com>
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#include <linux/delay.h>
18#include <linux/errno.h>
19#include <linux/io.h>
20#include <linux/spinlock.h>
21#include <mach/msm_iomap.h>
22#include <mach/system.h>
23
24#include "proc_comm.h"
25
26#define MSM_A2M_INT(n) (MSM_CSR_BASE + 0x400 + (n) * 4)
27
28static inline void notify_other_proc_comm(void)
29{
30 writel(1, MSM_A2M_INT(6));
31}
32
33#define APP_COMMAND 0x00
34#define APP_STATUS 0x04
35#define APP_DATA1 0x08
36#define APP_DATA2 0x0C
37
38#define MDM_COMMAND 0x10
39#define MDM_STATUS 0x14
40#define MDM_DATA1 0x18
41#define MDM_DATA2 0x1C
42
43static DEFINE_SPINLOCK(proc_comm_lock);
44
45/* The higher level SMD support will install this to
46 * provide a way to check for and handle modem restart.
47 */
48int (*msm_check_for_modem_crash)(void);
49
50/* Poll for a state change, checking for possible
51 * modem crashes along the way (so we don't wait
52 * forever while the ARM9 is blowing up).
53 *
54 * Return an error in the event of a modem crash and
55 * restart so the msm_proc_comm() routine can restart
56 * the operation from the beginning.
57 */
58static int proc_comm_wait_for(void __iomem *addr, unsigned value)
59{
60 for (;;) {
61 if (readl(addr) == value)
62 return 0;
63
64 if (msm_check_for_modem_crash)
65 if (msm_check_for_modem_crash())
66 return -EAGAIN;
67 }
68}
69
70int msm_proc_comm(unsigned cmd, unsigned *data1, unsigned *data2)
71{
72 void __iomem *base = MSM_SHARED_RAM_BASE;
73 unsigned long flags;
74 int ret;
75
76 spin_lock_irqsave(&proc_comm_lock, flags);
77
78 for (;;) {
79 if (proc_comm_wait_for(base + MDM_STATUS, PCOM_READY))
80 continue;
81
82 writel(cmd, base + APP_COMMAND);
83 writel(data1 ? *data1 : 0, base + APP_DATA1);
84 writel(data2 ? *data2 : 0, base + APP_DATA2);
85
86 notify_other_proc_comm();
87
88 if (proc_comm_wait_for(base + APP_COMMAND, PCOM_CMD_DONE))
89 continue;
90
91 if (readl(base + APP_STATUS) != PCOM_CMD_FAIL) {
92 if (data1)
93 *data1 = readl(base + APP_DATA1);
94 if (data2)
95 *data2 = readl(base + APP_DATA2);
96 ret = 0;
97 } else {
98 ret = -EIO;
99 }
100 break;
101 }
102
103 writel(PCOM_CMD_IDLE, base + APP_COMMAND);
104
105 spin_unlock_irqrestore(&proc_comm_lock, flags);
106
107 return ret;
108}
109
110
diff --git a/arch/arm/mach-msm/proc_comm.h b/arch/arm/mach-msm/proc_comm.h
new file mode 100644
index 000000000000..834760f25692
--- /dev/null
+++ b/arch/arm/mach-msm/proc_comm.h
@@ -0,0 +1,165 @@
1/* arch/arm/mach-msm/proc_comm.h
2 *
3 * Copyright (c) 2007 QUALCOMM Incorporated
4 *
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 */
15
16#ifndef _ARCH_ARM_MACH_MSM_PROC_COMM_H_
17#define _ARCH_ARM_MACH_MSM_PROC_COMM_H_
18
19enum {
20 PCOM_CMD_IDLE = 0x0,
21 PCOM_CMD_DONE,
22 PCOM_RESET_APPS,
23 PCOM_RESET_CHIP,
24 PCOM_CONFIG_NAND_MPU,
25 PCOM_CONFIG_USB_CLKS,
26 PCOM_GET_POWER_ON_STATUS,
27 PCOM_GET_WAKE_UP_STATUS,
28 PCOM_GET_BATT_LEVEL,
29 PCOM_CHG_IS_CHARGING,
30 PCOM_POWER_DOWN,
31 PCOM_USB_PIN_CONFIG,
32 PCOM_USB_PIN_SEL,
33 PCOM_SET_RTC_ALARM,
34 PCOM_NV_READ,
35 PCOM_NV_WRITE,
36 PCOM_GET_UUID_HIGH,
37 PCOM_GET_UUID_LOW,
38 PCOM_GET_HW_ENTROPY,
39 PCOM_RPC_GPIO_TLMM_CONFIG_REMOTE,
40 PCOM_CLKCTL_RPC_ENABLE,
41 PCOM_CLKCTL_RPC_DISABLE,
42 PCOM_CLKCTL_RPC_RESET,
43 PCOM_CLKCTL_RPC_SET_FLAGS,
44 PCOM_CLKCTL_RPC_SET_RATE,
45 PCOM_CLKCTL_RPC_MIN_RATE,
46 PCOM_CLKCTL_RPC_MAX_RATE,
47 PCOM_CLKCTL_RPC_RATE,
48 PCOM_CLKCTL_RPC_PLL_REQUEST,
49 PCOM_CLKCTL_RPC_ENABLED,
50 PCOM_VREG_SWITCH,
51 PCOM_VREG_SET_LEVEL,
52 PCOM_GPIO_TLMM_CONFIG_GROUP,
53 PCOM_GPIO_TLMM_UNCONFIG_GROUP,
54 PCOM_NV_WRITE_BYTES_4_7,
55 PCOM_CONFIG_DISP,
56 PCOM_GET_FTM_BOOT_COUNT,
57 PCOM_RPC_GPIO_TLMM_CONFIG_EX,
58 PCOM_PM_MPP_CONFIG,
59 PCOM_GPIO_IN,
60 PCOM_GPIO_OUT,
61 PCOM_RESET_MODEM,
62 PCOM_RESET_CHIP_IMM,
63 PCOM_PM_VID_EN,
64 PCOM_VREG_PULLDOWN,
65 PCOM_NUM_CMDS,
66};
67
68enum {
69 PCOM_INVALID_STATUS = 0x0,
70 PCOM_READY,
71 PCOM_CMD_RUNNING,
72 PCOM_CMD_SUCCESS,
73 PCOM_CMD_FAIL,
74};
75
76/* List of VREGs that support the Pull Down Resistor setting. */
77enum {
78 PM_VREG_PDOWN_MSMA_ID,
79 PM_VREG_PDOWN_MSMP_ID,
80 PM_VREG_PDOWN_MSME1_ID, /* Not supported in Panoramix */
81 PM_VREG_PDOWN_MSMC1_ID, /* Not supported in PM6620 */
82 PM_VREG_PDOWN_MSMC2_ID, /* Supported in PM7500 only */
83 PM_VREG_PDOWN_GP3_ID, /* Supported in PM7500 only */
84 PM_VREG_PDOWN_MSME2_ID, /* Supported in PM7500 and Panoramix only */
85 PM_VREG_PDOWN_GP4_ID, /* Supported in PM7500 only */
86 PM_VREG_PDOWN_GP1_ID, /* Supported in PM7500 only */
87 PM_VREG_PDOWN_TCXO_ID,
88 PM_VREG_PDOWN_PA_ID,
89 PM_VREG_PDOWN_RFTX_ID,
90 PM_VREG_PDOWN_RFRX1_ID,
91 PM_VREG_PDOWN_RFRX2_ID,
92 PM_VREG_PDOWN_SYNT_ID,
93 PM_VREG_PDOWN_WLAN_ID,
94 PM_VREG_PDOWN_USB_ID,
95 PM_VREG_PDOWN_MMC_ID,
96 PM_VREG_PDOWN_RUIM_ID,
97 PM_VREG_PDOWN_MSMC0_ID, /* Supported in PM6610 only */
98 PM_VREG_PDOWN_GP2_ID, /* Supported in PM7500 only */
99 PM_VREG_PDOWN_GP5_ID, /* Supported in PM7500 only */
100 PM_VREG_PDOWN_GP6_ID, /* Supported in PM7500 only */
101 PM_VREG_PDOWN_RF_ID,
102 PM_VREG_PDOWN_RF_VCO_ID,
103 PM_VREG_PDOWN_MPLL_ID,
104 PM_VREG_PDOWN_S2_ID,
105 PM_VREG_PDOWN_S3_ID,
106 PM_VREG_PDOWN_RFUBM_ID,
107
108 /* new for HAN */
109 PM_VREG_PDOWN_RF1_ID,
110 PM_VREG_PDOWN_RF2_ID,
111 PM_VREG_PDOWN_RFA_ID,
112 PM_VREG_PDOWN_CDC2_ID,
113 PM_VREG_PDOWN_RFTX2_ID,
114 PM_VREG_PDOWN_USIM_ID,
115 PM_VREG_PDOWN_USB2P6_ID,
116 PM_VREG_PDOWN_USB3P3_ID,
117 PM_VREG_PDOWN_INVALID_ID,
118
119 /* backward compatible enums only */
120 PM_VREG_PDOWN_CAM_ID = PM_VREG_PDOWN_GP1_ID,
121 PM_VREG_PDOWN_MDDI_ID = PM_VREG_PDOWN_GP2_ID,
122 PM_VREG_PDOWN_RUIM2_ID = PM_VREG_PDOWN_GP3_ID,
123 PM_VREG_PDOWN_AUX_ID = PM_VREG_PDOWN_GP4_ID,
124 PM_VREG_PDOWN_AUX2_ID = PM_VREG_PDOWN_GP5_ID,
125 PM_VREG_PDOWN_BT_ID = PM_VREG_PDOWN_GP6_ID,
126
127 PM_VREG_PDOWN_MSME_ID = PM_VREG_PDOWN_MSME1_ID,
128 PM_VREG_PDOWN_MSMC_ID = PM_VREG_PDOWN_MSMC1_ID,
129 PM_VREG_PDOWN_RFA1_ID = PM_VREG_PDOWN_RFRX2_ID,
130 PM_VREG_PDOWN_RFA2_ID = PM_VREG_PDOWN_RFTX2_ID,
131 PM_VREG_PDOWN_XO_ID = PM_VREG_PDOWN_TCXO_ID
132};
133
134/* gpio info for PCOM_RPC_GPIO_TLMM_CONFIG_EX */
135
136#define GPIO_ENABLE 0
137#define GPIO_DISABLE 1
138
139#define GPIO_INPUT 0
140#define GPIO_OUTPUT 1
141
142#define GPIO_NO_PULL 0
143#define GPIO_PULL_DOWN 1
144#define GPIO_KEEPER 2
145#define GPIO_PULL_UP 3
146
147#define GPIO_2MA 0
148#define GPIO_4MA 1
149#define GPIO_6MA 2
150#define GPIO_8MA 3
151#define GPIO_10MA 4
152#define GPIO_12MA 5
153#define GPIO_14MA 6
154#define GPIO_16MA 7
155
156#define PCOM_GPIO_CFG(gpio, func, dir, pull, drvstr) \
157 ((((gpio) & 0x3FF) << 4) | \
158 ((func) & 0xf) | \
159 (((dir) & 0x1) << 14) | \
160 (((pull) & 0x3) << 15) | \
161 (((drvstr) & 0xF) << 17))
162
163int msm_proc_comm(unsigned cmd, unsigned *data1, unsigned *data2);
164
165#endif
diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c
index 2bffe9b7e9fe..345a14cb73c3 100644
--- a/arch/arm/mach-msm/timer.c
+++ b/arch/arm/mach-msm/timer.c
@@ -45,7 +45,7 @@ struct msm_clock {
45 struct clock_event_device clockevent; 45 struct clock_event_device clockevent;
46 struct clocksource clocksource; 46 struct clocksource clocksource;
47 struct irqaction irq; 47 struct irqaction irq;
48 uint32_t regbase; 48 void __iomem *regbase;
49 uint32_t freq; 49 uint32_t freq;
50 uint32_t shift; 50 uint32_t shift;
51}; 51};
diff --git a/arch/arm/mach-msm/vreg.c b/arch/arm/mach-msm/vreg.c
new file mode 100644
index 000000000000..fcb0b9f25684
--- /dev/null
+++ b/arch/arm/mach-msm/vreg.c
@@ -0,0 +1,143 @@
1/* arch/arm/mach-msm/vreg.c
2 *
3 * Copyright (C) 2008 Google, Inc.
4 * Author: Brian Swetland <swetland@google.com>
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#include <linux/kernel.h>
18#include <linux/device.h>
19#include <linux/init.h>
20#include <linux/debugfs.h>
21#include <mach/vreg.h>
22
23#include "proc_comm.h"
24
25struct vreg {
26 const char *name;
27 unsigned id;
28};
29
30#define VREG(_name, _id) { .name = _name, .id = _id, }
31
32static struct vreg vregs[] = {
33 VREG("msma", 0),
34 VREG("msmp", 1),
35 VREG("msme1", 2),
36 VREG("msmc1", 3),
37 VREG("msmc2", 4),
38 VREG("gp3", 5),
39 VREG("msme2", 6),
40 VREG("gp4", 7),
41 VREG("gp1", 8),
42 VREG("tcxo", 9),
43 VREG("pa", 10),
44 VREG("rftx", 11),
45 VREG("rfrx1", 12),
46 VREG("rfrx2", 13),
47 VREG("synt", 14),
48 VREG("wlan", 15),
49 VREG("usb", 16),
50 VREG("boost", 17),
51 VREG("mmc", 18),
52 VREG("ruim", 19),
53 VREG("msmc0", 20),
54 VREG("gp2", 21),
55 VREG("gp5", 22),
56 VREG("gp6", 23),
57 VREG("rf", 24),
58 VREG("rf_vco", 26),
59 VREG("mpll", 27),
60 VREG("s2", 28),
61 VREG("s3", 29),
62 VREG("rfubm", 30),
63 VREG("ncp", 31),
64};
65
66struct vreg *vreg_get(struct device *dev, const char *id)
67{
68 int n;
69 for (n = 0; n < ARRAY_SIZE(vregs); n++) {
70 if (!strcmp(vregs[n].name, id))
71 return vregs + n;
72 }
73 return 0;
74}
75
76void vreg_put(struct vreg *vreg)
77{
78}
79
80int vreg_enable(struct vreg *vreg)
81{
82 unsigned id = vreg->id;
83 unsigned enable = 1;
84 return msm_proc_comm(PCOM_VREG_SWITCH, &id, &enable);
85}
86
87void vreg_disable(struct vreg *vreg)
88{
89 unsigned id = vreg->id;
90 unsigned enable = 0;
91 msm_proc_comm(PCOM_VREG_SWITCH, &id, &enable);
92}
93
94int vreg_set_level(struct vreg *vreg, unsigned mv)
95{
96 unsigned id = vreg->id;
97 return msm_proc_comm(PCOM_VREG_SET_LEVEL, &id, &mv);
98}
99
100#if defined(CONFIG_DEBUG_FS)
101
102static int vreg_debug_set(void *data, u64 val)
103{
104 struct vreg *vreg = data;
105 switch (val) {
106 case 0:
107 vreg_disable(vreg);
108 break;
109 case 1:
110 vreg_enable(vreg);
111 break;
112 default:
113 vreg_set_level(vreg, val);
114 break;
115 }
116 return 0;
117}
118
119static int vreg_debug_get(void *data, u64 *val)
120{
121 return -ENOSYS;
122}
123
124DEFINE_SIMPLE_ATTRIBUTE(vreg_fops, vreg_debug_get, vreg_debug_set, "%llu\n");
125
126static int __init vreg_debug_init(void)
127{
128 struct dentry *dent;
129 int n;
130
131 dent = debugfs_create_dir("vreg", 0);
132 if (IS_ERR(dent))
133 return 0;
134
135 for (n = 0; n < ARRAY_SIZE(vregs); n++)
136 (void) debugfs_create_file(vregs[n].name, 0644,
137 dent, vregs + n, &vreg_fops);
138
139 return 0;
140}
141
142device_initcall(vreg_debug_init);
143#endif
diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
index 49f434c39eb7..2e285bbb7bbd 100644
--- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
+++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
@@ -13,6 +13,7 @@
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14#include <linux/ata_platform.h> 14#include <linux/ata_platform.h>
15#include <linux/mv643xx_eth.h> 15#include <linux/mv643xx_eth.h>
16#include <linux/ethtool.h>
16#include <mach/mv78xx0.h> 17#include <mach/mv78xx0.h>
17#include <asm/mach-types.h> 18#include <asm/mach-types.h>
18#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
@@ -28,10 +29,14 @@ static struct mv643xx_eth_platform_data db78x00_ge01_data = {
28 29
29static struct mv643xx_eth_platform_data db78x00_ge10_data = { 30static struct mv643xx_eth_platform_data db78x00_ge10_data = {
30 .phy_addr = MV643XX_ETH_PHY_NONE, 31 .phy_addr = MV643XX_ETH_PHY_NONE,
32 .speed = SPEED_1000,
33 .duplex = DUPLEX_FULL,
31}; 34};
32 35
33static struct mv643xx_eth_platform_data db78x00_ge11_data = { 36static struct mv643xx_eth_platform_data db78x00_ge11_data = {
34 .phy_addr = MV643XX_ETH_PHY_NONE, 37 .phy_addr = MV643XX_ETH_PHY_NONE,
38 .speed = SPEED_1000,
39 .duplex = DUPLEX_FULL,
35}; 40};
36 41
37static struct mv_sata_platform_data db78x00_sata_data = { 42static struct mv_sata_platform_data db78x00_sata_data = {
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 9625ef5975d0..437065c25c9c 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -19,6 +19,7 @@
19#include <linux/mv643xx_i2c.h> 19#include <linux/mv643xx_i2c.h>
20#include <linux/ata_platform.h> 20#include <linux/ata_platform.h>
21#include <linux/spi/orion_spi.h> 21#include <linux/spi/orion_spi.h>
22#include <net/dsa.h>
22#include <asm/page.h> 23#include <asm/page.h>
23#include <asm/setup.h> 24#include <asm/setup.h>
24#include <asm/timex.h> 25#include <asm/timex.h>
@@ -198,6 +199,40 @@ void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
198 199
199 200
200/***************************************************************************** 201/*****************************************************************************
202 * Ethernet switch
203 ****************************************************************************/
204static struct resource orion5x_switch_resources[] = {
205 {
206 .start = 0,
207 .end = 0,
208 .flags = IORESOURCE_IRQ,
209 },
210};
211
212static struct platform_device orion5x_switch_device = {
213 .name = "dsa",
214 .id = 0,
215 .num_resources = 0,
216 .resource = orion5x_switch_resources,
217};
218
219void __init orion5x_eth_switch_init(struct dsa_platform_data *d, int irq)
220{
221 if (irq != NO_IRQ) {
222 orion5x_switch_resources[0].start = irq;
223 orion5x_switch_resources[0].end = irq;
224 orion5x_switch_device.num_resources = 1;
225 }
226
227 d->mii_bus = &orion5x_eth_shared.dev;
228 d->netdev = &orion5x_eth.dev;
229 orion5x_switch_device.dev.platform_data = d;
230
231 platform_device_register(&orion5x_switch_device);
232}
233
234
235/*****************************************************************************
201 * I2C 236 * I2C
202 ****************************************************************************/ 237 ****************************************************************************/
203static struct mv64xxx_i2c_pdata orion5x_i2c_pdata = { 238static struct mv64xxx_i2c_pdata orion5x_i2c_pdata = {
@@ -275,7 +310,8 @@ void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
275 * SPI 310 * SPI
276 ****************************************************************************/ 311 ****************************************************************************/
277static struct orion_spi_info orion5x_spi_plat_data = { 312static struct orion_spi_info orion5x_spi_plat_data = {
278 .tclk = 0, 313 .tclk = 0,
314 .enable_clock_fix = 1,
279}; 315};
280 316
281static struct resource orion5x_spi_resources[] = { 317static struct resource orion5x_spi_resources[] = {
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h
index 1f8b2da676a5..a000c7c6ee96 100644
--- a/arch/arm/mach-orion5x/common.h
+++ b/arch/arm/mach-orion5x/common.h
@@ -1,6 +1,7 @@
1#ifndef __ARCH_ORION5X_COMMON_H 1#ifndef __ARCH_ORION5X_COMMON_H
2#define __ARCH_ORION5X_COMMON_H 2#define __ARCH_ORION5X_COMMON_H
3 3
4struct dsa_platform_data;
4struct mv643xx_eth_platform_data; 5struct mv643xx_eth_platform_data;
5struct mv_sata_platform_data; 6struct mv_sata_platform_data;
6 7
@@ -29,6 +30,7 @@ void orion5x_setup_pcie_wa_win(u32 base, u32 size);
29void orion5x_ehci0_init(void); 30void orion5x_ehci0_init(void);
30void orion5x_ehci1_init(void); 31void orion5x_ehci1_init(void);
31void orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data); 32void orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data);
33void orion5x_eth_switch_init(struct dsa_platform_data *d, int irq);
32void orion5x_i2c_init(void); 34void orion5x_i2c_init(void);
33void orion5x_sata_init(struct mv_sata_platform_data *sata_data); 35void orion5x_sata_init(struct mv_sata_platform_data *sata_data);
34void orion5x_spi_init(void); 36void orion5x_spi_init(void);
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index 500cdadaf09c..15f53235ee30 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -16,6 +16,7 @@
16#include <linux/mtd/physmap.h> 16#include <linux/mtd/physmap.h>
17#include <linux/mv643xx_eth.h> 17#include <linux/mv643xx_eth.h>
18#include <linux/ethtool.h> 18#include <linux/ethtool.h>
19#include <net/dsa.h>
19#include <asm/mach-types.h> 20#include <asm/mach-types.h>
20#include <asm/gpio.h> 21#include <asm/gpio.h>
21#include <asm/leds.h> 22#include <asm/leds.h>
@@ -93,6 +94,15 @@ static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = {
93 .duplex = DUPLEX_FULL, 94 .duplex = DUPLEX_FULL,
94}; 95};
95 96
97static struct dsa_platform_data rd88f5181l_fxo_switch_data = {
98 .port_names[0] = "lan2",
99 .port_names[1] = "lan1",
100 .port_names[2] = "wan",
101 .port_names[3] = "cpu",
102 .port_names[5] = "lan4",
103 .port_names[7] = "lan3",
104};
105
96static void __init rd88f5181l_fxo_init(void) 106static void __init rd88f5181l_fxo_init(void)
97{ 107{
98 /* 108 /*
@@ -107,6 +117,7 @@ static void __init rd88f5181l_fxo_init(void)
107 */ 117 */
108 orion5x_ehci0_init(); 118 orion5x_ehci0_init();
109 orion5x_eth_init(&rd88f5181l_fxo_eth_data); 119 orion5x_eth_init(&rd88f5181l_fxo_eth_data);
120 orion5x_eth_switch_init(&rd88f5181l_fxo_switch_data, NO_IRQ);
110 orion5x_uart0_init(); 121 orion5x_uart0_init();
111 122
112 orion5x_setup_dev_boot_win(RD88F5181L_FXO_NOR_BOOT_BASE, 123 orion5x_setup_dev_boot_win(RD88F5181L_FXO_NOR_BOOT_BASE,
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index ebde81416499..8ad3934399d4 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -17,6 +17,7 @@
17#include <linux/mv643xx_eth.h> 17#include <linux/mv643xx_eth.h>
18#include <linux/ethtool.h> 18#include <linux/ethtool.h>
19#include <linux/i2c.h> 19#include <linux/i2c.h>
20#include <net/dsa.h>
20#include <asm/mach-types.h> 21#include <asm/mach-types.h>
21#include <asm/gpio.h> 22#include <asm/gpio.h>
22#include <asm/leds.h> 23#include <asm/leds.h>
@@ -94,6 +95,15 @@ static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = {
94 .duplex = DUPLEX_FULL, 95 .duplex = DUPLEX_FULL,
95}; 96};
96 97
98static struct dsa_platform_data rd88f5181l_ge_switch_data = {
99 .port_names[0] = "lan2",
100 .port_names[1] = "lan1",
101 .port_names[2] = "wan",
102 .port_names[3] = "cpu",
103 .port_names[5] = "lan4",
104 .port_names[7] = "lan3",
105};
106
97static struct i2c_board_info __initdata rd88f5181l_ge_i2c_rtc = { 107static struct i2c_board_info __initdata rd88f5181l_ge_i2c_rtc = {
98 I2C_BOARD_INFO("ds1338", 0x68), 108 I2C_BOARD_INFO("ds1338", 0x68),
99}; 109};
@@ -112,6 +122,7 @@ static void __init rd88f5181l_ge_init(void)
112 */ 122 */
113 orion5x_ehci0_init(); 123 orion5x_ehci0_init();
114 orion5x_eth_init(&rd88f5181l_ge_eth_data); 124 orion5x_eth_init(&rd88f5181l_ge_eth_data);
125 orion5x_eth_switch_init(&rd88f5181l_ge_switch_data, gpio_to_irq(8));
115 orion5x_i2c_init(); 126 orion5x_i2c_init();
116 orion5x_uart0_init(); 127 orion5x_uart0_init();
117 128
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index 40e049539091..262e25e4dace 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -19,6 +19,7 @@
19#include <linux/spi/orion_spi.h> 19#include <linux/spi/orion_spi.h>
20#include <linux/spi/flash.h> 20#include <linux/spi/flash.h>
21#include <linux/ethtool.h> 21#include <linux/ethtool.h>
22#include <net/dsa.h>
22#include <asm/mach-types.h> 23#include <asm/mach-types.h>
23#include <asm/gpio.h> 24#include <asm/gpio.h>
24#include <asm/leds.h> 25#include <asm/leds.h>
@@ -34,6 +35,15 @@ static struct mv643xx_eth_platform_data rd88f6183ap_ge_eth_data = {
34 .duplex = DUPLEX_FULL, 35 .duplex = DUPLEX_FULL,
35}; 36};
36 37
38static struct dsa_platform_data rd88f6183ap_ge_switch_data = {
39 .port_names[0] = "lan1",
40 .port_names[1] = "lan2",
41 .port_names[2] = "lan3",
42 .port_names[3] = "lan4",
43 .port_names[4] = "wan",
44 .port_names[5] = "cpu",
45};
46
37static struct mtd_partition rd88f6183ap_ge_partitions[] = { 47static struct mtd_partition rd88f6183ap_ge_partitions[] = {
38 { 48 {
39 .name = "kernel", 49 .name = "kernel",
@@ -79,6 +89,7 @@ static void __init rd88f6183ap_ge_init(void)
79 */ 89 */
80 orion5x_ehci0_init(); 90 orion5x_ehci0_init();
81 orion5x_eth_init(&rd88f6183ap_ge_eth_data); 91 orion5x_eth_init(&rd88f6183ap_ge_eth_data);
92 orion5x_eth_switch_init(&rd88f6183ap_ge_switch_data, gpio_to_irq(3));
82 spi_register_board_info(rd88f6183ap_ge_spi_slave_info, 93 spi_register_board_info(rd88f6183ap_ge_spi_slave_info,
83 ARRAY_SIZE(rd88f6183ap_ge_spi_slave_info)); 94 ARRAY_SIZE(rd88f6183ap_ge_spi_slave_info));
84 orion5x_spi_init(); 95 orion5x_spi_init();
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 9a4fd5256462..cc8f89200865 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -15,6 +15,7 @@
15#include <linux/mtd/physmap.h> 15#include <linux/mtd/physmap.h>
16#include <linux/mv643xx_eth.h> 16#include <linux/mv643xx_eth.h>
17#include <linux/ethtool.h> 17#include <linux/ethtool.h>
18#include <net/dsa.h>
18#include <asm/mach-types.h> 19#include <asm/mach-types.h>
19#include <asm/gpio.h> 20#include <asm/gpio.h>
20#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
@@ -105,6 +106,15 @@ static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = {
105 .duplex = DUPLEX_FULL, 106 .duplex = DUPLEX_FULL,
106}; 107};
107 108
109static struct dsa_platform_data wrt350n_v2_switch_data = {
110 .port_names[0] = "lan2",
111 .port_names[1] = "lan1",
112 .port_names[2] = "wan",
113 .port_names[3] = "cpu",
114 .port_names[5] = "lan3",
115 .port_names[7] = "lan4",
116};
117
108static void __init wrt350n_v2_init(void) 118static void __init wrt350n_v2_init(void)
109{ 119{
110 /* 120 /*
@@ -119,6 +129,7 @@ static void __init wrt350n_v2_init(void)
119 */ 129 */
120 orion5x_ehci0_init(); 130 orion5x_ehci0_init();
121 orion5x_eth_init(&wrt350n_v2_eth_data); 131 orion5x_eth_init(&wrt350n_v2_eth_data);
132 orion5x_eth_switch_init(&wrt350n_v2_switch_data, NO_IRQ);
122 orion5x_uart0_init(); 133 orion5x_uart0_init();
123 134
124 orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, 135 orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE,
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index f27f6b3d6e6f..a062235e83a8 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -71,6 +71,14 @@ config PXA_SHARPSL
71 SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa) 71 SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa)
72 handheld computer. 72 handheld computer.
73 73
74config CORGI_SSP_DEPRECATED
75 bool
76 select PXA_SSP
77 help
78 This option will include corgi_ssp.c and corgi_lcd.c
79 that corgi_ts.c and other legacy drivers (corgi_bl.c
80 and sharpsl_pm.c) may depend on.
81
74config MACH_POODLE 82config MACH_POODLE
75 bool "Enable Sharp SL-5600 (Poodle) Support" 83 bool "Enable Sharp SL-5600 (Poodle) Support"
76 depends on PXA_SHARPSL 84 depends on PXA_SHARPSL
@@ -257,7 +265,6 @@ config MACH_ARMCORE
257 bool "CompuLab CM-X255/CM-X270 modules" 265 bool "CompuLab CM-X255/CM-X270 modules"
258 select PXA27x 266 select PXA27x
259 select IWMMXT 267 select IWMMXT
260 select ZONE_DMA if PCI
261 select PXA25x 268 select PXA25x
262 select PXA_SSP 269 select PXA_SSP
263 270
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index d31c9979cfa3..d64c68b232e3 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -37,6 +37,7 @@ obj-$(CONFIG_MACH_TRIZEPS4) += trizeps4.o
37obj-$(CONFIG_MACH_COLIBRI) += colibri.o 37obj-$(CONFIG_MACH_COLIBRI) += colibri.o
38obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o sharpsl_pm.o corgi_pm.o 38obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o sharpsl_pm.o corgi_pm.o
39obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o sharpsl_pm.o spitz_pm.o 39obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o sharpsl_pm.o spitz_pm.o
40obj-$(CONFIG_CORGI_SSP_DEPRECATED) += corgi_ssp.o corgi_lcd.o
40obj-$(CONFIG_MACH_POODLE) += poodle.o 41obj-$(CONFIG_MACH_POODLE) += poodle.o
41obj-$(CONFIG_MACH_PCM027) += pcm027.o 42obj-$(CONFIG_MACH_PCM027) += pcm027.o
42obj-$(CONFIG_MACH_PCM990_BASEBOARD) += pcm990-baseboard.o 43obj-$(CONFIG_MACH_PCM990_BASEBOARD) += pcm990-baseboard.o
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c
new file mode 100644
index 000000000000..411607bc1fc2
--- /dev/null
+++ b/arch/arm/mach-pxa/corgi_lcd.c
@@ -0,0 +1,289 @@
1/*
2 * linux/arch/arm/mach-pxa/corgi_lcd.c
3 *
4 * Corgi/Spitz LCD Specific Code
5 *
6 * Copyright (C) 2005 Richard Purdie
7 *
8 * Connectivity:
9 * Corgi - LCD to ATI Imageon w100 (Wallaby)
10 * Spitz - LCD to PXA Framebuffer
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
15 *
16 */
17
18#include <linux/delay.h>
19#include <linux/kernel.h>
20#include <linux/platform_device.h>
21#include <linux/module.h>
22#include <linux/string.h>
23#include <mach/corgi.h>
24#include <mach/hardware.h>
25#include <mach/pxa-regs.h>
26#include <mach/sharpsl.h>
27#include <mach/spitz.h>
28#include <asm/hardware/scoop.h>
29#include <asm/mach/sharpsl_param.h>
30#include "generic.h"
31
32/* Register Addresses */
33#define RESCTL_ADRS 0x00
34#define PHACTRL_ADRS 0x01
35#define DUTYCTRL_ADRS 0x02
36#define POWERREG0_ADRS 0x03
37#define POWERREG1_ADRS 0x04
38#define GPOR3_ADRS 0x05
39#define PICTRL_ADRS 0x06
40#define POLCTRL_ADRS 0x07
41
42/* Register Bit Definitions */
43#define RESCTL_QVGA 0x01
44#define RESCTL_VGA 0x00
45
46#define POWER1_VW_ON 0x01 /* VW Supply FET ON */
47#define POWER1_GVSS_ON 0x02 /* GVSS(-8V) Power Supply ON */
48#define POWER1_VDD_ON 0x04 /* VDD(8V),SVSS(-4V) Power Supply ON */
49
50#define POWER1_VW_OFF 0x00 /* VW Supply FET OFF */
51#define POWER1_GVSS_OFF 0x00 /* GVSS(-8V) Power Supply OFF */
52#define POWER1_VDD_OFF 0x00 /* VDD(8V),SVSS(-4V) Power Supply OFF */
53
54#define POWER0_COM_DCLK 0x01 /* COM Voltage DC Bias DAC Serial Data Clock */
55#define POWER0_COM_DOUT 0x02 /* COM Voltage DC Bias DAC Serial Data Out */
56#define POWER0_DAC_ON 0x04 /* DAC Power Supply ON */
57#define POWER0_COM_ON 0x08 /* COM Power Supply ON */
58#define POWER0_VCC5_ON 0x10 /* VCC5 Power Supply ON */
59
60#define POWER0_DAC_OFF 0x00 /* DAC Power Supply OFF */
61#define POWER0_COM_OFF 0x00 /* COM Power Supply OFF */
62#define POWER0_VCC5_OFF 0x00 /* VCC5 Power Supply OFF */
63
64#define PICTRL_INIT_STATE 0x01
65#define PICTRL_INIOFF 0x02
66#define PICTRL_POWER_DOWN 0x04
67#define PICTRL_COM_SIGNAL_OFF 0x08
68#define PICTRL_DAC_SIGNAL_OFF 0x10
69
70#define POLCTRL_SYNC_POL_FALL 0x01
71#define POLCTRL_EN_POL_FALL 0x02
72#define POLCTRL_DATA_POL_FALL 0x04
73#define POLCTRL_SYNC_ACT_H 0x08
74#define POLCTRL_EN_ACT_L 0x10
75
76#define POLCTRL_SYNC_POL_RISE 0x00
77#define POLCTRL_EN_POL_RISE 0x00
78#define POLCTRL_DATA_POL_RISE 0x00
79#define POLCTRL_SYNC_ACT_L 0x00
80#define POLCTRL_EN_ACT_H 0x00
81
82#define PHACTRL_PHASE_MANUAL 0x01
83#define DEFAULT_PHAD_QVGA (9)
84#define DEFAULT_COMADJ (125)
85
86/*
87 * This is only a psuedo I2C interface. We can't use the standard kernel
88 * routines as the interface is write only. We just assume the data is acked...
89 */
90static void lcdtg_ssp_i2c_send(u8 data)
91{
92 corgi_ssp_lcdtg_send(POWERREG0_ADRS, data);
93 udelay(10);
94}
95
96static void lcdtg_i2c_send_bit(u8 data)
97{
98 lcdtg_ssp_i2c_send(data);
99 lcdtg_ssp_i2c_send(data | POWER0_COM_DCLK);
100 lcdtg_ssp_i2c_send(data);
101}
102
103static void lcdtg_i2c_send_start(u8 base)
104{
105 lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK | POWER0_COM_DOUT);
106 lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK);
107 lcdtg_ssp_i2c_send(base);
108}
109
110static void lcdtg_i2c_send_stop(u8 base)
111{
112 lcdtg_ssp_i2c_send(base);
113 lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK);
114 lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK | POWER0_COM_DOUT);
115}
116
117static void lcdtg_i2c_send_byte(u8 base, u8 data)
118{
119 int i;
120 for (i = 0; i < 8; i++) {
121 if (data & 0x80)
122 lcdtg_i2c_send_bit(base | POWER0_COM_DOUT);
123 else
124 lcdtg_i2c_send_bit(base);
125 data <<= 1;
126 }
127}
128
129static void lcdtg_i2c_wait_ack(u8 base)
130{
131 lcdtg_i2c_send_bit(base);
132}
133
134static void lcdtg_set_common_voltage(u8 base_data, u8 data)
135{
136 /* Set Common Voltage to M62332FP via I2C */
137 lcdtg_i2c_send_start(base_data);
138 lcdtg_i2c_send_byte(base_data, 0x9c);
139 lcdtg_i2c_wait_ack(base_data);
140 lcdtg_i2c_send_byte(base_data, 0x00);
141 lcdtg_i2c_wait_ack(base_data);
142 lcdtg_i2c_send_byte(base_data, data);
143 lcdtg_i2c_wait_ack(base_data);
144 lcdtg_i2c_send_stop(base_data);
145}
146
147/* Set Phase Adjust */
148static void lcdtg_set_phadadj(int mode)
149{
150 int adj;
151 switch(mode) {
152 case 480:
153 case 640:
154 /* Setting for VGA */
155 adj = sharpsl_param.phadadj;
156 if (adj < 0) {
157 adj = PHACTRL_PHASE_MANUAL;
158 } else {
159 adj = ((adj & 0x0f) << 1) | PHACTRL_PHASE_MANUAL;
160 }
161 break;
162 case 240:
163 case 320:
164 default:
165 /* Setting for QVGA */
166 adj = (DEFAULT_PHAD_QVGA << 1) | PHACTRL_PHASE_MANUAL;
167 break;
168 }
169
170 corgi_ssp_lcdtg_send(PHACTRL_ADRS, adj);
171}
172
173static int lcd_inited;
174
175void corgi_lcdtg_hw_init(int mode)
176{
177 if (!lcd_inited) {
178 int comadj;
179
180 /* Initialize Internal Logic & Port */
181 corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_POWER_DOWN | PICTRL_INIOFF | PICTRL_INIT_STATE
182 | PICTRL_COM_SIGNAL_OFF | PICTRL_DAC_SIGNAL_OFF);
183
184 corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_OFF
185 | POWER0_COM_OFF | POWER0_VCC5_OFF);
186
187 corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF);
188
189 /* VDD(+8V), SVSS(-4V) ON */
190 corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON);
191 mdelay(3);
192
193 /* DAC ON */
194 corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON
195 | POWER0_COM_OFF | POWER0_VCC5_OFF);
196
197 /* INIB = H, INI = L */
198 /* PICTL[0] = H , PICTL[1] = PICTL[2] = PICTL[4] = L */
199 corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIT_STATE | PICTRL_COM_SIGNAL_OFF);
200
201 /* Set Common Voltage */
202 comadj = sharpsl_param.comadj;
203 if (comadj < 0)
204 comadj = DEFAULT_COMADJ;
205 lcdtg_set_common_voltage((POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_OFF), comadj);
206
207 /* VCC5 ON, DAC ON */
208 corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON |
209 POWER0_COM_OFF | POWER0_VCC5_ON);
210
211 /* GVSS(-8V) ON, VDD ON */
212 corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON);
213 mdelay(2);
214
215 /* COM SIGNAL ON (PICTL[3] = L) */
216 corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIT_STATE);
217
218 /* COM ON, DAC ON, VCC5_ON */
219 corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON
220 | POWER0_COM_ON | POWER0_VCC5_ON);
221
222 /* VW ON, GVSS ON, VDD ON */
223 corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_ON | POWER1_GVSS_ON | POWER1_VDD_ON);
224
225 /* Signals output enable */
226 corgi_ssp_lcdtg_send(PICTRL_ADRS, 0);
227
228 /* Set Phase Adjust */
229 lcdtg_set_phadadj(mode);
230
231 /* Initialize for Input Signals from ATI */
232 corgi_ssp_lcdtg_send(POLCTRL_ADRS, POLCTRL_SYNC_POL_RISE | POLCTRL_EN_POL_RISE
233 | POLCTRL_DATA_POL_RISE | POLCTRL_SYNC_ACT_L | POLCTRL_EN_ACT_H);
234 udelay(1000);
235
236 lcd_inited=1;
237 } else {
238 lcdtg_set_phadadj(mode);
239 }
240
241 switch(mode) {
242 case 480:
243 case 640:
244 /* Set Lcd Resolution (VGA) */
245 corgi_ssp_lcdtg_send(RESCTL_ADRS, RESCTL_VGA);
246 break;
247 case 240:
248 case 320:
249 default:
250 /* Set Lcd Resolution (QVGA) */
251 corgi_ssp_lcdtg_send(RESCTL_ADRS, RESCTL_QVGA);
252 break;
253 }
254}
255
256void corgi_lcdtg_suspend(void)
257{
258 /* 60Hz x 2 frame = 16.7msec x 2 = 33.4 msec */
259 mdelay(34);
260
261 /* (1)VW OFF */
262 corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON);
263
264 /* (2)COM OFF */
265 corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_COM_SIGNAL_OFF);
266 corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_ON);
267
268 /* (3)Set Common Voltage Bias 0V */
269 lcdtg_set_common_voltage(POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_ON, 0);
270
271 /* (4)GVSS OFF */
272 corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON);
273
274 /* (5)VCC5 OFF */
275 corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_OFF);
276
277 /* (6)Set PDWN, INIOFF, DACOFF */
278 corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIOFF | PICTRL_DAC_SIGNAL_OFF |
279 PICTRL_POWER_DOWN | PICTRL_COM_SIGNAL_OFF);
280
281 /* (7)DAC OFF */
282 corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_OFF | POWER0_COM_OFF | POWER0_VCC5_OFF);
283
284 /* (8)VDD OFF */
285 corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF);
286
287 lcd_inited = 0;
288}
289
diff --git a/arch/arm/mach-pxa/corgi_ssp.c b/arch/arm/mach-pxa/corgi_ssp.c
new file mode 100644
index 000000000000..8e2f2215c4ba
--- /dev/null
+++ b/arch/arm/mach-pxa/corgi_ssp.c
@@ -0,0 +1,276 @@
1/*
2 * SSP control code for Sharp Corgi devices
3 *
4 * Copyright (c) 2004-2005 Richard Purdie
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 version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12#include <linux/module.h>
13#include <linux/init.h>
14#include <linux/kernel.h>
15#include <linux/sched.h>
16#include <linux/slab.h>
17#include <linux/delay.h>
18#include <linux/platform_device.h>
19#include <mach/hardware.h>
20#include <asm/mach-types.h>
21
22#include <mach/ssp.h>
23#include <mach/pxa-regs.h>
24#include <mach/pxa2xx-gpio.h>
25#include <mach/regs-ssp.h>
26#include "sharpsl.h"
27
28static DEFINE_SPINLOCK(corgi_ssp_lock);
29static struct ssp_dev corgi_ssp_dev;
30static struct ssp_state corgi_ssp_state;
31static struct corgissp_machinfo *ssp_machinfo;
32
33/*
34 * There are three devices connected to the SSP interface:
35 * 1. A touchscreen controller (TI ADS7846 compatible)
36 * 2. An LCD controller (with some Backlight functionality)
37 * 3. A battery monitoring IC (Maxim MAX1111)
38 *
39 * Each device uses a different speed/mode of communication.
40 *
41 * The touchscreen is very sensitive and the most frequently used
42 * so the port is left configured for this.
43 *
44 * Devices are selected using Chip Selects on GPIOs.
45 */
46
47/*
48 * ADS7846 Routines
49 */
50unsigned long corgi_ssp_ads7846_putget(ulong data)
51{
52 unsigned long flag;
53 u32 ret = 0;
54
55 spin_lock_irqsave(&corgi_ssp_lock, flag);
56 if (ssp_machinfo->cs_ads7846 >= 0)
57 GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
58
59 ssp_write_word(&corgi_ssp_dev,data);
60 ssp_read_word(&corgi_ssp_dev, &ret);
61
62 if (ssp_machinfo->cs_ads7846 >= 0)
63 GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
64 spin_unlock_irqrestore(&corgi_ssp_lock, flag);
65
66 return ret;
67}
68
69/*
70 * NOTE: These functions should always be called in interrupt context
71 * and use the _lock and _unlock functions. They are very time sensitive.
72 */
73void corgi_ssp_ads7846_lock(void)
74{
75 spin_lock(&corgi_ssp_lock);
76 if (ssp_machinfo->cs_ads7846 >= 0)
77 GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
78}
79
80void corgi_ssp_ads7846_unlock(void)
81{
82 if (ssp_machinfo->cs_ads7846 >= 0)
83 GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
84 spin_unlock(&corgi_ssp_lock);
85}
86
87void corgi_ssp_ads7846_put(ulong data)
88{
89 ssp_write_word(&corgi_ssp_dev,data);
90}
91
92unsigned long corgi_ssp_ads7846_get(void)
93{
94 u32 ret = 0;
95 ssp_read_word(&corgi_ssp_dev, &ret);
96 return ret;
97}
98
99EXPORT_SYMBOL(corgi_ssp_ads7846_putget);
100EXPORT_SYMBOL(corgi_ssp_ads7846_lock);
101EXPORT_SYMBOL(corgi_ssp_ads7846_unlock);
102EXPORT_SYMBOL(corgi_ssp_ads7846_put);
103EXPORT_SYMBOL(corgi_ssp_ads7846_get);
104
105
106/*
107 * LCD/Backlight Routines
108 */
109unsigned long corgi_ssp_dac_put(ulong data)
110{
111 unsigned long flag, sscr1 = SSCR1_SPH;
112 u32 tmp;
113
114 spin_lock_irqsave(&corgi_ssp_lock, flag);
115
116 if (machine_is_spitz() || machine_is_akita() || machine_is_borzoi())
117 sscr1 = 0;
118
119 ssp_disable(&corgi_ssp_dev);
120 ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), sscr1, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_lcdcon));
121 ssp_enable(&corgi_ssp_dev);
122
123 if (ssp_machinfo->cs_lcdcon >= 0)
124 GPCR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);
125 ssp_write_word(&corgi_ssp_dev,data);
126 /* Read null data back from device to prevent SSP overflow */
127 ssp_read_word(&corgi_ssp_dev, &tmp);
128 if (ssp_machinfo->cs_lcdcon >= 0)
129 GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);
130
131 ssp_disable(&corgi_ssp_dev);
132 ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
133 ssp_enable(&corgi_ssp_dev);
134
135 spin_unlock_irqrestore(&corgi_ssp_lock, flag);
136
137 return 0;
138}
139
140void corgi_ssp_lcdtg_send(u8 adrs, u8 data)
141{
142 corgi_ssp_dac_put(((adrs & 0x07) << 5) | (data & 0x1f));
143}
144
145void corgi_ssp_blduty_set(int duty)
146{
147 corgi_ssp_lcdtg_send(0x02,duty);
148}
149
150EXPORT_SYMBOL(corgi_ssp_lcdtg_send);
151EXPORT_SYMBOL(corgi_ssp_blduty_set);
152
153/*
154 * Max1111 Routines
155 */
156int corgi_ssp_max1111_get(ulong data)
157{
158 unsigned long flag;
159 long voltage = 0, voltage1 = 0, voltage2 = 0;
160
161 spin_lock_irqsave(&corgi_ssp_lock, flag);
162 if (ssp_machinfo->cs_max1111 >= 0)
163 GPCR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111);
164 ssp_disable(&corgi_ssp_dev);
165 ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_max1111));
166 ssp_enable(&corgi_ssp_dev);
167
168 udelay(1);
169
170 /* TB1/RB1 */
171 ssp_write_word(&corgi_ssp_dev,data);
172 ssp_read_word(&corgi_ssp_dev, (u32*)&voltage1); /* null read */
173
174 /* TB12/RB2 */
175 ssp_write_word(&corgi_ssp_dev,0);
176 ssp_read_word(&corgi_ssp_dev, (u32*)&voltage1);
177
178 /* TB13/RB3*/
179 ssp_write_word(&corgi_ssp_dev,0);
180 ssp_read_word(&corgi_ssp_dev, (u32*)&voltage2);
181
182 ssp_disable(&corgi_ssp_dev);
183 ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
184 ssp_enable(&corgi_ssp_dev);
185 if (ssp_machinfo->cs_max1111 >= 0)
186 GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111);
187 spin_unlock_irqrestore(&corgi_ssp_lock, flag);
188
189 if (voltage1 & 0xc0 || voltage2 & 0x3f)
190 voltage = -1;
191 else
192 voltage = ((voltage1 << 2) & 0xfc) | ((voltage2 >> 6) & 0x03);
193
194 return voltage;
195}
196
197EXPORT_SYMBOL(corgi_ssp_max1111_get);
198
199/*
200 * Support Routines
201 */
202
203void __init corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo)
204{
205 ssp_machinfo = machinfo;
206}
207
208static int __init corgi_ssp_probe(struct platform_device *dev)
209{
210 int ret;
211
212 /* Chip Select - Disable All */
213 if (ssp_machinfo->cs_lcdcon >= 0)
214 pxa_gpio_mode(ssp_machinfo->cs_lcdcon | GPIO_OUT | GPIO_DFLT_HIGH);
215 if (ssp_machinfo->cs_max1111 >= 0)
216 pxa_gpio_mode(ssp_machinfo->cs_max1111 | GPIO_OUT | GPIO_DFLT_HIGH);
217 if (ssp_machinfo->cs_ads7846 >= 0)
218 pxa_gpio_mode(ssp_machinfo->cs_ads7846 | GPIO_OUT | GPIO_DFLT_HIGH);
219
220 ret = ssp_init(&corgi_ssp_dev, ssp_machinfo->port, 0);
221
222 if (ret)
223 printk(KERN_ERR "Unable to register SSP handler!\n");
224 else {
225 ssp_disable(&corgi_ssp_dev);
226 ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
227 ssp_enable(&corgi_ssp_dev);
228 }
229
230 return ret;
231}
232
233static int corgi_ssp_remove(struct platform_device *dev)
234{
235 ssp_exit(&corgi_ssp_dev);
236 return 0;
237}
238
239static int corgi_ssp_suspend(struct platform_device *dev, pm_message_t state)
240{
241 ssp_flush(&corgi_ssp_dev);
242 ssp_save_state(&corgi_ssp_dev,&corgi_ssp_state);
243
244 return 0;
245}
246
247static int corgi_ssp_resume(struct platform_device *dev)
248{
249 if (ssp_machinfo->cs_lcdcon >= 0)
250 GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); /* High - Disable LCD Control/Timing Gen */
251 if (ssp_machinfo->cs_max1111 >= 0)
252 GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/
253 if (ssp_machinfo->cs_ads7846 >= 0)
254 GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/
255 ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state);
256 ssp_enable(&corgi_ssp_dev);
257
258 return 0;
259}
260
261static struct platform_driver corgissp_driver = {
262 .probe = corgi_ssp_probe,
263 .remove = corgi_ssp_remove,
264 .suspend = corgi_ssp_suspend,
265 .resume = corgi_ssp_resume,
266 .driver = {
267 .name = "corgi-ssp",
268 },
269};
270
271int __init corgi_ssp_init(void)
272{
273 return platform_driver_register(&corgissp_driver);
274}
275
276arch_initcall(corgi_ssp_init);
diff --git a/arch/arm/mach-pxa/include/mach/corgi.h b/arch/arm/mach-pxa/include/mach/corgi.h
index 585970ef08ce..7239281788de 100644
--- a/arch/arm/mach-pxa/include/mach/corgi.h
+++ b/arch/arm/mach-pxa/include/mach/corgi.h
@@ -113,6 +113,7 @@
113 * Shared data structures 113 * Shared data structures
114 */ 114 */
115extern struct platform_device corgiscoop_device; 115extern struct platform_device corgiscoop_device;
116extern struct platform_device corgissp_device;
116 117
117#endif /* __ASM_ARCH_CORGI_H */ 118#endif /* __ASM_ARCH_CORGI_H */
118 119
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h
index 9c163e19ada9..32bb4a2eb7f1 100644
--- a/arch/arm/mach-pxa/include/mach/irqs.h
+++ b/arch/arm/mach-pxa/include/mach/irqs.h
@@ -9,7 +9,8 @@
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation. 10 * published by the Free Software Foundation.
11 */ 11 */
12 12#ifndef __ASM_MACH_IRQS_H
13#define __ASM_MACH_IRQS_H
13 14
14#ifdef CONFIG_PXA_HAVE_ISA_IRQS 15#ifdef CONFIG_PXA_HAVE_ISA_IRQS
15#define PXA_ISA_IRQ(x) (x) 16#define PXA_ISA_IRQ(x) (x)
@@ -264,3 +265,5 @@
264#endif 265#endif
265 266
266#endif /* CONFIG_PCI_HOST_ITE8152 */ 267#endif /* CONFIG_PCI_HOST_ITE8152 */
268
269#endif /* __ASM_MACH_IRQS_H */
diff --git a/arch/arm/mach-pxa/include/mach/spitz.h b/arch/arm/mach-pxa/include/mach/spitz.h
index 31ac26b55bc1..fa1998caa78e 100644
--- a/arch/arm/mach-pxa/include/mach/spitz.h
+++ b/arch/arm/mach-pxa/include/mach/spitz.h
@@ -142,7 +142,7 @@
142 142
143#define SPITZ_SCP2_GPIO_BASE (NR_BUILTIN_GPIO + 12) 143#define SPITZ_SCP2_GPIO_BASE (NR_BUILTIN_GPIO + 12)
144#define SPITZ_GPIO_IR_ON (SPITZ_SCP2_GPIO_BASE + 0) 144#define SPITZ_GPIO_IR_ON (SPITZ_SCP2_GPIO_BASE + 0)
145#define SPITZ_GPIO_AKIN_PULLUP (SPITZ_SCP2_GPIO_BASE + 1 145#define SPITZ_GPIO_AKIN_PULLUP (SPITZ_SCP2_GPIO_BASE + 1)
146#define SPITZ_GPIO_RESERVED_1 (SPITZ_SCP2_GPIO_BASE + 2) 146#define SPITZ_GPIO_RESERVED_1 (SPITZ_SCP2_GPIO_BASE + 2)
147#define SPITZ_GPIO_RESERVED_2 (SPITZ_SCP2_GPIO_BASE + 3) 147#define SPITZ_GPIO_RESERVED_2 (SPITZ_SCP2_GPIO_BASE + 3)
148#define SPITZ_GPIO_RESERVED_3 (SPITZ_SCP2_GPIO_BASE + 4) 148#define SPITZ_GPIO_RESERVED_3 (SPITZ_SCP2_GPIO_BASE + 4)
@@ -187,4 +187,5 @@
187 */ 187 */
188extern struct platform_device spitzscoop_device; 188extern struct platform_device spitzscoop_device;
189extern struct platform_device spitzscoop2_device; 189extern struct platform_device spitzscoop2_device;
190extern struct platform_device spitzssp_device;
190extern struct sharpsl_charger_machinfo spitz_pm_machinfo; 191extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
diff --git a/arch/arm/mach-pxa/include/mach/tosa.h b/arch/arm/mach-pxa/include/mach/tosa.h
index 8bce6d8615b9..4df2d38507dc 100644
--- a/arch/arm/mach-pxa/include/mach/tosa.h
+++ b/arch/arm/mach-pxa/include/mach/tosa.h
@@ -193,4 +193,7 @@
193#define TOSA_KEY_MAIL KEY_MAIL 193#define TOSA_KEY_MAIL KEY_MAIL
194#endif 194#endif
195 195
196struct spi_device;
197extern int tosa_bl_enable(struct spi_device *spi, int enable);
198
196#endif /* _ASM_ARCH_TOSA_H_ */ 199#endif /* _ASM_ARCH_TOSA_H_ */
diff --git a/arch/arm/mach-pxa/pwm.c b/arch/arm/mach-pxa/pwm.c
index 316cd986da5c..74e2ead8cee8 100644
--- a/arch/arm/mach-pxa/pwm.c
+++ b/arch/arm/mach-pxa/pwm.c
@@ -60,7 +60,7 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
60 do_div(c, 1000000000); 60 do_div(c, 1000000000);
61 period_cycles = c; 61 period_cycles = c;
62 62
63 if (period_cycles < 0) 63 if (period_cycles < 1)
64 period_cycles = 1; 64 period_cycles = 1;
65 prescale = (period_cycles - 1) / 1024; 65 prescale = (period_cycles - 1) / 1024;
66 pv = period_cycles / (prescale + 1) - 1; 66 pv = period_cycles / (prescale + 1) - 1;
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
index 15c2f1a8623b..f0845c1b001c 100644
--- a/arch/arm/mach-pxa/sharpsl_pm.c
+++ b/arch/arm/mach-pxa/sharpsl_pm.c
@@ -116,20 +116,33 @@ struct battery_thresh spitz_battery_levels_noac[] = {
116 { 0, 0}, 116 { 0, 0},
117}; 117};
118 118
119/* MAX1111 Commands */
120#define MAXCTRL_PD0 1u << 0
121#define MAXCTRL_PD1 1u << 1
122#define MAXCTRL_SGL 1u << 2
123#define MAXCTRL_UNI 1u << 3
124#define MAXCTRL_SEL_SH 4
125#define MAXCTRL_STR 1u << 7
126
119/* 127/*
120 * Read MAX1111 ADC 128 * Read MAX1111 ADC
121 */ 129 */
122extern int max1111_read_channel(int);
123
124int sharpsl_pm_pxa_read_max1111(int channel) 130int sharpsl_pm_pxa_read_max1111(int channel)
125{ 131{
126 if (machine_is_tosa()) // Ugly, better move this function into another module 132 if (machine_is_tosa()) // Ugly, better move this function into another module
127 return 0; 133 return 0;
128 134
135#ifdef CONFIG_CORGI_SSP_DEPRECATED
136 return corgi_ssp_max1111_get((channel << MAXCTRL_SEL_SH) | MAXCTRL_PD0 | MAXCTRL_PD1
137 | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
138#else
139 extern int max1111_read_channel(int);
140
129 /* max1111 accepts channels from 0-3, however, 141 /* max1111 accepts channels from 0-3, however,
130 * it is encoded from 0-7 here in the code. 142 * it is encoded from 0-7 here in the code.
131 */ 143 */
132 return max1111_read_channel(channel >> 1); 144 return max1111_read_channel(channel >> 1);
145#endif
133} 146}
134 147
135void sharpsl_pm_pxa_init(void) 148void sharpsl_pm_pxa_init(void)
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index a6c4694359ca..224897a67d15 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -31,6 +31,7 @@
31#include <linux/gpio.h> 31#include <linux/gpio.h>
32#include <linux/pda_power.h> 32#include <linux/pda_power.h>
33#include <linux/rfkill.h> 33#include <linux/rfkill.h>
34#include <linux/spi/spi.h>
34 35
35#include <asm/setup.h> 36#include <asm/setup.h>
36#include <asm/mach-types.h> 37#include <asm/mach-types.h>
@@ -42,6 +43,7 @@
42#include <mach/mmc.h> 43#include <mach/mmc.h>
43#include <mach/udc.h> 44#include <mach/udc.h>
44#include <mach/tosa_bt.h> 45#include <mach/tosa_bt.h>
46#include <mach/pxa2xx_spi.h>
45 47
46#include <asm/mach/arch.h> 48#include <asm/mach/arch.h>
47#include <mach/tosa.h> 49#include <mach/tosa.h>
@@ -612,7 +614,7 @@ static int tosa_tc6393xb_enable(struct platform_device *dev)
612 rc = gpio_request(TOSA_GPIO_TC6393XB_SUSPEND, "tc6393xb #suspend"); 614 rc = gpio_request(TOSA_GPIO_TC6393XB_SUSPEND, "tc6393xb #suspend");
613 if (rc) 615 if (rc)
614 goto err_req_suspend; 616 goto err_req_suspend;
615 rc = gpio_request(TOSA_GPIO_TC6393XB_L3V_ON, "l3v"); 617 rc = gpio_request(TOSA_GPIO_TC6393XB_L3V_ON, "tc6393xb l3v");
616 if (rc) 618 if (rc)
617 goto err_req_l3v; 619 goto err_req_l3v;
618 rc = gpio_direction_output(TOSA_GPIO_TC6393XB_L3V_ON, 0); 620 rc = gpio_direction_output(TOSA_GPIO_TC6393XB_L3V_ON, 0);
@@ -772,6 +774,20 @@ static struct platform_device tosa_bt_device = {
772 .dev.platform_data = &tosa_bt_data, 774 .dev.platform_data = &tosa_bt_data,
773}; 775};
774 776
777static struct pxa2xx_spi_master pxa_ssp_master_info = {
778 .num_chipselect = 1,
779};
780
781static struct spi_board_info spi_board_info[] __initdata = {
782 {
783 .modalias = "tosa-lcd",
784 // .platform_data
785 .max_speed_hz = 28750,
786 .bus_num = 2,
787 .chip_select = 0,
788 .mode = SPI_MODE_0,
789 },
790};
775 791
776static struct platform_device *devices[] __initdata = { 792static struct platform_device *devices[] __initdata = {
777 &tosascoop_device, 793 &tosascoop_device,
@@ -826,6 +842,9 @@ static void __init tosa_init(void)
826 pxa_set_i2c_info(NULL); 842 pxa_set_i2c_info(NULL);
827 platform_scoop_config = &tosa_pcmcia_config; 843 platform_scoop_config = &tosa_pcmcia_config;
828 844
845 pxa2xx_set_spi_info(2, &pxa_ssp_master_info);
846 spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
847
829 clk_add_alias("CLK_CK3P6MI", &tc6393xb_device.dev, "GPIO11_CLK", NULL); 848 clk_add_alias("CLK_CK3P6MI", &tc6393xb_device.dev, "GPIO11_CLK", NULL);
830 849
831 platform_add_devices(devices, ARRAY_SIZE(devices)); 850 platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index a13dbf3c2c05..a72e3add743c 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -399,7 +399,7 @@ static void trizeps4_irda_transceiver_mode(struct device *dev, int mode)
399 /* Switch mode */ 399 /* Switch mode */
400 if (mode & IR_SIRMODE) 400 if (mode & IR_SIRMODE)
401 trizeps_conxs_ircr &= ~ConXS_IRCR_MODE; /* Slow mode */ 401 trizeps_conxs_ircr &= ~ConXS_IRCR_MODE; /* Slow mode */
402 else if (mode & IR_FIRMODE) { 402 else if (mode & IR_FIRMODE)
403 trizeps_conxs_ircr |= ConXS_IRCR_MODE; /* Fast mode */ 403 trizeps_conxs_ircr |= ConXS_IRCR_MODE; /* Fast mode */
404 404
405 /* Switch power */ 405 /* Switch power */
diff --git a/arch/arm/mach-s3c2443/clock.c b/arch/arm/mach-s3c2443/clock.c
index 2f60bf6b8d43..f854e7385e3c 100644
--- a/arch/arm/mach-s3c2443/clock.c
+++ b/arch/arm/mach-s3c2443/clock.c
@@ -1033,8 +1033,7 @@ void __init s3c2443_init_clocks(int xtal)
1033 1033
1034 fclk = pll / s3c2443_fclk_div(clkdiv0); 1034 fclk = pll / s3c2443_fclk_div(clkdiv0);
1035 hclk = s3c2443_prediv_getrate(&clk_prediv); 1035 hclk = s3c2443_prediv_getrate(&clk_prediv);
1036 hclk = hclk / s3c2443_get_hdiv(clkdiv0); 1036 hclk /= s3c2443_get_hdiv(clkdiv0);
1037 hclk = hclk / ((clkdiv0 & S3C2443_CLKDIV0_HALF_HCLK) ? 2 : 1);
1038 pclk = hclk / ((clkdiv0 & S3C2443_CLKDIV0_HALF_PCLK) ? 2 : 1); 1037 pclk = hclk / ((clkdiv0 & S3C2443_CLKDIV0_HALF_PCLK) ? 2 : 1);
1039 1038
1040 s3c24xx_setup_clocks(xtal, fclk, hclk, pclk); 1039 s3c24xx_setup_clocks(xtal, fclk, hclk, pclk);
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index d1193884d76d..ab5f7a21350b 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -400,9 +400,9 @@ config CPU_FEROCEON_OLD_ID
400# ARMv6 400# ARMv6
401config CPU_V6 401config CPU_V6
402 bool "Support ARM V6 processor" 402 bool "Support ARM V6 processor"
403 depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2 || ARCH_MX3 || ARCH_MSM7X00A || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 403 depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2 || ARCH_MX3 || ARCH_MSM || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176
404 default y if ARCH_MX3 404 default y if ARCH_MX3
405 default y if ARCH_MSM7X00A 405 default y if ARCH_MSM
406 select CPU_32v6 406 select CPU_32v6
407 select CPU_ABRT_EV6 407 select CPU_ABRT_EV6
408 select CPU_PABRT_NOIFAR 408 select CPU_PABRT_NOIFAR
diff --git a/arch/arm/mm/cache-v4.S b/arch/arm/mm/cache-v4.S
index 33926c9fcda6..5786adf10040 100644
--- a/arch/arm/mm/cache-v4.S
+++ b/arch/arm/mm/cache-v4.S
@@ -29,7 +29,7 @@ ENTRY(v4_flush_user_cache_all)
29 * Clean and invalidate the entire cache. 29 * Clean and invalidate the entire cache.
30 */ 30 */
31ENTRY(v4_flush_kern_cache_all) 31ENTRY(v4_flush_kern_cache_all)
32#ifdef CPU_CP15 32#ifdef CONFIG_CPU_CP15
33 mov r0, #0 33 mov r0, #0
34 mcr p15, 0, r0, c7, c7, 0 @ flush ID cache 34 mcr p15, 0, r0, c7, c7, 0 @ flush ID cache
35 mov pc, lr 35 mov pc, lr
@@ -48,7 +48,7 @@ ENTRY(v4_flush_kern_cache_all)
48 * - flags - vma_area_struct flags describing address space 48 * - flags - vma_area_struct flags describing address space
49 */ 49 */
50ENTRY(v4_flush_user_cache_range) 50ENTRY(v4_flush_user_cache_range)
51#ifdef CPU_CP15 51#ifdef CONFIG_CPU_CP15
52 mov ip, #0 52 mov ip, #0
53 mcreq p15, 0, ip, c7, c7, 0 @ flush ID cache 53 mcreq p15, 0, ip, c7, c7, 0 @ flush ID cache
54 mov pc, lr 54 mov pc, lr
@@ -116,7 +116,7 @@ ENTRY(v4_dma_inv_range)
116 * - end - virtual end address 116 * - end - virtual end address
117 */ 117 */
118ENTRY(v4_dma_flush_range) 118ENTRY(v4_dma_flush_range)
119#ifdef CPU_CP15 119#ifdef CONFIG_CPU_CP15
120 mov r0, #0 120 mov r0, #0
121 mcr p15, 0, r0, c7, c7, 0 @ flush ID cache 121 mcr p15, 0, r0, c7, c7, 0 @ flush ID cache
122#endif 122#endif
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
index 34e424041927..07f82db70945 100644
--- a/arch/arm/mm/proc-v7.S
+++ b/arch/arm/mm/proc-v7.S
@@ -180,8 +180,8 @@ __v7_setup:
180 mov r10, #0x1f @ domains 0, 1 = manager 180 mov r10, #0x1f @ domains 0, 1 = manager
181 mcr p15, 0, r10, c3, c0, 0 @ load domain access register 181 mcr p15, 0, r10, c3, c0, 0 @ load domain access register
182#endif 182#endif
183 ldr r5, =0x40e040e0 183 ldr r5, =0xff0aa1a8
184 ldr r6, =0xff0aa1a8 184 ldr r6, =0x40e040e0
185 mcr p15, 0, r5, c10, c2, 0 @ write PRRR 185 mcr p15, 0, r5, c10, c2, 0 @ write PRRR
186 mcr p15, 0, r6, c10, c2, 1 @ write NMRR 186 mcr p15, 0, r6, c10, c2, 1 @ write NMRR
187 adr r5, v7_crval 187 adr r5, v7_crval
diff --git a/arch/arm/plat-s3c24xx/pwm-clock.c b/arch/arm/plat-s3c24xx/pwm-clock.c
index b8e854f1b1d5..3fad68a1e6bc 100644
--- a/arch/arm/plat-s3c24xx/pwm-clock.c
+++ b/arch/arm/plat-s3c24xx/pwm-clock.c
@@ -315,7 +315,7 @@ static int clk_pwm_tin_set_parent(struct clk *clk, struct clk *parent)
315 if (parent == s3c24xx_pwmclk_tclk(id)) 315 if (parent == s3c24xx_pwmclk_tclk(id))
316 bits = S3C2410_TCFG1_MUX_TCLK << shift; 316 bits = S3C2410_TCFG1_MUX_TCLK << shift;
317 else if (parent == s3c24xx_pwmclk_tdiv(id)) 317 else if (parent == s3c24xx_pwmclk_tdiv(id))
318 bits = clk_pwm_tdiv_bits(to_tdiv(clk)) << shift; 318 bits = clk_pwm_tdiv_bits(to_tdiv(parent)) << shift;
319 else 319 else
320 return -EINVAL; 320 return -EINVAL;
321 321
diff --git a/arch/arm/plat-s3c24xx/pwm.c b/arch/arm/plat-s3c24xx/pwm.c
index feb770f2e84e..ec56b88866c4 100644
--- a/arch/arm/plat-s3c24xx/pwm.c
+++ b/arch/arm/plat-s3c24xx/pwm.c
@@ -56,7 +56,7 @@ static struct clk *clk_scaler[2];
56 } \ 56 } \
57 } 57 }
58 58
59#define DEFINE_TIMER(_tmr_no, _irq) \ 59#define DEFINE_S3C_TIMER(_tmr_no, _irq) \
60 .name = "s3c24xx-pwm", \ 60 .name = "s3c24xx-pwm", \
61 .id = _tmr_no, \ 61 .id = _tmr_no, \
62 .num_resources = TIMER_RESOURCE_SIZE, \ 62 .num_resources = TIMER_RESOURCE_SIZE, \
@@ -67,11 +67,11 @@ static struct clk *clk_scaler[2];
67 */ 67 */
68 68
69struct platform_device s3c_device_timer[] = { 69struct platform_device s3c_device_timer[] = {
70 [0] = { DEFINE_TIMER(0, IRQ_TIMER0) }, 70 [0] = { DEFINE_S3C_TIMER(0, IRQ_TIMER0) },
71 [1] = { DEFINE_TIMER(1, IRQ_TIMER1) }, 71 [1] = { DEFINE_S3C_TIMER(1, IRQ_TIMER1) },
72 [2] = { DEFINE_TIMER(2, IRQ_TIMER2) }, 72 [2] = { DEFINE_S3C_TIMER(2, IRQ_TIMER2) },
73 [3] = { DEFINE_TIMER(3, IRQ_TIMER3) }, 73 [3] = { DEFINE_S3C_TIMER(3, IRQ_TIMER3) },
74 [4] = { DEFINE_TIMER(4, IRQ_TIMER4) }, 74 [4] = { DEFINE_S3C_TIMER(4, IRQ_TIMER4) },
75}; 75};
76 76
77static inline int pwm_is_tdiv(struct pwm_device *pwm) 77static inline int pwm_is_tdiv(struct pwm_device *pwm)
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
index 33a5b2969eb4..26eca87f6735 100644
--- a/arch/avr32/Kconfig
+++ b/arch/avr32/Kconfig
@@ -121,11 +121,19 @@ config BOARD_ATSTK1000
121config BOARD_ATNGW100 121config BOARD_ATNGW100
122 bool "ATNGW100 Network Gateway" 122 bool "ATNGW100 Network Gateway"
123 select CPU_AT32AP7000 123 select CPU_AT32AP7000
124
125config BOARD_FAVR_32
126 bool "Favr-32 LCD-board"
127 select CPU_AT32AP7000
128
129config BOARD_MIMC200
130 bool "MIMC200 CPU board"
131 select CPU_AT32AP7000
124endchoice 132endchoice
125 133
126if BOARD_ATSTK1000
127source "arch/avr32/boards/atstk1000/Kconfig" 134source "arch/avr32/boards/atstk1000/Kconfig"
128endif 135source "arch/avr32/boards/atngw100/Kconfig"
136source "arch/avr32/boards/favr-32/Kconfig"
129 137
130choice 138choice
131 prompt "Boot loader type" 139 prompt "Boot loader type"
diff --git a/arch/avr32/Makefile b/arch/avr32/Makefile
index c9e1f0b47fd3..b088e103e753 100644
--- a/arch/avr32/Makefile
+++ b/arch/avr32/Makefile
@@ -33,6 +33,8 @@ head-y += arch/avr32/kernel/head.o
33core-y += $(machdirs) 33core-y += $(machdirs)
34core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/ 34core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/
35core-$(CONFIG_BOARD_ATNGW100) += arch/avr32/boards/atngw100/ 35core-$(CONFIG_BOARD_ATNGW100) += arch/avr32/boards/atngw100/
36core-$(CONFIG_BOARD_FAVR_32) += arch/avr32/boards/favr-32/
37core-$(CONFIG_BOARD_MIMC200) += arch/avr32/boards/mimc200/
36core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/ 38core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
37core-y += arch/avr32/kernel/ 39core-y += arch/avr32/kernel/
38core-y += arch/avr32/mm/ 40core-y += arch/avr32/mm/
diff --git a/arch/avr32/boards/atngw100/Kconfig b/arch/avr32/boards/atngw100/Kconfig
new file mode 100644
index 000000000000..b3f99477bbeb
--- /dev/null
+++ b/arch/avr32/boards/atngw100/Kconfig
@@ -0,0 +1,35 @@
1# NGW100 customization
2
3if BOARD_ATNGW100
4
5config BOARD_ATNGW100_EVKLCD10X
6 bool "Add support for EVKLCD10X addon board"
7 help
8 This enables support for the EVKLCD100 (QVGA) or EVKLCD101 (VGA)
9 addon board for the NGW100. By enabling this the LCD controller and
10 AC97 controller is added as platform devices.
11
12 This choice disables the detect pin and the write-protect pin for the
13 MCI platform device, since it conflicts with the LCD platform device.
14 The MCI pins can be reenabled by editing the "add device function" but
15 this may break the setup for other displays that use these pins.
16
17 Choose 'Y' here if you have a EVKLCD100/101 connected to the NGW100.
18
19choice
20 prompt "LCD panel resolution on EVKLCD10X"
21 depends on BOARD_ATNGW100_EVKLCD10X
22 default BOARD_ATNGW100_EVKLCD10X_VGA
23
24config BOARD_ATNGW100_EVKLCD10X_QVGA
25 bool "QVGA (320x240)"
26
27config BOARD_ATNGW100_EVKLCD10X_VGA
28 bool "VGA (640x480)"
29
30config BOARD_ATNGW100_EVKLCD10X_POW_QVGA
31 bool "Powertip QVGA (320x240)"
32
33endchoice
34
35endif # BOARD_ATNGW100
diff --git a/arch/avr32/boards/atngw100/Makefile b/arch/avr32/boards/atngw100/Makefile
index c740aa116755..6376f5322e4d 100644
--- a/arch/avr32/boards/atngw100/Makefile
+++ b/arch/avr32/boards/atngw100/Makefile
@@ -1 +1,2 @@
1obj-y += setup.o flash.o 1obj-y += setup.o flash.o
2obj-$(CONFIG_BOARD_ATNGW100_EVKLCD10X) += evklcd10x.o
diff --git a/arch/avr32/boards/atngw100/evklcd10x.c b/arch/avr32/boards/atngw100/evklcd10x.c
new file mode 100644
index 000000000000..8140b22b3461
--- /dev/null
+++ b/arch/avr32/boards/atngw100/evklcd10x.c
@@ -0,0 +1,155 @@
1/*
2 * Board-specific setup code for the ATEVKLCD10X addon board to the ATNGW100
3 * Network Gateway
4 *
5 * Copyright (C) 2008 Atmel Corporation
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published by
9 * the Free Software Foundation.
10 */
11
12#include <linux/init.h>
13#include <linux/linkage.h>
14#include <linux/fb.h>
15#include <linux/platform_device.h>
16
17#include <video/atmel_lcdc.h>
18
19#include <asm/setup.h>
20
21#include <mach/at32ap700x.h>
22#include <mach/board.h>
23
24static struct ac97c_platform_data __initdata ac97c0_data = {
25 .dma_rx_periph_id = 3,
26 .dma_tx_periph_id = 4,
27 .dma_controller_id = 0,
28 .reset_pin = GPIO_PIN_PB(19),
29};
30
31#ifdef CONFIG_BOARD_ATNGW100_EVKLCD10X_VGA
32static struct fb_videomode __initdata tcg057vglad_modes[] = {
33 {
34 .name = "640x480 @ 60",
35 .refresh = 60,
36 .xres = 640, .yres = 480,
37 .pixclock = KHZ2PICOS(25180),
38
39 .left_margin = 64, .right_margin = 31,
40 .upper_margin = 34, .lower_margin = 2,
41 .hsync_len = 96, .vsync_len = 4,
42
43 .sync = 0,
44 .vmode = FB_VMODE_NONINTERLACED,
45 },
46};
47
48static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
49 .manufacturer = "KYO",
50 .monitor = "TCG057VGLAD",
51 .modedb = tcg057vglad_modes,
52 .modedb_len = ARRAY_SIZE(tcg057vglad_modes),
53 .hfmin = 19948,
54 .hfmax = 31478,
55 .vfmin = 50,
56 .vfmax = 67,
57 .dclkmax = 28330000,
58};
59
60static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
61 .default_bpp = 16,
62 .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
63 .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
64 | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
65 | ATMEL_LCDC_MEMOR_BIG),
66 .default_monspecs = &atevklcd10x_default_monspecs,
67 .guard_time = 2,
68};
69#elif CONFIG_BOARD_ATNGW100_EVKLCD10X_QVGA
70static struct fb_videomode __initdata tcg057qvlad_modes[] = {
71 {
72 .name = "320x240 @ 60",
73 .refresh = 60,
74 .xres = 320, .yres = 240,
75 .pixclock = KHZ2PICOS(6300),
76
77 .left_margin = 52, .right_margin = 28,
78 .upper_margin = 7, .lower_margin = 2,
79 .hsync_len = 96, .vsync_len = 4,
80
81 .sync = 0,
82 .vmode = FB_VMODE_NONINTERLACED,
83 },
84};
85
86static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
87 .manufacturer = "KYO",
88 .monitor = "TCG057QVLAD",
89 .modedb = tcg057qvlad_modes,
90 .modedb_len = ARRAY_SIZE(tcg057qvlad_modes),
91 .hfmin = 19948,
92 .hfmax = 31478,
93 .vfmin = 50,
94 .vfmax = 67,
95 .dclkmax = 7000000,
96};
97
98static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
99 .default_bpp = 16,
100 .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
101 .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
102 | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
103 | ATMEL_LCDC_MEMOR_BIG),
104 .default_monspecs = &atevklcd10x_default_monspecs,
105 .guard_time = 2,
106};
107#elif CONFIG_BOARD_ATNGW100_EVKLCD10X_POW_QVGA
108static struct fb_videomode __initdata ph320240t_modes[] = {
109 {
110 .name = "320x240 @ 60",
111 .refresh = 60,
112 .xres = 320, .yres = 240,
113 .pixclock = KHZ2PICOS(6300),
114
115 .left_margin = 38, .right_margin = 20,
116 .upper_margin = 15, .lower_margin = 5,
117 .hsync_len = 30, .vsync_len = 3,
118
119 .sync = 0,
120 .vmode = FB_VMODE_NONINTERLACED,
121 },
122};
123
124static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
125 .manufacturer = "POW",
126 .monitor = "PH320240T",
127 .modedb = ph320240t_modes,
128 .modedb_len = ARRAY_SIZE(ph320240t_modes),
129 .hfmin = 14400,
130 .hfmax = 21600,
131 .vfmin = 50,
132 .vfmax = 90,
133 .dclkmax = 6400000,
134};
135
136static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
137 .default_bpp = 16,
138 .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
139 .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
140 | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
141 | ATMEL_LCDC_MEMOR_BIG),
142 .default_monspecs = &atevklcd10x_default_monspecs,
143 .guard_time = 2,
144};
145#endif
146
147static int __init atevklcd10x_init(void)
148{
149 at32_add_device_ac97c(0, &ac97c0_data);
150
151 at32_add_device_lcdc(0, &atevklcd10x_lcdc_data,
152 fbmem_start, fbmem_size, 1);
153 return 0;
154}
155postcore_initcall(atevklcd10x_init);
diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c
index 6c54580a66df..32fb9ba0fbdf 100644
--- a/arch/avr32/boards/atngw100/setup.c
+++ b/arch/avr32/boards/atngw100/setup.c
@@ -56,8 +56,13 @@ static struct spi_board_info spi0_board_info[] __initdata = {
56static struct mci_platform_data __initdata mci0_data = { 56static struct mci_platform_data __initdata mci0_data = {
57 .slot[0] = { 57 .slot[0] = {
58 .bus_width = 4, 58 .bus_width = 4,
59#ifndef CONFIG_BOARD_ATNGW100_EVKLCD10X
59 .detect_pin = GPIO_PIN_PC(25), 60 .detect_pin = GPIO_PIN_PC(25),
60 .wp_pin = GPIO_PIN_PE(0), 61 .wp_pin = GPIO_PIN_PE(0),
62#else
63 .detect_pin = GPIO_PIN_NONE,
64 .wp_pin = GPIO_PIN_NONE,
65#endif
61 }, 66 },
62}; 67};
63 68
@@ -172,8 +177,6 @@ static int __init atngw100_init(void)
172 * reserve any pins for it. 177 * reserve any pins for it.
173 */ 178 */
174 179
175 at32_add_system_devices();
176
177 at32_add_device_usart(0); 180 at32_add_device_usart(0);
178 181
179 set_hw_addr(at32_add_device_eth(0, &eth_data[0])); 182 set_hw_addr(at32_add_device_eth(0, &eth_data[0]));
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
index 29e5b51a7fd2..5c5cdf3b464f 100644
--- a/arch/avr32/boards/atstk1000/atstk1002.c
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
@@ -305,8 +305,6 @@ static int __init atstk1002_init(void)
305 at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */ 305 at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */
306 at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */ 306 at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */
307 307
308 at32_add_system_devices();
309
310#ifdef CONFIG_BOARD_ATSTK1006 308#ifdef CONFIG_BOARD_ATSTK1006
311 smc_set_timing(&nand_config, &nand_timing); 309 smc_set_timing(&nand_config, &nand_timing);
312 smc_set_configuration(3, &nand_config); 310 smc_set_configuration(3, &nand_config);
diff --git a/arch/avr32/boards/atstk1000/atstk1003.c b/arch/avr32/boards/atstk1000/atstk1003.c
index be089d7f37eb..134b566630b0 100644
--- a/arch/avr32/boards/atstk1000/atstk1003.c
+++ b/arch/avr32/boards/atstk1000/atstk1003.c
@@ -149,8 +149,6 @@ static int __init atstk1003_init(void)
149 at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */ 149 at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */
150 at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */ 150 at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */
151 151
152 at32_add_system_devices();
153
154#ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM 152#ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
155 at32_add_device_usart(1); 153 at32_add_device_usart(1);
156#else 154#else
diff --git a/arch/avr32/boards/atstk1000/atstk1004.c b/arch/avr32/boards/atstk1000/atstk1004.c
index 248ef237c167..cb32eb844aa7 100644
--- a/arch/avr32/boards/atstk1000/atstk1004.c
+++ b/arch/avr32/boards/atstk1000/atstk1004.c
@@ -132,8 +132,6 @@ void __init setup_board(void)
132 132
133static int __init atstk1004_init(void) 133static int __init atstk1004_init(void)
134{ 134{
135 at32_add_system_devices();
136
137#ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM 135#ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
138 at32_add_device_usart(1); 136 at32_add_device_usart(1);
139#else 137#else
diff --git a/arch/avr32/boards/favr-32/Kconfig b/arch/avr32/boards/favr-32/Kconfig
new file mode 100644
index 000000000000..2c83d1ddcaec
--- /dev/null
+++ b/arch/avr32/boards/favr-32/Kconfig
@@ -0,0 +1,22 @@
1# Favr-32 customization
2
3if BOARD_FAVR_32
4
5config BOARD_FAVR32_ABDAC_RATE
6 int "DAC target rate"
7 default 44100
8 range 32000 50000
9 help
10 Specify the target rate the internal DAC should try to match. This
11 will use PLL1 to generate a frequency as close as possible to this
12 rate.
13
14 Must be within the range 32000 to 50000, which should be suitable to
15 generate most other frequencies in power of 2 steps.
16
17 Ex:
18 48000 will also suit 24000 and 12000
19 44100 will also suit 22050 and 11025
20 32000 will also suit 16000 and 8000
21
22endif # BOARD_FAVR_32
diff --git a/arch/avr32/boards/favr-32/Makefile b/arch/avr32/boards/favr-32/Makefile
new file mode 100644
index 000000000000..234f21508e4b
--- /dev/null
+++ b/arch/avr32/boards/favr-32/Makefile
@@ -0,0 +1 @@
obj-y += setup.o flash.o
diff --git a/arch/avr32/boards/favr-32/flash.c b/arch/avr32/boards/favr-32/flash.c
new file mode 100644
index 000000000000..5f139b7cb5f7
--- /dev/null
+++ b/arch/avr32/boards/favr-32/flash.c
@@ -0,0 +1,98 @@
1/*
2 * Favr-32 board-specific flash initialization
3 *
4 * Copyright (C) 2008 Atmel Corporation
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 version 2 as
8 * published by the Free Software Foundation.
9 */
10#include <linux/init.h>
11#include <linux/platform_device.h>
12#include <linux/mtd/mtd.h>
13#include <linux/mtd/partitions.h>
14#include <linux/mtd/physmap.h>
15
16#include <asm/arch/smc.h>
17
18static struct smc_timing flash_timing __initdata = {
19 .ncs_read_setup = 0,
20 .nrd_setup = 40,
21 .ncs_write_setup = 0,
22 .nwe_setup = 10,
23
24 .ncs_read_pulse = 80,
25 .nrd_pulse = 40,
26 .ncs_write_pulse = 65,
27 .nwe_pulse = 55,
28
29 .read_cycle = 120,
30 .write_cycle = 120,
31};
32
33static struct smc_config flash_config __initdata = {
34 .bus_width = 2,
35 .nrd_controlled = 1,
36 .nwe_controlled = 1,
37 .byte_write = 1,
38};
39
40static struct mtd_partition flash_parts[] = {
41 {
42 .name = "u-boot",
43 .offset = 0x00000000,
44 .size = 0x00020000, /* 128 KiB */
45 .mask_flags = MTD_WRITEABLE,
46 },
47 {
48 .name = "root",
49 .offset = 0x00020000,
50 .size = 0x007d0000,
51 },
52 {
53 .name = "env",
54 .offset = 0x007f0000,
55 .size = 0x00010000,
56 .mask_flags = MTD_WRITEABLE,
57 },
58};
59
60static struct physmap_flash_data flash_data = {
61 .width = 2,
62 .nr_parts = ARRAY_SIZE(flash_parts),
63 .parts = flash_parts,
64};
65
66static struct resource flash_resource = {
67 .start = 0x00000000,
68 .end = 0x007fffff,
69 .flags = IORESOURCE_MEM,
70};
71
72static struct platform_device flash_device = {
73 .name = "physmap-flash",
74 .id = 0,
75 .resource = &flash_resource,
76 .num_resources = 1,
77 .dev = {
78 .platform_data = &flash_data,
79 },
80};
81
82/* This needs to be called after the SMC has been initialized */
83static int __init favr32_flash_init(void)
84{
85 int ret;
86
87 smc_set_timing(&flash_config, &flash_timing);
88 ret = smc_set_configuration(0, &flash_config);
89 if (ret < 0) {
90 printk(KERN_ERR "Favr-32: failed to set NOR flash timing\n");
91 return ret;
92 }
93
94 platform_device_register(&flash_device);
95
96 return 0;
97}
98device_initcall(favr32_flash_init);
diff --git a/arch/avr32/boards/favr-32/setup.c b/arch/avr32/boards/favr-32/setup.c
new file mode 100644
index 000000000000..7538f3d2b9e0
--- /dev/null
+++ b/arch/avr32/boards/favr-32/setup.c
@@ -0,0 +1,352 @@
1/*
2 * Favr-32 board-specific setup code.
3 *
4 * Copyright (C) 2008 Atmel Corporation
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 version 2 as
8 * published by the Free Software Foundation.
9 */
10#include <linux/clk.h>
11#include <linux/etherdevice.h>
12#include <linux/bootmem.h>
13#include <linux/fb.h>
14#include <linux/init.h>
15#include <linux/platform_device.h>
16#include <linux/types.h>
17#include <linux/linkage.h>
18#include <linux/gpio.h>
19#include <linux/leds.h>
20#include <linux/atmel-pwm-bl.h>
21#include <linux/spi/spi.h>
22#include <linux/spi/ads7846.h>
23
24#include <video/atmel_lcdc.h>
25
26#include <asm/setup.h>
27
28#include <asm/arch/at32ap700x.h>
29#include <asm/arch/init.h>
30#include <asm/arch/board.h>
31#include <asm/arch/portmux.h>
32
33/* Oscillator frequencies. These are board-specific */
34unsigned long at32_board_osc_rates[3] = {
35 [0] = 32768, /* 32.768 kHz on RTC osc */
36 [1] = 20000000, /* 20 MHz on osc0 */
37 [2] = 12000000, /* 12 MHz on osc1 */
38};
39
40/* Initialized by bootloader-specific startup code. */
41struct tag *bootloader_tags __initdata;
42
43struct eth_addr {
44 u8 addr[6];
45};
46static struct eth_addr __initdata hw_addr[1];
47static struct eth_platform_data __initdata eth_data[1] = {
48 {
49 .phy_mask = ~(1U << 1),
50 },
51};
52
53static int ads7843_get_pendown_state(void)
54{
55 return !gpio_get_value(GPIO_PIN_PB(3));
56}
57
58static struct ads7846_platform_data ads7843_data = {
59 .model = 7843,
60 .get_pendown_state = ads7843_get_pendown_state,
61 .pressure_max = 255,
62 /*
63 * Values below are for debounce filtering, these can be experimented
64 * with further.
65 */
66 .debounce_max = 20,
67 .debounce_rep = 4,
68 .debounce_tol = 5,
69};
70
71static struct spi_board_info __initdata spi1_board_info[] = {
72 {
73 /* ADS7843 touch controller */
74 .modalias = "ads7846",
75 .max_speed_hz = 2000000,
76 .chip_select = 0,
77 .bus_num = 1,
78 .platform_data = &ads7843_data,
79 },
80};
81
82static struct fb_videomode __initdata lb104v03_modes[] = {
83 {
84 .name = "640x480 @ 50",
85 .refresh = 50,
86 .xres = 640, .yres = 480,
87 .pixclock = KHZ2PICOS(25100),
88
89 .left_margin = 90, .right_margin = 70,
90 .upper_margin = 30, .lower_margin = 15,
91 .hsync_len = 12, .vsync_len = 2,
92
93 .sync = 0,
94 .vmode = FB_VMODE_NONINTERLACED,
95 },
96};
97
98static struct fb_monspecs __initdata favr32_default_monspecs = {
99 .manufacturer = "LG",
100 .monitor = "LB104V03",
101 .modedb = lb104v03_modes,
102 .modedb_len = ARRAY_SIZE(lb104v03_modes),
103 .hfmin = 27273,
104 .hfmax = 31111,
105 .vfmin = 45,
106 .vfmax = 60,
107 .dclkmax = 28000000,
108};
109
110struct atmel_lcdfb_info __initdata favr32_lcdc_data = {
111 .default_bpp = 16,
112 .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
113 .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
114 | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
115 | ATMEL_LCDC_MEMOR_BIG),
116 .default_monspecs = &favr32_default_monspecs,
117 .guard_time = 2,
118};
119
120static struct gpio_led favr32_leds[] = {
121 {
122 .name = "green",
123 .gpio = GPIO_PIN_PE(19),
124 .default_trigger = "heartbeat",
125 .active_low = 1,
126 },
127 {
128 .name = "red",
129 .gpio = GPIO_PIN_PE(20),
130 .active_low = 1,
131 },
132};
133
134static struct gpio_led_platform_data favr32_led_data = {
135 .num_leds = ARRAY_SIZE(favr32_leds),
136 .leds = favr32_leds,
137};
138
139static struct platform_device favr32_led_dev = {
140 .name = "leds-gpio",
141 .id = 0,
142 .dev = {
143 .platform_data = &favr32_led_data,
144 },
145};
146
147/*
148 * The next two functions should go away as the boot loader is
149 * supposed to initialize the macb address registers with a valid
150 * ethernet address. But we need to keep it around for a while until
151 * we can be reasonably sure the boot loader does this.
152 *
153 * The phy_id is ignored as the driver will probe for it.
154 */
155static int __init parse_tag_ethernet(struct tag *tag)
156{
157 int i;
158
159 i = tag->u.ethernet.mac_index;
160 if (i < ARRAY_SIZE(hw_addr))
161 memcpy(hw_addr[i].addr, tag->u.ethernet.hw_address,
162 sizeof(hw_addr[i].addr));
163
164 return 0;
165}
166__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
167
168static void __init set_hw_addr(struct platform_device *pdev)
169{
170 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
171 const u8 *addr;
172 void __iomem *regs;
173 struct clk *pclk;
174
175 if (!res)
176 return;
177 if (pdev->id >= ARRAY_SIZE(hw_addr))
178 return;
179
180 addr = hw_addr[pdev->id].addr;
181 if (!is_valid_ether_addr(addr))
182 return;
183
184 /*
185 * Since this is board-specific code, we'll cheat and use the
186 * physical address directly as we happen to know that it's
187 * the same as the virtual address.
188 */
189 regs = (void __iomem __force *)res->start;
190 pclk = clk_get(&pdev->dev, "pclk");
191 if (!pclk)
192 return;
193
194 clk_enable(pclk);
195 __raw_writel((addr[3] << 24) | (addr[2] << 16)
196 | (addr[1] << 8) | addr[0], regs + 0x98);
197 __raw_writel((addr[5] << 8) | addr[4], regs + 0x9c);
198 clk_disable(pclk);
199 clk_put(pclk);
200}
201
202void __init favr32_setup_leds(void)
203{
204 unsigned i;
205
206 for (i = 0; i < ARRAY_SIZE(favr32_leds); i++)
207 at32_select_gpio(favr32_leds[i].gpio, AT32_GPIOF_OUTPUT);
208
209 platform_device_register(&favr32_led_dev);
210}
211
212static struct atmel_pwm_bl_platform_data atmel_pwm_bl_pdata = {
213 .pwm_channel = 2,
214 .pwm_frequency = 200000,
215 .pwm_compare_max = 345,
216 .pwm_duty_max = 345,
217 .pwm_duty_min = 90,
218 .pwm_active_low = 1,
219 .gpio_on = GPIO_PIN_PA(28),
220 .on_active_low = 0,
221};
222
223static struct platform_device atmel_pwm_bl_dev = {
224 .name = "atmel-pwm-bl",
225 .id = 0,
226 .dev = {
227 .platform_data = &atmel_pwm_bl_pdata,
228 },
229};
230
231static void __init favr32_setup_atmel_pwm_bl(void)
232{
233 platform_device_register(&atmel_pwm_bl_dev);
234 at32_select_gpio(atmel_pwm_bl_pdata.gpio_on, 0);
235}
236
237void __init setup_board(void)
238{
239 at32_map_usart(3, 0); /* USART 3 => /dev/ttyS0 */
240 at32_setup_serial_console(0);
241}
242
243static int __init set_abdac_rate(struct platform_device *pdev)
244{
245 int retval;
246 struct clk *osc1;
247 struct clk *pll1;
248 struct clk *abdac;
249
250 if (pdev == NULL)
251 return -ENXIO;
252
253 osc1 = clk_get(NULL, "osc1");
254 if (IS_ERR(osc1)) {
255 retval = PTR_ERR(osc1);
256 goto out;
257 }
258
259 pll1 = clk_get(NULL, "pll1");
260 if (IS_ERR(pll1)) {
261 retval = PTR_ERR(pll1);
262 goto out_osc1;
263 }
264
265 abdac = clk_get(&pdev->dev, "sample_clk");
266 if (IS_ERR(abdac)) {
267 retval = PTR_ERR(abdac);
268 goto out_pll1;
269 }
270
271 retval = clk_set_parent(pll1, osc1);
272 if (retval != 0)
273 goto out_abdac;
274
275 /*
276 * Rate is 32000 to 50000 and ABDAC oversamples 256x. Multiply, in
277 * power of 2, to a value above 80 MHz. Power of 2 so it is possible
278 * for the generic clock to divide it down again and 80 MHz is the
279 * lowest frequency for the PLL.
280 */
281 retval = clk_round_rate(pll1,
282 CONFIG_BOARD_FAVR32_ABDAC_RATE * 256 * 16);
283 if (retval < 0)
284 goto out_abdac;
285
286 retval = clk_set_rate(pll1, retval);
287 if (retval != 0)
288 goto out_abdac;
289
290 retval = clk_set_parent(abdac, pll1);
291 if (retval != 0)
292 goto out_abdac;
293
294out_abdac:
295 clk_put(abdac);
296out_pll1:
297 clk_put(pll1);
298out_osc1:
299 clk_put(osc1);
300out:
301 return retval;
302}
303
304static int __init favr32_init(void)
305{
306 /*
307 * Favr-32 uses 32-bit SDRAM interface. Reserve the SDRAM-specific
308 * pins so that nobody messes with them.
309 */
310 at32_reserve_pin(GPIO_PIN_PE(0)); /* DATA[16] */
311 at32_reserve_pin(GPIO_PIN_PE(1)); /* DATA[17] */
312 at32_reserve_pin(GPIO_PIN_PE(2)); /* DATA[18] */
313 at32_reserve_pin(GPIO_PIN_PE(3)); /* DATA[19] */
314 at32_reserve_pin(GPIO_PIN_PE(4)); /* DATA[20] */
315 at32_reserve_pin(GPIO_PIN_PE(5)); /* DATA[21] */
316 at32_reserve_pin(GPIO_PIN_PE(6)); /* DATA[22] */
317 at32_reserve_pin(GPIO_PIN_PE(7)); /* DATA[23] */
318 at32_reserve_pin(GPIO_PIN_PE(8)); /* DATA[24] */
319 at32_reserve_pin(GPIO_PIN_PE(9)); /* DATA[25] */
320 at32_reserve_pin(GPIO_PIN_PE(10)); /* DATA[26] */
321 at32_reserve_pin(GPIO_PIN_PE(11)); /* DATA[27] */
322 at32_reserve_pin(GPIO_PIN_PE(12)); /* DATA[28] */
323 at32_reserve_pin(GPIO_PIN_PE(13)); /* DATA[29] */
324 at32_reserve_pin(GPIO_PIN_PE(14)); /* DATA[30] */
325 at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */
326 at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */
327
328 at32_select_gpio(GPIO_PIN_PB(3), 0); /* IRQ from ADS7843 */
329
330 at32_add_system_devices();
331
332 at32_add_device_usart(0);
333
334 set_hw_addr(at32_add_device_eth(0, &eth_data[0]));
335
336 spi1_board_info[0].irq = gpio_to_irq(GPIO_PIN_PB(3));
337
338 set_abdac_rate(at32_add_device_abdac(0));
339
340 at32_add_device_pwm(1 << atmel_pwm_bl_pdata.pwm_channel);
341 at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
342 at32_add_device_mci(0, NULL);
343 at32_add_device_usba(0, NULL);
344 at32_add_device_lcdc(0, &favr32_lcdc_data, fbmem_start, fbmem_size, 0);
345
346 favr32_setup_leds();
347
348 favr32_setup_atmel_pwm_bl();
349
350 return 0;
351}
352postcore_initcall(favr32_init);
diff --git a/arch/avr32/boards/mimc200/Makefile b/arch/avr32/boards/mimc200/Makefile
new file mode 100644
index 000000000000..79c076e168a8
--- /dev/null
+++ b/arch/avr32/boards/mimc200/Makefile
@@ -0,0 +1 @@
obj-y += setup.o flash.o fram.o
diff --git a/arch/avr32/boards/mimc200/flash.c b/arch/avr32/boards/mimc200/flash.c
new file mode 100644
index 000000000000..d83d650fc13f
--- /dev/null
+++ b/arch/avr32/boards/mimc200/flash.c
@@ -0,0 +1,143 @@
1/*
2 * MIMC200 board-specific flash initialization
3 *
4 * Copyright (C) 2008 Mercury IMC Ltd
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 version 2 as
8 * published by the Free Software Foundation.
9 */
10#include <linux/init.h>
11#include <linux/platform_device.h>
12#include <linux/mtd/mtd.h>
13#include <linux/mtd/partitions.h>
14#include <linux/mtd/physmap.h>
15
16#include <mach/smc.h>
17
18static struct smc_timing flash_timing __initdata = {
19 .ncs_read_setup = 0,
20 .nrd_setup = 15,
21 .ncs_write_setup = 0,
22 .nwe_setup = 0,
23
24 .ncs_read_pulse = 115,
25 .nrd_pulse = 110,
26 .ncs_write_pulse = 60,
27 .nwe_pulse = 60,
28
29 .read_cycle = 115,
30 .write_cycle = 100,
31};
32
33static struct smc_config flash_config __initdata = {
34 .bus_width = 2,
35 .nrd_controlled = 1,
36 .nwe_controlled = 1,
37 .byte_write = 1,
38};
39
40/* system flash definition */
41
42static struct mtd_partition flash_parts_system[] = {
43 {
44 .name = "u-boot",
45 .offset = 0x00000000,
46 .size = 0x00020000, /* 128 KiB */
47 .mask_flags = MTD_WRITEABLE,
48 },
49 {
50 .name = "root",
51 .offset = 0x00020000,
52 .size = 0x007c0000,
53 },
54 {
55 .name = "splash",
56 .offset = 0x007e0000,
57 .size = 0x00010000, /* 64KiB */
58 },
59 {
60 .name = "env",
61 .offset = 0x007f0000,
62 .size = 0x00010000,
63 .mask_flags = MTD_WRITEABLE,
64 },
65};
66
67static struct physmap_flash_data flash_system = {
68 .width = 2,
69 .nr_parts = ARRAY_SIZE(flash_parts_system),
70 .parts = flash_parts_system,
71};
72
73static struct resource flash_resource_system = {
74 .start = 0x00000000,
75 .end = 0x007fffff,
76 .flags = IORESOURCE_MEM,
77};
78
79static struct platform_device flash_device_system = {
80 .name = "physmap-flash",
81 .id = 0,
82 .resource = &flash_resource_system,
83 .num_resources = 1,
84 .dev = {
85 .platform_data = &flash_system,
86 },
87};
88
89/* data flash definition */
90
91static struct mtd_partition flash_parts_data[] = {
92 {
93 .name = "data",
94 .offset = 0x00000000,
95 .size = 0x00800000,
96 },
97};
98
99static struct physmap_flash_data flash_data = {
100 .width = 2,
101 .nr_parts = ARRAY_SIZE(flash_parts_data),
102 .parts = flash_parts_data,
103};
104
105static struct resource flash_resource_data = {
106 .start = 0x08000000,
107 .end = 0x087fffff,
108 .flags = IORESOURCE_MEM,
109};
110
111static struct platform_device flash_device_data = {
112 .name = "physmap-flash",
113 .id = 1,
114 .resource = &flash_resource_data,
115 .num_resources = 1,
116 .dev = {
117 .platform_data = &flash_data,
118 },
119};
120
121/* This needs to be called after the SMC has been initialized */
122static int __init mimc200_flash_init(void)
123{
124 int ret;
125
126 smc_set_timing(&flash_config, &flash_timing);
127 ret = smc_set_configuration(0, &flash_config);
128 if (ret < 0) {
129 printk(KERN_ERR "mimc200: failed to set 'System' NOR flash timing\n");
130 return ret;
131 }
132 ret = smc_set_configuration(1, &flash_config);
133 if (ret < 0) {
134 printk(KERN_ERR "mimc200: failed to set 'Data' NOR flash timing\n");
135 return ret;
136 }
137
138 platform_device_register(&flash_device_system);
139 platform_device_register(&flash_device_data);
140
141 return 0;
142}
143device_initcall(mimc200_flash_init);
diff --git a/arch/avr32/boards/mimc200/fram.c b/arch/avr32/boards/mimc200/fram.c
new file mode 100644
index 000000000000..54fbd95cee9b
--- /dev/null
+++ b/arch/avr32/boards/mimc200/fram.c
@@ -0,0 +1,80 @@
1/*
2 * FRAM driver for MIMC200 board
3 *
4 * Copyright 2008 Mark Jackson <mpfj@mimc.co.uk>
5 *
6 * This module adds *very* simply support for the system's FRAM device.
7 * At the moment, this is hard-coded to the MIMC200 platform, and only
8 * supports mmap().
9 */
10
11#define FRAM_VERSION "1.0"
12
13#include <linux/miscdevice.h>
14#include <linux/proc_fs.h>
15#include <linux/mm.h>
16#include <linux/io.h>
17
18#define FRAM_BASE 0xac000000
19#define FRAM_SIZE 0x20000
20
21/*
22 * The are the file operation function for user access to /dev/fram
23 */
24
25static int fram_mmap(struct file *filp, struct vm_area_struct *vma)
26{
27 int ret;
28
29 ret = remap_pfn_range(vma,
30 vma->vm_start,
31 virt_to_phys((void *)((unsigned long)FRAM_BASE)) >> PAGE_SHIFT,
32 vma->vm_end-vma->vm_start,
33 PAGE_SHARED);
34
35 if (ret != 0)
36 return -EAGAIN;
37
38 return 0;
39}
40
41static const struct file_operations fram_fops = {
42 .owner = THIS_MODULE,
43 .mmap = fram_mmap,
44};
45
46#define FRAM_MINOR 0
47
48static struct miscdevice fram_dev = {
49 FRAM_MINOR,
50 "fram",
51 &fram_fops
52};
53
54static int __init
55fram_init(void)
56{
57 int ret;
58
59 ret = misc_register(&fram_dev);
60 if (ret) {
61 printk(KERN_ERR "fram: can't misc_register on minor=%d\n",
62 FRAM_MINOR);
63 return ret;
64 }
65 printk(KERN_INFO "FRAM memory driver v" FRAM_VERSION "\n");
66 return 0;
67}
68
69static void __exit
70fram_cleanup_module(void)
71{
72 misc_deregister(&fram_dev);
73}
74
75module_init(fram_init);
76module_exit(fram_cleanup_module);
77
78MODULE_LICENSE("GPL");
79
80MODULE_ALIAS_MISCDEV(FRAM_MINOR);
diff --git a/arch/avr32/boards/mimc200/setup.c b/arch/avr32/boards/mimc200/setup.c
new file mode 100644
index 000000000000..397cbb8f44c8
--- /dev/null
+++ b/arch/avr32/boards/mimc200/setup.c
@@ -0,0 +1,237 @@
1/*
2 * Board-specific setup code for the MIMC200
3 *
4 * Copyright (C) 2008 Mercury IMC Ltd
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 version 2 as
8 * published by the Free Software Foundation.
9 */
10
11extern struct atmel_lcdfb_info mimc200_lcdc_data;
12
13#include <linux/clk.h>
14#include <linux/etherdevice.h>
15#include <linux/i2c-gpio.h>
16#include <linux/init.h>
17#include <linux/linkage.h>
18#include <linux/platform_device.h>
19#include <linux/types.h>
20#include <linux/leds.h>
21#include <linux/spi/spi.h>
22#include <linux/spi/eeprom.h>
23
24#include <video/atmel_lcdc.h>
25#include <linux/fb.h>
26
27#include <asm/atmel-mci.h>
28#include <linux/io.h>
29#include <asm/setup.h>
30
31#include <mach/at32ap700x.h>
32#include <mach/board.h>
33#include <mach/init.h>
34#include <mach/portmux.h>
35
36/* Oscillator frequencies. These are board-specific */
37unsigned long at32_board_osc_rates[3] = {
38 [0] = 32768, /* 32.768 kHz on RTC osc */
39 [1] = 10000000, /* 10 MHz on osc0 */
40 [2] = 12000000, /* 12 MHz on osc1 */
41};
42
43/* Initialized by bootloader-specific startup code. */
44struct tag *bootloader_tags __initdata;
45
46static struct fb_videomode __initdata tx14d14_modes[] = {
47 {
48 .name = "640x480 @ 60",
49 .refresh = 60,
50 .xres = 640, .yres = 480,
51 .pixclock = KHZ2PICOS(11666),
52
53 .left_margin = 80, .right_margin = 1,
54 .upper_margin = 13, .lower_margin = 2,
55 .hsync_len = 64, .vsync_len = 1,
56
57 .sync = 0,
58 .vmode = FB_VMODE_NONINTERLACED,
59 },
60};
61
62static struct fb_monspecs __initdata mimc200_default_monspecs = {
63 .manufacturer = "HIT",
64 .monitor = "TX14D14VM1BAB",
65 .modedb = tx14d14_modes,
66 .modedb_len = ARRAY_SIZE(tx14d14_modes),
67 .hfmin = 14820,
68 .hfmax = 22230,
69 .vfmin = 60,
70 .vfmax = 73.3,
71 .dclkmax = 25200000,
72};
73
74struct atmel_lcdfb_info __initdata mimc200_lcdc_data = {
75 .default_bpp = 16,
76 .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
77 .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
78 | ATMEL_LCDC_INVCLK
79 | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
80 | ATMEL_LCDC_MEMOR_BIG),
81 .default_monspecs = &mimc200_default_monspecs,
82 .guard_time = 2,
83};
84
85struct eth_addr {
86 u8 addr[6];
87};
88static struct eth_addr __initdata hw_addr[2];
89static struct eth_platform_data __initdata eth_data[2];
90
91static struct spi_eeprom eeprom_25lc010 = {
92 .name = "25lc010",
93 .byte_len = 128,
94 .page_size = 16,
95 .flags = EE_ADDR1,
96};
97
98static struct spi_board_info spi0_board_info[] __initdata = {
99 {
100 .modalias = "rtc-ds1390",
101 .max_speed_hz = 4000000,
102 .chip_select = 2,
103 },
104 {
105 .modalias = "at25",
106 .max_speed_hz = 1000000,
107 .chip_select = 1,
108 .mode = SPI_MODE_3,
109 .platform_data = &eeprom_25lc010,
110 },
111};
112
113static struct mci_platform_data __initdata mci0_data = {
114 .slot[0] = {
115 .bus_width = 4,
116 .detect_pin = GPIO_PIN_PA(26),
117 .wp_pin = GPIO_PIN_PA(27),
118 },
119};
120
121/*
122 * The next two functions should go away as the boot loader is
123 * supposed to initialize the macb address registers with a valid
124 * ethernet address. But we need to keep it around for a while until
125 * we can be reasonably sure the boot loader does this.
126 *
127 * The phy_id is ignored as the driver will probe for it.
128 */
129static int __init parse_tag_ethernet(struct tag *tag)
130{
131 int i;
132
133 i = tag->u.ethernet.mac_index;
134 if (i < ARRAY_SIZE(hw_addr))
135 memcpy(hw_addr[i].addr, tag->u.ethernet.hw_address,
136 sizeof(hw_addr[i].addr));
137
138 return 0;
139}
140__tagtable(ATAG_ETHERNET, parse_tag_ethernet);
141
142static void __init set_hw_addr(struct platform_device *pdev)
143{
144 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
145 const u8 *addr;
146 void __iomem *regs;
147 struct clk *pclk;
148
149 if (!res)
150 return;
151 if (pdev->id >= ARRAY_SIZE(hw_addr))
152 return;
153
154 addr = hw_addr[pdev->id].addr;
155 if (!is_valid_ether_addr(addr))
156 return;
157
158 /*
159 * Since this is board-specific code, we'll cheat and use the
160 * physical address directly as we happen to know that it's
161 * the same as the virtual address.
162 */
163 regs = (void __iomem __force *)res->start;
164 pclk = clk_get(&pdev->dev, "pclk");
165 if (!pclk)
166 return;
167
168 clk_enable(pclk);
169 __raw_writel((addr[3] << 24) | (addr[2] << 16)
170 | (addr[1] << 8) | addr[0], regs + 0x98);
171 __raw_writel((addr[5] << 8) | addr[4], regs + 0x9c);
172 clk_disable(pclk);
173 clk_put(pclk);
174}
175
176void __init setup_board(void)
177{
178 at32_map_usart(0, 0); /* USART 0: /dev/ttyS0 (TTL --> Altera) */
179 at32_map_usart(1, 1); /* USART 1: /dev/ttyS1 (RS232) */
180 at32_map_usart(2, 2); /* USART 2: /dev/ttyS2 (RS485) */
181 at32_map_usart(3, 3); /* USART 3: /dev/ttyS3 (RS422 Multidrop) */
182}
183
184static struct i2c_gpio_platform_data i2c_gpio_data = {
185 .sda_pin = GPIO_PIN_PA(6),
186 .scl_pin = GPIO_PIN_PA(7),
187 .sda_is_open_drain = 1,
188 .scl_is_open_drain = 1,
189 .udelay = 2, /* close to 100 kHz */
190};
191
192static struct platform_device i2c_gpio_device = {
193 .name = "i2c-gpio",
194 .id = 0,
195 .dev = {
196 .platform_data = &i2c_gpio_data,
197 },
198};
199
200static struct i2c_board_info __initdata i2c_info[] = {
201};
202
203static int __init mimc200_init(void)
204{
205 /*
206 * MIMC200 uses 16-bit SDRAM interface, so we don't need to
207 * reserve any pins for it.
208 */
209
210 at32_add_system_devices();
211
212 at32_add_device_usart(0);
213 at32_add_device_usart(1);
214 at32_add_device_usart(2);
215 at32_add_device_usart(3);
216
217 set_hw_addr(at32_add_device_eth(0, &eth_data[0]));
218 set_hw_addr(at32_add_device_eth(1, &eth_data[1]));
219
220 at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info));
221 at32_add_device_mci(0, &mci0_data);
222 at32_add_device_usba(0, NULL);
223
224 at32_select_periph(GPIO_PIOB_BASE, 1 << 28, 0, AT32_GPIOF_PULLUP);
225 at32_select_gpio(i2c_gpio_data.sda_pin,
226 AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
227 at32_select_gpio(i2c_gpio_data.scl_pin,
228 AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
229 platform_device_register(&i2c_gpio_device);
230 i2c_register_board_info(0, i2c_info, ARRAY_SIZE(i2c_info));
231
232 at32_add_device_lcdc(0, &mimc200_lcdc_data,
233 fbmem_start, fbmem_size, 1);
234
235 return 0;
236}
237postcore_initcall(mimc200_init);
diff --git a/arch/avr32/configs/atngw100_evklcd100_defconfig b/arch/avr32/configs/atngw100_evklcd100_defconfig
new file mode 100644
index 000000000000..b0572d213826
--- /dev/null
+++ b/arch/avr32/configs/atngw100_evklcd100_defconfig
@@ -0,0 +1,1264 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25.6
4# Wed Jun 18 16:06:32 2008
5#
6CONFIG_AVR32=y
7CONFIG_GENERIC_GPIO=y
8CONFIG_GENERIC_HARDIRQS=y
9CONFIG_STACKTRACE_SUPPORT=y
10CONFIG_LOCKDEP_SUPPORT=y
11CONFIG_TRACE_IRQFLAGS_SUPPORT=y
12CONFIG_HARDIRQS_SW_RESEND=y
13CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_RWSEM_GENERIC_SPINLOCK=y
15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_GENERIC_HWEIGHT=y
21CONFIG_GENERIC_CALIBRATE_DELAY=y
22CONFIG_GENERIC_BUG=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24
25#
26# General setup
27#
28CONFIG_EXPERIMENTAL=y
29CONFIG_BROKEN_ON_SMP=y
30CONFIG_INIT_ENV_ARG_LIMIT=32
31CONFIG_LOCALVERSION=""
32# CONFIG_LOCALVERSION_AUTO is not set
33CONFIG_SWAP=y
34CONFIG_SYSVIPC=y
35CONFIG_SYSVIPC_SYSCTL=y
36CONFIG_POSIX_MQUEUE=y
37CONFIG_BSD_PROCESS_ACCT=y
38CONFIG_BSD_PROCESS_ACCT_V3=y
39# CONFIG_TASKSTATS is not set
40# CONFIG_AUDIT is not set
41# CONFIG_IKCONFIG is not set
42CONFIG_LOG_BUF_SHIFT=14
43# CONFIG_CGROUPS is not set
44# CONFIG_GROUP_SCHED is not set
45CONFIG_SYSFS_DEPRECATED=y
46CONFIG_SYSFS_DEPRECATED_V2=y
47# CONFIG_RELAY is not set
48# CONFIG_NAMESPACES is not set
49CONFIG_BLK_DEV_INITRD=y
50CONFIG_INITRAMFS_SOURCE=""
51CONFIG_CC_OPTIMIZE_FOR_SIZE=y
52CONFIG_SYSCTL=y
53CONFIG_EMBEDDED=y
54# CONFIG_SYSCTL_SYSCALL is not set
55CONFIG_KALLSYMS=y
56# CONFIG_KALLSYMS_ALL is not set
57# CONFIG_KALLSYMS_EXTRA_PASS is not set
58CONFIG_HOTPLUG=y
59CONFIG_PRINTK=y
60CONFIG_BUG=y
61CONFIG_ELF_CORE=y
62# CONFIG_COMPAT_BRK is not set
63# CONFIG_BASE_FULL is not set
64CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y
66CONFIG_EPOLL=y
67CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y
70CONFIG_SHMEM=y
71CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLUB_DEBUG=y
73# CONFIG_SLAB is not set
74CONFIG_SLUB=y
75# CONFIG_SLOB is not set
76CONFIG_PROFILING=y
77# CONFIG_MARKERS is not set
78CONFIG_OPROFILE=m
79CONFIG_HAVE_OPROFILE=y
80CONFIG_KPROBES=y
81CONFIG_HAVE_KPROBES=y
82# CONFIG_HAVE_KRETPROBES is not set
83CONFIG_PROC_PAGE_MONITOR=y
84CONFIG_SLABINFO=y
85CONFIG_RT_MUTEXES=y
86# CONFIG_TINY_SHMEM is not set
87CONFIG_BASE_SMALL=1
88CONFIG_MODULES=y
89CONFIG_MODULE_UNLOAD=y
90CONFIG_MODULE_FORCE_UNLOAD=y
91# CONFIG_MODVERSIONS is not set
92# CONFIG_MODULE_SRCVERSION_ALL is not set
93CONFIG_KMOD=y
94CONFIG_BLOCK=y
95# CONFIG_LBD is not set
96# CONFIG_BLK_DEV_IO_TRACE is not set
97# CONFIG_LSF is not set
98# CONFIG_BLK_DEV_BSG is not set
99
100#
101# IO Schedulers
102#
103CONFIG_IOSCHED_NOOP=y
104# CONFIG_IOSCHED_AS is not set
105# CONFIG_IOSCHED_DEADLINE is not set
106CONFIG_IOSCHED_CFQ=y
107# CONFIG_DEFAULT_AS is not set
108# CONFIG_DEFAULT_DEADLINE is not set
109CONFIG_DEFAULT_CFQ=y
110# CONFIG_DEFAULT_NOOP is not set
111CONFIG_DEFAULT_IOSCHED="cfq"
112CONFIG_CLASSIC_RCU=y
113
114#
115# System Type and features
116#
117CONFIG_TICK_ONESHOT=y
118CONFIG_NO_HZ=y
119CONFIG_HIGH_RES_TIMERS=y
120CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
121CONFIG_SUBARCH_AVR32B=y
122CONFIG_MMU=y
123CONFIG_PERFORMANCE_COUNTERS=y
124CONFIG_PLATFORM_AT32AP=y
125CONFIG_CPU_AT32AP700X=y
126CONFIG_CPU_AT32AP7000=y
127# CONFIG_BOARD_ATSTK1000 is not set
128CONFIG_BOARD_ATNGW100=y
129CONFIG_BOARD_ATNGW100_EVKLCD10X=y
130CONFIG_BOARD_ATNGW100_EVKLCD10X_QVGA=y
131# CONFIG_BOARD_ATNGW100_EVKLCD10X_VGA is not set
132# CONFIG_BOARD_ATNGW100_EVKLCD10X_POW_QVGA is not set
133CONFIG_BOARD_ATNGW100_I2C_GPIO=y
134CONFIG_LOADER_U_BOOT=y
135
136#
137# Atmel AVR32 AP options
138#
139# CONFIG_AP700X_32_BIT_SMC is not set
140CONFIG_AP700X_16_BIT_SMC=y
141# CONFIG_AP700X_8_BIT_SMC is not set
142CONFIG_GPIO_DEV=y
143CONFIG_LOAD_ADDRESS=0x10000000
144CONFIG_ENTRY_ADDRESS=0x90000000
145CONFIG_PHYS_OFFSET=0x10000000
146CONFIG_PREEMPT_NONE=y
147# CONFIG_PREEMPT_VOLUNTARY is not set
148# CONFIG_PREEMPT is not set
149# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
150# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
151# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
152CONFIG_ARCH_FLATMEM_ENABLE=y
153# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
154# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
155CONFIG_SELECT_MEMORY_MODEL=y
156CONFIG_FLATMEM_MANUAL=y
157# CONFIG_DISCONTIGMEM_MANUAL is not set
158# CONFIG_SPARSEMEM_MANUAL is not set
159CONFIG_FLATMEM=y
160CONFIG_FLAT_NODE_MEM_MAP=y
161# CONFIG_SPARSEMEM_STATIC is not set
162# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
163CONFIG_SPLIT_PTLOCK_CPUS=4
164# CONFIG_RESOURCES_64BIT is not set
165CONFIG_ZONE_DMA_FLAG=0
166CONFIG_VIRT_TO_BUS=y
167# CONFIG_OWNERSHIP_TRACE is not set
168CONFIG_NMI_DEBUGGING=y
169CONFIG_DW_DMAC=y
170# CONFIG_HZ_100 is not set
171CONFIG_HZ_250=y
172# CONFIG_HZ_300 is not set
173# CONFIG_HZ_1000 is not set
174CONFIG_HZ=250
175# CONFIG_SCHED_HRTICK is not set
176CONFIG_CMDLINE=""
177
178#
179# Power management options
180#
181CONFIG_ARCH_SUSPEND_POSSIBLE=y
182CONFIG_PM=y
183# CONFIG_PM_LEGACY is not set
184# CONFIG_PM_DEBUG is not set
185CONFIG_PM_SLEEP=y
186CONFIG_SUSPEND=y
187CONFIG_SUSPEND_FREEZER=y
188
189#
190# CPU Frequency scaling
191#
192CONFIG_CPU_FREQ=y
193CONFIG_CPU_FREQ_TABLE=y
194# CONFIG_CPU_FREQ_DEBUG is not set
195# CONFIG_CPU_FREQ_STAT is not set
196# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
197# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
198CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
199# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
200CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
201# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
202CONFIG_CPU_FREQ_GOV_USERSPACE=y
203CONFIG_CPU_FREQ_GOV_ONDEMAND=y
204# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
205CONFIG_CPU_FREQ_AT32AP=y
206
207#
208# Bus options
209#
210# CONFIG_ARCH_SUPPORTS_MSI is not set
211# CONFIG_PCCARD is not set
212
213#
214# Executable file formats
215#
216CONFIG_BINFMT_ELF=y
217# CONFIG_BINFMT_MISC is not set
218
219#
220# Networking
221#
222CONFIG_NET=y
223
224#
225# Networking options
226#
227CONFIG_PACKET=y
228CONFIG_PACKET_MMAP=y
229CONFIG_UNIX=y
230CONFIG_XFRM=y
231CONFIG_XFRM_USER=y
232# CONFIG_XFRM_SUB_POLICY is not set
233# CONFIG_XFRM_MIGRATE is not set
234# CONFIG_XFRM_STATISTICS is not set
235CONFIG_NET_KEY=y
236# CONFIG_NET_KEY_MIGRATE is not set
237CONFIG_INET=y
238CONFIG_IP_MULTICAST=y
239CONFIG_IP_ADVANCED_ROUTER=y
240CONFIG_ASK_IP_FIB_HASH=y
241# CONFIG_IP_FIB_TRIE is not set
242CONFIG_IP_FIB_HASH=y
243# CONFIG_IP_MULTIPLE_TABLES is not set
244# CONFIG_IP_ROUTE_MULTIPATH is not set
245# CONFIG_IP_ROUTE_VERBOSE is not set
246CONFIG_IP_PNP=y
247CONFIG_IP_PNP_DHCP=y
248# CONFIG_IP_PNP_BOOTP is not set
249# CONFIG_IP_PNP_RARP is not set
250# CONFIG_NET_IPIP is not set
251# CONFIG_NET_IPGRE is not set
252CONFIG_IP_MROUTE=y
253CONFIG_IP_PIMSM_V1=y
254# CONFIG_IP_PIMSM_V2 is not set
255# CONFIG_ARPD is not set
256CONFIG_SYN_COOKIES=y
257CONFIG_INET_AH=y
258CONFIG_INET_ESP=y
259CONFIG_INET_IPCOMP=y
260CONFIG_INET_XFRM_TUNNEL=y
261CONFIG_INET_TUNNEL=y
262CONFIG_INET_XFRM_MODE_TRANSPORT=y
263CONFIG_INET_XFRM_MODE_TUNNEL=y
264CONFIG_INET_XFRM_MODE_BEET=y
265# CONFIG_INET_LRO is not set
266CONFIG_INET_DIAG=y
267CONFIG_INET_TCP_DIAG=y
268# CONFIG_TCP_CONG_ADVANCED is not set
269CONFIG_TCP_CONG_CUBIC=y
270CONFIG_DEFAULT_TCP_CONG="cubic"
271# CONFIG_TCP_MD5SIG is not set
272# CONFIG_IP_VS is not set
273CONFIG_IPV6=y
274# CONFIG_IPV6_PRIVACY is not set
275# CONFIG_IPV6_ROUTER_PREF is not set
276# CONFIG_IPV6_OPTIMISTIC_DAD is not set
277CONFIG_INET6_AH=y
278CONFIG_INET6_ESP=y
279CONFIG_INET6_IPCOMP=y
280# CONFIG_IPV6_MIP6 is not set
281CONFIG_INET6_XFRM_TUNNEL=y
282CONFIG_INET6_TUNNEL=y
283CONFIG_INET6_XFRM_MODE_TRANSPORT=y
284CONFIG_INET6_XFRM_MODE_TUNNEL=y
285CONFIG_INET6_XFRM_MODE_BEET=y
286# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
287CONFIG_IPV6_SIT=y
288# CONFIG_IPV6_TUNNEL is not set
289# CONFIG_IPV6_MULTIPLE_TABLES is not set
290# CONFIG_NETWORK_SECMARK is not set
291CONFIG_NETFILTER=y
292# CONFIG_NETFILTER_DEBUG is not set
293# CONFIG_NETFILTER_ADVANCED is not set
294
295#
296# Core Netfilter Configuration
297#
298CONFIG_NETFILTER_NETLINK=m
299CONFIG_NETFILTER_NETLINK_LOG=m
300CONFIG_NF_CONNTRACK=m
301CONFIG_NF_CONNTRACK_FTP=m
302CONFIG_NF_CONNTRACK_IRC=m
303CONFIG_NF_CONNTRACK_SIP=m
304CONFIG_NF_CT_NETLINK=m
305CONFIG_NETFILTER_XTABLES=y
306CONFIG_NETFILTER_XT_TARGET_MARK=m
307CONFIG_NETFILTER_XT_TARGET_NFLOG=m
308CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
309CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
310CONFIG_NETFILTER_XT_MATCH_MARK=m
311CONFIG_NETFILTER_XT_MATCH_POLICY=m
312CONFIG_NETFILTER_XT_MATCH_STATE=m
313
314#
315# IP: Netfilter Configuration
316#
317CONFIG_NF_CONNTRACK_IPV4=m
318CONFIG_NF_CONNTRACK_PROC_COMPAT=y
319CONFIG_IP_NF_IPTABLES=m
320CONFIG_IP_NF_FILTER=m
321CONFIG_IP_NF_TARGET_REJECT=m
322CONFIG_IP_NF_TARGET_LOG=m
323# CONFIG_IP_NF_TARGET_ULOG is not set
324CONFIG_NF_NAT=m
325CONFIG_NF_NAT_NEEDED=y
326CONFIG_IP_NF_TARGET_MASQUERADE=m
327CONFIG_NF_NAT_FTP=m
328CONFIG_NF_NAT_IRC=m
329# CONFIG_NF_NAT_TFTP is not set
330# CONFIG_NF_NAT_AMANDA is not set
331# CONFIG_NF_NAT_PPTP is not set
332# CONFIG_NF_NAT_H323 is not set
333CONFIG_NF_NAT_SIP=m
334CONFIG_IP_NF_MANGLE=m
335
336#
337# IPv6: Netfilter Configuration
338#
339CONFIG_NF_CONNTRACK_IPV6=m
340CONFIG_IP6_NF_IPTABLES=m
341CONFIG_IP6_NF_MATCH_IPV6HEADER=m
342CONFIG_IP6_NF_FILTER=m
343CONFIG_IP6_NF_TARGET_LOG=m
344CONFIG_IP6_NF_TARGET_REJECT=m
345CONFIG_IP6_NF_MANGLE=m
346# CONFIG_IP_DCCP is not set
347# CONFIG_IP_SCTP is not set
348# CONFIG_TIPC is not set
349# CONFIG_ATM is not set
350CONFIG_BRIDGE=m
351CONFIG_VLAN_8021Q=m
352# CONFIG_DECNET is not set
353CONFIG_LLC=m
354# CONFIG_LLC2 is not set
355# CONFIG_IPX is not set
356# CONFIG_ATALK is not set
357# CONFIG_X25 is not set
358# CONFIG_LAPB is not set
359# CONFIG_ECONET is not set
360# CONFIG_WAN_ROUTER is not set
361# CONFIG_NET_SCHED is not set
362
363#
364# Network testing
365#
366# CONFIG_NET_PKTGEN is not set
367# CONFIG_NET_TCPPROBE is not set
368# CONFIG_HAMRADIO is not set
369# CONFIG_CAN is not set
370# CONFIG_IRDA is not set
371# CONFIG_BT is not set
372# CONFIG_AF_RXRPC is not set
373
374#
375# Wireless
376#
377# CONFIG_CFG80211 is not set
378# CONFIG_WIRELESS_EXT is not set
379# CONFIG_MAC80211 is not set
380# CONFIG_IEEE80211 is not set
381# CONFIG_RFKILL is not set
382# CONFIG_NET_9P is not set
383
384#
385# Device Drivers
386#
387
388#
389# Generic Driver Options
390#
391CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
392CONFIG_STANDALONE=y
393# CONFIG_PREVENT_FIRMWARE_BUILD is not set
394# CONFIG_FW_LOADER is not set
395# CONFIG_DEBUG_DRIVER is not set
396# CONFIG_DEBUG_DEVRES is not set
397# CONFIG_SYS_HYPERVISOR is not set
398# CONFIG_CONNECTOR is not set
399CONFIG_MTD=y
400# CONFIG_MTD_DEBUG is not set
401# CONFIG_MTD_CONCAT is not set
402CONFIG_MTD_PARTITIONS=y
403# CONFIG_MTD_REDBOOT_PARTS is not set
404CONFIG_MTD_CMDLINE_PARTS=y
405
406#
407# User Modules And Translation Layers
408#
409CONFIG_MTD_CHAR=y
410CONFIG_MTD_BLKDEVS=y
411CONFIG_MTD_BLOCK=y
412# CONFIG_FTL is not set
413# CONFIG_NFTL is not set
414# CONFIG_INFTL is not set
415# CONFIG_RFD_FTL is not set
416# CONFIG_SSFDC is not set
417# CONFIG_MTD_OOPS is not set
418
419#
420# RAM/ROM/Flash chip drivers
421#
422CONFIG_MTD_CFI=y
423# CONFIG_MTD_JEDECPROBE is not set
424CONFIG_MTD_GEN_PROBE=y
425# CONFIG_MTD_CFI_ADV_OPTIONS is not set
426CONFIG_MTD_MAP_BANK_WIDTH_1=y
427CONFIG_MTD_MAP_BANK_WIDTH_2=y
428CONFIG_MTD_MAP_BANK_WIDTH_4=y
429# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
430# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
431# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
432CONFIG_MTD_CFI_I1=y
433CONFIG_MTD_CFI_I2=y
434# CONFIG_MTD_CFI_I4 is not set
435# CONFIG_MTD_CFI_I8 is not set
436# CONFIG_MTD_CFI_INTELEXT is not set
437CONFIG_MTD_CFI_AMDSTD=y
438# CONFIG_MTD_CFI_STAA is not set
439CONFIG_MTD_CFI_UTIL=y
440# CONFIG_MTD_RAM is not set
441# CONFIG_MTD_ROM is not set
442# CONFIG_MTD_ABSENT is not set
443
444#
445# Mapping drivers for chip access
446#
447# CONFIG_MTD_COMPLEX_MAPPINGS is not set
448CONFIG_MTD_PHYSMAP=y
449CONFIG_MTD_PHYSMAP_START=0x80000000
450CONFIG_MTD_PHYSMAP_LEN=0x0
451CONFIG_MTD_PHYSMAP_BANKWIDTH=2
452# CONFIG_MTD_PLATRAM is not set
453
454#
455# Self-contained MTD device drivers
456#
457CONFIG_MTD_DATAFLASH=y
458# CONFIG_MTD_M25P80 is not set
459# CONFIG_MTD_SLRAM is not set
460# CONFIG_MTD_PHRAM is not set
461# CONFIG_MTD_MTDRAM is not set
462# CONFIG_MTD_BLOCK2MTD is not set
463
464#
465# Disk-On-Chip Device Drivers
466#
467# CONFIG_MTD_DOC2000 is not set
468# CONFIG_MTD_DOC2001 is not set
469# CONFIG_MTD_DOC2001PLUS is not set
470# CONFIG_MTD_NAND is not set
471# CONFIG_MTD_ONENAND is not set
472
473#
474# UBI - Unsorted block images
475#
476CONFIG_MTD_UBI=y
477CONFIG_MTD_UBI_WL_THRESHOLD=4096
478CONFIG_MTD_UBI_BEB_RESERVE=1
479# CONFIG_MTD_UBI_GLUEBI is not set
480
481#
482# UBI debugging options
483#
484# CONFIG_MTD_UBI_DEBUG is not set
485# CONFIG_PARPORT is not set
486CONFIG_BLK_DEV=y
487# CONFIG_BLK_DEV_COW_COMMON is not set
488CONFIG_BLK_DEV_LOOP=m
489# CONFIG_BLK_DEV_CRYPTOLOOP is not set
490CONFIG_BLK_DEV_NBD=m
491CONFIG_BLK_DEV_RAM=m
492CONFIG_BLK_DEV_RAM_COUNT=16
493CONFIG_BLK_DEV_RAM_SIZE=4096
494# CONFIG_BLK_DEV_XIP is not set
495# CONFIG_CDROM_PKTCDVD is not set
496# CONFIG_ATA_OVER_ETH is not set
497CONFIG_MISC_DEVICES=y
498# CONFIG_ATMEL_PWM is not set
499CONFIG_ATMEL_TCLIB=y
500CONFIG_ATMEL_TCB_CLKSRC=y
501CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
502# CONFIG_EEPROM_93CX6 is not set
503# CONFIG_ATMEL_SSC is not set
504# CONFIG_ENCLOSURE_SERVICES is not set
505# CONFIG_HAVE_IDE is not set
506
507#
508# SCSI device support
509#
510# CONFIG_RAID_ATTRS is not set
511# CONFIG_SCSI is not set
512# CONFIG_SCSI_DMA is not set
513# CONFIG_SCSI_NETLINK is not set
514# CONFIG_ATA is not set
515# CONFIG_MD is not set
516CONFIG_NETDEVICES=y
517# CONFIG_NETDEVICES_MULTIQUEUE is not set
518# CONFIG_DUMMY is not set
519# CONFIG_BONDING is not set
520# CONFIG_MACVLAN is not set
521# CONFIG_EQUALIZER is not set
522# CONFIG_TUN is not set
523# CONFIG_VETH is not set
524CONFIG_PHYLIB=y
525
526#
527# MII PHY device drivers
528#
529# CONFIG_MARVELL_PHY is not set
530# CONFIG_DAVICOM_PHY is not set
531# CONFIG_QSEMI_PHY is not set
532# CONFIG_LXT_PHY is not set
533# CONFIG_CICADA_PHY is not set
534# CONFIG_VITESSE_PHY is not set
535# CONFIG_SMSC_PHY is not set
536# CONFIG_BROADCOM_PHY is not set
537# CONFIG_ICPLUS_PHY is not set
538# CONFIG_REALTEK_PHY is not set
539# CONFIG_FIXED_PHY is not set
540# CONFIG_MDIO_BITBANG is not set
541CONFIG_NET_ETHERNET=y
542# CONFIG_MII is not set
543CONFIG_MACB=y
544# CONFIG_ENC28J60 is not set
545# CONFIG_IBM_NEW_EMAC_ZMII is not set
546# CONFIG_IBM_NEW_EMAC_RGMII is not set
547# CONFIG_IBM_NEW_EMAC_TAH is not set
548# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
549# CONFIG_B44 is not set
550# CONFIG_NETDEV_1000 is not set
551# CONFIG_NETDEV_10000 is not set
552
553#
554# Wireless LAN
555#
556# CONFIG_WLAN_PRE80211 is not set
557# CONFIG_WLAN_80211 is not set
558# CONFIG_WAN is not set
559CONFIG_PPP=m
560# CONFIG_PPP_MULTILINK is not set
561CONFIG_PPP_FILTER=y
562CONFIG_PPP_ASYNC=m
563# CONFIG_PPP_SYNC_TTY is not set
564CONFIG_PPP_DEFLATE=m
565CONFIG_PPP_BSDCOMP=m
566CONFIG_PPP_MPPE=m
567CONFIG_PPPOE=m
568# CONFIG_PPPOL2TP is not set
569# CONFIG_SLIP is not set
570CONFIG_SLHC=m
571# CONFIG_NETCONSOLE is not set
572# CONFIG_NETPOLL is not set
573# CONFIG_NET_POLL_CONTROLLER is not set
574# CONFIG_ISDN is not set
575# CONFIG_PHONE is not set
576
577#
578# Input device support
579#
580CONFIG_INPUT=y
581# CONFIG_INPUT_FF_MEMLESS is not set
582# CONFIG_INPUT_POLLDEV is not set
583
584#
585# Userland interfaces
586#
587# CONFIG_INPUT_MOUSEDEV is not set
588# CONFIG_INPUT_JOYDEV is not set
589CONFIG_INPUT_EVDEV=m
590# CONFIG_INPUT_EVBUG is not set
591
592#
593# Input Device Drivers
594#
595# CONFIG_INPUT_KEYBOARD is not set
596# CONFIG_INPUT_MOUSE is not set
597# CONFIG_INPUT_JOYSTICK is not set
598# CONFIG_INPUT_TABLET is not set
599CONFIG_INPUT_TOUCHSCREEN=y
600# CONFIG_TOUCHSCREEN_ADS7846 is not set
601# CONFIG_TOUCHSCREEN_FUJITSU is not set
602# CONFIG_TOUCHSCREEN_GUNZE is not set
603# CONFIG_TOUCHSCREEN_ELO is not set
604# CONFIG_TOUCHSCREEN_MTOUCH is not set
605# CONFIG_TOUCHSCREEN_MK712 is not set
606# CONFIG_TOUCHSCREEN_PENMOUNT is not set
607# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
608# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
609# CONFIG_TOUCHSCREEN_UCB1400 is not set
610# CONFIG_INPUT_MISC is not set
611
612#
613# Hardware I/O ports
614#
615# CONFIG_SERIO is not set
616# CONFIG_GAMEPORT is not set
617
618#
619# Character devices
620#
621CONFIG_VT=y
622CONFIG_VT_CONSOLE=y
623CONFIG_HW_CONSOLE=y
624# CONFIG_VT_HW_CONSOLE_BINDING is not set
625# CONFIG_SERIAL_NONSTANDARD is not set
626
627#
628# Serial drivers
629#
630# CONFIG_SERIAL_8250 is not set
631
632#
633# Non-8250 serial port support
634#
635CONFIG_SERIAL_ATMEL=y
636CONFIG_SERIAL_ATMEL_CONSOLE=y
637CONFIG_SERIAL_ATMEL_PDC=y
638# CONFIG_SERIAL_ATMEL_TTYAT is not set
639CONFIG_SERIAL_CORE=y
640CONFIG_SERIAL_CORE_CONSOLE=y
641CONFIG_UNIX98_PTYS=y
642# CONFIG_LEGACY_PTYS is not set
643# CONFIG_IPMI_HANDLER is not set
644# CONFIG_HW_RANDOM is not set
645# CONFIG_R3964 is not set
646# CONFIG_RAW_DRIVER is not set
647# CONFIG_TCG_TPM is not set
648CONFIG_I2C=m
649CONFIG_I2C_BOARDINFO=y
650CONFIG_I2C_CHARDEV=m
651
652#
653# I2C Algorithms
654#
655CONFIG_I2C_ALGOBIT=m
656# CONFIG_I2C_ALGOPCF is not set
657# CONFIG_I2C_ALGOPCA is not set
658
659#
660# I2C Hardware Bus support
661#
662CONFIG_I2C_ATMELTWI=m
663CONFIG_I2C_GPIO=m
664# CONFIG_I2C_OCORES is not set
665# CONFIG_I2C_PARPORT_LIGHT is not set
666# CONFIG_I2C_SIMTEC is not set
667# CONFIG_I2C_TAOS_EVM is not set
668# CONFIG_I2C_STUB is not set
669
670#
671# Miscellaneous I2C Chip support
672#
673# CONFIG_DS1682 is not set
674# CONFIG_SENSORS_EEPROM is not set
675# CONFIG_SENSORS_PCF8574 is not set
676# CONFIG_PCF8575 is not set
677# CONFIG_SENSORS_PCF8591 is not set
678# CONFIG_TPS65010 is not set
679# CONFIG_SENSORS_MAX6875 is not set
680# CONFIG_SENSORS_TSL2550 is not set
681# CONFIG_I2C_DEBUG_CORE is not set
682# CONFIG_I2C_DEBUG_ALGO is not set
683# CONFIG_I2C_DEBUG_BUS is not set
684# CONFIG_I2C_DEBUG_CHIP is not set
685
686#
687# SPI support
688#
689CONFIG_SPI=y
690# CONFIG_SPI_DEBUG is not set
691CONFIG_SPI_MASTER=y
692
693#
694# SPI Master Controller Drivers
695#
696CONFIG_SPI_ATMEL=y
697# CONFIG_SPI_BITBANG is not set
698
699#
700# SPI Protocol Masters
701#
702# CONFIG_SPI_AT25 is not set
703CONFIG_SPI_SPIDEV=m
704# CONFIG_SPI_TLE62X0 is not set
705CONFIG_HAVE_GPIO_LIB=y
706
707#
708# GPIO Support
709#
710# CONFIG_DEBUG_GPIO is not set
711
712#
713# I2C GPIO expanders:
714#
715# CONFIG_GPIO_PCA953X is not set
716# CONFIG_GPIO_PCF857X is not set
717
718#
719# SPI GPIO expanders:
720#
721# CONFIG_GPIO_MCP23S08 is not set
722# CONFIG_W1 is not set
723# CONFIG_POWER_SUPPLY is not set
724# CONFIG_HWMON is not set
725# CONFIG_THERMAL is not set
726CONFIG_WATCHDOG=y
727# CONFIG_WATCHDOG_NOWAYOUT is not set
728
729#
730# Watchdog Device Drivers
731#
732# CONFIG_SOFT_WATCHDOG is not set
733CONFIG_AT32AP700X_WDT=y
734
735#
736# Sonics Silicon Backplane
737#
738CONFIG_SSB_POSSIBLE=y
739# CONFIG_SSB is not set
740
741#
742# Multifunction device drivers
743#
744# CONFIG_MFD_SM501 is not set
745
746#
747# Multimedia devices
748#
749# CONFIG_VIDEO_DEV is not set
750# CONFIG_DVB_CORE is not set
751# CONFIG_DAB is not set
752
753#
754# Graphics support
755#
756# CONFIG_VGASTATE is not set
757# CONFIG_VIDEO_OUTPUT_CONTROL is not set
758CONFIG_FB=y
759# CONFIG_FIRMWARE_EDID is not set
760# CONFIG_FB_DDC is not set
761CONFIG_FB_CFB_FILLRECT=y
762CONFIG_FB_CFB_COPYAREA=y
763CONFIG_FB_CFB_IMAGEBLIT=y
764# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
765# CONFIG_FB_SYS_FILLRECT is not set
766# CONFIG_FB_SYS_COPYAREA is not set
767# CONFIG_FB_SYS_IMAGEBLIT is not set
768# CONFIG_FB_SYS_FOPS is not set
769CONFIG_FB_DEFERRED_IO=y
770# CONFIG_FB_SVGALIB is not set
771# CONFIG_FB_MACMODES is not set
772# CONFIG_FB_BACKLIGHT is not set
773# CONFIG_FB_MODE_HELPERS is not set
774# CONFIG_FB_TILEBLITTING is not set
775
776#
777# Frame buffer hardware drivers
778#
779# CONFIG_FB_S1D13XXX is not set
780CONFIG_FB_ATMEL=y
781# CONFIG_FB_VIRTUAL is not set
782# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
783
784#
785# Display device support
786#
787# CONFIG_DISPLAY_SUPPORT is not set
788
789#
790# Console display driver support
791#
792CONFIG_DUMMY_CONSOLE=y
793# CONFIG_FRAMEBUFFER_CONSOLE is not set
794# CONFIG_LOGO is not set
795
796#
797# Sound
798#
799CONFIG_SOUND=y
800
801#
802# Advanced Linux Sound Architecture
803#
804CONFIG_SND=y
805CONFIG_SND_TIMER=m
806CONFIG_SND_PCM=m
807# CONFIG_SND_SEQUENCER is not set
808CONFIG_SND_OSSEMUL=y
809CONFIG_SND_MIXER_OSS=m
810CONFIG_SND_PCM_OSS=m
811CONFIG_SND_PCM_OSS_PLUGINS=y
812# CONFIG_SND_DYNAMIC_MINORS is not set
813# CONFIG_SND_SUPPORT_OLD_API is not set
814CONFIG_SND_VERBOSE_PROCFS=y
815# CONFIG_SND_VERBOSE_PRINTK is not set
816# CONFIG_SND_DEBUG is not set
817
818#
819# Generic devices
820#
821CONFIG_SND_AC97_CODEC=m
822# CONFIG_SND_DUMMY is not set
823# CONFIG_SND_MTPAV is not set
824# CONFIG_SND_SERIAL_U16550 is not set
825# CONFIG_SND_MPU401 is not set
826
827#
828# AVR32 devices
829#
830CONFIG_SND_ATMEL_AC97=m
831
832#
833# SPI devices
834#
835
836#
837# System on Chip audio support
838#
839# CONFIG_SND_SOC is not set
840
841#
842# SoC Audio support for SuperH
843#
844
845#
846# ALSA SoC audio for Freescale SOCs
847#
848
849#
850# Open Sound System
851#
852# CONFIG_SOUND_PRIME is not set
853CONFIG_AC97_BUS=m
854CONFIG_HID_SUPPORT=y
855CONFIG_HID=y
856# CONFIG_HID_DEBUG is not set
857# CONFIG_HIDRAW is not set
858CONFIG_USB_SUPPORT=y
859# CONFIG_USB_ARCH_HAS_HCD is not set
860# CONFIG_USB_ARCH_HAS_OHCI is not set
861# CONFIG_USB_ARCH_HAS_EHCI is not set
862
863#
864# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
865#
866CONFIG_USB_GADGET=y
867# CONFIG_USB_GADGET_DEBUG is not set
868# CONFIG_USB_GADGET_DEBUG_FILES is not set
869CONFIG_USB_GADGET_SELECTED=y
870# CONFIG_USB_GADGET_AMD5536UDC is not set
871CONFIG_USB_GADGET_ATMEL_USBA=y
872CONFIG_USB_ATMEL_USBA=y
873# CONFIG_USB_GADGET_FSL_USB2 is not set
874# CONFIG_USB_GADGET_NET2280 is not set
875# CONFIG_USB_GADGET_PXA2XX is not set
876# CONFIG_USB_GADGET_M66592 is not set
877# CONFIG_USB_GADGET_GOKU is not set
878# CONFIG_USB_GADGET_LH7A40X is not set
879# CONFIG_USB_GADGET_OMAP is not set
880# CONFIG_USB_GADGET_S3C2410 is not set
881# CONFIG_USB_GADGET_AT91 is not set
882# CONFIG_USB_GADGET_DUMMY_HCD is not set
883CONFIG_USB_GADGET_DUALSPEED=y
884CONFIG_USB_ZERO=m
885CONFIG_USB_ETH=m
886CONFIG_USB_ETH_RNDIS=y
887CONFIG_USB_GADGETFS=m
888CONFIG_USB_FILE_STORAGE=m
889# CONFIG_USB_FILE_STORAGE_TEST is not set
890CONFIG_USB_G_SERIAL=m
891# CONFIG_USB_MIDI_GADGET is not set
892# CONFIG_USB_G_PRINTER is not set
893CONFIG_MMC=y
894# CONFIG_MMC_DEBUG is not set
895# CONFIG_MMC_UNSAFE_RESUME is not set
896
897#
898# MMC/SD Card Drivers
899#
900CONFIG_MMC_BLOCK=y
901CONFIG_MMC_BLOCK_BOUNCE=y
902# CONFIG_SDIO_UART is not set
903
904#
905# MMC/SD Host Controller Drivers
906#
907CONFIG_MMC_ATMELMCI=y
908# CONFIG_MMC_SPI is not set
909# CONFIG_MEMSTICK is not set
910CONFIG_NEW_LEDS=y
911CONFIG_LEDS_CLASS=y
912
913#
914# LED drivers
915#
916CONFIG_LEDS_GPIO=y
917
918#
919# LED Triggers
920#
921CONFIG_LEDS_TRIGGERS=y
922CONFIG_LEDS_TRIGGER_TIMER=y
923CONFIG_LEDS_TRIGGER_HEARTBEAT=y
924CONFIG_RTC_LIB=y
925CONFIG_RTC_CLASS=y
926CONFIG_RTC_HCTOSYS=y
927CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
928# CONFIG_RTC_DEBUG is not set
929
930#
931# RTC interfaces
932#
933CONFIG_RTC_INTF_SYSFS=y
934CONFIG_RTC_INTF_PROC=y
935CONFIG_RTC_INTF_DEV=y
936# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
937# CONFIG_RTC_DRV_TEST is not set
938
939#
940# I2C RTC drivers
941#
942# CONFIG_RTC_DRV_DS1307 is not set
943# CONFIG_RTC_DRV_DS1374 is not set
944# CONFIG_RTC_DRV_DS1672 is not set
945# CONFIG_RTC_DRV_MAX6900 is not set
946# CONFIG_RTC_DRV_RS5C372 is not set
947# CONFIG_RTC_DRV_ISL1208 is not set
948# CONFIG_RTC_DRV_X1205 is not set
949# CONFIG_RTC_DRV_PCF8563 is not set
950# CONFIG_RTC_DRV_PCF8583 is not set
951# CONFIG_RTC_DRV_M41T80 is not set
952# CONFIG_RTC_DRV_S35390A is not set
953
954#
955# SPI RTC drivers
956#
957# CONFIG_RTC_DRV_MAX6902 is not set
958# CONFIG_RTC_DRV_R9701 is not set
959# CONFIG_RTC_DRV_RS5C348 is not set
960
961#
962# Platform RTC drivers
963#
964# CONFIG_RTC_DRV_DS1511 is not set
965# CONFIG_RTC_DRV_DS1553 is not set
966# CONFIG_RTC_DRV_DS1742 is not set
967# CONFIG_RTC_DRV_STK17TA8 is not set
968# CONFIG_RTC_DRV_M48T86 is not set
969# CONFIG_RTC_DRV_M48T59 is not set
970# CONFIG_RTC_DRV_V3020 is not set
971
972#
973# on-CPU RTC drivers
974#
975CONFIG_RTC_DRV_AT32AP700X=y
976
977#
978# Userspace I/O
979#
980# CONFIG_UIO is not set
981
982#
983# File systems
984#
985CONFIG_EXT2_FS=y
986# CONFIG_EXT2_FS_XATTR is not set
987# CONFIG_EXT2_FS_XIP is not set
988CONFIG_EXT3_FS=y
989# CONFIG_EXT3_FS_XATTR is not set
990# CONFIG_EXT4DEV_FS is not set
991CONFIG_JBD=y
992# CONFIG_REISERFS_FS is not set
993# CONFIG_JFS_FS is not set
994# CONFIG_FS_POSIX_ACL is not set
995# CONFIG_XFS_FS is not set
996# CONFIG_GFS2_FS is not set
997# CONFIG_OCFS2_FS is not set
998# CONFIG_DNOTIFY is not set
999CONFIG_INOTIFY=y
1000CONFIG_INOTIFY_USER=y
1001# CONFIG_QUOTA is not set
1002# CONFIG_AUTOFS_FS is not set
1003# CONFIG_AUTOFS4_FS is not set
1004CONFIG_FUSE_FS=m
1005
1006#
1007# CD-ROM/DVD Filesystems
1008#
1009# CONFIG_ISO9660_FS is not set
1010# CONFIG_UDF_FS is not set
1011
1012#
1013# DOS/FAT/NT Filesystems
1014#
1015CONFIG_FAT_FS=m
1016CONFIG_MSDOS_FS=m
1017CONFIG_VFAT_FS=m
1018CONFIG_FAT_DEFAULT_CODEPAGE=850
1019CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1020# CONFIG_NTFS_FS is not set
1021
1022#
1023# Pseudo filesystems
1024#
1025CONFIG_PROC_FS=y
1026# CONFIG_PROC_KCORE is not set
1027CONFIG_PROC_SYSCTL=y
1028CONFIG_SYSFS=y
1029CONFIG_TMPFS=y
1030# CONFIG_TMPFS_POSIX_ACL is not set
1031# CONFIG_HUGETLB_PAGE is not set
1032CONFIG_CONFIGFS_FS=y
1033
1034#
1035# Miscellaneous filesystems
1036#
1037# CONFIG_ADFS_FS is not set
1038# CONFIG_AFFS_FS is not set
1039# CONFIG_HFS_FS is not set
1040# CONFIG_HFSPLUS_FS is not set
1041# CONFIG_BEFS_FS is not set
1042# CONFIG_BFS_FS is not set
1043# CONFIG_EFS_FS is not set
1044CONFIG_JFFS2_FS=y
1045CONFIG_JFFS2_FS_DEBUG=0
1046CONFIG_JFFS2_FS_WRITEBUFFER=y
1047# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1048# CONFIG_JFFS2_SUMMARY is not set
1049# CONFIG_JFFS2_FS_XATTR is not set
1050# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1051CONFIG_JFFS2_ZLIB=y
1052# CONFIG_JFFS2_LZO is not set
1053CONFIG_JFFS2_RTIME=y
1054# CONFIG_JFFS2_RUBIN is not set
1055CONFIG_UBIFS_FS=y
1056# CONFIG_UBIFS_FS_XATTR is not set
1057# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
1058CONFIG_UBIFS_FS_LZO=y
1059CONFIG_UBIFS_FS_ZLIB=y
1060# CONFIG_UBIFS_FS_DEBUG is not set
1061# CONFIG_CRAMFS is not set
1062# CONFIG_VXFS_FS is not set
1063# CONFIG_MINIX_FS is not set
1064# CONFIG_HPFS_FS is not set
1065# CONFIG_QNX4FS_FS is not set
1066# CONFIG_ROMFS_FS is not set
1067# CONFIG_SYSV_FS is not set
1068# CONFIG_UFS_FS is not set
1069CONFIG_NETWORK_FILESYSTEMS=y
1070CONFIG_NFS_FS=y
1071CONFIG_NFS_V3=y
1072# CONFIG_NFS_V3_ACL is not set
1073# CONFIG_NFS_V4 is not set
1074# CONFIG_NFS_DIRECTIO is not set
1075CONFIG_NFSD=m
1076CONFIG_NFSD_V3=y
1077# CONFIG_NFSD_V3_ACL is not set
1078# CONFIG_NFSD_V4 is not set
1079CONFIG_NFSD_TCP=y
1080CONFIG_ROOT_NFS=y
1081CONFIG_LOCKD=y
1082CONFIG_LOCKD_V4=y
1083CONFIG_EXPORTFS=m
1084CONFIG_NFS_COMMON=y
1085CONFIG_SUNRPC=y
1086# CONFIG_SUNRPC_BIND34 is not set
1087# CONFIG_RPCSEC_GSS_KRB5 is not set
1088# CONFIG_RPCSEC_GSS_SPKM3 is not set
1089CONFIG_SMB_FS=m
1090# CONFIG_SMB_NLS_DEFAULT is not set
1091CONFIG_CIFS=m
1092# CONFIG_CIFS_STATS is not set
1093# CONFIG_CIFS_WEAK_PW_HASH is not set
1094# CONFIG_CIFS_XATTR is not set
1095# CONFIG_CIFS_DEBUG2 is not set
1096# CONFIG_CIFS_EXPERIMENTAL is not set
1097# CONFIG_NCP_FS is not set
1098# CONFIG_CODA_FS is not set
1099# CONFIG_AFS_FS is not set
1100
1101#
1102# Partition Types
1103#
1104# CONFIG_PARTITION_ADVANCED is not set
1105CONFIG_MSDOS_PARTITION=y
1106CONFIG_NLS=m
1107CONFIG_NLS_DEFAULT="iso8859-1"
1108CONFIG_NLS_CODEPAGE_437=m
1109# CONFIG_NLS_CODEPAGE_737 is not set
1110# CONFIG_NLS_CODEPAGE_775 is not set
1111CONFIG_NLS_CODEPAGE_850=m
1112# CONFIG_NLS_CODEPAGE_852 is not set
1113# CONFIG_NLS_CODEPAGE_855 is not set
1114# CONFIG_NLS_CODEPAGE_857 is not set
1115# CONFIG_NLS_CODEPAGE_860 is not set
1116# CONFIG_NLS_CODEPAGE_861 is not set
1117# CONFIG_NLS_CODEPAGE_862 is not set
1118# CONFIG_NLS_CODEPAGE_863 is not set
1119# CONFIG_NLS_CODEPAGE_864 is not set
1120# CONFIG_NLS_CODEPAGE_865 is not set
1121# CONFIG_NLS_CODEPAGE_866 is not set
1122# CONFIG_NLS_CODEPAGE_869 is not set
1123# CONFIG_NLS_CODEPAGE_936 is not set
1124# CONFIG_NLS_CODEPAGE_950 is not set
1125# CONFIG_NLS_CODEPAGE_932 is not set
1126# CONFIG_NLS_CODEPAGE_949 is not set
1127# CONFIG_NLS_CODEPAGE_874 is not set
1128# CONFIG_NLS_ISO8859_8 is not set
1129# CONFIG_NLS_CODEPAGE_1250 is not set
1130# CONFIG_NLS_CODEPAGE_1251 is not set
1131# CONFIG_NLS_ASCII is not set
1132CONFIG_NLS_ISO8859_1=m
1133# CONFIG_NLS_ISO8859_2 is not set
1134# CONFIG_NLS_ISO8859_3 is not set
1135# CONFIG_NLS_ISO8859_4 is not set
1136# CONFIG_NLS_ISO8859_5 is not set
1137# CONFIG_NLS_ISO8859_6 is not set
1138# CONFIG_NLS_ISO8859_7 is not set
1139# CONFIG_NLS_ISO8859_9 is not set
1140# CONFIG_NLS_ISO8859_13 is not set
1141# CONFIG_NLS_ISO8859_14 is not set
1142# CONFIG_NLS_ISO8859_15 is not set
1143# CONFIG_NLS_KOI8_R is not set
1144# CONFIG_NLS_KOI8_U is not set
1145CONFIG_NLS_UTF8=m
1146# CONFIG_DLM is not set
1147
1148#
1149# Kernel hacking
1150#
1151# CONFIG_PRINTK_TIME is not set
1152CONFIG_ENABLE_WARN_DEPRECATED=y
1153CONFIG_ENABLE_MUST_CHECK=y
1154CONFIG_MAGIC_SYSRQ=y
1155# CONFIG_UNUSED_SYMBOLS is not set
1156# CONFIG_DEBUG_FS is not set
1157# CONFIG_HEADERS_CHECK is not set
1158CONFIG_DEBUG_KERNEL=y
1159# CONFIG_DEBUG_SHIRQ is not set
1160CONFIG_DETECT_SOFTLOCKUP=y
1161CONFIG_SCHED_DEBUG=y
1162# CONFIG_SCHEDSTATS is not set
1163# CONFIG_TIMER_STATS is not set
1164# CONFIG_SLUB_DEBUG_ON is not set
1165# CONFIG_SLUB_STATS is not set
1166# CONFIG_DEBUG_RT_MUTEXES is not set
1167# CONFIG_RT_MUTEX_TESTER is not set
1168# CONFIG_DEBUG_SPINLOCK is not set
1169# CONFIG_DEBUG_MUTEXES is not set
1170# CONFIG_DEBUG_LOCK_ALLOC is not set
1171# CONFIG_PROVE_LOCKING is not set
1172# CONFIG_LOCK_STAT is not set
1173# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1174# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1175# CONFIG_DEBUG_KOBJECT is not set
1176CONFIG_DEBUG_BUGVERBOSE=y
1177# CONFIG_DEBUG_INFO is not set
1178# CONFIG_DEBUG_VM is not set
1179# CONFIG_DEBUG_LIST is not set
1180# CONFIG_DEBUG_SG is not set
1181CONFIG_FRAME_POINTER=y
1182# CONFIG_BOOT_PRINTK_DELAY is not set
1183# CONFIG_RCU_TORTURE_TEST is not set
1184# CONFIG_KPROBES_SANITY_TEST is not set
1185# CONFIG_BACKTRACE_SELF_TEST is not set
1186# CONFIG_LKDTM is not set
1187# CONFIG_FAULT_INJECTION is not set
1188# CONFIG_SAMPLES is not set
1189
1190#
1191# Security options
1192#
1193# CONFIG_KEYS is not set
1194# CONFIG_SECURITY is not set
1195# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1196CONFIG_CRYPTO=y
1197CONFIG_CRYPTO_ALGAPI=y
1198CONFIG_CRYPTO_AEAD=y
1199CONFIG_CRYPTO_BLKCIPHER=y
1200# CONFIG_CRYPTO_SEQIV is not set
1201CONFIG_CRYPTO_HASH=y
1202CONFIG_CRYPTO_MANAGER=y
1203CONFIG_CRYPTO_HMAC=y
1204# CONFIG_CRYPTO_XCBC is not set
1205# CONFIG_CRYPTO_NULL is not set
1206# CONFIG_CRYPTO_MD4 is not set
1207CONFIG_CRYPTO_MD5=y
1208CONFIG_CRYPTO_SHA1=y
1209# CONFIG_CRYPTO_SHA256 is not set
1210# CONFIG_CRYPTO_SHA512 is not set
1211# CONFIG_CRYPTO_WP512 is not set
1212# CONFIG_CRYPTO_TGR192 is not set
1213# CONFIG_CRYPTO_GF128MUL is not set
1214CONFIG_CRYPTO_ECB=m
1215CONFIG_CRYPTO_CBC=y
1216# CONFIG_CRYPTO_PCBC is not set
1217# CONFIG_CRYPTO_LRW is not set
1218# CONFIG_CRYPTO_XTS is not set
1219# CONFIG_CRYPTO_CTR is not set
1220# CONFIG_CRYPTO_GCM is not set
1221# CONFIG_CRYPTO_CCM is not set
1222# CONFIG_CRYPTO_CRYPTD is not set
1223CONFIG_CRYPTO_DES=y
1224# CONFIG_CRYPTO_FCRYPT is not set
1225# CONFIG_CRYPTO_BLOWFISH is not set
1226# CONFIG_CRYPTO_TWOFISH is not set
1227# CONFIG_CRYPTO_SERPENT is not set
1228# CONFIG_CRYPTO_AES is not set
1229# CONFIG_CRYPTO_CAST5 is not set
1230# CONFIG_CRYPTO_CAST6 is not set
1231# CONFIG_CRYPTO_TEA is not set
1232CONFIG_CRYPTO_ARC4=m
1233# CONFIG_CRYPTO_KHAZAD is not set
1234# CONFIG_CRYPTO_ANUBIS is not set
1235# CONFIG_CRYPTO_SEED is not set
1236# CONFIG_CRYPTO_SALSA20 is not set
1237CONFIG_CRYPTO_DEFLATE=y
1238# CONFIG_CRYPTO_MICHAEL_MIC is not set
1239# CONFIG_CRYPTO_CRC32C is not set
1240# CONFIG_CRYPTO_CAMELLIA is not set
1241# CONFIG_CRYPTO_TEST is not set
1242CONFIG_CRYPTO_AUTHENC=y
1243CONFIG_CRYPTO_LZO=y
1244CONFIG_CRYPTO_HW=y
1245
1246#
1247# Library routines
1248#
1249CONFIG_BITREVERSE=y
1250CONFIG_CRC_CCITT=m
1251CONFIG_CRC16=y
1252# CONFIG_CRC_ITU_T is not set
1253CONFIG_CRC32=y
1254# CONFIG_CRC7 is not set
1255# CONFIG_LIBCRC32C is not set
1256CONFIG_ZLIB_INFLATE=y
1257CONFIG_ZLIB_DEFLATE=y
1258CONFIG_LZO_COMPRESS=y
1259CONFIG_LZO_DECOMPRESS=y
1260CONFIG_GENERIC_ALLOCATOR=y
1261CONFIG_PLIST=y
1262CONFIG_HAS_IOMEM=y
1263CONFIG_HAS_IOPORT=y
1264CONFIG_HAS_DMA=y
diff --git a/arch/avr32/configs/atngw100_evklcd101_defconfig b/arch/avr32/configs/atngw100_evklcd101_defconfig
new file mode 100644
index 000000000000..c5b898d21075
--- /dev/null
+++ b/arch/avr32/configs/atngw100_evklcd101_defconfig
@@ -0,0 +1,1264 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25.6
4# Wed Jun 18 16:09:32 2008
5#
6CONFIG_AVR32=y
7CONFIG_GENERIC_GPIO=y
8CONFIG_GENERIC_HARDIRQS=y
9CONFIG_STACKTRACE_SUPPORT=y
10CONFIG_LOCKDEP_SUPPORT=y
11CONFIG_TRACE_IRQFLAGS_SUPPORT=y
12CONFIG_HARDIRQS_SW_RESEND=y
13CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_RWSEM_GENERIC_SPINLOCK=y
15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_GENERIC_HWEIGHT=y
21CONFIG_GENERIC_CALIBRATE_DELAY=y
22CONFIG_GENERIC_BUG=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24
25#
26# General setup
27#
28CONFIG_EXPERIMENTAL=y
29CONFIG_BROKEN_ON_SMP=y
30CONFIG_INIT_ENV_ARG_LIMIT=32
31CONFIG_LOCALVERSION=""
32# CONFIG_LOCALVERSION_AUTO is not set
33CONFIG_SWAP=y
34CONFIG_SYSVIPC=y
35CONFIG_SYSVIPC_SYSCTL=y
36CONFIG_POSIX_MQUEUE=y
37CONFIG_BSD_PROCESS_ACCT=y
38CONFIG_BSD_PROCESS_ACCT_V3=y
39# CONFIG_TASKSTATS is not set
40# CONFIG_AUDIT is not set
41# CONFIG_IKCONFIG is not set
42CONFIG_LOG_BUF_SHIFT=14
43# CONFIG_CGROUPS is not set
44# CONFIG_GROUP_SCHED is not set
45CONFIG_SYSFS_DEPRECATED=y
46CONFIG_SYSFS_DEPRECATED_V2=y
47# CONFIG_RELAY is not set
48# CONFIG_NAMESPACES is not set
49CONFIG_BLK_DEV_INITRD=y
50CONFIG_INITRAMFS_SOURCE=""
51CONFIG_CC_OPTIMIZE_FOR_SIZE=y
52CONFIG_SYSCTL=y
53CONFIG_EMBEDDED=y
54# CONFIG_SYSCTL_SYSCALL is not set
55CONFIG_KALLSYMS=y
56# CONFIG_KALLSYMS_ALL is not set
57# CONFIG_KALLSYMS_EXTRA_PASS is not set
58CONFIG_HOTPLUG=y
59CONFIG_PRINTK=y
60CONFIG_BUG=y
61CONFIG_ELF_CORE=y
62# CONFIG_COMPAT_BRK is not set
63# CONFIG_BASE_FULL is not set
64CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y
66CONFIG_EPOLL=y
67CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y
70CONFIG_SHMEM=y
71CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLUB_DEBUG=y
73# CONFIG_SLAB is not set
74CONFIG_SLUB=y
75# CONFIG_SLOB is not set
76CONFIG_PROFILING=y
77# CONFIG_MARKERS is not set
78CONFIG_OPROFILE=m
79CONFIG_HAVE_OPROFILE=y
80CONFIG_KPROBES=y
81CONFIG_HAVE_KPROBES=y
82# CONFIG_HAVE_KRETPROBES is not set
83CONFIG_PROC_PAGE_MONITOR=y
84CONFIG_SLABINFO=y
85CONFIG_RT_MUTEXES=y
86# CONFIG_TINY_SHMEM is not set
87CONFIG_BASE_SMALL=1
88CONFIG_MODULES=y
89CONFIG_MODULE_UNLOAD=y
90CONFIG_MODULE_FORCE_UNLOAD=y
91# CONFIG_MODVERSIONS is not set
92# CONFIG_MODULE_SRCVERSION_ALL is not set
93CONFIG_KMOD=y
94CONFIG_BLOCK=y
95# CONFIG_LBD is not set
96# CONFIG_BLK_DEV_IO_TRACE is not set
97# CONFIG_LSF is not set
98# CONFIG_BLK_DEV_BSG is not set
99
100#
101# IO Schedulers
102#
103CONFIG_IOSCHED_NOOP=y
104# CONFIG_IOSCHED_AS is not set
105# CONFIG_IOSCHED_DEADLINE is not set
106CONFIG_IOSCHED_CFQ=y
107# CONFIG_DEFAULT_AS is not set
108# CONFIG_DEFAULT_DEADLINE is not set
109CONFIG_DEFAULT_CFQ=y
110# CONFIG_DEFAULT_NOOP is not set
111CONFIG_DEFAULT_IOSCHED="cfq"
112CONFIG_CLASSIC_RCU=y
113
114#
115# System Type and features
116#
117CONFIG_TICK_ONESHOT=y
118CONFIG_NO_HZ=y
119CONFIG_HIGH_RES_TIMERS=y
120CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
121CONFIG_SUBARCH_AVR32B=y
122CONFIG_MMU=y
123CONFIG_PERFORMANCE_COUNTERS=y
124CONFIG_PLATFORM_AT32AP=y
125CONFIG_CPU_AT32AP700X=y
126CONFIG_CPU_AT32AP7000=y
127# CONFIG_BOARD_ATSTK1000 is not set
128CONFIG_BOARD_ATNGW100=y
129CONFIG_BOARD_ATNGW100_EVKLCD10X=y
130# CONFIG_BOARD_ATNGW100_EVKLCD10X_QVGA is not set
131CONFIG_BOARD_ATNGW100_EVKLCD10X_VGA=y
132# CONFIG_BOARD_ATNGW100_EVKLCD10X_POW_QVGA is not set
133CONFIG_BOARD_ATNGW100_I2C_GPIO=y
134CONFIG_LOADER_U_BOOT=y
135
136#
137# Atmel AVR32 AP options
138#
139# CONFIG_AP700X_32_BIT_SMC is not set
140CONFIG_AP700X_16_BIT_SMC=y
141# CONFIG_AP700X_8_BIT_SMC is not set
142CONFIG_GPIO_DEV=y
143CONFIG_LOAD_ADDRESS=0x10000000
144CONFIG_ENTRY_ADDRESS=0x90000000
145CONFIG_PHYS_OFFSET=0x10000000
146CONFIG_PREEMPT_NONE=y
147# CONFIG_PREEMPT_VOLUNTARY is not set
148# CONFIG_PREEMPT is not set
149# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
150# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
151# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
152CONFIG_ARCH_FLATMEM_ENABLE=y
153# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
154# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
155CONFIG_SELECT_MEMORY_MODEL=y
156CONFIG_FLATMEM_MANUAL=y
157# CONFIG_DISCONTIGMEM_MANUAL is not set
158# CONFIG_SPARSEMEM_MANUAL is not set
159CONFIG_FLATMEM=y
160CONFIG_FLAT_NODE_MEM_MAP=y
161# CONFIG_SPARSEMEM_STATIC is not set
162# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
163CONFIG_SPLIT_PTLOCK_CPUS=4
164# CONFIG_RESOURCES_64BIT is not set
165CONFIG_ZONE_DMA_FLAG=0
166CONFIG_VIRT_TO_BUS=y
167# CONFIG_OWNERSHIP_TRACE is not set
168CONFIG_NMI_DEBUGGING=y
169CONFIG_DW_DMAC=y
170# CONFIG_HZ_100 is not set
171CONFIG_HZ_250=y
172# CONFIG_HZ_300 is not set
173# CONFIG_HZ_1000 is not set
174CONFIG_HZ=250
175# CONFIG_SCHED_HRTICK is not set
176CONFIG_CMDLINE=""
177
178#
179# Power management options
180#
181CONFIG_ARCH_SUSPEND_POSSIBLE=y
182CONFIG_PM=y
183# CONFIG_PM_LEGACY is not set
184# CONFIG_PM_DEBUG is not set
185CONFIG_PM_SLEEP=y
186CONFIG_SUSPEND=y
187CONFIG_SUSPEND_FREEZER=y
188
189#
190# CPU Frequency scaling
191#
192CONFIG_CPU_FREQ=y
193CONFIG_CPU_FREQ_TABLE=y
194# CONFIG_CPU_FREQ_DEBUG is not set
195# CONFIG_CPU_FREQ_STAT is not set
196# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
197# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
198CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
199# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
200CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
201# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
202CONFIG_CPU_FREQ_GOV_USERSPACE=y
203CONFIG_CPU_FREQ_GOV_ONDEMAND=y
204# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
205CONFIG_CPU_FREQ_AT32AP=y
206
207#
208# Bus options
209#
210# CONFIG_ARCH_SUPPORTS_MSI is not set
211# CONFIG_PCCARD is not set
212
213#
214# Executable file formats
215#
216CONFIG_BINFMT_ELF=y
217# CONFIG_BINFMT_MISC is not set
218
219#
220# Networking
221#
222CONFIG_NET=y
223
224#
225# Networking options
226#
227CONFIG_PACKET=y
228CONFIG_PACKET_MMAP=y
229CONFIG_UNIX=y
230CONFIG_XFRM=y
231CONFIG_XFRM_USER=y
232# CONFIG_XFRM_SUB_POLICY is not set
233# CONFIG_XFRM_MIGRATE is not set
234# CONFIG_XFRM_STATISTICS is not set
235CONFIG_NET_KEY=y
236# CONFIG_NET_KEY_MIGRATE is not set
237CONFIG_INET=y
238CONFIG_IP_MULTICAST=y
239CONFIG_IP_ADVANCED_ROUTER=y
240CONFIG_ASK_IP_FIB_HASH=y
241# CONFIG_IP_FIB_TRIE is not set
242CONFIG_IP_FIB_HASH=y
243# CONFIG_IP_MULTIPLE_TABLES is not set
244# CONFIG_IP_ROUTE_MULTIPATH is not set
245# CONFIG_IP_ROUTE_VERBOSE is not set
246CONFIG_IP_PNP=y
247CONFIG_IP_PNP_DHCP=y
248# CONFIG_IP_PNP_BOOTP is not set
249# CONFIG_IP_PNP_RARP is not set
250# CONFIG_NET_IPIP is not set
251# CONFIG_NET_IPGRE is not set
252CONFIG_IP_MROUTE=y
253CONFIG_IP_PIMSM_V1=y
254# CONFIG_IP_PIMSM_V2 is not set
255# CONFIG_ARPD is not set
256CONFIG_SYN_COOKIES=y
257CONFIG_INET_AH=y
258CONFIG_INET_ESP=y
259CONFIG_INET_IPCOMP=y
260CONFIG_INET_XFRM_TUNNEL=y
261CONFIG_INET_TUNNEL=y
262CONFIG_INET_XFRM_MODE_TRANSPORT=y
263CONFIG_INET_XFRM_MODE_TUNNEL=y
264CONFIG_INET_XFRM_MODE_BEET=y
265# CONFIG_INET_LRO is not set
266CONFIG_INET_DIAG=y
267CONFIG_INET_TCP_DIAG=y
268# CONFIG_TCP_CONG_ADVANCED is not set
269CONFIG_TCP_CONG_CUBIC=y
270CONFIG_DEFAULT_TCP_CONG="cubic"
271# CONFIG_TCP_MD5SIG is not set
272# CONFIG_IP_VS is not set
273CONFIG_IPV6=y
274# CONFIG_IPV6_PRIVACY is not set
275# CONFIG_IPV6_ROUTER_PREF is not set
276# CONFIG_IPV6_OPTIMISTIC_DAD is not set
277CONFIG_INET6_AH=y
278CONFIG_INET6_ESP=y
279CONFIG_INET6_IPCOMP=y
280# CONFIG_IPV6_MIP6 is not set
281CONFIG_INET6_XFRM_TUNNEL=y
282CONFIG_INET6_TUNNEL=y
283CONFIG_INET6_XFRM_MODE_TRANSPORT=y
284CONFIG_INET6_XFRM_MODE_TUNNEL=y
285CONFIG_INET6_XFRM_MODE_BEET=y
286# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
287CONFIG_IPV6_SIT=y
288# CONFIG_IPV6_TUNNEL is not set
289# CONFIG_IPV6_MULTIPLE_TABLES is not set
290# CONFIG_NETWORK_SECMARK is not set
291CONFIG_NETFILTER=y
292# CONFIG_NETFILTER_DEBUG is not set
293# CONFIG_NETFILTER_ADVANCED is not set
294
295#
296# Core Netfilter Configuration
297#
298CONFIG_NETFILTER_NETLINK=m
299CONFIG_NETFILTER_NETLINK_LOG=m
300CONFIG_NF_CONNTRACK=m
301CONFIG_NF_CONNTRACK_FTP=m
302CONFIG_NF_CONNTRACK_IRC=m
303CONFIG_NF_CONNTRACK_SIP=m
304CONFIG_NF_CT_NETLINK=m
305CONFIG_NETFILTER_XTABLES=y
306CONFIG_NETFILTER_XT_TARGET_MARK=m
307CONFIG_NETFILTER_XT_TARGET_NFLOG=m
308CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
309CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
310CONFIG_NETFILTER_XT_MATCH_MARK=m
311CONFIG_NETFILTER_XT_MATCH_POLICY=m
312CONFIG_NETFILTER_XT_MATCH_STATE=m
313
314#
315# IP: Netfilter Configuration
316#
317CONFIG_NF_CONNTRACK_IPV4=m
318CONFIG_NF_CONNTRACK_PROC_COMPAT=y
319CONFIG_IP_NF_IPTABLES=m
320CONFIG_IP_NF_FILTER=m
321CONFIG_IP_NF_TARGET_REJECT=m
322CONFIG_IP_NF_TARGET_LOG=m
323# CONFIG_IP_NF_TARGET_ULOG is not set
324CONFIG_NF_NAT=m
325CONFIG_NF_NAT_NEEDED=y
326CONFIG_IP_NF_TARGET_MASQUERADE=m
327CONFIG_NF_NAT_FTP=m
328CONFIG_NF_NAT_IRC=m
329# CONFIG_NF_NAT_TFTP is not set
330# CONFIG_NF_NAT_AMANDA is not set
331# CONFIG_NF_NAT_PPTP is not set
332# CONFIG_NF_NAT_H323 is not set
333CONFIG_NF_NAT_SIP=m
334CONFIG_IP_NF_MANGLE=m
335
336#
337# IPv6: Netfilter Configuration
338#
339CONFIG_NF_CONNTRACK_IPV6=m
340CONFIG_IP6_NF_IPTABLES=m
341CONFIG_IP6_NF_MATCH_IPV6HEADER=m
342CONFIG_IP6_NF_FILTER=m
343CONFIG_IP6_NF_TARGET_LOG=m
344CONFIG_IP6_NF_TARGET_REJECT=m
345CONFIG_IP6_NF_MANGLE=m
346# CONFIG_IP_DCCP is not set
347# CONFIG_IP_SCTP is not set
348# CONFIG_TIPC is not set
349# CONFIG_ATM is not set
350CONFIG_BRIDGE=m
351CONFIG_VLAN_8021Q=m
352# CONFIG_DECNET is not set
353CONFIG_LLC=m
354# CONFIG_LLC2 is not set
355# CONFIG_IPX is not set
356# CONFIG_ATALK is not set
357# CONFIG_X25 is not set
358# CONFIG_LAPB is not set
359# CONFIG_ECONET is not set
360# CONFIG_WAN_ROUTER is not set
361# CONFIG_NET_SCHED is not set
362
363#
364# Network testing
365#
366# CONFIG_NET_PKTGEN is not set
367# CONFIG_NET_TCPPROBE is not set
368# CONFIG_HAMRADIO is not set
369# CONFIG_CAN is not set
370# CONFIG_IRDA is not set
371# CONFIG_BT is not set
372# CONFIG_AF_RXRPC is not set
373
374#
375# Wireless
376#
377# CONFIG_CFG80211 is not set
378# CONFIG_WIRELESS_EXT is not set
379# CONFIG_MAC80211 is not set
380# CONFIG_IEEE80211 is not set
381# CONFIG_RFKILL is not set
382# CONFIG_NET_9P is not set
383
384#
385# Device Drivers
386#
387
388#
389# Generic Driver Options
390#
391CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
392CONFIG_STANDALONE=y
393# CONFIG_PREVENT_FIRMWARE_BUILD is not set
394# CONFIG_FW_LOADER is not set
395# CONFIG_DEBUG_DRIVER is not set
396# CONFIG_DEBUG_DEVRES is not set
397# CONFIG_SYS_HYPERVISOR is not set
398# CONFIG_CONNECTOR is not set
399CONFIG_MTD=y
400# CONFIG_MTD_DEBUG is not set
401# CONFIG_MTD_CONCAT is not set
402CONFIG_MTD_PARTITIONS=y
403# CONFIG_MTD_REDBOOT_PARTS is not set
404CONFIG_MTD_CMDLINE_PARTS=y
405
406#
407# User Modules And Translation Layers
408#
409CONFIG_MTD_CHAR=y
410CONFIG_MTD_BLKDEVS=y
411CONFIG_MTD_BLOCK=y
412# CONFIG_FTL is not set
413# CONFIG_NFTL is not set
414# CONFIG_INFTL is not set
415# CONFIG_RFD_FTL is not set
416# CONFIG_SSFDC is not set
417# CONFIG_MTD_OOPS is not set
418
419#
420# RAM/ROM/Flash chip drivers
421#
422CONFIG_MTD_CFI=y
423# CONFIG_MTD_JEDECPROBE is not set
424CONFIG_MTD_GEN_PROBE=y
425# CONFIG_MTD_CFI_ADV_OPTIONS is not set
426CONFIG_MTD_MAP_BANK_WIDTH_1=y
427CONFIG_MTD_MAP_BANK_WIDTH_2=y
428CONFIG_MTD_MAP_BANK_WIDTH_4=y
429# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
430# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
431# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
432CONFIG_MTD_CFI_I1=y
433CONFIG_MTD_CFI_I2=y
434# CONFIG_MTD_CFI_I4 is not set
435# CONFIG_MTD_CFI_I8 is not set
436# CONFIG_MTD_CFI_INTELEXT is not set
437CONFIG_MTD_CFI_AMDSTD=y
438# CONFIG_MTD_CFI_STAA is not set
439CONFIG_MTD_CFI_UTIL=y
440# CONFIG_MTD_RAM is not set
441# CONFIG_MTD_ROM is not set
442# CONFIG_MTD_ABSENT is not set
443
444#
445# Mapping drivers for chip access
446#
447# CONFIG_MTD_COMPLEX_MAPPINGS is not set
448CONFIG_MTD_PHYSMAP=y
449CONFIG_MTD_PHYSMAP_START=0x80000000
450CONFIG_MTD_PHYSMAP_LEN=0x0
451CONFIG_MTD_PHYSMAP_BANKWIDTH=2
452# CONFIG_MTD_PLATRAM is not set
453
454#
455# Self-contained MTD device drivers
456#
457CONFIG_MTD_DATAFLASH=y
458# CONFIG_MTD_M25P80 is not set
459# CONFIG_MTD_SLRAM is not set
460# CONFIG_MTD_PHRAM is not set
461# CONFIG_MTD_MTDRAM is not set
462# CONFIG_MTD_BLOCK2MTD is not set
463
464#
465# Disk-On-Chip Device Drivers
466#
467# CONFIG_MTD_DOC2000 is not set
468# CONFIG_MTD_DOC2001 is not set
469# CONFIG_MTD_DOC2001PLUS is not set
470# CONFIG_MTD_NAND is not set
471# CONFIG_MTD_ONENAND is not set
472
473#
474# UBI - Unsorted block images
475#
476CONFIG_MTD_UBI=y
477CONFIG_MTD_UBI_WL_THRESHOLD=4096
478CONFIG_MTD_UBI_BEB_RESERVE=1
479# CONFIG_MTD_UBI_GLUEBI is not set
480
481#
482# UBI debugging options
483#
484# CONFIG_MTD_UBI_DEBUG is not set
485# CONFIG_PARPORT is not set
486CONFIG_BLK_DEV=y
487# CONFIG_BLK_DEV_COW_COMMON is not set
488CONFIG_BLK_DEV_LOOP=m
489# CONFIG_BLK_DEV_CRYPTOLOOP is not set
490CONFIG_BLK_DEV_NBD=m
491CONFIG_BLK_DEV_RAM=m
492CONFIG_BLK_DEV_RAM_COUNT=16
493CONFIG_BLK_DEV_RAM_SIZE=4096
494# CONFIG_BLK_DEV_XIP is not set
495# CONFIG_CDROM_PKTCDVD is not set
496# CONFIG_ATA_OVER_ETH is not set
497CONFIG_MISC_DEVICES=y
498# CONFIG_ATMEL_PWM is not set
499CONFIG_ATMEL_TCLIB=y
500CONFIG_ATMEL_TCB_CLKSRC=y
501CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
502# CONFIG_EEPROM_93CX6 is not set
503# CONFIG_ATMEL_SSC is not set
504# CONFIG_ENCLOSURE_SERVICES is not set
505# CONFIG_HAVE_IDE is not set
506
507#
508# SCSI device support
509#
510# CONFIG_RAID_ATTRS is not set
511# CONFIG_SCSI is not set
512# CONFIG_SCSI_DMA is not set
513# CONFIG_SCSI_NETLINK is not set
514# CONFIG_ATA is not set
515# CONFIG_MD is not set
516CONFIG_NETDEVICES=y
517# CONFIG_NETDEVICES_MULTIQUEUE is not set
518# CONFIG_DUMMY is not set
519# CONFIG_BONDING is not set
520# CONFIG_MACVLAN is not set
521# CONFIG_EQUALIZER is not set
522# CONFIG_TUN is not set
523# CONFIG_VETH is not set
524CONFIG_PHYLIB=y
525
526#
527# MII PHY device drivers
528#
529# CONFIG_MARVELL_PHY is not set
530# CONFIG_DAVICOM_PHY is not set
531# CONFIG_QSEMI_PHY is not set
532# CONFIG_LXT_PHY is not set
533# CONFIG_CICADA_PHY is not set
534# CONFIG_VITESSE_PHY is not set
535# CONFIG_SMSC_PHY is not set
536# CONFIG_BROADCOM_PHY is not set
537# CONFIG_ICPLUS_PHY is not set
538# CONFIG_REALTEK_PHY is not set
539# CONFIG_FIXED_PHY is not set
540# CONFIG_MDIO_BITBANG is not set
541CONFIG_NET_ETHERNET=y
542# CONFIG_MII is not set
543CONFIG_MACB=y
544# CONFIG_ENC28J60 is not set
545# CONFIG_IBM_NEW_EMAC_ZMII is not set
546# CONFIG_IBM_NEW_EMAC_RGMII is not set
547# CONFIG_IBM_NEW_EMAC_TAH is not set
548# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
549# CONFIG_B44 is not set
550# CONFIG_NETDEV_1000 is not set
551# CONFIG_NETDEV_10000 is not set
552
553#
554# Wireless LAN
555#
556# CONFIG_WLAN_PRE80211 is not set
557# CONFIG_WLAN_80211 is not set
558# CONFIG_WAN is not set
559CONFIG_PPP=m
560# CONFIG_PPP_MULTILINK is not set
561CONFIG_PPP_FILTER=y
562CONFIG_PPP_ASYNC=m
563# CONFIG_PPP_SYNC_TTY is not set
564CONFIG_PPP_DEFLATE=m
565CONFIG_PPP_BSDCOMP=m
566CONFIG_PPP_MPPE=m
567CONFIG_PPPOE=m
568# CONFIG_PPPOL2TP is not set
569# CONFIG_SLIP is not set
570CONFIG_SLHC=m
571# CONFIG_NETCONSOLE is not set
572# CONFIG_NETPOLL is not set
573# CONFIG_NET_POLL_CONTROLLER is not set
574# CONFIG_ISDN is not set
575# CONFIG_PHONE is not set
576
577#
578# Input device support
579#
580CONFIG_INPUT=y
581# CONFIG_INPUT_FF_MEMLESS is not set
582# CONFIG_INPUT_POLLDEV is not set
583
584#
585# Userland interfaces
586#
587# CONFIG_INPUT_MOUSEDEV is not set
588# CONFIG_INPUT_JOYDEV is not set
589CONFIG_INPUT_EVDEV=m
590# CONFIG_INPUT_EVBUG is not set
591
592#
593# Input Device Drivers
594#
595# CONFIG_INPUT_KEYBOARD is not set
596# CONFIG_INPUT_MOUSE is not set
597# CONFIG_INPUT_JOYSTICK is not set
598# CONFIG_INPUT_TABLET is not set
599CONFIG_INPUT_TOUCHSCREEN=y
600# CONFIG_TOUCHSCREEN_ADS7846 is not set
601# CONFIG_TOUCHSCREEN_FUJITSU is not set
602# CONFIG_TOUCHSCREEN_GUNZE is not set
603# CONFIG_TOUCHSCREEN_ELO is not set
604# CONFIG_TOUCHSCREEN_MTOUCH is not set
605# CONFIG_TOUCHSCREEN_MK712 is not set
606# CONFIG_TOUCHSCREEN_PENMOUNT is not set
607# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
608# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
609# CONFIG_TOUCHSCREEN_UCB1400 is not set
610# CONFIG_INPUT_MISC is not set
611
612#
613# Hardware I/O ports
614#
615# CONFIG_SERIO is not set
616# CONFIG_GAMEPORT is not set
617
618#
619# Character devices
620#
621CONFIG_VT=y
622CONFIG_VT_CONSOLE=y
623CONFIG_HW_CONSOLE=y
624# CONFIG_VT_HW_CONSOLE_BINDING is not set
625# CONFIG_SERIAL_NONSTANDARD is not set
626
627#
628# Serial drivers
629#
630# CONFIG_SERIAL_8250 is not set
631
632#
633# Non-8250 serial port support
634#
635CONFIG_SERIAL_ATMEL=y
636CONFIG_SERIAL_ATMEL_CONSOLE=y
637CONFIG_SERIAL_ATMEL_PDC=y
638# CONFIG_SERIAL_ATMEL_TTYAT is not set
639CONFIG_SERIAL_CORE=y
640CONFIG_SERIAL_CORE_CONSOLE=y
641CONFIG_UNIX98_PTYS=y
642# CONFIG_LEGACY_PTYS is not set
643# CONFIG_IPMI_HANDLER is not set
644# CONFIG_HW_RANDOM is not set
645# CONFIG_R3964 is not set
646# CONFIG_RAW_DRIVER is not set
647# CONFIG_TCG_TPM is not set
648CONFIG_I2C=m
649CONFIG_I2C_BOARDINFO=y
650CONFIG_I2C_CHARDEV=m
651
652#
653# I2C Algorithms
654#
655CONFIG_I2C_ALGOBIT=m
656# CONFIG_I2C_ALGOPCF is not set
657# CONFIG_I2C_ALGOPCA is not set
658
659#
660# I2C Hardware Bus support
661#
662CONFIG_I2C_ATMELTWI=m
663CONFIG_I2C_GPIO=m
664# CONFIG_I2C_OCORES is not set
665# CONFIG_I2C_PARPORT_LIGHT is not set
666# CONFIG_I2C_SIMTEC is not set
667# CONFIG_I2C_TAOS_EVM is not set
668# CONFIG_I2C_STUB is not set
669
670#
671# Miscellaneous I2C Chip support
672#
673# CONFIG_DS1682 is not set
674# CONFIG_SENSORS_EEPROM is not set
675# CONFIG_SENSORS_PCF8574 is not set
676# CONFIG_PCF8575 is not set
677# CONFIG_SENSORS_PCF8591 is not set
678# CONFIG_TPS65010 is not set
679# CONFIG_SENSORS_MAX6875 is not set
680# CONFIG_SENSORS_TSL2550 is not set
681# CONFIG_I2C_DEBUG_CORE is not set
682# CONFIG_I2C_DEBUG_ALGO is not set
683# CONFIG_I2C_DEBUG_BUS is not set
684# CONFIG_I2C_DEBUG_CHIP is not set
685
686#
687# SPI support
688#
689CONFIG_SPI=y
690# CONFIG_SPI_DEBUG is not set
691CONFIG_SPI_MASTER=y
692
693#
694# SPI Master Controller Drivers
695#
696CONFIG_SPI_ATMEL=y
697# CONFIG_SPI_BITBANG is not set
698
699#
700# SPI Protocol Masters
701#
702# CONFIG_SPI_AT25 is not set
703CONFIG_SPI_SPIDEV=m
704# CONFIG_SPI_TLE62X0 is not set
705CONFIG_HAVE_GPIO_LIB=y
706
707#
708# GPIO Support
709#
710# CONFIG_DEBUG_GPIO is not set
711
712#
713# I2C GPIO expanders:
714#
715# CONFIG_GPIO_PCA953X is not set
716# CONFIG_GPIO_PCF857X is not set
717
718#
719# SPI GPIO expanders:
720#
721# CONFIG_GPIO_MCP23S08 is not set
722# CONFIG_W1 is not set
723# CONFIG_POWER_SUPPLY is not set
724# CONFIG_HWMON is not set
725# CONFIG_THERMAL is not set
726CONFIG_WATCHDOG=y
727# CONFIG_WATCHDOG_NOWAYOUT is not set
728
729#
730# Watchdog Device Drivers
731#
732# CONFIG_SOFT_WATCHDOG is not set
733CONFIG_AT32AP700X_WDT=y
734
735#
736# Sonics Silicon Backplane
737#
738CONFIG_SSB_POSSIBLE=y
739# CONFIG_SSB is not set
740
741#
742# Multifunction device drivers
743#
744# CONFIG_MFD_SM501 is not set
745
746#
747# Multimedia devices
748#
749# CONFIG_VIDEO_DEV is not set
750# CONFIG_DVB_CORE is not set
751# CONFIG_DAB is not set
752
753#
754# Graphics support
755#
756# CONFIG_VGASTATE is not set
757# CONFIG_VIDEO_OUTPUT_CONTROL is not set
758CONFIG_FB=y
759# CONFIG_FIRMWARE_EDID is not set
760# CONFIG_FB_DDC is not set
761CONFIG_FB_CFB_FILLRECT=y
762CONFIG_FB_CFB_COPYAREA=y
763CONFIG_FB_CFB_IMAGEBLIT=y
764# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
765# CONFIG_FB_SYS_FILLRECT is not set
766# CONFIG_FB_SYS_COPYAREA is not set
767# CONFIG_FB_SYS_IMAGEBLIT is not set
768# CONFIG_FB_SYS_FOPS is not set
769CONFIG_FB_DEFERRED_IO=y
770# CONFIG_FB_SVGALIB is not set
771# CONFIG_FB_MACMODES is not set
772# CONFIG_FB_BACKLIGHT is not set
773# CONFIG_FB_MODE_HELPERS is not set
774# CONFIG_FB_TILEBLITTING is not set
775
776#
777# Frame buffer hardware drivers
778#
779# CONFIG_FB_S1D13XXX is not set
780CONFIG_FB_ATMEL=y
781# CONFIG_FB_VIRTUAL is not set
782# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
783
784#
785# Display device support
786#
787# CONFIG_DISPLAY_SUPPORT is not set
788
789#
790# Console display driver support
791#
792CONFIG_DUMMY_CONSOLE=y
793# CONFIG_FRAMEBUFFER_CONSOLE is not set
794# CONFIG_LOGO is not set
795
796#
797# Sound
798#
799CONFIG_SOUND=y
800
801#
802# Advanced Linux Sound Architecture
803#
804CONFIG_SND=y
805CONFIG_SND_TIMER=m
806CONFIG_SND_PCM=m
807# CONFIG_SND_SEQUENCER is not set
808CONFIG_SND_OSSEMUL=y
809CONFIG_SND_MIXER_OSS=m
810CONFIG_SND_PCM_OSS=m
811CONFIG_SND_PCM_OSS_PLUGINS=y
812# CONFIG_SND_DYNAMIC_MINORS is not set
813# CONFIG_SND_SUPPORT_OLD_API is not set
814CONFIG_SND_VERBOSE_PROCFS=y
815# CONFIG_SND_VERBOSE_PRINTK is not set
816# CONFIG_SND_DEBUG is not set
817
818#
819# Generic devices
820#
821CONFIG_SND_AC97_CODEC=m
822# CONFIG_SND_DUMMY is not set
823# CONFIG_SND_MTPAV is not set
824# CONFIG_SND_SERIAL_U16550 is not set
825# CONFIG_SND_MPU401 is not set
826
827#
828# AVR32 devices
829#
830CONFIG_SND_ATMEL_AC97=m
831
832#
833# SPI devices
834#
835
836#
837# System on Chip audio support
838#
839# CONFIG_SND_SOC is not set
840
841#
842# SoC Audio support for SuperH
843#
844
845#
846# ALSA SoC audio for Freescale SOCs
847#
848
849#
850# Open Sound System
851#
852# CONFIG_SOUND_PRIME is not set
853CONFIG_AC97_BUS=m
854CONFIG_HID_SUPPORT=y
855CONFIG_HID=y
856# CONFIG_HID_DEBUG is not set
857# CONFIG_HIDRAW is not set
858CONFIG_USB_SUPPORT=y
859# CONFIG_USB_ARCH_HAS_HCD is not set
860# CONFIG_USB_ARCH_HAS_OHCI is not set
861# CONFIG_USB_ARCH_HAS_EHCI is not set
862
863#
864# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
865#
866CONFIG_USB_GADGET=y
867# CONFIG_USB_GADGET_DEBUG is not set
868# CONFIG_USB_GADGET_DEBUG_FILES is not set
869CONFIG_USB_GADGET_SELECTED=y
870# CONFIG_USB_GADGET_AMD5536UDC is not set
871CONFIG_USB_GADGET_ATMEL_USBA=y
872CONFIG_USB_ATMEL_USBA=y
873# CONFIG_USB_GADGET_FSL_USB2 is not set
874# CONFIG_USB_GADGET_NET2280 is not set
875# CONFIG_USB_GADGET_PXA2XX is not set
876# CONFIG_USB_GADGET_M66592 is not set
877# CONFIG_USB_GADGET_GOKU is not set
878# CONFIG_USB_GADGET_LH7A40X is not set
879# CONFIG_USB_GADGET_OMAP is not set
880# CONFIG_USB_GADGET_S3C2410 is not set
881# CONFIG_USB_GADGET_AT91 is not set
882# CONFIG_USB_GADGET_DUMMY_HCD is not set
883CONFIG_USB_GADGET_DUALSPEED=y
884CONFIG_USB_ZERO=m
885CONFIG_USB_ETH=m
886CONFIG_USB_ETH_RNDIS=y
887CONFIG_USB_GADGETFS=m
888CONFIG_USB_FILE_STORAGE=m
889# CONFIG_USB_FILE_STORAGE_TEST is not set
890CONFIG_USB_G_SERIAL=m
891# CONFIG_USB_MIDI_GADGET is not set
892# CONFIG_USB_G_PRINTER is not set
893CONFIG_MMC=y
894# CONFIG_MMC_DEBUG is not set
895# CONFIG_MMC_UNSAFE_RESUME is not set
896
897#
898# MMC/SD Card Drivers
899#
900CONFIG_MMC_BLOCK=y
901CONFIG_MMC_BLOCK_BOUNCE=y
902# CONFIG_SDIO_UART is not set
903
904#
905# MMC/SD Host Controller Drivers
906#
907CONFIG_MMC_ATMELMCI=y
908# CONFIG_MMC_SPI is not set
909# CONFIG_MEMSTICK is not set
910CONFIG_NEW_LEDS=y
911CONFIG_LEDS_CLASS=y
912
913#
914# LED drivers
915#
916CONFIG_LEDS_GPIO=y
917
918#
919# LED Triggers
920#
921CONFIG_LEDS_TRIGGERS=y
922CONFIG_LEDS_TRIGGER_TIMER=y
923CONFIG_LEDS_TRIGGER_HEARTBEAT=y
924CONFIG_RTC_LIB=y
925CONFIG_RTC_CLASS=y
926CONFIG_RTC_HCTOSYS=y
927CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
928# CONFIG_RTC_DEBUG is not set
929
930#
931# RTC interfaces
932#
933CONFIG_RTC_INTF_SYSFS=y
934CONFIG_RTC_INTF_PROC=y
935CONFIG_RTC_INTF_DEV=y
936# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
937# CONFIG_RTC_DRV_TEST is not set
938
939#
940# I2C RTC drivers
941#
942# CONFIG_RTC_DRV_DS1307 is not set
943# CONFIG_RTC_DRV_DS1374 is not set
944# CONFIG_RTC_DRV_DS1672 is not set
945# CONFIG_RTC_DRV_MAX6900 is not set
946# CONFIG_RTC_DRV_RS5C372 is not set
947# CONFIG_RTC_DRV_ISL1208 is not set
948# CONFIG_RTC_DRV_X1205 is not set
949# CONFIG_RTC_DRV_PCF8563 is not set
950# CONFIG_RTC_DRV_PCF8583 is not set
951# CONFIG_RTC_DRV_M41T80 is not set
952# CONFIG_RTC_DRV_S35390A is not set
953
954#
955# SPI RTC drivers
956#
957# CONFIG_RTC_DRV_MAX6902 is not set
958# CONFIG_RTC_DRV_R9701 is not set
959# CONFIG_RTC_DRV_RS5C348 is not set
960
961#
962# Platform RTC drivers
963#
964# CONFIG_RTC_DRV_DS1511 is not set
965# CONFIG_RTC_DRV_DS1553 is not set
966# CONFIG_RTC_DRV_DS1742 is not set
967# CONFIG_RTC_DRV_STK17TA8 is not set
968# CONFIG_RTC_DRV_M48T86 is not set
969# CONFIG_RTC_DRV_M48T59 is not set
970# CONFIG_RTC_DRV_V3020 is not set
971
972#
973# on-CPU RTC drivers
974#
975CONFIG_RTC_DRV_AT32AP700X=y
976
977#
978# Userspace I/O
979#
980# CONFIG_UIO is not set
981
982#
983# File systems
984#
985CONFIG_EXT2_FS=y
986# CONFIG_EXT2_FS_XATTR is not set
987# CONFIG_EXT2_FS_XIP is not set
988CONFIG_EXT3_FS=y
989# CONFIG_EXT3_FS_XATTR is not set
990# CONFIG_EXT4DEV_FS is not set
991CONFIG_JBD=y
992# CONFIG_REISERFS_FS is not set
993# CONFIG_JFS_FS is not set
994# CONFIG_FS_POSIX_ACL is not set
995# CONFIG_XFS_FS is not set
996# CONFIG_GFS2_FS is not set
997# CONFIG_OCFS2_FS is not set
998# CONFIG_DNOTIFY is not set
999CONFIG_INOTIFY=y
1000CONFIG_INOTIFY_USER=y
1001# CONFIG_QUOTA is not set
1002# CONFIG_AUTOFS_FS is not set
1003# CONFIG_AUTOFS4_FS is not set
1004CONFIG_FUSE_FS=m
1005
1006#
1007# CD-ROM/DVD Filesystems
1008#
1009# CONFIG_ISO9660_FS is not set
1010# CONFIG_UDF_FS is not set
1011
1012#
1013# DOS/FAT/NT Filesystems
1014#
1015CONFIG_FAT_FS=m
1016CONFIG_MSDOS_FS=m
1017CONFIG_VFAT_FS=m
1018CONFIG_FAT_DEFAULT_CODEPAGE=850
1019CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1020# CONFIG_NTFS_FS is not set
1021
1022#
1023# Pseudo filesystems
1024#
1025CONFIG_PROC_FS=y
1026# CONFIG_PROC_KCORE is not set
1027CONFIG_PROC_SYSCTL=y
1028CONFIG_SYSFS=y
1029CONFIG_TMPFS=y
1030# CONFIG_TMPFS_POSIX_ACL is not set
1031# CONFIG_HUGETLB_PAGE is not set
1032CONFIG_CONFIGFS_FS=y
1033
1034#
1035# Miscellaneous filesystems
1036#
1037# CONFIG_ADFS_FS is not set
1038# CONFIG_AFFS_FS is not set
1039# CONFIG_HFS_FS is not set
1040# CONFIG_HFSPLUS_FS is not set
1041# CONFIG_BEFS_FS is not set
1042# CONFIG_BFS_FS is not set
1043# CONFIG_EFS_FS is not set
1044CONFIG_JFFS2_FS=y
1045CONFIG_JFFS2_FS_DEBUG=0
1046CONFIG_JFFS2_FS_WRITEBUFFER=y
1047# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1048# CONFIG_JFFS2_SUMMARY is not set
1049# CONFIG_JFFS2_FS_XATTR is not set
1050# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1051CONFIG_JFFS2_ZLIB=y
1052# CONFIG_JFFS2_LZO is not set
1053CONFIG_JFFS2_RTIME=y
1054# CONFIG_JFFS2_RUBIN is not set
1055CONFIG_UBIFS_FS=y
1056# CONFIG_UBIFS_FS_XATTR is not set
1057# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
1058CONFIG_UBIFS_FS_LZO=y
1059CONFIG_UBIFS_FS_ZLIB=y
1060# CONFIG_UBIFS_FS_DEBUG is not set
1061# CONFIG_CRAMFS is not set
1062# CONFIG_VXFS_FS is not set
1063# CONFIG_MINIX_FS is not set
1064# CONFIG_HPFS_FS is not set
1065# CONFIG_QNX4FS_FS is not set
1066# CONFIG_ROMFS_FS is not set
1067# CONFIG_SYSV_FS is not set
1068# CONFIG_UFS_FS is not set
1069CONFIG_NETWORK_FILESYSTEMS=y
1070CONFIG_NFS_FS=y
1071CONFIG_NFS_V3=y
1072# CONFIG_NFS_V3_ACL is not set
1073# CONFIG_NFS_V4 is not set
1074# CONFIG_NFS_DIRECTIO is not set
1075CONFIG_NFSD=m
1076CONFIG_NFSD_V3=y
1077# CONFIG_NFSD_V3_ACL is not set
1078# CONFIG_NFSD_V4 is not set
1079CONFIG_NFSD_TCP=y
1080CONFIG_ROOT_NFS=y
1081CONFIG_LOCKD=y
1082CONFIG_LOCKD_V4=y
1083CONFIG_EXPORTFS=m
1084CONFIG_NFS_COMMON=y
1085CONFIG_SUNRPC=y
1086# CONFIG_SUNRPC_BIND34 is not set
1087# CONFIG_RPCSEC_GSS_KRB5 is not set
1088# CONFIG_RPCSEC_GSS_SPKM3 is not set
1089CONFIG_SMB_FS=m
1090# CONFIG_SMB_NLS_DEFAULT is not set
1091CONFIG_CIFS=m
1092# CONFIG_CIFS_STATS is not set
1093# CONFIG_CIFS_WEAK_PW_HASH is not set
1094# CONFIG_CIFS_XATTR is not set
1095# CONFIG_CIFS_DEBUG2 is not set
1096# CONFIG_CIFS_EXPERIMENTAL is not set
1097# CONFIG_NCP_FS is not set
1098# CONFIG_CODA_FS is not set
1099# CONFIG_AFS_FS is not set
1100
1101#
1102# Partition Types
1103#
1104# CONFIG_PARTITION_ADVANCED is not set
1105CONFIG_MSDOS_PARTITION=y
1106CONFIG_NLS=m
1107CONFIG_NLS_DEFAULT="iso8859-1"
1108CONFIG_NLS_CODEPAGE_437=m
1109# CONFIG_NLS_CODEPAGE_737 is not set
1110# CONFIG_NLS_CODEPAGE_775 is not set
1111CONFIG_NLS_CODEPAGE_850=m
1112# CONFIG_NLS_CODEPAGE_852 is not set
1113# CONFIG_NLS_CODEPAGE_855 is not set
1114# CONFIG_NLS_CODEPAGE_857 is not set
1115# CONFIG_NLS_CODEPAGE_860 is not set
1116# CONFIG_NLS_CODEPAGE_861 is not set
1117# CONFIG_NLS_CODEPAGE_862 is not set
1118# CONFIG_NLS_CODEPAGE_863 is not set
1119# CONFIG_NLS_CODEPAGE_864 is not set
1120# CONFIG_NLS_CODEPAGE_865 is not set
1121# CONFIG_NLS_CODEPAGE_866 is not set
1122# CONFIG_NLS_CODEPAGE_869 is not set
1123# CONFIG_NLS_CODEPAGE_936 is not set
1124# CONFIG_NLS_CODEPAGE_950 is not set
1125# CONFIG_NLS_CODEPAGE_932 is not set
1126# CONFIG_NLS_CODEPAGE_949 is not set
1127# CONFIG_NLS_CODEPAGE_874 is not set
1128# CONFIG_NLS_ISO8859_8 is not set
1129# CONFIG_NLS_CODEPAGE_1250 is not set
1130# CONFIG_NLS_CODEPAGE_1251 is not set
1131# CONFIG_NLS_ASCII is not set
1132CONFIG_NLS_ISO8859_1=m
1133# CONFIG_NLS_ISO8859_2 is not set
1134# CONFIG_NLS_ISO8859_3 is not set
1135# CONFIG_NLS_ISO8859_4 is not set
1136# CONFIG_NLS_ISO8859_5 is not set
1137# CONFIG_NLS_ISO8859_6 is not set
1138# CONFIG_NLS_ISO8859_7 is not set
1139# CONFIG_NLS_ISO8859_9 is not set
1140# CONFIG_NLS_ISO8859_13 is not set
1141# CONFIG_NLS_ISO8859_14 is not set
1142# CONFIG_NLS_ISO8859_15 is not set
1143# CONFIG_NLS_KOI8_R is not set
1144# CONFIG_NLS_KOI8_U is not set
1145CONFIG_NLS_UTF8=m
1146# CONFIG_DLM is not set
1147
1148#
1149# Kernel hacking
1150#
1151# CONFIG_PRINTK_TIME is not set
1152CONFIG_ENABLE_WARN_DEPRECATED=y
1153CONFIG_ENABLE_MUST_CHECK=y
1154CONFIG_MAGIC_SYSRQ=y
1155# CONFIG_UNUSED_SYMBOLS is not set
1156# CONFIG_DEBUG_FS is not set
1157# CONFIG_HEADERS_CHECK is not set
1158CONFIG_DEBUG_KERNEL=y
1159# CONFIG_DEBUG_SHIRQ is not set
1160CONFIG_DETECT_SOFTLOCKUP=y
1161CONFIG_SCHED_DEBUG=y
1162# CONFIG_SCHEDSTATS is not set
1163# CONFIG_TIMER_STATS is not set
1164# CONFIG_SLUB_DEBUG_ON is not set
1165# CONFIG_SLUB_STATS is not set
1166# CONFIG_DEBUG_RT_MUTEXES is not set
1167# CONFIG_RT_MUTEX_TESTER is not set
1168# CONFIG_DEBUG_SPINLOCK is not set
1169# CONFIG_DEBUG_MUTEXES is not set
1170# CONFIG_DEBUG_LOCK_ALLOC is not set
1171# CONFIG_PROVE_LOCKING is not set
1172# CONFIG_LOCK_STAT is not set
1173# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1174# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1175# CONFIG_DEBUG_KOBJECT is not set
1176CONFIG_DEBUG_BUGVERBOSE=y
1177# CONFIG_DEBUG_INFO is not set
1178# CONFIG_DEBUG_VM is not set
1179# CONFIG_DEBUG_LIST is not set
1180# CONFIG_DEBUG_SG is not set
1181CONFIG_FRAME_POINTER=y
1182# CONFIG_BOOT_PRINTK_DELAY is not set
1183# CONFIG_RCU_TORTURE_TEST is not set
1184# CONFIG_KPROBES_SANITY_TEST is not set
1185# CONFIG_BACKTRACE_SELF_TEST is not set
1186# CONFIG_LKDTM is not set
1187# CONFIG_FAULT_INJECTION is not set
1188# CONFIG_SAMPLES is not set
1189
1190#
1191# Security options
1192#
1193# CONFIG_KEYS is not set
1194# CONFIG_SECURITY is not set
1195# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1196CONFIG_CRYPTO=y
1197CONFIG_CRYPTO_ALGAPI=y
1198CONFIG_CRYPTO_AEAD=y
1199CONFIG_CRYPTO_BLKCIPHER=y
1200# CONFIG_CRYPTO_SEQIV is not set
1201CONFIG_CRYPTO_HASH=y
1202CONFIG_CRYPTO_MANAGER=y
1203CONFIG_CRYPTO_HMAC=y
1204# CONFIG_CRYPTO_XCBC is not set
1205# CONFIG_CRYPTO_NULL is not set
1206# CONFIG_CRYPTO_MD4 is not set
1207CONFIG_CRYPTO_MD5=y
1208CONFIG_CRYPTO_SHA1=y
1209# CONFIG_CRYPTO_SHA256 is not set
1210# CONFIG_CRYPTO_SHA512 is not set
1211# CONFIG_CRYPTO_WP512 is not set
1212# CONFIG_CRYPTO_TGR192 is not set
1213# CONFIG_CRYPTO_GF128MUL is not set
1214CONFIG_CRYPTO_ECB=m
1215CONFIG_CRYPTO_CBC=y
1216# CONFIG_CRYPTO_PCBC is not set
1217# CONFIG_CRYPTO_LRW is not set
1218# CONFIG_CRYPTO_XTS is not set
1219# CONFIG_CRYPTO_CTR is not set
1220# CONFIG_CRYPTO_GCM is not set
1221# CONFIG_CRYPTO_CCM is not set
1222# CONFIG_CRYPTO_CRYPTD is not set
1223CONFIG_CRYPTO_DES=y
1224# CONFIG_CRYPTO_FCRYPT is not set
1225# CONFIG_CRYPTO_BLOWFISH is not set
1226# CONFIG_CRYPTO_TWOFISH is not set
1227# CONFIG_CRYPTO_SERPENT is not set
1228# CONFIG_CRYPTO_AES is not set
1229# CONFIG_CRYPTO_CAST5 is not set
1230# CONFIG_CRYPTO_CAST6 is not set
1231# CONFIG_CRYPTO_TEA is not set
1232CONFIG_CRYPTO_ARC4=m
1233# CONFIG_CRYPTO_KHAZAD is not set
1234# CONFIG_CRYPTO_ANUBIS is not set
1235# CONFIG_CRYPTO_SEED is not set
1236# CONFIG_CRYPTO_SALSA20 is not set
1237CONFIG_CRYPTO_DEFLATE=y
1238# CONFIG_CRYPTO_MICHAEL_MIC is not set
1239# CONFIG_CRYPTO_CRC32C is not set
1240# CONFIG_CRYPTO_CAMELLIA is not set
1241# CONFIG_CRYPTO_TEST is not set
1242CONFIG_CRYPTO_AUTHENC=y
1243CONFIG_CRYPTO_LZO=y
1244CONFIG_CRYPTO_HW=y
1245
1246#
1247# Library routines
1248#
1249CONFIG_BITREVERSE=y
1250CONFIG_CRC_CCITT=m
1251CONFIG_CRC16=y
1252# CONFIG_CRC_ITU_T is not set
1253CONFIG_CRC32=y
1254# CONFIG_CRC7 is not set
1255# CONFIG_LIBCRC32C is not set
1256CONFIG_ZLIB_INFLATE=y
1257CONFIG_ZLIB_DEFLATE=y
1258CONFIG_LZO_COMPRESS=y
1259CONFIG_LZO_DECOMPRESS=y
1260CONFIG_GENERIC_ALLOCATOR=y
1261CONFIG_PLIST=y
1262CONFIG_HAS_IOMEM=y
1263CONFIG_HAS_IOPORT=y
1264CONFIG_HAS_DMA=y
diff --git a/arch/avr32/configs/favr-32_defconfig b/arch/avr32/configs/favr-32_defconfig
new file mode 100644
index 000000000000..e2bd9982e2af
--- /dev/null
+++ b/arch/avr32/configs/favr-32_defconfig
@@ -0,0 +1,1235 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.27-rc8
4# Tue Oct 14 13:20:41 2008
5#
6CONFIG_AVR32=y
7CONFIG_GENERIC_GPIO=y
8CONFIG_GENERIC_HARDIRQS=y
9CONFIG_STACKTRACE_SUPPORT=y
10CONFIG_LOCKDEP_SUPPORT=y
11CONFIG_TRACE_IRQFLAGS_SUPPORT=y
12CONFIG_HARDIRQS_SW_RESEND=y
13CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_RWSEM_GENERIC_SPINLOCK=y
15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_GENERIC_HWEIGHT=y
21CONFIG_GENERIC_CALIBRATE_DELAY=y
22CONFIG_GENERIC_BUG=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24
25#
26# General setup
27#
28CONFIG_EXPERIMENTAL=y
29CONFIG_BROKEN_ON_SMP=y
30CONFIG_INIT_ENV_ARG_LIMIT=32
31CONFIG_LOCALVERSION=""
32# CONFIG_LOCALVERSION_AUTO is not set
33CONFIG_SWAP=y
34CONFIG_SYSVIPC=y
35CONFIG_SYSVIPC_SYSCTL=y
36CONFIG_POSIX_MQUEUE=y
37# CONFIG_BSD_PROCESS_ACCT is not set
38# CONFIG_TASKSTATS is not set
39# CONFIG_AUDIT is not set
40# CONFIG_IKCONFIG is not set
41CONFIG_LOG_BUF_SHIFT=14
42# CONFIG_CGROUPS is not set
43# CONFIG_GROUP_SCHED is not set
44CONFIG_SYSFS_DEPRECATED=y
45CONFIG_SYSFS_DEPRECATED_V2=y
46CONFIG_RELAY=y
47# CONFIG_NAMESPACES is not set
48CONFIG_BLK_DEV_INITRD=y
49CONFIG_INITRAMFS_SOURCE=""
50CONFIG_CC_OPTIMIZE_FOR_SIZE=y
51CONFIG_SYSCTL=y
52CONFIG_EMBEDDED=y
53# CONFIG_SYSCTL_SYSCALL is not set
54CONFIG_KALLSYMS=y
55# CONFIG_KALLSYMS_ALL is not set
56# CONFIG_KALLSYMS_EXTRA_PASS is not set
57CONFIG_HOTPLUG=y
58CONFIG_PRINTK=y
59CONFIG_BUG=y
60CONFIG_ELF_CORE=y
61# CONFIG_COMPAT_BRK is not set
62# CONFIG_BASE_FULL is not set
63CONFIG_FUTEX=y
64CONFIG_ANON_INODES=y
65CONFIG_EPOLL=y
66CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y
69CONFIG_SHMEM=y
70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLUB_DEBUG=y
72# CONFIG_SLAB is not set
73CONFIG_SLUB=y
74# CONFIG_SLOB is not set
75CONFIG_PROFILING=y
76# CONFIG_MARKERS is not set
77CONFIG_OPROFILE=m
78CONFIG_HAVE_OPROFILE=y
79CONFIG_KPROBES=y
80# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
81# CONFIG_HAVE_IOREMAP_PROT is not set
82CONFIG_HAVE_KPROBES=y
83# CONFIG_HAVE_KRETPROBES is not set
84# CONFIG_HAVE_ARCH_TRACEHOOK is not set
85# CONFIG_HAVE_DMA_ATTRS is not set
86# CONFIG_USE_GENERIC_SMP_HELPERS is not set
87CONFIG_HAVE_CLK=y
88CONFIG_PROC_PAGE_MONITOR=y
89# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
90CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y
92# CONFIG_TINY_SHMEM is not set
93CONFIG_BASE_SMALL=1
94CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set
96CONFIG_MODULE_UNLOAD=y
97# CONFIG_MODULE_FORCE_UNLOAD is not set
98# CONFIG_MODVERSIONS is not set
99# CONFIG_MODULE_SRCVERSION_ALL is not set
100CONFIG_KMOD=y
101CONFIG_BLOCK=y
102# CONFIG_LBD is not set
103# CONFIG_BLK_DEV_IO_TRACE is not set
104# CONFIG_LSF is not set
105# CONFIG_BLK_DEV_BSG is not set
106# CONFIG_BLK_DEV_INTEGRITY is not set
107
108#
109# IO Schedulers
110#
111CONFIG_IOSCHED_NOOP=y
112# CONFIG_IOSCHED_AS is not set
113# CONFIG_IOSCHED_DEADLINE is not set
114CONFIG_IOSCHED_CFQ=y
115# CONFIG_DEFAULT_AS is not set
116# CONFIG_DEFAULT_DEADLINE is not set
117CONFIG_DEFAULT_CFQ=y
118# CONFIG_DEFAULT_NOOP is not set
119CONFIG_DEFAULT_IOSCHED="cfq"
120CONFIG_CLASSIC_RCU=y
121
122#
123# System Type and features
124#
125CONFIG_TICK_ONESHOT=y
126CONFIG_NO_HZ=y
127CONFIG_HIGH_RES_TIMERS=y
128CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
129CONFIG_SUBARCH_AVR32B=y
130CONFIG_MMU=y
131CONFIG_PERFORMANCE_COUNTERS=y
132CONFIG_PLATFORM_AT32AP=y
133CONFIG_CPU_AT32AP700X=y
134CONFIG_CPU_AT32AP7000=y
135# CONFIG_BOARD_ATSTK1000 is not set
136# CONFIG_BOARD_ATNGW100 is not set
137CONFIG_BOARD_FAVR_32=y
138# CONFIG_BOARD_MIMC200 is not set
139CONFIG_BOARD_FAVR32_ABDAC_RATE=44100
140CONFIG_LOADER_U_BOOT=y
141
142#
143# Atmel AVR32 AP options
144#
145# CONFIG_AP700X_32_BIT_SMC is not set
146CONFIG_AP700X_16_BIT_SMC=y
147# CONFIG_AP700X_8_BIT_SMC is not set
148CONFIG_LOAD_ADDRESS=0x10000000
149CONFIG_ENTRY_ADDRESS=0x90000000
150CONFIG_PHYS_OFFSET=0x10000000
151CONFIG_PREEMPT_NONE=y
152# CONFIG_PREEMPT_VOLUNTARY is not set
153# CONFIG_PREEMPT is not set
154CONFIG_QUICKLIST=y
155# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
156# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
157# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
158CONFIG_ARCH_FLATMEM_ENABLE=y
159# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
160# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
161CONFIG_SELECT_MEMORY_MODEL=y
162CONFIG_FLATMEM_MANUAL=y
163# CONFIG_DISCONTIGMEM_MANUAL is not set
164# CONFIG_SPARSEMEM_MANUAL is not set
165CONFIG_FLATMEM=y
166CONFIG_FLAT_NODE_MEM_MAP=y
167# CONFIG_SPARSEMEM_STATIC is not set
168# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
169CONFIG_PAGEFLAGS_EXTENDED=y
170CONFIG_SPLIT_PTLOCK_CPUS=4
171# CONFIG_RESOURCES_64BIT is not set
172CONFIG_ZONE_DMA_FLAG=0
173CONFIG_NR_QUICK=2
174CONFIG_VIRT_TO_BUS=y
175# CONFIG_OWNERSHIP_TRACE is not set
176CONFIG_NMI_DEBUGGING=y
177# CONFIG_HZ_100 is not set
178CONFIG_HZ_250=y
179# CONFIG_HZ_300 is not set
180# CONFIG_HZ_1000 is not set
181CONFIG_HZ=250
182CONFIG_SCHED_HRTICK=y
183CONFIG_CMDLINE=""
184
185#
186# Power management options
187#
188CONFIG_PM=y
189# CONFIG_PM_DEBUG is not set
190CONFIG_PM_SLEEP=y
191CONFIG_SUSPEND=y
192CONFIG_SUSPEND_FREEZER=y
193CONFIG_ARCH_SUSPEND_POSSIBLE=y
194
195#
196# CPU Frequency scaling
197#
198CONFIG_CPU_FREQ=y
199CONFIG_CPU_FREQ_TABLE=y
200# CONFIG_CPU_FREQ_DEBUG is not set
201# CONFIG_CPU_FREQ_STAT is not set
202# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
203# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
204# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
205CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
206# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
207CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
208# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
209CONFIG_CPU_FREQ_GOV_USERSPACE=y
210CONFIG_CPU_FREQ_GOV_ONDEMAND=y
211# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
212CONFIG_CPU_FREQ_AT32AP=y
213
214#
215# Bus options
216#
217# CONFIG_ARCH_SUPPORTS_MSI is not set
218# CONFIG_PCCARD is not set
219
220#
221# Executable file formats
222#
223CONFIG_BINFMT_ELF=y
224# CONFIG_BINFMT_MISC is not set
225CONFIG_NET=y
226
227#
228# Networking options
229#
230CONFIG_PACKET=y
231CONFIG_PACKET_MMAP=y
232CONFIG_UNIX=y
233CONFIG_XFRM=y
234CONFIG_XFRM_USER=m
235# CONFIG_XFRM_SUB_POLICY is not set
236# CONFIG_XFRM_MIGRATE is not set
237# CONFIG_XFRM_STATISTICS is not set
238CONFIG_XFRM_IPCOMP=m
239CONFIG_NET_KEY=m
240# CONFIG_NET_KEY_MIGRATE is not set
241CONFIG_INET=y
242# CONFIG_IP_MULTICAST is not set
243# CONFIG_IP_ADVANCED_ROUTER is not set
244CONFIG_IP_FIB_HASH=y
245CONFIG_IP_PNP=y
246CONFIG_IP_PNP_DHCP=y
247# CONFIG_IP_PNP_BOOTP is not set
248# CONFIG_IP_PNP_RARP is not set
249CONFIG_NET_IPIP=m
250CONFIG_NET_IPGRE=m
251# CONFIG_ARPD is not set
252# CONFIG_SYN_COOKIES is not set
253CONFIG_INET_AH=m
254CONFIG_INET_ESP=m
255# CONFIG_INET_IPCOMP is not set
256# CONFIG_INET_XFRM_TUNNEL is not set
257CONFIG_INET_TUNNEL=m
258CONFIG_INET_XFRM_MODE_TRANSPORT=m
259CONFIG_INET_XFRM_MODE_TUNNEL=m
260CONFIG_INET_XFRM_MODE_BEET=m
261# CONFIG_INET_LRO is not set
262CONFIG_INET_DIAG=y
263CONFIG_INET_TCP_DIAG=y
264# CONFIG_TCP_CONG_ADVANCED is not set
265CONFIG_TCP_CONG_CUBIC=y
266CONFIG_DEFAULT_TCP_CONG="cubic"
267# CONFIG_TCP_MD5SIG is not set
268CONFIG_IPV6=y
269# CONFIG_IPV6_PRIVACY is not set
270# CONFIG_IPV6_ROUTER_PREF is not set
271# CONFIG_IPV6_OPTIMISTIC_DAD is not set
272CONFIG_INET6_AH=m
273CONFIG_INET6_ESP=m
274CONFIG_INET6_IPCOMP=m
275# CONFIG_IPV6_MIP6 is not set
276CONFIG_INET6_XFRM_TUNNEL=m
277CONFIG_INET6_TUNNEL=m
278CONFIG_INET6_XFRM_MODE_TRANSPORT=m
279CONFIG_INET6_XFRM_MODE_TUNNEL=m
280CONFIG_INET6_XFRM_MODE_BEET=m
281# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
282CONFIG_IPV6_SIT=m
283CONFIG_IPV6_NDISC_NODETYPE=y
284CONFIG_IPV6_TUNNEL=m
285# CONFIG_IPV6_MULTIPLE_TABLES is not set
286# CONFIG_IPV6_MROUTE is not set
287# CONFIG_NETWORK_SECMARK is not set
288# CONFIG_NETFILTER is not set
289# CONFIG_IP_DCCP is not set
290# CONFIG_IP_SCTP is not set
291# CONFIG_TIPC is not set
292# CONFIG_ATM is not set
293CONFIG_STP=m
294CONFIG_BRIDGE=m
295# CONFIG_VLAN_8021Q is not set
296# CONFIG_DECNET is not set
297CONFIG_LLC=m
298# CONFIG_LLC2 is not set
299# CONFIG_IPX is not set
300# CONFIG_ATALK is not set
301# CONFIG_X25 is not set
302# CONFIG_LAPB is not set
303# CONFIG_ECONET is not set
304# CONFIG_WAN_ROUTER is not set
305# CONFIG_NET_SCHED is not set
306
307#
308# Network testing
309#
310# CONFIG_NET_PKTGEN is not set
311# CONFIG_NET_TCPPROBE is not set
312# CONFIG_HAMRADIO is not set
313# CONFIG_CAN is not set
314# CONFIG_IRDA is not set
315# CONFIG_BT is not set
316# CONFIG_AF_RXRPC is not set
317
318#
319# Wireless
320#
321# CONFIG_CFG80211 is not set
322# CONFIG_WIRELESS_EXT is not set
323# CONFIG_MAC80211 is not set
324# CONFIG_IEEE80211 is not set
325# CONFIG_RFKILL is not set
326# CONFIG_NET_9P is not set
327
328#
329# Device Drivers
330#
331
332#
333# Generic Driver Options
334#
335CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
336CONFIG_STANDALONE=y
337# CONFIG_PREVENT_FIRMWARE_BUILD is not set
338# CONFIG_FW_LOADER is not set
339# CONFIG_DEBUG_DRIVER is not set
340# CONFIG_DEBUG_DEVRES is not set
341# CONFIG_SYS_HYPERVISOR is not set
342# CONFIG_CONNECTOR is not set
343CONFIG_MTD=y
344# CONFIG_MTD_DEBUG is not set
345# CONFIG_MTD_CONCAT is not set
346CONFIG_MTD_PARTITIONS=y
347# CONFIG_MTD_REDBOOT_PARTS is not set
348CONFIG_MTD_CMDLINE_PARTS=y
349# CONFIG_MTD_AR7_PARTS is not set
350
351#
352# User Modules And Translation Layers
353#
354CONFIG_MTD_CHAR=y
355CONFIG_MTD_BLKDEVS=y
356CONFIG_MTD_BLOCK=y
357# CONFIG_FTL is not set
358# CONFIG_NFTL is not set
359# CONFIG_INFTL is not set
360# CONFIG_RFD_FTL is not set
361# CONFIG_SSFDC is not set
362# CONFIG_MTD_OOPS is not set
363
364#
365# RAM/ROM/Flash chip drivers
366#
367CONFIG_MTD_CFI=y
368# CONFIG_MTD_JEDECPROBE is not set
369CONFIG_MTD_GEN_PROBE=y
370# CONFIG_MTD_CFI_ADV_OPTIONS is not set
371CONFIG_MTD_MAP_BANK_WIDTH_1=y
372CONFIG_MTD_MAP_BANK_WIDTH_2=y
373CONFIG_MTD_MAP_BANK_WIDTH_4=y
374# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
375# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
376# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
377CONFIG_MTD_CFI_I1=y
378CONFIG_MTD_CFI_I2=y
379# CONFIG_MTD_CFI_I4 is not set
380# CONFIG_MTD_CFI_I8 is not set
381# CONFIG_MTD_CFI_INTELEXT is not set
382CONFIG_MTD_CFI_AMDSTD=y
383# CONFIG_MTD_CFI_STAA is not set
384CONFIG_MTD_CFI_UTIL=y
385# CONFIG_MTD_RAM is not set
386# CONFIG_MTD_ROM is not set
387# CONFIG_MTD_ABSENT is not set
388
389#
390# Mapping drivers for chip access
391#
392# CONFIG_MTD_COMPLEX_MAPPINGS is not set
393CONFIG_MTD_PHYSMAP=y
394CONFIG_MTD_PHYSMAP_START=0x8000000
395CONFIG_MTD_PHYSMAP_LEN=0x0
396CONFIG_MTD_PHYSMAP_BANKWIDTH=2
397# CONFIG_MTD_PLATRAM is not set
398
399#
400# Self-contained MTD device drivers
401#
402# CONFIG_MTD_DATAFLASH is not set
403# CONFIG_MTD_M25P80 is not set
404# CONFIG_MTD_SLRAM is not set
405# CONFIG_MTD_PHRAM is not set
406# CONFIG_MTD_MTDRAM is not set
407# CONFIG_MTD_BLOCK2MTD is not set
408
409#
410# Disk-On-Chip Device Drivers
411#
412# CONFIG_MTD_DOC2000 is not set
413# CONFIG_MTD_DOC2001 is not set
414# CONFIG_MTD_DOC2001PLUS is not set
415# CONFIG_MTD_NAND is not set
416# CONFIG_MTD_ONENAND is not set
417
418#
419# UBI - Unsorted block images
420#
421# CONFIG_MTD_UBI is not set
422# CONFIG_PARPORT is not set
423CONFIG_BLK_DEV=y
424# CONFIG_BLK_DEV_COW_COMMON is not set
425CONFIG_BLK_DEV_LOOP=m
426# CONFIG_BLK_DEV_CRYPTOLOOP is not set
427CONFIG_BLK_DEV_NBD=m
428CONFIG_BLK_DEV_RAM=m
429CONFIG_BLK_DEV_RAM_COUNT=16
430CONFIG_BLK_DEV_RAM_SIZE=4096
431# CONFIG_BLK_DEV_XIP is not set
432# CONFIG_CDROM_PKTCDVD is not set
433# CONFIG_ATA_OVER_ETH is not set
434CONFIG_MISC_DEVICES=y
435CONFIG_ATMEL_PWM=m
436CONFIG_ATMEL_TCLIB=y
437CONFIG_ATMEL_TCB_CLKSRC=y
438CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
439# CONFIG_EEPROM_93CX6 is not set
440CONFIG_ATMEL_SSC=m
441# CONFIG_ENCLOSURE_SERVICES is not set
442# CONFIG_HAVE_IDE is not set
443
444#
445# SCSI device support
446#
447# CONFIG_RAID_ATTRS is not set
448# CONFIG_SCSI is not set
449# CONFIG_SCSI_DMA is not set
450# CONFIG_SCSI_NETLINK is not set
451# CONFIG_ATA is not set
452# CONFIG_MD is not set
453CONFIG_NETDEVICES=y
454# CONFIG_DUMMY is not set
455# CONFIG_BONDING is not set
456# CONFIG_MACVLAN is not set
457# CONFIG_EQUALIZER is not set
458# CONFIG_TUN is not set
459# CONFIG_VETH is not set
460CONFIG_PHYLIB=y
461
462#
463# MII PHY device drivers
464#
465# CONFIG_MARVELL_PHY is not set
466# CONFIG_DAVICOM_PHY is not set
467# CONFIG_QSEMI_PHY is not set
468# CONFIG_LXT_PHY is not set
469# CONFIG_CICADA_PHY is not set
470# CONFIG_VITESSE_PHY is not set
471# CONFIG_SMSC_PHY is not set
472# CONFIG_BROADCOM_PHY is not set
473# CONFIG_ICPLUS_PHY is not set
474# CONFIG_REALTEK_PHY is not set
475# CONFIG_FIXED_PHY is not set
476# CONFIG_MDIO_BITBANG is not set
477CONFIG_NET_ETHERNET=y
478# CONFIG_MII is not set
479CONFIG_MACB=y
480# CONFIG_ENC28J60 is not set
481# CONFIG_IBM_NEW_EMAC_ZMII is not set
482# CONFIG_IBM_NEW_EMAC_RGMII is not set
483# CONFIG_IBM_NEW_EMAC_TAH is not set
484# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
485# CONFIG_B44 is not set
486# CONFIG_NETDEV_1000 is not set
487# CONFIG_NETDEV_10000 is not set
488
489#
490# Wireless LAN
491#
492# CONFIG_WLAN_PRE80211 is not set
493# CONFIG_WLAN_80211 is not set
494# CONFIG_IWLWIFI_LEDS is not set
495# CONFIG_WAN is not set
496CONFIG_PPP=m
497# CONFIG_PPP_MULTILINK is not set
498# CONFIG_PPP_FILTER is not set
499CONFIG_PPP_ASYNC=m
500# CONFIG_PPP_SYNC_TTY is not set
501CONFIG_PPP_DEFLATE=m
502CONFIG_PPP_BSDCOMP=m
503# CONFIG_PPP_MPPE is not set
504# CONFIG_PPPOE is not set
505# CONFIG_PPPOL2TP is not set
506# CONFIG_SLIP is not set
507CONFIG_SLHC=m
508# CONFIG_NETCONSOLE is not set
509# CONFIG_NETPOLL is not set
510# CONFIG_NET_POLL_CONTROLLER is not set
511# CONFIG_ISDN is not set
512# CONFIG_PHONE is not set
513
514#
515# Input device support
516#
517CONFIG_INPUT=y
518# CONFIG_INPUT_FF_MEMLESS is not set
519CONFIG_INPUT_POLLDEV=m
520
521#
522# Userland interfaces
523#
524CONFIG_INPUT_MOUSEDEV=m
525CONFIG_INPUT_MOUSEDEV_PSAUX=y
526CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
527CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
528# CONFIG_INPUT_JOYDEV is not set
529CONFIG_INPUT_EVDEV=m
530# CONFIG_INPUT_EVBUG is not set
531
532#
533# Input Device Drivers
534#
535CONFIG_INPUT_KEYBOARD=y
536# CONFIG_KEYBOARD_ATKBD is not set
537# CONFIG_KEYBOARD_SUNKBD is not set
538# CONFIG_KEYBOARD_LKKBD is not set
539# CONFIG_KEYBOARD_XTKBD is not set
540# CONFIG_KEYBOARD_NEWTON is not set
541# CONFIG_KEYBOARD_STOWAWAY is not set
542CONFIG_KEYBOARD_GPIO=m
543CONFIG_INPUT_MOUSE=y
544# CONFIG_MOUSE_PS2 is not set
545# CONFIG_MOUSE_SERIAL is not set
546# CONFIG_MOUSE_VSXXXAA is not set
547CONFIG_MOUSE_GPIO=m
548# CONFIG_INPUT_JOYSTICK is not set
549# CONFIG_INPUT_TABLET is not set
550CONFIG_INPUT_TOUCHSCREEN=y
551CONFIG_TOUCHSCREEN_ADS7846=m
552# CONFIG_TOUCHSCREEN_FUJITSU is not set
553# CONFIG_TOUCHSCREEN_GUNZE is not set
554# CONFIG_TOUCHSCREEN_ELO is not set
555# CONFIG_TOUCHSCREEN_MTOUCH is not set
556# CONFIG_TOUCHSCREEN_INEXIO is not set
557# CONFIG_TOUCHSCREEN_MK712 is not set
558# CONFIG_TOUCHSCREEN_PENMOUNT is not set
559# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
560# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
561# CONFIG_TOUCHSCREEN_UCB1400 is not set
562# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
563# CONFIG_INPUT_MISC is not set
564
565#
566# Hardware I/O ports
567#
568# CONFIG_SERIO is not set
569# CONFIG_GAMEPORT is not set
570
571#
572# Character devices
573#
574CONFIG_VT=y
575# CONFIG_CONSOLE_TRANSLATIONS is not set
576CONFIG_VT_CONSOLE=y
577CONFIG_HW_CONSOLE=y
578# CONFIG_VT_HW_CONSOLE_BINDING is not set
579# CONFIG_DEVKMEM is not set
580# CONFIG_SERIAL_NONSTANDARD is not set
581
582#
583# Serial drivers
584#
585# CONFIG_SERIAL_8250 is not set
586
587#
588# Non-8250 serial port support
589#
590CONFIG_SERIAL_ATMEL=y
591CONFIG_SERIAL_ATMEL_CONSOLE=y
592CONFIG_SERIAL_ATMEL_PDC=y
593# CONFIG_SERIAL_ATMEL_TTYAT is not set
594CONFIG_SERIAL_CORE=y
595CONFIG_SERIAL_CORE_CONSOLE=y
596CONFIG_UNIX98_PTYS=y
597# CONFIG_LEGACY_PTYS is not set
598# CONFIG_IPMI_HANDLER is not set
599# CONFIG_HW_RANDOM is not set
600# CONFIG_R3964 is not set
601# CONFIG_RAW_DRIVER is not set
602# CONFIG_TCG_TPM is not set
603CONFIG_I2C=m
604CONFIG_I2C_BOARDINFO=y
605CONFIG_I2C_CHARDEV=m
606CONFIG_I2C_HELPER_AUTO=y
607CONFIG_I2C_ALGOBIT=m
608
609#
610# I2C Hardware Bus support
611#
612
613#
614# I2C system bus drivers (mostly embedded / system-on-chip)
615#
616CONFIG_I2C_GPIO=m
617# CONFIG_I2C_OCORES is not set
618# CONFIG_I2C_SIMTEC is not set
619
620#
621# External I2C/SMBus adapter drivers
622#
623# CONFIG_I2C_PARPORT_LIGHT is not set
624# CONFIG_I2C_TAOS_EVM is not set
625
626#
627# Other I2C/SMBus bus drivers
628#
629# CONFIG_I2C_PCA_PLATFORM is not set
630# CONFIG_I2C_STUB is not set
631
632#
633# Miscellaneous I2C Chip support
634#
635# CONFIG_DS1682 is not set
636# CONFIG_AT24 is not set
637# CONFIG_SENSORS_EEPROM is not set
638# CONFIG_SENSORS_PCF8574 is not set
639# CONFIG_PCF8575 is not set
640# CONFIG_SENSORS_PCA9539 is not set
641# CONFIG_SENSORS_PCF8591 is not set
642# CONFIG_TPS65010 is not set
643# CONFIG_SENSORS_MAX6875 is not set
644# CONFIG_SENSORS_TSL2550 is not set
645# CONFIG_I2C_DEBUG_CORE is not set
646# CONFIG_I2C_DEBUG_ALGO is not set
647# CONFIG_I2C_DEBUG_BUS is not set
648# CONFIG_I2C_DEBUG_CHIP is not set
649CONFIG_SPI=y
650# CONFIG_SPI_DEBUG is not set
651CONFIG_SPI_MASTER=y
652
653#
654# SPI Master Controller Drivers
655#
656CONFIG_SPI_ATMEL=y
657# CONFIG_SPI_BITBANG is not set
658
659#
660# SPI Protocol Masters
661#
662# CONFIG_SPI_AT25 is not set
663CONFIG_SPI_SPIDEV=m
664# CONFIG_SPI_TLE62X0 is not set
665CONFIG_ARCH_REQUIRE_GPIOLIB=y
666CONFIG_GPIOLIB=y
667# CONFIG_DEBUG_GPIO is not set
668CONFIG_GPIO_SYSFS=y
669
670#
671# I2C GPIO expanders:
672#
673# CONFIG_GPIO_MAX732X is not set
674# CONFIG_GPIO_PCA953X is not set
675# CONFIG_GPIO_PCF857X is not set
676
677#
678# PCI GPIO expanders:
679#
680
681#
682# SPI GPIO expanders:
683#
684# CONFIG_GPIO_MAX7301 is not set
685# CONFIG_GPIO_MCP23S08 is not set
686# CONFIG_W1 is not set
687# CONFIG_POWER_SUPPLY is not set
688# CONFIG_HWMON is not set
689# CONFIG_THERMAL is not set
690# CONFIG_THERMAL_HWMON is not set
691CONFIG_WATCHDOG=y
692# CONFIG_WATCHDOG_NOWAYOUT is not set
693
694#
695# Watchdog Device Drivers
696#
697# CONFIG_SOFT_WATCHDOG is not set
698CONFIG_AT32AP700X_WDT=y
699
700#
701# Sonics Silicon Backplane
702#
703CONFIG_SSB_POSSIBLE=y
704# CONFIG_SSB is not set
705
706#
707# Multifunction device drivers
708#
709# CONFIG_MFD_CORE is not set
710# CONFIG_MFD_SM501 is not set
711# CONFIG_HTC_PASIC3 is not set
712# CONFIG_MFD_TMIO is not set
713
714#
715# Multimedia devices
716#
717
718#
719# Multimedia core support
720#
721# CONFIG_VIDEO_DEV is not set
722# CONFIG_DVB_CORE is not set
723# CONFIG_VIDEO_MEDIA is not set
724
725#
726# Multimedia drivers
727#
728# CONFIG_DAB is not set
729
730#
731# Graphics support
732#
733# CONFIG_VGASTATE is not set
734# CONFIG_VIDEO_OUTPUT_CONTROL is not set
735CONFIG_FB=y
736# CONFIG_FIRMWARE_EDID is not set
737# CONFIG_FB_DDC is not set
738CONFIG_FB_CFB_FILLRECT=y
739CONFIG_FB_CFB_COPYAREA=y
740CONFIG_FB_CFB_IMAGEBLIT=y
741# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
742# CONFIG_FB_SYS_FILLRECT is not set
743# CONFIG_FB_SYS_COPYAREA is not set
744# CONFIG_FB_SYS_IMAGEBLIT is not set
745# CONFIG_FB_FOREIGN_ENDIAN is not set
746# CONFIG_FB_SYS_FOPS is not set
747# CONFIG_FB_SVGALIB is not set
748# CONFIG_FB_MACMODES is not set
749# CONFIG_FB_BACKLIGHT is not set
750# CONFIG_FB_MODE_HELPERS is not set
751# CONFIG_FB_TILEBLITTING is not set
752
753#
754# Frame buffer hardware drivers
755#
756# CONFIG_FB_S1D13XXX is not set
757CONFIG_FB_ATMEL=y
758# CONFIG_FB_VIRTUAL is not set
759CONFIG_BACKLIGHT_LCD_SUPPORT=y
760# CONFIG_LCD_CLASS_DEVICE is not set
761CONFIG_BACKLIGHT_CLASS_DEVICE=m
762# CONFIG_BACKLIGHT_ATMEL_LCDC is not set
763CONFIG_BACKLIGHT_ATMEL_PWM=m
764# CONFIG_BACKLIGHT_CORGI is not set
765
766#
767# Display device support
768#
769# CONFIG_DISPLAY_SUPPORT is not set
770
771#
772# Console display driver support
773#
774CONFIG_DUMMY_CONSOLE=y
775# CONFIG_FRAMEBUFFER_CONSOLE is not set
776# CONFIG_LOGO is not set
777CONFIG_SOUND=m
778# CONFIG_SND is not set
779CONFIG_SOUND_PRIME=m
780# CONFIG_HID_SUPPORT is not set
781CONFIG_USB_SUPPORT=y
782# CONFIG_USB_ARCH_HAS_HCD is not set
783# CONFIG_USB_ARCH_HAS_OHCI is not set
784# CONFIG_USB_ARCH_HAS_EHCI is not set
785# CONFIG_USB_OTG_WHITELIST is not set
786# CONFIG_USB_OTG_BLACKLIST_HUB is not set
787# CONFIG_USB_MUSB_HDRC is not set
788# CONFIG_USB_GADGET_MUSB_HDRC is not set
789
790#
791# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
792#
793CONFIG_USB_GADGET=y
794# CONFIG_USB_GADGET_DEBUG is not set
795# CONFIG_USB_GADGET_DEBUG_FILES is not set
796# CONFIG_USB_GADGET_DEBUG_FS is not set
797CONFIG_USB_GADGET_SELECTED=y
798# CONFIG_USB_GADGET_AMD5536UDC is not set
799CONFIG_USB_GADGET_ATMEL_USBA=y
800CONFIG_USB_ATMEL_USBA=y
801# CONFIG_USB_GADGET_FSL_USB2 is not set
802# CONFIG_USB_GADGET_NET2280 is not set
803# CONFIG_USB_GADGET_PXA25X is not set
804# CONFIG_USB_GADGET_M66592 is not set
805# CONFIG_USB_GADGET_PXA27X is not set
806# CONFIG_USB_GADGET_GOKU is not set
807# CONFIG_USB_GADGET_LH7A40X is not set
808# CONFIG_USB_GADGET_OMAP is not set
809# CONFIG_USB_GADGET_S3C2410 is not set
810# CONFIG_USB_GADGET_AT91 is not set
811# CONFIG_USB_GADGET_DUMMY_HCD is not set
812CONFIG_USB_GADGET_DUALSPEED=y
813CONFIG_USB_ZERO=m
814CONFIG_USB_ETH=m
815CONFIG_USB_ETH_RNDIS=y
816CONFIG_USB_GADGETFS=m
817CONFIG_USB_FILE_STORAGE=m
818# CONFIG_USB_FILE_STORAGE_TEST is not set
819CONFIG_USB_G_SERIAL=m
820# CONFIG_USB_MIDI_GADGET is not set
821# CONFIG_USB_G_PRINTER is not set
822CONFIG_USB_CDC_COMPOSITE=m
823CONFIG_MMC=y
824# CONFIG_MMC_DEBUG is not set
825# CONFIG_MMC_UNSAFE_RESUME is not set
826
827#
828# MMC/SD Card Drivers
829#
830CONFIG_MMC_BLOCK=y
831CONFIG_MMC_BLOCK_BOUNCE=y
832# CONFIG_SDIO_UART is not set
833# CONFIG_MMC_TEST is not set
834
835#
836# MMC/SD Host Controller Drivers
837#
838# CONFIG_MMC_SDHCI is not set
839CONFIG_MMC_ATMELMCI=y
840CONFIG_MMC_ATMELMCI_DMA=y
841# CONFIG_MMC_SPI is not set
842# CONFIG_MEMSTICK is not set
843CONFIG_NEW_LEDS=y
844CONFIG_LEDS_CLASS=y
845
846#
847# LED drivers
848#
849CONFIG_LEDS_ATMEL_PWM=m
850# CONFIG_LEDS_PCA9532 is not set
851CONFIG_LEDS_GPIO=y
852# CONFIG_LEDS_PCA955X is not set
853
854#
855# LED Triggers
856#
857CONFIG_LEDS_TRIGGERS=y
858CONFIG_LEDS_TRIGGER_TIMER=y
859CONFIG_LEDS_TRIGGER_HEARTBEAT=y
860CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
861# CONFIG_ACCESSIBILITY is not set
862CONFIG_RTC_LIB=y
863CONFIG_RTC_CLASS=y
864CONFIG_RTC_HCTOSYS=y
865CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
866# CONFIG_RTC_DEBUG is not set
867
868#
869# RTC interfaces
870#
871CONFIG_RTC_INTF_SYSFS=y
872CONFIG_RTC_INTF_PROC=y
873CONFIG_RTC_INTF_DEV=y
874# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
875# CONFIG_RTC_DRV_TEST is not set
876
877#
878# I2C RTC drivers
879#
880# CONFIG_RTC_DRV_DS1307 is not set
881# CONFIG_RTC_DRV_DS1374 is not set
882# CONFIG_RTC_DRV_DS1672 is not set
883# CONFIG_RTC_DRV_MAX6900 is not set
884# CONFIG_RTC_DRV_RS5C372 is not set
885# CONFIG_RTC_DRV_ISL1208 is not set
886# CONFIG_RTC_DRV_X1205 is not set
887# CONFIG_RTC_DRV_PCF8563 is not set
888# CONFIG_RTC_DRV_PCF8583 is not set
889# CONFIG_RTC_DRV_M41T80 is not set
890# CONFIG_RTC_DRV_S35390A is not set
891# CONFIG_RTC_DRV_FM3130 is not set
892
893#
894# SPI RTC drivers
895#
896# CONFIG_RTC_DRV_M41T94 is not set
897# CONFIG_RTC_DRV_DS1305 is not set
898# CONFIG_RTC_DRV_MAX6902 is not set
899# CONFIG_RTC_DRV_R9701 is not set
900# CONFIG_RTC_DRV_RS5C348 is not set
901
902#
903# Platform RTC drivers
904#
905# CONFIG_RTC_DRV_DS1511 is not set
906# CONFIG_RTC_DRV_DS1553 is not set
907# CONFIG_RTC_DRV_DS1742 is not set
908# CONFIG_RTC_DRV_STK17TA8 is not set
909# CONFIG_RTC_DRV_M48T86 is not set
910# CONFIG_RTC_DRV_M48T59 is not set
911# CONFIG_RTC_DRV_V3020 is not set
912
913#
914# on-CPU RTC drivers
915#
916CONFIG_RTC_DRV_AT32AP700X=y
917CONFIG_DMADEVICES=y
918
919#
920# DMA Devices
921#
922CONFIG_DW_DMAC=y
923CONFIG_DMA_ENGINE=y
924
925#
926# DMA Clients
927#
928# CONFIG_NET_DMA is not set
929# CONFIG_DMATEST is not set
930# CONFIG_UIO is not set
931
932#
933# File systems
934#
935CONFIG_EXT2_FS=y
936# CONFIG_EXT2_FS_XATTR is not set
937# CONFIG_EXT2_FS_XIP is not set
938CONFIG_EXT3_FS=y
939# CONFIG_EXT3_FS_XATTR is not set
940# CONFIG_EXT4DEV_FS is not set
941CONFIG_JBD=y
942# CONFIG_JBD_DEBUG is not set
943# CONFIG_REISERFS_FS is not set
944# CONFIG_JFS_FS is not set
945# CONFIG_FS_POSIX_ACL is not set
946# CONFIG_XFS_FS is not set
947# CONFIG_OCFS2_FS is not set
948# CONFIG_DNOTIFY is not set
949CONFIG_INOTIFY=y
950CONFIG_INOTIFY_USER=y
951# CONFIG_QUOTA is not set
952# CONFIG_AUTOFS_FS is not set
953# CONFIG_AUTOFS4_FS is not set
954CONFIG_FUSE_FS=m
955
956#
957# CD-ROM/DVD Filesystems
958#
959# CONFIG_ISO9660_FS is not set
960# CONFIG_UDF_FS is not set
961
962#
963# DOS/FAT/NT Filesystems
964#
965CONFIG_FAT_FS=m
966CONFIG_MSDOS_FS=m
967CONFIG_VFAT_FS=m
968CONFIG_FAT_DEFAULT_CODEPAGE=437
969CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
970# CONFIG_NTFS_FS is not set
971
972#
973# Pseudo filesystems
974#
975CONFIG_PROC_FS=y
976CONFIG_PROC_KCORE=y
977CONFIG_PROC_SYSCTL=y
978CONFIG_SYSFS=y
979CONFIG_TMPFS=y
980# CONFIG_TMPFS_POSIX_ACL is not set
981# CONFIG_HUGETLB_PAGE is not set
982CONFIG_CONFIGFS_FS=y
983
984#
985# Miscellaneous filesystems
986#
987# CONFIG_ADFS_FS is not set
988# CONFIG_AFFS_FS is not set
989# CONFIG_HFS_FS is not set
990# CONFIG_HFSPLUS_FS is not set
991# CONFIG_BEFS_FS is not set
992# CONFIG_BFS_FS is not set
993# CONFIG_EFS_FS is not set
994CONFIG_JFFS2_FS=y
995CONFIG_JFFS2_FS_DEBUG=0
996# CONFIG_JFFS2_FS_WRITEBUFFER is not set
997# CONFIG_JFFS2_SUMMARY is not set
998# CONFIG_JFFS2_FS_XATTR is not set
999# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1000CONFIG_JFFS2_ZLIB=y
1001# CONFIG_JFFS2_LZO is not set
1002CONFIG_JFFS2_RTIME=y
1003# CONFIG_JFFS2_RUBIN is not set
1004# CONFIG_CRAMFS is not set
1005# CONFIG_VXFS_FS is not set
1006# CONFIG_MINIX_FS is not set
1007# CONFIG_OMFS_FS is not set
1008# CONFIG_HPFS_FS is not set
1009# CONFIG_QNX4FS_FS is not set
1010# CONFIG_ROMFS_FS is not set
1011# CONFIG_SYSV_FS is not set
1012# CONFIG_UFS_FS is not set
1013CONFIG_NETWORK_FILESYSTEMS=y
1014CONFIG_NFS_FS=y
1015CONFIG_NFS_V3=y
1016# CONFIG_NFS_V3_ACL is not set
1017# CONFIG_NFS_V4 is not set
1018CONFIG_ROOT_NFS=y
1019# CONFIG_NFSD is not set
1020CONFIG_LOCKD=y
1021CONFIG_LOCKD_V4=y
1022CONFIG_NFS_COMMON=y
1023CONFIG_SUNRPC=y
1024# CONFIG_RPCSEC_GSS_KRB5 is not set
1025# CONFIG_RPCSEC_GSS_SPKM3 is not set
1026# CONFIG_SMB_FS is not set
1027# CONFIG_CIFS is not set
1028# CONFIG_NCP_FS is not set
1029# CONFIG_CODA_FS is not set
1030# CONFIG_AFS_FS is not set
1031
1032#
1033# Partition Types
1034#
1035# CONFIG_PARTITION_ADVANCED is not set
1036CONFIG_MSDOS_PARTITION=y
1037CONFIG_NLS=m
1038CONFIG_NLS_DEFAULT="iso8859-1"
1039CONFIG_NLS_CODEPAGE_437=m
1040# CONFIG_NLS_CODEPAGE_737 is not set
1041# CONFIG_NLS_CODEPAGE_775 is not set
1042# CONFIG_NLS_CODEPAGE_850 is not set
1043# CONFIG_NLS_CODEPAGE_852 is not set
1044# CONFIG_NLS_CODEPAGE_855 is not set
1045# CONFIG_NLS_CODEPAGE_857 is not set
1046# CONFIG_NLS_CODEPAGE_860 is not set
1047# CONFIG_NLS_CODEPAGE_861 is not set
1048# CONFIG_NLS_CODEPAGE_862 is not set
1049# CONFIG_NLS_CODEPAGE_863 is not set
1050# CONFIG_NLS_CODEPAGE_864 is not set
1051# CONFIG_NLS_CODEPAGE_865 is not set
1052# CONFIG_NLS_CODEPAGE_866 is not set
1053# CONFIG_NLS_CODEPAGE_869 is not set
1054# CONFIG_NLS_CODEPAGE_936 is not set
1055# CONFIG_NLS_CODEPAGE_950 is not set
1056# CONFIG_NLS_CODEPAGE_932 is not set
1057# CONFIG_NLS_CODEPAGE_949 is not set
1058# CONFIG_NLS_CODEPAGE_874 is not set
1059# CONFIG_NLS_ISO8859_8 is not set
1060# CONFIG_NLS_CODEPAGE_1250 is not set
1061# CONFIG_NLS_CODEPAGE_1251 is not set
1062# CONFIG_NLS_ASCII is not set
1063CONFIG_NLS_ISO8859_1=m
1064# CONFIG_NLS_ISO8859_2 is not set
1065# CONFIG_NLS_ISO8859_3 is not set
1066# CONFIG_NLS_ISO8859_4 is not set
1067# CONFIG_NLS_ISO8859_5 is not set
1068# CONFIG_NLS_ISO8859_6 is not set
1069# CONFIG_NLS_ISO8859_7 is not set
1070# CONFIG_NLS_ISO8859_9 is not set
1071# CONFIG_NLS_ISO8859_13 is not set
1072# CONFIG_NLS_ISO8859_14 is not set
1073# CONFIG_NLS_ISO8859_15 is not set
1074# CONFIG_NLS_KOI8_R is not set
1075# CONFIG_NLS_KOI8_U is not set
1076CONFIG_NLS_UTF8=m
1077# CONFIG_DLM is not set
1078
1079#
1080# Kernel hacking
1081#
1082# CONFIG_PRINTK_TIME is not set
1083CONFIG_ENABLE_WARN_DEPRECATED=y
1084CONFIG_ENABLE_MUST_CHECK=y
1085CONFIG_FRAME_WARN=1024
1086CONFIG_MAGIC_SYSRQ=y
1087# CONFIG_UNUSED_SYMBOLS is not set
1088CONFIG_DEBUG_FS=y
1089# CONFIG_HEADERS_CHECK is not set
1090CONFIG_DEBUG_KERNEL=y
1091# CONFIG_DEBUG_SHIRQ is not set
1092CONFIG_DETECT_SOFTLOCKUP=y
1093# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1094CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1095CONFIG_SCHED_DEBUG=y
1096# CONFIG_SCHEDSTATS is not set
1097# CONFIG_TIMER_STATS is not set
1098# CONFIG_DEBUG_OBJECTS is not set
1099# CONFIG_SLUB_DEBUG_ON is not set
1100# CONFIG_SLUB_STATS is not set
1101# CONFIG_DEBUG_RT_MUTEXES is not set
1102# CONFIG_RT_MUTEX_TESTER is not set
1103# CONFIG_DEBUG_SPINLOCK is not set
1104# CONFIG_DEBUG_MUTEXES is not set
1105# CONFIG_DEBUG_LOCK_ALLOC is not set
1106# CONFIG_PROVE_LOCKING is not set
1107# CONFIG_LOCK_STAT is not set
1108# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1109# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1110# CONFIG_DEBUG_KOBJECT is not set
1111CONFIG_DEBUG_BUGVERBOSE=y
1112# CONFIG_DEBUG_INFO is not set
1113# CONFIG_DEBUG_VM is not set
1114# CONFIG_DEBUG_WRITECOUNT is not set
1115# CONFIG_DEBUG_MEMORY_INIT is not set
1116# CONFIG_DEBUG_LIST is not set
1117# CONFIG_DEBUG_SG is not set
1118CONFIG_FRAME_POINTER=y
1119# CONFIG_BOOT_PRINTK_DELAY is not set
1120# CONFIG_RCU_TORTURE_TEST is not set
1121# CONFIG_KPROBES_SANITY_TEST is not set
1122# CONFIG_BACKTRACE_SELF_TEST is not set
1123# CONFIG_LKDTM is not set
1124# CONFIG_FAULT_INJECTION is not set
1125# CONFIG_SAMPLES is not set
1126
1127#
1128# Security options
1129#
1130# CONFIG_KEYS is not set
1131# CONFIG_SECURITY is not set
1132# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1133CONFIG_CRYPTO=y
1134
1135#
1136# Crypto core or helper
1137#
1138CONFIG_CRYPTO_ALGAPI=m
1139CONFIG_CRYPTO_AEAD=m
1140CONFIG_CRYPTO_BLKCIPHER=m
1141CONFIG_CRYPTO_HASH=m
1142CONFIG_CRYPTO_MANAGER=m
1143# CONFIG_CRYPTO_GF128MUL is not set
1144# CONFIG_CRYPTO_NULL is not set
1145# CONFIG_CRYPTO_CRYPTD is not set
1146CONFIG_CRYPTO_AUTHENC=m
1147# CONFIG_CRYPTO_TEST is not set
1148
1149#
1150# Authenticated Encryption with Associated Data
1151#
1152# CONFIG_CRYPTO_CCM is not set
1153# CONFIG_CRYPTO_GCM is not set
1154# CONFIG_CRYPTO_SEQIV is not set
1155
1156#
1157# Block modes
1158#
1159CONFIG_CRYPTO_CBC=m
1160# CONFIG_CRYPTO_CTR is not set
1161# CONFIG_CRYPTO_CTS is not set
1162# CONFIG_CRYPTO_ECB is not set
1163# CONFIG_CRYPTO_LRW is not set
1164# CONFIG_CRYPTO_PCBC is not set
1165# CONFIG_CRYPTO_XTS is not set
1166
1167#
1168# Hash modes
1169#
1170CONFIG_CRYPTO_HMAC=m
1171# CONFIG_CRYPTO_XCBC is not set
1172
1173#
1174# Digest
1175#
1176# CONFIG_CRYPTO_CRC32C is not set
1177# CONFIG_CRYPTO_MD4 is not set
1178CONFIG_CRYPTO_MD5=m
1179# CONFIG_CRYPTO_MICHAEL_MIC is not set
1180# CONFIG_CRYPTO_RMD128 is not set
1181# CONFIG_CRYPTO_RMD160 is not set
1182# CONFIG_CRYPTO_RMD256 is not set
1183# CONFIG_CRYPTO_RMD320 is not set
1184CONFIG_CRYPTO_SHA1=m
1185# CONFIG_CRYPTO_SHA256 is not set
1186# CONFIG_CRYPTO_SHA512 is not set
1187# CONFIG_CRYPTO_TGR192 is not set
1188# CONFIG_CRYPTO_WP512 is not set
1189
1190#
1191# Ciphers
1192#
1193# CONFIG_CRYPTO_AES is not set
1194# CONFIG_CRYPTO_ANUBIS is not set
1195# CONFIG_CRYPTO_ARC4 is not set
1196# CONFIG_CRYPTO_BLOWFISH is not set
1197# CONFIG_CRYPTO_CAMELLIA is not set
1198# CONFIG_CRYPTO_CAST5 is not set
1199# CONFIG_CRYPTO_CAST6 is not set
1200CONFIG_CRYPTO_DES=m
1201# CONFIG_CRYPTO_FCRYPT is not set
1202# CONFIG_CRYPTO_KHAZAD is not set
1203# CONFIG_CRYPTO_SALSA20 is not set
1204# CONFIG_CRYPTO_SEED is not set
1205# CONFIG_CRYPTO_SERPENT is not set
1206# CONFIG_CRYPTO_TEA is not set
1207# CONFIG_CRYPTO_TWOFISH is not set
1208
1209#
1210# Compression
1211#
1212CONFIG_CRYPTO_DEFLATE=m
1213# CONFIG_CRYPTO_LZO is not set
1214# CONFIG_CRYPTO_HW is not set
1215
1216#
1217# Library routines
1218#
1219CONFIG_BITREVERSE=y
1220# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1221# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1222CONFIG_CRC_CCITT=m
1223# CONFIG_CRC16 is not set
1224# CONFIG_CRC_T10DIF is not set
1225# CONFIG_CRC_ITU_T is not set
1226CONFIG_CRC32=y
1227# CONFIG_CRC7 is not set
1228# CONFIG_LIBCRC32C is not set
1229CONFIG_ZLIB_INFLATE=y
1230CONFIG_ZLIB_DEFLATE=y
1231CONFIG_GENERIC_ALLOCATOR=y
1232CONFIG_PLIST=y
1233CONFIG_HAS_IOMEM=y
1234CONFIG_HAS_IOPORT=y
1235CONFIG_HAS_DMA=y
diff --git a/arch/avr32/configs/mimc200_defconfig b/arch/avr32/configs/mimc200_defconfig
new file mode 100644
index 000000000000..981e4f8b8aeb
--- /dev/null
+++ b/arch/avr32/configs/mimc200_defconfig
@@ -0,0 +1,1109 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.27-rc8
4# Mon Oct 13 15:46:53 2008
5#
6CONFIG_AVR32=y
7CONFIG_GENERIC_GPIO=y
8CONFIG_GENERIC_HARDIRQS=y
9CONFIG_STACKTRACE_SUPPORT=y
10CONFIG_LOCKDEP_SUPPORT=y
11CONFIG_TRACE_IRQFLAGS_SUPPORT=y
12CONFIG_HARDIRQS_SW_RESEND=y
13CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_RWSEM_GENERIC_SPINLOCK=y
15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_GENERIC_HWEIGHT=y
21CONFIG_GENERIC_CALIBRATE_DELAY=y
22CONFIG_GENERIC_BUG=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24
25#
26# General setup
27#
28CONFIG_EXPERIMENTAL=y
29CONFIG_BROKEN_ON_SMP=y
30CONFIG_INIT_ENV_ARG_LIMIT=32
31CONFIG_LOCALVERSION=""
32# CONFIG_LOCALVERSION_AUTO is not set
33CONFIG_SWAP=y
34CONFIG_SYSVIPC=y
35CONFIG_SYSVIPC_SYSCTL=y
36CONFIG_POSIX_MQUEUE=y
37CONFIG_BSD_PROCESS_ACCT=y
38CONFIG_BSD_PROCESS_ACCT_V3=y
39# CONFIG_TASKSTATS is not set
40# CONFIG_AUDIT is not set
41# CONFIG_IKCONFIG is not set
42CONFIG_LOG_BUF_SHIFT=14
43# CONFIG_CGROUPS is not set
44# CONFIG_GROUP_SCHED is not set
45CONFIG_SYSFS_DEPRECATED=y
46CONFIG_SYSFS_DEPRECATED_V2=y
47# CONFIG_RELAY is not set
48# CONFIG_NAMESPACES is not set
49CONFIG_BLK_DEV_INITRD=y
50CONFIG_INITRAMFS_SOURCE=""
51CONFIG_CC_OPTIMIZE_FOR_SIZE=y
52CONFIG_SYSCTL=y
53CONFIG_EMBEDDED=y
54# CONFIG_SYSCTL_SYSCALL is not set
55CONFIG_KALLSYMS=y
56# CONFIG_KALLSYMS_ALL is not set
57# CONFIG_KALLSYMS_EXTRA_PASS is not set
58CONFIG_HOTPLUG=y
59CONFIG_PRINTK=y
60CONFIG_BUG=y
61CONFIG_ELF_CORE=y
62# CONFIG_COMPAT_BRK is not set
63# CONFIG_BASE_FULL is not set
64CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y
66CONFIG_EPOLL=y
67CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y
70CONFIG_SHMEM=y
71CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLUB_DEBUG=y
73# CONFIG_SLAB is not set
74CONFIG_SLUB=y
75# CONFIG_SLOB is not set
76CONFIG_PROFILING=y
77# CONFIG_MARKERS is not set
78# CONFIG_OPROFILE is not set
79CONFIG_HAVE_OPROFILE=y
80# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
81# CONFIG_HAVE_IOREMAP_PROT is not set
82CONFIG_HAVE_KPROBES=y
83# CONFIG_HAVE_KRETPROBES is not set
84# CONFIG_HAVE_ARCH_TRACEHOOK is not set
85# CONFIG_HAVE_DMA_ATTRS is not set
86# CONFIG_USE_GENERIC_SMP_HELPERS is not set
87CONFIG_HAVE_CLK=y
88CONFIG_PROC_PAGE_MONITOR=y
89# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
90CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y
92# CONFIG_TINY_SHMEM is not set
93CONFIG_BASE_SMALL=1
94# CONFIG_MODULES is not set
95CONFIG_BLOCK=y
96# CONFIG_LBD is not set
97# CONFIG_BLK_DEV_IO_TRACE is not set
98# CONFIG_LSF is not set
99# CONFIG_BLK_DEV_BSG is not set
100# CONFIG_BLK_DEV_INTEGRITY is not set
101
102#
103# IO Schedulers
104#
105CONFIG_IOSCHED_NOOP=y
106# CONFIG_IOSCHED_AS is not set
107# CONFIG_IOSCHED_DEADLINE is not set
108CONFIG_IOSCHED_CFQ=y
109# CONFIG_DEFAULT_AS is not set
110# CONFIG_DEFAULT_DEADLINE is not set
111CONFIG_DEFAULT_CFQ=y
112# CONFIG_DEFAULT_NOOP is not set
113CONFIG_DEFAULT_IOSCHED="cfq"
114CONFIG_CLASSIC_RCU=y
115
116#
117# System Type and features
118#
119CONFIG_TICK_ONESHOT=y
120CONFIG_NO_HZ=y
121CONFIG_HIGH_RES_TIMERS=y
122CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
123CONFIG_SUBARCH_AVR32B=y
124CONFIG_MMU=y
125CONFIG_PERFORMANCE_COUNTERS=y
126CONFIG_PLATFORM_AT32AP=y
127CONFIG_CPU_AT32AP700X=y
128CONFIG_CPU_AT32AP7000=y
129# CONFIG_BOARD_ATSTK1000 is not set
130# CONFIG_BOARD_ATNGW100 is not set
131CONFIG_BOARD_MIMC200=y
132CONFIG_LOADER_U_BOOT=y
133
134#
135# Atmel AVR32 AP options
136#
137# CONFIG_AP700X_32_BIT_SMC is not set
138CONFIG_AP700X_16_BIT_SMC=y
139# CONFIG_AP700X_8_BIT_SMC is not set
140CONFIG_LOAD_ADDRESS=0x10000000
141CONFIG_ENTRY_ADDRESS=0x90000000
142CONFIG_PHYS_OFFSET=0x10000000
143CONFIG_PREEMPT_NONE=y
144# CONFIG_PREEMPT_VOLUNTARY is not set
145# CONFIG_PREEMPT is not set
146CONFIG_QUICKLIST=y
147# CONFIG_HAVE_ARCH_BOOTMEM_NODE is not set
148# CONFIG_ARCH_HAVE_MEMORY_PRESENT is not set
149# CONFIG_NEED_NODE_MEMMAP_SIZE is not set
150CONFIG_ARCH_FLATMEM_ENABLE=y
151# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
152# CONFIG_ARCH_SPARSEMEM_ENABLE is not set
153CONFIG_SELECT_MEMORY_MODEL=y
154CONFIG_FLATMEM_MANUAL=y
155# CONFIG_DISCONTIGMEM_MANUAL is not set
156# CONFIG_SPARSEMEM_MANUAL is not set
157CONFIG_FLATMEM=y
158CONFIG_FLAT_NODE_MEM_MAP=y
159# CONFIG_SPARSEMEM_STATIC is not set
160# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
161CONFIG_PAGEFLAGS_EXTENDED=y
162CONFIG_SPLIT_PTLOCK_CPUS=4
163# CONFIG_RESOURCES_64BIT is not set
164CONFIG_ZONE_DMA_FLAG=0
165CONFIG_NR_QUICK=2
166CONFIG_VIRT_TO_BUS=y
167# CONFIG_OWNERSHIP_TRACE is not set
168CONFIG_NMI_DEBUGGING=y
169# CONFIG_HZ_100 is not set
170CONFIG_HZ_250=y
171# CONFIG_HZ_300 is not set
172# CONFIG_HZ_1000 is not set
173CONFIG_HZ=250
174CONFIG_SCHED_HRTICK=y
175CONFIG_CMDLINE=""
176
177#
178# Power management options
179#
180CONFIG_PM=y
181# CONFIG_PM_DEBUG is not set
182CONFIG_PM_SLEEP=y
183CONFIG_SUSPEND=y
184CONFIG_SUSPEND_FREEZER=y
185CONFIG_ARCH_SUSPEND_POSSIBLE=y
186
187#
188# CPU Frequency scaling
189#
190CONFIG_CPU_FREQ=y
191CONFIG_CPU_FREQ_TABLE=y
192# CONFIG_CPU_FREQ_DEBUG is not set
193# CONFIG_CPU_FREQ_STAT is not set
194# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
195# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
196# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
197CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
198# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
199CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
200# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
201CONFIG_CPU_FREQ_GOV_USERSPACE=y
202CONFIG_CPU_FREQ_GOV_ONDEMAND=y
203# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
204CONFIG_CPU_FREQ_AT32AP=y
205
206#
207# Bus options
208#
209# CONFIG_ARCH_SUPPORTS_MSI is not set
210# CONFIG_PCCARD is not set
211
212#
213# Executable file formats
214#
215CONFIG_BINFMT_ELF=y
216# CONFIG_BINFMT_MISC is not set
217CONFIG_NET=y
218
219#
220# Networking options
221#
222CONFIG_PACKET=y
223CONFIG_PACKET_MMAP=y
224CONFIG_UNIX=y
225CONFIG_XFRM=y
226CONFIG_XFRM_USER=y
227# CONFIG_XFRM_SUB_POLICY is not set
228# CONFIG_XFRM_MIGRATE is not set
229# CONFIG_XFRM_STATISTICS is not set
230CONFIG_XFRM_IPCOMP=y
231CONFIG_NET_KEY=y
232# CONFIG_NET_KEY_MIGRATE is not set
233CONFIG_INET=y
234CONFIG_IP_MULTICAST=y
235CONFIG_IP_ADVANCED_ROUTER=y
236CONFIG_ASK_IP_FIB_HASH=y
237# CONFIG_IP_FIB_TRIE is not set
238CONFIG_IP_FIB_HASH=y
239# CONFIG_IP_MULTIPLE_TABLES is not set
240# CONFIG_IP_ROUTE_MULTIPATH is not set
241# CONFIG_IP_ROUTE_VERBOSE is not set
242CONFIG_IP_PNP=y
243CONFIG_IP_PNP_DHCP=y
244# CONFIG_IP_PNP_BOOTP is not set
245# CONFIG_IP_PNP_RARP is not set
246# CONFIG_NET_IPIP is not set
247# CONFIG_NET_IPGRE is not set
248CONFIG_IP_MROUTE=y
249CONFIG_IP_PIMSM_V1=y
250# CONFIG_IP_PIMSM_V2 is not set
251# CONFIG_ARPD is not set
252CONFIG_SYN_COOKIES=y
253CONFIG_INET_AH=y
254CONFIG_INET_ESP=y
255CONFIG_INET_IPCOMP=y
256CONFIG_INET_XFRM_TUNNEL=y
257CONFIG_INET_TUNNEL=y
258CONFIG_INET_XFRM_MODE_TRANSPORT=y
259CONFIG_INET_XFRM_MODE_TUNNEL=y
260CONFIG_INET_XFRM_MODE_BEET=y
261# CONFIG_INET_LRO is not set
262CONFIG_INET_DIAG=y
263CONFIG_INET_TCP_DIAG=y
264# CONFIG_TCP_CONG_ADVANCED is not set
265CONFIG_TCP_CONG_CUBIC=y
266CONFIG_DEFAULT_TCP_CONG="cubic"
267# CONFIG_TCP_MD5SIG is not set
268CONFIG_IPV6=y
269# CONFIG_IPV6_PRIVACY is not set
270# CONFIG_IPV6_ROUTER_PREF is not set
271# CONFIG_IPV6_OPTIMISTIC_DAD is not set
272CONFIG_INET6_AH=y
273CONFIG_INET6_ESP=y
274CONFIG_INET6_IPCOMP=y
275# CONFIG_IPV6_MIP6 is not set
276CONFIG_INET6_XFRM_TUNNEL=y
277CONFIG_INET6_TUNNEL=y
278CONFIG_INET6_XFRM_MODE_TRANSPORT=y
279CONFIG_INET6_XFRM_MODE_TUNNEL=y
280CONFIG_INET6_XFRM_MODE_BEET=y
281# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
282CONFIG_IPV6_SIT=y
283CONFIG_IPV6_NDISC_NODETYPE=y
284# CONFIG_IPV6_TUNNEL is not set
285# CONFIG_IPV6_MULTIPLE_TABLES is not set
286# CONFIG_IPV6_MROUTE is not set
287# CONFIG_NETWORK_SECMARK is not set
288# CONFIG_NETFILTER is not set
289# CONFIG_IP_DCCP is not set
290# CONFIG_IP_SCTP is not set
291# CONFIG_TIPC is not set
292# CONFIG_ATM is not set
293# CONFIG_BRIDGE is not set
294# CONFIG_VLAN_8021Q is not set
295# CONFIG_DECNET is not set
296# CONFIG_LLC2 is not set
297# CONFIG_IPX is not set
298# CONFIG_ATALK is not set
299# CONFIG_X25 is not set
300# CONFIG_LAPB is not set
301# CONFIG_ECONET is not set
302# CONFIG_WAN_ROUTER is not set
303# CONFIG_NET_SCHED is not set
304
305#
306# Network testing
307#
308# CONFIG_NET_PKTGEN is not set
309# CONFIG_HAMRADIO is not set
310# CONFIG_CAN is not set
311# CONFIG_IRDA is not set
312# CONFIG_BT is not set
313# CONFIG_AF_RXRPC is not set
314
315#
316# Wireless
317#
318# CONFIG_CFG80211 is not set
319# CONFIG_WIRELESS_EXT is not set
320# CONFIG_MAC80211 is not set
321# CONFIG_IEEE80211 is not set
322# CONFIG_RFKILL is not set
323# CONFIG_NET_9P is not set
324
325#
326# Device Drivers
327#
328
329#
330# Generic Driver Options
331#
332CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
333CONFIG_STANDALONE=y
334# CONFIG_PREVENT_FIRMWARE_BUILD is not set
335# CONFIG_FW_LOADER is not set
336# CONFIG_DEBUG_DRIVER is not set
337# CONFIG_DEBUG_DEVRES is not set
338# CONFIG_SYS_HYPERVISOR is not set
339# CONFIG_CONNECTOR is not set
340CONFIG_MTD=y
341# CONFIG_MTD_DEBUG is not set
342# CONFIG_MTD_CONCAT is not set
343CONFIG_MTD_PARTITIONS=y
344# CONFIG_MTD_REDBOOT_PARTS is not set
345CONFIG_MTD_CMDLINE_PARTS=y
346# CONFIG_MTD_AR7_PARTS is not set
347
348#
349# User Modules And Translation Layers
350#
351CONFIG_MTD_CHAR=y
352CONFIG_MTD_BLKDEVS=y
353CONFIG_MTD_BLOCK=y
354# CONFIG_FTL is not set
355# CONFIG_NFTL is not set
356# CONFIG_INFTL is not set
357# CONFIG_RFD_FTL is not set
358# CONFIG_SSFDC is not set
359# CONFIG_MTD_OOPS is not set
360
361#
362# RAM/ROM/Flash chip drivers
363#
364CONFIG_MTD_CFI=y
365# CONFIG_MTD_JEDECPROBE is not set
366CONFIG_MTD_GEN_PROBE=y
367# CONFIG_MTD_CFI_ADV_OPTIONS is not set
368CONFIG_MTD_MAP_BANK_WIDTH_1=y
369CONFIG_MTD_MAP_BANK_WIDTH_2=y
370CONFIG_MTD_MAP_BANK_WIDTH_4=y
371# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
372# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
373# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
374CONFIG_MTD_CFI_I1=y
375CONFIG_MTD_CFI_I2=y
376# CONFIG_MTD_CFI_I4 is not set
377# CONFIG_MTD_CFI_I8 is not set
378# CONFIG_MTD_CFI_INTELEXT is not set
379CONFIG_MTD_CFI_AMDSTD=y
380# CONFIG_MTD_CFI_STAA is not set
381CONFIG_MTD_CFI_UTIL=y
382# CONFIG_MTD_RAM is not set
383# CONFIG_MTD_ROM is not set
384# CONFIG_MTD_ABSENT is not set
385
386#
387# Mapping drivers for chip access
388#
389# CONFIG_MTD_COMPLEX_MAPPINGS is not set
390CONFIG_MTD_PHYSMAP=y
391CONFIG_MTD_PHYSMAP_START=0x80000000
392CONFIG_MTD_PHYSMAP_LEN=0x0
393CONFIG_MTD_PHYSMAP_BANKWIDTH=2
394# CONFIG_MTD_PLATRAM is not set
395
396#
397# Self-contained MTD device drivers
398#
399CONFIG_MTD_DATAFLASH=y
400# CONFIG_MTD_M25P80 is not set
401# CONFIG_MTD_SLRAM is not set
402# CONFIG_MTD_PHRAM is not set
403# CONFIG_MTD_MTDRAM is not set
404# CONFIG_MTD_BLOCK2MTD is not set
405
406#
407# Disk-On-Chip Device Drivers
408#
409# CONFIG_MTD_DOC2000 is not set
410# CONFIG_MTD_DOC2001 is not set
411# CONFIG_MTD_DOC2001PLUS is not set
412# CONFIG_MTD_NAND is not set
413# CONFIG_MTD_ONENAND is not set
414
415#
416# UBI - Unsorted block images
417#
418# CONFIG_MTD_UBI is not set
419# CONFIG_PARPORT is not set
420CONFIG_BLK_DEV=y
421# CONFIG_BLK_DEV_COW_COMMON is not set
422# CONFIG_BLK_DEV_LOOP is not set
423# CONFIG_BLK_DEV_NBD is not set
424# CONFIG_BLK_DEV_RAM is not set
425# CONFIG_CDROM_PKTCDVD is not set
426# CONFIG_ATA_OVER_ETH is not set
427CONFIG_MISC_DEVICES=y
428# CONFIG_ATMEL_PWM is not set
429CONFIG_ATMEL_TCLIB=y
430CONFIG_ATMEL_TCB_CLKSRC=y
431CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
432# CONFIG_EEPROM_93CX6 is not set
433# CONFIG_ATMEL_SSC is not set
434# CONFIG_ENCLOSURE_SERVICES is not set
435# CONFIG_HAVE_IDE is not set
436
437#
438# SCSI device support
439#
440# CONFIG_RAID_ATTRS is not set
441# CONFIG_SCSI is not set
442# CONFIG_SCSI_DMA is not set
443# CONFIG_SCSI_NETLINK is not set
444# CONFIG_ATA is not set
445# CONFIG_MD is not set
446CONFIG_NETDEVICES=y
447# CONFIG_DUMMY is not set
448# CONFIG_BONDING is not set
449# CONFIG_MACVLAN is not set
450# CONFIG_EQUALIZER is not set
451# CONFIG_TUN is not set
452# CONFIG_VETH is not set
453CONFIG_PHYLIB=y
454
455#
456# MII PHY device drivers
457#
458# CONFIG_MARVELL_PHY is not set
459# CONFIG_DAVICOM_PHY is not set
460# CONFIG_QSEMI_PHY is not set
461# CONFIG_LXT_PHY is not set
462# CONFIG_CICADA_PHY is not set
463# CONFIG_VITESSE_PHY is not set
464# CONFIG_SMSC_PHY is not set
465# CONFIG_BROADCOM_PHY is not set
466# CONFIG_ICPLUS_PHY is not set
467# CONFIG_REALTEK_PHY is not set
468# CONFIG_FIXED_PHY is not set
469# CONFIG_MDIO_BITBANG is not set
470CONFIG_NET_ETHERNET=y
471# CONFIG_MII is not set
472CONFIG_MACB=y
473# CONFIG_ENC28J60 is not set
474# CONFIG_IBM_NEW_EMAC_ZMII is not set
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_B44 is not set
479# CONFIG_NETDEV_1000 is not set
480# CONFIG_NETDEV_10000 is not set
481
482#
483# Wireless LAN
484#
485# CONFIG_WLAN_PRE80211 is not set
486# CONFIG_WLAN_80211 is not set
487# CONFIG_IWLWIFI_LEDS is not set
488# CONFIG_WAN is not set
489# CONFIG_PPP is not set
490# CONFIG_SLIP is not set
491# CONFIG_NETCONSOLE is not set
492# CONFIG_NETPOLL is not set
493# CONFIG_NET_POLL_CONTROLLER is not set
494# CONFIG_ISDN is not set
495# CONFIG_PHONE is not set
496
497#
498# Input device support
499#
500# CONFIG_INPUT is not set
501
502#
503# Hardware I/O ports
504#
505# CONFIG_SERIO is not set
506# CONFIG_GAMEPORT is not set
507
508#
509# Character devices
510#
511# CONFIG_VT is not set
512# CONFIG_DEVKMEM is not set
513# CONFIG_SERIAL_NONSTANDARD is not set
514
515#
516# Serial drivers
517#
518# CONFIG_SERIAL_8250 is not set
519
520#
521# Non-8250 serial port support
522#
523CONFIG_SERIAL_ATMEL=y
524CONFIG_SERIAL_ATMEL_CONSOLE=y
525CONFIG_SERIAL_ATMEL_PDC=y
526# CONFIG_SERIAL_ATMEL_TTYAT is not set
527CONFIG_SERIAL_CORE=y
528CONFIG_SERIAL_CORE_CONSOLE=y
529CONFIG_UNIX98_PTYS=y
530# CONFIG_LEGACY_PTYS is not set
531# CONFIG_IPMI_HANDLER is not set
532# CONFIG_HW_RANDOM is not set
533# CONFIG_R3964 is not set
534# CONFIG_RAW_DRIVER is not set
535# CONFIG_TCG_TPM is not set
536CONFIG_I2C=y
537CONFIG_I2C_BOARDINFO=y
538CONFIG_I2C_CHARDEV=y
539CONFIG_I2C_HELPER_AUTO=y
540CONFIG_I2C_ALGOBIT=y
541
542#
543# I2C Hardware Bus support
544#
545
546#
547# I2C system bus drivers (mostly embedded / system-on-chip)
548#
549CONFIG_I2C_GPIO=y
550# CONFIG_I2C_OCORES is not set
551# CONFIG_I2C_SIMTEC is not set
552
553#
554# External I2C/SMBus adapter drivers
555#
556# CONFIG_I2C_PARPORT_LIGHT is not set
557# CONFIG_I2C_TAOS_EVM is not set
558
559#
560# Other I2C/SMBus bus drivers
561#
562# CONFIG_I2C_PCA_PLATFORM is not set
563
564#
565# Miscellaneous I2C Chip support
566#
567# CONFIG_DS1682 is not set
568CONFIG_AT24=y
569# CONFIG_SENSORS_EEPROM is not set
570# CONFIG_SENSORS_PCF8574 is not set
571# CONFIG_PCF8575 is not set
572# CONFIG_SENSORS_PCA9539 is not set
573# CONFIG_SENSORS_PCF8591 is not set
574# CONFIG_TPS65010 is not set
575# CONFIG_SENSORS_MAX6875 is not set
576# CONFIG_SENSORS_TSL2550 is not set
577# CONFIG_DS28CM00 is not set
578# CONFIG_I2C_DEBUG_CORE is not set
579# CONFIG_I2C_DEBUG_ALGO is not set
580# CONFIG_I2C_DEBUG_BUS is not set
581# CONFIG_I2C_DEBUG_CHIP is not set
582CONFIG_SPI=y
583# CONFIG_SPI_DEBUG is not set
584CONFIG_SPI_MASTER=y
585
586#
587# SPI Master Controller Drivers
588#
589CONFIG_SPI_ATMEL=y
590# CONFIG_SPI_BITBANG is not set
591
592#
593# SPI Protocol Masters
594#
595CONFIG_SPI_AT25=y
596# CONFIG_SPI_SPIDEV is not set
597# CONFIG_SPI_TLE62X0 is not set
598CONFIG_ARCH_REQUIRE_GPIOLIB=y
599CONFIG_GPIOLIB=y
600# CONFIG_DEBUG_GPIO is not set
601CONFIG_GPIO_SYSFS=y
602
603#
604# I2C GPIO expanders:
605#
606# CONFIG_GPIO_MAX732X is not set
607# CONFIG_GPIO_PCA953X is not set
608# CONFIG_GPIO_PCF857X is not set
609
610#
611# PCI GPIO expanders:
612#
613
614#
615# SPI GPIO expanders:
616#
617# CONFIG_GPIO_MAX7301 is not set
618# CONFIG_GPIO_MCP23S08 is not set
619# CONFIG_W1 is not set
620# CONFIG_POWER_SUPPLY is not set
621# CONFIG_HWMON is not set
622# CONFIG_THERMAL is not set
623# CONFIG_THERMAL_HWMON is not set
624CONFIG_WATCHDOG=y
625# CONFIG_WATCHDOG_NOWAYOUT is not set
626
627#
628# Watchdog Device Drivers
629#
630# CONFIG_SOFT_WATCHDOG is not set
631CONFIG_AT32AP700X_WDT=y
632
633#
634# Sonics Silicon Backplane
635#
636CONFIG_SSB_POSSIBLE=y
637# CONFIG_SSB is not set
638
639#
640# Multifunction device drivers
641#
642# CONFIG_MFD_CORE is not set
643# CONFIG_MFD_SM501 is not set
644# CONFIG_HTC_PASIC3 is not set
645# CONFIG_MFD_TMIO is not set
646
647#
648# Multimedia devices
649#
650
651#
652# Multimedia core support
653#
654# CONFIG_VIDEO_DEV is not set
655# CONFIG_DVB_CORE is not set
656# CONFIG_VIDEO_MEDIA is not set
657
658#
659# Multimedia drivers
660#
661# CONFIG_DAB is not set
662
663#
664# Graphics support
665#
666# CONFIG_VGASTATE is not set
667# CONFIG_VIDEO_OUTPUT_CONTROL is not set
668CONFIG_FB=y
669# CONFIG_FIRMWARE_EDID is not set
670# CONFIG_FB_DDC is not set
671CONFIG_FB_CFB_FILLRECT=y
672CONFIG_FB_CFB_COPYAREA=y
673CONFIG_FB_CFB_IMAGEBLIT=y
674# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
675# CONFIG_FB_SYS_FILLRECT is not set
676# CONFIG_FB_SYS_COPYAREA is not set
677# CONFIG_FB_SYS_IMAGEBLIT is not set
678# CONFIG_FB_FOREIGN_ENDIAN is not set
679# CONFIG_FB_SYS_FOPS is not set
680# CONFIG_FB_SVGALIB is not set
681# CONFIG_FB_MACMODES is not set
682# CONFIG_FB_BACKLIGHT is not set
683# CONFIG_FB_MODE_HELPERS is not set
684# CONFIG_FB_TILEBLITTING is not set
685
686#
687# Frame buffer hardware drivers
688#
689# CONFIG_FB_S1D13XXX is not set
690CONFIG_FB_ATMEL=y
691# CONFIG_FB_VIRTUAL is not set
692# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
693
694#
695# Display device support
696#
697# CONFIG_DISPLAY_SUPPORT is not set
698# CONFIG_LOGO is not set
699# CONFIG_SOUND is not set
700# CONFIG_USB_SUPPORT is not set
701CONFIG_MMC=y
702# CONFIG_MMC_DEBUG is not set
703# CONFIG_MMC_UNSAFE_RESUME is not set
704
705#
706# MMC/SD Card Drivers
707#
708CONFIG_MMC_BLOCK=y
709CONFIG_MMC_BLOCK_BOUNCE=y
710# CONFIG_SDIO_UART is not set
711CONFIG_MMC_TEST=y
712
713#
714# MMC/SD Host Controller Drivers
715#
716# CONFIG_MMC_SDHCI is not set
717CONFIG_MMC_ATMELMCI=y
718# CONFIG_MMC_ATMELMCI_DMA is not set
719CONFIG_MMC_SPI=y
720# CONFIG_MEMSTICK is not set
721CONFIG_NEW_LEDS=y
722CONFIG_LEDS_CLASS=y
723
724#
725# LED drivers
726#
727CONFIG_LEDS_GPIO=y
728# CONFIG_LEDS_PCA955X is not set
729
730#
731# LED Triggers
732#
733CONFIG_LEDS_TRIGGERS=y
734CONFIG_LEDS_TRIGGER_TIMER=y
735CONFIG_LEDS_TRIGGER_HEARTBEAT=y
736CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
737# CONFIG_ACCESSIBILITY is not set
738CONFIG_RTC_LIB=y
739CONFIG_RTC_CLASS=y
740CONFIG_RTC_HCTOSYS=y
741CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
742# CONFIG_RTC_DEBUG is not set
743
744#
745# RTC interfaces
746#
747CONFIG_RTC_INTF_SYSFS=y
748CONFIG_RTC_INTF_PROC=y
749CONFIG_RTC_INTF_DEV=y
750# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
751# CONFIG_RTC_DRV_TEST is not set
752
753#
754# I2C RTC drivers
755#
756# CONFIG_RTC_DRV_DS1307 is not set
757# CONFIG_RTC_DRV_DS1374 is not set
758# CONFIG_RTC_DRV_DS1672 is not set
759# CONFIG_RTC_DRV_MAX6900 is not set
760# CONFIG_RTC_DRV_RS5C372 is not set
761# CONFIG_RTC_DRV_ISL1208 is not set
762# CONFIG_RTC_DRV_X1205 is not set
763# CONFIG_RTC_DRV_PCF8563 is not set
764# CONFIG_RTC_DRV_PCF8583 is not set
765# CONFIG_RTC_DRV_M41T80 is not set
766# CONFIG_RTC_DRV_S35390A is not set
767# CONFIG_RTC_DRV_FM3130 is not set
768
769#
770# SPI RTC drivers
771#
772# CONFIG_RTC_DRV_M41T94 is not set
773# CONFIG_RTC_DRV_DS1305 is not set
774CONFIG_RTC_DRV_DS1390=y
775# CONFIG_RTC_DRV_MAX6902 is not set
776# CONFIG_RTC_DRV_R9701 is not set
777# CONFIG_RTC_DRV_RS5C348 is not set
778
779#
780# Platform RTC drivers
781#
782# CONFIG_RTC_DRV_DS1511 is not set
783# CONFIG_RTC_DRV_DS1553 is not set
784# CONFIG_RTC_DRV_DS1742 is not set
785# CONFIG_RTC_DRV_STK17TA8 is not set
786# CONFIG_RTC_DRV_M48T86 is not set
787# CONFIG_RTC_DRV_M48T59 is not set
788# CONFIG_RTC_DRV_V3020 is not set
789
790#
791# on-CPU RTC drivers
792#
793# CONFIG_RTC_DRV_AT32AP700X is not set
794CONFIG_DMADEVICES=y
795
796#
797# DMA Devices
798#
799CONFIG_DW_DMAC=y
800CONFIG_DMA_ENGINE=y
801
802#
803# DMA Clients
804#
805# CONFIG_NET_DMA is not set
806# CONFIG_DMATEST is not set
807# CONFIG_UIO is not set
808
809#
810# File systems
811#
812CONFIG_EXT2_FS=y
813# CONFIG_EXT2_FS_XATTR is not set
814# CONFIG_EXT2_FS_XIP is not set
815CONFIG_EXT3_FS=y
816# CONFIG_EXT3_FS_XATTR is not set
817# CONFIG_EXT4DEV_FS is not set
818CONFIG_JBD=y
819# CONFIG_REISERFS_FS is not set
820# CONFIG_JFS_FS is not set
821# CONFIG_FS_POSIX_ACL is not set
822# CONFIG_XFS_FS is not set
823# CONFIG_OCFS2_FS is not set
824# CONFIG_DNOTIFY is not set
825CONFIG_INOTIFY=y
826CONFIG_INOTIFY_USER=y
827# CONFIG_QUOTA is not set
828# CONFIG_AUTOFS_FS is not set
829# CONFIG_AUTOFS4_FS is not set
830# CONFIG_FUSE_FS is not set
831
832#
833# CD-ROM/DVD Filesystems
834#
835# CONFIG_ISO9660_FS is not set
836# CONFIG_UDF_FS is not set
837
838#
839# DOS/FAT/NT Filesystems
840#
841CONFIG_FAT_FS=y
842CONFIG_MSDOS_FS=y
843CONFIG_VFAT_FS=y
844CONFIG_FAT_DEFAULT_CODEPAGE=850
845CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
846# CONFIG_NTFS_FS is not set
847
848#
849# Pseudo filesystems
850#
851CONFIG_PROC_FS=y
852# CONFIG_PROC_KCORE is not set
853CONFIG_PROC_SYSCTL=y
854CONFIG_SYSFS=y
855CONFIG_TMPFS=y
856# CONFIG_TMPFS_POSIX_ACL is not set
857# CONFIG_HUGETLB_PAGE is not set
858CONFIG_CONFIGFS_FS=y
859
860#
861# Miscellaneous filesystems
862#
863# CONFIG_ADFS_FS is not set
864# CONFIG_AFFS_FS is not set
865# CONFIG_HFS_FS is not set
866# CONFIG_HFSPLUS_FS is not set
867# CONFIG_BEFS_FS is not set
868# CONFIG_BFS_FS is not set
869# CONFIG_EFS_FS is not set
870CONFIG_JFFS2_FS=y
871CONFIG_JFFS2_FS_DEBUG=0
872CONFIG_JFFS2_FS_WRITEBUFFER=y
873# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
874# CONFIG_JFFS2_SUMMARY is not set
875# CONFIG_JFFS2_FS_XATTR is not set
876# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
877CONFIG_JFFS2_ZLIB=y
878# CONFIG_JFFS2_LZO is not set
879CONFIG_JFFS2_RTIME=y
880# CONFIG_JFFS2_RUBIN is not set
881# CONFIG_CRAMFS is not set
882# CONFIG_VXFS_FS is not set
883# CONFIG_MINIX_FS is not set
884# CONFIG_OMFS_FS is not set
885# CONFIG_HPFS_FS is not set
886# CONFIG_QNX4FS_FS is not set
887# CONFIG_ROMFS_FS is not set
888# CONFIG_SYSV_FS is not set
889# CONFIG_UFS_FS is not set
890CONFIG_NETWORK_FILESYSTEMS=y
891CONFIG_NFS_FS=y
892CONFIG_NFS_V3=y
893# CONFIG_NFS_V3_ACL is not set
894# CONFIG_NFS_V4 is not set
895CONFIG_ROOT_NFS=y
896# CONFIG_NFSD is not set
897CONFIG_LOCKD=y
898CONFIG_LOCKD_V4=y
899CONFIG_NFS_COMMON=y
900CONFIG_SUNRPC=y
901# CONFIG_RPCSEC_GSS_KRB5 is not set
902# CONFIG_RPCSEC_GSS_SPKM3 is not set
903# CONFIG_SMB_FS is not set
904# CONFIG_CIFS is not set
905# CONFIG_NCP_FS is not set
906# CONFIG_CODA_FS is not set
907# CONFIG_AFS_FS is not set
908
909#
910# Partition Types
911#
912# CONFIG_PARTITION_ADVANCED is not set
913CONFIG_MSDOS_PARTITION=y
914CONFIG_NLS=y
915CONFIG_NLS_DEFAULT="iso8859-1"
916CONFIG_NLS_CODEPAGE_437=y
917# CONFIG_NLS_CODEPAGE_737 is not set
918# CONFIG_NLS_CODEPAGE_775 is not set
919CONFIG_NLS_CODEPAGE_850=y
920# CONFIG_NLS_CODEPAGE_852 is not set
921# CONFIG_NLS_CODEPAGE_855 is not set
922# CONFIG_NLS_CODEPAGE_857 is not set
923# CONFIG_NLS_CODEPAGE_860 is not set
924# CONFIG_NLS_CODEPAGE_861 is not set
925# CONFIG_NLS_CODEPAGE_862 is not set
926# CONFIG_NLS_CODEPAGE_863 is not set
927# CONFIG_NLS_CODEPAGE_864 is not set
928# CONFIG_NLS_CODEPAGE_865 is not set
929# CONFIG_NLS_CODEPAGE_866 is not set
930# CONFIG_NLS_CODEPAGE_869 is not set
931# CONFIG_NLS_CODEPAGE_936 is not set
932# CONFIG_NLS_CODEPAGE_950 is not set
933# CONFIG_NLS_CODEPAGE_932 is not set
934# CONFIG_NLS_CODEPAGE_949 is not set
935# CONFIG_NLS_CODEPAGE_874 is not set
936# CONFIG_NLS_ISO8859_8 is not set
937# CONFIG_NLS_CODEPAGE_1250 is not set
938# CONFIG_NLS_CODEPAGE_1251 is not set
939# CONFIG_NLS_ASCII is not set
940CONFIG_NLS_ISO8859_1=y
941# CONFIG_NLS_ISO8859_2 is not set
942# CONFIG_NLS_ISO8859_3 is not set
943# CONFIG_NLS_ISO8859_4 is not set
944# CONFIG_NLS_ISO8859_5 is not set
945# CONFIG_NLS_ISO8859_6 is not set
946# CONFIG_NLS_ISO8859_7 is not set
947# CONFIG_NLS_ISO8859_9 is not set
948# CONFIG_NLS_ISO8859_13 is not set
949# CONFIG_NLS_ISO8859_14 is not set
950# CONFIG_NLS_ISO8859_15 is not set
951# CONFIG_NLS_KOI8_R is not set
952# CONFIG_NLS_KOI8_U is not set
953CONFIG_NLS_UTF8=y
954# CONFIG_DLM is not set
955
956#
957# Kernel hacking
958#
959# CONFIG_PRINTK_TIME is not set
960CONFIG_ENABLE_WARN_DEPRECATED=y
961CONFIG_ENABLE_MUST_CHECK=y
962CONFIG_FRAME_WARN=1024
963CONFIG_MAGIC_SYSRQ=y
964# CONFIG_UNUSED_SYMBOLS is not set
965# CONFIG_DEBUG_FS is not set
966# CONFIG_HEADERS_CHECK is not set
967CONFIG_DEBUG_KERNEL=y
968# CONFIG_DEBUG_SHIRQ is not set
969CONFIG_DETECT_SOFTLOCKUP=y
970# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
971CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
972CONFIG_SCHED_DEBUG=y
973# CONFIG_SCHEDSTATS is not set
974# CONFIG_TIMER_STATS is not set
975# CONFIG_DEBUG_OBJECTS is not set
976# CONFIG_SLUB_DEBUG_ON is not set
977# CONFIG_SLUB_STATS is not set
978# CONFIG_DEBUG_RT_MUTEXES is not set
979# CONFIG_RT_MUTEX_TESTER is not set
980# CONFIG_DEBUG_SPINLOCK is not set
981# CONFIG_DEBUG_MUTEXES is not set
982# CONFIG_DEBUG_LOCK_ALLOC is not set
983# CONFIG_PROVE_LOCKING is not set
984# CONFIG_LOCK_STAT is not set
985# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
986# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
987# CONFIG_DEBUG_KOBJECT is not set
988CONFIG_DEBUG_BUGVERBOSE=y
989# CONFIG_DEBUG_INFO is not set
990# CONFIG_DEBUG_VM is not set
991# CONFIG_DEBUG_WRITECOUNT is not set
992# CONFIG_DEBUG_MEMORY_INIT is not set
993# CONFIG_DEBUG_LIST is not set
994# CONFIG_DEBUG_SG is not set
995CONFIG_FRAME_POINTER=y
996# CONFIG_BOOT_PRINTK_DELAY is not set
997# CONFIG_RCU_TORTURE_TEST is not set
998# CONFIG_BACKTRACE_SELF_TEST is not set
999# CONFIG_FAULT_INJECTION is not set
1000# CONFIG_SAMPLES is not set
1001
1002#
1003# Security options
1004#
1005# CONFIG_KEYS is not set
1006# CONFIG_SECURITY is not set
1007# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1008CONFIG_CRYPTO=y
1009
1010#
1011# Crypto core or helper
1012#
1013CONFIG_CRYPTO_ALGAPI=y
1014CONFIG_CRYPTO_AEAD=y
1015CONFIG_CRYPTO_BLKCIPHER=y
1016CONFIG_CRYPTO_HASH=y
1017CONFIG_CRYPTO_MANAGER=y
1018# CONFIG_CRYPTO_GF128MUL is not set
1019# CONFIG_CRYPTO_NULL is not set
1020# CONFIG_CRYPTO_CRYPTD is not set
1021CONFIG_CRYPTO_AUTHENC=y
1022
1023#
1024# Authenticated Encryption with Associated Data
1025#
1026# CONFIG_CRYPTO_CCM is not set
1027# CONFIG_CRYPTO_GCM is not set
1028# CONFIG_CRYPTO_SEQIV is not set
1029
1030#
1031# Block modes
1032#
1033CONFIG_CRYPTO_CBC=y
1034# CONFIG_CRYPTO_CTR is not set
1035# CONFIG_CRYPTO_CTS is not set
1036CONFIG_CRYPTO_ECB=y
1037# CONFIG_CRYPTO_LRW is not set
1038CONFIG_CRYPTO_PCBC=y
1039# CONFIG_CRYPTO_XTS is not set
1040
1041#
1042# Hash modes
1043#
1044CONFIG_CRYPTO_HMAC=y
1045# CONFIG_CRYPTO_XCBC is not set
1046
1047#
1048# Digest
1049#
1050# CONFIG_CRYPTO_CRC32C is not set
1051# CONFIG_CRYPTO_MD4 is not set
1052CONFIG_CRYPTO_MD5=y
1053# CONFIG_CRYPTO_MICHAEL_MIC is not set
1054# CONFIG_CRYPTO_RMD128 is not set
1055# CONFIG_CRYPTO_RMD160 is not set
1056# CONFIG_CRYPTO_RMD256 is not set
1057# CONFIG_CRYPTO_RMD320 is not set
1058CONFIG_CRYPTO_SHA1=y
1059# CONFIG_CRYPTO_SHA256 is not set
1060# CONFIG_CRYPTO_SHA512 is not set
1061# CONFIG_CRYPTO_TGR192 is not set
1062# CONFIG_CRYPTO_WP512 is not set
1063
1064#
1065# Ciphers
1066#
1067# CONFIG_CRYPTO_AES is not set
1068# CONFIG_CRYPTO_ANUBIS is not set
1069CONFIG_CRYPTO_ARC4=y
1070# CONFIG_CRYPTO_BLOWFISH is not set
1071# CONFIG_CRYPTO_CAMELLIA is not set
1072# CONFIG_CRYPTO_CAST5 is not set
1073# CONFIG_CRYPTO_CAST6 is not set
1074CONFIG_CRYPTO_DES=y
1075# CONFIG_CRYPTO_FCRYPT is not set
1076# CONFIG_CRYPTO_KHAZAD is not set
1077# CONFIG_CRYPTO_SALSA20 is not set
1078# CONFIG_CRYPTO_SEED is not set
1079# CONFIG_CRYPTO_SERPENT is not set
1080# CONFIG_CRYPTO_TEA is not set
1081# CONFIG_CRYPTO_TWOFISH is not set
1082
1083#
1084# Compression
1085#
1086CONFIG_CRYPTO_DEFLATE=y
1087# CONFIG_CRYPTO_LZO is not set
1088CONFIG_CRYPTO_HW=y
1089
1090#
1091# Library routines
1092#
1093CONFIG_BITREVERSE=y
1094# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1095# CONFIG_GENERIC_FIND_NEXT_BIT is not set
1096CONFIG_CRC_CCITT=y
1097# CONFIG_CRC16 is not set
1098# CONFIG_CRC_T10DIF is not set
1099CONFIG_CRC_ITU_T=y
1100CONFIG_CRC32=y
1101CONFIG_CRC7=y
1102# CONFIG_LIBCRC32C is not set
1103CONFIG_ZLIB_INFLATE=y
1104CONFIG_ZLIB_DEFLATE=y
1105CONFIG_GENERIC_ALLOCATOR=y
1106CONFIG_PLIST=y
1107CONFIG_HAS_IOMEM=y
1108CONFIG_HAS_IOPORT=y
1109CONFIG_HAS_DMA=y
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
index 813b6844cdf6..0c6e02f80a31 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -813,7 +813,7 @@ static struct resource pio4_resource[] = {
813DEFINE_DEV(pio, 4); 813DEFINE_DEV(pio, 4);
814DEV_CLK(mck, pio4, pba, 14); 814DEV_CLK(mck, pio4, pba, 14);
815 815
816void __init at32_add_system_devices(void) 816static int __init system_device_init(void)
817{ 817{
818 platform_device_register(&at32_pm0_device); 818 platform_device_register(&at32_pm0_device);
819 platform_device_register(&at32_intc0_device); 819 platform_device_register(&at32_intc0_device);
@@ -832,7 +832,10 @@ void __init at32_add_system_devices(void)
832 platform_device_register(&pio2_device); 832 platform_device_register(&pio2_device);
833 platform_device_register(&pio3_device); 833 platform_device_register(&pio3_device);
834 platform_device_register(&pio4_device); 834 platform_device_register(&pio4_device);
835
836 return 0;
835} 837}
838core_initcall(system_device_init);
836 839
837/* -------------------------------------------------------------------- 840/* --------------------------------------------------------------------
838 * PSIF 841 * PSIF
@@ -1091,7 +1094,9 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data)
1091 pin_mask |= (1 << 11); /* RXD2 */ 1094 pin_mask |= (1 << 11); /* RXD2 */
1092 pin_mask |= (1 << 12); /* RXD3 */ 1095 pin_mask |= (1 << 12); /* RXD3 */
1093 pin_mask |= (1 << 14); /* RXCK */ 1096 pin_mask |= (1 << 14); /* RXCK */
1097#ifndef CONFIG_BOARD_MIMC200
1094 pin_mask |= (1 << 18); /* SPD */ 1098 pin_mask |= (1 << 18); /* SPD */
1099#endif
1095 } 1100 }
1096 1101
1097 select_peripheral(PIOC, pin_mask, PERIPH_A, 0); 1102 select_peripheral(PIOC, pin_mask, PERIPH_A, 0);
@@ -1112,8 +1117,10 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data)
1112 pin_mask |= (1 << 3); /* MDC */ 1117 pin_mask |= (1 << 3); /* MDC */
1113 pin_mask |= (1 << 2); /* MDIO */ 1118 pin_mask |= (1 << 2); /* MDIO */
1114 1119
1120#ifndef CONFIG_BOARD_MIMC200
1115 if (!data->is_rmii) 1121 if (!data->is_rmii)
1116 pin_mask |= (1 << 15); /* SPD */ 1122 pin_mask |= (1 << 15); /* SPD */
1123#endif
1117 1124
1118 select_peripheral(PIOD, pin_mask, PERIPH_B, 0); 1125 select_peripheral(PIOD, pin_mask, PERIPH_B, 0);
1119 1126
@@ -1470,7 +1477,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
1470 pin_mask = ATMEL_LCDC_PRI_24BIT | ATMEL_LCDC_PRI_CONTROL; 1477 pin_mask = ATMEL_LCDC_PRI_24BIT | ATMEL_LCDC_PRI_CONTROL;
1471 1478
1472 /* LCDC on port C */ 1479 /* LCDC on port C */
1473 portc_mask = (pin_mask & 0xfff80000) >> 19; 1480 portc_mask = pin_mask & 0xfff80000;
1474 select_peripheral(PIOC, portc_mask, PERIPH_A, 0); 1481 select_peripheral(PIOC, portc_mask, PERIPH_A, 0);
1475 1482
1476 /* LCDC on port D */ 1483 /* LCDC on port D */
diff --git a/arch/avr32/mach-at32ap/cpufreq.c b/arch/avr32/mach-at32ap/cpufreq.c
index d84efe4984ab..024c586e936c 100644
--- a/arch/avr32/mach-at32ap/cpufreq.c
+++ b/arch/avr32/mach-at32ap/cpufreq.c
@@ -40,6 +40,9 @@ static unsigned int at32_get_speed(unsigned int cpu)
40 return (unsigned int)((clk_get_rate(cpuclk) + 500) / 1000); 40 return (unsigned int)((clk_get_rate(cpuclk) + 500) / 1000);
41} 41}
42 42
43static unsigned int ref_freq;
44static unsigned long loops_per_jiffy_ref;
45
43static int at32_set_target(struct cpufreq_policy *policy, 46static int at32_set_target(struct cpufreq_policy *policy,
44 unsigned int target_freq, 47 unsigned int target_freq,
45 unsigned int relation) 48 unsigned int relation)
@@ -61,8 +64,19 @@ static int at32_set_target(struct cpufreq_policy *policy,
61 freqs.cpu = 0; 64 freqs.cpu = 0;
62 freqs.flags = 0; 65 freqs.flags = 0;
63 66
67 if (!ref_freq) {
68 ref_freq = freqs.old;
69 loops_per_jiffy_ref = boot_cpu_data.loops_per_jiffy;
70 }
71
64 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 72 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
73 if (freqs.old < freqs.new)
74 boot_cpu_data.loops_per_jiffy = cpufreq_scale(
75 loops_per_jiffy_ref, ref_freq, freqs.new);
65 clk_set_rate(cpuclk, freq); 76 clk_set_rate(cpuclk, freq);
77 if (freqs.new < freqs.old)
78 boot_cpu_data.loops_per_jiffy = cpufreq_scale(
79 loops_per_jiffy_ref, ref_freq, freqs.new);
66 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 80 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
67 81
68 pr_debug("cpufreq: set frequency %lu Hz\n", freq); 82 pr_debug("cpufreq: set frequency %lu Hz\n", freq);
diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h
index c48386d66bc3..aafaf7a78886 100644
--- a/arch/avr32/mach-at32ap/include/mach/board.h
+++ b/arch/avr32/mach-at32ap/include/mach/board.h
@@ -14,8 +14,14 @@
14 */ 14 */
15extern unsigned long at32_board_osc_rates[]; 15extern unsigned long at32_board_osc_rates[];
16 16
17/* Add basic devices: system manager, interrupt controller, portmuxes, etc. */ 17/*
18void at32_add_system_devices(void); 18 * This used to add essential system devices, but this is now done
19 * automatically. Please don't use it in new board code.
20 */
21static inline void __deprecated at32_add_system_devices(void)
22{
23
24}
19 25
20#define ATMEL_MAX_UART 4 26#define ATMEL_MAX_UART 4
21extern struct platform_device *atmel_default_console_device; 27extern struct platform_device *atmel_default_console_device;
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 07335e719bf8..b17aeea8d620 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -679,6 +679,8 @@ source "fs/Kconfig"
679 679
680source "drivers/usb/Kconfig" 680source "drivers/usb/Kconfig"
681 681
682source "drivers/uwb/Kconfig"
683
682source "arch/cris/Kconfig.debug" 684source "arch/cris/Kconfig.debug"
683 685
684source "security/Kconfig" 686source "security/Kconfig"
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index bd1995403c67..28f06fd9b7b7 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -216,6 +216,8 @@ source "drivers/hwmon/Kconfig"
216 216
217source "drivers/usb/Kconfig" 217source "drivers/usb/Kconfig"
218 218
219source "drivers/uwb/Kconfig"
220
219endmenu 221endmenu
220 222
221source "fs/Kconfig" 223source "fs/Kconfig"
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 912c57db2d21..27eec71429b0 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -23,6 +23,7 @@ config IA64
23 select HAVE_KRETPROBES 23 select HAVE_KRETPROBES
24 select HAVE_DMA_ATTRS 24 select HAVE_DMA_ATTRS
25 select HAVE_KVM 25 select HAVE_KVM
26 select HAVE_ARCH_TRACEHOOK
26 default y 27 default y
27 help 28 help
28 The Itanium Processor Family is Intel's 64-bit successor to 29 The Itanium Processor Family is Intel's 64-bit successor to
@@ -110,6 +111,33 @@ config AUDIT_ARCH
110 bool 111 bool
111 default y 112 default y
112 113
114menuconfig PARAVIRT_GUEST
115 bool "Paravirtualized guest support"
116 help
117 Say Y here to get to see options related to running Linux under
118 various hypervisors. This option alone does not add any kernel code.
119
120 If you say N, all options in this submenu will be skipped and disabled.
121
122if PARAVIRT_GUEST
123
124config PARAVIRT
125 bool "Enable paravirtualization code"
126 depends on PARAVIRT_GUEST
127 default y
128 bool
129 default y
130 help
131 This changes the kernel so it can modify itself when it is run
132 under a hypervisor, potentially improving performance significantly
133 over full virtualization. However, when run without a hypervisor
134 the kernel is theoretically slower and slightly larger.
135
136
137source "arch/ia64/xen/Kconfig"
138
139endif
140
113choice 141choice
114 prompt "System type" 142 prompt "System type"
115 default IA64_GENERIC 143 default IA64_GENERIC
@@ -119,6 +147,7 @@ config IA64_GENERIC
119 select NUMA 147 select NUMA
120 select ACPI_NUMA 148 select ACPI_NUMA
121 select SWIOTLB 149 select SWIOTLB
150 select PCI_MSI
122 help 151 help
123 This selects the system type of your hardware. A "generic" kernel 152 This selects the system type of your hardware. A "generic" kernel
124 will run on any supported IA-64 system. However, if you configure 153 will run on any supported IA-64 system. However, if you configure
@@ -126,11 +155,13 @@ config IA64_GENERIC
126 155
127 generic For any supported IA-64 system 156 generic For any supported IA-64 system
128 DIG-compliant For DIG ("Developer's Interface Guide") compliant systems 157 DIG-compliant For DIG ("Developer's Interface Guide") compliant systems
158 DIG+Intel+IOMMU For DIG systems with Intel IOMMU
129 HP-zx1/sx1000 For HP systems 159 HP-zx1/sx1000 For HP systems
130 HP-zx1/sx1000+swiotlb For HP systems with (broken) DMA-constrained devices. 160 HP-zx1/sx1000+swiotlb For HP systems with (broken) DMA-constrained devices.
131 SGI-SN2 For SGI Altix systems 161 SGI-SN2 For SGI Altix systems
132 SGI-UV For SGI UV systems 162 SGI-UV For SGI UV systems
133 Ski-simulator For the HP simulator <http://www.hpl.hp.com/research/linux/ski/> 163 Ski-simulator For the HP simulator <http://www.hpl.hp.com/research/linux/ski/>
164 Xen-domU For xen domU system
134 165
135 If you don't know what to do, choose "generic". 166 If you don't know what to do, choose "generic".
136 167
@@ -138,6 +169,11 @@ config IA64_DIG
138 bool "DIG-compliant" 169 bool "DIG-compliant"
139 select SWIOTLB 170 select SWIOTLB
140 171
172config IA64_DIG_VTD
173 bool "DIG+Intel+IOMMU"
174 select DMAR
175 select PCI_MSI
176
141config IA64_HP_ZX1 177config IA64_HP_ZX1
142 bool "HP-zx1/sx1000" 178 bool "HP-zx1/sx1000"
143 help 179 help
@@ -181,6 +217,10 @@ config IA64_HP_SIM
181 bool "Ski-simulator" 217 bool "Ski-simulator"
182 select SWIOTLB 218 select SWIOTLB
183 219
220config IA64_XEN_GUEST
221 bool "Xen guest"
222 depends on XEN
223
184endchoice 224endchoice
185 225
186choice 226choice
@@ -583,6 +623,16 @@ source "drivers/pci/hotplug/Kconfig"
583 623
584source "drivers/pcmcia/Kconfig" 624source "drivers/pcmcia/Kconfig"
585 625
626config DMAR
627 bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
628 depends on IA64_GENERIC && ACPI && EXPERIMENTAL
629 help
630 DMA remapping (DMAR) devices support enables independent address
631 translations for Direct Memory Access (DMA) from devices.
632 These DMA remapping devices are reported via ACPI tables
633 and include PCI device scope covered by these DMA
634 remapping devices.
635
586endmenu 636endmenu
587 637
588endif 638endif
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 905d25b13d5a..58a7e46affda 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -53,12 +53,15 @@ libs-y += arch/ia64/lib/
53core-y += arch/ia64/kernel/ arch/ia64/mm/ 53core-y += arch/ia64/kernel/ arch/ia64/mm/
54core-$(CONFIG_IA32_SUPPORT) += arch/ia64/ia32/ 54core-$(CONFIG_IA32_SUPPORT) += arch/ia64/ia32/
55core-$(CONFIG_IA64_DIG) += arch/ia64/dig/ 55core-$(CONFIG_IA64_DIG) += arch/ia64/dig/
56core-$(CONFIG_IA64_DIG_VTD) += arch/ia64/dig/
56core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/ 57core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/
57core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ 58core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/
58core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/ 59core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/
60core-$(CONFIG_IA64_XEN_GUEST) += arch/ia64/dig/
59core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/ 61core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/
60core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/ 62core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/
61core-$(CONFIG_KVM) += arch/ia64/kvm/ 63core-$(CONFIG_KVM) += arch/ia64/kvm/
64core-$(CONFIG_XEN) += arch/ia64/xen/
62 65
63drivers-$(CONFIG_PCI) += arch/ia64/pci/ 66drivers-$(CONFIG_PCI) += arch/ia64/pci/
64drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ 67drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/
diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig
index 9f483976228f..e05f9e1d3faa 100644
--- a/arch/ia64/configs/generic_defconfig
+++ b/arch/ia64/configs/generic_defconfig
@@ -233,6 +233,8 @@ CONFIG_DMIID=y
233CONFIG_BINFMT_ELF=y 233CONFIG_BINFMT_ELF=y
234CONFIG_BINFMT_MISC=m 234CONFIG_BINFMT_MISC=m
235 235
236# CONFIG_DMAR is not set
237
236# 238#
237# Power management and ACPI 239# Power management and ACPI
238# 240#
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig
index 797acf9066c1..c522edf23c62 100644
--- a/arch/ia64/configs/tiger_defconfig
+++ b/arch/ia64/configs/tiger_defconfig
@@ -172,6 +172,8 @@ CONFIG_DMIID=y
172CONFIG_BINFMT_ELF=y 172CONFIG_BINFMT_ELF=y
173CONFIG_BINFMT_MISC=m 173CONFIG_BINFMT_MISC=m
174 174
175# CONFIG_DMAR is not set
176
175# 177#
176# Power management and ACPI 178# Power management and ACPI
177# 179#
diff --git a/arch/ia64/dig/Makefile b/arch/ia64/dig/Makefile
index 971cd7870dd4..5c0283830bd6 100644
--- a/arch/ia64/dig/Makefile
+++ b/arch/ia64/dig/Makefile
@@ -6,4 +6,9 @@
6# 6#
7 7
8obj-y := setup.o 8obj-y := setup.o
9ifeq ($(CONFIG_DMAR), y)
10obj-$(CONFIG_IA64_GENERIC) += machvec.o machvec_vtd.o dig_vtd_iommu.o
11else
9obj-$(CONFIG_IA64_GENERIC) += machvec.o 12obj-$(CONFIG_IA64_GENERIC) += machvec.o
13endif
14obj-$(CONFIG_IA64_DIG_VTD) += dig_vtd_iommu.o
diff --git a/arch/ia64/dig/dig_vtd_iommu.c b/arch/ia64/dig/dig_vtd_iommu.c
new file mode 100644
index 000000000000..1c8a079017a3
--- /dev/null
+++ b/arch/ia64/dig/dig_vtd_iommu.c
@@ -0,0 +1,59 @@
1#include <linux/types.h>
2#include <linux/kernel.h>
3#include <linux/module.h>
4#include <linux/intel-iommu.h>
5
6void *
7vtd_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
8 gfp_t flags)
9{
10 return intel_alloc_coherent(dev, size, dma_handle, flags);
11}
12EXPORT_SYMBOL_GPL(vtd_alloc_coherent);
13
14void
15vtd_free_coherent(struct device *dev, size_t size, void *vaddr,
16 dma_addr_t dma_handle)
17{
18 intel_free_coherent(dev, size, vaddr, dma_handle);
19}
20EXPORT_SYMBOL_GPL(vtd_free_coherent);
21
22dma_addr_t
23vtd_map_single_attrs(struct device *dev, void *addr, size_t size,
24 int dir, struct dma_attrs *attrs)
25{
26 return intel_map_single(dev, (phys_addr_t)addr, size, dir);
27}
28EXPORT_SYMBOL_GPL(vtd_map_single_attrs);
29
30void
31vtd_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size,
32 int dir, struct dma_attrs *attrs)
33{
34 intel_unmap_single(dev, iova, size, dir);
35}
36EXPORT_SYMBOL_GPL(vtd_unmap_single_attrs);
37
38int
39vtd_map_sg_attrs(struct device *dev, struct scatterlist *sglist, int nents,
40 int dir, struct dma_attrs *attrs)
41{
42 return intel_map_sg(dev, sglist, nents, dir);
43}
44EXPORT_SYMBOL_GPL(vtd_map_sg_attrs);
45
46void
47vtd_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist,
48 int nents, int dir, struct dma_attrs *attrs)
49{
50 intel_unmap_sg(dev, sglist, nents, dir);
51}
52EXPORT_SYMBOL_GPL(vtd_unmap_sg_attrs);
53
54int
55vtd_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
56{
57 return 0;
58}
59EXPORT_SYMBOL_GPL(vtd_dma_mapping_error);
diff --git a/arch/ia64/dig/machvec_vtd.c b/arch/ia64/dig/machvec_vtd.c
new file mode 100644
index 000000000000..7cd3eb471cad
--- /dev/null
+++ b/arch/ia64/dig/machvec_vtd.c
@@ -0,0 +1,3 @@
1#define MACHVEC_PLATFORM_NAME dig_vtd
2#define MACHVEC_PLATFORM_HEADER <asm/machvec_dig_vtd.h>
3#include <asm/machvec_init.h>
diff --git a/arch/ia64/ia32/audit.c b/arch/ia64/ia32/audit.c
index 5e901c75df1b..5c93ddd1e42d 100644
--- a/arch/ia64/ia32/audit.c
+++ b/arch/ia64/ia32/audit.c
@@ -1,4 +1,4 @@
1#include <asm-x86/unistd_32.h> 1#include "../../x86/include/asm/unistd_32.h"
2 2
3unsigned ia32_dir_class[] = { 3unsigned ia32_dir_class[] = {
4#include <asm-generic/audit_dir_write.h> 4#include <asm-generic/audit_dir_write.h>
diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
index 53505bb04771..a8cf19958850 100644
--- a/arch/ia64/ia32/ia32_entry.S
+++ b/arch/ia64/ia32/ia32_entry.S
@@ -108,6 +108,11 @@ GLOBAL_ENTRY(ia32_trace_syscall)
108 ;; 108 ;;
109 st8 [r2]=r3 // initialize return code to -ENOSYS 109 st8 [r2]=r3 // initialize return code to -ENOSYS
110 br.call.sptk.few rp=syscall_trace_enter // give parent a chance to catch syscall args 110 br.call.sptk.few rp=syscall_trace_enter // give parent a chance to catch syscall args
111 cmp.lt p6,p0=r8,r0 // check tracehook
112 adds r2=IA64_PT_REGS_R8_OFFSET+16,sp // r2 = &pt_regs.r8
113 ;;
114(p6) st8.spill [r2]=r8 // store return value in slot for r8
115(p6) br.spnt.few .ret4
111.ret2: // Need to reload arguments (they may be changed by the tracing process) 116.ret2: // Need to reload arguments (they may be changed by the tracing process)
112 adds r2=IA64_PT_REGS_R1_OFFSET+16,sp // r2 = &pt_regs.r1 117 adds r2=IA64_PT_REGS_R1_OFFSET+16,sp // r2 = &pt_regs.r1
113 adds r3=IA64_PT_REGS_R13_OFFSET+16,sp // r3 = &pt_regs.r13 118 adds r3=IA64_PT_REGS_R13_OFFSET+16,sp // r3 = &pt_regs.r13
@@ -199,10 +204,10 @@ ia32_syscall_table:
199 data8 sys_setuid /* 16-bit version */ 204 data8 sys_setuid /* 16-bit version */
200 data8 sys_getuid /* 16-bit version */ 205 data8 sys_getuid /* 16-bit version */
201 data8 compat_sys_stime /* 25 */ 206 data8 compat_sys_stime /* 25 */
202 data8 sys32_ptrace 207 data8 compat_sys_ptrace
203 data8 sys32_alarm 208 data8 sys32_alarm
204 data8 sys_ni_syscall 209 data8 sys_ni_syscall
205 data8 sys32_pause 210 data8 sys_pause
206 data8 compat_sys_utime /* 30 */ 211 data8 compat_sys_utime /* 30 */
207 data8 sys_ni_syscall /* old stty syscall holder */ 212 data8 sys_ni_syscall /* old stty syscall holder */
208 data8 sys_ni_syscall /* old gtty syscall holder */ 213 data8 sys_ni_syscall /* old gtty syscall holder */
@@ -215,7 +220,7 @@ ia32_syscall_table:
215 data8 sys_mkdir 220 data8 sys_mkdir
216 data8 sys_rmdir /* 40 */ 221 data8 sys_rmdir /* 40 */
217 data8 sys_dup 222 data8 sys_dup
218 data8 sys32_pipe 223 data8 sys_pipe
219 data8 compat_sys_times 224 data8 compat_sys_times
220 data8 sys_ni_syscall /* old prof syscall holder */ 225 data8 sys_ni_syscall /* old prof syscall holder */
221 data8 sys32_brk /* 45 */ 226 data8 sys32_brk /* 45 */
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index f4430bb4bbdc..5e92ae00bdbb 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -1098,21 +1098,6 @@ sys32_mremap (unsigned int addr, unsigned int old_len, unsigned int new_len,
1098 return ret; 1098 return ret;
1099} 1099}
1100 1100
1101asmlinkage long
1102sys32_pipe (int __user *fd)
1103{
1104 int retval;
1105 int fds[2];
1106
1107 retval = do_pipe_flags(fds, 0);
1108 if (retval)
1109 goto out;
1110 if (copy_to_user(fd, fds, sizeof(fds)))
1111 retval = -EFAULT;
1112 out:
1113 return retval;
1114}
1115
1116asmlinkage unsigned long 1101asmlinkage unsigned long
1117sys32_alarm (unsigned int seconds) 1102sys32_alarm (unsigned int seconds)
1118{ 1103{
@@ -1209,25 +1194,6 @@ sys32_waitpid (int pid, unsigned int *stat_addr, int options)
1209 return compat_sys_wait4(pid, stat_addr, options, NULL); 1194 return compat_sys_wait4(pid, stat_addr, options, NULL);
1210} 1195}
1211 1196
1212static unsigned int
1213ia32_peek (struct task_struct *child, unsigned long addr, unsigned int *val)
1214{
1215 size_t copied;
1216 unsigned int ret;
1217
1218 copied = access_process_vm(child, addr, val, sizeof(*val), 0);
1219 return (copied != sizeof(ret)) ? -EIO : 0;
1220}
1221
1222static unsigned int
1223ia32_poke (struct task_struct *child, unsigned long addr, unsigned int val)
1224{
1225
1226 if (access_process_vm(child, addr, &val, sizeof(val), 1) != sizeof(val))
1227 return -EIO;
1228 return 0;
1229}
1230
1231/* 1197/*
1232 * The order in which registers are stored in the ptrace regs structure 1198 * The order in which registers are stored in the ptrace regs structure
1233 */ 1199 */
@@ -1525,49 +1491,15 @@ restore_ia32_fpxstate (struct task_struct *tsk, struct ia32_user_fxsr_struct __u
1525 return 0; 1491 return 0;
1526} 1492}
1527 1493
1528asmlinkage long 1494long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
1529sys32_ptrace (int request, pid_t pid, unsigned int addr, unsigned int data) 1495 compat_ulong_t caddr, compat_ulong_t cdata)
1530{ 1496{
1531 struct task_struct *child; 1497 unsigned long addr = caddr;
1532 unsigned int value, tmp; 1498 unsigned long data = cdata;
1499 unsigned int tmp;
1533 long i, ret; 1500 long i, ret;
1534 1501
1535 lock_kernel();
1536 if (request == PTRACE_TRACEME) {
1537 ret = ptrace_traceme();
1538 goto out;
1539 }
1540
1541 child = ptrace_get_task_struct(pid);
1542 if (IS_ERR(child)) {
1543 ret = PTR_ERR(child);
1544 goto out;
1545 }
1546
1547 if (request == PTRACE_ATTACH) {
1548 ret = sys_ptrace(request, pid, addr, data);
1549 goto out_tsk;
1550 }
1551
1552 ret = ptrace_check_attach(child, request == PTRACE_KILL);
1553 if (ret < 0)
1554 goto out_tsk;
1555
1556 switch (request) { 1502 switch (request) {
1557 case PTRACE_PEEKTEXT:
1558 case PTRACE_PEEKDATA: /* read word at location addr */
1559 ret = ia32_peek(child, addr, &value);
1560 if (ret == 0)
1561 ret = put_user(value, (unsigned int __user *) compat_ptr(data));
1562 else
1563 ret = -EIO;
1564 goto out_tsk;
1565
1566 case PTRACE_POKETEXT:
1567 case PTRACE_POKEDATA: /* write the word at location addr */
1568 ret = ia32_poke(child, addr, data);
1569 goto out_tsk;
1570
1571 case PTRACE_PEEKUSR: /* read word at addr in USER area */ 1503 case PTRACE_PEEKUSR: /* read word at addr in USER area */
1572 ret = -EIO; 1504 ret = -EIO;
1573 if ((addr & 3) || addr > 17*sizeof(int)) 1505 if ((addr & 3) || addr > 17*sizeof(int))
@@ -1632,27 +1564,9 @@ sys32_ptrace (int request, pid_t pid, unsigned int addr, unsigned int data)
1632 compat_ptr(data)); 1564 compat_ptr(data));
1633 break; 1565 break;
1634 1566
1635 case PTRACE_GETEVENTMSG:
1636 ret = put_user(child->ptrace_message, (unsigned int __user *) compat_ptr(data));
1637 break;
1638
1639 case PTRACE_SYSCALL: /* continue, stop after next syscall */
1640 case PTRACE_CONT: /* restart after signal. */
1641 case PTRACE_KILL:
1642 case PTRACE_SINGLESTEP: /* execute chile for one instruction */
1643 case PTRACE_DETACH: /* detach a process */
1644 ret = sys_ptrace(request, pid, addr, data);
1645 break;
1646
1647 default: 1567 default:
1648 ret = ptrace_request(child, request, addr, data); 1568 return compat_ptrace_request(child, request, caddr, cdata);
1649 break;
1650
1651 } 1569 }
1652 out_tsk:
1653 put_task_struct(child);
1654 out:
1655 unlock_kernel();
1656 return ret; 1570 return ret;
1657} 1571}
1658 1572
@@ -1704,14 +1618,6 @@ out:
1704} 1618}
1705 1619
1706asmlinkage int 1620asmlinkage int
1707sys32_pause (void)
1708{
1709 current->state = TASK_INTERRUPTIBLE;
1710 schedule();
1711 return -ERESTARTNOHAND;
1712}
1713
1714asmlinkage int
1715sys32_msync (unsigned int start, unsigned int len, int flags) 1621sys32_msync (unsigned int start, unsigned int len, int flags)
1716{ 1622{
1717 unsigned int addr; 1623 unsigned int addr;
diff --git a/arch/ia64/include/asm/break.h b/arch/ia64/include/asm/break.h
index f03402039896..e90c40ec9edf 100644
--- a/arch/ia64/include/asm/break.h
+++ b/arch/ia64/include/asm/break.h
@@ -20,4 +20,13 @@
20 */ 20 */
21#define __IA64_BREAK_SYSCALL 0x100000 21#define __IA64_BREAK_SYSCALL 0x100000
22 22
23/*
24 * Xen specific break numbers:
25 */
26#define __IA64_XEN_HYPERCALL 0x1000
27/* [__IA64_XEN_HYPERPRIVOP_START, __IA64_XEN_HYPERPRIVOP_MAX] is used
28 for xen hyperprivops */
29#define __IA64_XEN_HYPERPRIVOP_START 0x1
30#define __IA64_XEN_HYPERPRIVOP_MAX 0x1a
31
23#endif /* _ASM_IA64_BREAK_H */ 32#endif /* _ASM_IA64_BREAK_H */
diff --git a/arch/ia64/include/asm/cacheflush.h b/arch/ia64/include/asm/cacheflush.h
index afcfbda76e20..c8ce2719fee8 100644
--- a/arch/ia64/include/asm/cacheflush.h
+++ b/arch/ia64/include/asm/cacheflush.h
@@ -34,6 +34,8 @@ do { \
34#define flush_dcache_mmap_unlock(mapping) do { } while (0) 34#define flush_dcache_mmap_unlock(mapping) do { } while (0)
35 35
36extern void flush_icache_range (unsigned long start, unsigned long end); 36extern void flush_icache_range (unsigned long start, unsigned long end);
37extern void clflush_cache_range(void *addr, int size);
38
37 39
38#define flush_icache_user_range(vma, page, user_addr, len) \ 40#define flush_icache_user_range(vma, page, user_addr, len) \
39do { \ 41do { \
diff --git a/arch/ia64/include/asm/device.h b/arch/ia64/include/asm/device.h
index 3db6daf7f251..41ab85d66f33 100644
--- a/arch/ia64/include/asm/device.h
+++ b/arch/ia64/include/asm/device.h
@@ -10,6 +10,9 @@ struct dev_archdata {
10#ifdef CONFIG_ACPI 10#ifdef CONFIG_ACPI
11 void *acpi_handle; 11 void *acpi_handle;
12#endif 12#endif
13#ifdef CONFIG_DMAR
14 void *iommu; /* hook for IOMMU specific extension */
15#endif
13}; 16};
14 17
15#endif /* _ASM_IA64_DEVICE_H */ 18#endif /* _ASM_IA64_DEVICE_H */
diff --git a/arch/ia64/include/asm/dma-mapping.h b/arch/ia64/include/asm/dma-mapping.h
index 06ff1ba21465..bbab7e2b0fc9 100644
--- a/arch/ia64/include/asm/dma-mapping.h
+++ b/arch/ia64/include/asm/dma-mapping.h
@@ -7,6 +7,49 @@
7 */ 7 */
8#include <asm/machvec.h> 8#include <asm/machvec.h>
9#include <linux/scatterlist.h> 9#include <linux/scatterlist.h>
10#include <asm/swiotlb.h>
11
12struct dma_mapping_ops {
13 int (*mapping_error)(struct device *dev,
14 dma_addr_t dma_addr);
15 void* (*alloc_coherent)(struct device *dev, size_t size,
16 dma_addr_t *dma_handle, gfp_t gfp);
17 void (*free_coherent)(struct device *dev, size_t size,
18 void *vaddr, dma_addr_t dma_handle);
19 dma_addr_t (*map_single)(struct device *hwdev, unsigned long ptr,
20 size_t size, int direction);
21 void (*unmap_single)(struct device *dev, dma_addr_t addr,
22 size_t size, int direction);
23 void (*sync_single_for_cpu)(struct device *hwdev,
24 dma_addr_t dma_handle, size_t size,
25 int direction);
26 void (*sync_single_for_device)(struct device *hwdev,
27 dma_addr_t dma_handle, size_t size,
28 int direction);
29 void (*sync_single_range_for_cpu)(struct device *hwdev,
30 dma_addr_t dma_handle, unsigned long offset,
31 size_t size, int direction);
32 void (*sync_single_range_for_device)(struct device *hwdev,
33 dma_addr_t dma_handle, unsigned long offset,
34 size_t size, int direction);
35 void (*sync_sg_for_cpu)(struct device *hwdev,
36 struct scatterlist *sg, int nelems,
37 int direction);
38 void (*sync_sg_for_device)(struct device *hwdev,
39 struct scatterlist *sg, int nelems,
40 int direction);
41 int (*map_sg)(struct device *hwdev, struct scatterlist *sg,
42 int nents, int direction);
43 void (*unmap_sg)(struct device *hwdev,
44 struct scatterlist *sg, int nents,
45 int direction);
46 int (*dma_supported_op)(struct device *hwdev, u64 mask);
47 int is_phys;
48};
49
50extern struct dma_mapping_ops *dma_ops;
51extern struct ia64_machine_vector ia64_mv;
52extern void set_iommu_machvec(void);
10 53
11#define dma_alloc_coherent(dev, size, handle, gfp) \ 54#define dma_alloc_coherent(dev, size, handle, gfp) \
12 platform_dma_alloc_coherent(dev, size, handle, (gfp) | GFP_DMA) 55 platform_dma_alloc_coherent(dev, size, handle, (gfp) | GFP_DMA)
@@ -96,4 +139,11 @@ dma_cache_sync (struct device *dev, void *vaddr, size_t size,
96 139
97#define dma_is_consistent(d, h) (1) /* all we do is coherent memory... */ 140#define dma_is_consistent(d, h) (1) /* all we do is coherent memory... */
98 141
142static inline struct dma_mapping_ops *get_dma_ops(struct device *dev)
143{
144 return dma_ops;
145}
146
147
148
99#endif /* _ASM_IA64_DMA_MAPPING_H */ 149#endif /* _ASM_IA64_DMA_MAPPING_H */
diff --git a/arch/ia64/include/asm/iommu.h b/arch/ia64/include/asm/iommu.h
new file mode 100644
index 000000000000..5fb2bb93de3b
--- /dev/null
+++ b/arch/ia64/include/asm/iommu.h
@@ -0,0 +1,16 @@
1#ifndef _ASM_IA64_IOMMU_H
2#define _ASM_IA64_IOMMU_H 1
3
4#define cpu_has_x2apic 0
5/* 10 seconds */
6#define DMAR_OPERATION_TIMEOUT (((cycles_t) local_cpu_data->itc_freq)*10)
7
8extern void pci_iommu_shutdown(void);
9extern void no_iommu_init(void);
10extern int force_iommu, no_iommu;
11extern int iommu_detected;
12extern void iommu_dma_init(void);
13extern void machvec_init(const char *name);
14extern int forbid_dac;
15
16#endif
diff --git a/arch/ia64/include/asm/kregs.h b/arch/ia64/include/asm/kregs.h
index aefcdfee7f23..39e65f6639f5 100644
--- a/arch/ia64/include/asm/kregs.h
+++ b/arch/ia64/include/asm/kregs.h
@@ -32,7 +32,7 @@
32#define IA64_TR_CURRENT_STACK 1 /* dtr1: maps kernel's memory- & register-stacks */ 32#define IA64_TR_CURRENT_STACK 1 /* dtr1: maps kernel's memory- & register-stacks */
33 33
34#define IA64_TR_ALLOC_BASE 2 /* itr&dtr: Base of dynamic TR resource*/ 34#define IA64_TR_ALLOC_BASE 2 /* itr&dtr: Base of dynamic TR resource*/
35#define IA64_TR_ALLOC_MAX 32 /* Max number for dynamic use*/ 35#define IA64_TR_ALLOC_MAX 64 /* Max number for dynamic use*/
36 36
37/* Processor status register bits: */ 37/* Processor status register bits: */
38#define IA64_PSR_BE_BIT 1 38#define IA64_PSR_BE_BIT 1
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h
index 2b850ccafef5..1ea28bcee33b 100644
--- a/arch/ia64/include/asm/machvec.h
+++ b/arch/ia64/include/asm/machvec.h
@@ -120,6 +120,8 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
120# include <asm/machvec_hpsim.h> 120# include <asm/machvec_hpsim.h>
121# elif defined (CONFIG_IA64_DIG) 121# elif defined (CONFIG_IA64_DIG)
122# include <asm/machvec_dig.h> 122# include <asm/machvec_dig.h>
123# elif defined(CONFIG_IA64_DIG_VTD)
124# include <asm/machvec_dig_vtd.h>
123# elif defined (CONFIG_IA64_HP_ZX1) 125# elif defined (CONFIG_IA64_HP_ZX1)
124# include <asm/machvec_hpzx1.h> 126# include <asm/machvec_hpzx1.h>
125# elif defined (CONFIG_IA64_HP_ZX1_SWIOTLB) 127# elif defined (CONFIG_IA64_HP_ZX1_SWIOTLB)
@@ -128,6 +130,8 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
128# include <asm/machvec_sn2.h> 130# include <asm/machvec_sn2.h>
129# elif defined (CONFIG_IA64_SGI_UV) 131# elif defined (CONFIG_IA64_SGI_UV)
130# include <asm/machvec_uv.h> 132# include <asm/machvec_uv.h>
133# elif defined (CONFIG_IA64_XEN_GUEST)
134# include <asm/machvec_xen.h>
131# elif defined (CONFIG_IA64_GENERIC) 135# elif defined (CONFIG_IA64_GENERIC)
132 136
133# ifdef MACHVEC_PLATFORM_HEADER 137# ifdef MACHVEC_PLATFORM_HEADER
diff --git a/arch/ia64/include/asm/machvec_dig_vtd.h b/arch/ia64/include/asm/machvec_dig_vtd.h
new file mode 100644
index 000000000000..3400b561e711
--- /dev/null
+++ b/arch/ia64/include/asm/machvec_dig_vtd.h
@@ -0,0 +1,38 @@
1#ifndef _ASM_IA64_MACHVEC_DIG_VTD_h
2#define _ASM_IA64_MACHVEC_DIG_VTD_h
3
4extern ia64_mv_setup_t dig_setup;
5extern ia64_mv_dma_alloc_coherent vtd_alloc_coherent;
6extern ia64_mv_dma_free_coherent vtd_free_coherent;
7extern ia64_mv_dma_map_single_attrs vtd_map_single_attrs;
8extern ia64_mv_dma_unmap_single_attrs vtd_unmap_single_attrs;
9extern ia64_mv_dma_map_sg_attrs vtd_map_sg_attrs;
10extern ia64_mv_dma_unmap_sg_attrs vtd_unmap_sg_attrs;
11extern ia64_mv_dma_supported iommu_dma_supported;
12extern ia64_mv_dma_mapping_error vtd_dma_mapping_error;
13extern ia64_mv_dma_init pci_iommu_alloc;
14
15/*
16 * This stuff has dual use!
17 *
18 * For a generic kernel, the macros are used to initialize the
19 * platform's machvec structure. When compiling a non-generic kernel,
20 * the macros are used directly.
21 */
22#define platform_name "dig_vtd"
23#define platform_setup dig_setup
24#define platform_dma_init pci_iommu_alloc
25#define platform_dma_alloc_coherent vtd_alloc_coherent
26#define platform_dma_free_coherent vtd_free_coherent
27#define platform_dma_map_single_attrs vtd_map_single_attrs
28#define platform_dma_unmap_single_attrs vtd_unmap_single_attrs
29#define platform_dma_map_sg_attrs vtd_map_sg_attrs
30#define platform_dma_unmap_sg_attrs vtd_unmap_sg_attrs
31#define platform_dma_sync_single_for_cpu machvec_dma_sync_single
32#define platform_dma_sync_sg_for_cpu machvec_dma_sync_sg
33#define platform_dma_sync_single_for_device machvec_dma_sync_single
34#define platform_dma_sync_sg_for_device machvec_dma_sync_sg
35#define platform_dma_supported iommu_dma_supported
36#define platform_dma_mapping_error vtd_dma_mapping_error
37
38#endif /* _ASM_IA64_MACHVEC_DIG_VTD_h */
diff --git a/arch/ia64/include/asm/machvec_init.h b/arch/ia64/include/asm/machvec_init.h
index 7f21249fba3f..ef964b286842 100644
--- a/arch/ia64/include/asm/machvec_init.h
+++ b/arch/ia64/include/asm/machvec_init.h
@@ -1,3 +1,4 @@
1#include <asm/iommu.h>
1#include <asm/machvec.h> 2#include <asm/machvec.h>
2 3
3extern ia64_mv_send_ipi_t ia64_send_ipi; 4extern ia64_mv_send_ipi_t ia64_send_ipi;
diff --git a/arch/ia64/include/asm/machvec_xen.h b/arch/ia64/include/asm/machvec_xen.h
new file mode 100644
index 000000000000..55f9228056cd
--- /dev/null
+++ b/arch/ia64/include/asm/machvec_xen.h
@@ -0,0 +1,22 @@
1#ifndef _ASM_IA64_MACHVEC_XEN_h
2#define _ASM_IA64_MACHVEC_XEN_h
3
4extern ia64_mv_setup_t dig_setup;
5extern ia64_mv_cpu_init_t xen_cpu_init;
6extern ia64_mv_irq_init_t xen_irq_init;
7extern ia64_mv_send_ipi_t xen_platform_send_ipi;
8
9/*
10 * This stuff has dual use!
11 *
12 * For a generic kernel, the macros are used to initialize the
13 * platform's machvec structure. When compiling a non-generic kernel,
14 * the macros are used directly.
15 */
16#define platform_name "xen"
17#define platform_setup dig_setup
18#define platform_cpu_init xen_cpu_init
19#define platform_irq_init xen_irq_init
20#define platform_send_ipi xen_platform_send_ipi
21
22#endif /* _ASM_IA64_MACHVEC_XEN_h */
diff --git a/arch/ia64/include/asm/meminit.h b/arch/ia64/include/asm/meminit.h
index 7245a5781594..6bc96ee54327 100644
--- a/arch/ia64/include/asm/meminit.h
+++ b/arch/ia64/include/asm/meminit.h
@@ -18,10 +18,11 @@
18 * - crash dumping code reserved region 18 * - crash dumping code reserved region
19 * - Kernel memory map built from EFI memory map 19 * - Kernel memory map built from EFI memory map
20 * - ELF core header 20 * - ELF core header
21 * - xen start info if CONFIG_XEN
21 * 22 *
22 * More could be added if necessary 23 * More could be added if necessary
23 */ 24 */
24#define IA64_MAX_RSVD_REGIONS 8 25#define IA64_MAX_RSVD_REGIONS 9
25 26
26struct rsvd_region { 27struct rsvd_region {
27 unsigned long start; /* virtual address of beginning of element */ 28 unsigned long start; /* virtual address of beginning of element */
diff --git a/arch/ia64/include/asm/native/inst.h b/arch/ia64/include/asm/native/inst.h
index c8efbf7b849e..0a1026cca4fa 100644
--- a/arch/ia64/include/asm/native/inst.h
+++ b/arch/ia64/include/asm/native/inst.h
@@ -36,8 +36,13 @@
36 ;; \ 36 ;; \
37 movl clob = PARAVIRT_POISON; \ 37 movl clob = PARAVIRT_POISON; \
38 ;; 38 ;;
39# define CLOBBER_PRED(pred_clob) \
40 ;; \
41 cmp.eq pred_clob, p0 = r0, r0 \
42 ;;
39#else 43#else
40# define CLOBBER(clob) /* nothing */ 44# define CLOBBER(clob) /* nothing */
45# define CLOBBER_PRED(pred_clob) /* nothing */
41#endif 46#endif
42 47
43#define MOV_FROM_IFA(reg) \ 48#define MOV_FROM_IFA(reg) \
@@ -136,7 +141,8 @@
136 141
137#define SSM_PSR_I(pred, pred_clob, clob) \ 142#define SSM_PSR_I(pred, pred_clob, clob) \
138(pred) ssm psr.i \ 143(pred) ssm psr.i \
139 CLOBBER(clob) 144 CLOBBER(clob) \
145 CLOBBER_PRED(pred_clob)
140 146
141#define RSM_PSR_I(pred, clob0, clob1) \ 147#define RSM_PSR_I(pred, clob0, clob1) \
142(pred) rsm psr.i \ 148(pred) rsm psr.i \
diff --git a/arch/ia64/include/asm/native/pvchk_inst.h b/arch/ia64/include/asm/native/pvchk_inst.h
new file mode 100644
index 000000000000..b8e6eb1090d7
--- /dev/null
+++ b/arch/ia64/include/asm/native/pvchk_inst.h
@@ -0,0 +1,263 @@
1#ifndef _ASM_NATIVE_PVCHK_INST_H
2#define _ASM_NATIVE_PVCHK_INST_H
3
4/******************************************************************************
5 * arch/ia64/include/asm/native/pvchk_inst.h
6 * Checker for paravirtualizations of privileged operations.
7 *
8 * Copyright (C) 2005 Hewlett-Packard Co
9 * Dan Magenheimer <dan.magenheimer@hp.com>
10 *
11 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
12 * VA Linux Systems Japan K.K.
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, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 *
28 */
29
30/**********************************************
31 * Instructions paravirtualized for correctness
32 **********************************************/
33
34/* "fc" and "thash" are privilege-sensitive instructions, meaning they
35 * may have different semantics depending on whether they are executed
36 * at PL0 vs PL!=0. When paravirtualized, these instructions mustn't
37 * be allowed to execute directly, lest incorrect semantics result.
38 */
39
40#define fc .error "fc should not be used directly."
41#define thash .error "thash should not be used directly."
42
43/* Note that "ttag" and "cover" are also privilege-sensitive; "ttag"
44 * is not currently used (though it may be in a long-format VHPT system!)
45 * and the semantics of cover only change if psr.ic is off which is very
46 * rare (and currently non-existent outside of assembly code
47 */
48#define ttag .error "ttag should not be used directly."
49#define cover .error "cover should not be used directly."
50
51/* There are also privilege-sensitive registers. These registers are
52 * readable at any privilege level but only writable at PL0.
53 */
54#define cpuid .error "cpuid should not be used directly."
55#define pmd .error "pmd should not be used directly."
56
57/*
58 * mov ar.eflag =
59 * mov = ar.eflag
60 */
61
62/**********************************************
63 * Instructions paravirtualized for performance
64 **********************************************/
65/*
66 * Those instructions include '.' which can't be handled by cpp.
67 * or can't be handled by cpp easily.
68 * They are handled by sed instead of cpp.
69 */
70
71/* for .S
72 * itc.i
73 * itc.d
74 *
75 * bsw.0
76 * bsw.1
77 *
78 * ssm psr.ic | PSR_DEFAULT_BITS
79 * ssm psr.ic
80 * rsm psr.ic
81 * ssm psr.i
82 * rsm psr.i
83 * rsm psr.i | psr.ic
84 * rsm psr.dt
85 * ssm psr.dt
86 *
87 * mov = cr.ifa
88 * mov = cr.itir
89 * mov = cr.isr
90 * mov = cr.iha
91 * mov = cr.ipsr
92 * mov = cr.iim
93 * mov = cr.iip
94 * mov = cr.ivr
95 * mov = psr
96 *
97 * mov cr.ifa =
98 * mov cr.itir =
99 * mov cr.iha =
100 * mov cr.ipsr =
101 * mov cr.ifs =
102 * mov cr.iip =
103 * mov cr.kr =
104 */
105
106/* for intrinsics
107 * ssm psr.i
108 * rsm psr.i
109 * mov = psr
110 * mov = ivr
111 * mov = tpr
112 * mov cr.itm =
113 * mov eoi =
114 * mov rr[] =
115 * mov = rr[]
116 * mov = kr
117 * mov kr =
118 * ptc.ga
119 */
120
121/*************************************************************
122 * define paravirtualized instrcution macros as nop to ingore.
123 * and check whether arguments are appropriate.
124 *************************************************************/
125
126/* check whether reg is a regular register */
127.macro is_rreg_in reg
128 .ifc "\reg", "r0"
129 nop 0
130 .exitm
131 .endif
132 ;;
133 mov \reg = r0
134 ;;
135.endm
136#define IS_RREG_IN(reg) is_rreg_in reg ;
137
138#define IS_RREG_OUT(reg) \
139 ;; \
140 mov reg = r0 \
141 ;;
142
143#define IS_RREG_CLOB(reg) IS_RREG_OUT(reg)
144
145/* check whether pred is a predicate register */
146#define IS_PRED_IN(pred) \
147 ;; \
148 (pred) nop 0 \
149 ;;
150
151#define IS_PRED_OUT(pred) \
152 ;; \
153 cmp.eq pred, p0 = r0, r0 \
154 ;;
155
156#define IS_PRED_CLOB(pred) IS_PRED_OUT(pred)
157
158
159#define DO_SAVE_MIN(__COVER, SAVE_IFS, EXTRA, WORKAROUND) \
160 nop 0
161#define MOV_FROM_IFA(reg) \
162 IS_RREG_OUT(reg)
163#define MOV_FROM_ITIR(reg) \
164 IS_RREG_OUT(reg)
165#define MOV_FROM_ISR(reg) \
166 IS_RREG_OUT(reg)
167#define MOV_FROM_IHA(reg) \
168 IS_RREG_OUT(reg)
169#define MOV_FROM_IPSR(pred, reg) \
170 IS_PRED_IN(pred) \
171 IS_RREG_OUT(reg)
172#define MOV_FROM_IIM(reg) \
173 IS_RREG_OUT(reg)
174#define MOV_FROM_IIP(reg) \
175 IS_RREG_OUT(reg)
176#define MOV_FROM_IVR(reg, clob) \
177 IS_RREG_OUT(reg) \
178 IS_RREG_CLOB(clob)
179#define MOV_FROM_PSR(pred, reg, clob) \
180 IS_PRED_IN(pred) \
181 IS_RREG_OUT(reg) \
182 IS_RREG_CLOB(clob)
183#define MOV_TO_IFA(reg, clob) \
184 IS_RREG_IN(reg) \
185 IS_RREG_CLOB(clob)
186#define MOV_TO_ITIR(pred, reg, clob) \
187 IS_PRED_IN(pred) \
188 IS_RREG_IN(reg) \
189 IS_RREG_CLOB(clob)
190#define MOV_TO_IHA(pred, reg, clob) \
191 IS_PRED_IN(pred) \
192 IS_RREG_IN(reg) \
193 IS_RREG_CLOB(clob)
194#define MOV_TO_IPSR(pred, reg, clob) \
195 IS_PRED_IN(pred) \
196 IS_RREG_IN(reg) \
197 IS_RREG_CLOB(clob)
198#define MOV_TO_IFS(pred, reg, clob) \
199 IS_PRED_IN(pred) \
200 IS_RREG_IN(reg) \
201 IS_RREG_CLOB(clob)
202#define MOV_TO_IIP(reg, clob) \
203 IS_RREG_IN(reg) \
204 IS_RREG_CLOB(clob)
205#define MOV_TO_KR(kr, reg, clob0, clob1) \
206 IS_RREG_IN(reg) \
207 IS_RREG_CLOB(clob0) \
208 IS_RREG_CLOB(clob1)
209#define ITC_I(pred, reg, clob) \
210 IS_PRED_IN(pred) \
211 IS_RREG_IN(reg) \
212 IS_RREG_CLOB(clob)
213#define ITC_D(pred, reg, clob) \
214 IS_PRED_IN(pred) \
215 IS_RREG_IN(reg) \
216 IS_RREG_CLOB(clob)
217#define ITC_I_AND_D(pred_i, pred_d, reg, clob) \
218 IS_PRED_IN(pred_i) \
219 IS_PRED_IN(pred_d) \
220 IS_RREG_IN(reg) \
221 IS_RREG_CLOB(clob)
222#define THASH(pred, reg0, reg1, clob) \
223 IS_PRED_IN(pred) \
224 IS_RREG_OUT(reg0) \
225 IS_RREG_IN(reg1) \
226 IS_RREG_CLOB(clob)
227#define SSM_PSR_IC_AND_DEFAULT_BITS_AND_SRLZ_I(clob0, clob1) \
228 IS_RREG_CLOB(clob0) \
229 IS_RREG_CLOB(clob1)
230#define SSM_PSR_IC_AND_SRLZ_D(clob0, clob1) \
231 IS_RREG_CLOB(clob0) \
232 IS_RREG_CLOB(clob1)
233#define RSM_PSR_IC(clob) \
234 IS_RREG_CLOB(clob)
235#define SSM_PSR_I(pred, pred_clob, clob) \
236 IS_PRED_IN(pred) \
237 IS_PRED_CLOB(pred_clob) \
238 IS_RREG_CLOB(clob)
239#define RSM_PSR_I(pred, clob0, clob1) \
240 IS_PRED_IN(pred) \
241 IS_RREG_CLOB(clob0) \
242 IS_RREG_CLOB(clob1)
243#define RSM_PSR_I_IC(clob0, clob1, clob2) \
244 IS_RREG_CLOB(clob0) \
245 IS_RREG_CLOB(clob1) \
246 IS_RREG_CLOB(clob2)
247#define RSM_PSR_DT \
248 nop 0
249#define SSM_PSR_DT_AND_SRLZ_I \
250 nop 0
251#define BSW_0(clob0, clob1, clob2) \
252 IS_RREG_CLOB(clob0) \
253 IS_RREG_CLOB(clob1) \
254 IS_RREG_CLOB(clob2)
255#define BSW_1(clob0, clob1) \
256 IS_RREG_CLOB(clob0) \
257 IS_RREG_CLOB(clob1)
258#define COVER \
259 nop 0
260#define RFI \
261 br.ret.sptk.many rp /* defining nop causes dependency error */
262
263#endif /* _ASM_NATIVE_PVCHK_INST_H */
diff --git a/arch/ia64/include/asm/paravirt.h b/arch/ia64/include/asm/paravirt.h
index 660cab044834..2bf3636473fe 100644
--- a/arch/ia64/include/asm/paravirt.h
+++ b/arch/ia64/include/asm/paravirt.h
@@ -117,7 +117,7 @@ static inline void paravirt_post_smp_prepare_boot_cpu(void)
117struct pv_iosapic_ops { 117struct pv_iosapic_ops {
118 void (*pcat_compat_init)(void); 118 void (*pcat_compat_init)(void);
119 119
120 struct irq_chip *(*get_irq_chip)(unsigned long trigger); 120 struct irq_chip *(*__get_irq_chip)(unsigned long trigger);
121 121
122 unsigned int (*__read)(char __iomem *iosapic, unsigned int reg); 122 unsigned int (*__read)(char __iomem *iosapic, unsigned int reg);
123 void (*__write)(char __iomem *iosapic, unsigned int reg, u32 val); 123 void (*__write)(char __iomem *iosapic, unsigned int reg, u32 val);
@@ -135,7 +135,7 @@ iosapic_pcat_compat_init(void)
135static inline struct irq_chip* 135static inline struct irq_chip*
136iosapic_get_irq_chip(unsigned long trigger) 136iosapic_get_irq_chip(unsigned long trigger)
137{ 137{
138 return pv_iosapic_ops.get_irq_chip(trigger); 138 return pv_iosapic_ops.__get_irq_chip(trigger);
139} 139}
140 140
141static inline unsigned int 141static inline unsigned int
diff --git a/arch/ia64/include/asm/pci.h b/arch/ia64/include/asm/pci.h
index ce342fb74246..1d660d89db0d 100644
--- a/arch/ia64/include/asm/pci.h
+++ b/arch/ia64/include/asm/pci.h
@@ -156,4 +156,7 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
156 return channel ? isa_irq_to_vector(15) : isa_irq_to_vector(14); 156 return channel ? isa_irq_to_vector(15) : isa_irq_to_vector(14);
157} 157}
158 158
159#ifdef CONFIG_DMAR
160extern void pci_iommu_alloc(void);
161#endif
159#endif /* _ASM_IA64_PCI_H */ 162#endif /* _ASM_IA64_PCI_H */
diff --git a/arch/ia64/include/asm/ptrace.h b/arch/ia64/include/asm/ptrace.h
index 15f8dcfe6eee..6417c1ecb44e 100644
--- a/arch/ia64/include/asm/ptrace.h
+++ b/arch/ia64/include/asm/ptrace.h
@@ -240,6 +240,12 @@ struct switch_stack {
240 */ 240 */
241# define instruction_pointer(regs) ((regs)->cr_iip + ia64_psr(regs)->ri) 241# define instruction_pointer(regs) ((regs)->cr_iip + ia64_psr(regs)->ri)
242 242
243static inline unsigned long user_stack_pointer(struct pt_regs *regs)
244{
245 /* FIXME: should this be bspstore + nr_dirty regs? */
246 return regs->ar_bspstore;
247}
248
243#define regs_return_value(regs) ((regs)->r8) 249#define regs_return_value(regs) ((regs)->r8)
244 250
245/* Conserve space in histogram by encoding slot bits in address 251/* Conserve space in histogram by encoding slot bits in address
@@ -319,6 +325,8 @@ struct switch_stack {
319 #define arch_has_block_step() (1) 325 #define arch_has_block_step() (1)
320 extern void user_enable_block_step(struct task_struct *); 326 extern void user_enable_block_step(struct task_struct *);
321 327
328#define __ARCH_WANT_COMPAT_SYS_PTRACE
329
322#endif /* !__KERNEL__ */ 330#endif /* !__KERNEL__ */
323 331
324/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */ 332/* pt_all_user_regs is used for PTRACE_GETREGS PTRACE_SETREGS */
diff --git a/arch/ia64/include/asm/pvclock-abi.h b/arch/ia64/include/asm/pvclock-abi.h
new file mode 100644
index 000000000000..44ef9ef8f5b3
--- /dev/null
+++ b/arch/ia64/include/asm/pvclock-abi.h
@@ -0,0 +1,48 @@
1/*
2 * same structure to x86's
3 * Hopefully asm-x86/pvclock-abi.h would be moved to somewhere more generic.
4 * For now, define same duplicated definitions.
5 */
6
7#ifndef _ASM_IA64__PVCLOCK_ABI_H
8#define _ASM_IA64__PVCLOCK_ABI_H
9#ifndef __ASSEMBLY__
10
11/*
12 * These structs MUST NOT be changed.
13 * They are the ABI between hypervisor and guest OS.
14 * Both Xen and KVM are using this.
15 *
16 * pvclock_vcpu_time_info holds the system time and the tsc timestamp
17 * of the last update. So the guest can use the tsc delta to get a
18 * more precise system time. There is one per virtual cpu.
19 *
20 * pvclock_wall_clock references the point in time when the system
21 * time was zero (usually boot time), thus the guest calculates the
22 * current wall clock by adding the system time.
23 *
24 * Protocol for the "version" fields is: hypervisor raises it (making
25 * it uneven) before it starts updating the fields and raises it again
26 * (making it even) when it is done. Thus the guest can make sure the
27 * time values it got are consistent by checking the version before
28 * and after reading them.
29 */
30
31struct pvclock_vcpu_time_info {
32 u32 version;
33 u32 pad0;
34 u64 tsc_timestamp;
35 u64 system_time;
36 u32 tsc_to_system_mul;
37 s8 tsc_shift;
38 u8 pad[3];
39} __attribute__((__packed__)); /* 32 bytes */
40
41struct pvclock_wall_clock {
42 u32 version;
43 u32 sec;
44 u32 nsec;
45} __attribute__((__packed__));
46
47#endif /* __ASSEMBLY__ */
48#endif /* _ASM_IA64__PVCLOCK_ABI_H */
diff --git a/arch/ia64/include/asm/swiotlb.h b/arch/ia64/include/asm/swiotlb.h
new file mode 100644
index 000000000000..fb79423834d0
--- /dev/null
+++ b/arch/ia64/include/asm/swiotlb.h
@@ -0,0 +1,56 @@
1#ifndef ASM_IA64__SWIOTLB_H
2#define ASM_IA64__SWIOTLB_H
3
4#include <linux/dma-mapping.h>
5
6/* SWIOTLB interface */
7
8extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr,
9 size_t size, int dir);
10extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size,
11 dma_addr_t *dma_handle, gfp_t flags);
12extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
13 size_t size, int dir);
14extern void swiotlb_sync_single_for_cpu(struct device *hwdev,
15 dma_addr_t dev_addr,
16 size_t size, int dir);
17extern void swiotlb_sync_single_for_device(struct device *hwdev,
18 dma_addr_t dev_addr,
19 size_t size, int dir);
20extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev,
21 dma_addr_t dev_addr,
22 unsigned long offset,
23 size_t size, int dir);
24extern void swiotlb_sync_single_range_for_device(struct device *hwdev,
25 dma_addr_t dev_addr,
26 unsigned long offset,
27 size_t size, int dir);
28extern void swiotlb_sync_sg_for_cpu(struct device *hwdev,
29 struct scatterlist *sg, int nelems,
30 int dir);
31extern void swiotlb_sync_sg_for_device(struct device *hwdev,
32 struct scatterlist *sg, int nelems,
33 int dir);
34extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg,
35 int nents, int direction);
36extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg,
37 int nents, int direction);
38extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr);
39extern void swiotlb_free_coherent(struct device *hwdev, size_t size,
40 void *vaddr, dma_addr_t dma_handle);
41extern int swiotlb_dma_supported(struct device *hwdev, u64 mask);
42extern void swiotlb_init(void);
43
44extern int swiotlb_force;
45
46#ifdef CONFIG_SWIOTLB
47extern int swiotlb;
48extern void pci_swiotlb_init(void);
49#else
50#define swiotlb 0
51static inline void pci_swiotlb_init(void)
52{
53}
54#endif
55
56#endif /* ASM_IA64__SWIOTLB_H */
diff --git a/arch/ia64/include/asm/sync_bitops.h b/arch/ia64/include/asm/sync_bitops.h
new file mode 100644
index 000000000000..593c12eeb270
--- /dev/null
+++ b/arch/ia64/include/asm/sync_bitops.h
@@ -0,0 +1,51 @@
1#ifndef _ASM_IA64_SYNC_BITOPS_H
2#define _ASM_IA64_SYNC_BITOPS_H
3
4/*
5 * Copyright (C) 2008 Isaku Yamahata <yamahata at valinux co jp>
6 *
7 * Based on synch_bitops.h which Dan Magenhaimer wrote.
8 *
9 * bit operations which provide guaranteed strong synchronisation
10 * when communicating with Xen or other guest OSes running on other CPUs.
11 */
12
13static inline void sync_set_bit(int nr, volatile void *addr)
14{
15 set_bit(nr, addr);
16}
17
18static inline void sync_clear_bit(int nr, volatile void *addr)
19{
20 clear_bit(nr, addr);
21}
22
23static inline void sync_change_bit(int nr, volatile void *addr)
24{
25 change_bit(nr, addr);
26}
27
28static inline int sync_test_and_set_bit(int nr, volatile void *addr)
29{
30 return test_and_set_bit(nr, addr);
31}
32
33static inline int sync_test_and_clear_bit(int nr, volatile void *addr)
34{
35 return test_and_clear_bit(nr, addr);
36}
37
38static inline int sync_test_and_change_bit(int nr, volatile void *addr)
39{
40 return test_and_change_bit(nr, addr);
41}
42
43static inline int sync_test_bit(int nr, const volatile void *addr)
44{
45 return test_bit(nr, addr);
46}
47
48#define sync_cmpxchg(ptr, old, new) \
49 ((__typeof__(*(ptr)))cmpxchg_acq((ptr), (old), (new)))
50
51#endif /* _ASM_IA64_SYNC_BITOPS_H */
diff --git a/arch/ia64/include/asm/syscall.h b/arch/ia64/include/asm/syscall.h
new file mode 100644
index 000000000000..2f758a42f94b
--- /dev/null
+++ b/arch/ia64/include/asm/syscall.h
@@ -0,0 +1,163 @@
1/*
2 * Access to user system call parameters and results
3 *
4 * Copyright (C) 2008 Intel Corp. Shaohua Li <shaohua.li@intel.com>
5 *
6 * This copyrighted material is made available to anyone wishing to use,
7 * modify, copy, or redistribute it subject to the terms and conditions
8 * of the GNU General Public License v.2.
9 *
10 * See asm-generic/syscall.h for descriptions of what we must do here.
11 */
12
13#ifndef _ASM_SYSCALL_H
14#define _ASM_SYSCALL_H 1
15
16#include <linux/sched.h>
17#include <linux/err.h>
18
19static inline long syscall_get_nr(struct task_struct *task,
20 struct pt_regs *regs)
21{
22 if ((long)regs->cr_ifs < 0) /* Not a syscall */
23 return -1;
24
25#ifdef CONFIG_IA32_SUPPORT
26 if (IS_IA32_PROCESS(regs))
27 return regs->r1;
28#endif
29
30 return regs->r15;
31}
32
33static inline void syscall_rollback(struct task_struct *task,
34 struct pt_regs *regs)
35{
36#ifdef CONFIG_IA32_SUPPORT
37 if (IS_IA32_PROCESS(regs))
38 regs->r8 = regs->r1;
39#endif
40
41 /* do nothing */
42}
43
44static inline long syscall_get_error(struct task_struct *task,
45 struct pt_regs *regs)
46{
47#ifdef CONFIG_IA32_SUPPORT
48 if (IS_IA32_PROCESS(regs))
49 return regs->r8;
50#endif
51
52 return regs->r10 == -1 ? regs->r8:0;
53}
54
55static inline long syscall_get_return_value(struct task_struct *task,
56 struct pt_regs *regs)
57{
58 return regs->r8;
59}
60
61static inline void syscall_set_return_value(struct task_struct *task,
62 struct pt_regs *regs,
63 int error, long val)
64{
65#ifdef CONFIG_IA32_SUPPORT
66 if (IS_IA32_PROCESS(regs)) {
67 regs->r8 = (long) error ? error : val;
68 return;
69 }
70#endif
71
72 if (error) {
73 /* error < 0, but ia64 uses > 0 return value */
74 regs->r8 = -error;
75 regs->r10 = -1;
76 } else {
77 regs->r8 = val;
78 regs->r10 = 0;
79 }
80}
81
82extern void ia64_syscall_get_set_arguments(struct task_struct *task,
83 struct pt_regs *regs, unsigned int i, unsigned int n,
84 unsigned long *args, int rw);
85static inline void syscall_get_arguments(struct task_struct *task,
86 struct pt_regs *regs,
87 unsigned int i, unsigned int n,
88 unsigned long *args)
89{
90 BUG_ON(i + n > 6);
91
92#ifdef CONFIG_IA32_SUPPORT
93 if (IS_IA32_PROCESS(regs)) {
94 switch (i + n) {
95 case 6:
96 if (!n--) break;
97 *args++ = regs->r13;
98 case 5:
99 if (!n--) break;
100 *args++ = regs->r15;
101 case 4:
102 if (!n--) break;
103 *args++ = regs->r14;
104 case 3:
105 if (!n--) break;
106 *args++ = regs->r10;
107 case 2:
108 if (!n--) break;
109 *args++ = regs->r9;
110 case 1:
111 if (!n--) break;
112 *args++ = regs->r11;
113 case 0:
114 if (!n--) break;
115 default:
116 BUG();
117 break;
118 }
119
120 return;
121 }
122#endif
123 ia64_syscall_get_set_arguments(task, regs, i, n, args, 0);
124}
125
126static inline void syscall_set_arguments(struct task_struct *task,
127 struct pt_regs *regs,
128 unsigned int i, unsigned int n,
129 unsigned long *args)
130{
131 BUG_ON(i + n > 6);
132
133#ifdef CONFIG_IA32_SUPPORT
134 if (IS_IA32_PROCESS(regs)) {
135 switch (i + n) {
136 case 6:
137 if (!n--) break;
138 regs->r13 = *args++;
139 case 5:
140 if (!n--) break;
141 regs->r15 = *args++;
142 case 4:
143 if (!n--) break;
144 regs->r14 = *args++;
145 case 3:
146 if (!n--) break;
147 regs->r10 = *args++;
148 case 2:
149 if (!n--) break;
150 regs->r9 = *args++;
151 case 1:
152 if (!n--) break;
153 regs->r11 = *args++;
154 case 0:
155 if (!n--) break;
156 }
157
158 return;
159 }
160#endif
161 ia64_syscall_get_set_arguments(task, regs, i, n, args, 1);
162}
163#endif /* _ASM_SYSCALL_H */
diff --git a/arch/ia64/include/asm/thread_info.h b/arch/ia64/include/asm/thread_info.h
index 7c60fcdd2efd..ae6922626bf4 100644
--- a/arch/ia64/include/asm/thread_info.h
+++ b/arch/ia64/include/asm/thread_info.h
@@ -87,9 +87,6 @@ struct thread_info {
87#define alloc_task_struct() ((struct task_struct *)__get_free_pages(GFP_KERNEL | __GFP_COMP, KERNEL_STACK_SIZE_ORDER)) 87#define alloc_task_struct() ((struct task_struct *)__get_free_pages(GFP_KERNEL | __GFP_COMP, KERNEL_STACK_SIZE_ORDER))
88#define free_task_struct(tsk) free_pages((unsigned long) (tsk), KERNEL_STACK_SIZE_ORDER) 88#define free_task_struct(tsk) free_pages((unsigned long) (tsk), KERNEL_STACK_SIZE_ORDER)
89 89
90#define tsk_set_notify_resume(tsk) \
91 set_ti_thread_flag(task_thread_info(tsk), TIF_NOTIFY_RESUME)
92extern void tsk_clear_notify_resume(struct task_struct *tsk);
93#endif /* !__ASSEMBLY */ 90#endif /* !__ASSEMBLY */
94 91
95/* 92/*
diff --git a/arch/ia64/include/asm/timex.h b/arch/ia64/include/asm/timex.h
index 05a6baf8a472..4e03cfe74a0c 100644
--- a/arch/ia64/include/asm/timex.h
+++ b/arch/ia64/include/asm/timex.h
@@ -39,4 +39,6 @@ get_cycles (void)
39 return ret; 39 return ret;
40} 40}
41 41
42extern void ia64_cpu_local_tick (void);
43
42#endif /* _ASM_IA64_TIMEX_H */ 44#endif /* _ASM_IA64_TIMEX_H */
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index d535833aab5e..f791576355ad 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -337,6 +337,7 @@
337# define __ARCH_WANT_SYS_NICE 337# define __ARCH_WANT_SYS_NICE
338# define __ARCH_WANT_SYS_OLD_GETRLIMIT 338# define __ARCH_WANT_SYS_OLD_GETRLIMIT
339# define __ARCH_WANT_SYS_OLDUMOUNT 339# define __ARCH_WANT_SYS_OLDUMOUNT
340# define __ARCH_WANT_SYS_PAUSE
340# define __ARCH_WANT_SYS_SIGPENDING 341# define __ARCH_WANT_SYS_SIGPENDING
341# define __ARCH_WANT_SYS_SIGPROCMASK 342# define __ARCH_WANT_SYS_SIGPROCMASK
342# define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND 343# define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
diff --git a/arch/ia64/include/asm/xen/events.h b/arch/ia64/include/asm/xen/events.h
new file mode 100644
index 000000000000..73248781fba8
--- /dev/null
+++ b/arch/ia64/include/asm/xen/events.h
@@ -0,0 +1,50 @@
1/******************************************************************************
2 * arch/ia64/include/asm/xen/events.h
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22#ifndef _ASM_IA64_XEN_EVENTS_H
23#define _ASM_IA64_XEN_EVENTS_H
24
25enum ipi_vector {
26 XEN_RESCHEDULE_VECTOR,
27 XEN_IPI_VECTOR,
28 XEN_CMCP_VECTOR,
29 XEN_CPEP_VECTOR,
30
31 XEN_NR_IPIS,
32};
33
34static inline int xen_irqs_disabled(struct pt_regs *regs)
35{
36 return !(ia64_psr(regs)->i);
37}
38
39static inline void xen_do_IRQ(int irq, struct pt_regs *regs)
40{
41 struct pt_regs *old_regs;
42 old_regs = set_irq_regs(regs);
43 irq_enter();
44 __do_IRQ(irq);
45 irq_exit();
46 set_irq_regs(old_regs);
47}
48#define irq_ctx_init(cpu) do { } while (0)
49
50#endif /* _ASM_IA64_XEN_EVENTS_H */
diff --git a/arch/ia64/include/asm/xen/grant_table.h b/arch/ia64/include/asm/xen/grant_table.h
new file mode 100644
index 000000000000..2b1fae0e2d11
--- /dev/null
+++ b/arch/ia64/include/asm/xen/grant_table.h
@@ -0,0 +1,29 @@
1/******************************************************************************
2 * arch/ia64/include/asm/xen/grant_table.h
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#ifndef _ASM_IA64_XEN_GRANT_TABLE_H
24#define _ASM_IA64_XEN_GRANT_TABLE_H
25
26struct vm_struct *xen_alloc_vm_area(unsigned long size);
27void xen_free_vm_area(struct vm_struct *area);
28
29#endif /* _ASM_IA64_XEN_GRANT_TABLE_H */
diff --git a/arch/ia64/include/asm/xen/hypercall.h b/arch/ia64/include/asm/xen/hypercall.h
new file mode 100644
index 000000000000..96fc62366aa4
--- /dev/null
+++ b/arch/ia64/include/asm/xen/hypercall.h
@@ -0,0 +1,265 @@
1/******************************************************************************
2 * hypercall.h
3 *
4 * Linux-specific hypervisor handling.
5 *
6 * Copyright (c) 2002-2004, K A Fraser
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation; or, when distributed
11 * separately from the Linux kernel or incorporated into other
12 * software packages, subject to the following license:
13 *
14 * Permission is hereby granted, free of charge, to any person obtaining a copy
15 * of this source file (the "Software"), to deal in the Software without
16 * restriction, including without limitation the rights to use, copy, modify,
17 * merge, publish, distribute, sublicense, and/or sell copies of the Software,
18 * and to permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be included in
22 * all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30 * IN THE SOFTWARE.
31 */
32
33#ifndef _ASM_IA64_XEN_HYPERCALL_H
34#define _ASM_IA64_XEN_HYPERCALL_H
35
36#include <xen/interface/xen.h>
37#include <xen/interface/physdev.h>
38#include <xen/interface/sched.h>
39#include <asm/xen/xcom_hcall.h>
40struct xencomm_handle;
41extern unsigned long __hypercall(unsigned long a1, unsigned long a2,
42 unsigned long a3, unsigned long a4,
43 unsigned long a5, unsigned long cmd);
44
45/*
46 * Assembler stubs for hyper-calls.
47 */
48
49#define _hypercall0(type, name) \
50({ \
51 long __res; \
52 __res = __hypercall(0, 0, 0, 0, 0, __HYPERVISOR_##name);\
53 (type)__res; \
54})
55
56#define _hypercall1(type, name, a1) \
57({ \
58 long __res; \
59 __res = __hypercall((unsigned long)a1, \
60 0, 0, 0, 0, __HYPERVISOR_##name); \
61 (type)__res; \
62})
63
64#define _hypercall2(type, name, a1, a2) \
65({ \
66 long __res; \
67 __res = __hypercall((unsigned long)a1, \
68 (unsigned long)a2, \
69 0, 0, 0, __HYPERVISOR_##name); \
70 (type)__res; \
71})
72
73#define _hypercall3(type, name, a1, a2, a3) \
74({ \
75 long __res; \
76 __res = __hypercall((unsigned long)a1, \
77 (unsigned long)a2, \
78 (unsigned long)a3, \
79 0, 0, __HYPERVISOR_##name); \
80 (type)__res; \
81})
82
83#define _hypercall4(type, name, a1, a2, a3, a4) \
84({ \
85 long __res; \
86 __res = __hypercall((unsigned long)a1, \
87 (unsigned long)a2, \
88 (unsigned long)a3, \
89 (unsigned long)a4, \
90 0, __HYPERVISOR_##name); \
91 (type)__res; \
92})
93
94#define _hypercall5(type, name, a1, a2, a3, a4, a5) \
95({ \
96 long __res; \
97 __res = __hypercall((unsigned long)a1, \
98 (unsigned long)a2, \
99 (unsigned long)a3, \
100 (unsigned long)a4, \
101 (unsigned long)a5, \
102 __HYPERVISOR_##name); \
103 (type)__res; \
104})
105
106
107static inline int
108xencomm_arch_hypercall_sched_op(int cmd, struct xencomm_handle *arg)
109{
110 return _hypercall2(int, sched_op_new, cmd, arg);
111}
112
113static inline long
114HYPERVISOR_set_timer_op(u64 timeout)
115{
116 unsigned long timeout_hi = (unsigned long)(timeout >> 32);
117 unsigned long timeout_lo = (unsigned long)timeout;
118 return _hypercall2(long, set_timer_op, timeout_lo, timeout_hi);
119}
120
121static inline int
122xencomm_arch_hypercall_multicall(struct xencomm_handle *call_list,
123 int nr_calls)
124{
125 return _hypercall2(int, multicall, call_list, nr_calls);
126}
127
128static inline int
129xencomm_arch_hypercall_memory_op(unsigned int cmd, struct xencomm_handle *arg)
130{
131 return _hypercall2(int, memory_op, cmd, arg);
132}
133
134static inline int
135xencomm_arch_hypercall_event_channel_op(int cmd, struct xencomm_handle *arg)
136{
137 return _hypercall2(int, event_channel_op, cmd, arg);
138}
139
140static inline int
141xencomm_arch_hypercall_xen_version(int cmd, struct xencomm_handle *arg)
142{
143 return _hypercall2(int, xen_version, cmd, arg);
144}
145
146static inline int
147xencomm_arch_hypercall_console_io(int cmd, int count,
148 struct xencomm_handle *str)
149{
150 return _hypercall3(int, console_io, cmd, count, str);
151}
152
153static inline int
154xencomm_arch_hypercall_physdev_op(int cmd, struct xencomm_handle *arg)
155{
156 return _hypercall2(int, physdev_op, cmd, arg);
157}
158
159static inline int
160xencomm_arch_hypercall_grant_table_op(unsigned int cmd,
161 struct xencomm_handle *uop,
162 unsigned int count)
163{
164 return _hypercall3(int, grant_table_op, cmd, uop, count);
165}
166
167int HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count);
168
169extern int xencomm_arch_hypercall_suspend(struct xencomm_handle *arg);
170
171static inline int
172xencomm_arch_hypercall_callback_op(int cmd, struct xencomm_handle *arg)
173{
174 return _hypercall2(int, callback_op, cmd, arg);
175}
176
177static inline long
178xencomm_arch_hypercall_vcpu_op(int cmd, int cpu, void *arg)
179{
180 return _hypercall3(long, vcpu_op, cmd, cpu, arg);
181}
182
183static inline int
184HYPERVISOR_physdev_op(int cmd, void *arg)
185{
186 switch (cmd) {
187 case PHYSDEVOP_eoi:
188 return _hypercall1(int, ia64_fast_eoi,
189 ((struct physdev_eoi *)arg)->irq);
190 default:
191 return xencomm_hypercall_physdev_op(cmd, arg);
192 }
193}
194
195static inline long
196xencomm_arch_hypercall_opt_feature(struct xencomm_handle *arg)
197{
198 return _hypercall1(long, opt_feature, arg);
199}
200
201/* for balloon driver */
202#define HYPERVISOR_update_va_mapping(va, new_val, flags) (0)
203
204/* Use xencomm to do hypercalls. */
205#define HYPERVISOR_sched_op xencomm_hypercall_sched_op
206#define HYPERVISOR_event_channel_op xencomm_hypercall_event_channel_op
207#define HYPERVISOR_callback_op xencomm_hypercall_callback_op
208#define HYPERVISOR_multicall xencomm_hypercall_multicall
209#define HYPERVISOR_xen_version xencomm_hypercall_xen_version
210#define HYPERVISOR_console_io xencomm_hypercall_console_io
211#define HYPERVISOR_memory_op xencomm_hypercall_memory_op
212#define HYPERVISOR_suspend xencomm_hypercall_suspend
213#define HYPERVISOR_vcpu_op xencomm_hypercall_vcpu_op
214#define HYPERVISOR_opt_feature xencomm_hypercall_opt_feature
215
216/* to compile gnttab_copy_grant_page() in drivers/xen/core/gnttab.c */
217#define HYPERVISOR_mmu_update(req, count, success_count, domid) ({ BUG(); 0; })
218
219static inline int
220HYPERVISOR_shutdown(
221 unsigned int reason)
222{
223 struct sched_shutdown sched_shutdown = {
224 .reason = reason
225 };
226
227 int rc = HYPERVISOR_sched_op(SCHEDOP_shutdown, &sched_shutdown);
228
229 return rc;
230}
231
232/* for netfront.c, netback.c */
233#define MULTI_UVMFLAGS_INDEX 0 /* XXX any value */
234
235static inline void
236MULTI_update_va_mapping(
237 struct multicall_entry *mcl, unsigned long va,
238 pte_t new_val, unsigned long flags)
239{
240 mcl->op = __HYPERVISOR_update_va_mapping;
241 mcl->result = 0;
242}
243
244static inline void
245MULTI_grant_table_op(struct multicall_entry *mcl, unsigned int cmd,
246 void *uop, unsigned int count)
247{
248 mcl->op = __HYPERVISOR_grant_table_op;
249 mcl->args[0] = cmd;
250 mcl->args[1] = (unsigned long)uop;
251 mcl->args[2] = count;
252}
253
254static inline void
255MULTI_mmu_update(struct multicall_entry *mcl, struct mmu_update *req,
256 int count, int *success_count, domid_t domid)
257{
258 mcl->op = __HYPERVISOR_mmu_update;
259 mcl->args[0] = (unsigned long)req;
260 mcl->args[1] = count;
261 mcl->args[2] = (unsigned long)success_count;
262 mcl->args[3] = domid;
263}
264
265#endif /* _ASM_IA64_XEN_HYPERCALL_H */
diff --git a/arch/ia64/include/asm/xen/hypervisor.h b/arch/ia64/include/asm/xen/hypervisor.h
new file mode 100644
index 000000000000..7a804e80fc67
--- /dev/null
+++ b/arch/ia64/include/asm/xen/hypervisor.h
@@ -0,0 +1,89 @@
1/******************************************************************************
2 * hypervisor.h
3 *
4 * Linux-specific hypervisor handling.
5 *
6 * Copyright (c) 2002-2004, K A Fraser
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation; or, when distributed
11 * separately from the Linux kernel or incorporated into other
12 * software packages, subject to the following license:
13 *
14 * Permission is hereby granted, free of charge, to any person obtaining a copy
15 * of this source file (the "Software"), to deal in the Software without
16 * restriction, including without limitation the rights to use, copy, modify,
17 * merge, publish, distribute, sublicense, and/or sell copies of the Software,
18 * and to permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be included in
22 * all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30 * IN THE SOFTWARE.
31 */
32
33#ifndef _ASM_IA64_XEN_HYPERVISOR_H
34#define _ASM_IA64_XEN_HYPERVISOR_H
35
36#ifdef CONFIG_XEN
37
38#include <linux/init.h>
39#include <xen/interface/xen.h>
40#include <xen/interface/version.h> /* to compile feature.c */
41#include <xen/features.h> /* to comiple xen-netfront.c */
42#include <asm/xen/hypercall.h>
43
44/* xen_domain_type is set before executing any C code by early_xen_setup */
45enum xen_domain_type {
46 XEN_NATIVE,
47 XEN_PV_DOMAIN,
48 XEN_HVM_DOMAIN,
49};
50
51extern enum xen_domain_type xen_domain_type;
52
53#define xen_domain() (xen_domain_type != XEN_NATIVE)
54#define xen_pv_domain() (xen_domain_type == XEN_PV_DOMAIN)
55#define xen_initial_domain() (xen_pv_domain() && \
56 (xen_start_info->flags & SIF_INITDOMAIN))
57#define xen_hvm_domain() (xen_domain_type == XEN_HVM_DOMAIN)
58
59/* deprecated. remove this */
60#define is_running_on_xen() (xen_domain_type == XEN_PV_DOMAIN)
61
62extern struct shared_info *HYPERVISOR_shared_info;
63extern struct start_info *xen_start_info;
64
65void __init xen_setup_vcpu_info_placement(void);
66void force_evtchn_callback(void);
67
68/* for drivers/xen/balloon/balloon.c */
69#ifdef CONFIG_XEN_SCRUB_PAGES
70#define scrub_pages(_p, _n) memset((void *)(_p), 0, (_n) << PAGE_SHIFT)
71#else
72#define scrub_pages(_p, _n) ((void)0)
73#endif
74
75/* For setup_arch() in arch/ia64/kernel/setup.c */
76void xen_ia64_enable_opt_feature(void);
77
78#else /* CONFIG_XEN */
79
80#define xen_domain() (0)
81#define xen_pv_domain() (0)
82#define xen_initial_domain() (0)
83#define xen_hvm_domain() (0)
84#define is_running_on_xen() (0) /* deprecated. remove this */
85#endif
86
87#define is_initial_xendomain() (0) /* deprecated. remove this */
88
89#endif /* _ASM_IA64_XEN_HYPERVISOR_H */
diff --git a/arch/ia64/include/asm/xen/inst.h b/arch/ia64/include/asm/xen/inst.h
new file mode 100644
index 000000000000..19c2ae1d878a
--- /dev/null
+++ b/arch/ia64/include/asm/xen/inst.h
@@ -0,0 +1,458 @@
1/******************************************************************************
2 * arch/ia64/include/asm/xen/inst.h
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <asm/xen/privop.h>
24
25#define ia64_ivt xen_ivt
26#define DO_SAVE_MIN XEN_DO_SAVE_MIN
27
28#define __paravirt_switch_to xen_switch_to
29#define __paravirt_leave_syscall xen_leave_syscall
30#define __paravirt_work_processed_syscall xen_work_processed_syscall
31#define __paravirt_leave_kernel xen_leave_kernel
32#define __paravirt_pending_syscall_end xen_work_pending_syscall_end
33#define __paravirt_work_processed_syscall_target \
34 xen_work_processed_syscall
35
36#define MOV_FROM_IFA(reg) \
37 movl reg = XSI_IFA; \
38 ;; \
39 ld8 reg = [reg]
40
41#define MOV_FROM_ITIR(reg) \
42 movl reg = XSI_ITIR; \
43 ;; \
44 ld8 reg = [reg]
45
46#define MOV_FROM_ISR(reg) \
47 movl reg = XSI_ISR; \
48 ;; \
49 ld8 reg = [reg]
50
51#define MOV_FROM_IHA(reg) \
52 movl reg = XSI_IHA; \
53 ;; \
54 ld8 reg = [reg]
55
56#define MOV_FROM_IPSR(pred, reg) \
57(pred) movl reg = XSI_IPSR; \
58 ;; \
59(pred) ld8 reg = [reg]
60
61#define MOV_FROM_IIM(reg) \
62 movl reg = XSI_IIM; \
63 ;; \
64 ld8 reg = [reg]
65
66#define MOV_FROM_IIP(reg) \
67 movl reg = XSI_IIP; \
68 ;; \
69 ld8 reg = [reg]
70
71.macro __MOV_FROM_IVR reg, clob
72 .ifc "\reg", "r8"
73 XEN_HYPER_GET_IVR
74 .exitm
75 .endif
76 .ifc "\clob", "r8"
77 XEN_HYPER_GET_IVR
78 ;;
79 mov \reg = r8
80 .exitm
81 .endif
82
83 mov \clob = r8
84 ;;
85 XEN_HYPER_GET_IVR
86 ;;
87 mov \reg = r8
88 ;;
89 mov r8 = \clob
90.endm
91#define MOV_FROM_IVR(reg, clob) __MOV_FROM_IVR reg, clob
92
93.macro __MOV_FROM_PSR pred, reg, clob
94 .ifc "\reg", "r8"
95 (\pred) XEN_HYPER_GET_PSR;
96 .exitm
97 .endif
98 .ifc "\clob", "r8"
99 (\pred) XEN_HYPER_GET_PSR
100 ;;
101 (\pred) mov \reg = r8
102 .exitm
103 .endif
104
105 (\pred) mov \clob = r8
106 (\pred) XEN_HYPER_GET_PSR
107 ;;
108 (\pred) mov \reg = r8
109 (\pred) mov r8 = \clob
110.endm
111#define MOV_FROM_PSR(pred, reg, clob) __MOV_FROM_PSR pred, reg, clob
112
113
114#define MOV_TO_IFA(reg, clob) \
115 movl clob = XSI_IFA; \
116 ;; \
117 st8 [clob] = reg \
118
119#define MOV_TO_ITIR(pred, reg, clob) \
120(pred) movl clob = XSI_ITIR; \
121 ;; \
122(pred) st8 [clob] = reg
123
124#define MOV_TO_IHA(pred, reg, clob) \
125(pred) movl clob = XSI_IHA; \
126 ;; \
127(pred) st8 [clob] = reg
128
129#define MOV_TO_IPSR(pred, reg, clob) \
130(pred) movl clob = XSI_IPSR; \
131 ;; \
132(pred) st8 [clob] = reg; \
133 ;;
134
135#define MOV_TO_IFS(pred, reg, clob) \
136(pred) movl clob = XSI_IFS; \
137 ;; \
138(pred) st8 [clob] = reg; \
139 ;;
140
141#define MOV_TO_IIP(reg, clob) \
142 movl clob = XSI_IIP; \
143 ;; \
144 st8 [clob] = reg
145
146.macro ____MOV_TO_KR kr, reg, clob0, clob1
147 .ifc "\clob0", "r9"
148 .error "clob0 \clob0 must not be r9"
149 .endif
150 .ifc "\clob1", "r8"
151 .error "clob1 \clob1 must not be r8"
152 .endif
153
154 .ifnc "\reg", "r9"
155 .ifnc "\clob1", "r9"
156 mov \clob1 = r9
157 .endif
158 mov r9 = \reg
159 .endif
160 .ifnc "\clob0", "r8"
161 mov \clob0 = r8
162 .endif
163 mov r8 = \kr
164 ;;
165 XEN_HYPER_SET_KR
166
167 .ifnc "\reg", "r9"
168 .ifnc "\clob1", "r9"
169 mov r9 = \clob1
170 .endif
171 .endif
172 .ifnc "\clob0", "r8"
173 mov r8 = \clob0
174 .endif
175.endm
176
177.macro __MOV_TO_KR kr, reg, clob0, clob1
178 .ifc "\clob0", "r9"
179 ____MOV_TO_KR \kr, \reg, \clob1, \clob0
180 .exitm
181 .endif
182 .ifc "\clob1", "r8"
183 ____MOV_TO_KR \kr, \reg, \clob1, \clob0
184 .exitm
185 .endif
186
187 ____MOV_TO_KR \kr, \reg, \clob0, \clob1
188.endm
189
190#define MOV_TO_KR(kr, reg, clob0, clob1) \
191 __MOV_TO_KR IA64_KR_ ## kr, reg, clob0, clob1
192
193
194.macro __ITC_I pred, reg, clob
195 .ifc "\reg", "r8"
196 (\pred) XEN_HYPER_ITC_I
197 .exitm
198 .endif
199 .ifc "\clob", "r8"
200 (\pred) mov r8 = \reg
201 ;;
202 (\pred) XEN_HYPER_ITC_I
203 .exitm
204 .endif
205
206 (\pred) mov \clob = r8
207 (\pred) mov r8 = \reg
208 ;;
209 (\pred) XEN_HYPER_ITC_I
210 ;;
211 (\pred) mov r8 = \clob
212 ;;
213.endm
214#define ITC_I(pred, reg, clob) __ITC_I pred, reg, clob
215
216.macro __ITC_D pred, reg, clob
217 .ifc "\reg", "r8"
218 (\pred) XEN_HYPER_ITC_D
219 ;;
220 .exitm
221 .endif
222 .ifc "\clob", "r8"
223 (\pred) mov r8 = \reg
224 ;;
225 (\pred) XEN_HYPER_ITC_D
226 ;;
227 .exitm
228 .endif
229
230 (\pred) mov \clob = r8
231 (\pred) mov r8 = \reg
232 ;;
233 (\pred) XEN_HYPER_ITC_D
234 ;;
235 (\pred) mov r8 = \clob
236 ;;
237.endm
238#define ITC_D(pred, reg, clob) __ITC_D pred, reg, clob
239
240.macro __ITC_I_AND_D pred_i, pred_d, reg, clob
241 .ifc "\reg", "r8"
242 (\pred_i)XEN_HYPER_ITC_I
243 ;;
244 (\pred_d)XEN_HYPER_ITC_D
245 ;;
246 .exitm
247 .endif
248 .ifc "\clob", "r8"
249 mov r8 = \reg
250 ;;
251 (\pred_i)XEN_HYPER_ITC_I
252 ;;
253 (\pred_d)XEN_HYPER_ITC_D
254 ;;
255 .exitm
256 .endif
257
258 mov \clob = r8
259 mov r8 = \reg
260 ;;
261 (\pred_i)XEN_HYPER_ITC_I
262 ;;
263 (\pred_d)XEN_HYPER_ITC_D
264 ;;
265 mov r8 = \clob
266 ;;
267.endm
268#define ITC_I_AND_D(pred_i, pred_d, reg, clob) \
269 __ITC_I_AND_D pred_i, pred_d, reg, clob
270
271.macro __THASH pred, reg0, reg1, clob
272 .ifc "\reg0", "r8"
273 (\pred) mov r8 = \reg1
274 (\pred) XEN_HYPER_THASH
275 .exitm
276 .endc
277 .ifc "\reg1", "r8"
278 (\pred) XEN_HYPER_THASH
279 ;;
280 (\pred) mov \reg0 = r8
281 ;;
282 .exitm
283 .endif
284 .ifc "\clob", "r8"
285 (\pred) mov r8 = \reg1
286 (\pred) XEN_HYPER_THASH
287 ;;
288 (\pred) mov \reg0 = r8
289 ;;
290 .exitm
291 .endif
292
293 (\pred) mov \clob = r8
294 (\pred) mov r8 = \reg1
295 (\pred) XEN_HYPER_THASH
296 ;;
297 (\pred) mov \reg0 = r8
298 (\pred) mov r8 = \clob
299 ;;
300.endm
301#define THASH(pred, reg0, reg1, clob) __THASH pred, reg0, reg1, clob
302
303#define SSM_PSR_IC_AND_DEFAULT_BITS_AND_SRLZ_I(clob0, clob1) \
304 mov clob0 = 1; \
305 movl clob1 = XSI_PSR_IC; \
306 ;; \
307 st4 [clob1] = clob0 \
308 ;;
309
310#define SSM_PSR_IC_AND_SRLZ_D(clob0, clob1) \
311 ;; \
312 srlz.d; \
313 mov clob1 = 1; \
314 movl clob0 = XSI_PSR_IC; \
315 ;; \
316 st4 [clob0] = clob1
317
318#define RSM_PSR_IC(clob) \
319 movl clob = XSI_PSR_IC; \
320 ;; \
321 st4 [clob] = r0; \
322 ;;
323
324/* pred will be clobbered */
325#define MASK_TO_PEND_OFS (-1)
326#define SSM_PSR_I(pred, pred_clob, clob) \
327(pred) movl clob = XSI_PSR_I_ADDR \
328 ;; \
329(pred) ld8 clob = [clob] \
330 ;; \
331 /* if (pred) vpsr.i = 1 */ \
332 /* if (pred) (vcpu->vcpu_info->evtchn_upcall_mask)=0 */ \
333(pred) st1 [clob] = r0, MASK_TO_PEND_OFS \
334 ;; \
335 /* if (vcpu->vcpu_info->evtchn_upcall_pending) */ \
336(pred) ld1 clob = [clob] \
337 ;; \
338(pred) cmp.ne.unc pred_clob, p0 = clob, r0 \
339 ;; \
340(pred_clob)XEN_HYPER_SSM_I /* do areal ssm psr.i */
341
342#define RSM_PSR_I(pred, clob0, clob1) \
343 movl clob0 = XSI_PSR_I_ADDR; \
344 mov clob1 = 1; \
345 ;; \
346 ld8 clob0 = [clob0]; \
347 ;; \
348(pred) st1 [clob0] = clob1
349
350#define RSM_PSR_I_IC(clob0, clob1, clob2) \
351 movl clob0 = XSI_PSR_I_ADDR; \
352 movl clob1 = XSI_PSR_IC; \
353 ;; \
354 ld8 clob0 = [clob0]; \
355 mov clob2 = 1; \
356 ;; \
357 /* note: clears both vpsr.i and vpsr.ic! */ \
358 st1 [clob0] = clob2; \
359 st4 [clob1] = r0; \
360 ;;
361
362#define RSM_PSR_DT \
363 XEN_HYPER_RSM_PSR_DT
364
365#define SSM_PSR_DT_AND_SRLZ_I \
366 XEN_HYPER_SSM_PSR_DT
367
368#define BSW_0(clob0, clob1, clob2) \
369 ;; \
370 /* r16-r31 all now hold bank1 values */ \
371 mov clob2 = ar.unat; \
372 movl clob0 = XSI_BANK1_R16; \
373 movl clob1 = XSI_BANK1_R16 + 8; \
374 ;; \
375.mem.offset 0, 0; st8.spill [clob0] = r16, 16; \
376.mem.offset 8, 0; st8.spill [clob1] = r17, 16; \
377 ;; \
378.mem.offset 0, 0; st8.spill [clob0] = r18, 16; \
379.mem.offset 8, 0; st8.spill [clob1] = r19, 16; \
380 ;; \
381.mem.offset 0, 0; st8.spill [clob0] = r20, 16; \
382.mem.offset 8, 0; st8.spill [clob1] = r21, 16; \
383 ;; \
384.mem.offset 0, 0; st8.spill [clob0] = r22, 16; \
385.mem.offset 8, 0; st8.spill [clob1] = r23, 16; \
386 ;; \
387.mem.offset 0, 0; st8.spill [clob0] = r24, 16; \
388.mem.offset 8, 0; st8.spill [clob1] = r25, 16; \
389 ;; \
390.mem.offset 0, 0; st8.spill [clob0] = r26, 16; \
391.mem.offset 8, 0; st8.spill [clob1] = r27, 16; \
392 ;; \
393.mem.offset 0, 0; st8.spill [clob0] = r28, 16; \
394.mem.offset 8, 0; st8.spill [clob1] = r29, 16; \
395 ;; \
396.mem.offset 0, 0; st8.spill [clob0] = r30, 16; \
397.mem.offset 8, 0; st8.spill [clob1] = r31, 16; \
398 ;; \
399 mov clob1 = ar.unat; \
400 movl clob0 = XSI_B1NAT; \
401 ;; \
402 st8 [clob0] = clob1; \
403 mov ar.unat = clob2; \
404 movl clob0 = XSI_BANKNUM; \
405 ;; \
406 st4 [clob0] = r0
407
408
409 /* FIXME: THIS CODE IS NOT NaT SAFE! */
410#define XEN_BSW_1(clob) \
411 mov clob = ar.unat; \
412 movl r30 = XSI_B1NAT; \
413 ;; \
414 ld8 r30 = [r30]; \
415 mov r31 = 1; \
416 ;; \
417 mov ar.unat = r30; \
418 movl r30 = XSI_BANKNUM; \
419 ;; \
420 st4 [r30] = r31; \
421 movl r30 = XSI_BANK1_R16; \
422 movl r31 = XSI_BANK1_R16+8; \
423 ;; \
424 ld8.fill r16 = [r30], 16; \
425 ld8.fill r17 = [r31], 16; \
426 ;; \
427 ld8.fill r18 = [r30], 16; \
428 ld8.fill r19 = [r31], 16; \
429 ;; \
430 ld8.fill r20 = [r30], 16; \
431 ld8.fill r21 = [r31], 16; \
432 ;; \
433 ld8.fill r22 = [r30], 16; \
434 ld8.fill r23 = [r31], 16; \
435 ;; \
436 ld8.fill r24 = [r30], 16; \
437 ld8.fill r25 = [r31], 16; \
438 ;; \
439 ld8.fill r26 = [r30], 16; \
440 ld8.fill r27 = [r31], 16; \
441 ;; \
442 ld8.fill r28 = [r30], 16; \
443 ld8.fill r29 = [r31], 16; \
444 ;; \
445 ld8.fill r30 = [r30]; \
446 ld8.fill r31 = [r31]; \
447 ;; \
448 mov ar.unat = clob
449
450#define BSW_1(clob0, clob1) XEN_BSW_1(clob1)
451
452
453#define COVER \
454 XEN_HYPER_COVER
455
456#define RFI \
457 XEN_HYPER_RFI; \
458 dv_serialize_data
diff --git a/arch/ia64/include/asm/xen/interface.h b/arch/ia64/include/asm/xen/interface.h
new file mode 100644
index 000000000000..f00fab40854d
--- /dev/null
+++ b/arch/ia64/include/asm/xen/interface.h
@@ -0,0 +1,346 @@
1/******************************************************************************
2 * arch-ia64/hypervisor-if.h
3 *
4 * Guest OS interface to IA64 Xen.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to
8 * deal in the Software without restriction, including without limitation the
9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 * sell copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *
24 * Copyright by those who contributed. (in alphabetical order)
25 *
26 * Anthony Xu <anthony.xu@intel.com>
27 * Eddie Dong <eddie.dong@intel.com>
28 * Fred Yang <fred.yang@intel.com>
29 * Kevin Tian <kevin.tian@intel.com>
30 * Alex Williamson <alex.williamson@hp.com>
31 * Chris Wright <chrisw@sous-sol.org>
32 * Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
33 * Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
34 * Hollis Blanchard <hollisb@us.ibm.com>
35 * Isaku Yamahata <yamahata@valinux.co.jp>
36 * Jan Beulich <jbeulich@novell.com>
37 * John Levon <john.levon@sun.com>
38 * Kazuhiro Suzuki <kaz@jp.fujitsu.com>
39 * Keir Fraser <keir.fraser@citrix.com>
40 * Kouya Shimura <kouya@jp.fujitsu.com>
41 * Masaki Kanno <kanno.masaki@jp.fujitsu.com>
42 * Matt Chapman <matthewc@hp.com>
43 * Matthew Chapman <matthewc@hp.com>
44 * Samuel Thibault <samuel.thibault@eu.citrix.com>
45 * Tomonari Horikoshi <t.horikoshi@jp.fujitsu.com>
46 * Tristan Gingold <tgingold@free.fr>
47 * Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
48 * Yutaka Ezaki <yutaka.ezaki@jp.fujitsu.com>
49 * Zhang Xin <xing.z.zhang@intel.com>
50 * Zhang xiantao <xiantao.zhang@intel.com>
51 * dan.magenheimer@hp.com
52 * ian.pratt@cl.cam.ac.uk
53 * michael.fetterman@cl.cam.ac.uk
54 */
55
56#ifndef _ASM_IA64_XEN_INTERFACE_H
57#define _ASM_IA64_XEN_INTERFACE_H
58
59#define __DEFINE_GUEST_HANDLE(name, type) \
60 typedef struct { type *p; } __guest_handle_ ## name
61
62#define DEFINE_GUEST_HANDLE_STRUCT(name) \
63 __DEFINE_GUEST_HANDLE(name, struct name)
64#define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name)
65#define GUEST_HANDLE(name) __guest_handle_ ## name
66#define GUEST_HANDLE_64(name) GUEST_HANDLE(name)
67#define set_xen_guest_handle(hnd, val) do { (hnd).p = val; } while (0)
68
69#ifndef __ASSEMBLY__
70/* Guest handles for primitive C types. */
71__DEFINE_GUEST_HANDLE(uchar, unsigned char);
72__DEFINE_GUEST_HANDLE(uint, unsigned int);
73__DEFINE_GUEST_HANDLE(ulong, unsigned long);
74__DEFINE_GUEST_HANDLE(u64, unsigned long);
75DEFINE_GUEST_HANDLE(char);
76DEFINE_GUEST_HANDLE(int);
77DEFINE_GUEST_HANDLE(long);
78DEFINE_GUEST_HANDLE(void);
79
80typedef unsigned long xen_pfn_t;
81DEFINE_GUEST_HANDLE(xen_pfn_t);
82#define PRI_xen_pfn "lx"
83#endif
84
85/* Arch specific VIRQs definition */
86#define VIRQ_ITC VIRQ_ARCH_0 /* V. Virtual itc timer */
87#define VIRQ_MCA_CMC VIRQ_ARCH_1 /* MCA cmc interrupt */
88#define VIRQ_MCA_CPE VIRQ_ARCH_2 /* MCA cpe interrupt */
89
90/* Maximum number of virtual CPUs in multi-processor guests. */
91/* keep sizeof(struct shared_page) <= PAGE_SIZE.
92 * this is checked in arch/ia64/xen/hypervisor.c. */
93#define MAX_VIRT_CPUS 64
94
95#ifndef __ASSEMBLY__
96
97#define INVALID_MFN (~0UL)
98
99union vac {
100 unsigned long value;
101 struct {
102 int a_int:1;
103 int a_from_int_cr:1;
104 int a_to_int_cr:1;
105 int a_from_psr:1;
106 int a_from_cpuid:1;
107 int a_cover:1;
108 int a_bsw:1;
109 long reserved:57;
110 };
111};
112
113union vdc {
114 unsigned long value;
115 struct {
116 int d_vmsw:1;
117 int d_extint:1;
118 int d_ibr_dbr:1;
119 int d_pmc:1;
120 int d_to_pmd:1;
121 int d_itm:1;
122 long reserved:58;
123 };
124};
125
126struct mapped_regs {
127 union vac vac;
128 union vdc vdc;
129 unsigned long virt_env_vaddr;
130 unsigned long reserved1[29];
131 unsigned long vhpi;
132 unsigned long reserved2[95];
133 union {
134 unsigned long vgr[16];
135 unsigned long bank1_regs[16]; /* bank1 regs (r16-r31)
136 when bank0 active */
137 };
138 union {
139 unsigned long vbgr[16];
140 unsigned long bank0_regs[16]; /* bank0 regs (r16-r31)
141 when bank1 active */
142 };
143 unsigned long vnat;
144 unsigned long vbnat;
145 unsigned long vcpuid[5];
146 unsigned long reserved3[11];
147 unsigned long vpsr;
148 unsigned long vpr;
149 unsigned long reserved4[76];
150 union {
151 unsigned long vcr[128];
152 struct {
153 unsigned long dcr; /* CR0 */
154 unsigned long itm;
155 unsigned long iva;
156 unsigned long rsv1[5];
157 unsigned long pta; /* CR8 */
158 unsigned long rsv2[7];
159 unsigned long ipsr; /* CR16 */
160 unsigned long isr;
161 unsigned long rsv3;
162 unsigned long iip;
163 unsigned long ifa;
164 unsigned long itir;
165 unsigned long iipa;
166 unsigned long ifs;
167 unsigned long iim; /* CR24 */
168 unsigned long iha;
169 unsigned long rsv4[38];
170 unsigned long lid; /* CR64 */
171 unsigned long ivr;
172 unsigned long tpr;
173 unsigned long eoi;
174 unsigned long irr[4];
175 unsigned long itv; /* CR72 */
176 unsigned long pmv;
177 unsigned long cmcv;
178 unsigned long rsv5[5];
179 unsigned long lrr0; /* CR80 */
180 unsigned long lrr1;
181 unsigned long rsv6[46];
182 };
183 };
184 union {
185 unsigned long reserved5[128];
186 struct {
187 unsigned long precover_ifs;
188 unsigned long unat; /* not sure if this is needed
189 until NaT arch is done */
190 int interrupt_collection_enabled; /* virtual psr.ic */
191
192 /* virtual interrupt deliverable flag is
193 * evtchn_upcall_mask in shared info area now.
194 * interrupt_mask_addr is the address
195 * of evtchn_upcall_mask for current vcpu
196 */
197 unsigned char *interrupt_mask_addr;
198 int pending_interruption;
199 unsigned char vpsr_pp;
200 unsigned char vpsr_dfh;
201 unsigned char hpsr_dfh;
202 unsigned char hpsr_mfh;
203 unsigned long reserved5_1[4];
204 int metaphysical_mode; /* 1 = use metaphys mapping
205 0 = use virtual */
206 int banknum; /* 0 or 1, which virtual
207 register bank is active */
208 unsigned long rrs[8]; /* region registers */
209 unsigned long krs[8]; /* kernel registers */
210 unsigned long tmp[16]; /* temp registers
211 (e.g. for hyperprivops) */
212 };
213 };
214};
215
216struct arch_vcpu_info {
217 /* nothing */
218};
219
220/*
221 * This structure is used for magic page in domain pseudo physical address
222 * space and the result of XENMEM_machine_memory_map.
223 * As the XENMEM_machine_memory_map result,
224 * xen_memory_map::nr_entries indicates the size in bytes
225 * including struct xen_ia64_memmap_info. Not the number of entries.
226 */
227struct xen_ia64_memmap_info {
228 uint64_t efi_memmap_size; /* size of EFI memory map */
229 uint64_t efi_memdesc_size; /* size of an EFI memory map
230 * descriptor */
231 uint32_t efi_memdesc_version; /* memory descriptor version */
232 void *memdesc[0]; /* array of efi_memory_desc_t */
233};
234
235struct arch_shared_info {
236 /* PFN of the start_info page. */
237 unsigned long start_info_pfn;
238
239 /* Interrupt vector for event channel. */
240 int evtchn_vector;
241
242 /* PFN of memmap_info page */
243 unsigned int memmap_info_num_pages; /* currently only = 1 case is
244 supported. */
245 unsigned long memmap_info_pfn;
246
247 uint64_t pad[31];
248};
249
250struct xen_callback {
251 unsigned long ip;
252};
253typedef struct xen_callback xen_callback_t;
254
255#endif /* !__ASSEMBLY__ */
256
257/* Size of the shared_info area (this is not related to page size). */
258#define XSI_SHIFT 14
259#define XSI_SIZE (1 << XSI_SHIFT)
260/* Log size of mapped_regs area (64 KB - only 4KB is used). */
261#define XMAPPEDREGS_SHIFT 12
262#define XMAPPEDREGS_SIZE (1 << XMAPPEDREGS_SHIFT)
263/* Offset of XASI (Xen arch shared info) wrt XSI_BASE. */
264#define XMAPPEDREGS_OFS XSI_SIZE
265
266/* Hyperprivops. */
267#define HYPERPRIVOP_START 0x1
268#define HYPERPRIVOP_RFI (HYPERPRIVOP_START + 0x0)
269#define HYPERPRIVOP_RSM_DT (HYPERPRIVOP_START + 0x1)
270#define HYPERPRIVOP_SSM_DT (HYPERPRIVOP_START + 0x2)
271#define HYPERPRIVOP_COVER (HYPERPRIVOP_START + 0x3)
272#define HYPERPRIVOP_ITC_D (HYPERPRIVOP_START + 0x4)
273#define HYPERPRIVOP_ITC_I (HYPERPRIVOP_START + 0x5)
274#define HYPERPRIVOP_SSM_I (HYPERPRIVOP_START + 0x6)
275#define HYPERPRIVOP_GET_IVR (HYPERPRIVOP_START + 0x7)
276#define HYPERPRIVOP_GET_TPR (HYPERPRIVOP_START + 0x8)
277#define HYPERPRIVOP_SET_TPR (HYPERPRIVOP_START + 0x9)
278#define HYPERPRIVOP_EOI (HYPERPRIVOP_START + 0xa)
279#define HYPERPRIVOP_SET_ITM (HYPERPRIVOP_START + 0xb)
280#define HYPERPRIVOP_THASH (HYPERPRIVOP_START + 0xc)
281#define HYPERPRIVOP_PTC_GA (HYPERPRIVOP_START + 0xd)
282#define HYPERPRIVOP_ITR_D (HYPERPRIVOP_START + 0xe)
283#define HYPERPRIVOP_GET_RR (HYPERPRIVOP_START + 0xf)
284#define HYPERPRIVOP_SET_RR (HYPERPRIVOP_START + 0x10)
285#define HYPERPRIVOP_SET_KR (HYPERPRIVOP_START + 0x11)
286#define HYPERPRIVOP_FC (HYPERPRIVOP_START + 0x12)
287#define HYPERPRIVOP_GET_CPUID (HYPERPRIVOP_START + 0x13)
288#define HYPERPRIVOP_GET_PMD (HYPERPRIVOP_START + 0x14)
289#define HYPERPRIVOP_GET_EFLAG (HYPERPRIVOP_START + 0x15)
290#define HYPERPRIVOP_SET_EFLAG (HYPERPRIVOP_START + 0x16)
291#define HYPERPRIVOP_RSM_BE (HYPERPRIVOP_START + 0x17)
292#define HYPERPRIVOP_GET_PSR (HYPERPRIVOP_START + 0x18)
293#define HYPERPRIVOP_SET_RR0_TO_RR4 (HYPERPRIVOP_START + 0x19)
294#define HYPERPRIVOP_MAX (0x1a)
295
296/* Fast and light hypercalls. */
297#define __HYPERVISOR_ia64_fast_eoi __HYPERVISOR_arch_1
298
299/* Xencomm macros. */
300#define XENCOMM_INLINE_MASK 0xf800000000000000UL
301#define XENCOMM_INLINE_FLAG 0x8000000000000000UL
302
303#ifndef __ASSEMBLY__
304
305/*
306 * Optimization features.
307 * The hypervisor may do some special optimizations for guests. This hypercall
308 * can be used to switch on/of these special optimizations.
309 */
310#define __HYPERVISOR_opt_feature 0x700UL
311
312#define XEN_IA64_OPTF_OFF 0x0
313#define XEN_IA64_OPTF_ON 0x1
314
315/*
316 * If this feature is switched on, the hypervisor inserts the
317 * tlb entries without calling the guests traphandler.
318 * This is useful in guests using region 7 for identity mapping
319 * like the linux kernel does.
320 */
321#define XEN_IA64_OPTF_IDENT_MAP_REG7 1
322
323/* Identity mapping of region 4 addresses in HVM. */
324#define XEN_IA64_OPTF_IDENT_MAP_REG4 2
325
326/* Identity mapping of region 5 addresses in HVM. */
327#define XEN_IA64_OPTF_IDENT_MAP_REG5 3
328
329#define XEN_IA64_OPTF_IDENT_MAP_NOT_SET (0)
330
331struct xen_ia64_opt_feature {
332 unsigned long cmd; /* Which feature */
333 unsigned char on; /* Switch feature on/off */
334 union {
335 struct {
336 /* The page protection bit mask of the pte.
337 * This will be or'ed with the pte. */
338 unsigned long pgprot;
339 unsigned long key; /* A protection key for itir.*/
340 };
341 };
342};
343
344#endif /* __ASSEMBLY__ */
345
346#endif /* _ASM_IA64_XEN_INTERFACE_H */
diff --git a/arch/ia64/include/asm/xen/irq.h b/arch/ia64/include/asm/xen/irq.h
new file mode 100644
index 000000000000..a90450983003
--- /dev/null
+++ b/arch/ia64/include/asm/xen/irq.h
@@ -0,0 +1,44 @@
1/******************************************************************************
2 * arch/ia64/include/asm/xen/irq.h
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#ifndef _ASM_IA64_XEN_IRQ_H
24#define _ASM_IA64_XEN_IRQ_H
25
26/*
27 * The flat IRQ space is divided into two regions:
28 * 1. A one-to-one mapping of real physical IRQs. This space is only used
29 * if we have physical device-access privilege. This region is at the
30 * start of the IRQ space so that existing device drivers do not need
31 * to be modified to translate physical IRQ numbers into our IRQ space.
32 * 3. A dynamic mapping of inter-domain and Xen-sourced virtual IRQs. These
33 * are bound using the provided bind/unbind functions.
34 */
35
36#define XEN_PIRQ_BASE 0
37#define XEN_NR_PIRQS 256
38
39#define XEN_DYNIRQ_BASE (XEN_PIRQ_BASE + XEN_NR_PIRQS)
40#define XEN_NR_DYNIRQS (NR_CPUS * 8)
41
42#define XEN_NR_IRQS (XEN_NR_PIRQS + XEN_NR_DYNIRQS)
43
44#endif /* _ASM_IA64_XEN_IRQ_H */
diff --git a/arch/ia64/include/asm/xen/minstate.h b/arch/ia64/include/asm/xen/minstate.h
new file mode 100644
index 000000000000..4d92d9bbda7b
--- /dev/null
+++ b/arch/ia64/include/asm/xen/minstate.h
@@ -0,0 +1,134 @@
1/*
2 * DO_SAVE_MIN switches to the kernel stacks (if necessary) and saves
3 * the minimum state necessary that allows us to turn psr.ic back
4 * on.
5 *
6 * Assumed state upon entry:
7 * psr.ic: off
8 * r31: contains saved predicates (pr)
9 *
10 * Upon exit, the state is as follows:
11 * psr.ic: off
12 * r2 = points to &pt_regs.r16
13 * r8 = contents of ar.ccv
14 * r9 = contents of ar.csd
15 * r10 = contents of ar.ssd
16 * r11 = FPSR_DEFAULT
17 * r12 = kernel sp (kernel virtual address)
18 * r13 = points to current task_struct (kernel virtual address)
19 * p15 = TRUE if psr.i is set in cr.ipsr
20 * predicate registers (other than p2, p3, and p15), b6, r3, r14, r15:
21 * preserved
22 * CONFIG_XEN note: p6/p7 are not preserved
23 *
24 * Note that psr.ic is NOT turned on by this macro. This is so that
25 * we can pass interruption state as arguments to a handler.
26 */
27#define XEN_DO_SAVE_MIN(__COVER,SAVE_IFS,EXTRA,WORKAROUND) \
28 mov r16=IA64_KR(CURRENT); /* M */ \
29 mov r27=ar.rsc; /* M */ \
30 mov r20=r1; /* A */ \
31 mov r25=ar.unat; /* M */ \
32 MOV_FROM_IPSR(p0,r29); /* M */ \
33 MOV_FROM_IIP(r28); /* M */ \
34 mov r21=ar.fpsr; /* M */ \
35 mov r26=ar.pfs; /* I */ \
36 __COVER; /* B;; (or nothing) */ \
37 adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16; \
38 ;; \
39 ld1 r17=[r16]; /* load current->thread.on_ustack flag */ \
40 st1 [r16]=r0; /* clear current->thread.on_ustack flag */ \
41 adds r1=-IA64_TASK_THREAD_ON_USTACK_OFFSET,r16 \
42 /* switch from user to kernel RBS: */ \
43 ;; \
44 invala; /* M */ \
45 /* SAVE_IFS;*/ /* see xen special handling below */ \
46 cmp.eq pKStk,pUStk=r0,r17; /* are we in kernel mode already? */ \
47 ;; \
48(pUStk) mov ar.rsc=0; /* set enforced lazy mode, pl 0, little-endian, loadrs=0 */ \
49 ;; \
50(pUStk) mov.m r24=ar.rnat; \
51(pUStk) addl r22=IA64_RBS_OFFSET,r1; /* compute base of RBS */ \
52(pKStk) mov r1=sp; /* get sp */ \
53 ;; \
54(pUStk) lfetch.fault.excl.nt1 [r22]; \
55(pUStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r1; /* compute base of memory stack */ \
56(pUStk) mov r23=ar.bspstore; /* save ar.bspstore */ \
57 ;; \
58(pUStk) mov ar.bspstore=r22; /* switch to kernel RBS */ \
59(pKStk) addl r1=-IA64_PT_REGS_SIZE,r1; /* if in kernel mode, use sp (r12) */ \
60 ;; \
61(pUStk) mov r18=ar.bsp; \
62(pUStk) mov ar.rsc=0x3; /* set eager mode, pl 0, little-endian, loadrs=0 */ \
63 adds r17=2*L1_CACHE_BYTES,r1; /* really: biggest cache-line size */ \
64 adds r16=PT(CR_IPSR),r1; \
65 ;; \
66 lfetch.fault.excl.nt1 [r17],L1_CACHE_BYTES; \
67 st8 [r16]=r29; /* save cr.ipsr */ \
68 ;; \
69 lfetch.fault.excl.nt1 [r17]; \
70 tbit.nz p15,p0=r29,IA64_PSR_I_BIT; \
71 mov r29=b0 \
72 ;; \
73 WORKAROUND; \
74 adds r16=PT(R8),r1; /* initialize first base pointer */ \
75 adds r17=PT(R9),r1; /* initialize second base pointer */ \
76(pKStk) mov r18=r0; /* make sure r18 isn't NaT */ \
77 ;; \
78.mem.offset 0,0; st8.spill [r16]=r8,16; \
79.mem.offset 8,0; st8.spill [r17]=r9,16; \
80 ;; \
81.mem.offset 0,0; st8.spill [r16]=r10,24; \
82 movl r8=XSI_PRECOVER_IFS; \
83.mem.offset 8,0; st8.spill [r17]=r11,24; \
84 ;; \
85 /* xen special handling for possibly lazy cover */ \
86 /* SAVE_MIN case in dispatch_ia32_handler: mov r30=r0 */ \
87 ld8 r30=[r8]; \
88(pUStk) sub r18=r18,r22; /* r18=RSE.ndirty*8 */ \
89 st8 [r16]=r28,16; /* save cr.iip */ \
90 ;; \
91 st8 [r17]=r30,16; /* save cr.ifs */ \
92 mov r8=ar.ccv; \
93 mov r9=ar.csd; \
94 mov r10=ar.ssd; \
95 movl r11=FPSR_DEFAULT; /* L-unit */ \
96 ;; \
97 st8 [r16]=r25,16; /* save ar.unat */ \
98 st8 [r17]=r26,16; /* save ar.pfs */ \
99 shl r18=r18,16; /* compute ar.rsc to be used for "loadrs" */ \
100 ;; \
101 st8 [r16]=r27,16; /* save ar.rsc */ \
102(pUStk) st8 [r17]=r24,16; /* save ar.rnat */ \
103(pKStk) adds r17=16,r17; /* skip over ar_rnat field */ \
104 ;; /* avoid RAW on r16 & r17 */ \
105(pUStk) st8 [r16]=r23,16; /* save ar.bspstore */ \
106 st8 [r17]=r31,16; /* save predicates */ \
107(pKStk) adds r16=16,r16; /* skip over ar_bspstore field */ \
108 ;; \
109 st8 [r16]=r29,16; /* save b0 */ \
110 st8 [r17]=r18,16; /* save ar.rsc value for "loadrs" */ \
111 cmp.eq pNonSys,pSys=r0,r0 /* initialize pSys=0, pNonSys=1 */ \
112 ;; \
113.mem.offset 0,0; st8.spill [r16]=r20,16; /* save original r1 */ \
114.mem.offset 8,0; st8.spill [r17]=r12,16; \
115 adds r12=-16,r1; /* switch to kernel memory stack (with 16 bytes of scratch) */ \
116 ;; \
117.mem.offset 0,0; st8.spill [r16]=r13,16; \
118.mem.offset 8,0; st8.spill [r17]=r21,16; /* save ar.fpsr */ \
119 mov r13=IA64_KR(CURRENT); /* establish `current' */ \
120 ;; \
121.mem.offset 0,0; st8.spill [r16]=r15,16; \
122.mem.offset 8,0; st8.spill [r17]=r14,16; \
123 ;; \
124.mem.offset 0,0; st8.spill [r16]=r2,16; \
125.mem.offset 8,0; st8.spill [r17]=r3,16; \
126 ACCOUNT_GET_STAMP \
127 adds r2=IA64_PT_REGS_R16_OFFSET,r1; \
128 ;; \
129 EXTRA; \
130 movl r1=__gp; /* establish kernel global pointer */ \
131 ;; \
132 ACCOUNT_SYS_ENTER \
133 BSW_1(r3,r14); /* switch back to bank 1 (must be last in insn group) */ \
134 ;;
diff --git a/arch/ia64/include/asm/xen/page.h b/arch/ia64/include/asm/xen/page.h
new file mode 100644
index 000000000000..03441a780b5b
--- /dev/null
+++ b/arch/ia64/include/asm/xen/page.h
@@ -0,0 +1,65 @@
1/******************************************************************************
2 * arch/ia64/include/asm/xen/page.h
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#ifndef _ASM_IA64_XEN_PAGE_H
24#define _ASM_IA64_XEN_PAGE_H
25
26#define INVALID_P2M_ENTRY (~0UL)
27
28static inline unsigned long mfn_to_pfn(unsigned long mfn)
29{
30 return mfn;
31}
32
33static inline unsigned long pfn_to_mfn(unsigned long pfn)
34{
35 return pfn;
36}
37
38#define phys_to_machine_mapping_valid(_x) (1)
39
40static inline void *mfn_to_virt(unsigned long mfn)
41{
42 return __va(mfn << PAGE_SHIFT);
43}
44
45static inline unsigned long virt_to_mfn(void *virt)
46{
47 return __pa(virt) >> PAGE_SHIFT;
48}
49
50/* for tpmfront.c */
51static inline unsigned long virt_to_machine(void *virt)
52{
53 return __pa(virt);
54}
55
56static inline void set_phys_to_machine(unsigned long pfn, unsigned long mfn)
57{
58 /* nothing */
59}
60
61#define pte_mfn(_x) pte_pfn(_x)
62#define mfn_pte(_x, _y) __pte_ma(0) /* unmodified use */
63#define __pte_ma(_x) ((pte_t) {(_x)}) /* unmodified use */
64
65#endif /* _ASM_IA64_XEN_PAGE_H */
diff --git a/arch/ia64/include/asm/xen/privop.h b/arch/ia64/include/asm/xen/privop.h
new file mode 100644
index 000000000000..71ec7546e100
--- /dev/null
+++ b/arch/ia64/include/asm/xen/privop.h
@@ -0,0 +1,129 @@
1#ifndef _ASM_IA64_XEN_PRIVOP_H
2#define _ASM_IA64_XEN_PRIVOP_H
3
4/*
5 * Copyright (C) 2005 Hewlett-Packard Co
6 * Dan Magenheimer <dan.magenheimer@hp.com>
7 *
8 * Paravirtualizations of privileged operations for Xen/ia64
9 *
10 *
11 * inline privop and paravirt_alt support
12 * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
13 * VA Linux Systems Japan K.K.
14 *
15 */
16
17#ifndef __ASSEMBLY__
18#include <linux/types.h> /* arch-ia64.h requires uint64_t */
19#endif
20#include <asm/xen/interface.h>
21
22/* At 1 MB, before per-cpu space but still addressable using addl instead
23 of movl. */
24#define XSI_BASE 0xfffffffffff00000
25
26/* Address of mapped regs. */
27#define XMAPPEDREGS_BASE (XSI_BASE + XSI_SIZE)
28
29#ifdef __ASSEMBLY__
30#define XEN_HYPER_RFI break HYPERPRIVOP_RFI
31#define XEN_HYPER_RSM_PSR_DT break HYPERPRIVOP_RSM_DT
32#define XEN_HYPER_SSM_PSR_DT break HYPERPRIVOP_SSM_DT
33#define XEN_HYPER_COVER break HYPERPRIVOP_COVER
34#define XEN_HYPER_ITC_D break HYPERPRIVOP_ITC_D
35#define XEN_HYPER_ITC_I break HYPERPRIVOP_ITC_I
36#define XEN_HYPER_SSM_I break HYPERPRIVOP_SSM_I
37#define XEN_HYPER_GET_IVR break HYPERPRIVOP_GET_IVR
38#define XEN_HYPER_THASH break HYPERPRIVOP_THASH
39#define XEN_HYPER_ITR_D break HYPERPRIVOP_ITR_D
40#define XEN_HYPER_SET_KR break HYPERPRIVOP_SET_KR
41#define XEN_HYPER_GET_PSR break HYPERPRIVOP_GET_PSR
42#define XEN_HYPER_SET_RR0_TO_RR4 break HYPERPRIVOP_SET_RR0_TO_RR4
43
44#define XSI_IFS (XSI_BASE + XSI_IFS_OFS)
45#define XSI_PRECOVER_IFS (XSI_BASE + XSI_PRECOVER_IFS_OFS)
46#define XSI_IFA (XSI_BASE + XSI_IFA_OFS)
47#define XSI_ISR (XSI_BASE + XSI_ISR_OFS)
48#define XSI_IIM (XSI_BASE + XSI_IIM_OFS)
49#define XSI_ITIR (XSI_BASE + XSI_ITIR_OFS)
50#define XSI_PSR_I_ADDR (XSI_BASE + XSI_PSR_I_ADDR_OFS)
51#define XSI_PSR_IC (XSI_BASE + XSI_PSR_IC_OFS)
52#define XSI_IPSR (XSI_BASE + XSI_IPSR_OFS)
53#define XSI_IIP (XSI_BASE + XSI_IIP_OFS)
54#define XSI_B1NAT (XSI_BASE + XSI_B1NATS_OFS)
55#define XSI_BANK1_R16 (XSI_BASE + XSI_BANK1_R16_OFS)
56#define XSI_BANKNUM (XSI_BASE + XSI_BANKNUM_OFS)
57#define XSI_IHA (XSI_BASE + XSI_IHA_OFS)
58#endif
59
60#ifndef __ASSEMBLY__
61
62/************************************************/
63/* Instructions paravirtualized for correctness */
64/************************************************/
65
66/* "fc" and "thash" are privilege-sensitive instructions, meaning they
67 * may have different semantics depending on whether they are executed
68 * at PL0 vs PL!=0. When paravirtualized, these instructions mustn't
69 * be allowed to execute directly, lest incorrect semantics result. */
70extern void xen_fc(unsigned long addr);
71extern unsigned long xen_thash(unsigned long addr);
72
73/* Note that "ttag" and "cover" are also privilege-sensitive; "ttag"
74 * is not currently used (though it may be in a long-format VHPT system!)
75 * and the semantics of cover only change if psr.ic is off which is very
76 * rare (and currently non-existent outside of assembly code */
77
78/* There are also privilege-sensitive registers. These registers are
79 * readable at any privilege level but only writable at PL0. */
80extern unsigned long xen_get_cpuid(int index);
81extern unsigned long xen_get_pmd(int index);
82
83extern unsigned long xen_get_eflag(void); /* see xen_ia64_getreg */
84extern void xen_set_eflag(unsigned long); /* see xen_ia64_setreg */
85
86/************************************************/
87/* Instructions paravirtualized for performance */
88/************************************************/
89
90/* Xen uses memory-mapped virtual privileged registers for access to many
91 * performance-sensitive privileged registers. Some, like the processor
92 * status register (psr), are broken up into multiple memory locations.
93 * Others, like "pend", are abstractions based on privileged registers.
94 * "Pend" is guaranteed to be set if reading cr.ivr would return a
95 * (non-spurious) interrupt. */
96#define XEN_MAPPEDREGS ((struct mapped_regs *)XMAPPEDREGS_BASE)
97
98#define XSI_PSR_I \
99 (*XEN_MAPPEDREGS->interrupt_mask_addr)
100#define xen_get_virtual_psr_i() \
101 (!XSI_PSR_I)
102#define xen_set_virtual_psr_i(_val) \
103 ({ XSI_PSR_I = (uint8_t)(_val) ? 0 : 1; })
104#define xen_set_virtual_psr_ic(_val) \
105 ({ XEN_MAPPEDREGS->interrupt_collection_enabled = _val ? 1 : 0; })
106#define xen_get_virtual_pend() \
107 (*(((uint8_t *)XEN_MAPPEDREGS->interrupt_mask_addr) - 1))
108
109/* Although all privileged operations can be left to trap and will
110 * be properly handled by Xen, some are frequent enough that we use
111 * hyperprivops for performance. */
112extern unsigned long xen_get_psr(void);
113extern unsigned long xen_get_ivr(void);
114extern unsigned long xen_get_tpr(void);
115extern void xen_hyper_ssm_i(void);
116extern void xen_set_itm(unsigned long);
117extern void xen_set_tpr(unsigned long);
118extern void xen_eoi(unsigned long);
119extern unsigned long xen_get_rr(unsigned long index);
120extern void xen_set_rr(unsigned long index, unsigned long val);
121extern void xen_set_rr0_to_rr4(unsigned long val0, unsigned long val1,
122 unsigned long val2, unsigned long val3,
123 unsigned long val4);
124extern void xen_set_kr(unsigned long index, unsigned long val);
125extern void xen_ptcga(unsigned long addr, unsigned long size);
126
127#endif /* !__ASSEMBLY__ */
128
129#endif /* _ASM_IA64_XEN_PRIVOP_H */
diff --git a/arch/ia64/include/asm/xen/xcom_hcall.h b/arch/ia64/include/asm/xen/xcom_hcall.h
new file mode 100644
index 000000000000..20b2950c71b6
--- /dev/null
+++ b/arch/ia64/include/asm/xen/xcom_hcall.h
@@ -0,0 +1,51 @@
1/*
2 * Copyright (C) 2006 Tristan Gingold <tristan.gingold@bull.net>, Bull SAS
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
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
17 */
18
19#ifndef _ASM_IA64_XEN_XCOM_HCALL_H
20#define _ASM_IA64_XEN_XCOM_HCALL_H
21
22/* These function creates inline or mini descriptor for the parameters and
23 calls the corresponding xencomm_arch_hypercall_X.
24 Architectures should defines HYPERVISOR_xxx as xencomm_hypercall_xxx unless
25 they want to use their own wrapper. */
26extern int xencomm_hypercall_console_io(int cmd, int count, char *str);
27
28extern int xencomm_hypercall_event_channel_op(int cmd, void *op);
29
30extern int xencomm_hypercall_xen_version(int cmd, void *arg);
31
32extern int xencomm_hypercall_physdev_op(int cmd, void *op);
33
34extern int xencomm_hypercall_grant_table_op(unsigned int cmd, void *op,
35 unsigned int count);
36
37extern int xencomm_hypercall_sched_op(int cmd, void *arg);
38
39extern int xencomm_hypercall_multicall(void *call_list, int nr_calls);
40
41extern int xencomm_hypercall_callback_op(int cmd, void *arg);
42
43extern int xencomm_hypercall_memory_op(unsigned int cmd, void *arg);
44
45extern int xencomm_hypercall_suspend(unsigned long srec);
46
47extern long xencomm_hypercall_vcpu_op(int cmd, int cpu, void *arg);
48
49extern long xencomm_hypercall_opt_feature(void *arg);
50
51#endif /* _ASM_IA64_XEN_XCOM_HCALL_H */
diff --git a/arch/ia64/include/asm/xen/xencomm.h b/arch/ia64/include/asm/xen/xencomm.h
new file mode 100644
index 000000000000..cded677bebf2
--- /dev/null
+++ b/arch/ia64/include/asm/xen/xencomm.h
@@ -0,0 +1,42 @@
1/*
2 * Copyright (C) 2006 Hollis Blanchard <hollisb@us.ibm.com>, IBM Corporation
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
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
17 */
18
19#ifndef _ASM_IA64_XEN_XENCOMM_H
20#define _ASM_IA64_XEN_XENCOMM_H
21
22#include <xen/xencomm.h>
23#include <asm/pgtable.h>
24
25/* Must be called before any hypercall. */
26extern void xencomm_initialize(void);
27extern int xencomm_is_initialized(void);
28
29/* Check if virtual contiguity means physical contiguity
30 * where the passed address is a pointer value in virtual address.
31 * On ia64, identity mapping area in region 7 or the piece of region 5
32 * that is mapped by itr[IA64_TR_KERNEL]/dtr[IA64_TR_KERNEL]
33 */
34static inline int xencomm_is_phys_contiguous(unsigned long addr)
35{
36 return (PAGE_OFFSET <= addr &&
37 addr < (PAGE_OFFSET + (1UL << IA64_MAX_PHYS_BITS))) ||
38 (KERNEL_START <= addr &&
39 addr < KERNEL_START + KERNEL_TR_PAGE_SIZE);
40}
41
42#endif /* _ASM_IA64_XEN_XENCOMM_H */
diff --git a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile
index 87fea11aecb7..c381ea954892 100644
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -42,6 +42,10 @@ obj-$(CONFIG_IA64_ESI) += esi.o
42ifneq ($(CONFIG_IA64_ESI),) 42ifneq ($(CONFIG_IA64_ESI),)
43obj-y += esi_stub.o # must be in kernel proper 43obj-y += esi_stub.o # must be in kernel proper
44endif 44endif
45obj-$(CONFIG_DMAR) += pci-dma.o
46ifeq ($(CONFIG_DMAR), y)
47obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o
48endif
45 49
46# The gate DSO image is built using a special linker script. 50# The gate DSO image is built using a special linker script.
47targets += gate.so gate-syms.o 51targets += gate.so gate-syms.o
@@ -112,5 +116,23 @@ clean-files += $(objtree)/include/asm-ia64/nr-irqs.h
112ASM_PARAVIRT_OBJS = ivt.o entry.o 116ASM_PARAVIRT_OBJS = ivt.o entry.o
113define paravirtualized_native 117define paravirtualized_native
114AFLAGS_$(1) += -D__IA64_ASM_PARAVIRTUALIZED_NATIVE 118AFLAGS_$(1) += -D__IA64_ASM_PARAVIRTUALIZED_NATIVE
119AFLAGS_pvchk-sed-$(1) += -D__IA64_ASM_PARAVIRTUALIZED_PVCHECK
120extra-y += pvchk-$(1)
115endef 121endef
116$(foreach obj,$(ASM_PARAVIRT_OBJS),$(eval $(call paravirtualized_native,$(obj)))) 122$(foreach obj,$(ASM_PARAVIRT_OBJS),$(eval $(call paravirtualized_native,$(obj))))
123
124#
125# Checker for paravirtualizations of privileged operations.
126#
127quiet_cmd_pv_check_sed = PVCHK $@
128define cmd_pv_check_sed
129 sed -f $(srctree)/arch/$(SRCARCH)/scripts/pvcheck.sed $< > $@
130endef
131
132$(obj)/pvchk-sed-%.s: $(src)/%.S $(srctree)/arch/$(SRCARCH)/scripts/pvcheck.sed FORCE
133 $(call if_changed_dep,as_s_S)
134$(obj)/pvchk-%.s: $(obj)/pvchk-sed-%.s FORCE
135 $(call if_changed,pv_check_sed)
136$(obj)/pvchk-%.o: $(obj)/pvchk-%.s FORCE
137 $(call if_changed,as_o_S)
138.PRECIOUS: $(obj)/pvchk-sed-%.s $(obj)/pvchk-%.s $(obj)/pvchk-%.o
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 5d1eb7ee2bf6..0635015d0aaa 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -52,6 +52,7 @@
52#include <asm/numa.h> 52#include <asm/numa.h>
53#include <asm/sal.h> 53#include <asm/sal.h>
54#include <asm/cyclone.h> 54#include <asm/cyclone.h>
55#include <asm/xen/hypervisor.h>
55 56
56#define BAD_MADT_ENTRY(entry, end) ( \ 57#define BAD_MADT_ENTRY(entry, end) ( \
57 (!entry) || (unsigned long)entry + sizeof(*entry) > end || \ 58 (!entry) || (unsigned long)entry + sizeof(*entry) > end || \
@@ -91,6 +92,9 @@ acpi_get_sysname(void)
91 struct acpi_table_rsdp *rsdp; 92 struct acpi_table_rsdp *rsdp;
92 struct acpi_table_xsdt *xsdt; 93 struct acpi_table_xsdt *xsdt;
93 struct acpi_table_header *hdr; 94 struct acpi_table_header *hdr;
95#ifdef CONFIG_DMAR
96 u64 i, nentries;
97#endif
94 98
95 rsdp_phys = acpi_find_rsdp(); 99 rsdp_phys = acpi_find_rsdp();
96 if (!rsdp_phys) { 100 if (!rsdp_phys) {
@@ -121,7 +125,21 @@ acpi_get_sysname(void)
121 return "uv"; 125 return "uv";
122 else 126 else
123 return "sn2"; 127 return "sn2";
128 } else if (xen_pv_domain() && !strcmp(hdr->oem_id, "XEN")) {
129 return "xen";
130 }
131
132#ifdef CONFIG_DMAR
133 /* Look for Intel IOMMU */
134 nentries = (hdr->length - sizeof(*hdr)) /
135 sizeof(xsdt->table_offset_entry[0]);
136 for (i = 0; i < nentries; i++) {
137 hdr = __va(xsdt->table_offset_entry[i]);
138 if (strncmp(hdr->signature, ACPI_SIG_DMAR,
139 sizeof(ACPI_SIG_DMAR) - 1) == 0)
140 return "dig_vtd";
124 } 141 }
142#endif
125 143
126 return "dig"; 144 return "dig";
127#else 145#else
@@ -137,6 +155,10 @@ acpi_get_sysname(void)
137 return "uv"; 155 return "uv";
138# elif defined (CONFIG_IA64_DIG) 156# elif defined (CONFIG_IA64_DIG)
139 return "dig"; 157 return "dig";
158# elif defined (CONFIG_IA64_XEN_GUEST)
159 return "xen";
160# elif defined(CONFIG_IA64_DIG_VTD)
161 return "dig_vtd";
140# else 162# else
141# error Unknown platform. Fix acpi.c. 163# error Unknown platform. Fix acpi.c.
142# endif 164# endif
diff --git a/arch/ia64/kernel/asm-offsets.c b/arch/ia64/kernel/asm-offsets.c
index 94c44b1ccfd0..742dbb1d5a4f 100644
--- a/arch/ia64/kernel/asm-offsets.c
+++ b/arch/ia64/kernel/asm-offsets.c
@@ -16,6 +16,9 @@
16#include <asm/sigcontext.h> 16#include <asm/sigcontext.h>
17#include <asm/mca.h> 17#include <asm/mca.h>
18 18
19#include <asm/xen/interface.h>
20#include <asm/xen/hypervisor.h>
21
19#include "../kernel/sigframe.h" 22#include "../kernel/sigframe.h"
20#include "../kernel/fsyscall_gtod_data.h" 23#include "../kernel/fsyscall_gtod_data.h"
21 24
@@ -286,4 +289,32 @@ void foo(void)
286 offsetof (struct itc_jitter_data_t, itc_jitter)); 289 offsetof (struct itc_jitter_data_t, itc_jitter));
287 DEFINE(IA64_ITC_LASTCYCLE_OFFSET, 290 DEFINE(IA64_ITC_LASTCYCLE_OFFSET,
288 offsetof (struct itc_jitter_data_t, itc_lastcycle)); 291 offsetof (struct itc_jitter_data_t, itc_lastcycle));
292
293#ifdef CONFIG_XEN
294 BLANK();
295
296 DEFINE(XEN_NATIVE_ASM, XEN_NATIVE);
297 DEFINE(XEN_PV_DOMAIN_ASM, XEN_PV_DOMAIN);
298
299#define DEFINE_MAPPED_REG_OFS(sym, field) \
300 DEFINE(sym, (XMAPPEDREGS_OFS + offsetof(struct mapped_regs, field)))
301
302 DEFINE_MAPPED_REG_OFS(XSI_PSR_I_ADDR_OFS, interrupt_mask_addr);
303 DEFINE_MAPPED_REG_OFS(XSI_IPSR_OFS, ipsr);
304 DEFINE_MAPPED_REG_OFS(XSI_IIP_OFS, iip);
305 DEFINE_MAPPED_REG_OFS(XSI_IFS_OFS, ifs);
306 DEFINE_MAPPED_REG_OFS(XSI_PRECOVER_IFS_OFS, precover_ifs);
307 DEFINE_MAPPED_REG_OFS(XSI_ISR_OFS, isr);
308 DEFINE_MAPPED_REG_OFS(XSI_IFA_OFS, ifa);
309 DEFINE_MAPPED_REG_OFS(XSI_IIPA_OFS, iipa);
310 DEFINE_MAPPED_REG_OFS(XSI_IIM_OFS, iim);
311 DEFINE_MAPPED_REG_OFS(XSI_IHA_OFS, iha);
312 DEFINE_MAPPED_REG_OFS(XSI_ITIR_OFS, itir);
313 DEFINE_MAPPED_REG_OFS(XSI_PSR_IC_OFS, interrupt_collection_enabled);
314 DEFINE_MAPPED_REG_OFS(XSI_BANKNUM_OFS, banknum);
315 DEFINE_MAPPED_REG_OFS(XSI_BANK0_R16_OFS, bank0_regs[0]);
316 DEFINE_MAPPED_REG_OFS(XSI_BANK1_R16_OFS, bank1_regs[0]);
317 DEFINE_MAPPED_REG_OFS(XSI_B0NATS_OFS, vbnat);
318 DEFINE_MAPPED_REG_OFS(XSI_B1NATS_OFS, vnat);
319#endif /* CONFIG_XEN */
289} 320}
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 0dd6c1419d8d..7ef0c594f5ed 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -534,6 +534,11 @@ GLOBAL_ENTRY(ia64_trace_syscall)
534 stf.spill [r16]=f10 534 stf.spill [r16]=f10
535 stf.spill [r17]=f11 535 stf.spill [r17]=f11
536 br.call.sptk.many rp=syscall_trace_enter // give parent a chance to catch syscall args 536 br.call.sptk.many rp=syscall_trace_enter // give parent a chance to catch syscall args
537 cmp.lt p6,p0=r8,r0 // check tracehook
538 adds r2=PT(R8)+16,sp // r2 = &pt_regs.r8
539 adds r3=PT(R10)+16,sp // r3 = &pt_regs.r10
540 mov r10=0
541(p6) br.cond.sptk strace_error // syscall failed ->
537 adds r16=PT(F6)+16,sp 542 adds r16=PT(F6)+16,sp
538 adds r17=PT(F7)+16,sp 543 adds r17=PT(F7)+16,sp
539 ;; 544 ;;
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index 416a952b19bd..f675d8e33853 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -580,7 +580,7 @@ ENTRY(dirty_bit)
580 mov b0=r29 // restore b0 580 mov b0=r29 // restore b0
581 ;; 581 ;;
582 st8 [r17]=r18 // store back updated PTE 582 st8 [r17]=r18 // store back updated PTE
583 itc.d r18 // install updated PTE 583 ITC_D(p0, r18, r16) // install updated PTE
584#endif 584#endif
585 mov pr=r31,-1 // restore pr 585 mov pr=r31,-1 // restore pr
586 RFI 586 RFI
@@ -646,7 +646,7 @@ ENTRY(iaccess_bit)
646 mov b0=r29 // restore b0 646 mov b0=r29 // restore b0
647 ;; 647 ;;
648 st8 [r17]=r18 // store back updated PTE 648 st8 [r17]=r18 // store back updated PTE
649 itc.i r18 // install updated PTE 649 ITC_I(p0, r18, r16) // install updated PTE
650#endif /* !CONFIG_SMP */ 650#endif /* !CONFIG_SMP */
651 mov pr=r31,-1 651 mov pr=r31,-1
652 RFI 652 RFI
@@ -698,7 +698,7 @@ ENTRY(daccess_bit)
698 or r18=_PAGE_A,r18 // set the accessed bit 698 or r18=_PAGE_A,r18 // set the accessed bit
699 ;; 699 ;;
700 st8 [r17]=r18 // store back updated PTE 700 st8 [r17]=r18 // store back updated PTE
701 itc.d r18 // install updated PTE 701 ITC_D(p0, r18, r16) // install updated PTE
702#endif 702#endif
703 mov b0=r29 // restore b0 703 mov b0=r29 // restore b0
704 mov pr=r31,-1 704 mov pr=r31,-1
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c
index 60c6ef67ebb2..702a09c13238 100644
--- a/arch/ia64/kernel/msi_ia64.c
+++ b/arch/ia64/kernel/msi_ia64.c
@@ -5,6 +5,7 @@
5#include <linux/pci.h> 5#include <linux/pci.h>
6#include <linux/irq.h> 6#include <linux/irq.h>
7#include <linux/msi.h> 7#include <linux/msi.h>
8#include <linux/dmar.h>
8#include <asm/smp.h> 9#include <asm/smp.h>
9 10
10/* 11/*
@@ -162,3 +163,82 @@ void arch_teardown_msi_irq(unsigned int irq)
162 163
163 return ia64_teardown_msi_irq(irq); 164 return ia64_teardown_msi_irq(irq);
164} 165}
166
167#ifdef CONFIG_DMAR
168#ifdef CONFIG_SMP
169static void dmar_msi_set_affinity(unsigned int irq, cpumask_t mask)
170{
171 struct irq_cfg *cfg = irq_cfg + irq;
172 struct msi_msg msg;
173 int cpu = first_cpu(mask);
174
175
176 if (!cpu_online(cpu))
177 return;
178
179 if (irq_prepare_move(irq, cpu))
180 return;
181
182 dmar_msi_read(irq, &msg);
183
184 msg.data &= ~MSI_DATA_VECTOR_MASK;
185 msg.data |= MSI_DATA_VECTOR(cfg->vector);
186 msg.address_lo &= ~MSI_ADDR_DESTID_MASK;
187 msg.address_lo |= MSI_ADDR_DESTID_CPU(cpu_physical_id(cpu));
188
189 dmar_msi_write(irq, &msg);
190 irq_desc[irq].affinity = mask;
191}
192#endif /* CONFIG_SMP */
193
194struct irq_chip dmar_msi_type = {
195 .name = "DMAR_MSI",
196 .unmask = dmar_msi_unmask,
197 .mask = dmar_msi_mask,
198 .ack = ia64_ack_msi_irq,
199#ifdef CONFIG_SMP
200 .set_affinity = dmar_msi_set_affinity,
201#endif
202 .retrigger = ia64_msi_retrigger_irq,
203};
204
205static int
206msi_compose_msg(struct pci_dev *pdev, unsigned int irq, struct msi_msg *msg)
207{
208 struct irq_cfg *cfg = irq_cfg + irq;
209 unsigned dest;
210 cpumask_t mask;
211
212 cpus_and(mask, irq_to_domain(irq), cpu_online_map);
213 dest = cpu_physical_id(first_cpu(mask));
214
215 msg->address_hi = 0;
216 msg->address_lo =
217 MSI_ADDR_HEADER |
218 MSI_ADDR_DESTMODE_PHYS |
219 MSI_ADDR_REDIRECTION_CPU |
220 MSI_ADDR_DESTID_CPU(dest);
221
222 msg->data =
223 MSI_DATA_TRIGGER_EDGE |
224 MSI_DATA_LEVEL_ASSERT |
225 MSI_DATA_DELIVERY_FIXED |
226 MSI_DATA_VECTOR(cfg->vector);
227 return 0;
228}
229
230int arch_setup_dmar_msi(unsigned int irq)
231{
232 int ret;
233 struct msi_msg msg;
234
235 ret = msi_compose_msg(NULL, irq, &msg);
236 if (ret < 0)
237 return ret;
238 dmar_msi_write(irq, &msg);
239 set_irq_chip_and_handler_name(irq, &dmar_msi_type, handle_edge_irq,
240 "edge");
241 return 0;
242}
243#endif /* CONFIG_DMAR */
244
diff --git a/arch/ia64/kernel/nr-irqs.c b/arch/ia64/kernel/nr-irqs.c
index 8273afc32db8..ee564575148e 100644
--- a/arch/ia64/kernel/nr-irqs.c
+++ b/arch/ia64/kernel/nr-irqs.c
@@ -10,6 +10,7 @@
10#include <linux/kbuild.h> 10#include <linux/kbuild.h>
11#include <linux/threads.h> 11#include <linux/threads.h>
12#include <asm/native/irq.h> 12#include <asm/native/irq.h>
13#include <asm/xen/irq.h>
13 14
14void foo(void) 15void foo(void)
15{ 16{
diff --git a/arch/ia64/kernel/paravirt.c b/arch/ia64/kernel/paravirt.c
index afaf5b9a2cf0..de35d8e8b7d2 100644
--- a/arch/ia64/kernel/paravirt.c
+++ b/arch/ia64/kernel/paravirt.c
@@ -332,7 +332,7 @@ ia64_native_iosapic_write(char __iomem *iosapic, unsigned int reg, u32 val)
332 332
333struct pv_iosapic_ops pv_iosapic_ops = { 333struct pv_iosapic_ops pv_iosapic_ops = {
334 .pcat_compat_init = ia64_native_iosapic_pcat_compat_init, 334 .pcat_compat_init = ia64_native_iosapic_pcat_compat_init,
335 .get_irq_chip = ia64_native_iosapic_get_irq_chip, 335 .__get_irq_chip = ia64_native_iosapic_get_irq_chip,
336 336
337 .__read = ia64_native_iosapic_read, 337 .__read = ia64_native_iosapic_read,
338 .__write = ia64_native_iosapic_write, 338 .__write = ia64_native_iosapic_write,
diff --git a/arch/ia64/kernel/paravirt_inst.h b/arch/ia64/kernel/paravirt_inst.h
index 5cad6fb2ed19..64d6d810c64b 100644
--- a/arch/ia64/kernel/paravirt_inst.h
+++ b/arch/ia64/kernel/paravirt_inst.h
@@ -20,7 +20,9 @@
20 * 20 *
21 */ 21 */
22 22
23#ifdef __IA64_ASM_PARAVIRTUALIZED_XEN 23#ifdef __IA64_ASM_PARAVIRTUALIZED_PVCHECK
24#include <asm/native/pvchk_inst.h>
25#elif defined(__IA64_ASM_PARAVIRTUALIZED_XEN)
24#include <asm/xen/inst.h> 26#include <asm/xen/inst.h>
25#include <asm/xen/minstate.h> 27#include <asm/xen/minstate.h>
26#else 28#else
diff --git a/arch/ia64/kernel/pci-dma.c b/arch/ia64/kernel/pci-dma.c
new file mode 100644
index 000000000000..10a75b557650
--- /dev/null
+++ b/arch/ia64/kernel/pci-dma.c
@@ -0,0 +1,129 @@
1/*
2 * Dynamic DMA mapping support.
3 */
4
5#include <linux/types.h>
6#include <linux/mm.h>
7#include <linux/string.h>
8#include <linux/pci.h>
9#include <linux/module.h>
10#include <linux/dmar.h>
11#include <asm/iommu.h>
12#include <asm/machvec.h>
13#include <linux/dma-mapping.h>
14
15#include <asm/machvec.h>
16#include <asm/system.h>
17
18#ifdef CONFIG_DMAR
19
20#include <linux/kernel.h>
21#include <linux/string.h>
22
23#include <asm/page.h>
24#include <asm/iommu.h>
25
26dma_addr_t bad_dma_address __read_mostly;
27EXPORT_SYMBOL(bad_dma_address);
28
29static int iommu_sac_force __read_mostly;
30
31int no_iommu __read_mostly;
32#ifdef CONFIG_IOMMU_DEBUG
33int force_iommu __read_mostly = 1;
34#else
35int force_iommu __read_mostly;
36#endif
37
38/* Set this to 1 if there is a HW IOMMU in the system */
39int iommu_detected __read_mostly;
40
41/* Dummy device used for NULL arguments (normally ISA). Better would
42 be probably a smaller DMA mask, but this is bug-to-bug compatible
43 to i386. */
44struct device fallback_dev = {
45 .bus_id = "fallback device",
46 .coherent_dma_mask = DMA_32BIT_MASK,
47 .dma_mask = &fallback_dev.coherent_dma_mask,
48};
49
50void __init pci_iommu_alloc(void)
51{
52 /*
53 * The order of these functions is important for
54 * fall-back/fail-over reasons
55 */
56 detect_intel_iommu();
57
58#ifdef CONFIG_SWIOTLB
59 pci_swiotlb_init();
60#endif
61}
62
63static int __init pci_iommu_init(void)
64{
65 if (iommu_detected)
66 intel_iommu_init();
67
68 return 0;
69}
70
71/* Must execute after PCI subsystem */
72fs_initcall(pci_iommu_init);
73
74void pci_iommu_shutdown(void)
75{
76 return;
77}
78
79void __init
80iommu_dma_init(void)
81{
82 return;
83}
84
85struct dma_mapping_ops *dma_ops;
86EXPORT_SYMBOL(dma_ops);
87
88int iommu_dma_supported(struct device *dev, u64 mask)
89{
90 struct dma_mapping_ops *ops = get_dma_ops(dev);
91
92#ifdef CONFIG_PCI
93 if (mask > 0xffffffff && forbid_dac > 0) {
94 dev_info(dev, "Disallowing DAC for device\n");
95 return 0;
96 }
97#endif
98
99 if (ops->dma_supported_op)
100 return ops->dma_supported_op(dev, mask);
101
102 /* Copied from i386. Doesn't make much sense, because it will
103 only work for pci_alloc_coherent.
104 The caller just has to use GFP_DMA in this case. */
105 if (mask < DMA_24BIT_MASK)
106 return 0;
107
108 /* Tell the device to use SAC when IOMMU force is on. This
109 allows the driver to use cheaper accesses in some cases.
110
111 Problem with this is that if we overflow the IOMMU area and
112 return DAC as fallback address the device may not handle it
113 correctly.
114
115 As a special case some controllers have a 39bit address
116 mode that is as efficient as 32bit (aic79xx). Don't force
117 SAC for these. Assume all masks <= 40 bits are of this
118 type. Normally this doesn't make any difference, but gives
119 more gentle handling of IOMMU overflow. */
120 if (iommu_sac_force && (mask >= DMA_40BIT_MASK)) {
121 dev_info(dev, "Force SAC with mask %lx\n", mask);
122 return 0;
123 }
124
125 return 1;
126}
127EXPORT_SYMBOL(iommu_dma_supported);
128
129#endif
diff --git a/arch/ia64/kernel/pci-swiotlb.c b/arch/ia64/kernel/pci-swiotlb.c
new file mode 100644
index 000000000000..16c50516dbc1
--- /dev/null
+++ b/arch/ia64/kernel/pci-swiotlb.c
@@ -0,0 +1,46 @@
1/* Glue code to lib/swiotlb.c */
2
3#include <linux/pci.h>
4#include <linux/cache.h>
5#include <linux/module.h>
6#include <linux/dma-mapping.h>
7
8#include <asm/swiotlb.h>
9#include <asm/dma.h>
10#include <asm/iommu.h>
11#include <asm/machvec.h>
12
13int swiotlb __read_mostly;
14EXPORT_SYMBOL(swiotlb);
15
16struct dma_mapping_ops swiotlb_dma_ops = {
17 .mapping_error = swiotlb_dma_mapping_error,
18 .alloc_coherent = swiotlb_alloc_coherent,
19 .free_coherent = swiotlb_free_coherent,
20 .map_single = swiotlb_map_single,
21 .unmap_single = swiotlb_unmap_single,
22 .sync_single_for_cpu = swiotlb_sync_single_for_cpu,
23 .sync_single_for_device = swiotlb_sync_single_for_device,
24 .sync_single_range_for_cpu = swiotlb_sync_single_range_for_cpu,
25 .sync_single_range_for_device = swiotlb_sync_single_range_for_device,
26 .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu,
27 .sync_sg_for_device = swiotlb_sync_sg_for_device,
28 .map_sg = swiotlb_map_sg,
29 .unmap_sg = swiotlb_unmap_sg,
30 .dma_supported_op = swiotlb_dma_supported,
31};
32
33void __init pci_swiotlb_init(void)
34{
35 if (!iommu_detected) {
36#ifdef CONFIG_IA64_GENERIC
37 swiotlb = 1;
38 printk(KERN_INFO "PCI-DMA: Re-initialize machine vector.\n");
39 machvec_init("dig");
40 swiotlb_init();
41 dma_ops = &swiotlb_dma_ops;
42#else
43 panic("Unable to find Intel IOMMU");
44#endif
45 }
46}
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index fc8f3509df27..ada4605d1223 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -40,6 +40,7 @@
40#include <linux/capability.h> 40#include <linux/capability.h>
41#include <linux/rcupdate.h> 41#include <linux/rcupdate.h>
42#include <linux/completion.h> 42#include <linux/completion.h>
43#include <linux/tracehook.h>
43 44
44#include <asm/errno.h> 45#include <asm/errno.h>
45#include <asm/intrinsics.h> 46#include <asm/intrinsics.h>
@@ -3684,7 +3685,7 @@ pfm_restart(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs)
3684 3685
3685 PFM_SET_WORK_PENDING(task, 1); 3686 PFM_SET_WORK_PENDING(task, 1);
3686 3687
3687 tsk_set_notify_resume(task); 3688 set_notify_resume(task);
3688 3689
3689 /* 3690 /*
3690 * XXX: send reschedule if task runs on another CPU 3691 * XXX: send reschedule if task runs on another CPU
@@ -5044,8 +5045,6 @@ pfm_handle_work(void)
5044 5045
5045 PFM_SET_WORK_PENDING(current, 0); 5046 PFM_SET_WORK_PENDING(current, 0);
5046 5047
5047 tsk_clear_notify_resume(current);
5048
5049 regs = task_pt_regs(current); 5048 regs = task_pt_regs(current);
5050 5049
5051 /* 5050 /*
@@ -5414,7 +5413,7 @@ pfm_overflow_handler(struct task_struct *task, pfm_context_t *ctx, u64 pmc0, str
5414 * when coming from ctxsw, current still points to the 5413 * when coming from ctxsw, current still points to the
5415 * previous task, therefore we must work with task and not current. 5414 * previous task, therefore we must work with task and not current.
5416 */ 5415 */
5417 tsk_set_notify_resume(task); 5416 set_notify_resume(task);
5418 } 5417 }
5419 /* 5418 /*
5420 * defer until state is changed (shorten spin window). the context is locked 5419 * defer until state is changed (shorten spin window). the context is locked
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index 3ab8373103ec..c57162705147 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -28,6 +28,7 @@
28#include <linux/delay.h> 28#include <linux/delay.h>
29#include <linux/kdebug.h> 29#include <linux/kdebug.h>
30#include <linux/utsname.h> 30#include <linux/utsname.h>
31#include <linux/tracehook.h>
31 32
32#include <asm/cpu.h> 33#include <asm/cpu.h>
33#include <asm/delay.h> 34#include <asm/delay.h>
@@ -160,21 +161,6 @@ show_regs (struct pt_regs *regs)
160 show_stack(NULL, NULL); 161 show_stack(NULL, NULL);
161} 162}
162 163
163void tsk_clear_notify_resume(struct task_struct *tsk)
164{
165#ifdef CONFIG_PERFMON
166 if (tsk->thread.pfm_needs_checking)
167 return;
168#endif
169 if (test_ti_thread_flag(task_thread_info(tsk), TIF_RESTORE_RSE))
170 return;
171 clear_ti_thread_flag(task_thread_info(tsk), TIF_NOTIFY_RESUME);
172}
173
174/*
175 * do_notify_resume_user():
176 * Called from notify_resume_user at entry.S, with interrupts disabled.
177 */
178void 164void
179do_notify_resume_user(sigset_t *unused, struct sigscratch *scr, long in_syscall) 165do_notify_resume_user(sigset_t *unused, struct sigscratch *scr, long in_syscall)
180{ 166{
@@ -203,6 +189,11 @@ do_notify_resume_user(sigset_t *unused, struct sigscratch *scr, long in_syscall)
203 ia64_do_signal(scr, in_syscall); 189 ia64_do_signal(scr, in_syscall);
204 } 190 }
205 191
192 if (test_thread_flag(TIF_NOTIFY_RESUME)) {
193 clear_thread_flag(TIF_NOTIFY_RESUME);
194 tracehook_notify_resume(&scr->pt);
195 }
196
206 /* copy user rbs to kernel rbs */ 197 /* copy user rbs to kernel rbs */
207 if (unlikely(test_thread_flag(TIF_RESTORE_RSE))) { 198 if (unlikely(test_thread_flag(TIF_RESTORE_RSE))) {
208 local_irq_enable(); /* force interrupt enable */ 199 local_irq_enable(); /* force interrupt enable */
@@ -251,7 +242,6 @@ default_idle (void)
251/* We don't actually take CPU down, just spin without interrupts. */ 242/* We don't actually take CPU down, just spin without interrupts. */
252static inline void play_dead(void) 243static inline void play_dead(void)
253{ 244{
254 extern void ia64_cpu_local_tick (void);
255 unsigned int this_cpu = smp_processor_id(); 245 unsigned int this_cpu = smp_processor_id();
256 246
257 /* Ack it */ 247 /* Ack it */
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index 2a9943b5947f..92c9689b7d97 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -22,6 +22,7 @@
22#include <linux/signal.h> 22#include <linux/signal.h>
23#include <linux/regset.h> 23#include <linux/regset.h>
24#include <linux/elf.h> 24#include <linux/elf.h>
25#include <linux/tracehook.h>
25 26
26#include <asm/pgtable.h> 27#include <asm/pgtable.h>
27#include <asm/processor.h> 28#include <asm/processor.h>
@@ -603,7 +604,7 @@ void ia64_ptrace_stop(void)
603{ 604{
604 if (test_and_set_tsk_thread_flag(current, TIF_RESTORE_RSE)) 605 if (test_and_set_tsk_thread_flag(current, TIF_RESTORE_RSE))
605 return; 606 return;
606 tsk_set_notify_resume(current); 607 set_notify_resume(current);
607 unw_init_running(do_sync_rbs, ia64_sync_user_rbs); 608 unw_init_running(do_sync_rbs, ia64_sync_user_rbs);
608} 609}
609 610
@@ -613,7 +614,6 @@ void ia64_ptrace_stop(void)
613void ia64_sync_krbs(void) 614void ia64_sync_krbs(void)
614{ 615{
615 clear_tsk_thread_flag(current, TIF_RESTORE_RSE); 616 clear_tsk_thread_flag(current, TIF_RESTORE_RSE);
616 tsk_clear_notify_resume(current);
617 617
618 unw_init_running(do_sync_rbs, ia64_sync_kernel_rbs); 618 unw_init_running(do_sync_rbs, ia64_sync_kernel_rbs);
619} 619}
@@ -644,7 +644,7 @@ ptrace_attach_sync_user_rbs (struct task_struct *child)
644 spin_lock_irq(&child->sighand->siglock); 644 spin_lock_irq(&child->sighand->siglock);
645 if (child->state == TASK_STOPPED && 645 if (child->state == TASK_STOPPED &&
646 !test_and_set_tsk_thread_flag(child, TIF_RESTORE_RSE)) { 646 !test_and_set_tsk_thread_flag(child, TIF_RESTORE_RSE)) {
647 tsk_set_notify_resume(child); 647 set_notify_resume(child);
648 648
649 child->state = TASK_TRACED; 649 child->state = TASK_TRACED;
650 stopped = 1; 650 stopped = 1;
@@ -1232,37 +1232,16 @@ arch_ptrace (struct task_struct *child, long request, long addr, long data)
1232} 1232}
1233 1233
1234 1234
1235static void
1236syscall_trace (void)
1237{
1238 /*
1239 * The 0x80 provides a way for the tracing parent to
1240 * distinguish between a syscall stop and SIGTRAP delivery.
1241 */
1242 ptrace_notify(SIGTRAP
1243 | ((current->ptrace & PT_TRACESYSGOOD) ? 0x80 : 0));
1244
1245 /*
1246 * This isn't the same as continuing with a signal, but it
1247 * will do for normal use. strace only continues with a
1248 * signal if the stopping signal is not SIGTRAP. -brl
1249 */
1250 if (current->exit_code) {
1251 send_sig(current->exit_code, current, 1);
1252 current->exit_code = 0;
1253 }
1254}
1255
1256/* "asmlinkage" so the input arguments are preserved... */ 1235/* "asmlinkage" so the input arguments are preserved... */
1257 1236
1258asmlinkage void 1237asmlinkage long
1259syscall_trace_enter (long arg0, long arg1, long arg2, long arg3, 1238syscall_trace_enter (long arg0, long arg1, long arg2, long arg3,
1260 long arg4, long arg5, long arg6, long arg7, 1239 long arg4, long arg5, long arg6, long arg7,
1261 struct pt_regs regs) 1240 struct pt_regs regs)
1262{ 1241{
1263 if (test_thread_flag(TIF_SYSCALL_TRACE) 1242 if (test_thread_flag(TIF_SYSCALL_TRACE))
1264 && (current->ptrace & PT_PTRACED)) 1243 if (tracehook_report_syscall_entry(&regs))
1265 syscall_trace(); 1244 return -ENOSYS;
1266 1245
1267 /* copy user rbs to kernel rbs */ 1246 /* copy user rbs to kernel rbs */
1268 if (test_thread_flag(TIF_RESTORE_RSE)) 1247 if (test_thread_flag(TIF_RESTORE_RSE))
@@ -1283,6 +1262,7 @@ syscall_trace_enter (long arg0, long arg1, long arg2, long arg3,
1283 audit_syscall_entry(arch, syscall, arg0, arg1, arg2, arg3); 1262 audit_syscall_entry(arch, syscall, arg0, arg1, arg2, arg3);
1284 } 1263 }
1285 1264
1265 return 0;
1286} 1266}
1287 1267
1288/* "asmlinkage" so the input arguments are preserved... */ 1268/* "asmlinkage" so the input arguments are preserved... */
@@ -1292,6 +1272,8 @@ syscall_trace_leave (long arg0, long arg1, long arg2, long arg3,
1292 long arg4, long arg5, long arg6, long arg7, 1272 long arg4, long arg5, long arg6, long arg7,
1293 struct pt_regs regs) 1273 struct pt_regs regs)
1294{ 1274{
1275 int step;
1276
1295 if (unlikely(current->audit_context)) { 1277 if (unlikely(current->audit_context)) {
1296 int success = AUDITSC_RESULT(regs.r10); 1278 int success = AUDITSC_RESULT(regs.r10);
1297 long result = regs.r8; 1279 long result = regs.r8;
@@ -1301,10 +1283,9 @@ syscall_trace_leave (long arg0, long arg1, long arg2, long arg3,
1301 audit_syscall_exit(success, result); 1283 audit_syscall_exit(success, result);
1302 } 1284 }
1303 1285
1304 if ((test_thread_flag(TIF_SYSCALL_TRACE) 1286 step = test_thread_flag(TIF_SINGLESTEP);
1305 || test_thread_flag(TIF_SINGLESTEP)) 1287 if (step || test_thread_flag(TIF_SYSCALL_TRACE))
1306 && (current->ptrace & PT_PTRACED)) 1288 tracehook_report_syscall_exit(&regs, step);
1307 syscall_trace();
1308 1289
1309 /* copy user rbs to kernel rbs */ 1290 /* copy user rbs to kernel rbs */
1310 if (test_thread_flag(TIF_RESTORE_RSE)) 1291 if (test_thread_flag(TIF_RESTORE_RSE))
@@ -1940,7 +1921,7 @@ gpregs_writeback(struct task_struct *target,
1940{ 1921{
1941 if (test_and_set_tsk_thread_flag(target, TIF_RESTORE_RSE)) 1922 if (test_and_set_tsk_thread_flag(target, TIF_RESTORE_RSE))
1942 return 0; 1923 return 0;
1943 tsk_set_notify_resume(target); 1924 set_notify_resume(target);
1944 return do_regset_call(do_gpregs_writeback, target, regset, 0, 0, 1925 return do_regset_call(do_gpregs_writeback, target, regset, 0, 0,
1945 NULL, NULL); 1926 NULL, NULL);
1946} 1927}
@@ -2199,3 +2180,68 @@ const struct user_regset_view *task_user_regset_view(struct task_struct *tsk)
2199#endif 2180#endif
2200 return &user_ia64_view; 2181 return &user_ia64_view;
2201} 2182}
2183
2184struct syscall_get_set_args {
2185 unsigned int i;
2186 unsigned int n;
2187 unsigned long *args;
2188 struct pt_regs *regs;
2189 int rw;
2190};
2191
2192static void syscall_get_set_args_cb(struct unw_frame_info *info, void *data)
2193{
2194 struct syscall_get_set_args *args = data;
2195 struct pt_regs *pt = args->regs;
2196 unsigned long *krbs, cfm, ndirty;
2197 int i, count;
2198
2199 if (unw_unwind_to_user(info) < 0)
2200 return;
2201
2202 cfm = pt->cr_ifs;
2203 krbs = (unsigned long *)info->task + IA64_RBS_OFFSET/8;
2204 ndirty = ia64_rse_num_regs(krbs, krbs + (pt->loadrs >> 19));
2205
2206 count = 0;
2207 if (in_syscall(pt))
2208 count = min_t(int, args->n, cfm & 0x7f);
2209
2210 for (i = 0; i < count; i++) {
2211 if (args->rw)
2212 *ia64_rse_skip_regs(krbs, ndirty + i + args->i) =
2213 args->args[i];
2214 else
2215 args->args[i] = *ia64_rse_skip_regs(krbs,
2216 ndirty + i + args->i);
2217 }
2218
2219 if (!args->rw) {
2220 while (i < args->n) {
2221 args->args[i] = 0;
2222 i++;
2223 }
2224 }
2225}
2226
2227void ia64_syscall_get_set_arguments(struct task_struct *task,
2228 struct pt_regs *regs, unsigned int i, unsigned int n,
2229 unsigned long *args, int rw)
2230{
2231 struct syscall_get_set_args data = {
2232 .i = i,
2233 .n = n,
2234 .args = args,
2235 .regs = regs,
2236 .rw = rw,
2237 };
2238
2239 if (task == current)
2240 unw_init_running(syscall_get_set_args_cb, &data);
2241 else {
2242 struct unw_frame_info ufi;
2243 memset(&ufi, 0, sizeof(ufi));
2244 unw_init_from_blocked_task(&ufi, task);
2245 syscall_get_set_args_cb(&ufi, &data);
2246 }
2247}
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 916ba898237f..ae7911702bf8 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -116,6 +116,13 @@ unsigned int num_io_spaces;
116 */ 116 */
117#define I_CACHE_STRIDE_SHIFT 5 /* Safest way to go: 32 bytes by 32 bytes */ 117#define I_CACHE_STRIDE_SHIFT 5 /* Safest way to go: 32 bytes by 32 bytes */
118unsigned long ia64_i_cache_stride_shift = ~0; 118unsigned long ia64_i_cache_stride_shift = ~0;
119/*
120 * "clflush_cache_range()" needs to know what processor dependent stride size to
121 * use when it flushes cache lines including both d-cache and i-cache.
122 */
123/* Safest way to go: 32 bytes by 32 bytes */
124#define CACHE_STRIDE_SHIFT 5
125unsigned long ia64_cache_stride_shift = ~0;
119 126
120/* 127/*
121 * The merge_mask variable needs to be set to (max(iommu_page_size(iommu)) - 1). This 128 * The merge_mask variable needs to be set to (max(iommu_page_size(iommu)) - 1). This
@@ -852,13 +859,14 @@ setup_per_cpu_areas (void)
852} 859}
853 860
854/* 861/*
855 * Calculate the max. cache line size. 862 * Do the following calculations:
856 * 863 *
857 * In addition, the minimum of the i-cache stride sizes is calculated for 864 * 1. the max. cache line size.
858 * "flush_icache_range()". 865 * 2. the minimum of the i-cache stride sizes for "flush_icache_range()".
866 * 3. the minimum of the cache stride sizes for "clflush_cache_range()".
859 */ 867 */
860static void __cpuinit 868static void __cpuinit
861get_max_cacheline_size (void) 869get_cache_info(void)
862{ 870{
863 unsigned long line_size, max = 1; 871 unsigned long line_size, max = 1;
864 u64 l, levels, unique_caches; 872 u64 l, levels, unique_caches;
@@ -872,12 +880,14 @@ get_max_cacheline_size (void)
872 max = SMP_CACHE_BYTES; 880 max = SMP_CACHE_BYTES;
873 /* Safest setup for "flush_icache_range()" */ 881 /* Safest setup for "flush_icache_range()" */
874 ia64_i_cache_stride_shift = I_CACHE_STRIDE_SHIFT; 882 ia64_i_cache_stride_shift = I_CACHE_STRIDE_SHIFT;
883 /* Safest setup for "clflush_cache_range()" */
884 ia64_cache_stride_shift = CACHE_STRIDE_SHIFT;
875 goto out; 885 goto out;
876 } 886 }
877 887
878 for (l = 0; l < levels; ++l) { 888 for (l = 0; l < levels; ++l) {
879 status = ia64_pal_cache_config_info(l, /* cache_type (data_or_unified)= */ 2, 889 /* cache_type (data_or_unified)=2 */
880 &cci); 890 status = ia64_pal_cache_config_info(l, 2, &cci);
881 if (status != 0) { 891 if (status != 0) {
882 printk(KERN_ERR 892 printk(KERN_ERR
883 "%s: ia64_pal_cache_config_info(l=%lu, 2) failed (status=%ld)\n", 893 "%s: ia64_pal_cache_config_info(l=%lu, 2) failed (status=%ld)\n",
@@ -885,15 +895,21 @@ get_max_cacheline_size (void)
885 max = SMP_CACHE_BYTES; 895 max = SMP_CACHE_BYTES;
886 /* The safest setup for "flush_icache_range()" */ 896 /* The safest setup for "flush_icache_range()" */
887 cci.pcci_stride = I_CACHE_STRIDE_SHIFT; 897 cci.pcci_stride = I_CACHE_STRIDE_SHIFT;
898 /* The safest setup for "clflush_cache_range()" */
899 ia64_cache_stride_shift = CACHE_STRIDE_SHIFT;
888 cci.pcci_unified = 1; 900 cci.pcci_unified = 1;
901 } else {
902 if (cci.pcci_stride < ia64_cache_stride_shift)
903 ia64_cache_stride_shift = cci.pcci_stride;
904
905 line_size = 1 << cci.pcci_line_size;
906 if (line_size > max)
907 max = line_size;
889 } 908 }
890 line_size = 1 << cci.pcci_line_size; 909
891 if (line_size > max)
892 max = line_size;
893 if (!cci.pcci_unified) { 910 if (!cci.pcci_unified) {
894 status = ia64_pal_cache_config_info(l, 911 /* cache_type (instruction)=1*/
895 /* cache_type (instruction)= */ 1, 912 status = ia64_pal_cache_config_info(l, 1, &cci);
896 &cci);
897 if (status != 0) { 913 if (status != 0) {
898 printk(KERN_ERR 914 printk(KERN_ERR
899 "%s: ia64_pal_cache_config_info(l=%lu, 1) failed (status=%ld)\n", 915 "%s: ia64_pal_cache_config_info(l=%lu, 1) failed (status=%ld)\n",
@@ -947,7 +963,7 @@ cpu_init (void)
947 } 963 }
948#endif 964#endif
949 965
950 get_max_cacheline_size(); 966 get_cache_info();
951 967
952 /* 968 /*
953 * We can't pass "local_cpu_data" to identify_cpu() because we haven't called 969 * We can't pass "local_cpu_data" to identify_cpu() because we haven't called
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
index 19c5a78636fc..e12500a9c443 100644
--- a/arch/ia64/kernel/signal.c
+++ b/arch/ia64/kernel/signal.c
@@ -11,6 +11,7 @@
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/ptrace.h> 13#include <linux/ptrace.h>
14#include <linux/tracehook.h>
14#include <linux/sched.h> 15#include <linux/sched.h>
15#include <linux/signal.h> 16#include <linux/signal.h>
16#include <linux/smp.h> 17#include <linux/smp.h>
@@ -439,6 +440,13 @@ handle_signal (unsigned long sig, struct k_sigaction *ka, siginfo_t *info, sigse
439 sigaddset(&current->blocked, sig); 440 sigaddset(&current->blocked, sig);
440 recalc_sigpending(); 441 recalc_sigpending();
441 spin_unlock_irq(&current->sighand->siglock); 442 spin_unlock_irq(&current->sighand->siglock);
443
444 /*
445 * Let tracing know that we've done the handler setup.
446 */
447 tracehook_signal_handler(sig, info, ka, &scr->pt,
448 test_thread_flag(TIF_SINGLESTEP));
449
442 return 1; 450 return 1;
443} 451}
444 452
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index c0699f0e35a9..a312c9e9b9ef 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -1114,7 +1114,7 @@ static void kvm_migrate_hlt_timer(struct kvm_vcpu *vcpu)
1114 struct hrtimer *p_ht = &vcpu->arch.hlt_timer; 1114 struct hrtimer *p_ht = &vcpu->arch.hlt_timer;
1115 1115
1116 if (hrtimer_cancel(p_ht)) 1116 if (hrtimer_cancel(p_ht))
1117 hrtimer_start(p_ht, p_ht->expires, HRTIMER_MODE_ABS); 1117 hrtimer_start_expires(p_ht, HRTIMER_MODE_ABS);
1118} 1118}
1119 1119
1120static enum hrtimer_restart hlt_timer_fn(struct hrtimer *data) 1120static enum hrtimer_restart hlt_timer_fn(struct hrtimer *data)
diff --git a/arch/ia64/lib/flush.S b/arch/ia64/lib/flush.S
index 2a0d27f2f21b..1d8c88860063 100644
--- a/arch/ia64/lib/flush.S
+++ b/arch/ia64/lib/flush.S
@@ -60,3 +60,58 @@ GLOBAL_ENTRY(flush_icache_range)
60 mov ar.lc=r3 // restore ar.lc 60 mov ar.lc=r3 // restore ar.lc
61 br.ret.sptk.many rp 61 br.ret.sptk.many rp
62END(flush_icache_range) 62END(flush_icache_range)
63
64 /*
65 * clflush_cache_range(start,size)
66 *
67 * Flush cache lines from start to start+size-1.
68 *
69 * Must deal with range from start to start+size-1 but nothing else
70 * (need to be careful not to touch addresses that may be
71 * unmapped).
72 *
73 * Note: "in0" and "in1" are preserved for debugging purposes.
74 */
75 .section .kprobes.text,"ax"
76GLOBAL_ENTRY(clflush_cache_range)
77
78 .prologue
79 alloc r2=ar.pfs,2,0,0,0
80 movl r3=ia64_cache_stride_shift
81 mov r21=1
82 add r22=in1,in0
83 ;;
84 ld8 r20=[r3] // r20: stride shift
85 sub r22=r22,r0,1 // last byte address
86 ;;
87 shr.u r23=in0,r20 // start / (stride size)
88 shr.u r22=r22,r20 // (last byte address) / (stride size)
89 shl r21=r21,r20 // r21: stride size of the i-cache(s)
90 ;;
91 sub r8=r22,r23 // number of strides - 1
92 shl r24=r23,r20 // r24: addresses for "fc" =
93 // "start" rounded down to stride
94 // boundary
95 .save ar.lc,r3
96 mov r3=ar.lc // save ar.lc
97 ;;
98
99 .body
100 mov ar.lc=r8
101 ;;
102 /*
103 * 32 byte aligned loop, even number of (actually 2) bundles
104 */
105.Loop_fc:
106 fc r24 // issuable on M0 only
107 add r24=r21,r24 // we flush "stride size" bytes per iteration
108 nop.i 0
109 br.cloop.sptk.few .Loop_fc
110 ;;
111 sync.i
112 ;;
113 srlz.i
114 ;;
115 mov ar.lc=r3 // restore ar.lc
116 br.ret.sptk.many rp
117END(clflush_cache_range)
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c
index 8caf42471f0d..bd9818a36b47 100644
--- a/arch/ia64/mm/tlb.c
+++ b/arch/ia64/mm/tlb.c
@@ -362,9 +362,13 @@ ia64_tlb_init (void)
362 per_cpu(ia64_tr_num, cpu) = 362 per_cpu(ia64_tr_num, cpu) =
363 vm_info_1.pal_vm_info_1_s.max_dtr_entry+1; 363 vm_info_1.pal_vm_info_1_s.max_dtr_entry+1;
364 if (per_cpu(ia64_tr_num, cpu) > IA64_TR_ALLOC_MAX) { 364 if (per_cpu(ia64_tr_num, cpu) > IA64_TR_ALLOC_MAX) {
365 static int justonce = 1;
365 per_cpu(ia64_tr_num, cpu) = IA64_TR_ALLOC_MAX; 366 per_cpu(ia64_tr_num, cpu) = IA64_TR_ALLOC_MAX;
366 printk(KERN_DEBUG "TR register number exceeds IA64_TR_ALLOC_MAX!" 367 if (justonce) {
367 "IA64_TR_ALLOC_MAX should be extended\n"); 368 justonce = 0;
369 printk(KERN_DEBUG "TR register number exceeds "
370 "IA64_TR_ALLOC_MAX!\n");
371 }
368 } 372 }
369} 373}
370 374
diff --git a/arch/ia64/oprofile/init.c b/arch/ia64/oprofile/init.c
index 125a602a660d..31b545c35460 100644
--- a/arch/ia64/oprofile/init.c
+++ b/arch/ia64/oprofile/init.c
@@ -12,11 +12,11 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/errno.h> 13#include <linux/errno.h>
14 14
15extern int perfmon_init(struct oprofile_operations * ops); 15extern int perfmon_init(struct oprofile_operations *ops);
16extern void perfmon_exit(void); 16extern void perfmon_exit(void);
17extern void ia64_backtrace(struct pt_regs * const regs, unsigned int depth); 17extern void ia64_backtrace(struct pt_regs * const regs, unsigned int depth);
18 18
19int __init oprofile_arch_init(struct oprofile_operations * ops) 19int __init oprofile_arch_init(struct oprofile_operations *ops)
20{ 20{
21 int ret = -ENODEV; 21 int ret = -ENODEV;
22 22
diff --git a/arch/ia64/oprofile/perfmon.c b/arch/ia64/oprofile/perfmon.c
index bc41dd32fec6..192d3e8e1f65 100644
--- a/arch/ia64/oprofile/perfmon.c
+++ b/arch/ia64/oprofile/perfmon.c
@@ -56,7 +56,7 @@ static pfm_buffer_fmt_t oprofile_fmt = {
56}; 56};
57 57
58 58
59static char * get_cpu_type(void) 59static char *get_cpu_type(void)
60{ 60{
61 __u8 family = local_cpu_data->family; 61 __u8 family = local_cpu_data->family;
62 62
@@ -75,7 +75,7 @@ static char * get_cpu_type(void)
75 75
76static int using_perfmon; 76static int using_perfmon;
77 77
78int perfmon_init(struct oprofile_operations * ops) 78int perfmon_init(struct oprofile_operations *ops)
79{ 79{
80 int ret = pfm_register_buffer_fmt(&oprofile_fmt); 80 int ret = pfm_register_buffer_fmt(&oprofile_fmt);
81 if (ret) 81 if (ret)
diff --git a/arch/ia64/scripts/pvcheck.sed b/arch/ia64/scripts/pvcheck.sed
new file mode 100644
index 000000000000..ba66ac2e4c60
--- /dev/null
+++ b/arch/ia64/scripts/pvcheck.sed
@@ -0,0 +1,32 @@
1#
2# Checker for paravirtualizations of privileged operations.
3#
4s/ssm.*psr\.ic.*/.warning \"ssm psr.ic should not be used directly\"/g
5s/rsm.*psr\.ic.*/.warning \"rsm psr.ic should not be used directly\"/g
6s/ssm.*psr\.i.*/.warning \"ssm psr.i should not be used directly\"/g
7s/rsm.*psr\.i.*/.warning \"rsm psr.i should not be used directly\"/g
8s/ssm.*psr\.dt.*/.warning \"ssm psr.dt should not be used directly\"/g
9s/rsm.*psr\.dt.*/.warning \"rsm psr.dt should not be used directly\"/g
10s/mov.*=.*cr\.ifa/.warning \"cr.ifa should not used directly\"/g
11s/mov.*=.*cr\.itir/.warning \"cr.itir should not used directly\"/g
12s/mov.*=.*cr\.isr/.warning \"cr.isr should not used directly\"/g
13s/mov.*=.*cr\.iha/.warning \"cr.iha should not used directly\"/g
14s/mov.*=.*cr\.ipsr/.warning \"cr.ipsr should not used directly\"/g
15s/mov.*=.*cr\.iim/.warning \"cr.iim should not used directly\"/g
16s/mov.*=.*cr\.iip/.warning \"cr.iip should not used directly\"/g
17s/mov.*=.*cr\.ivr/.warning \"cr.ivr should not used directly\"/g
18s/mov.*=[^\.]*psr/.warning \"psr should not used directly\"/g # avoid ar.fpsr
19s/mov.*=.*ar\.eflags/.warning \"ar.eflags should not used directly\"/g
20s/mov.*cr\.ifa.*=.*/.warning \"cr.ifa should not used directly\"/g
21s/mov.*cr\.itir.*=.*/.warning \"cr.itir should not used directly\"/g
22s/mov.*cr\.iha.*=.*/.warning \"cr.iha should not used directly\"/g
23s/mov.*cr\.ipsr.*=.*/.warning \"cr.ipsr should not used directly\"/g
24s/mov.*cr\.ifs.*=.*/.warning \"cr.ifs should not used directly\"/g
25s/mov.*cr\.iip.*=.*/.warning \"cr.iip should not used directly\"/g
26s/mov.*cr\.kr.*=.*/.warning \"cr.kr should not used directly\"/g
27s/mov.*ar\.eflags.*=.*/.warning \"ar.eflags should not used directly\"/g
28s/itc\.i.*/.warning \"itc.i should not be used directly.\"/g
29s/itc\.d.*/.warning \"itc.d should not be used directly.\"/g
30s/bsw\.0/.warning \"bsw.0 should not be used directly.\"/g
31s/bsw\.1/.warning \"bsw.1 should not be used directly.\"/g
32s/ptc\.ga.*/.warning \"ptc.ga should not be used directly.\"/g
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c
index 6568942a95f0..bc610a6c7851 100644
--- a/arch/ia64/sn/kernel/io_acpi_init.c
+++ b/arch/ia64/sn/kernel/io_acpi_init.c
@@ -232,7 +232,7 @@ exit:
232static unsigned int 232static unsigned int
233get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle) 233get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
234{ 234{
235 unsigned long adr; 235 unsigned long long adr;
236 acpi_handle child; 236 acpi_handle child;
237 unsigned int devfn; 237 unsigned int devfn;
238 int function; 238 int function;
@@ -292,8 +292,8 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
292static acpi_status 292static acpi_status
293find_matching_device(acpi_handle handle, u32 lvl, void *context, void **rv) 293find_matching_device(acpi_handle handle, u32 lvl, void *context, void **rv)
294{ 294{
295 unsigned long bbn = -1; 295 unsigned long long bbn = -1;
296 unsigned long adr; 296 unsigned long long adr;
297 acpi_handle parent = NULL; 297 acpi_handle parent = NULL;
298 acpi_status status; 298 acpi_status status;
299 unsigned int devfn; 299 unsigned int devfn;
@@ -348,7 +348,7 @@ sn_acpi_get_pcidev_info(struct pci_dev *dev, struct pcidev_info **pcidev_info,
348 unsigned int host_devfn; 348 unsigned int host_devfn;
349 struct sn_pcidev_match pcidev_match; 349 struct sn_pcidev_match pcidev_match;
350 acpi_handle rootbus_handle; 350 acpi_handle rootbus_handle;
351 unsigned long segment; 351 unsigned long long segment;
352 acpi_status status; 352 acpi_status status;
353 353
354 rootbus_handle = PCI_CONTROLLER(dev)->acpi_handle; 354 rootbus_handle = PCI_CONTROLLER(dev)->acpi_handle;
@@ -357,7 +357,7 @@ sn_acpi_get_pcidev_info(struct pci_dev *dev, struct pcidev_info **pcidev_info,
357 if (ACPI_SUCCESS(status)) { 357 if (ACPI_SUCCESS(status)) {
358 if (segment != pci_domain_nr(dev)) { 358 if (segment != pci_domain_nr(dev)) {
359 printk(KERN_ERR 359 printk(KERN_ERR
360 "%s: Segment number mismatch, 0x%lx vs 0x%x for: ", 360 "%s: Segment number mismatch, 0x%llx vs 0x%x for: ",
361 __func__, segment, pci_domain_nr(dev)); 361 __func__, segment, pci_domain_nr(dev));
362 acpi_ns_print_node_pathname(rootbus_handle, NULL); 362 acpi_ns_print_node_pathname(rootbus_handle, NULL);
363 printk("\n"); 363 printk("\n");
diff --git a/arch/ia64/xen/Kconfig b/arch/ia64/xen/Kconfig
new file mode 100644
index 000000000000..f1683a20275b
--- /dev/null
+++ b/arch/ia64/xen/Kconfig
@@ -0,0 +1,26 @@
1#
2# This Kconfig describes xen/ia64 options
3#
4
5config XEN
6 bool "Xen hypervisor support"
7 default y
8 depends on PARAVIRT && MCKINLEY && IA64_PAGE_SIZE_16KB && EXPERIMENTAL
9 select XEN_XENCOMM
10 select NO_IDLE_HZ
11
12 # those are required to save/restore.
13 select ARCH_SUSPEND_POSSIBLE
14 select SUSPEND
15 select PM_SLEEP
16 help
17 Enable Xen hypervisor support. Resulting kernel runs
18 both as a guest OS on Xen and natively on hardware.
19
20config XEN_XENCOMM
21 depends on XEN
22 bool
23
24config NO_IDLE_HZ
25 depends on XEN
26 bool
diff --git a/arch/ia64/xen/Makefile b/arch/ia64/xen/Makefile
new file mode 100644
index 000000000000..0ad0224693d9
--- /dev/null
+++ b/arch/ia64/xen/Makefile
@@ -0,0 +1,22 @@
1#
2# Makefile for Xen components
3#
4
5obj-y := hypercall.o xenivt.o xensetup.o xen_pv_ops.o irq_xen.o \
6 hypervisor.o xencomm.o xcom_hcall.o grant-table.o time.o suspend.o
7
8obj-$(CONFIG_IA64_GENERIC) += machvec.o
9
10AFLAGS_xenivt.o += -D__IA64_ASM_PARAVIRTUALIZED_XEN
11
12# xen multi compile
13ASM_PARAVIRT_MULTI_COMPILE_SRCS = ivt.S entry.S
14ASM_PARAVIRT_OBJS = $(addprefix xen-,$(ASM_PARAVIRT_MULTI_COMPILE_SRCS:.S=.o))
15obj-y += $(ASM_PARAVIRT_OBJS)
16define paravirtualized_xen
17AFLAGS_$(1) += -D__IA64_ASM_PARAVIRTUALIZED_XEN
18endef
19$(foreach o,$(ASM_PARAVIRT_OBJS),$(eval $(call paravirtualized_xen,$(o))))
20
21$(obj)/xen-%.o: $(src)/../kernel/%.S FORCE
22 $(call if_changed_dep,as_o_S)
diff --git a/arch/ia64/xen/grant-table.c b/arch/ia64/xen/grant-table.c
new file mode 100644
index 000000000000..777dd9a9108b
--- /dev/null
+++ b/arch/ia64/xen/grant-table.c
@@ -0,0 +1,155 @@
1/******************************************************************************
2 * arch/ia64/xen/grant-table.c
3 *
4 * Copyright (c) 2006 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <linux/module.h>
24#include <linux/vmalloc.h>
25#include <linux/mm.h>
26
27#include <xen/interface/xen.h>
28#include <xen/interface/memory.h>
29#include <xen/grant_table.h>
30
31#include <asm/xen/hypervisor.h>
32
33struct vm_struct *xen_alloc_vm_area(unsigned long size)
34{
35 int order;
36 unsigned long virt;
37 unsigned long nr_pages;
38 struct vm_struct *area;
39
40 order = get_order(size);
41 virt = __get_free_pages(GFP_KERNEL, order);
42 if (virt == 0)
43 goto err0;
44 nr_pages = 1 << order;
45 scrub_pages(virt, nr_pages);
46
47 area = kmalloc(sizeof(*area), GFP_KERNEL);
48 if (area == NULL)
49 goto err1;
50
51 area->flags = VM_IOREMAP;
52 area->addr = (void *)virt;
53 area->size = size;
54 area->pages = NULL;
55 area->nr_pages = nr_pages;
56 area->phys_addr = 0; /* xenbus_map_ring_valloc uses this field! */
57
58 return area;
59
60err1:
61 free_pages(virt, order);
62err0:
63 return NULL;
64}
65EXPORT_SYMBOL_GPL(xen_alloc_vm_area);
66
67void xen_free_vm_area(struct vm_struct *area)
68{
69 unsigned int order = get_order(area->size);
70 unsigned long i;
71 unsigned long phys_addr = __pa(area->addr);
72
73 /* This area is used for foreign page mappping.
74 * So underlying machine page may not be assigned. */
75 for (i = 0; i < (1 << order); i++) {
76 unsigned long ret;
77 unsigned long gpfn = (phys_addr >> PAGE_SHIFT) + i;
78 struct xen_memory_reservation reservation = {
79 .nr_extents = 1,
80 .address_bits = 0,
81 .extent_order = 0,
82 .domid = DOMID_SELF
83 };
84 set_xen_guest_handle(reservation.extent_start, &gpfn);
85 ret = HYPERVISOR_memory_op(XENMEM_populate_physmap,
86 &reservation);
87 BUG_ON(ret != 1);
88 }
89 free_pages((unsigned long)area->addr, order);
90 kfree(area);
91}
92EXPORT_SYMBOL_GPL(xen_free_vm_area);
93
94
95/****************************************************************************
96 * grant table hack
97 * cmd: GNTTABOP_xxx
98 */
99
100int arch_gnttab_map_shared(unsigned long *frames, unsigned long nr_gframes,
101 unsigned long max_nr_gframes,
102 struct grant_entry **__shared)
103{
104 *__shared = __va(frames[0] << PAGE_SHIFT);
105 return 0;
106}
107
108void arch_gnttab_unmap_shared(struct grant_entry *shared,
109 unsigned long nr_gframes)
110{
111 /* nothing */
112}
113
114static void
115gnttab_map_grant_ref_pre(struct gnttab_map_grant_ref *uop)
116{
117 uint32_t flags;
118
119 flags = uop->flags;
120
121 if (flags & GNTMAP_host_map) {
122 if (flags & GNTMAP_application_map) {
123 printk(KERN_DEBUG
124 "GNTMAP_application_map is not supported yet: "
125 "flags 0x%x\n", flags);
126 BUG();
127 }
128 if (flags & GNTMAP_contains_pte) {
129 printk(KERN_DEBUG
130 "GNTMAP_contains_pte is not supported yet: "
131 "flags 0x%x\n", flags);
132 BUG();
133 }
134 } else if (flags & GNTMAP_device_map) {
135 printk("GNTMAP_device_map is not supported yet 0x%x\n", flags);
136 BUG(); /* not yet. actually this flag is not used. */
137 } else {
138 BUG();
139 }
140}
141
142int
143HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count)
144{
145 if (cmd == GNTTABOP_map_grant_ref) {
146 unsigned int i;
147 for (i = 0; i < count; i++) {
148 gnttab_map_grant_ref_pre(
149 (struct gnttab_map_grant_ref *)uop + i);
150 }
151 }
152 return xencomm_hypercall_grant_table_op(cmd, uop, count);
153}
154
155EXPORT_SYMBOL(HYPERVISOR_grant_table_op);
diff --git a/arch/ia64/xen/hypercall.S b/arch/ia64/xen/hypercall.S
new file mode 100644
index 000000000000..d4ff0b9e79f1
--- /dev/null
+++ b/arch/ia64/xen/hypercall.S
@@ -0,0 +1,91 @@
1/*
2 * Support routines for Xen hypercalls
3 *
4 * Copyright (C) 2005 Dan Magenheimer <dan.magenheimer@hp.com>
5 * Copyright (C) 2008 Yaozu (Eddie) Dong <eddie.dong@intel.com>
6 */
7
8#include <asm/asmmacro.h>
9#include <asm/intrinsics.h>
10#include <asm/xen/privop.h>
11
12/*
13 * Hypercalls without parameter.
14 */
15#define __HCALL0(name,hcall) \
16 GLOBAL_ENTRY(name); \
17 break hcall; \
18 br.ret.sptk.many rp; \
19 END(name)
20
21/*
22 * Hypercalls with 1 parameter.
23 */
24#define __HCALL1(name,hcall) \
25 GLOBAL_ENTRY(name); \
26 mov r8=r32; \
27 break hcall; \
28 br.ret.sptk.many rp; \
29 END(name)
30
31/*
32 * Hypercalls with 2 parameters.
33 */
34#define __HCALL2(name,hcall) \
35 GLOBAL_ENTRY(name); \
36 mov r8=r32; \
37 mov r9=r33; \
38 break hcall; \
39 br.ret.sptk.many rp; \
40 END(name)
41
42__HCALL0(xen_get_psr, HYPERPRIVOP_GET_PSR)
43__HCALL0(xen_get_ivr, HYPERPRIVOP_GET_IVR)
44__HCALL0(xen_get_tpr, HYPERPRIVOP_GET_TPR)
45__HCALL0(xen_hyper_ssm_i, HYPERPRIVOP_SSM_I)
46
47__HCALL1(xen_set_tpr, HYPERPRIVOP_SET_TPR)
48__HCALL1(xen_eoi, HYPERPRIVOP_EOI)
49__HCALL1(xen_thash, HYPERPRIVOP_THASH)
50__HCALL1(xen_set_itm, HYPERPRIVOP_SET_ITM)
51__HCALL1(xen_get_rr, HYPERPRIVOP_GET_RR)
52__HCALL1(xen_fc, HYPERPRIVOP_FC)
53__HCALL1(xen_get_cpuid, HYPERPRIVOP_GET_CPUID)
54__HCALL1(xen_get_pmd, HYPERPRIVOP_GET_PMD)
55
56__HCALL2(xen_ptcga, HYPERPRIVOP_PTC_GA)
57__HCALL2(xen_set_rr, HYPERPRIVOP_SET_RR)
58__HCALL2(xen_set_kr, HYPERPRIVOP_SET_KR)
59
60#ifdef CONFIG_IA32_SUPPORT
61__HCALL1(xen_get_eflag, HYPERPRIVOP_GET_EFLAG)
62__HCALL1(xen_set_eflag, HYPERPRIVOP_SET_EFLAG) // refer SDM vol1 3.1.8
63#endif /* CONFIG_IA32_SUPPORT */
64
65GLOBAL_ENTRY(xen_set_rr0_to_rr4)
66 mov r8=r32
67 mov r9=r33
68 mov r10=r34
69 mov r11=r35
70 mov r14=r36
71 XEN_HYPER_SET_RR0_TO_RR4
72 br.ret.sptk.many rp
73 ;;
74END(xen_set_rr0_to_rr4)
75
76GLOBAL_ENTRY(xen_send_ipi)
77 mov r14=r32
78 mov r15=r33
79 mov r2=0x400
80 break 0x1000
81 ;;
82 br.ret.sptk.many rp
83 ;;
84END(xen_send_ipi)
85
86GLOBAL_ENTRY(__hypercall)
87 mov r2=r37
88 break 0x1000
89 br.ret.sptk.many b0
90 ;;
91END(__hypercall)
diff --git a/arch/ia64/xen/hypervisor.c b/arch/ia64/xen/hypervisor.c
new file mode 100644
index 000000000000..cac4d97c0b5a
--- /dev/null
+++ b/arch/ia64/xen/hypervisor.c
@@ -0,0 +1,96 @@
1/******************************************************************************
2 * arch/ia64/xen/hypervisor.c
3 *
4 * Copyright (c) 2006 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <linux/efi.h>
24#include <asm/xen/hypervisor.h>
25#include <asm/xen/privop.h>
26
27#include "irq_xen.h"
28
29struct shared_info *HYPERVISOR_shared_info __read_mostly =
30 (struct shared_info *)XSI_BASE;
31EXPORT_SYMBOL(HYPERVISOR_shared_info);
32
33DEFINE_PER_CPU(struct vcpu_info *, xen_vcpu);
34
35struct start_info *xen_start_info;
36EXPORT_SYMBOL(xen_start_info);
37
38EXPORT_SYMBOL(xen_domain_type);
39
40EXPORT_SYMBOL(__hypercall);
41
42/* Stolen from arch/x86/xen/enlighten.c */
43/*
44 * Flag to determine whether vcpu info placement is available on all
45 * VCPUs. We assume it is to start with, and then set it to zero on
46 * the first failure. This is because it can succeed on some VCPUs
47 * and not others, since it can involve hypervisor memory allocation,
48 * or because the guest failed to guarantee all the appropriate
49 * constraints on all VCPUs (ie buffer can't cross a page boundary).
50 *
51 * Note that any particular CPU may be using a placed vcpu structure,
52 * but we can only optimise if the all are.
53 *
54 * 0: not available, 1: available
55 */
56
57static void __init xen_vcpu_setup(int cpu)
58{
59 /*
60 * WARNING:
61 * before changing MAX_VIRT_CPUS,
62 * check that shared_info fits on a page
63 */
64 BUILD_BUG_ON(sizeof(struct shared_info) > PAGE_SIZE);
65 per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu];
66}
67
68void __init xen_setup_vcpu_info_placement(void)
69{
70 int cpu;
71
72 for_each_possible_cpu(cpu)
73 xen_vcpu_setup(cpu);
74}
75
76void __cpuinit
77xen_cpu_init(void)
78{
79 xen_smp_intr_init();
80}
81
82/**************************************************************************
83 * opt feature
84 */
85void
86xen_ia64_enable_opt_feature(void)
87{
88 /* Enable region 7 identity map optimizations in Xen */
89 struct xen_ia64_opt_feature optf;
90
91 optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG7;
92 optf.on = XEN_IA64_OPTF_ON;
93 optf.pgprot = pgprot_val(PAGE_KERNEL);
94 optf.key = 0; /* No key on linux. */
95 HYPERVISOR_opt_feature(&optf);
96}
diff --git a/arch/ia64/xen/irq_xen.c b/arch/ia64/xen/irq_xen.c
new file mode 100644
index 000000000000..af93aadb68bb
--- /dev/null
+++ b/arch/ia64/xen/irq_xen.c
@@ -0,0 +1,435 @@
1/******************************************************************************
2 * arch/ia64/xen/irq_xen.c
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <linux/cpu.h>
24
25#include <xen/interface/xen.h>
26#include <xen/interface/callback.h>
27#include <xen/events.h>
28
29#include <asm/xen/privop.h>
30
31#include "irq_xen.h"
32
33/***************************************************************************
34 * pv_irq_ops
35 * irq operations
36 */
37
38static int
39xen_assign_irq_vector(int irq)
40{
41 struct physdev_irq irq_op;
42
43 irq_op.irq = irq;
44 if (HYPERVISOR_physdev_op(PHYSDEVOP_alloc_irq_vector, &irq_op))
45 return -ENOSPC;
46
47 return irq_op.vector;
48}
49
50static void
51xen_free_irq_vector(int vector)
52{
53 struct physdev_irq irq_op;
54
55 if (vector < IA64_FIRST_DEVICE_VECTOR ||
56 vector > IA64_LAST_DEVICE_VECTOR)
57 return;
58
59 irq_op.vector = vector;
60 if (HYPERVISOR_physdev_op(PHYSDEVOP_free_irq_vector, &irq_op))
61 printk(KERN_WARNING "%s: xen_free_irq_vecotr fail vector=%d\n",
62 __func__, vector);
63}
64
65
66static DEFINE_PER_CPU(int, timer_irq) = -1;
67static DEFINE_PER_CPU(int, ipi_irq) = -1;
68static DEFINE_PER_CPU(int, resched_irq) = -1;
69static DEFINE_PER_CPU(int, cmc_irq) = -1;
70static DEFINE_PER_CPU(int, cmcp_irq) = -1;
71static DEFINE_PER_CPU(int, cpep_irq) = -1;
72#define NAME_SIZE 15
73static DEFINE_PER_CPU(char[NAME_SIZE], timer_name);
74static DEFINE_PER_CPU(char[NAME_SIZE], ipi_name);
75static DEFINE_PER_CPU(char[NAME_SIZE], resched_name);
76static DEFINE_PER_CPU(char[NAME_SIZE], cmc_name);
77static DEFINE_PER_CPU(char[NAME_SIZE], cmcp_name);
78static DEFINE_PER_CPU(char[NAME_SIZE], cpep_name);
79#undef NAME_SIZE
80
81struct saved_irq {
82 unsigned int irq;
83 struct irqaction *action;
84};
85/* 16 should be far optimistic value, since only several percpu irqs
86 * are registered early.
87 */
88#define MAX_LATE_IRQ 16
89static struct saved_irq saved_percpu_irqs[MAX_LATE_IRQ];
90static unsigned short late_irq_cnt;
91static unsigned short saved_irq_cnt;
92static int xen_slab_ready;
93
94#ifdef CONFIG_SMP
95/* Dummy stub. Though we may check XEN_RESCHEDULE_VECTOR before __do_IRQ,
96 * it ends up to issue several memory accesses upon percpu data and
97 * thus adds unnecessary traffic to other paths.
98 */
99static irqreturn_t
100xen_dummy_handler(int irq, void *dev_id)
101{
102
103 return IRQ_HANDLED;
104}
105
106static struct irqaction xen_ipi_irqaction = {
107 .handler = handle_IPI,
108 .flags = IRQF_DISABLED,
109 .name = "IPI"
110};
111
112static struct irqaction xen_resched_irqaction = {
113 .handler = xen_dummy_handler,
114 .flags = IRQF_DISABLED,
115 .name = "resched"
116};
117
118static struct irqaction xen_tlb_irqaction = {
119 .handler = xen_dummy_handler,
120 .flags = IRQF_DISABLED,
121 .name = "tlb_flush"
122};
123#endif
124
125/*
126 * This is xen version percpu irq registration, which needs bind
127 * to xen specific evtchn sub-system. One trick here is that xen
128 * evtchn binding interface depends on kmalloc because related
129 * port needs to be freed at device/cpu down. So we cache the
130 * registration on BSP before slab is ready and then deal them
131 * at later point. For rest instances happening after slab ready,
132 * we hook them to xen evtchn immediately.
133 *
134 * FIXME: MCA is not supported by far, and thus "nomca" boot param is
135 * required.
136 */
137static void
138__xen_register_percpu_irq(unsigned int cpu, unsigned int vec,
139 struct irqaction *action, int save)
140{
141 irq_desc_t *desc;
142 int irq = 0;
143
144 if (xen_slab_ready) {
145 switch (vec) {
146 case IA64_TIMER_VECTOR:
147 snprintf(per_cpu(timer_name, cpu),
148 sizeof(per_cpu(timer_name, cpu)),
149 "%s%d", action->name, cpu);
150 irq = bind_virq_to_irqhandler(VIRQ_ITC, cpu,
151 action->handler, action->flags,
152 per_cpu(timer_name, cpu), action->dev_id);
153 per_cpu(timer_irq, cpu) = irq;
154 break;
155 case IA64_IPI_RESCHEDULE:
156 snprintf(per_cpu(resched_name, cpu),
157 sizeof(per_cpu(resched_name, cpu)),
158 "%s%d", action->name, cpu);
159 irq = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR, cpu,
160 action->handler, action->flags,
161 per_cpu(resched_name, cpu), action->dev_id);
162 per_cpu(resched_irq, cpu) = irq;
163 break;
164 case IA64_IPI_VECTOR:
165 snprintf(per_cpu(ipi_name, cpu),
166 sizeof(per_cpu(ipi_name, cpu)),
167 "%s%d", action->name, cpu);
168 irq = bind_ipi_to_irqhandler(XEN_IPI_VECTOR, cpu,
169 action->handler, action->flags,
170 per_cpu(ipi_name, cpu), action->dev_id);
171 per_cpu(ipi_irq, cpu) = irq;
172 break;
173 case IA64_CMC_VECTOR:
174 snprintf(per_cpu(cmc_name, cpu),
175 sizeof(per_cpu(cmc_name, cpu)),
176 "%s%d", action->name, cpu);
177 irq = bind_virq_to_irqhandler(VIRQ_MCA_CMC, cpu,
178 action->handler,
179 action->flags,
180 per_cpu(cmc_name, cpu),
181 action->dev_id);
182 per_cpu(cmc_irq, cpu) = irq;
183 break;
184 case IA64_CMCP_VECTOR:
185 snprintf(per_cpu(cmcp_name, cpu),
186 sizeof(per_cpu(cmcp_name, cpu)),
187 "%s%d", action->name, cpu);
188 irq = bind_ipi_to_irqhandler(XEN_CMCP_VECTOR, cpu,
189 action->handler,
190 action->flags,
191 per_cpu(cmcp_name, cpu),
192 action->dev_id);
193 per_cpu(cmcp_irq, cpu) = irq;
194 break;
195 case IA64_CPEP_VECTOR:
196 snprintf(per_cpu(cpep_name, cpu),
197 sizeof(per_cpu(cpep_name, cpu)),
198 "%s%d", action->name, cpu);
199 irq = bind_ipi_to_irqhandler(XEN_CPEP_VECTOR, cpu,
200 action->handler,
201 action->flags,
202 per_cpu(cpep_name, cpu),
203 action->dev_id);
204 per_cpu(cpep_irq, cpu) = irq;
205 break;
206 case IA64_CPE_VECTOR:
207 case IA64_MCA_RENDEZ_VECTOR:
208 case IA64_PERFMON_VECTOR:
209 case IA64_MCA_WAKEUP_VECTOR:
210 case IA64_SPURIOUS_INT_VECTOR:
211 /* No need to complain, these aren't supported. */
212 break;
213 default:
214 printk(KERN_WARNING "Percpu irq %d is unsupported "
215 "by xen!\n", vec);
216 break;
217 }
218 BUG_ON(irq < 0);
219
220 if (irq > 0) {
221 /*
222 * Mark percpu. Without this, migrate_irqs() will
223 * mark the interrupt for migrations and trigger it
224 * on cpu hotplug.
225 */
226 desc = irq_desc + irq;
227 desc->status |= IRQ_PER_CPU;
228 }
229 }
230
231 /* For BSP, we cache registered percpu irqs, and then re-walk
232 * them when initializing APs
233 */
234 if (!cpu && save) {
235 BUG_ON(saved_irq_cnt == MAX_LATE_IRQ);
236 saved_percpu_irqs[saved_irq_cnt].irq = vec;
237 saved_percpu_irqs[saved_irq_cnt].action = action;
238 saved_irq_cnt++;
239 if (!xen_slab_ready)
240 late_irq_cnt++;
241 }
242}
243
244static void
245xen_register_percpu_irq(ia64_vector vec, struct irqaction *action)
246{
247 __xen_register_percpu_irq(smp_processor_id(), vec, action, 1);
248}
249
250static void
251xen_bind_early_percpu_irq(void)
252{
253 int i;
254
255 xen_slab_ready = 1;
256 /* There's no race when accessing this cached array, since only
257 * BSP will face with such step shortly
258 */
259 for (i = 0; i < late_irq_cnt; i++)
260 __xen_register_percpu_irq(smp_processor_id(),
261 saved_percpu_irqs[i].irq,
262 saved_percpu_irqs[i].action, 0);
263}
264
265/* FIXME: There's no obvious point to check whether slab is ready. So
266 * a hack is used here by utilizing a late time hook.
267 */
268
269#ifdef CONFIG_HOTPLUG_CPU
270static int __devinit
271unbind_evtchn_callback(struct notifier_block *nfb,
272 unsigned long action, void *hcpu)
273{
274 unsigned int cpu = (unsigned long)hcpu;
275
276 if (action == CPU_DEAD) {
277 /* Unregister evtchn. */
278 if (per_cpu(cpep_irq, cpu) >= 0) {
279 unbind_from_irqhandler(per_cpu(cpep_irq, cpu), NULL);
280 per_cpu(cpep_irq, cpu) = -1;
281 }
282 if (per_cpu(cmcp_irq, cpu) >= 0) {
283 unbind_from_irqhandler(per_cpu(cmcp_irq, cpu), NULL);
284 per_cpu(cmcp_irq, cpu) = -1;
285 }
286 if (per_cpu(cmc_irq, cpu) >= 0) {
287 unbind_from_irqhandler(per_cpu(cmc_irq, cpu), NULL);
288 per_cpu(cmc_irq, cpu) = -1;
289 }
290 if (per_cpu(ipi_irq, cpu) >= 0) {
291 unbind_from_irqhandler(per_cpu(ipi_irq, cpu), NULL);
292 per_cpu(ipi_irq, cpu) = -1;
293 }
294 if (per_cpu(resched_irq, cpu) >= 0) {
295 unbind_from_irqhandler(per_cpu(resched_irq, cpu),
296 NULL);
297 per_cpu(resched_irq, cpu) = -1;
298 }
299 if (per_cpu(timer_irq, cpu) >= 0) {
300 unbind_from_irqhandler(per_cpu(timer_irq, cpu), NULL);
301 per_cpu(timer_irq, cpu) = -1;
302 }
303 }
304 return NOTIFY_OK;
305}
306
307static struct notifier_block unbind_evtchn_notifier = {
308 .notifier_call = unbind_evtchn_callback,
309 .priority = 0
310};
311#endif
312
313void xen_smp_intr_init_early(unsigned int cpu)
314{
315#ifdef CONFIG_SMP
316 unsigned int i;
317
318 for (i = 0; i < saved_irq_cnt; i++)
319 __xen_register_percpu_irq(cpu, saved_percpu_irqs[i].irq,
320 saved_percpu_irqs[i].action, 0);
321#endif
322}
323
324void xen_smp_intr_init(void)
325{
326#ifdef CONFIG_SMP
327 unsigned int cpu = smp_processor_id();
328 struct callback_register event = {
329 .type = CALLBACKTYPE_event,
330 .address = { .ip = (unsigned long)&xen_event_callback },
331 };
332
333 if (cpu == 0) {
334 /* Initialization was already done for boot cpu. */
335#ifdef CONFIG_HOTPLUG_CPU
336 /* Register the notifier only once. */
337 register_cpu_notifier(&unbind_evtchn_notifier);
338#endif
339 return;
340 }
341
342 /* This should be piggyback when setup vcpu guest context */
343 BUG_ON(HYPERVISOR_callback_op(CALLBACKOP_register, &event));
344#endif /* CONFIG_SMP */
345}
346
347void __init
348xen_irq_init(void)
349{
350 struct callback_register event = {
351 .type = CALLBACKTYPE_event,
352 .address = { .ip = (unsigned long)&xen_event_callback },
353 };
354
355 xen_init_IRQ();
356 BUG_ON(HYPERVISOR_callback_op(CALLBACKOP_register, &event));
357 late_time_init = xen_bind_early_percpu_irq;
358}
359
360void
361xen_platform_send_ipi(int cpu, int vector, int delivery_mode, int redirect)
362{
363#ifdef CONFIG_SMP
364 /* TODO: we need to call vcpu_up here */
365 if (unlikely(vector == ap_wakeup_vector)) {
366 /* XXX
367 * This should be in __cpu_up(cpu) in ia64 smpboot.c
368 * like x86. But don't want to modify it,
369 * keep it untouched.
370 */
371 xen_smp_intr_init_early(cpu);
372
373 xen_send_ipi(cpu, vector);
374 /* vcpu_prepare_and_up(cpu); */
375 return;
376 }
377#endif
378
379 switch (vector) {
380 case IA64_IPI_VECTOR:
381 xen_send_IPI_one(cpu, XEN_IPI_VECTOR);
382 break;
383 case IA64_IPI_RESCHEDULE:
384 xen_send_IPI_one(cpu, XEN_RESCHEDULE_VECTOR);
385 break;
386 case IA64_CMCP_VECTOR:
387 xen_send_IPI_one(cpu, XEN_CMCP_VECTOR);
388 break;
389 case IA64_CPEP_VECTOR:
390 xen_send_IPI_one(cpu, XEN_CPEP_VECTOR);
391 break;
392 case IA64_TIMER_VECTOR: {
393 /* this is used only once by check_sal_cache_flush()
394 at boot time */
395 static int used = 0;
396 if (!used) {
397 xen_send_ipi(cpu, IA64_TIMER_VECTOR);
398 used = 1;
399 break;
400 }
401 /* fallthrough */
402 }
403 default:
404 printk(KERN_WARNING "Unsupported IPI type 0x%x\n",
405 vector);
406 notify_remote_via_irq(0); /* defaults to 0 irq */
407 break;
408 }
409}
410
411static void __init
412xen_register_ipi(void)
413{
414#ifdef CONFIG_SMP
415 register_percpu_irq(IA64_IPI_VECTOR, &xen_ipi_irqaction);
416 register_percpu_irq(IA64_IPI_RESCHEDULE, &xen_resched_irqaction);
417 register_percpu_irq(IA64_IPI_LOCAL_TLB_FLUSH, &xen_tlb_irqaction);
418#endif
419}
420
421static void
422xen_resend_irq(unsigned int vector)
423{
424 (void)resend_irq_on_evtchn(vector);
425}
426
427const struct pv_irq_ops xen_irq_ops __initdata = {
428 .register_ipi = xen_register_ipi,
429
430 .assign_irq_vector = xen_assign_irq_vector,
431 .free_irq_vector = xen_free_irq_vector,
432 .register_percpu_irq = xen_register_percpu_irq,
433
434 .resend_irq = xen_resend_irq,
435};
diff --git a/arch/ia64/xen/irq_xen.h b/arch/ia64/xen/irq_xen.h
new file mode 100644
index 000000000000..26110f330c87
--- /dev/null
+++ b/arch/ia64/xen/irq_xen.h
@@ -0,0 +1,34 @@
1/******************************************************************************
2 * arch/ia64/xen/irq_xen.h
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#ifndef IRQ_XEN_H
24#define IRQ_XEN_H
25
26extern void (*late_time_init)(void);
27extern char xen_event_callback;
28void __init xen_init_IRQ(void);
29
30extern const struct pv_irq_ops xen_irq_ops __initdata;
31extern void xen_smp_intr_init(void);
32extern void xen_send_ipi(int cpu, int vec);
33
34#endif /* IRQ_XEN_H */
diff --git a/arch/ia64/xen/machvec.c b/arch/ia64/xen/machvec.c
new file mode 100644
index 000000000000..4ad588a7c279
--- /dev/null
+++ b/arch/ia64/xen/machvec.c
@@ -0,0 +1,4 @@
1#define MACHVEC_PLATFORM_NAME xen
2#define MACHVEC_PLATFORM_HEADER <asm/machvec_xen.h>
3#include <asm/machvec_init.h>
4
diff --git a/arch/ia64/xen/suspend.c b/arch/ia64/xen/suspend.c
new file mode 100644
index 000000000000..fd66b048c6fa
--- /dev/null
+++ b/arch/ia64/xen/suspend.c
@@ -0,0 +1,64 @@
1/******************************************************************************
2 * arch/ia64/xen/suspend.c
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 * suspend/resume
22 */
23
24#include <xen/xen-ops.h>
25#include <asm/xen/hypervisor.h>
26#include "time.h"
27
28void
29xen_mm_pin_all(void)
30{
31 /* nothing */
32}
33
34void
35xen_mm_unpin_all(void)
36{
37 /* nothing */
38}
39
40void xen_pre_device_suspend(void)
41{
42 /* nothing */
43}
44
45void
46xen_pre_suspend()
47{
48 /* nothing */
49}
50
51void
52xen_post_suspend(int suspend_cancelled)
53{
54 if (suspend_cancelled)
55 return;
56
57 xen_ia64_enable_opt_feature();
58 /* add more if necessary */
59}
60
61void xen_arch_resume(void)
62{
63 xen_timer_resume_on_aps();
64}
diff --git a/arch/ia64/xen/time.c b/arch/ia64/xen/time.c
new file mode 100644
index 000000000000..d15a94c330fb
--- /dev/null
+++ b/arch/ia64/xen/time.c
@@ -0,0 +1,213 @@
1/******************************************************************************
2 * arch/ia64/xen/time.c
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <linux/delay.h>
24#include <linux/kernel_stat.h>
25#include <linux/posix-timers.h>
26#include <linux/irq.h>
27#include <linux/clocksource.h>
28
29#include <asm/timex.h>
30
31#include <asm/xen/hypervisor.h>
32
33#include <xen/interface/vcpu.h>
34
35#include "../kernel/fsyscall_gtod_data.h"
36
37DEFINE_PER_CPU(struct vcpu_runstate_info, runstate);
38DEFINE_PER_CPU(unsigned long, processed_stolen_time);
39DEFINE_PER_CPU(unsigned long, processed_blocked_time);
40
41/* taken from i386/kernel/time-xen.c */
42static void xen_init_missing_ticks_accounting(int cpu)
43{
44 struct vcpu_register_runstate_memory_area area;
45 struct vcpu_runstate_info *runstate = &per_cpu(runstate, cpu);
46 int rc;
47
48 memset(runstate, 0, sizeof(*runstate));
49
50 area.addr.v = runstate;
51 rc = HYPERVISOR_vcpu_op(VCPUOP_register_runstate_memory_area, cpu,
52 &area);
53 WARN_ON(rc && rc != -ENOSYS);
54
55 per_cpu(processed_blocked_time, cpu) = runstate->time[RUNSTATE_blocked];
56 per_cpu(processed_stolen_time, cpu) = runstate->time[RUNSTATE_runnable]
57 + runstate->time[RUNSTATE_offline];
58}
59
60/*
61 * Runstate accounting
62 */
63/* stolen from arch/x86/xen/time.c */
64static void get_runstate_snapshot(struct vcpu_runstate_info *res)
65{
66 u64 state_time;
67 struct vcpu_runstate_info *state;
68
69 BUG_ON(preemptible());
70
71 state = &__get_cpu_var(runstate);
72
73 /*
74 * The runstate info is always updated by the hypervisor on
75 * the current CPU, so there's no need to use anything
76 * stronger than a compiler barrier when fetching it.
77 */
78 do {
79 state_time = state->state_entry_time;
80 rmb();
81 *res = *state;
82 rmb();
83 } while (state->state_entry_time != state_time);
84}
85
86#define NS_PER_TICK (1000000000LL/HZ)
87
88static unsigned long
89consider_steal_time(unsigned long new_itm)
90{
91 unsigned long stolen, blocked;
92 unsigned long delta_itm = 0, stolentick = 0;
93 int cpu = smp_processor_id();
94 struct vcpu_runstate_info runstate;
95 struct task_struct *p = current;
96
97 get_runstate_snapshot(&runstate);
98
99 /*
100 * Check for vcpu migration effect
101 * In this case, itc value is reversed.
102 * This causes huge stolen value.
103 * This function just checks and reject this effect.
104 */
105 if (!time_after_eq(runstate.time[RUNSTATE_blocked],
106 per_cpu(processed_blocked_time, cpu)))
107 blocked = 0;
108
109 if (!time_after_eq(runstate.time[RUNSTATE_runnable] +
110 runstate.time[RUNSTATE_offline],
111 per_cpu(processed_stolen_time, cpu)))
112 stolen = 0;
113
114 if (!time_after(delta_itm + new_itm, ia64_get_itc()))
115 stolentick = ia64_get_itc() - new_itm;
116
117 do_div(stolentick, NS_PER_TICK);
118 stolentick++;
119
120 do_div(stolen, NS_PER_TICK);
121
122 if (stolen > stolentick)
123 stolen = stolentick;
124
125 stolentick -= stolen;
126 do_div(blocked, NS_PER_TICK);
127
128 if (blocked > stolentick)
129 blocked = stolentick;
130
131 if (stolen > 0 || blocked > 0) {
132 account_steal_time(NULL, jiffies_to_cputime(stolen));
133 account_steal_time(idle_task(cpu), jiffies_to_cputime(blocked));
134 run_local_timers();
135
136 if (rcu_pending(cpu))
137 rcu_check_callbacks(cpu, user_mode(get_irq_regs()));
138
139 scheduler_tick();
140 run_posix_cpu_timers(p);
141 delta_itm += local_cpu_data->itm_delta * (stolen + blocked);
142
143 if (cpu == time_keeper_id) {
144 write_seqlock(&xtime_lock);
145 do_timer(stolen + blocked);
146 local_cpu_data->itm_next = delta_itm + new_itm;
147 write_sequnlock(&xtime_lock);
148 } else {
149 local_cpu_data->itm_next = delta_itm + new_itm;
150 }
151 per_cpu(processed_stolen_time, cpu) += NS_PER_TICK * stolen;
152 per_cpu(processed_blocked_time, cpu) += NS_PER_TICK * blocked;
153 }
154 return delta_itm;
155}
156
157static int xen_do_steal_accounting(unsigned long *new_itm)
158{
159 unsigned long delta_itm;
160 delta_itm = consider_steal_time(*new_itm);
161 *new_itm += delta_itm;
162 if (time_after(*new_itm, ia64_get_itc()) && delta_itm)
163 return 1;
164
165 return 0;
166}
167
168static void xen_itc_jitter_data_reset(void)
169{
170 u64 lcycle, ret;
171
172 do {
173 lcycle = itc_jitter_data.itc_lastcycle;
174 ret = cmpxchg(&itc_jitter_data.itc_lastcycle, lcycle, 0);
175 } while (unlikely(ret != lcycle));
176}
177
178struct pv_time_ops xen_time_ops __initdata = {
179 .init_missing_ticks_accounting = xen_init_missing_ticks_accounting,
180 .do_steal_accounting = xen_do_steal_accounting,
181 .clocksource_resume = xen_itc_jitter_data_reset,
182};
183
184/* Called after suspend, to resume time. */
185static void xen_local_tick_resume(void)
186{
187 /* Just trigger a tick. */
188 ia64_cpu_local_tick();
189 touch_softlockup_watchdog();
190}
191
192void
193xen_timer_resume(void)
194{
195 unsigned int cpu;
196
197 xen_local_tick_resume();
198
199 for_each_online_cpu(cpu)
200 xen_init_missing_ticks_accounting(cpu);
201}
202
203static void ia64_cpu_local_tick_fn(void *unused)
204{
205 xen_local_tick_resume();
206 xen_init_missing_ticks_accounting(smp_processor_id());
207}
208
209void
210xen_timer_resume_on_aps(void)
211{
212 smp_call_function(&ia64_cpu_local_tick_fn, NULL, 1);
213}
diff --git a/arch/ia64/xen/time.h b/arch/ia64/xen/time.h
new file mode 100644
index 000000000000..f98d7e1a42f0
--- /dev/null
+++ b/arch/ia64/xen/time.h
@@ -0,0 +1,24 @@
1/******************************************************************************
2 * arch/ia64/xen/time.h
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23extern struct pv_time_ops xen_time_ops __initdata;
24void xen_timer_resume_on_aps(void);
diff --git a/arch/ia64/xen/xcom_hcall.c b/arch/ia64/xen/xcom_hcall.c
new file mode 100644
index 000000000000..ccaf7431f7c8
--- /dev/null
+++ b/arch/ia64/xen/xcom_hcall.c
@@ -0,0 +1,441 @@
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15 *
16 * Tristan Gingold <tristan.gingold@bull.net>
17 *
18 * Copyright (c) 2007
19 * Isaku Yamahata <yamahata at valinux co jp>
20 * VA Linux Systems Japan K.K.
21 * consolidate mini and inline version.
22 */
23
24#include <linux/module.h>
25#include <xen/interface/xen.h>
26#include <xen/interface/memory.h>
27#include <xen/interface/grant_table.h>
28#include <xen/interface/callback.h>
29#include <xen/interface/vcpu.h>
30#include <asm/xen/hypervisor.h>
31#include <asm/xen/xencomm.h>
32
33/* Xencomm notes:
34 * This file defines hypercalls to be used by xencomm. The hypercalls simply
35 * create inlines or mini descriptors for pointers and then call the raw arch
36 * hypercall xencomm_arch_hypercall_XXX
37 *
38 * If the arch wants to directly use these hypercalls, simply define macros
39 * in asm/xen/hypercall.h, eg:
40 * #define HYPERVISOR_sched_op xencomm_hypercall_sched_op
41 *
42 * The arch may also define HYPERVISOR_xxx as a function and do more operations
43 * before/after doing the hypercall.
44 *
45 * Note: because only inline or mini descriptors are created these functions
46 * must only be called with in kernel memory parameters.
47 */
48
49int
50xencomm_hypercall_console_io(int cmd, int count, char *str)
51{
52 /* xen early printk uses console io hypercall before
53 * xencomm initialization. In that case, we just ignore it.
54 */
55 if (!xencomm_is_initialized())
56 return 0;
57
58 return xencomm_arch_hypercall_console_io
59 (cmd, count, xencomm_map_no_alloc(str, count));
60}
61EXPORT_SYMBOL_GPL(xencomm_hypercall_console_io);
62
63int
64xencomm_hypercall_event_channel_op(int cmd, void *op)
65{
66 struct xencomm_handle *desc;
67 desc = xencomm_map_no_alloc(op, sizeof(struct evtchn_op));
68 if (desc == NULL)
69 return -EINVAL;
70
71 return xencomm_arch_hypercall_event_channel_op(cmd, desc);
72}
73EXPORT_SYMBOL_GPL(xencomm_hypercall_event_channel_op);
74
75int
76xencomm_hypercall_xen_version(int cmd, void *arg)
77{
78 struct xencomm_handle *desc;
79 unsigned int argsize;
80
81 switch (cmd) {
82 case XENVER_version:
83 /* do not actually pass an argument */
84 return xencomm_arch_hypercall_xen_version(cmd, 0);
85 case XENVER_extraversion:
86 argsize = sizeof(struct xen_extraversion);
87 break;
88 case XENVER_compile_info:
89 argsize = sizeof(struct xen_compile_info);
90 break;
91 case XENVER_capabilities:
92 argsize = sizeof(struct xen_capabilities_info);
93 break;
94 case XENVER_changeset:
95 argsize = sizeof(struct xen_changeset_info);
96 break;
97 case XENVER_platform_parameters:
98 argsize = sizeof(struct xen_platform_parameters);
99 break;
100 case XENVER_get_features:
101 argsize = (arg == NULL) ? 0 : sizeof(struct xen_feature_info);
102 break;
103
104 default:
105 printk(KERN_DEBUG
106 "%s: unknown version op %d\n", __func__, cmd);
107 return -ENOSYS;
108 }
109
110 desc = xencomm_map_no_alloc(arg, argsize);
111 if (desc == NULL)
112 return -EINVAL;
113
114 return xencomm_arch_hypercall_xen_version(cmd, desc);
115}
116EXPORT_SYMBOL_GPL(xencomm_hypercall_xen_version);
117
118int
119xencomm_hypercall_physdev_op(int cmd, void *op)
120{
121 unsigned int argsize;
122
123 switch (cmd) {
124 case PHYSDEVOP_apic_read:
125 case PHYSDEVOP_apic_write:
126 argsize = sizeof(struct physdev_apic);
127 break;
128 case PHYSDEVOP_alloc_irq_vector:
129 case PHYSDEVOP_free_irq_vector:
130 argsize = sizeof(struct physdev_irq);
131 break;
132 case PHYSDEVOP_irq_status_query:
133 argsize = sizeof(struct physdev_irq_status_query);
134 break;
135
136 default:
137 printk(KERN_DEBUG
138 "%s: unknown physdev op %d\n", __func__, cmd);
139 return -ENOSYS;
140 }
141
142 return xencomm_arch_hypercall_physdev_op
143 (cmd, xencomm_map_no_alloc(op, argsize));
144}
145
146static int
147xencommize_grant_table_op(struct xencomm_mini **xc_area,
148 unsigned int cmd, void *op, unsigned int count,
149 struct xencomm_handle **desc)
150{
151 struct xencomm_handle *desc1;
152 unsigned int argsize;
153
154 switch (cmd) {
155 case GNTTABOP_map_grant_ref:
156 argsize = sizeof(struct gnttab_map_grant_ref);
157 break;
158 case GNTTABOP_unmap_grant_ref:
159 argsize = sizeof(struct gnttab_unmap_grant_ref);
160 break;
161 case GNTTABOP_setup_table:
162 {
163 struct gnttab_setup_table *setup = op;
164
165 argsize = sizeof(*setup);
166
167 if (count != 1)
168 return -EINVAL;
169 desc1 = __xencomm_map_no_alloc
170 (xen_guest_handle(setup->frame_list),
171 setup->nr_frames *
172 sizeof(*xen_guest_handle(setup->frame_list)),
173 *xc_area);
174 if (desc1 == NULL)
175 return -EINVAL;
176 (*xc_area)++;
177 set_xen_guest_handle(setup->frame_list, (void *)desc1);
178 break;
179 }
180 case GNTTABOP_dump_table:
181 argsize = sizeof(struct gnttab_dump_table);
182 break;
183 case GNTTABOP_transfer:
184 argsize = sizeof(struct gnttab_transfer);
185 break;
186 case GNTTABOP_copy:
187 argsize = sizeof(struct gnttab_copy);
188 break;
189 case GNTTABOP_query_size:
190 argsize = sizeof(struct gnttab_query_size);
191 break;
192 default:
193 printk(KERN_DEBUG "%s: unknown hypercall grant table op %d\n",
194 __func__, cmd);
195 BUG();
196 }
197
198 *desc = __xencomm_map_no_alloc(op, count * argsize, *xc_area);
199 if (*desc == NULL)
200 return -EINVAL;
201 (*xc_area)++;
202
203 return 0;
204}
205
206int
207xencomm_hypercall_grant_table_op(unsigned int cmd, void *op,
208 unsigned int count)
209{
210 int rc;
211 struct xencomm_handle *desc;
212 XENCOMM_MINI_ALIGNED(xc_area, 2);
213
214 rc = xencommize_grant_table_op(&xc_area, cmd, op, count, &desc);
215 if (rc)
216 return rc;
217
218 return xencomm_arch_hypercall_grant_table_op(cmd, desc, count);
219}
220EXPORT_SYMBOL_GPL(xencomm_hypercall_grant_table_op);
221
222int
223xencomm_hypercall_sched_op(int cmd, void *arg)
224{
225 struct xencomm_handle *desc;
226 unsigned int argsize;
227
228 switch (cmd) {
229 case SCHEDOP_yield:
230 case SCHEDOP_block:
231 argsize = 0;
232 break;
233 case SCHEDOP_shutdown:
234 argsize = sizeof(struct sched_shutdown);
235 break;
236 case SCHEDOP_poll:
237 {
238 struct sched_poll *poll = arg;
239 struct xencomm_handle *ports;
240
241 argsize = sizeof(struct sched_poll);
242 ports = xencomm_map_no_alloc(xen_guest_handle(poll->ports),
243 sizeof(*xen_guest_handle(poll->ports)));
244
245 set_xen_guest_handle(poll->ports, (void *)ports);
246 break;
247 }
248 default:
249 printk(KERN_DEBUG "%s: unknown sched op %d\n", __func__, cmd);
250 return -ENOSYS;
251 }
252
253 desc = xencomm_map_no_alloc(arg, argsize);
254 if (desc == NULL)
255 return -EINVAL;
256
257 return xencomm_arch_hypercall_sched_op(cmd, desc);
258}
259EXPORT_SYMBOL_GPL(xencomm_hypercall_sched_op);
260
261int
262xencomm_hypercall_multicall(void *call_list, int nr_calls)
263{
264 int rc;
265 int i;
266 struct multicall_entry *mce;
267 struct xencomm_handle *desc;
268 XENCOMM_MINI_ALIGNED(xc_area, nr_calls * 2);
269
270 for (i = 0; i < nr_calls; i++) {
271 mce = (struct multicall_entry *)call_list + i;
272
273 switch (mce->op) {
274 case __HYPERVISOR_update_va_mapping:
275 case __HYPERVISOR_mmu_update:
276 /* No-op on ia64. */
277 break;
278 case __HYPERVISOR_grant_table_op:
279 rc = xencommize_grant_table_op
280 (&xc_area,
281 mce->args[0], (void *)mce->args[1],
282 mce->args[2], &desc);
283 if (rc)
284 return rc;
285 mce->args[1] = (unsigned long)desc;
286 break;
287 case __HYPERVISOR_memory_op:
288 default:
289 printk(KERN_DEBUG
290 "%s: unhandled multicall op entry op %lu\n",
291 __func__, mce->op);
292 return -ENOSYS;
293 }
294 }
295
296 desc = xencomm_map_no_alloc(call_list,
297 nr_calls * sizeof(struct multicall_entry));
298 if (desc == NULL)
299 return -EINVAL;
300
301 return xencomm_arch_hypercall_multicall(desc, nr_calls);
302}
303EXPORT_SYMBOL_GPL(xencomm_hypercall_multicall);
304
305int
306xencomm_hypercall_callback_op(int cmd, void *arg)
307{
308 unsigned int argsize;
309 switch (cmd) {
310 case CALLBACKOP_register:
311 argsize = sizeof(struct callback_register);
312 break;
313 case CALLBACKOP_unregister:
314 argsize = sizeof(struct callback_unregister);
315 break;
316 default:
317 printk(KERN_DEBUG
318 "%s: unknown callback op %d\n", __func__, cmd);
319 return -ENOSYS;
320 }
321
322 return xencomm_arch_hypercall_callback_op
323 (cmd, xencomm_map_no_alloc(arg, argsize));
324}
325
326static int
327xencommize_memory_reservation(struct xencomm_mini *xc_area,
328 struct xen_memory_reservation *mop)
329{
330 struct xencomm_handle *desc;
331
332 desc = __xencomm_map_no_alloc(xen_guest_handle(mop->extent_start),
333 mop->nr_extents *
334 sizeof(*xen_guest_handle(mop->extent_start)),
335 xc_area);
336 if (desc == NULL)
337 return -EINVAL;
338
339 set_xen_guest_handle(mop->extent_start, (void *)desc);
340 return 0;
341}
342
343int
344xencomm_hypercall_memory_op(unsigned int cmd, void *arg)
345{
346 GUEST_HANDLE(xen_pfn_t) extent_start_va[2] = { {NULL}, {NULL} };
347 struct xen_memory_reservation *xmr = NULL;
348 int rc;
349 struct xencomm_handle *desc;
350 unsigned int argsize;
351 XENCOMM_MINI_ALIGNED(xc_area, 2);
352
353 switch (cmd) {
354 case XENMEM_increase_reservation:
355 case XENMEM_decrease_reservation:
356 case XENMEM_populate_physmap:
357 xmr = (struct xen_memory_reservation *)arg;
358 set_xen_guest_handle(extent_start_va[0],
359 xen_guest_handle(xmr->extent_start));
360
361 argsize = sizeof(*xmr);
362 rc = xencommize_memory_reservation(xc_area, xmr);
363 if (rc)
364 return rc;
365 xc_area++;
366 break;
367
368 case XENMEM_maximum_ram_page:
369 argsize = 0;
370 break;
371
372 case XENMEM_add_to_physmap:
373 argsize = sizeof(struct xen_add_to_physmap);
374 break;
375
376 default:
377 printk(KERN_DEBUG "%s: unknown memory op %d\n", __func__, cmd);
378 return -ENOSYS;
379 }
380
381 desc = xencomm_map_no_alloc(arg, argsize);
382 if (desc == NULL)
383 return -EINVAL;
384
385 rc = xencomm_arch_hypercall_memory_op(cmd, desc);
386
387 switch (cmd) {
388 case XENMEM_increase_reservation:
389 case XENMEM_decrease_reservation:
390 case XENMEM_populate_physmap:
391 set_xen_guest_handle(xmr->extent_start,
392 xen_guest_handle(extent_start_va[0]));
393 break;
394 }
395
396 return rc;
397}
398EXPORT_SYMBOL_GPL(xencomm_hypercall_memory_op);
399
400int
401xencomm_hypercall_suspend(unsigned long srec)
402{
403 struct sched_shutdown arg;
404
405 arg.reason = SHUTDOWN_suspend;
406
407 return xencomm_arch_hypercall_sched_op(
408 SCHEDOP_shutdown, xencomm_map_no_alloc(&arg, sizeof(arg)));
409}
410
411long
412xencomm_hypercall_vcpu_op(int cmd, int cpu, void *arg)
413{
414 unsigned int argsize;
415 switch (cmd) {
416 case VCPUOP_register_runstate_memory_area: {
417 struct vcpu_register_runstate_memory_area *area =
418 (struct vcpu_register_runstate_memory_area *)arg;
419 argsize = sizeof(*arg);
420 set_xen_guest_handle(area->addr.h,
421 (void *)xencomm_map_no_alloc(area->addr.v,
422 sizeof(area->addr.v)));
423 break;
424 }
425
426 default:
427 printk(KERN_DEBUG "%s: unknown vcpu op %d\n", __func__, cmd);
428 return -ENOSYS;
429 }
430
431 return xencomm_arch_hypercall_vcpu_op(cmd, cpu,
432 xencomm_map_no_alloc(arg, argsize));
433}
434
435long
436xencomm_hypercall_opt_feature(void *arg)
437{
438 return xencomm_arch_hypercall_opt_feature(
439 xencomm_map_no_alloc(arg,
440 sizeof(struct xen_ia64_opt_feature)));
441}
diff --git a/arch/ia64/xen/xen_pv_ops.c b/arch/ia64/xen/xen_pv_ops.c
new file mode 100644
index 000000000000..04cd12350455
--- /dev/null
+++ b/arch/ia64/xen/xen_pv_ops.c
@@ -0,0 +1,364 @@
1/******************************************************************************
2 * arch/ia64/xen/xen_pv_ops.c
3 *
4 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
5 * VA Linux Systems Japan K.K.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <linux/console.h>
24#include <linux/irq.h>
25#include <linux/kernel.h>
26#include <linux/pm.h>
27
28#include <asm/xen/hypervisor.h>
29#include <asm/xen/xencomm.h>
30#include <asm/xen/privop.h>
31
32#include "irq_xen.h"
33#include "time.h"
34
35/***************************************************************************
36 * general info
37 */
38static struct pv_info xen_info __initdata = {
39 .kernel_rpl = 2, /* or 1: determin at runtime */
40 .paravirt_enabled = 1,
41 .name = "Xen/ia64",
42};
43
44#define IA64_RSC_PL_SHIFT 2
45#define IA64_RSC_PL_BIT_SIZE 2
46#define IA64_RSC_PL_MASK \
47 (((1UL << IA64_RSC_PL_BIT_SIZE) - 1) << IA64_RSC_PL_SHIFT)
48
49static void __init
50xen_info_init(void)
51{
52 /* Xenified Linux/ia64 may run on pl = 1 or 2.
53 * determin at run time. */
54 unsigned long rsc = ia64_getreg(_IA64_REG_AR_RSC);
55 unsigned int rpl = (rsc & IA64_RSC_PL_MASK) >> IA64_RSC_PL_SHIFT;
56 xen_info.kernel_rpl = rpl;
57}
58
59/***************************************************************************
60 * pv_init_ops
61 * initialization hooks.
62 */
63
64static void
65xen_panic_hypercall(struct unw_frame_info *info, void *arg)
66{
67 current->thread.ksp = (__u64)info->sw - 16;
68 HYPERVISOR_shutdown(SHUTDOWN_crash);
69 /* we're never actually going to get here... */
70}
71
72static int
73xen_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
74{
75 unw_init_running(xen_panic_hypercall, NULL);
76 /* we're never actually going to get here... */
77 return NOTIFY_DONE;
78}
79
80static struct notifier_block xen_panic_block = {
81 xen_panic_event, NULL, 0 /* try to go last */
82};
83
84static void xen_pm_power_off(void)
85{
86 local_irq_disable();
87 HYPERVISOR_shutdown(SHUTDOWN_poweroff);
88}
89
90static void __init
91xen_banner(void)
92{
93 printk(KERN_INFO
94 "Running on Xen! pl = %d start_info_pfn=0x%lx nr_pages=%ld "
95 "flags=0x%x\n",
96 xen_info.kernel_rpl,
97 HYPERVISOR_shared_info->arch.start_info_pfn,
98 xen_start_info->nr_pages, xen_start_info->flags);
99}
100
101static int __init
102xen_reserve_memory(struct rsvd_region *region)
103{
104 region->start = (unsigned long)__va(
105 (HYPERVISOR_shared_info->arch.start_info_pfn << PAGE_SHIFT));
106 region->end = region->start + PAGE_SIZE;
107 return 1;
108}
109
110static void __init
111xen_arch_setup_early(void)
112{
113 struct shared_info *s;
114 BUG_ON(!xen_pv_domain());
115
116 s = HYPERVISOR_shared_info;
117 xen_start_info = __va(s->arch.start_info_pfn << PAGE_SHIFT);
118
119 /* Must be done before any hypercall. */
120 xencomm_initialize();
121
122 xen_setup_features();
123 /* Register a call for panic conditions. */
124 atomic_notifier_chain_register(&panic_notifier_list,
125 &xen_panic_block);
126 pm_power_off = xen_pm_power_off;
127
128 xen_ia64_enable_opt_feature();
129}
130
131static void __init
132xen_arch_setup_console(char **cmdline_p)
133{
134 add_preferred_console("xenboot", 0, NULL);
135 add_preferred_console("tty", 0, NULL);
136 /* use hvc_xen */
137 add_preferred_console("hvc", 0, NULL);
138
139#if !defined(CONFIG_VT) || !defined(CONFIG_DUMMY_CONSOLE)
140 conswitchp = NULL;
141#endif
142}
143
144static int __init
145xen_arch_setup_nomca(void)
146{
147 return 1;
148}
149
150static void __init
151xen_post_smp_prepare_boot_cpu(void)
152{
153 xen_setup_vcpu_info_placement();
154}
155
156static const struct pv_init_ops xen_init_ops __initdata = {
157 .banner = xen_banner,
158
159 .reserve_memory = xen_reserve_memory,
160
161 .arch_setup_early = xen_arch_setup_early,
162 .arch_setup_console = xen_arch_setup_console,
163 .arch_setup_nomca = xen_arch_setup_nomca,
164
165 .post_smp_prepare_boot_cpu = xen_post_smp_prepare_boot_cpu,
166};
167
168/***************************************************************************
169 * pv_cpu_ops
170 * intrinsics hooks.
171 */
172
173static void xen_setreg(int regnum, unsigned long val)
174{
175 switch (regnum) {
176 case _IA64_REG_AR_KR0 ... _IA64_REG_AR_KR7:
177 xen_set_kr(regnum - _IA64_REG_AR_KR0, val);
178 break;
179#ifdef CONFIG_IA32_SUPPORT
180 case _IA64_REG_AR_EFLAG:
181 xen_set_eflag(val);
182 break;
183#endif
184 case _IA64_REG_CR_TPR:
185 xen_set_tpr(val);
186 break;
187 case _IA64_REG_CR_ITM:
188 xen_set_itm(val);
189 break;
190 case _IA64_REG_CR_EOI:
191 xen_eoi(val);
192 break;
193 default:
194 ia64_native_setreg_func(regnum, val);
195 break;
196 }
197}
198
199static unsigned long xen_getreg(int regnum)
200{
201 unsigned long res;
202
203 switch (regnum) {
204 case _IA64_REG_PSR:
205 res = xen_get_psr();
206 break;
207#ifdef CONFIG_IA32_SUPPORT
208 case _IA64_REG_AR_EFLAG:
209 res = xen_get_eflag();
210 break;
211#endif
212 case _IA64_REG_CR_IVR:
213 res = xen_get_ivr();
214 break;
215 case _IA64_REG_CR_TPR:
216 res = xen_get_tpr();
217 break;
218 default:
219 res = ia64_native_getreg_func(regnum);
220 break;
221 }
222 return res;
223}
224
225/* turning on interrupts is a bit more complicated.. write to the
226 * memory-mapped virtual psr.i bit first (to avoid race condition),
227 * then if any interrupts were pending, we have to execute a hyperprivop
228 * to ensure the pending interrupt gets delivered; else we're done! */
229static void
230xen_ssm_i(void)
231{
232 int old = xen_get_virtual_psr_i();
233 xen_set_virtual_psr_i(1);
234 barrier();
235 if (!old && xen_get_virtual_pend())
236 xen_hyper_ssm_i();
237}
238
239/* turning off interrupts can be paravirtualized simply by writing
240 * to a memory-mapped virtual psr.i bit (implemented as a 16-bit bool) */
241static void
242xen_rsm_i(void)
243{
244 xen_set_virtual_psr_i(0);
245 barrier();
246}
247
248static unsigned long
249xen_get_psr_i(void)
250{
251 return xen_get_virtual_psr_i() ? IA64_PSR_I : 0;
252}
253
254static void
255xen_intrin_local_irq_restore(unsigned long mask)
256{
257 if (mask & IA64_PSR_I)
258 xen_ssm_i();
259 else
260 xen_rsm_i();
261}
262
263static const struct pv_cpu_ops xen_cpu_ops __initdata = {
264 .fc = xen_fc,
265 .thash = xen_thash,
266 .get_cpuid = xen_get_cpuid,
267 .get_pmd = xen_get_pmd,
268 .getreg = xen_getreg,
269 .setreg = xen_setreg,
270 .ptcga = xen_ptcga,
271 .get_rr = xen_get_rr,
272 .set_rr = xen_set_rr,
273 .set_rr0_to_rr4 = xen_set_rr0_to_rr4,
274 .ssm_i = xen_ssm_i,
275 .rsm_i = xen_rsm_i,
276 .get_psr_i = xen_get_psr_i,
277 .intrin_local_irq_restore
278 = xen_intrin_local_irq_restore,
279};
280
281/******************************************************************************
282 * replacement of hand written assembly codes.
283 */
284
285extern char xen_switch_to;
286extern char xen_leave_syscall;
287extern char xen_work_processed_syscall;
288extern char xen_leave_kernel;
289
290const struct pv_cpu_asm_switch xen_cpu_asm_switch = {
291 .switch_to = (unsigned long)&xen_switch_to,
292 .leave_syscall = (unsigned long)&xen_leave_syscall,
293 .work_processed_syscall = (unsigned long)&xen_work_processed_syscall,
294 .leave_kernel = (unsigned long)&xen_leave_kernel,
295};
296
297/***************************************************************************
298 * pv_iosapic_ops
299 * iosapic read/write hooks.
300 */
301static void
302xen_pcat_compat_init(void)
303{
304 /* nothing */
305}
306
307static struct irq_chip*
308xen_iosapic_get_irq_chip(unsigned long trigger)
309{
310 return NULL;
311}
312
313static unsigned int
314xen_iosapic_read(char __iomem *iosapic, unsigned int reg)
315{
316 struct physdev_apic apic_op;
317 int ret;
318
319 apic_op.apic_physbase = (unsigned long)iosapic -
320 __IA64_UNCACHED_OFFSET;
321 apic_op.reg = reg;
322 ret = HYPERVISOR_physdev_op(PHYSDEVOP_apic_read, &apic_op);
323 if (ret)
324 return ret;
325 return apic_op.value;
326}
327
328static void
329xen_iosapic_write(char __iomem *iosapic, unsigned int reg, u32 val)
330{
331 struct physdev_apic apic_op;
332
333 apic_op.apic_physbase = (unsigned long)iosapic -
334 __IA64_UNCACHED_OFFSET;
335 apic_op.reg = reg;
336 apic_op.value = val;
337 HYPERVISOR_physdev_op(PHYSDEVOP_apic_write, &apic_op);
338}
339
340static const struct pv_iosapic_ops xen_iosapic_ops __initdata = {
341 .pcat_compat_init = xen_pcat_compat_init,
342 .__get_irq_chip = xen_iosapic_get_irq_chip,
343
344 .__read = xen_iosapic_read,
345 .__write = xen_iosapic_write,
346};
347
348/***************************************************************************
349 * pv_ops initialization
350 */
351
352void __init
353xen_setup_pv_ops(void)
354{
355 xen_info_init();
356 pv_info = xen_info;
357 pv_init_ops = xen_init_ops;
358 pv_cpu_ops = xen_cpu_ops;
359 pv_iosapic_ops = xen_iosapic_ops;
360 pv_irq_ops = xen_irq_ops;
361 pv_time_ops = xen_time_ops;
362
363 paravirt_cpu_asm_init(&xen_cpu_asm_switch);
364}
diff --git a/arch/ia64/xen/xencomm.c b/arch/ia64/xen/xencomm.c
new file mode 100644
index 000000000000..1f5d7ac82e97
--- /dev/null
+++ b/arch/ia64/xen/xencomm.c
@@ -0,0 +1,105 @@
1/*
2 * Copyright (C) 2006 Hollis Blanchard <hollisb@us.ibm.com>, IBM Corporation
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
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
17 */
18
19#include <linux/mm.h>
20
21static unsigned long kernel_virtual_offset;
22static int is_xencomm_initialized;
23
24/* for xen early printk. It uses console io hypercall which uses xencomm.
25 * However early printk may use it before xencomm initialization.
26 */
27int
28xencomm_is_initialized(void)
29{
30 return is_xencomm_initialized;
31}
32
33void
34xencomm_initialize(void)
35{
36 kernel_virtual_offset = KERNEL_START - ia64_tpa(KERNEL_START);
37 is_xencomm_initialized = 1;
38}
39
40/* Translate virtual address to physical address. */
41unsigned long
42xencomm_vtop(unsigned long vaddr)
43{
44 struct page *page;
45 struct vm_area_struct *vma;
46
47 if (vaddr == 0)
48 return 0UL;
49
50 if (REGION_NUMBER(vaddr) == 5) {
51 pgd_t *pgd;
52 pud_t *pud;
53 pmd_t *pmd;
54 pte_t *ptep;
55
56 /* On ia64, TASK_SIZE refers to current. It is not initialized
57 during boot.
58 Furthermore the kernel is relocatable and __pa() doesn't
59 work on addresses. */
60 if (vaddr >= KERNEL_START
61 && vaddr < (KERNEL_START + KERNEL_TR_PAGE_SIZE))
62 return vaddr - kernel_virtual_offset;
63
64 /* In kernel area -- virtually mapped. */
65 pgd = pgd_offset_k(vaddr);
66 if (pgd_none(*pgd) || pgd_bad(*pgd))
67 return ~0UL;
68
69 pud = pud_offset(pgd, vaddr);
70 if (pud_none(*pud) || pud_bad(*pud))
71 return ~0UL;
72
73 pmd = pmd_offset(pud, vaddr);
74 if (pmd_none(*pmd) || pmd_bad(*pmd))
75 return ~0UL;
76
77 ptep = pte_offset_kernel(pmd, vaddr);
78 if (!ptep)
79 return ~0UL;
80
81 return (pte_val(*ptep) & _PFN_MASK) | (vaddr & ~PAGE_MASK);
82 }
83
84 if (vaddr > TASK_SIZE) {
85 /* percpu variables */
86 if (REGION_NUMBER(vaddr) == 7 &&
87 REGION_OFFSET(vaddr) >= (1ULL << IA64_MAX_PHYS_BITS))
88 ia64_tpa(vaddr);
89
90 /* kernel address */
91 return __pa(vaddr);
92 }
93
94 /* XXX double-check (lack of) locking */
95 vma = find_extend_vma(current->mm, vaddr);
96 if (!vma)
97 return ~0UL;
98
99 /* We assume the page is modified. */
100 page = follow_page(vma, vaddr, FOLL_WRITE | FOLL_TOUCH);
101 if (!page)
102 return ~0UL;
103
104 return (page_to_pfn(page) << PAGE_SHIFT) | (vaddr & ~PAGE_MASK);
105}
diff --git a/arch/ia64/xen/xenivt.S b/arch/ia64/xen/xenivt.S
new file mode 100644
index 000000000000..3e71d50584d9
--- /dev/null
+++ b/arch/ia64/xen/xenivt.S
@@ -0,0 +1,52 @@
1/*
2 * arch/ia64/xen/ivt.S
3 *
4 * Copyright (C) 2005 Hewlett-Packard Co
5 * Dan Magenheimer <dan.magenheimer@hp.com>
6 *
7 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
8 * VA Linux Systems Japan K.K.
9 * pv_ops.
10 */
11
12#include <asm/asmmacro.h>
13#include <asm/kregs.h>
14#include <asm/pgtable.h>
15
16#include "../kernel/minstate.h"
17
18 .section .text,"ax"
19GLOBAL_ENTRY(xen_event_callback)
20 mov r31=pr // prepare to save predicates
21 ;;
22 SAVE_MIN_WITH_COVER // uses r31; defines r2 and r3
23 ;;
24 movl r3=XSI_PSR_IC
25 mov r14=1
26 ;;
27 st4 [r3]=r14
28 ;;
29 adds r3=8,r2 // set up second base pointer for SAVE_REST
30 srlz.i // ensure everybody knows psr.ic is back on
31 ;;
32 SAVE_REST
33 ;;
341:
35 alloc r14=ar.pfs,0,0,1,0 // must be first in an insn group
36 add out0=16,sp // pass pointer to pt_regs as first arg
37 ;;
38 br.call.sptk.many b0=xen_evtchn_do_upcall
39 ;;
40 movl r20=XSI_PSR_I_ADDR
41 ;;
42 ld8 r20=[r20]
43 ;;
44 adds r20=-1,r20 // vcpu_info->evtchn_upcall_pending
45 ;;
46 ld1 r20=[r20]
47 ;;
48 cmp.ne p6,p0=r20,r0 // if there are pending events,
49 (p6) br.spnt.few 1b // call evtchn_do_upcall again.
50 br.sptk.many xen_leave_kernel // we know ia64_leave_kernel is
51 // paravirtualized as xen_leave_kernel
52END(xen_event_callback)
diff --git a/arch/ia64/xen/xensetup.S b/arch/ia64/xen/xensetup.S
new file mode 100644
index 000000000000..28fed1fcc079
--- /dev/null
+++ b/arch/ia64/xen/xensetup.S
@@ -0,0 +1,83 @@
1/*
2 * Support routines for Xen
3 *
4 * Copyright (C) 2005 Dan Magenheimer <dan.magenheimer@hp.com>
5 */
6
7#include <asm/processor.h>
8#include <asm/asmmacro.h>
9#include <asm/pgtable.h>
10#include <asm/system.h>
11#include <asm/paravirt.h>
12#include <asm/xen/privop.h>
13#include <linux/elfnote.h>
14#include <linux/init.h>
15#include <xen/interface/elfnote.h>
16
17 .section .data.read_mostly
18 .align 8
19 .global xen_domain_type
20xen_domain_type:
21 data4 XEN_NATIVE_ASM
22 .previous
23
24 __INIT
25ENTRY(startup_xen)
26 // Calculate load offset.
27 // The constant, LOAD_OFFSET, can't be used because the boot
28 // loader doesn't always load to the LMA specified by the vmlinux.lds.
29 mov r9=ip // must be the first instruction to make sure
30 // that r9 = the physical address of startup_xen.
31 // Usually r9 = startup_xen - LOAD_OFFSET
32 movl r8=startup_xen
33 ;;
34 sub r9=r9,r8 // Usually r9 = -LOAD_OFFSET.
35
36 mov r10=PARAVIRT_HYPERVISOR_TYPE_XEN
37 movl r11=_start
38 ;;
39 add r11=r11,r9
40 movl r8=hypervisor_type
41 ;;
42 add r8=r8,r9
43 mov b0=r11
44 ;;
45 st8 [r8]=r10
46 br.cond.sptk.many b0
47 ;;
48END(startup_xen)
49
50 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux")
51 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6")
52 ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0")
53 ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, data8.ua startup_xen - LOAD_OFFSET)
54
55#define isBP p3 // are we the Bootstrap Processor?
56
57 .text
58
59GLOBAL_ENTRY(xen_setup_hook)
60 mov r8=XEN_PV_DOMAIN_ASM
61(isBP) movl r9=xen_domain_type;;
62(isBP) st4 [r9]=r8
63 movl r10=xen_ivt;;
64
65 mov cr.iva=r10
66
67 /* Set xsi base. */
68#define FW_HYPERCALL_SET_SHARED_INFO_VA 0x600
69(isBP) mov r2=FW_HYPERCALL_SET_SHARED_INFO_VA
70(isBP) movl r28=XSI_BASE;;
71(isBP) break 0x1000;;
72
73 /* setup pv_ops */
74(isBP) mov r4=rp
75 ;;
76(isBP) br.call.sptk.many rp=xen_setup_pv_ops
77 ;;
78(isBP) mov rp=r4
79 ;;
80
81 br.ret.sptk.many rp
82 ;;
83END(xen_setup_hook)
diff --git a/arch/m32r/oprofile/init.c b/arch/m32r/oprofile/init.c
index b7773e45c43f..fa56860f4258 100644
--- a/arch/m32r/oprofile/init.c
+++ b/arch/m32r/oprofile/init.c
@@ -12,7 +12,7 @@
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <linux/init.h> 13#include <linux/init.h>
14 14
15int __init oprofile_arch_init(struct oprofile_operations * ops) 15int __init oprofile_arch_init(struct oprofile_operations *ops)
16{ 16{
17 return -ENODEV; 17 return -ENODEV;
18} 18}
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c
index 0a3f9e8ebde0..ab9862c3a136 100644
--- a/arch/m68k/amiga/config.c
+++ b/arch/m68k/amiga/config.c
@@ -15,6 +15,7 @@
15#include <linux/types.h> 15#include <linux/types.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/seq_file.h>
18#include <linux/tty.h> 19#include <linux/tty.h>
19#include <linux/console.h> 20#include <linux/console.h>
20#include <linux/rtc.h> 21#include <linux/rtc.h>
@@ -93,7 +94,7 @@ static char amiga_model_name[13] = "Amiga ";
93 94
94static void amiga_sched_init(irq_handler_t handler); 95static void amiga_sched_init(irq_handler_t handler);
95static void amiga_get_model(char *model); 96static void amiga_get_model(char *model);
96static int amiga_get_hardware_list(char *buffer); 97static void amiga_get_hardware_list(struct seq_file *m);
97/* amiga specific timer functions */ 98/* amiga specific timer functions */
98static unsigned long amiga_gettimeoffset(void); 99static unsigned long amiga_gettimeoffset(void);
99static int a3000_hwclk(int, struct rtc_time *); 100static int a3000_hwclk(int, struct rtc_time *);
@@ -911,13 +912,11 @@ static void amiga_get_model(char *model)
911} 912}
912 913
913 914
914static int amiga_get_hardware_list(char *buffer) 915static void amiga_get_hardware_list(struct seq_file *m)
915{ 916{
916 int len = 0;
917
918 if (AMIGAHW_PRESENT(CHIP_RAM)) 917 if (AMIGAHW_PRESENT(CHIP_RAM))
919 len += sprintf(buffer+len, "Chip RAM:\t%ldK\n", amiga_chip_size>>10); 918 seq_printf(m, "Chip RAM:\t%ldK\n", amiga_chip_size>>10);
920 len += sprintf(buffer+len, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n", 919 seq_printf(m, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n",
921 amiga_psfreq, amiga_eclock); 920 amiga_psfreq, amiga_eclock);
922 if (AMIGAHW_PRESENT(AMI_VIDEO)) { 921 if (AMIGAHW_PRESENT(AMI_VIDEO)) {
923 char *type; 922 char *type;
@@ -935,14 +934,14 @@ static int amiga_get_hardware_list(char *buffer)
935 type = "Old or Unknown"; 934 type = "Old or Unknown";
936 break; 935 break;
937 } 936 }
938 len += sprintf(buffer+len, "Graphics:\t%s\n", type); 937 seq_printf(m, "Graphics:\t%s\n", type);
939 } 938 }
940 939
941#define AMIGAHW_ANNOUNCE(name, str) \ 940#define AMIGAHW_ANNOUNCE(name, str) \
942 if (AMIGAHW_PRESENT(name)) \ 941 if (AMIGAHW_PRESENT(name)) \
943 len += sprintf (buffer+len, "\t%s\n", str) 942 seq_printf (m, "\t%s\n", str)
944 943
945 len += sprintf (buffer + len, "Detected hardware:\n"); 944 seq_printf (m, "Detected hardware:\n");
946 945
947 AMIGAHW_ANNOUNCE(AMI_VIDEO, "Amiga Video"); 946 AMIGAHW_ANNOUNCE(AMI_VIDEO, "Amiga Video");
948 AMIGAHW_ANNOUNCE(AMI_BLITTER, "Blitter"); 947 AMIGAHW_ANNOUNCE(AMI_BLITTER, "Blitter");
@@ -975,15 +974,13 @@ static int amiga_get_hardware_list(char *buffer)
975 AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA Slot"); 974 AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA Slot");
976#ifdef CONFIG_ZORRO 975#ifdef CONFIG_ZORRO
977 if (AMIGAHW_PRESENT(ZORRO)) 976 if (AMIGAHW_PRESENT(ZORRO))
978 len += sprintf(buffer+len, "\tZorro II%s AutoConfig: %d Expansion " 977 seq_printf(m, "\tZorro II%s AutoConfig: %d Expansion "
979 "Device%s\n", 978 "Device%s\n",
980 AMIGAHW_PRESENT(ZORRO3) ? "I" : "", 979 AMIGAHW_PRESENT(ZORRO3) ? "I" : "",
981 zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s"); 980 zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s");
982#endif /* CONFIG_ZORRO */ 981#endif /* CONFIG_ZORRO */
983 982
984#undef AMIGAHW_ANNOUNCE 983#undef AMIGAHW_ANNOUNCE
985
986 return len;
987} 984}
988 985
989/* 986/*
diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c
index af031855f796..49c28cdbea5c 100644
--- a/arch/m68k/atari/config.c
+++ b/arch/m68k/atari/config.c
@@ -26,6 +26,7 @@
26 26
27#include <linux/types.h> 27#include <linux/types.h>
28#include <linux/mm.h> 28#include <linux/mm.h>
29#include <linux/seq_file.h>
29#include <linux/console.h> 30#include <linux/console.h>
30#include <linux/init.h> 31#include <linux/init.h>
31#include <linux/delay.h> 32#include <linux/delay.h>
@@ -63,7 +64,7 @@ int atari_rtc_year_offset;
63/* local function prototypes */ 64/* local function prototypes */
64static void atari_reset(void); 65static void atari_reset(void);
65static void atari_get_model(char *model); 66static void atari_get_model(char *model);
66static int atari_get_hardware_list(char *buffer); 67static void atari_get_hardware_list(struct seq_file *m);
67 68
68/* atari specific irq functions */ 69/* atari specific irq functions */
69extern void atari_init_IRQ (void); 70extern void atari_init_IRQ (void);
@@ -611,21 +612,21 @@ static void atari_get_model(char *model)
611} 612}
612 613
613 614
614static int atari_get_hardware_list(char *buffer) 615static void atari_get_hardware_list(struct seq_file *m)
615{ 616{
616 int len = 0, i; 617 int i;
617 618
618 for (i = 0; i < m68k_num_memory; i++) 619 for (i = 0; i < m68k_num_memory; i++)
619 len += sprintf(buffer+len, "\t%3ld MB at 0x%08lx (%s)\n", 620 seq_printf(m, "\t%3ld MB at 0x%08lx (%s)\n",
620 m68k_memory[i].size >> 20, m68k_memory[i].addr, 621 m68k_memory[i].size >> 20, m68k_memory[i].addr,
621 (m68k_memory[i].addr & 0xff000000 ? 622 (m68k_memory[i].addr & 0xff000000 ?
622 "alternate RAM" : "ST-RAM")); 623 "alternate RAM" : "ST-RAM"));
623 624
624#define ATARIHW_ANNOUNCE(name, str) \ 625#define ATARIHW_ANNOUNCE(name, str) \
625 if (ATARIHW_PRESENT(name)) \ 626 if (ATARIHW_PRESENT(name)) \
626 len += sprintf(buffer + len, "\t%s\n", str) 627 seq_printf(m, "\t%s\n", str)
627 628
628 len += sprintf(buffer + len, "Detected hardware:\n"); 629 seq_printf(m, "Detected hardware:\n");
629 ATARIHW_ANNOUNCE(STND_SHIFTER, "ST Shifter"); 630 ATARIHW_ANNOUNCE(STND_SHIFTER, "ST Shifter");
630 ATARIHW_ANNOUNCE(EXTD_SHIFTER, "STe Shifter"); 631 ATARIHW_ANNOUNCE(EXTD_SHIFTER, "STe Shifter");
631 ATARIHW_ANNOUNCE(TT_SHIFTER, "TT Shifter"); 632 ATARIHW_ANNOUNCE(TT_SHIFTER, "TT Shifter");
@@ -654,6 +655,4 @@ static int atari_get_hardware_list(char *buffer)
654 ATARIHW_ANNOUNCE(BLITTER, "Blitter"); 655 ATARIHW_ANNOUNCE(BLITTER, "Blitter");
655 ATARIHW_ANNOUNCE(VME, "VME Bus"); 656 ATARIHW_ANNOUNCE(VME, "VME Bus");
656 ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor"); 657 ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor");
657
658 return len;
659} 658}
diff --git a/arch/m68k/atari/stram.c b/arch/m68k/atari/stram.c
index 04c69ffbea71..6ec3b7f33779 100644
--- a/arch/m68k/atari/stram.c
+++ b/arch/m68k/atari/stram.c
@@ -42,6 +42,7 @@
42/* abbrev for the && above... */ 42/* abbrev for the && above... */
43#define DO_PROC 43#define DO_PROC
44#include <linux/proc_fs.h> 44#include <linux/proc_fs.h>
45#include <linux/seq_file.h>
45#endif 46#endif
46 47
47/* 48/*
@@ -323,19 +324,16 @@ static int remove_region( BLOCK *block )
323 324
324#ifdef DO_PROC 325#ifdef DO_PROC
325 326
326#define PRINT_PROC(fmt,args...) len += sprintf( buf+len, fmt, ##args ) 327#define PRINT_PROC(fmt,args...) seq_printf( m, fmt, ##args )
327 328
328int get_stram_list( char *buf ) 329static int stram_proc_show(struct seq_file *m, void *v)
329{ 330{
330 int len = 0;
331 BLOCK *p; 331 BLOCK *p;
332 332
333 PRINT_PROC("Total ST-RAM: %8u kB\n", 333 PRINT_PROC("Total ST-RAM: %8u kB\n",
334 (stram_end - stram_start) >> 10); 334 (stram_end - stram_start) >> 10);
335 PRINT_PROC( "Allocated regions:\n" ); 335 PRINT_PROC( "Allocated regions:\n" );
336 for( p = alloc_list; p; p = p->next ) { 336 for( p = alloc_list; p; p = p->next ) {
337 if (len + 50 >= PAGE_SIZE)
338 break;
339 PRINT_PROC("0x%08lx-0x%08lx: %s (", 337 PRINT_PROC("0x%08lx-0x%08lx: %s (",
340 virt_to_phys(p->start), 338 virt_to_phys(p->start),
341 virt_to_phys(p->start+p->size-1), 339 virt_to_phys(p->start+p->size-1),
@@ -346,9 +344,27 @@ int get_stram_list( char *buf )
346 PRINT_PROC( "??)\n" ); 344 PRINT_PROC( "??)\n" );
347 } 345 }
348 346
349 return( len ); 347 return 0;
348}
349
350static int stram_proc_open(struct inode *inode, struct file *file)
351{
352 return single_open(file, stram_proc_show, NULL);
350} 353}
351 354
355static const struct file_operations stram_proc_fops = {
356 .open = stram_proc_open,
357 .read = seq_read,
358 .llseek = seq_lseek,
359 .release = single_release,
360};
361
362static int __init proc_stram_init(void)
363{
364 proc_create("stram", 0, NULL, &stram_proc_fops);
365 return 0;
366}
367module_init(proc_stram_init);
352#endif 368#endif
353 369
354 370
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c
index 65c9204ab9ac..c072595928c0 100644
--- a/arch/m68k/bvme6000/config.c
+++ b/arch/m68k/bvme6000/config.c
@@ -38,7 +38,6 @@
38#include <asm/bvme6000hw.h> 38#include <asm/bvme6000hw.h>
39 39
40static void bvme6000_get_model(char *model); 40static void bvme6000_get_model(char *model);
41static int bvme6000_get_hardware_list(char *buffer);
42extern void bvme6000_sched_init(irq_handler_t handler); 41extern void bvme6000_sched_init(irq_handler_t handler);
43extern unsigned long bvme6000_gettimeoffset (void); 42extern unsigned long bvme6000_gettimeoffset (void);
44extern int bvme6000_hwclk (int, struct rtc_time *); 43extern int bvme6000_hwclk (int, struct rtc_time *);
@@ -82,15 +81,6 @@ static void bvme6000_get_model(char *model)
82 sprintf(model, "BVME%d000", m68k_cputype == CPU_68060 ? 6 : 4); 81 sprintf(model, "BVME%d000", m68k_cputype == CPU_68060 ? 6 : 4);
83} 82}
84 83
85
86/* No hardware options on BVME6000? */
87
88static int bvme6000_get_hardware_list(char *buffer)
89{
90 *buffer = '\0';
91 return 0;
92}
93
94/* 84/*
95 * This function is called during kernel startup to initialize 85 * This function is called during kernel startup to initialize
96 * the bvme6000 IRQ handling routines. 86 * the bvme6000 IRQ handling routines.
@@ -127,7 +117,6 @@ void __init config_bvme6000(void)
127 mach_set_clock_mmss = bvme6000_set_clock_mmss; 117 mach_set_clock_mmss = bvme6000_set_clock_mmss;
128 mach_reset = bvme6000_reset; 118 mach_reset = bvme6000_reset;
129 mach_get_model = bvme6000_get_model; 119 mach_get_model = bvme6000_get_model;
130 mach_get_hardware_list = bvme6000_get_hardware_list;
131 120
132 printk ("Board is %sconfigured as a System Controller\n", 121 printk ("Board is %sconfigured as a System Controller\n",
133 *config_reg_ptr & BVME_CONFIG_SW1 ? "" : "not "); 122 *config_reg_ptr & BVME_CONFIG_SW1 ? "" : "not ");
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c
index ea1e44da19b9..4d97bd2bd573 100644
--- a/arch/m68k/kernel/setup.c
+++ b/arch/m68k/kernel/setup.c
@@ -20,6 +20,7 @@
20#include <linux/string.h> 20#include <linux/string.h>
21#include <linux/init.h> 21#include <linux/init.h>
22#include <linux/bootmem.h> 22#include <linux/bootmem.h>
23#include <linux/proc_fs.h>
23#include <linux/seq_file.h> 24#include <linux/seq_file.h>
24#include <linux/module.h> 25#include <linux/module.h>
25#include <linux/initrd.h> 26#include <linux/initrd.h>
@@ -80,7 +81,7 @@ void (*mach_sched_init) (irq_handler_t handler) __initdata = NULL;
80/* machine dependent irq functions */ 81/* machine dependent irq functions */
81void (*mach_init_IRQ) (void) __initdata = NULL; 82void (*mach_init_IRQ) (void) __initdata = NULL;
82void (*mach_get_model) (char *model); 83void (*mach_get_model) (char *model);
83int (*mach_get_hardware_list) (char *buffer); 84void (*mach_get_hardware_list) (struct seq_file *m);
84/* machine dependent timer functions */ 85/* machine dependent timer functions */
85unsigned long (*mach_gettimeoffset) (void); 86unsigned long (*mach_gettimeoffset) (void);
86int (*mach_hwclk) (int, struct rtc_time*); 87int (*mach_hwclk) (int, struct rtc_time*);
@@ -467,9 +468,9 @@ const struct seq_operations cpuinfo_op = {
467 .show = show_cpuinfo, 468 .show = show_cpuinfo,
468}; 469};
469 470
470int get_hardware_list(char *buffer) 471#ifdef CONFIG_PROC_HARDWARE
472static int hardware_proc_show(struct seq_file *m, void *v)
471{ 473{
472 int len = 0;
473 char model[80]; 474 char model[80];
474 unsigned long mem; 475 unsigned long mem;
475 int i; 476 int i;
@@ -479,17 +480,37 @@ int get_hardware_list(char *buffer)
479 else 480 else
480 strcpy(model, "Unknown m68k"); 481 strcpy(model, "Unknown m68k");
481 482
482 len += sprintf(buffer + len, "Model:\t\t%s\n", model); 483 seq_printf(m, "Model:\t\t%s\n", model);
483 for (mem = 0, i = 0; i < m68k_num_memory; i++) 484 for (mem = 0, i = 0; i < m68k_num_memory; i++)
484 mem += m68k_memory[i].size; 485 mem += m68k_memory[i].size;
485 len += sprintf(buffer + len, "System Memory:\t%ldK\n", mem >> 10); 486 seq_printf(m, "System Memory:\t%ldK\n", mem >> 10);
486 487
487 if (mach_get_hardware_list) 488 if (mach_get_hardware_list)
488 len += mach_get_hardware_list(buffer + len); 489 mach_get_hardware_list(m);
489 490
490 return len; 491 return 0;
492}
493
494static int hardware_proc_open(struct inode *inode, struct file *file)
495{
496 return single_open(file, hardware_proc_show, NULL);
491} 497}
492 498
499static const struct file_operations hardware_proc_fops = {
500 .open = hardware_proc_open,
501 .read = seq_read,
502 .llseek = seq_lseek,
503 .release = single_release,
504};
505
506static int __init proc_hardware_init(void)
507{
508 proc_create("hardware", 0, NULL, &hardware_proc_fops);
509 return 0;
510}
511module_init(proc_hardware_init);
512#endif
513
493void check_bugs(void) 514void check_bugs(void)
494{ 515{
495#ifndef CONFIG_M68KFPU_EMU 516#ifndef CONFIG_M68KFPU_EMU
diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c
index 92fe50714112..43cdf476ffab 100644
--- a/arch/m68k/mvme147/config.c
+++ b/arch/m68k/mvme147/config.c
@@ -37,7 +37,6 @@
37 37
38 38
39static void mvme147_get_model(char *model); 39static void mvme147_get_model(char *model);
40static int mvme147_get_hardware_list(char *buffer);
41extern void mvme147_sched_init(irq_handler_t handler); 40extern void mvme147_sched_init(irq_handler_t handler);
42extern unsigned long mvme147_gettimeoffset (void); 41extern unsigned long mvme147_gettimeoffset (void);
43extern int mvme147_hwclk (int, struct rtc_time *); 42extern int mvme147_hwclk (int, struct rtc_time *);
@@ -76,14 +75,6 @@ static void mvme147_get_model(char *model)
76 sprintf(model, "Motorola MVME147"); 75 sprintf(model, "Motorola MVME147");
77} 76}
78 77
79
80static int mvme147_get_hardware_list(char *buffer)
81{
82 *buffer = '\0';
83
84 return 0;
85}
86
87/* 78/*
88 * This function is called during kernel startup to initialize 79 * This function is called during kernel startup to initialize
89 * the mvme147 IRQ handling routines. 80 * the mvme147 IRQ handling routines.
@@ -104,7 +95,6 @@ void __init config_mvme147(void)
104 mach_set_clock_mmss = mvme147_set_clock_mmss; 95 mach_set_clock_mmss = mvme147_set_clock_mmss;
105 mach_reset = mvme147_reset; 96 mach_reset = mvme147_reset;
106 mach_get_model = mvme147_get_model; 97 mach_get_model = mvme147_get_model;
107 mach_get_hardware_list = mvme147_get_hardware_list;
108 98
109 /* Board type is only set by newer versions of vmelilo/tftplilo */ 99 /* Board type is only set by newer versions of vmelilo/tftplilo */
110 if (!vme_brdtype) 100 if (!vme_brdtype)
diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c
index 24cbc3030454..1521826fc3c7 100644
--- a/arch/m68k/mvme16x/config.c
+++ b/arch/m68k/mvme16x/config.c
@@ -17,6 +17,7 @@
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/seq_file.h>
20#include <linux/tty.h> 21#include <linux/tty.h>
21#include <linux/console.h> 22#include <linux/console.h>
22#include <linux/linkage.h> 23#include <linux/linkage.h>
@@ -42,7 +43,6 @@ extern t_bdid mvme_bdid;
42static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE; 43static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;
43 44
44static void mvme16x_get_model(char *model); 45static void mvme16x_get_model(char *model);
45static int mvme16x_get_hardware_list(char *buffer);
46extern void mvme16x_sched_init(irq_handler_t handler); 46extern void mvme16x_sched_init(irq_handler_t handler);
47extern unsigned long mvme16x_gettimeoffset (void); 47extern unsigned long mvme16x_gettimeoffset (void);
48extern int mvme16x_hwclk (int, struct rtc_time *); 48extern int mvme16x_hwclk (int, struct rtc_time *);
@@ -93,26 +93,21 @@ static void mvme16x_get_model(char *model)
93} 93}
94 94
95 95
96static int mvme16x_get_hardware_list(char *buffer) 96static void mvme16x_get_hardware_list(struct seq_file *m)
97{ 97{
98 p_bdid p = &mvme_bdid; 98 p_bdid p = &mvme_bdid;
99 int len = 0;
100 99
101 if (p->brdno == 0x0162 || p->brdno == 0x0172) 100 if (p->brdno == 0x0162 || p->brdno == 0x0172)
102 { 101 {
103 unsigned char rev = *(unsigned char *)MVME162_VERSION_REG; 102 unsigned char rev = *(unsigned char *)MVME162_VERSION_REG;
104 103
105 len += sprintf (buffer+len, "VMEchip2 %spresent\n", 104 seq_printf (m, "VMEchip2 %spresent\n",
106 rev & MVME16x_CONFIG_NO_VMECHIP2 ? "NOT " : ""); 105 rev & MVME16x_CONFIG_NO_VMECHIP2 ? "NOT " : "");
107 len += sprintf (buffer+len, "SCSI interface %spresent\n", 106 seq_printf (m, "SCSI interface %spresent\n",
108 rev & MVME16x_CONFIG_NO_SCSICHIP ? "NOT " : ""); 107 rev & MVME16x_CONFIG_NO_SCSICHIP ? "NOT " : "");
109 len += sprintf (buffer+len, "Ethernet i/f %spresent\n", 108 seq_printf (m, "Ethernet i/f %spresent\n",
110 rev & MVME16x_CONFIG_NO_ETHERNET ? "NOT " : ""); 109 rev & MVME16x_CONFIG_NO_ETHERNET ? "NOT " : "");
111 } 110 }
112 else
113 *buffer = '\0';
114
115 return (len);
116} 111}
117 112
118/* 113/*
diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c
index 9c7eefa3f98a..7110546e3c00 100644
--- a/arch/m68k/q40/config.c
+++ b/arch/m68k/q40/config.c
@@ -39,7 +39,6 @@
39extern irqreturn_t q40_process_int(int level, struct pt_regs *regs); 39extern irqreturn_t q40_process_int(int level, struct pt_regs *regs);
40extern void q40_init_IRQ(void); 40extern void q40_init_IRQ(void);
41static void q40_get_model(char *model); 41static void q40_get_model(char *model);
42static int q40_get_hardware_list(char *buffer);
43extern void q40_sched_init(irq_handler_t handler); 42extern void q40_sched_init(irq_handler_t handler);
44 43
45static unsigned long q40_gettimeoffset(void); 44static unsigned long q40_gettimeoffset(void);
@@ -153,14 +152,6 @@ static void q40_get_model(char *model)
153 sprintf(model, "Q40"); 152 sprintf(model, "Q40");
154} 153}
155 154
156/* No hardware options on Q40? */
157
158static int q40_get_hardware_list(char *buffer)
159{
160 *buffer = '\0';
161 return 0;
162}
163
164static unsigned int serports[] = 155static unsigned int serports[] =
165{ 156{
166 0x3f8,0x2f8,0x3e8,0x2e8,0 157 0x3f8,0x2f8,0x3e8,0x2e8,0
@@ -191,7 +182,6 @@ void __init config_q40(void)
191 182
192 mach_reset = q40_reset; 183 mach_reset = q40_reset;
193 mach_get_model = q40_get_model; 184 mach_get_model = q40_get_model;
194 mach_get_hardware_list = q40_get_hardware_list;
195 185
196#if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE) 186#if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
197 mach_beep = q40_mksound; 187 mach_beep = q40_mksound;
diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c
index 732087d0735c..8dfaa201342e 100644
--- a/arch/m68k/sun3/config.c
+++ b/arch/m68k/sun3/config.c
@@ -11,6 +11,7 @@
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/seq_file.h>
14#include <linux/tty.h> 15#include <linux/tty.h>
15#include <linux/console.h> 16#include <linux/console.h>
16#include <linux/init.h> 17#include <linux/init.h>
@@ -46,16 +47,9 @@ extern volatile unsigned char* sun3_intreg;
46extern unsigned long availmem; 47extern unsigned long availmem;
47unsigned long num_pages; 48unsigned long num_pages;
48 49
49static int sun3_get_hardware_list(char *buffer) 50static void sun3_get_hardware_list(struct seq_file *m)
50{ 51{
51 52 seq_printf(m, "PROM Revision:\t%s\n", romvec->pv_monid);
52 int len = 0;
53
54 len += sprintf(buffer + len, "PROM Revision:\t%s\n",
55 romvec->pv_monid);
56
57 return len;
58
59} 53}
60 54
61void __init sun3_init(void) 55void __init sun3_init(void)
diff --git a/arch/m68k/sun3x/config.c b/arch/m68k/sun3x/config.c
index 987891783a47..2b1ca2db070f 100644
--- a/arch/m68k/sun3x/config.c
+++ b/arch/m68k/sun3x/config.c
@@ -8,6 +8,7 @@
8 8
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/seq_file.h>
11#include <linux/console.h> 12#include <linux/console.h>
12#include <linux/init.h> 13#include <linux/init.h>
13 14
@@ -31,16 +32,9 @@ void sun3_leds(unsigned int i)
31 32
32} 33}
33 34
34static int sun3x_get_hardware_list(char *buffer) 35static void sun3x_get_hardware_list(struct seq_file *m)
35{ 36{
36 37 seq_printf(m, "PROM Revision:\t%s\n", romvec->pv_monid);
37 int len = 0;
38
39 len += sprintf(buffer + len, "PROM Revision:\t%s\n",
40 romvec->pv_monid);
41
42 return len;
43
44} 38}
45 39
46/* 40/*
diff --git a/arch/mips/include/asm/txx9/tx4938.h b/arch/mips/include/asm/txx9/tx4938.h
index 989e7751135a..0b068154054c 100644
--- a/arch/mips/include/asm/txx9/tx4938.h
+++ b/arch/mips/include/asm/txx9/tx4938.h
@@ -292,4 +292,17 @@ void tx4938_setup_pcierr_irq(void);
292void tx4938_irq_init(void); 292void tx4938_irq_init(void);
293void tx4938_mtd_init(int ch); 293void tx4938_mtd_init(int ch);
294 294
295struct tx4938ide_platform_info {
296 /*
297 * I/O port shift, for platforms with ports that are
298 * constantly spaced and need larger than the 1-byte
299 * spacing used by ata_std_ports().
300 */
301 unsigned int ioport_shift;
302 unsigned int gbus_clock; /* 0 means no PIO mode tuning. */
303 unsigned int ebus_ch;
304};
305
306void tx4938_ata_init(unsigned int irq, unsigned int shift, int tune);
307
295#endif 308#endif
diff --git a/arch/mips/oprofile/common.c b/arch/mips/oprofile/common.c
index dd2fbd6645c1..3bf3354547f6 100644
--- a/arch/mips/oprofile/common.c
+++ b/arch/mips/oprofile/common.c
@@ -32,7 +32,7 @@ static int op_mips_setup(void)
32 return 0; 32 return 0;
33} 33}
34 34
35static int op_mips_create_files(struct super_block * sb, struct dentry * root) 35static int op_mips_create_files(struct super_block *sb, struct dentry *root)
36{ 36{
37 int i; 37 int i;
38 38
diff --git a/arch/mips/oprofile/op_impl.h b/arch/mips/oprofile/op_impl.h
index 2bfc17c30106..f04b54fb37d1 100644
--- a/arch/mips/oprofile/op_impl.h
+++ b/arch/mips/oprofile/op_impl.h
@@ -27,7 +27,7 @@ struct op_counter_config {
27/* Per-architecture configury and hooks. */ 27/* Per-architecture configury and hooks. */
28struct op_mips_model { 28struct op_mips_model {
29 void (*reg_setup) (struct op_counter_config *); 29 void (*reg_setup) (struct op_counter_config *);
30 void (*cpu_setup) (void * dummy); 30 void (*cpu_setup) (void *dummy);
31 int (*init)(void); 31 int (*init)(void);
32 void (*exit)(void); 32 void (*exit)(void);
33 void (*cpu_start)(void *args); 33 void (*cpu_start)(void *args);
diff --git a/arch/mips/oprofile/op_model_rm9000.c b/arch/mips/oprofile/op_model_rm9000.c
index a45d3202894f..3aa81384966d 100644
--- a/arch/mips/oprofile/op_model_rm9000.c
+++ b/arch/mips/oprofile/op_model_rm9000.c
@@ -80,7 +80,7 @@ static void rm9000_cpu_stop(void *args)
80 write_c0_perfcontrol(0); 80 write_c0_perfcontrol(0);
81} 81}
82 82
83static irqreturn_t rm9000_perfcount_handler(int irq, void * dev_id) 83static irqreturn_t rm9000_perfcount_handler(int irq, void *dev_id)
84{ 84{
85 unsigned int control = read_c0_perfcontrol(); 85 unsigned int control = read_c0_perfcontrol();
86 struct pt_regs *regs = get_irq_regs(); 86 struct pt_regs *regs = get_irq_regs();
diff --git a/arch/mips/txx9/generic/setup_tx4938.c b/arch/mips/txx9/generic/setup_tx4938.c
index af724e53ef91..25819ff1c350 100644
--- a/arch/mips/txx9/generic/setup_tx4938.c
+++ b/arch/mips/txx9/generic/setup_tx4938.c
@@ -16,6 +16,7 @@
16#include <linux/param.h> 16#include <linux/param.h>
17#include <linux/ptrace.h> 17#include <linux/ptrace.h>
18#include <linux/mtd/physmap.h> 18#include <linux/mtd/physmap.h>
19#include <linux/platform_device.h>
19#include <asm/reboot.h> 20#include <asm/reboot.h>
20#include <asm/traps.h> 21#include <asm/traps.h>
21#include <asm/txx9irq.h> 22#include <asm/txx9irq.h>
@@ -335,6 +336,52 @@ void __init tx4938_mtd_init(int ch)
335 txx9_physmap_flash_init(ch, start, size, &pdata); 336 txx9_physmap_flash_init(ch, start, size, &pdata);
336} 337}
337 338
339void __init tx4938_ata_init(unsigned int irq, unsigned int shift, int tune)
340{
341 struct platform_device *pdev;
342 struct resource res[] = {
343 {
344 /* .start and .end are filled in later */
345 .flags = IORESOURCE_MEM,
346 }, {
347 .start = irq,
348 .flags = IORESOURCE_IRQ,
349 },
350 };
351 struct tx4938ide_platform_info pdata = {
352 .ioport_shift = shift,
353 /*
354 * The IDE driver should not change bus timings if other ISA
355 * devices existed.
356 */
357 .gbus_clock = tune ? txx9_gbus_clock : 0,
358 };
359 u64 ebccr;
360 int i;
361
362 if ((__raw_readq(&tx4938_ccfgptr->pcfg) &
363 (TX4938_PCFG_ATA_SEL | TX4938_PCFG_NDF_SEL))
364 != TX4938_PCFG_ATA_SEL)
365 return;
366 for (i = 0; i < 8; i++) {
367 /* check EBCCRn.ISA, EBCCRn.BSZ, EBCCRn.ME */
368 ebccr = __raw_readq(&tx4938_ebuscptr->cr[i]);
369 if ((ebccr & 0x00f00008) == 0x00e00008)
370 break;
371 }
372 if (i == 8)
373 return;
374 pdata.ebus_ch = i;
375 res[0].start = ((ebccr >> 48) << 20) + 0x10000;
376 res[0].end = res[0].start + 0x20000 - 1;
377 pdev = platform_device_alloc("tx4938ide", -1);
378 if (!pdev ||
379 platform_device_add_resources(pdev, res, ARRAY_SIZE(res)) ||
380 platform_device_add_data(pdev, &pdata, sizeof(pdata)) ||
381 platform_device_add(pdev))
382 platform_device_put(pdev);
383}
384
338static void __init tx4938_stop_unused_modules(void) 385static void __init tx4938_stop_unused_modules(void)
339{ 386{
340 __u64 pcfg, rst = 0, ckd = 0; 387 __u64 pcfg, rst = 0, ckd = 0;
diff --git a/arch/mips/txx9/rbtx4938/setup.c b/arch/mips/txx9/rbtx4938/setup.c
index e077cc4d3a59..547ff2920bf0 100644
--- a/arch/mips/txx9/rbtx4938/setup.c
+++ b/arch/mips/txx9/rbtx4938/setup.c
@@ -352,6 +352,7 @@ static void __init rbtx4938_device_init(void)
352 rbtx4938_ne_init(); 352 rbtx4938_ne_init();
353 tx4938_wdt_init(); 353 tx4938_wdt_init();
354 rbtx4938_mtd_init(); 354 rbtx4938_mtd_init();
355 tx4938_ata_init(RBTX4938_IRQ_IOC_ATA, 0, 1);
355 txx9_iocled_init(RBTX4938_LED_ADDR - IO_BASE, -1, 8, 1, "green", NULL); 356 txx9_iocled_init(RBTX4938_LED_ADDR - IO_BASE, -1, 8, 1, "green", NULL);
356} 357}
357 358
diff --git a/arch/parisc/hpux/fs.c b/arch/parisc/hpux/fs.c
index 12c04c5e558b..bd9a4db3bd4c 100644
--- a/arch/parisc/hpux/fs.c
+++ b/arch/parisc/hpux/fs.c
@@ -127,9 +127,8 @@ int hpux_getdents(unsigned int fd, struct hpux_dirent __user *dirent, unsigned i
127 buf.error = 0; 127 buf.error = 0;
128 128
129 error = vfs_readdir(file, filldir, &buf); 129 error = vfs_readdir(file, filldir, &buf);
130 if (error < 0) 130 if (error >= 0)
131 goto out_putf; 131 error = buf.error;
132 error = buf.error;
133 lastdirent = buf.previous; 132 lastdirent = buf.previous;
134 if (lastdirent) { 133 if (lastdirent) {
135 if (put_user(file->f_pos, &lastdirent->d_off)) 134 if (put_user(file->f_pos, &lastdirent->d_off))
diff --git a/arch/parisc/oprofile/init.c b/arch/parisc/oprofile/init.c
index 113f5139f551..026cba2af07a 100644
--- a/arch/parisc/oprofile/init.c
+++ b/arch/parisc/oprofile/init.c
@@ -12,7 +12,7 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/oprofile.h> 13#include <linux/oprofile.h>
14 14
15int __init oprofile_arch_init(struct oprofile_operations * ops) 15int __init oprofile_arch_init(struct oprofile_operations *ops)
16{ 16{
17 return -ENODEV; 17 return -ENODEV;
18} 18}
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 9391199d9e77..5b1527883fcb 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -19,9 +19,6 @@ config WORD_SIZE
19 default 64 if PPC64 19 default 64 if PPC64
20 default 32 if !PPC64 20 default 32 if !PPC64
21 21
22config PPC_MERGE
23 def_bool y
24
25config ARCH_PHYS_ADDR_T_64BIT 22config ARCH_PHYS_ADDR_T_64BIT
26 def_bool PPC64 || PHYS_64BIT 23 def_bool PPC64 || PHYS_64BIT
27 24
@@ -326,13 +323,11 @@ config KEXEC
326 323
327config CRASH_DUMP 324config CRASH_DUMP
328 bool "Build a kdump crash kernel" 325 bool "Build a kdump crash kernel"
329 depends on PPC_MULTIPLATFORM && PPC64 326 depends on PPC_MULTIPLATFORM && PPC64 && RELOCATABLE
330 help 327 help
331 Build a kernel suitable for use as a kdump capture kernel. 328 Build a kernel suitable for use as a kdump capture kernel.
332 The kernel will be linked at a different address than normal, and 329 The same kernel binary can be used as production kernel and dump
333 so can only be used for Kdump. 330 capture kernel.
334
335 Don't change this unless you know what you are doing.
336 331
337config PHYP_DUMP 332config PHYP_DUMP
338 bool "Hypervisor-assisted dump (EXPERIMENTAL)" 333 bool "Hypervisor-assisted dump (EXPERIMENTAL)"
@@ -832,11 +827,9 @@ config PAGE_OFFSET
832 default "0xc000000000000000" 827 default "0xc000000000000000"
833config KERNEL_START 828config KERNEL_START
834 hex 829 hex
835 default "0xc000000002000000" if CRASH_DUMP
836 default "0xc000000000000000" 830 default "0xc000000000000000"
837config PHYSICAL_START 831config PHYSICAL_START
838 hex 832 hex
839 default "0x02000000" if CRASH_DUMP
840 default "0x00000000" 833 default "0x00000000"
841endif 834endif
842 835
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index aac1406ccba5..8fc6d72849ae 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -68,7 +68,8 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c
68 fixed-head.S ep88xc.c ep405.c cuboot-c2k.c \ 68 fixed-head.S ep88xc.c ep405.c cuboot-c2k.c \
69 cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ 69 cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \
70 cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ 70 cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \
71 virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c 71 virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \
72 cuboot-acadia.c
72src-boot := $(src-wlib) $(src-plat) empty.c 73src-boot := $(src-wlib) $(src-plat) empty.c
73 74
74src-boot := $(addprefix $(obj)/, $(src-boot)) 75src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -211,6 +212,7 @@ image-$(CONFIG_DEFAULT_UIMAGE) += uImage
211# Board ports in arch/powerpc/platform/40x/Kconfig 212# Board ports in arch/powerpc/platform/40x/Kconfig
212image-$(CONFIG_EP405) += dtbImage.ep405 213image-$(CONFIG_EP405) += dtbImage.ep405
213image-$(CONFIG_WALNUT) += treeImage.walnut 214image-$(CONFIG_WALNUT) += treeImage.walnut
215image-$(CONFIG_ACADIA) += cuImage.acadia
214 216
215# Board ports in arch/powerpc/platform/44x/Kconfig 217# Board ports in arch/powerpc/platform/44x/Kconfig
216image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony 218image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony
@@ -319,6 +321,9 @@ $(obj)/zImage.iseries: vmlinux
319$(obj)/uImage: vmlinux $(wrapperbits) 321$(obj)/uImage: vmlinux $(wrapperbits)
320 $(call if_changed,wrap,uboot) 322 $(call if_changed,wrap,uboot)
321 323
324$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
325 $(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
326
322$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) 327$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
323 $(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb) 328 $(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
324 329
diff --git a/arch/powerpc/boot/addnote.c b/arch/powerpc/boot/addnote.c
index dcc9ab2ca823..3091d1d21aef 100644
--- a/arch/powerpc/boot/addnote.c
+++ b/arch/powerpc/boot/addnote.c
@@ -11,7 +11,7 @@
11 * as published by the Free Software Foundation; either version 11 * as published by the Free Software Foundation; either version
12 * 2 of the License, or (at your option) any later version. 12 * 2 of the License, or (at your option) any later version.
13 * 13 *
14 * Usage: addnote zImage [note.elf] 14 * Usage: addnote [-r realbase] zImage [note.elf]
15 * 15 *
16 * If note.elf is supplied, it is the name of an ELF file that contains 16 * If note.elf is supplied, it is the name of an ELF file that contains
17 * an RPA note to use instead of the built-in one. Alternatively, the 17 * an RPA note to use instead of the built-in one. Alternatively, the
@@ -153,18 +153,31 @@ unsigned char *read_rpanote(const char *fname, int *nnp)
153int 153int
154main(int ac, char **av) 154main(int ac, char **av)
155{ 155{
156 int fd, n, i; 156 int fd, n, i, ai;
157 int ph, ps, np; 157 int ph, ps, np;
158 int nnote, nnote2, ns; 158 int nnote, nnote2, ns;
159 unsigned char *rpap; 159 unsigned char *rpap;
160 160 char *p, *endp;
161 if (ac != 2 && ac != 3) { 161
162 fprintf(stderr, "Usage: %s elf-file [rpanote.elf]\n", av[0]); 162 ai = 1;
163 if (ac >= ai + 2 && strcmp(av[ai], "-r") == 0) {
164 /* process -r realbase */
165 p = av[ai + 1];
166 descr[1] = strtol(p, &endp, 16);
167 if (endp == p || *endp != 0) {
168 fprintf(stderr, "Can't parse -r argument '%s' as hex\n",
169 p);
170 exit(1);
171 }
172 ai += 2;
173 }
174 if (ac != ai + 1 && ac != ai + 2) {
175 fprintf(stderr, "Usage: %s [-r realbase] elf-file [rpanote.elf]\n", av[0]);
163 exit(1); 176 exit(1);
164 } 177 }
165 fd = open(av[1], O_RDWR); 178 fd = open(av[ai], O_RDWR);
166 if (fd < 0) { 179 if (fd < 0) {
167 perror(av[1]); 180 perror(av[ai]);
168 exit(1); 181 exit(1);
169 } 182 }
170 183
@@ -184,12 +197,12 @@ main(int ac, char **av)
184 if (buf[E_IDENT+EI_CLASS] != ELFCLASS32 197 if (buf[E_IDENT+EI_CLASS] != ELFCLASS32
185 || buf[E_IDENT+EI_DATA] != ELFDATA2MSB) { 198 || buf[E_IDENT+EI_DATA] != ELFDATA2MSB) {
186 fprintf(stderr, "%s is not a big-endian 32-bit ELF image\n", 199 fprintf(stderr, "%s is not a big-endian 32-bit ELF image\n",
187 av[1]); 200 av[ai]);
188 exit(1); 201 exit(1);
189 } 202 }
190 203
191 if (ac == 3) 204 if (ac == ai + 2)
192 rpap = read_rpanote(av[2], &nnote2); 205 rpap = read_rpanote(av[ai + 1], &nnote2);
193 206
194 ph = GET_32BE(buf, E_PHOFF); 207 ph = GET_32BE(buf, E_PHOFF);
195 ps = GET_16BE(buf, E_PHENTSIZE); 208 ps = GET_16BE(buf, E_PHENTSIZE);
@@ -202,7 +215,7 @@ main(int ac, char **av)
202 for (i = 0; i < np; ++i) { 215 for (i = 0; i < np; ++i) {
203 if (GET_32BE(buf, ph + PH_TYPE) == PT_NOTE) { 216 if (GET_32BE(buf, ph + PH_TYPE) == PT_NOTE) {
204 fprintf(stderr, "%s already has a note entry\n", 217 fprintf(stderr, "%s already has a note entry\n",
205 av[1]); 218 av[ai]);
206 exit(0); 219 exit(0);
207 } 220 }
208 ph += ps; 221 ph += ps;
@@ -260,18 +273,18 @@ main(int ac, char **av)
260 exit(1); 273 exit(1);
261 } 274 }
262 if (i < n) { 275 if (i < n) {
263 fprintf(stderr, "%s: write truncated\n", av[1]); 276 fprintf(stderr, "%s: write truncated\n", av[ai]);
264 exit(1); 277 exit(1);
265 } 278 }
266 279
267 exit(0); 280 exit(0);
268 281
269 notelf: 282 notelf:
270 fprintf(stderr, "%s does not appear to be an ELF file\n", av[1]); 283 fprintf(stderr, "%s does not appear to be an ELF file\n", av[ai]);
271 exit(1); 284 exit(1);
272 285
273 nospace: 286 nospace:
274 fprintf(stderr, "sorry, I can't find space in %s to put the note\n", 287 fprintf(stderr, "sorry, I can't find space in %s to put the note\n",
275 av[1]); 288 av[ai]);
276 exit(1); 289 exit(1);
277} 290}
diff --git a/arch/powerpc/boot/cuboot-52xx.c b/arch/powerpc/boot/cuboot-52xx.c
index a8611546a656..4c42ec8687be 100644
--- a/arch/powerpc/boot/cuboot-52xx.c
+++ b/arch/powerpc/boot/cuboot-52xx.c
@@ -37,6 +37,10 @@ static void platform_fixups(void)
37 * this can do a simple path lookup. 37 * this can do a simple path lookup.
38 */ 38 */
39 soc = find_node_by_devtype(NULL, "soc"); 39 soc = find_node_by_devtype(NULL, "soc");
40 if (!soc)
41 soc = find_node_by_compatible(NULL, "fsl,mpc5200-immr");
42 if (!soc)
43 soc = find_node_by_compatible(NULL, "fsl,mpc5200b-immr");
40 if (soc) { 44 if (soc) {
41 setprop(soc, "bus-frequency", &bd.bi_ipbfreq, 45 setprop(soc, "bus-frequency", &bd.bi_ipbfreq,
42 sizeof(bd.bi_ipbfreq)); 46 sizeof(bd.bi_ipbfreq));
diff --git a/arch/powerpc/boot/cuboot-acadia.c b/arch/powerpc/boot/cuboot-acadia.c
new file mode 100644
index 000000000000..0634aba6348a
--- /dev/null
+++ b/arch/powerpc/boot/cuboot-acadia.c
@@ -0,0 +1,174 @@
1/*
2 * Old U-boot compatibility for Acadia
3 *
4 * Author: Josh Boyer <jwboyer@linux.vnet.ibm.com>
5 *
6 * Copyright 2008 IBM Corporation
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License version 2 as published
10 * by the Free Software Foundation.
11 */
12
13#include "ops.h"
14#include "io.h"
15#include "dcr.h"
16#include "stdio.h"
17#include "4xx.h"
18#include "44x.h"
19#include "cuboot.h"
20
21#define TARGET_4xx
22#include "ppcboot.h"
23
24static bd_t bd;
25
26#define CPR_PERD0_SPIDV_MASK 0x000F0000 /* SPI Clock Divider */
27
28#define PLLC_SRC_MASK 0x20000000 /* PLL feedback source */
29
30#define PLLD_FBDV_MASK 0x1F000000 /* PLL feedback divider value */
31#define PLLD_FWDVA_MASK 0x000F0000 /* PLL forward divider A value */
32#define PLLD_FWDVB_MASK 0x00000700 /* PLL forward divider B value */
33
34#define PRIMAD_CPUDV_MASK 0x0F000000 /* CPU Clock Divisor Mask */
35#define PRIMAD_PLBDV_MASK 0x000F0000 /* PLB Clock Divisor Mask */
36#define PRIMAD_OPBDV_MASK 0x00000F00 /* OPB Clock Divisor Mask */
37#define PRIMAD_EBCDV_MASK 0x0000000F /* EBC Clock Divisor Mask */
38
39#define PERD0_PWMDV_MASK 0xFF000000 /* PWM Divider Mask */
40#define PERD0_SPIDV_MASK 0x000F0000 /* SPI Divider Mask */
41#define PERD0_U0DV_MASK 0x0000FF00 /* UART 0 Divider Mask */
42#define PERD0_U1DV_MASK 0x000000FF /* UART 1 Divider Mask */
43
44static void get_clocks(void)
45{
46 unsigned long sysclk, cpr_plld, cpr_pllc, cpr_primad, plloutb, i;
47 unsigned long pllFwdDiv, pllFwdDivB, pllFbkDiv, pllPlbDiv, pllExtBusDiv;
48 unsigned long pllOpbDiv, freqEBC, freqUART, freqOPB;
49 unsigned long div; /* total divisor udiv * bdiv */
50 unsigned long umin; /* minimum udiv */
51 unsigned short diff; /* smallest diff */
52 unsigned long udiv; /* best udiv */
53 unsigned short idiff; /* current diff */
54 unsigned short ibdiv; /* current bdiv */
55 unsigned long est; /* current estimate */
56 unsigned long baud;
57 void *np;
58
59 /* read the sysclk value from the CPLD */
60 sysclk = (in_8((unsigned char *)0x80000000) == 0xc) ? 66666666 : 33333000;
61
62 /*
63 * Read PLL Mode registers
64 */
65 cpr_plld = CPR0_READ(DCRN_CPR0_PLLD);
66 cpr_pllc = CPR0_READ(DCRN_CPR0_PLLC);
67
68 /*
69 * Determine forward divider A
70 */
71 pllFwdDiv = ((cpr_plld & PLLD_FWDVA_MASK) >> 16);
72
73 /*
74 * Determine forward divider B
75 */
76 pllFwdDivB = ((cpr_plld & PLLD_FWDVB_MASK) >> 8);
77 if (pllFwdDivB == 0)
78 pllFwdDivB = 8;
79
80 /*
81 * Determine FBK_DIV.
82 */
83 pllFbkDiv = ((cpr_plld & PLLD_FBDV_MASK) >> 24);
84 if (pllFbkDiv == 0)
85 pllFbkDiv = 256;
86
87 /*
88 * Read CPR_PRIMAD register
89 */
90 cpr_primad = CPR0_READ(DCRN_CPR0_PRIMAD);
91
92 /*
93 * Determine PLB_DIV.
94 */
95 pllPlbDiv = ((cpr_primad & PRIMAD_PLBDV_MASK) >> 16);
96 if (pllPlbDiv == 0)
97 pllPlbDiv = 16;
98
99 /*
100 * Determine EXTBUS_DIV.
101 */
102 pllExtBusDiv = (cpr_primad & PRIMAD_EBCDV_MASK);
103 if (pllExtBusDiv == 0)
104 pllExtBusDiv = 16;
105
106 /*
107 * Determine OPB_DIV.
108 */
109 pllOpbDiv = ((cpr_primad & PRIMAD_OPBDV_MASK) >> 8);
110 if (pllOpbDiv == 0)
111 pllOpbDiv = 16;
112
113 /* There is a bug in U-Boot that prevents us from using
114 * bd.bi_opbfreq because U-Boot doesn't populate it for
115 * 405EZ. We get to calculate it, yay!
116 */
117 freqOPB = (sysclk *pllFbkDiv) /pllOpbDiv;
118
119 freqEBC = (sysclk * pllFbkDiv) / pllExtBusDiv;
120
121 plloutb = ((sysclk * ((cpr_pllc & PLLC_SRC_MASK) ?
122 pllFwdDivB : pllFwdDiv) *
123 pllFbkDiv) / pllFwdDivB);
124
125 np = find_node_by_alias("serial0");
126 if (getprop(np, "current-speed", &baud, sizeof(baud)) != sizeof(baud))
127 fatal("no current-speed property\n\r");
128
129 udiv = 256; /* Assume lowest possible serial clk */
130 div = plloutb / (16 * baud); /* total divisor */
131 umin = (plloutb / freqOPB) << 1; /* 2 x OPB divisor */
132 diff = 256; /* highest possible */
133
134 /* i is the test udiv value -- start with the largest
135 * possible (256) to minimize serial clock and constrain
136 * search to umin.
137 */
138 for (i = 256; i > umin; i--) {
139 ibdiv = div / i;
140 est = i * ibdiv;
141 idiff = (est > div) ? (est-div) : (div-est);
142 if (idiff == 0) {
143 udiv = i;
144 break; /* can't do better */
145 } else if (idiff < diff) {
146 udiv = i; /* best so far */
147 diff = idiff; /* update lowest diff*/
148 }
149 }
150 freqUART = plloutb / udiv;
151
152 dt_fixup_cpu_clocks(bd.bi_procfreq, bd.bi_intfreq, bd.bi_plb_busfreq);
153 dt_fixup_clock("/plb/ebc", freqEBC);
154 dt_fixup_clock("/plb/opb", freqOPB);
155 dt_fixup_clock("/plb/opb/serial@ef600300", freqUART);
156 dt_fixup_clock("/plb/opb/serial@ef600400", freqUART);
157}
158
159static void acadia_fixups(void)
160{
161 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
162 get_clocks();
163 dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr);
164}
165
166void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
167 unsigned long r6, unsigned long r7)
168{
169 CUBOOT_INIT();
170 platform_ops.fixups = acadia_fixups;
171 platform_ops.exit = ibm40x_dbcr_reset;
172 fdt_init(_dtb_start);
173 serial_console_init();
174}
diff --git a/arch/powerpc/boot/dts/acadia.dts b/arch/powerpc/boot/dts/acadia.dts
new file mode 100644
index 000000000000..57291f61ffe7
--- /dev/null
+++ b/arch/powerpc/boot/dts/acadia.dts
@@ -0,0 +1,224 @@
1/*
2 * Device Tree Source for AMCC Acadia (405EZ)
3 *
4 * Copyright IBM Corp. 2008
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11/dts-v1/;
12
13/ {
14 #address-cells = <1>;
15 #size-cells = <1>;
16 model = "amcc,acadia";
17 compatible = "amcc,acadia";
18 dcr-parent = <&{/cpus/cpu@0}>;
19
20 aliases {
21 ethernet0 = &EMAC0;
22 serial0 = &UART0;
23 serial1 = &UART1;
24 };
25
26 cpus {
27 #address-cells = <1>;
28 #size-cells = <0>;
29
30 cpu@0 {
31 device_type = "cpu";
32 model = "PowerPC,405EZ";
33 reg = <0x0>;
34 clock-frequency = <0>; /* Filled in by wrapper */
35 timebase-frequency = <0>; /* Filled in by wrapper */
36 i-cache-line-size = <32>;
37 d-cache-line-size = <32>;
38 i-cache-size = <16384>;
39 d-cache-size = <16384>;
40 dcr-controller;
41 dcr-access-method = "native";
42 };
43 };
44
45 memory {
46 device_type = "memory";
47 reg = <0x0 0x0>; /* Filled in by wrapper */
48 };
49
50 UIC0: interrupt-controller {
51 compatible = "ibm,uic-405ez", "ibm,uic";
52 interrupt-controller;
53 dcr-reg = <0x0c0 0x009>;
54 cell-index = <0>;
55 #address-cells = <0>;
56 #size-cells = <0>;
57 #interrupt-cells = <2>;
58 };
59
60 plb {
61 compatible = "ibm,plb-405ez", "ibm,plb3";
62 #address-cells = <1>;
63 #size-cells = <1>;
64 ranges;
65 clock-frequency = <0>; /* Filled in by wrapper */
66
67 MAL0: mcmal {
68 compatible = "ibm,mcmal-405ez", "ibm,mcmal";
69 dcr-reg = <0x380 0x62>;
70 num-tx-chans = <1>;
71 num-rx-chans = <1>;
72 interrupt-parent = <&UIC0>;
73 /* 405EZ has only 3 interrupts to the UIC, as
74 * SERR, TXDE, and RXDE are or'd together into
75 * one UIC bit
76 */
77 interrupts = <
78 0x13 0x4 /* TXEOB */
79 0x15 0x4 /* RXEOB */
80 0x12 0x4 /* SERR, TXDE, RXDE */>;
81 };
82
83 POB0: opb {
84 compatible = "ibm,opb-405ez", "ibm,opb";
85 #address-cells = <1>;
86 #size-cells = <1>;
87 ranges;
88 dcr-reg = <0x0a 0x05>;
89 clock-frequency = <0>; /* Filled in by wrapper */
90
91 UART0: serial@ef600300 {
92 device_type = "serial";
93 compatible = "ns16550";
94 reg = <0xef600300 0x8>;
95 virtual-reg = <0xef600300>;
96 clock-frequency = <0>; /* Filled in by wrapper */
97 current-speed = <115200>;
98 interrupt-parent = <&UIC0>;
99 interrupts = <0x5 0x4>;
100 };
101
102 UART1: serial@ef600400 {
103 device_type = "serial";
104 compatible = "ns16550";
105 reg = <0xef600400 0x8>;
106 clock-frequency = <0>; /* Filled in by wrapper */
107 current-speed = <115200>;
108 interrupt-parent = <&UIC0>;
109 interrupts = <0x6 0x4>;
110 };
111
112 IIC: i2c@ef600500 {
113 compatible = "ibm,iic-405ez", "ibm,iic";
114 reg = <0xef600500 0x11>;
115 interrupt-parent = <&UIC0>;
116 interrupts = <0xa 0x4>;
117 };
118
119 GPIO0: gpio@ef600700 {
120 compatible = "ibm,gpio-405ez";
121 reg = <0xef600700 0x20>;
122 };
123
124 GPIO1: gpio@ef600800 {
125 compatible = "ibm,gpio-405ez";
126 reg = <0xef600800 0x20>;
127 };
128
129 EMAC0: ethernet@ef600900 {
130 device_type = "network";
131 compatible = "ibm,emac-405ez", "ibm,emac";
132 interrupt-parent = <&UIC0>;
133 interrupts = <
134 0x10 0x4 /* Ethernet */
135 0x11 0x4 /* Ethernet Wake up */>;
136 local-mac-address = [000000000000]; /* Filled in by wrapper */
137 reg = <0xef600900 0x70>;
138 mal-device = <&MAL0>;
139 mal-tx-channel = <0>;
140 mal-rx-channel = <0>;
141 cell-index = <0>;
142 max-frame-size = <1500>;
143 rx-fifo-size = <4096>;
144 tx-fifo-size = <2048>;
145 phy-mode = "mii";
146 phy-map = <0x0>;
147 };
148
149 CAN0: can@ef601000 {
150 compatible = "amcc,can-405ez";
151 reg = <0xef601000 0x620>;
152 interrupt-parent = <&UIC0>;
153 interrupts = <0x7 0x4>;
154 };
155
156 CAN1: can@ef601800 {
157 compatible = "amcc,can-405ez";
158 reg = <0xef601800 0x620>;
159 interrupt-parent = <&UIC0>;
160 interrupts = <0x8 0x4>;
161 };
162
163 cameleon@ef602000 {
164 compatible = "amcc,cameleon-405ez";
165 reg = <0xef602000 0x800>;
166 interrupt-parent = <&UIC0>;
167 interrupts = <0xb 0x4 0xc 0x4>;
168 };
169
170 ieee1588@ef602800 {
171 compatible = "amcc,ieee1588-405ez";
172 reg = <0xef602800 0x60>;
173 interrupt-parent = <&UIC0>;
174 interrupts = <0x4 0x4>;
175 /* This thing is a bit weird. It has it's own UIC
176 * that it uses to generate snapshot triggers. We
177 * don't really support this device yet, and it needs
178 * work to figure this out.
179 */
180 dcr-reg = <0xe0 0x9>;
181 };
182
183 usb@ef603000 {
184 compatible = "ohci-be";
185 reg = <0xef603000 0x80>;
186 interrupts-parent = <&UIC0>;
187 interrupts = <0xd 0x4 0xe 0x4>;
188 };
189
190 dac@ef603300 {
191 compatible = "amcc,dac-405ez";
192 reg = <0xef603300 0x40>;
193 interrupt-parent = <&UIC0>;
194 interrupts = <0x18 0x4>;
195 };
196
197 adc@ef603400 {
198 compatible = "amcc,adc-405ez";
199 reg = <0xef603400 0x40>;
200 interrupt-parent = <&UIC0>;
201 interrupts = <0x17 0x4>;
202 };
203
204 spi@ef603500 {
205 compatible = "amcc,spi-405ez";
206 reg = <0xef603500 0x100>;
207 interrupt-parent = <&UIC0>;
208 interrupts = <0x9 0x4>;
209 };
210 };
211
212 EBC0: ebc {
213 compatible = "ibm,ebc-405ez", "ibm,ebc";
214 dcr-reg = <0x12 0x2>;
215 #address-cells = <2>;
216 #size-cells = <1>;
217 clock-frequency = <0>; /* Filled in by wrapper */
218 };
219 };
220
221 chosen {
222 linux,stdout-path = "/plb/opb/serial@ef600300";
223 };
224};
diff --git a/arch/powerpc/boot/dts/hcu4.dts b/arch/powerpc/boot/dts/hcu4.dts
new file mode 100644
index 000000000000..7988598da4c9
--- /dev/null
+++ b/arch/powerpc/boot/dts/hcu4.dts
@@ -0,0 +1,168 @@
1/*
2* Device Tree Source for Netstal Maschinen HCU4
3* based on the IBM Walnut
4*
5* Copyright 2008
6* Niklaus Giger <niklaus.giger@member.fsf.org>
7*
8* Copyright 2007 IBM Corp.
9* Josh Boyer <jwboyer@linux.vnet.ibm.com>
10*
11* This file is licensed under the terms of the GNU General Public
12* License version 2. This program is licensed "as is" without
13* any warranty of any kind, whether express or implied.
14*/
15
16/dts-v1/;
17
18/ {
19 #address-cells = <0x1>;
20 #size-cells = <0x1>;
21 model = "netstal,hcu4";
22 compatible = "netstal,hcu4";
23 dcr-parent = <0x1>;
24
25 aliases {
26 ethernet0 = "/plb/opb/ethernet@ef600800";
27 serial0 = "/plb/opb/serial@ef600300";
28 };
29
30 cpus {
31 #address-cells = <0x1>;
32 #size-cells = <0x0>;
33
34 cpu@0 {
35 device_type = "cpu";
36 model = "PowerPC,405GPr";
37 reg = <0x0>;
38 clock-frequency = <0>; /* Filled in by U-Boot */
39 timebase-frequency = <0x0>; /* Filled in by U-Boot */
40 i-cache-line-size = <0x20>;
41 d-cache-line-size = <0x20>;
42 i-cache-size = <0x4000>;
43 d-cache-size = <0x4000>;
44 dcr-controller;
45 dcr-access-method = "native";
46 linux,phandle = <0x1>;
47 };
48 };
49
50 memory {
51 device_type = "memory";
52 reg = <0x0 0x0>; /* Filled in by U-Boot */
53 };
54
55 UIC0: interrupt-controller {
56 compatible = "ibm,uic";
57 interrupt-controller;
58 cell-index = <0x0>;
59 dcr-reg = <0xc0 0x9>;
60 #address-cells = <0x0>;
61 #size-cells = <0x0>;
62 #interrupt-cells = <0x2>;
63 linux,phandle = <0x2>;
64 };
65
66 plb {
67 compatible = "ibm,plb3";
68 #address-cells = <0x1>;
69 #size-cells = <0x1>;
70 ranges;
71 clock-frequency = <0x0>; /* Filled in by U-Boot */
72
73 SDRAM0: memory-controller {
74 compatible = "ibm,sdram-405gp";
75 dcr-reg = <0x10 0x2>;
76 };
77
78 MAL: mcmal {
79 compatible = "ibm,mcmal-405gp", "ibm,mcmal";
80 dcr-reg = <0x180 0x62>;
81 num-tx-chans = <0x1>;
82 num-rx-chans = <0x1>;
83 interrupt-parent = <0x2>;
84 interrupts = <0xb 0x4 0xc 0x4 0xa 0x4 0xd 0x4 0xe 0x4>;
85 linux,phandle = <0x3>;
86 };
87
88 POB0: opb {
89 compatible = "ibm,opb-405gp", "ibm,opb";
90 #address-cells = <0x1>;
91 #size-cells = <0x1>;
92 ranges = <0xef600000 0xef600000 0xa00000>;
93 dcr-reg = <0xa0 0x5>;
94 clock-frequency = <0x0>; /* Filled in by U-Boot */
95
96 UART0: serial@ef600300 {
97 device_type = "serial";
98 compatible = "ns16550";
99 reg = <0xef600300 0x8>;
100 virtual-reg = <0xef600300>;
101 clock-frequency = <0x0>;/* Filled in by U-Boot */
102 current-speed = <0>; /* Filled in by U-Boot */
103 interrupt-parent = <0x2>;
104 interrupts = <0x0 0x4>;
105 };
106
107 IIC: i2c@ef600500 {
108 compatible = "ibm,iic-405gp", "ibm,iic";
109 reg = <0xef600500 0x11>;
110 interrupt-parent = <0x2>;
111 interrupts = <0x2 0x4>;
112 };
113
114 GPIO: gpio@ef600700 {
115 compatible = "ibm,gpio-405gp";
116 reg = <0xef600700 0x20>;
117 };
118
119 EMAC: ethernet@ef600800 {
120 device_type = "network";
121 compatible = "ibm,emac-405gp", "ibm,emac";
122 interrupt-parent = <0x2>;
123 interrupts = <0xf 0x4 0x9 0x4>;
124 local-mac-address = [00 00 00 00 00 00];
125 reg = <0xef600800 0x70>;
126 mal-device = <0x3>;
127 mal-tx-channel = <0x0>;
128 mal-rx-channel = <0x0>;
129 cell-index = <0x0>;
130 max-frame-size = <0x5dc>;
131 rx-fifo-size = <0x1000>;
132 tx-fifo-size = <0x800>;
133 phy-mode = "rmii";
134 phy-map = <0x1>;
135 };
136 };
137
138 EBC0: ebc {
139 compatible = "ibm,ebc-405gp", "ibm,ebc";
140 dcr-reg = <0x12 0x2>;
141 #address-cells = <0x2>;
142 #size-cells = <0x1>;
143 clock-frequency = <0x0>; /* Filled in by U-Boot */
144
145 sram@0,0 {
146 reg = <0x0 0x0 0x80000>;
147 };
148
149 flash@0,80000 {
150 compatible = "jedec-flash";
151 bank-width = <0x1>;
152 reg = <0x0 0x80000 0x80000>;
153 #address-cells = <0x1>;
154 #size-cells = <0x1>;
155
156 partition@0 {
157 label = "OpenBIOS";
158 reg = <0x0 0x80000>;
159 read-only;
160 };
161 };
162 };
163 };
164
165 chosen {
166 linux,stdout-path = "/plb/opb/serial@ef600300";
167 };
168};
diff --git a/arch/powerpc/boot/dts/mpc8315erdb.dts b/arch/powerpc/boot/dts/mpc8315erdb.dts
index 7449e54c1a90..6b850670de1d 100644
--- a/arch/powerpc/boot/dts/mpc8315erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8315erdb.dts
@@ -121,6 +121,14 @@
121 compatible = "dallas,ds1339"; 121 compatible = "dallas,ds1339";
122 reg = <0x68>; 122 reg = <0x68>;
123 }; 123 };
124
125 mcu_pio: mcu@a {
126 #gpio-cells = <2>;
127 compatible = "fsl,mc9s08qg8-mpc8315erdb",
128 "fsl,mcu-mpc8349emitx";
129 reg = <0x0a>;
130 gpio-controller;
131 };
124 }; 132 };
125 133
126 spi@7000 { 134 spi@7000 {
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts
index e4cc1768f241..57c595bf1071 100644
--- a/arch/powerpc/boot/dts/mpc832x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc832x_mds.dts
@@ -60,7 +60,7 @@
60 }; 60 };
61 61
62 bcsr@f8000000 { 62 bcsr@f8000000 {
63 device_type = "board-control"; 63 compatible = "fsl,mpc8323mds-bcsr";
64 reg = <0xf8000000 0x8000>; 64 reg = <0xf8000000 0x8000>;
65 }; 65 };
66 66
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
index 5cedf373a1d8..2c9d54a35bc3 100644
--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -83,6 +83,14 @@
83 interrupts = <15 0x8>; 83 interrupts = <15 0x8>;
84 interrupt-parent = <&ipic>; 84 interrupt-parent = <&ipic>;
85 dfsrr; 85 dfsrr;
86
87 rtc@68 {
88 device_type = "rtc";
89 compatible = "dallas,ds1339";
90 reg = <0x68>;
91 interrupts = <18 0x8>;
92 interrupt-parent = <&ipic>;
93 };
86 }; 94 };
87 95
88 spi@7000 { 96 spi@7000 {
@@ -131,6 +139,14 @@
131 interrupt-parent = <&ipic>; 139 interrupt-parent = <&ipic>;
132 interrupts = <71 8>; 140 interrupts = <71 8>;
133 }; 141 };
142
143 mcu_pio: mcu@a {
144 #gpio-cells = <2>;
145 compatible = "fsl,mc9s08qg8-mpc8349emitx",
146 "fsl,mcu-mpc8349emitx";
147 reg = <0x0a>;
148 gpio-controller;
149 };
134 }; 150 };
135 151
136 usb@22000 { 152 usb@22000 {
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
index 81ae1d3e9440..fa40647ee62e 100644
--- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
@@ -81,6 +81,14 @@
81 interrupts = <15 0x8>; 81 interrupts = <15 0x8>;
82 interrupt-parent = <&ipic>; 82 interrupt-parent = <&ipic>;
83 dfsrr; 83 dfsrr;
84
85 rtc@68 {
86 device_type = "rtc";
87 compatible = "dallas,ds1339";
88 reg = <0x68>;
89 interrupts = <18 0x8>;
90 interrupt-parent = <&ipic>;
91 };
84 }; 92 };
85 93
86 spi@7000 { 94 spi@7000 {
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
index 04bfde3ea605..c986c541e9bb 100644
--- a/arch/powerpc/boot/dts/mpc834x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
@@ -49,7 +49,7 @@
49 }; 49 };
50 50
51 bcsr@e2400000 { 51 bcsr@e2400000 {
52 device_type = "board-control"; 52 compatible = "fsl,mpc8349mds-bcsr";
53 reg = <0xe2400000 0x8000>; 53 reg = <0xe2400000 0x8000>;
54 }; 54 };
55 55
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
index 66a12d2631fb..14534d04e4db 100644
--- a/arch/powerpc/boot/dts/mpc836x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
@@ -69,7 +69,7 @@
69 }; 69 };
70 70
71 bcsr@1,0 { 71 bcsr@1,0 {
72 device_type = "board-control"; 72 compatible = "fsl,mpc8360mds-bcsr";
73 reg = <1 0 0x8000>; 73 reg = <1 0 0x8000>;
74 }; 74 };
75 }; 75 };
diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts
index 53191ba67aaa..435ef3dd022d 100644
--- a/arch/powerpc/boot/dts/mpc8377_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts
@@ -121,6 +121,14 @@
121 compatible = "dallas,ds1339"; 121 compatible = "dallas,ds1339";
122 reg = <0x68>; 122 reg = <0x68>;
123 }; 123 };
124
125 mcu_pio: mcu@a {
126 #gpio-cells = <2>;
127 compatible = "fsl,mc9s08qg8-mpc8377erdb",
128 "fsl,mcu-mpc8349emitx";
129 reg = <0x0a>;
130 gpio-controller;
131 };
124 }; 132 };
125 133
126 i2c@3100 { 134 i2c@3100 {
diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts
index 4a09153d160c..b11e68f56a06 100644
--- a/arch/powerpc/boot/dts/mpc8378_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts
@@ -121,6 +121,14 @@
121 compatible = "dallas,ds1339"; 121 compatible = "dallas,ds1339";
122 reg = <0x68>; 122 reg = <0x68>;
123 }; 123 };
124
125 mcu_pio: mcu@a {
126 #gpio-cells = <2>;
127 compatible = "fsl,mc9s08qg8-mpc8378erdb",
128 "fsl,mcu-mpc8349emitx";
129 reg = <0x0a>;
130 gpio-controller;
131 };
124 }; 132 };
125 133
126 i2c@3100 { 134 i2c@3100 {
diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts
index bbd884ac9dc0..337af6ea26d3 100644
--- a/arch/powerpc/boot/dts/mpc8379_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts
@@ -121,6 +121,14 @@
121 compatible = "dallas,ds1339"; 121 compatible = "dallas,ds1339";
122 reg = <0x68>; 122 reg = <0x68>;
123 }; 123 };
124
125 mcu_pio: mcu@a {
126 #gpio-cells = <2>;
127 compatible = "fsl,mc9s08qg8-mpc8379erdb",
128 "fsl,mcu-mpc8349emitx";
129 reg = <0x0a>;
130 gpio-controller;
131 };
124 }; 132 };
125 133
126 i2c@3100 { 134 i2c@3100 {
diff --git a/arch/powerpc/boot/dts/mpc8536ds.dts b/arch/powerpc/boot/dts/mpc8536ds.dts
index 93fdd99901b6..35db1e5440c7 100644
--- a/arch/powerpc/boot/dts/mpc8536ds.dts
+++ b/arch/powerpc/boot/dts/mpc8536ds.dts
@@ -109,7 +109,7 @@
109 reg = <0x0 0x80>; 109 reg = <0x0 0x80>;
110 cell-index = <0>; 110 cell-index = <0>;
111 interrupt-parent = <&mpic>; 111 interrupt-parent = <&mpic>;
112 interrupts = <14 0x2>; 112 interrupts = <20 2>;
113 }; 113 };
114 dma-channel@80 { 114 dma-channel@80 {
115 compatible = "fsl,mpc8536-dma-channel", 115 compatible = "fsl,mpc8536-dma-channel",
@@ -117,7 +117,7 @@
117 reg = <0x80 0x80>; 117 reg = <0x80 0x80>;
118 cell-index = <1>; 118 cell-index = <1>;
119 interrupt-parent = <&mpic>; 119 interrupt-parent = <&mpic>;
120 interrupts = <15 0x2>; 120 interrupts = <21 2>;
121 }; 121 };
122 dma-channel@100 { 122 dma-channel@100 {
123 compatible = "fsl,mpc8536-dma-channel", 123 compatible = "fsl,mpc8536-dma-channel",
@@ -125,7 +125,7 @@
125 reg = <0x100 0x80>; 125 reg = <0x100 0x80>;
126 cell-index = <2>; 126 cell-index = <2>;
127 interrupt-parent = <&mpic>; 127 interrupt-parent = <&mpic>;
128 interrupts = <16 0x2>; 128 interrupts = <22 2>;
129 }; 129 };
130 dma-channel@180 { 130 dma-channel@180 {
131 compatible = "fsl,mpc8536-dma-channel", 131 compatible = "fsl,mpc8536-dma-channel",
@@ -133,7 +133,7 @@
133 reg = <0x180 0x80>; 133 reg = <0x180 0x80>;
134 cell-index = <3>; 134 cell-index = <3>;
135 interrupt-parent = <&mpic>; 135 interrupt-parent = <&mpic>;
136 interrupts = <17 0x2>; 136 interrupts = <23 2>;
137 }; 137 };
138 }; 138 };
139 139
@@ -180,7 +180,7 @@
180 enet0: ethernet@24000 { 180 enet0: ethernet@24000 {
181 cell-index = <0>; 181 cell-index = <0>;
182 device_type = "network"; 182 device_type = "network";
183 model = "TSEC"; 183 model = "eTSEC";
184 compatible = "gianfar"; 184 compatible = "gianfar";
185 reg = <0x24000 0x1000>; 185 reg = <0x24000 0x1000>;
186 local-mac-address = [ 00 00 00 00 00 00 ]; 186 local-mac-address = [ 00 00 00 00 00 00 ];
@@ -193,7 +193,7 @@
193 enet1: ethernet@26000 { 193 enet1: ethernet@26000 {
194 cell-index = <1>; 194 cell-index = <1>;
195 device_type = "network"; 195 device_type = "network";
196 model = "TSEC"; 196 model = "eTSEC";
197 compatible = "gianfar"; 197 compatible = "gianfar";
198 reg = <0x26000 0x1000>; 198 reg = <0x26000 0x1000>;
199 local-mac-address = [ 00 00 00 00 00 00 ]; 199 local-mac-address = [ 00 00 00 00 00 00 ];
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts
index a15f10343f53..c80158f7741d 100644
--- a/arch/powerpc/boot/dts/mpc8568mds.dts
+++ b/arch/powerpc/boot/dts/mpc8568mds.dts
@@ -52,7 +52,7 @@
52 }; 52 };
53 53
54 bcsr@f8000000 { 54 bcsr@f8000000 {
55 device_type = "board-control"; 55 compatible = "fsl,mpc8568mds-bcsr";
56 reg = <0xf8000000 0x8000>; 56 reg = <0xf8000000 0x8000>;
57 }; 57 };
58 58
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts
index e124dd18fb5a..cadd4652a695 100644
--- a/arch/powerpc/boot/dts/mpc8572ds.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds.dts
@@ -13,8 +13,8 @@
13/ { 13/ {
14 model = "fsl,MPC8572DS"; 14 model = "fsl,MPC8572DS";
15 compatible = "fsl,MPC8572DS"; 15 compatible = "fsl,MPC8572DS";
16 #address-cells = <1>; 16 #address-cells = <2>;
17 #size-cells = <1>; 17 #size-cells = <2>;
18 18
19 aliases { 19 aliases {
20 ethernet0 = &enet0; 20 ethernet0 = &enet0;
@@ -61,7 +61,6 @@
61 61
62 memory { 62 memory {
63 device_type = "memory"; 63 device_type = "memory";
64 reg = <0x0 0x0>; // Filled by U-Boot
65 }; 64 };
66 65
67 soc8572@ffe00000 { 66 soc8572@ffe00000 {
@@ -69,8 +68,8 @@
69 #size-cells = <1>; 68 #size-cells = <1>;
70 device_type = "soc"; 69 device_type = "soc";
71 compatible = "simple-bus"; 70 compatible = "simple-bus";
72 ranges = <0x0 0xffe00000 0x100000>; 71 ranges = <0x0 0 0xffe00000 0x100000>;
73 reg = <0xffe00000 0x1000>; // CCSRBAR & soc regs, remove once parse code for immrbase fixed 72 reg = <0 0xffe00000 0 0x1000>; // CCSRBAR & soc regs, remove once parse code for immrbase fixed
74 bus-frequency = <0>; // Filled out by uboot. 73 bus-frequency = <0>; // Filled out by uboot.
75 74
76 memory-controller@2000 { 75 memory-controller@2000 {
@@ -351,10 +350,10 @@
351 #interrupt-cells = <1>; 350 #interrupt-cells = <1>;
352 #size-cells = <2>; 351 #size-cells = <2>;
353 #address-cells = <3>; 352 #address-cells = <3>;
354 reg = <0xffe08000 0x1000>; 353 reg = <0 0xffe08000 0 0x1000>;
355 bus-range = <0 255>; 354 bus-range = <0 255>;
356 ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 355 ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
357 0x1000000 0x0 0x0 0xffc00000 0x0 0x10000>; 356 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x00010000>;
358 clock-frequency = <33333333>; 357 clock-frequency = <33333333>;
359 interrupt-parent = <&mpic>; 358 interrupt-parent = <&mpic>;
360 interrupts = <24 2>; 359 interrupts = <24 2>;
@@ -561,10 +560,10 @@
561 #interrupt-cells = <1>; 560 #interrupt-cells = <1>;
562 #size-cells = <2>; 561 #size-cells = <2>;
563 #address-cells = <3>; 562 #address-cells = <3>;
564 reg = <0xffe09000 0x1000>; 563 reg = <0 0xffe09000 0 0x1000>;
565 bus-range = <0 255>; 564 bus-range = <0 255>;
566 ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 565 ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000
567 0x1000000 0x0 0x0 0xffc10000 0x0 0x10000>; 566 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x00010000>;
568 clock-frequency = <33333333>; 567 clock-frequency = <33333333>;
569 interrupt-parent = <&mpic>; 568 interrupt-parent = <&mpic>;
570 interrupts = <26 2>; 569 interrupts = <26 2>;
@@ -598,10 +597,10 @@
598 #interrupt-cells = <1>; 597 #interrupt-cells = <1>;
599 #size-cells = <2>; 598 #size-cells = <2>;
600 #address-cells = <3>; 599 #address-cells = <3>;
601 reg = <0xffe0a000 0x1000>; 600 reg = <0 0xffe0a000 0 0x1000>;
602 bus-range = <0 255>; 601 bus-range = <0 255>;
603 ranges = <0x2000000 0x0 0xc0000000 0xc0000000 0x0 0x20000000 602 ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000
604 0x1000000 0x0 0x0 0xffc20000 0x0 0x10000>; 603 0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x00010000>;
605 clock-frequency = <33333333>; 604 clock-frequency = <33333333>;
606 interrupt-parent = <&mpic>; 605 interrupt-parent = <&mpic>;
607 interrupts = <27 2>; 606 interrupts = <27 2>;
diff --git a/arch/powerpc/boot/libfdt-wrapper.c b/arch/powerpc/boot/libfdt-wrapper.c
index c541fd8a95d4..9276327bc2bb 100644
--- a/arch/powerpc/boot/libfdt-wrapper.c
+++ b/arch/powerpc/boot/libfdt-wrapper.c
@@ -105,6 +105,11 @@ static int fdt_wrapper_setprop(const void *devp, const char *name,
105 return check_err(rc); 105 return check_err(rc);
106} 106}
107 107
108static int fdt_wrapper_del_node(const void *devp)
109{
110 return fdt_del_node(fdt, devp_offset(devp));
111}
112
108static void *fdt_wrapper_get_parent(const void *devp) 113static void *fdt_wrapper_get_parent(const void *devp)
109{ 114{
110 return offset_devp(fdt_parent_offset(fdt, devp_offset(devp))); 115 return offset_devp(fdt_parent_offset(fdt, devp_offset(devp)));
@@ -165,6 +170,7 @@ static unsigned long fdt_wrapper_finalize(void)
165void fdt_init(void *blob) 170void fdt_init(void *blob)
166{ 171{
167 int err; 172 int err;
173 int bufsize;
168 174
169 dt_ops.finddevice = fdt_wrapper_finddevice; 175 dt_ops.finddevice = fdt_wrapper_finddevice;
170 dt_ops.getprop = fdt_wrapper_getprop; 176 dt_ops.getprop = fdt_wrapper_getprop;
@@ -173,21 +179,21 @@ void fdt_init(void *blob)
173 dt_ops.create_node = fdt_wrapper_create_node; 179 dt_ops.create_node = fdt_wrapper_create_node;
174 dt_ops.find_node_by_prop_value = fdt_wrapper_find_node_by_prop_value; 180 dt_ops.find_node_by_prop_value = fdt_wrapper_find_node_by_prop_value;
175 dt_ops.find_node_by_compatible = fdt_wrapper_find_node_by_compatible; 181 dt_ops.find_node_by_compatible = fdt_wrapper_find_node_by_compatible;
182 dt_ops.del_node = fdt_wrapper_del_node;
176 dt_ops.get_path = fdt_wrapper_get_path; 183 dt_ops.get_path = fdt_wrapper_get_path;
177 dt_ops.finalize = fdt_wrapper_finalize; 184 dt_ops.finalize = fdt_wrapper_finalize;
178 185
179 /* Make sure the dt blob is the right version and so forth */ 186 /* Make sure the dt blob is the right version and so forth */
180 fdt = blob; 187 fdt = blob;
181 err = fdt_open_into(fdt, fdt, fdt_totalsize(blob)); 188 bufsize = fdt_totalsize(fdt) + 4;
182 if (err == -FDT_ERR_NOSPACE) { 189 buf = malloc(bufsize);
183 int bufsize = fdt_totalsize(fdt) + 4; 190 if(!buf)
184 buf = malloc(bufsize); 191 fatal("malloc failed. can't relocate the device tree\n\r");
185 err = fdt_open_into(fdt, buf, bufsize); 192
186 } 193 err = fdt_open_into(fdt, buf, bufsize);
187 194
188 if (err != 0) 195 if (err != 0)
189 fatal("fdt_init(): %s\n\r", fdt_strerror(err)); 196 fatal("fdt_init(): %s\n\r", fdt_strerror(err));
190 197
191 if (buf) 198 fdt = buf;
192 fdt = buf;
193} 199}
diff --git a/arch/powerpc/boot/main.c b/arch/powerpc/boot/main.c
index 9e7f3ddd9913..ae32801ebd69 100644
--- a/arch/powerpc/boot/main.c
+++ b/arch/powerpc/boot/main.c
@@ -56,9 +56,19 @@ static struct addr_range prep_kernel(void)
56 if (platform_ops.vmlinux_alloc) { 56 if (platform_ops.vmlinux_alloc) {
57 addr = platform_ops.vmlinux_alloc(ei.memsize); 57 addr = platform_ops.vmlinux_alloc(ei.memsize);
58 } else { 58 } else {
59 if ((unsigned long)_start < ei.memsize) 59 /*
60 * Check if the kernel image (without bss) would overwrite the
61 * bootwrapper. The device tree has been moved in fdt_init()
62 * to an area allocated with malloc() (somewhere past _end).
63 */
64 if ((unsigned long)_start < ei.loadsize)
60 fatal("Insufficient memory for kernel at address 0!" 65 fatal("Insufficient memory for kernel at address 0!"
61 " (_start=%p)\n\r", _start); 66 " (_start=%p, uncomressed size=%08x)\n\r",
67 _start, ei.loadsize);
68
69 if ((unsigned long)_end < ei.memsize)
70 fatal("The final kernel image would overwrite the "
71 "device tree\n\r");
62 } 72 }
63 73
64 /* Finally, gunzip the kernel */ 74 /* Finally, gunzip the kernel */
diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h
index 321e2f5afe71..b3218ce451bb 100644
--- a/arch/powerpc/boot/ops.h
+++ b/arch/powerpc/boot/ops.h
@@ -40,6 +40,7 @@ struct dt_ops {
40 const int buflen); 40 const int buflen);
41 int (*setprop)(const void *phandle, const char *name, 41 int (*setprop)(const void *phandle, const char *name,
42 const void *buf, const int buflen); 42 const void *buf, const int buflen);
43 int (*del_node)(const void *phandle);
43 void *(*get_parent)(const void *phandle); 44 void *(*get_parent)(const void *phandle);
44 /* The node must not already exist. */ 45 /* The node must not already exist. */
45 void *(*create_node)(const void *parent, const char *name); 46 void *(*create_node)(const void *parent, const char *name);
@@ -126,6 +127,11 @@ static inline int setprop_str(void *devp, const char *name, const char *buf)
126 return -1; 127 return -1;
127} 128}
128 129
130static inline int del_node(const void *devp)
131{
132 return dt_ops.del_node ? dt_ops.del_node(devp) : -1;
133}
134
129static inline void *get_parent(const char *devp) 135static inline void *get_parent(const char *devp)
130{ 136{
131 return dt_ops.get_parent ? dt_ops.get_parent(devp) : NULL; 137 return dt_ops.get_parent ? dt_ops.get_parent(devp) : NULL;
diff --git a/arch/powerpc/boot/string.S b/arch/powerpc/boot/string.S
index 643e4cb2f11d..acc9428f2789 100644
--- a/arch/powerpc/boot/string.S
+++ b/arch/powerpc/boot/string.S
@@ -235,7 +235,7 @@ memchr:
235 .globl memcmp 235 .globl memcmp
236memcmp: 236memcmp:
237 cmpwi 0,r5,0 237 cmpwi 0,r5,0
238 blelr 238 ble 2f
239 mtctr r5 239 mtctr r5
240 addi r6,r3,-1 240 addi r6,r3,-1
241 addi r4,r4,-1 241 addi r4,r4,-1
@@ -244,6 +244,8 @@ memcmp:
244 subf. r3,r0,r3 244 subf. r3,r0,r3
245 bdnzt 2,1b 245 bdnzt 2,1b
246 blr 246 blr
2472: li r3,0
248 blr
247 249
248 250
249/* 251/*
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index ee0dc41d7c56..f39073511a49 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -306,11 +306,14 @@ fi
306 306
307# post-processing needed for some platforms 307# post-processing needed for some platforms
308case "$platform" in 308case "$platform" in
309pseries|chrp) 309pseries)
310 ${CROSS}objcopy -O binary -j .fakeelf "$kernel" "$ofile".rpanote 310 ${CROSS}objcopy -O binary -j .fakeelf "$kernel" "$ofile".rpanote
311 $objbin/addnote "$ofile" "$ofile".rpanote 311 $objbin/addnote "$ofile" "$ofile".rpanote
312 rm -r "$ofile".rpanote 312 rm -r "$ofile".rpanote
313 ;; 313 ;;
314chrp)
315 $objbin/addnote -r c00000 "$ofile"
316 ;;
314coff) 317coff)
315 ${CROSS}objcopy -O aixcoff-rs6000 --set-start "$entry" "$ofile" 318 ${CROSS}objcopy -O aixcoff-rs6000 --set-start "$entry" "$ofile"
316 $objbin/hack-coff "$ofile" 319 $objbin/hack-coff "$ofile"
diff --git a/arch/powerpc/configs/40x/acadia_defconfig b/arch/powerpc/configs/40x/acadia_defconfig
new file mode 100644
index 000000000000..39bd9eb453f0
--- /dev/null
+++ b/arch/powerpc/configs/40x/acadia_defconfig
@@ -0,0 +1,921 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.27-rc5
4# Mon Oct 13 13:47:16 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set
14CONFIG_40x=y
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_4xx=y
18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
22CONFIG_PPC_MERGE=y
23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
30CONFIG_IRQ_PER_CPU=y
31CONFIG_STACKTRACE_SUPPORT=y
32CONFIG_HAVE_LATENCYTOP_SUPPORT=y
33CONFIG_LOCKDEP_SUPPORT=y
34CONFIG_RWSEM_XCHGADD_ALGORITHM=y
35CONFIG_ARCH_HAS_ILOG2_U32=y
36CONFIG_GENERIC_HWEIGHT=y
37CONFIG_GENERIC_CALIBRATE_DELAY=y
38CONFIG_GENERIC_FIND_NEXT_BIT=y
39# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
40CONFIG_PPC=y
41CONFIG_EARLY_PRINTK=y
42CONFIG_GENERIC_NVRAM=y
43CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
44CONFIG_ARCH_MAY_HAVE_PC_FDC=y
45CONFIG_PPC_OF=y
46CONFIG_OF=y
47CONFIG_PPC_UDBG_16550=y
48# CONFIG_GENERIC_TBSYNC is not set
49CONFIG_AUDIT_ARCH=y
50CONFIG_GENERIC_BUG=y
51# CONFIG_DEFAULT_UIMAGE is not set
52CONFIG_PPC_DCR_NATIVE=y
53# CONFIG_PPC_DCR_MMIO is not set
54CONFIG_PPC_DCR=y
55CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
56
57#
58# General setup
59#
60CONFIG_EXPERIMENTAL=y
61CONFIG_BROKEN_ON_SMP=y
62CONFIG_INIT_ENV_ARG_LIMIT=32
63CONFIG_LOCALVERSION=""
64CONFIG_LOCALVERSION_AUTO=y
65CONFIG_SWAP=y
66CONFIG_SYSVIPC=y
67CONFIG_SYSVIPC_SYSCTL=y
68CONFIG_POSIX_MQUEUE=y
69# CONFIG_BSD_PROCESS_ACCT is not set
70# CONFIG_TASKSTATS is not set
71# CONFIG_AUDIT is not set
72# CONFIG_IKCONFIG is not set
73CONFIG_LOG_BUF_SHIFT=14
74# CONFIG_CGROUPS is not set
75CONFIG_GROUP_SCHED=y
76# CONFIG_FAIR_GROUP_SCHED is not set
77# CONFIG_RT_GROUP_SCHED is not set
78CONFIG_USER_SCHED=y
79# CONFIG_CGROUP_SCHED is not set
80CONFIG_SYSFS_DEPRECATED=y
81CONFIG_SYSFS_DEPRECATED_V2=y
82# CONFIG_RELAY is not set
83# CONFIG_NAMESPACES is not set
84CONFIG_BLK_DEV_INITRD=y
85CONFIG_INITRAMFS_SOURCE=""
86# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
87CONFIG_SYSCTL=y
88CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y
90CONFIG_KALLSYMS=y
91CONFIG_KALLSYMS_ALL=y
92CONFIG_KALLSYMS_EXTRA_PASS=y
93CONFIG_HOTPLUG=y
94CONFIG_PRINTK=y
95CONFIG_BUG=y
96CONFIG_ELF_CORE=y
97CONFIG_COMPAT_BRK=y
98CONFIG_BASE_FULL=y
99CONFIG_FUTEX=y
100CONFIG_ANON_INODES=y
101CONFIG_EPOLL=y
102CONFIG_SIGNALFD=y
103CONFIG_TIMERFD=y
104CONFIG_EVENTFD=y
105CONFIG_SHMEM=y
106CONFIG_VM_EVENT_COUNTERS=y
107CONFIG_SLUB_DEBUG=y
108# CONFIG_SLAB is not set
109CONFIG_SLUB=y
110# CONFIG_SLOB is not set
111# CONFIG_PROFILING is not set
112# CONFIG_MARKERS is not set
113CONFIG_HAVE_OPROFILE=y
114# CONFIG_KPROBES is not set
115CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
116CONFIG_HAVE_IOREMAP_PROT=y
117CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y
119CONFIG_HAVE_ARCH_TRACEHOOK=y
120# CONFIG_HAVE_DMA_ATTRS is not set
121# CONFIG_USE_GENERIC_SMP_HELPERS is not set
122# CONFIG_HAVE_CLK is not set
123CONFIG_PROC_PAGE_MONITOR=y
124# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
125CONFIG_SLABINFO=y
126CONFIG_RT_MUTEXES=y
127# CONFIG_TINY_SHMEM is not set
128CONFIG_BASE_SMALL=0
129CONFIG_MODULES=y
130# CONFIG_MODULE_FORCE_LOAD is not set
131CONFIG_MODULE_UNLOAD=y
132# CONFIG_MODULE_FORCE_UNLOAD is not set
133# CONFIG_MODVERSIONS is not set
134# CONFIG_MODULE_SRCVERSION_ALL is not set
135CONFIG_KMOD=y
136CONFIG_BLOCK=y
137CONFIG_LBD=y
138# CONFIG_BLK_DEV_IO_TRACE is not set
139# CONFIG_LSF is not set
140# CONFIG_BLK_DEV_BSG is not set
141# CONFIG_BLK_DEV_INTEGRITY is not set
142
143#
144# IO Schedulers
145#
146CONFIG_IOSCHED_NOOP=y
147CONFIG_IOSCHED_AS=y
148CONFIG_IOSCHED_DEADLINE=y
149CONFIG_IOSCHED_CFQ=y
150CONFIG_DEFAULT_AS=y
151# CONFIG_DEFAULT_DEADLINE is not set
152# CONFIG_DEFAULT_CFQ is not set
153# CONFIG_DEFAULT_NOOP is not set
154CONFIG_DEFAULT_IOSCHED="anticipatory"
155CONFIG_CLASSIC_RCU=y
156# CONFIG_PPC4xx_PCI_EXPRESS is not set
157
158#
159# Platform support
160#
161# CONFIG_PPC_CELL is not set
162# CONFIG_PPC_CELL_NATIVE is not set
163# CONFIG_PQ2ADS is not set
164CONFIG_ACADIA=y
165# CONFIG_EP405 is not set
166# CONFIG_KILAUEA is not set
167# CONFIG_MAKALU is not set
168# CONFIG_WALNUT is not set
169# CONFIG_XILINX_VIRTEX_GENERIC_BOARD is not set
170CONFIG_PPC40x_SIMPLE=y
171CONFIG_405EZ=y
172# CONFIG_IPIC is not set
173# CONFIG_MPIC is not set
174# CONFIG_MPIC_WEIRD is not set
175# CONFIG_PPC_I8259 is not set
176# CONFIG_PPC_RTAS is not set
177# CONFIG_MMIO_NVRAM is not set
178# CONFIG_PPC_MPC106 is not set
179# CONFIG_PPC_970_NAP is not set
180# CONFIG_PPC_INDIRECT_IO is not set
181# CONFIG_GENERIC_IOMAP is not set
182# CONFIG_CPU_FREQ is not set
183# CONFIG_FSL_ULI1575 is not set
184
185#
186# Kernel options
187#
188# CONFIG_HIGHMEM is not set
189# CONFIG_TICK_ONESHOT is not set
190# CONFIG_NO_HZ is not set
191# CONFIG_HIGH_RES_TIMERS is not set
192CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
193# CONFIG_HZ_100 is not set
194CONFIG_HZ_250=y
195# CONFIG_HZ_300 is not set
196# CONFIG_HZ_1000 is not set
197CONFIG_HZ=250
198# CONFIG_SCHED_HRTICK is not set
199CONFIG_PREEMPT_NONE=y
200# CONFIG_PREEMPT_VOLUNTARY is not set
201# CONFIG_PREEMPT is not set
202CONFIG_BINFMT_ELF=y
203# CONFIG_BINFMT_MISC is not set
204# CONFIG_MATH_EMULATION is not set
205# CONFIG_IOMMU_HELPER is not set
206CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
207CONFIG_ARCH_HAS_WALK_MEMORY=y
208CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
209CONFIG_ARCH_FLATMEM_ENABLE=y
210CONFIG_ARCH_POPULATES_NODE_MAP=y
211CONFIG_SELECT_MEMORY_MODEL=y
212CONFIG_FLATMEM_MANUAL=y
213# CONFIG_DISCONTIGMEM_MANUAL is not set
214# CONFIG_SPARSEMEM_MANUAL is not set
215CONFIG_FLATMEM=y
216CONFIG_FLAT_NODE_MEM_MAP=y
217# CONFIG_SPARSEMEM_STATIC is not set
218# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
219CONFIG_PAGEFLAGS_EXTENDED=y
220CONFIG_SPLIT_PTLOCK_CPUS=4
221CONFIG_MIGRATION=y
222# CONFIG_RESOURCES_64BIT is not set
223CONFIG_ZONE_DMA_FLAG=1
224CONFIG_BOUNCE=y
225CONFIG_VIRT_TO_BUS=y
226CONFIG_FORCE_MAX_ZONEORDER=11
227CONFIG_PROC_DEVICETREE=y
228# CONFIG_CMDLINE_BOOL is not set
229CONFIG_EXTRA_TARGETS=""
230# CONFIG_PM is not set
231CONFIG_SECCOMP=y
232CONFIG_ISA_DMA_API=y
233
234#
235# Bus options
236#
237CONFIG_ZONE_DMA=y
238CONFIG_PPC_INDIRECT_PCI=y
239CONFIG_4xx_SOC=y
240CONFIG_PPC_PCI_CHOICE=y
241CONFIG_PCI=y
242CONFIG_PCI_DOMAINS=y
243CONFIG_PCI_SYSCALL=y
244# CONFIG_PCIEPORTBUS is not set
245CONFIG_ARCH_SUPPORTS_MSI=y
246# CONFIG_PCI_MSI is not set
247CONFIG_PCI_LEGACY=y
248# CONFIG_PCI_DEBUG is not set
249# CONFIG_PCCARD is not set
250# CONFIG_HOTPLUG_PCI is not set
251# CONFIG_HAS_RAPIDIO is not set
252
253#
254# Advanced setup
255#
256# CONFIG_ADVANCED_OPTIONS is not set
257
258#
259# Default settings for advanced configuration options are used
260#
261CONFIG_LOWMEM_SIZE=0x30000000
262CONFIG_PAGE_OFFSET=0xc0000000
263CONFIG_KERNEL_START=0xc0000000
264CONFIG_PHYSICAL_START=0x00000000
265CONFIG_TASK_SIZE=0xc0000000
266CONFIG_CONSISTENT_START=0xff100000
267CONFIG_CONSISTENT_SIZE=0x00200000
268CONFIG_NET=y
269
270#
271# Networking options
272#
273CONFIG_PACKET=y
274# CONFIG_PACKET_MMAP is not set
275CONFIG_UNIX=y
276# CONFIG_NET_KEY is not set
277CONFIG_INET=y
278# CONFIG_IP_MULTICAST is not set
279# CONFIG_IP_ADVANCED_ROUTER is not set
280CONFIG_IP_FIB_HASH=y
281CONFIG_IP_PNP=y
282CONFIG_IP_PNP_DHCP=y
283CONFIG_IP_PNP_BOOTP=y
284# CONFIG_IP_PNP_RARP is not set
285# CONFIG_NET_IPIP is not set
286# CONFIG_NET_IPGRE is not set
287# CONFIG_ARPD is not set
288# CONFIG_SYN_COOKIES is not set
289# CONFIG_INET_AH is not set
290# CONFIG_INET_ESP is not set
291# CONFIG_INET_IPCOMP is not set
292# CONFIG_INET_XFRM_TUNNEL is not set
293# CONFIG_INET_TUNNEL is not set
294# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
295# CONFIG_INET_XFRM_MODE_TUNNEL is not set
296# CONFIG_INET_XFRM_MODE_BEET is not set
297# CONFIG_INET_LRO is not set
298CONFIG_INET_DIAG=y
299CONFIG_INET_TCP_DIAG=y
300# CONFIG_TCP_CONG_ADVANCED is not set
301CONFIG_TCP_CONG_CUBIC=y
302CONFIG_DEFAULT_TCP_CONG="cubic"
303# CONFIG_TCP_MD5SIG is not set
304# CONFIG_IPV6 is not set
305# CONFIG_NETWORK_SECMARK is not set
306# CONFIG_NETFILTER is not set
307# CONFIG_IP_DCCP is not set
308# CONFIG_IP_SCTP is not set
309# CONFIG_TIPC is not set
310# CONFIG_ATM is not set
311# CONFIG_BRIDGE is not set
312# CONFIG_VLAN_8021Q is not set
313# CONFIG_DECNET is not set
314# CONFIG_LLC2 is not set
315# CONFIG_IPX is not set
316# CONFIG_ATALK is not set
317# CONFIG_X25 is not set
318# CONFIG_LAPB is not set
319# CONFIG_ECONET is not set
320# CONFIG_WAN_ROUTER is not set
321# CONFIG_NET_SCHED is not set
322
323#
324# Network testing
325#
326# CONFIG_NET_PKTGEN is not set
327# CONFIG_HAMRADIO is not set
328# CONFIG_CAN is not set
329# CONFIG_IRDA is not set
330# CONFIG_BT is not set
331# CONFIG_AF_RXRPC is not set
332
333#
334# Wireless
335#
336# CONFIG_CFG80211 is not set
337# CONFIG_WIRELESS_EXT is not set
338# CONFIG_MAC80211 is not set
339# CONFIG_IEEE80211 is not set
340# CONFIG_RFKILL is not set
341# CONFIG_NET_9P is not set
342
343#
344# Device Drivers
345#
346
347#
348# Generic Driver Options
349#
350CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
351CONFIG_STANDALONE=y
352CONFIG_PREVENT_FIRMWARE_BUILD=y
353CONFIG_FW_LOADER=y
354CONFIG_FIRMWARE_IN_KERNEL=y
355CONFIG_EXTRA_FIRMWARE=""
356# CONFIG_DEBUG_DRIVER is not set
357# CONFIG_DEBUG_DEVRES is not set
358# CONFIG_SYS_HYPERVISOR is not set
359CONFIG_CONNECTOR=y
360CONFIG_PROC_EVENTS=y
361CONFIG_MTD=y
362# CONFIG_MTD_DEBUG is not set
363# CONFIG_MTD_CONCAT is not set
364CONFIG_MTD_PARTITIONS=y
365# CONFIG_MTD_REDBOOT_PARTS is not set
366CONFIG_MTD_CMDLINE_PARTS=y
367CONFIG_MTD_OF_PARTS=y
368# CONFIG_MTD_AR7_PARTS is not set
369
370#
371# User Modules And Translation Layers
372#
373CONFIG_MTD_CHAR=y
374CONFIG_MTD_BLKDEVS=m
375CONFIG_MTD_BLOCK=m
376# CONFIG_MTD_BLOCK_RO is not set
377# CONFIG_FTL is not set
378# CONFIG_NFTL is not set
379# CONFIG_INFTL is not set
380# CONFIG_RFD_FTL is not set
381# CONFIG_SSFDC is not set
382# CONFIG_MTD_OOPS is not set
383
384#
385# RAM/ROM/Flash chip drivers
386#
387CONFIG_MTD_CFI=y
388CONFIG_MTD_JEDECPROBE=y
389CONFIG_MTD_GEN_PROBE=y
390# CONFIG_MTD_CFI_ADV_OPTIONS is not set
391CONFIG_MTD_MAP_BANK_WIDTH_1=y
392CONFIG_MTD_MAP_BANK_WIDTH_2=y
393CONFIG_MTD_MAP_BANK_WIDTH_4=y
394# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
395# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
396# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
397CONFIG_MTD_CFI_I1=y
398CONFIG_MTD_CFI_I2=y
399# CONFIG_MTD_CFI_I4 is not set
400# CONFIG_MTD_CFI_I8 is not set
401# CONFIG_MTD_CFI_INTELEXT is not set
402CONFIG_MTD_CFI_AMDSTD=y
403# CONFIG_MTD_CFI_STAA is not set
404CONFIG_MTD_CFI_UTIL=y
405# CONFIG_MTD_RAM is not set
406# CONFIG_MTD_ROM is not set
407# CONFIG_MTD_ABSENT is not set
408
409#
410# Mapping drivers for chip access
411#
412# CONFIG_MTD_COMPLEX_MAPPINGS is not set
413# CONFIG_MTD_PHYSMAP is not set
414CONFIG_MTD_PHYSMAP_OF=y
415# CONFIG_MTD_INTEL_VR_NOR is not set
416# CONFIG_MTD_PLATRAM is not set
417
418#
419# Self-contained MTD device drivers
420#
421# CONFIG_MTD_PMC551 is not set
422# CONFIG_MTD_SLRAM is not set
423# CONFIG_MTD_PHRAM is not set
424# CONFIG_MTD_MTDRAM is not set
425# CONFIG_MTD_BLOCK2MTD is not set
426
427#
428# Disk-On-Chip Device Drivers
429#
430# CONFIG_MTD_DOC2000 is not set
431# CONFIG_MTD_DOC2001 is not set
432# CONFIG_MTD_DOC2001PLUS is not set
433# CONFIG_MTD_NAND is not set
434# CONFIG_MTD_ONENAND is not set
435
436#
437# UBI - Unsorted block images
438#
439# CONFIG_MTD_UBI is not set
440CONFIG_OF_DEVICE=y
441# CONFIG_PARPORT is not set
442CONFIG_BLK_DEV=y
443# CONFIG_BLK_DEV_FD is not set
444# CONFIG_BLK_CPQ_DA is not set
445# CONFIG_BLK_CPQ_CISS_DA is not set
446# CONFIG_BLK_DEV_DAC960 is not set
447# CONFIG_BLK_DEV_UMEM is not set
448# CONFIG_BLK_DEV_COW_COMMON is not set
449# CONFIG_BLK_DEV_LOOP is not set
450# CONFIG_BLK_DEV_NBD is not set
451# CONFIG_BLK_DEV_SX8 is not set
452CONFIG_BLK_DEV_RAM=y
453CONFIG_BLK_DEV_RAM_COUNT=16
454CONFIG_BLK_DEV_RAM_SIZE=35000
455# CONFIG_BLK_DEV_XIP is not set
456# CONFIG_CDROM_PKTCDVD is not set
457# CONFIG_ATA_OVER_ETH is not set
458# CONFIG_XILINX_SYSACE is not set
459# CONFIG_BLK_DEV_HD is not set
460# CONFIG_MISC_DEVICES is not set
461CONFIG_HAVE_IDE=y
462# CONFIG_IDE is not set
463
464#
465# SCSI device support
466#
467# CONFIG_RAID_ATTRS is not set
468# CONFIG_SCSI is not set
469# CONFIG_SCSI_DMA is not set
470# CONFIG_SCSI_NETLINK is not set
471# CONFIG_ATA is not set
472# CONFIG_MD is not set
473# CONFIG_FUSION is not set
474
475#
476# IEEE 1394 (FireWire) support
477#
478
479#
480# Enable only one of the two stacks, unless you know what you are doing
481#
482# CONFIG_FIREWIRE is not set
483# CONFIG_IEEE1394 is not set
484# CONFIG_I2O is not set
485# CONFIG_MACINTOSH_DRIVERS is not set
486CONFIG_NETDEVICES=y
487# CONFIG_DUMMY is not set
488# CONFIG_BONDING is not set
489# CONFIG_MACVLAN is not set
490# CONFIG_EQUALIZER is not set
491# CONFIG_TUN is not set
492# CONFIG_VETH is not set
493# CONFIG_ARCNET is not set
494# CONFIG_PHYLIB is not set
495CONFIG_NET_ETHERNET=y
496CONFIG_MII=y
497# CONFIG_HAPPYMEAL is not set
498# CONFIG_SUNGEM is not set
499# CONFIG_CASSINI is not set
500# CONFIG_NET_VENDOR_3COM is not set
501# CONFIG_NET_TULIP is not set
502# CONFIG_HP100 is not set
503CONFIG_IBM_NEW_EMAC=y
504CONFIG_IBM_NEW_EMAC_RXB=256
505CONFIG_IBM_NEW_EMAC_TXB=256
506CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
507CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
508CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
509CONFIG_IBM_NEW_EMAC_DEBUG=y
510# CONFIG_IBM_NEW_EMAC_ZMII is not set
511# CONFIG_IBM_NEW_EMAC_RGMII is not set
512# CONFIG_IBM_NEW_EMAC_TAH is not set
513# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
514CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL=y
515CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT=y
516CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR=y
517# CONFIG_NET_PCI is not set
518# CONFIG_B44 is not set
519# CONFIG_NETDEV_1000 is not set
520# CONFIG_NETDEV_10000 is not set
521# CONFIG_TR is not set
522
523#
524# Wireless LAN
525#
526# CONFIG_WLAN_PRE80211 is not set
527# CONFIG_WLAN_80211 is not set
528# CONFIG_IWLWIFI_LEDS is not set
529# CONFIG_WAN is not set
530# CONFIG_FDDI is not set
531# CONFIG_HIPPI is not set
532# CONFIG_PPP is not set
533# CONFIG_SLIP is not set
534# CONFIG_NETCONSOLE is not set
535# CONFIG_NETPOLL is not set
536# CONFIG_NET_POLL_CONTROLLER is not set
537# CONFIG_ISDN is not set
538# CONFIG_PHONE is not set
539
540#
541# Input device support
542#
543# CONFIG_INPUT is not set
544
545#
546# Hardware I/O ports
547#
548# CONFIG_SERIO is not set
549# CONFIG_GAMEPORT is not set
550
551#
552# Character devices
553#
554# CONFIG_VT is not set
555CONFIG_DEVKMEM=y
556# CONFIG_SERIAL_NONSTANDARD is not set
557# CONFIG_NOZOMI is not set
558
559#
560# Serial drivers
561#
562CONFIG_SERIAL_8250=y
563CONFIG_SERIAL_8250_CONSOLE=y
564CONFIG_SERIAL_8250_PCI=y
565CONFIG_SERIAL_8250_NR_UARTS=4
566CONFIG_SERIAL_8250_RUNTIME_UARTS=4
567CONFIG_SERIAL_8250_EXTENDED=y
568# CONFIG_SERIAL_8250_MANY_PORTS is not set
569CONFIG_SERIAL_8250_SHARE_IRQ=y
570# CONFIG_SERIAL_8250_DETECT_IRQ is not set
571# CONFIG_SERIAL_8250_RSA is not set
572
573#
574# Non-8250 serial port support
575#
576# CONFIG_SERIAL_UARTLITE is not set
577CONFIG_SERIAL_CORE=y
578CONFIG_SERIAL_CORE_CONSOLE=y
579# CONFIG_SERIAL_JSM is not set
580CONFIG_SERIAL_OF_PLATFORM=y
581CONFIG_UNIX98_PTYS=y
582CONFIG_LEGACY_PTYS=y
583CONFIG_LEGACY_PTY_COUNT=256
584# CONFIG_IPMI_HANDLER is not set
585# CONFIG_HW_RANDOM is not set
586# CONFIG_NVRAM is not set
587# CONFIG_GEN_RTC is not set
588# CONFIG_R3964 is not set
589# CONFIG_APPLICOM is not set
590# CONFIG_RAW_DRIVER is not set
591# CONFIG_TCG_TPM is not set
592CONFIG_DEVPORT=y
593# CONFIG_I2C is not set
594# CONFIG_SPI is not set
595CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
596# CONFIG_GPIOLIB is not set
597# CONFIG_W1 is not set
598# CONFIG_POWER_SUPPLY is not set
599# CONFIG_HWMON is not set
600CONFIG_THERMAL=y
601# CONFIG_WATCHDOG is not set
602
603#
604# Sonics Silicon Backplane
605#
606CONFIG_SSB_POSSIBLE=y
607# CONFIG_SSB is not set
608
609#
610# Multifunction device drivers
611#
612# CONFIG_MFD_CORE is not set
613# CONFIG_MFD_SM501 is not set
614# CONFIG_HTC_PASIC3 is not set
615# CONFIG_MFD_TMIO is not set
616
617#
618# Multimedia devices
619#
620
621#
622# Multimedia core support
623#
624# CONFIG_VIDEO_DEV is not set
625# CONFIG_DVB_CORE is not set
626# CONFIG_VIDEO_MEDIA is not set
627
628#
629# Multimedia drivers
630#
631# CONFIG_DAB is not set
632
633#
634# Graphics support
635#
636# CONFIG_AGP is not set
637# CONFIG_DRM is not set
638# CONFIG_VGASTATE is not set
639# CONFIG_VIDEO_OUTPUT_CONTROL is not set
640# CONFIG_FB is not set
641# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
642
643#
644# Display device support
645#
646# CONFIG_DISPLAY_SUPPORT is not set
647# CONFIG_SOUND is not set
648# CONFIG_USB_SUPPORT is not set
649# CONFIG_MMC is not set
650# CONFIG_MEMSTICK is not set
651# CONFIG_NEW_LEDS is not set
652# CONFIG_ACCESSIBILITY is not set
653# CONFIG_INFINIBAND is not set
654# CONFIG_EDAC is not set
655# CONFIG_RTC_CLASS is not set
656# CONFIG_DMADEVICES is not set
657# CONFIG_UIO is not set
658
659#
660# File systems
661#
662CONFIG_EXT2_FS=y
663# CONFIG_EXT2_FS_XATTR is not set
664# CONFIG_EXT2_FS_XIP is not set
665# CONFIG_EXT3_FS is not set
666# CONFIG_EXT4DEV_FS is not set
667# CONFIG_REISERFS_FS is not set
668# CONFIG_JFS_FS is not set
669# CONFIG_FS_POSIX_ACL is not set
670# CONFIG_XFS_FS is not set
671# CONFIG_OCFS2_FS is not set
672CONFIG_DNOTIFY=y
673CONFIG_INOTIFY=y
674CONFIG_INOTIFY_USER=y
675# CONFIG_QUOTA is not set
676# CONFIG_AUTOFS_FS is not set
677# CONFIG_AUTOFS4_FS is not set
678# CONFIG_FUSE_FS is not set
679
680#
681# CD-ROM/DVD Filesystems
682#
683# CONFIG_ISO9660_FS is not set
684# CONFIG_UDF_FS is not set
685
686#
687# DOS/FAT/NT Filesystems
688#
689# CONFIG_MSDOS_FS is not set
690# CONFIG_VFAT_FS is not set
691# CONFIG_NTFS_FS is not set
692
693#
694# Pseudo filesystems
695#
696CONFIG_PROC_FS=y
697CONFIG_PROC_KCORE=y
698CONFIG_PROC_SYSCTL=y
699CONFIG_SYSFS=y
700CONFIG_TMPFS=y
701# CONFIG_TMPFS_POSIX_ACL is not set
702# CONFIG_HUGETLB_PAGE is not set
703# CONFIG_CONFIGFS_FS is not set
704
705#
706# Miscellaneous filesystems
707#
708# CONFIG_ADFS_FS is not set
709# CONFIG_AFFS_FS is not set
710# CONFIG_HFS_FS is not set
711# CONFIG_HFSPLUS_FS is not set
712# CONFIG_BEFS_FS is not set
713# CONFIG_BFS_FS is not set
714# CONFIG_EFS_FS is not set
715# CONFIG_JFFS2_FS is not set
716CONFIG_CRAMFS=y
717# CONFIG_VXFS_FS is not set
718# CONFIG_MINIX_FS is not set
719# CONFIG_OMFS_FS is not set
720# CONFIG_HPFS_FS is not set
721# CONFIG_QNX4FS_FS is not set
722# CONFIG_ROMFS_FS is not set
723# CONFIG_SYSV_FS is not set
724# CONFIG_UFS_FS is not set
725CONFIG_NETWORK_FILESYSTEMS=y
726CONFIG_NFS_FS=y
727CONFIG_NFS_V3=y
728# CONFIG_NFS_V3_ACL is not set
729# CONFIG_NFS_V4 is not set
730CONFIG_ROOT_NFS=y
731# CONFIG_NFSD is not set
732CONFIG_LOCKD=y
733CONFIG_LOCKD_V4=y
734CONFIG_NFS_COMMON=y
735CONFIG_SUNRPC=y
736# CONFIG_RPCSEC_GSS_KRB5 is not set
737# CONFIG_RPCSEC_GSS_SPKM3 is not set
738# CONFIG_SMB_FS is not set
739# CONFIG_CIFS is not set
740# CONFIG_NCP_FS is not set
741# CONFIG_CODA_FS is not set
742# CONFIG_AFS_FS is not set
743
744#
745# Partition Types
746#
747# CONFIG_PARTITION_ADVANCED is not set
748CONFIG_MSDOS_PARTITION=y
749# CONFIG_NLS is not set
750# CONFIG_DLM is not set
751
752#
753# Library routines
754#
755CONFIG_BITREVERSE=y
756# CONFIG_GENERIC_FIND_FIRST_BIT is not set
757# CONFIG_CRC_CCITT is not set
758# CONFIG_CRC16 is not set
759# CONFIG_CRC_T10DIF is not set
760# CONFIG_CRC_ITU_T is not set
761CONFIG_CRC32=y
762# CONFIG_CRC7 is not set
763# CONFIG_LIBCRC32C is not set
764CONFIG_ZLIB_INFLATE=y
765CONFIG_PLIST=y
766CONFIG_HAS_IOMEM=y
767CONFIG_HAS_IOPORT=y
768CONFIG_HAS_DMA=y
769CONFIG_HAVE_LMB=y
770
771#
772# Kernel hacking
773#
774# CONFIG_PRINTK_TIME is not set
775CONFIG_ENABLE_WARN_DEPRECATED=y
776CONFIG_ENABLE_MUST_CHECK=y
777CONFIG_FRAME_WARN=1024
778CONFIG_MAGIC_SYSRQ=y
779# CONFIG_UNUSED_SYMBOLS is not set
780CONFIG_DEBUG_FS=y
781# CONFIG_HEADERS_CHECK is not set
782CONFIG_DEBUG_KERNEL=y
783# CONFIG_DEBUG_SHIRQ is not set
784CONFIG_DETECT_SOFTLOCKUP=y
785# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
786CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
787CONFIG_SCHED_DEBUG=y
788# CONFIG_SCHEDSTATS is not set
789# CONFIG_TIMER_STATS is not set
790# CONFIG_DEBUG_OBJECTS is not set
791# CONFIG_SLUB_DEBUG_ON is not set
792# CONFIG_SLUB_STATS is not set
793# CONFIG_DEBUG_RT_MUTEXES is not set
794# CONFIG_RT_MUTEX_TESTER is not set
795# CONFIG_DEBUG_SPINLOCK is not set
796# CONFIG_DEBUG_MUTEXES is not set
797# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
798# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
799# CONFIG_DEBUG_KOBJECT is not set
800CONFIG_DEBUG_BUGVERBOSE=y
801# CONFIG_DEBUG_INFO is not set
802# CONFIG_DEBUG_VM is not set
803# CONFIG_DEBUG_WRITECOUNT is not set
804# CONFIG_DEBUG_MEMORY_INIT is not set
805# CONFIG_DEBUG_LIST is not set
806# CONFIG_DEBUG_SG is not set
807# CONFIG_BOOT_PRINTK_DELAY is not set
808# CONFIG_RCU_TORTURE_TEST is not set
809# CONFIG_BACKTRACE_SELF_TEST is not set
810# CONFIG_FAULT_INJECTION is not set
811# CONFIG_LATENCYTOP is not set
812CONFIG_SYSCTL_SYSCALL_CHECK=y
813CONFIG_HAVE_FTRACE=y
814CONFIG_HAVE_DYNAMIC_FTRACE=y
815# CONFIG_FTRACE is not set
816# CONFIG_SCHED_TRACER is not set
817# CONFIG_CONTEXT_SWITCH_TRACER is not set
818# CONFIG_SAMPLES is not set
819CONFIG_HAVE_ARCH_KGDB=y
820# CONFIG_KGDB is not set
821# CONFIG_DEBUG_STACKOVERFLOW is not set
822# CONFIG_DEBUG_STACK_USAGE is not set
823# CONFIG_DEBUG_PAGEALLOC is not set
824# CONFIG_CODE_PATCHING_SELFTEST is not set
825# CONFIG_FTR_FIXUP_SELFTEST is not set
826# CONFIG_MSI_BITMAP_SELFTEST is not set
827# CONFIG_XMON is not set
828# CONFIG_IRQSTACKS is not set
829# CONFIG_VIRQ_DEBUG is not set
830# CONFIG_BDI_SWITCH is not set
831# CONFIG_PPC_EARLY_DEBUG is not set
832
833#
834# Security options
835#
836# CONFIG_KEYS is not set
837# CONFIG_SECURITY is not set
838# CONFIG_SECURITY_FILE_CAPABILITIES is not set
839CONFIG_CRYPTO=y
840
841#
842# Crypto core or helper
843#
844CONFIG_CRYPTO_ALGAPI=y
845CONFIG_CRYPTO_BLKCIPHER=y
846CONFIG_CRYPTO_MANAGER=y
847# CONFIG_CRYPTO_GF128MUL is not set
848# CONFIG_CRYPTO_NULL is not set
849# CONFIG_CRYPTO_CRYPTD is not set
850# CONFIG_CRYPTO_AUTHENC is not set
851# CONFIG_CRYPTO_TEST is not set
852
853#
854# Authenticated Encryption with Associated Data
855#
856# CONFIG_CRYPTO_CCM is not set
857# CONFIG_CRYPTO_GCM is not set
858# CONFIG_CRYPTO_SEQIV is not set
859
860#
861# Block modes
862#
863CONFIG_CRYPTO_CBC=y
864# CONFIG_CRYPTO_CTR is not set
865# CONFIG_CRYPTO_CTS is not set
866CONFIG_CRYPTO_ECB=y
867# CONFIG_CRYPTO_LRW is not set
868CONFIG_CRYPTO_PCBC=y
869# CONFIG_CRYPTO_XTS is not set
870
871#
872# Hash modes
873#
874# CONFIG_CRYPTO_HMAC is not set
875# CONFIG_CRYPTO_XCBC is not set
876
877#
878# Digest
879#
880# CONFIG_CRYPTO_CRC32C is not set
881# CONFIG_CRYPTO_MD4 is not set
882CONFIG_CRYPTO_MD5=y
883# CONFIG_CRYPTO_MICHAEL_MIC is not set
884# CONFIG_CRYPTO_RMD128 is not set
885# CONFIG_CRYPTO_RMD160 is not set
886# CONFIG_CRYPTO_RMD256 is not set
887# CONFIG_CRYPTO_RMD320 is not set
888# CONFIG_CRYPTO_SHA1 is not set
889# CONFIG_CRYPTO_SHA256 is not set
890# CONFIG_CRYPTO_SHA512 is not set
891# CONFIG_CRYPTO_TGR192 is not set
892# CONFIG_CRYPTO_WP512 is not set
893
894#
895# Ciphers
896#
897# CONFIG_CRYPTO_AES is not set
898# CONFIG_CRYPTO_ANUBIS is not set
899# CONFIG_CRYPTO_ARC4 is not set
900# CONFIG_CRYPTO_BLOWFISH is not set
901# CONFIG_CRYPTO_CAMELLIA is not set
902# CONFIG_CRYPTO_CAST5 is not set
903# CONFIG_CRYPTO_CAST6 is not set
904CONFIG_CRYPTO_DES=y
905# CONFIG_CRYPTO_FCRYPT is not set
906# CONFIG_CRYPTO_KHAZAD is not set
907# CONFIG_CRYPTO_SALSA20 is not set
908# CONFIG_CRYPTO_SEED is not set
909# CONFIG_CRYPTO_SERPENT is not set
910# CONFIG_CRYPTO_TEA is not set
911# CONFIG_CRYPTO_TWOFISH is not set
912
913#
914# Compression
915#
916# CONFIG_CRYPTO_DEFLATE is not set
917# CONFIG_CRYPTO_LZO is not set
918CONFIG_CRYPTO_HW=y
919# CONFIG_CRYPTO_DEV_HIFN_795X is not set
920# CONFIG_PPC_CLOCK is not set
921# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/40x/hcu4_defconfig b/arch/powerpc/configs/40x/hcu4_defconfig
new file mode 100644
index 000000000000..682fce02c73a
--- /dev/null
+++ b/arch/powerpc/configs/40x/hcu4_defconfig
@@ -0,0 +1,929 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26.5
4# Tue Sep 16 00:44:33 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set
14CONFIG_40x=y
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_4xx=y
18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
22CONFIG_PPC_MERGE=y
23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
30CONFIG_IRQ_PER_CPU=y
31CONFIG_STACKTRACE_SUPPORT=y
32CONFIG_LOCKDEP_SUPPORT=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_GENERIC_HWEIGHT=y
36CONFIG_GENERIC_CALIBRATE_DELAY=y
37CONFIG_GENERIC_FIND_NEXT_BIT=y
38# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
39CONFIG_PPC=y
40CONFIG_EARLY_PRINTK=y
41CONFIG_GENERIC_NVRAM=y
42CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
43CONFIG_ARCH_MAY_HAVE_PC_FDC=y
44CONFIG_PPC_OF=y
45CONFIG_OF=y
46CONFIG_PPC_UDBG_16550=y
47# CONFIG_GENERIC_TBSYNC is not set
48CONFIG_AUDIT_ARCH=y
49CONFIG_GENERIC_BUG=y
50# CONFIG_DEFAULT_UIMAGE is not set
51CONFIG_PPC_DCR_NATIVE=y
52# CONFIG_PPC_DCR_MMIO is not set
53CONFIG_PPC_DCR=y
54CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
55
56#
57# General setup
58#
59CONFIG_EXPERIMENTAL=y
60CONFIG_BROKEN_ON_SMP=y
61CONFIG_INIT_ENV_ARG_LIMIT=32
62CONFIG_LOCALVERSION=""
63CONFIG_LOCALVERSION_AUTO=y
64CONFIG_SWAP=y
65CONFIG_SYSVIPC=y
66CONFIG_SYSVIPC_SYSCTL=y
67CONFIG_POSIX_MQUEUE=y
68# CONFIG_BSD_PROCESS_ACCT is not set
69# CONFIG_TASKSTATS is not set
70# CONFIG_AUDIT is not set
71# CONFIG_IKCONFIG is not set
72CONFIG_LOG_BUF_SHIFT=14
73# CONFIG_CGROUPS is not set
74CONFIG_GROUP_SCHED=y
75CONFIG_FAIR_GROUP_SCHED=y
76# CONFIG_RT_GROUP_SCHED is not set
77CONFIG_USER_SCHED=y
78# CONFIG_CGROUP_SCHED is not set
79CONFIG_SYSFS_DEPRECATED=y
80CONFIG_SYSFS_DEPRECATED_V2=y
81# CONFIG_RELAY is not set
82# CONFIG_NAMESPACES is not set
83CONFIG_BLK_DEV_INITRD=y
84CONFIG_INITRAMFS_SOURCE=""
85# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
86CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y
89CONFIG_SYSCTL_SYSCALL_CHECK=y
90CONFIG_KALLSYMS=y
91CONFIG_KALLSYMS_ALL=y
92CONFIG_KALLSYMS_EXTRA_PASS=y
93CONFIG_HOTPLUG=y
94CONFIG_PRINTK=y
95# CONFIG_LOGBUFFER is not set
96CONFIG_BUG=y
97CONFIG_ELF_CORE=y
98CONFIG_COMPAT_BRK=y
99CONFIG_BASE_FULL=y
100CONFIG_FUTEX=y
101CONFIG_ANON_INODES=y
102CONFIG_EPOLL=y
103CONFIG_SIGNALFD=y
104CONFIG_TIMERFD=y
105CONFIG_EVENTFD=y
106CONFIG_SHMEM=y
107CONFIG_VM_EVENT_COUNTERS=y
108CONFIG_SLUB_DEBUG=y
109# CONFIG_SLAB is not set
110CONFIG_SLUB=y
111# CONFIG_SLOB is not set
112# CONFIG_PROFILING is not set
113# CONFIG_MARKERS is not set
114CONFIG_HAVE_OPROFILE=y
115# CONFIG_KPROBES is not set
116CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y
118# CONFIG_HAVE_DMA_ATTRS is not set
119CONFIG_PROC_PAGE_MONITOR=y
120CONFIG_SLABINFO=y
121CONFIG_RT_MUTEXES=y
122# CONFIG_TINY_SHMEM is not set
123CONFIG_BASE_SMALL=0
124CONFIG_MODULES=y
125# CONFIG_MODULE_FORCE_LOAD is not set
126CONFIG_MODULE_UNLOAD=y
127# CONFIG_MODULE_FORCE_UNLOAD is not set
128# CONFIG_MODVERSIONS is not set
129# CONFIG_MODULE_SRCVERSION_ALL is not set
130CONFIG_KMOD=y
131CONFIG_BLOCK=y
132CONFIG_LBD=y
133# CONFIG_BLK_DEV_IO_TRACE is not set
134# CONFIG_LSF is not set
135# CONFIG_BLK_DEV_BSG is not set
136
137#
138# IO Schedulers
139#
140CONFIG_IOSCHED_NOOP=y
141CONFIG_IOSCHED_AS=y
142CONFIG_IOSCHED_DEADLINE=y
143CONFIG_IOSCHED_CFQ=y
144CONFIG_DEFAULT_AS=y
145# CONFIG_DEFAULT_DEADLINE is not set
146# CONFIG_DEFAULT_CFQ is not set
147# CONFIG_DEFAULT_NOOP is not set
148CONFIG_DEFAULT_IOSCHED="anticipatory"
149CONFIG_CLASSIC_RCU=y
150# CONFIG_PPC4xx_PCI_EXPRESS is not set
151
152#
153# Platform support
154#
155# CONFIG_PPC_MPC512x is not set
156# CONFIG_PPC_MPC5121 is not set
157# CONFIG_PPC_CELL is not set
158# CONFIG_PPC_CELL_NATIVE is not set
159# CONFIG_PQ2ADS is not set
160# CONFIG_EP405 is not set
161CONFIG_HCU4=y
162# CONFIG_KILAUEA is not set
163# CONFIG_MAKALU is not set
164# CONFIG_WALNUT is not set
165# CONFIG_XILINX_VIRTEX_GENERIC_BOARD is not set
166# CONFIG_IPIC is not set
167# CONFIG_MPIC is not set
168# CONFIG_MPIC_WEIRD is not set
169# CONFIG_PPC_I8259 is not set
170# CONFIG_PPC_RTAS is not set
171# CONFIG_MMIO_NVRAM is not set
172# CONFIG_PPC_MPC106 is not set
173# CONFIG_PPC_970_NAP is not set
174# CONFIG_PPC_INDIRECT_IO is not set
175# CONFIG_GENERIC_IOMAP is not set
176# CONFIG_CPU_FREQ is not set
177# CONFIG_FSL_ULI1575 is not set
178
179#
180# Kernel options
181#
182# CONFIG_HIGHMEM is not set
183# CONFIG_TICK_ONESHOT is not set
184# CONFIG_NO_HZ is not set
185# CONFIG_HIGH_RES_TIMERS is not set
186CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
187# CONFIG_HZ_100 is not set
188CONFIG_HZ_250=y
189# CONFIG_HZ_300 is not set
190# CONFIG_HZ_1000 is not set
191CONFIG_HZ=250
192# CONFIG_SCHED_HRTICK is not set
193CONFIG_PREEMPT_NONE=y
194# CONFIG_PREEMPT_VOLUNTARY is not set
195# CONFIG_PREEMPT is not set
196CONFIG_BINFMT_ELF=y
197# CONFIG_BINFMT_MISC is not set
198# CONFIG_MATH_EMULATION is not set
199# CONFIG_IOMMU_HELPER is not set
200CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
201CONFIG_ARCH_HAS_WALK_MEMORY=y
202CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
203CONFIG_ARCH_FLATMEM_ENABLE=y
204CONFIG_ARCH_POPULATES_NODE_MAP=y
205CONFIG_SELECT_MEMORY_MODEL=y
206CONFIG_FLATMEM_MANUAL=y
207# CONFIG_DISCONTIGMEM_MANUAL is not set
208# CONFIG_SPARSEMEM_MANUAL is not set
209CONFIG_FLATMEM=y
210CONFIG_FLAT_NODE_MEM_MAP=y
211# CONFIG_SPARSEMEM_STATIC is not set
212# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
213CONFIG_PAGEFLAGS_EXTENDED=y
214CONFIG_SPLIT_PTLOCK_CPUS=4
215CONFIG_RESOURCES_64BIT=y
216CONFIG_ZONE_DMA_FLAG=1
217CONFIG_BOUNCE=y
218CONFIG_VIRT_TO_BUS=y
219CONFIG_FORCE_MAX_ZONEORDER=11
220CONFIG_PROC_DEVICETREE=y
221# CONFIG_CMDLINE_BOOL is not set
222# CONFIG_PM is not set
223CONFIG_SECCOMP=y
224CONFIG_ISA_DMA_API=y
225
226#
227# Bus options
228#
229CONFIG_ZONE_DMA=y
230CONFIG_PPC_INDIRECT_PCI=y
231CONFIG_4xx_SOC=y
232CONFIG_PCI=y
233CONFIG_PCI_DOMAINS=y
234CONFIG_PCI_SYSCALL=y
235# CONFIG_PCIEPORTBUS is not set
236CONFIG_ARCH_SUPPORTS_MSI=y
237# CONFIG_PCI_MSI is not set
238# CONFIG_PCI_LEGACY is not set
239# CONFIG_PCI_DEBUG is not set
240# CONFIG_PCCARD is not set
241# CONFIG_HOTPLUG_PCI is not set
242# CONFIG_HAS_RAPIDIO is not set
243
244#
245# Advanced setup
246#
247# CONFIG_ADVANCED_OPTIONS is not set
248
249#
250# Default settings for advanced configuration options are used
251#
252CONFIG_LOWMEM_SIZE=0x30000000
253CONFIG_PAGE_OFFSET=0xc0000000
254CONFIG_KERNEL_START=0xc0000000
255CONFIG_PHYSICAL_START=0x00000000
256CONFIG_TASK_SIZE=0xc0000000
257CONFIG_CONSISTENT_START=0xff100000
258CONFIG_CONSISTENT_SIZE=0x00200000
259
260#
261# Networking
262#
263CONFIG_NET=y
264
265#
266# Networking options
267#
268CONFIG_PACKET=y
269# CONFIG_PACKET_MMAP is not set
270CONFIG_UNIX=y
271# CONFIG_NET_KEY is not set
272CONFIG_INET=y
273# CONFIG_IP_MULTICAST is not set
274# CONFIG_IP_ADVANCED_ROUTER is not set
275CONFIG_IP_FIB_HASH=y
276CONFIG_IP_PNP=y
277CONFIG_IP_PNP_DHCP=y
278CONFIG_IP_PNP_BOOTP=y
279# CONFIG_IP_PNP_RARP is not set
280# CONFIG_NET_IPIP is not set
281# CONFIG_NET_IPGRE is not set
282# CONFIG_ARPD is not set
283# CONFIG_SYN_COOKIES is not set
284# CONFIG_INET_AH is not set
285# CONFIG_INET_ESP is not set
286# CONFIG_INET_IPCOMP is not set
287# CONFIG_INET_XFRM_TUNNEL is not set
288# CONFIG_INET_TUNNEL is not set
289# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
290# CONFIG_INET_XFRM_MODE_TUNNEL is not set
291# CONFIG_INET_XFRM_MODE_BEET is not set
292# CONFIG_INET_LRO is not set
293CONFIG_INET_DIAG=y
294CONFIG_INET_TCP_DIAG=y
295# CONFIG_TCP_CONG_ADVANCED is not set
296CONFIG_TCP_CONG_CUBIC=y
297CONFIG_DEFAULT_TCP_CONG="cubic"
298# CONFIG_TCP_MD5SIG is not set
299# CONFIG_IPV6 is not set
300# CONFIG_NETWORK_SECMARK is not set
301# CONFIG_NETFILTER is not set
302# CONFIG_IP_DCCP is not set
303# CONFIG_IP_SCTP is not set
304# CONFIG_TIPC is not set
305# CONFIG_ATM is not set
306# CONFIG_BRIDGE is not set
307# CONFIG_VLAN_8021Q is not set
308# CONFIG_DECNET is not set
309# CONFIG_LLC2 is not set
310# CONFIG_IPX is not set
311# CONFIG_ATALK is not set
312# CONFIG_X25 is not set
313# CONFIG_LAPB is not set
314# CONFIG_ECONET is not set
315# CONFIG_WAN_ROUTER is not set
316# CONFIG_NET_SCHED is not set
317
318#
319# Network testing
320#
321# CONFIG_NET_PKTGEN is not set
322# CONFIG_HAMRADIO is not set
323# CONFIG_CAN is not set
324# CONFIG_IRDA is not set
325# CONFIG_BT is not set
326# CONFIG_AF_RXRPC is not set
327
328#
329# Wireless
330#
331# CONFIG_CFG80211 is not set
332# CONFIG_WIRELESS_EXT is not set
333# CONFIG_MAC80211 is not set
334# CONFIG_IEEE80211 is not set
335# CONFIG_RFKILL is not set
336# CONFIG_NET_9P is not set
337
338#
339# Device Drivers
340#
341
342#
343# Generic Driver Options
344#
345CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
346CONFIG_STANDALONE=y
347CONFIG_PREVENT_FIRMWARE_BUILD=y
348CONFIG_FW_LOADER=y
349# CONFIG_DEBUG_DRIVER is not set
350# CONFIG_DEBUG_DEVRES is not set
351# CONFIG_SYS_HYPERVISOR is not set
352CONFIG_CONNECTOR=y
353CONFIG_PROC_EVENTS=y
354CONFIG_MTD=y
355# CONFIG_MTD_DEBUG is not set
356# CONFIG_MTD_CONCAT is not set
357CONFIG_MTD_PARTITIONS=y
358# CONFIG_MTD_REDBOOT_PARTS is not set
359CONFIG_MTD_CMDLINE_PARTS=y
360CONFIG_MTD_OF_PARTS=y
361# CONFIG_MTD_AR7_PARTS is not set
362
363#
364# User Modules And Translation Layers
365#
366CONFIG_MTD_CHAR=y
367CONFIG_MTD_BLKDEVS=m
368CONFIG_MTD_BLOCK=m
369# CONFIG_MTD_BLOCK_RO is not set
370# CONFIG_FTL is not set
371# CONFIG_NFTL is not set
372# CONFIG_INFTL is not set
373# CONFIG_RFD_FTL is not set
374# CONFIG_SSFDC is not set
375# CONFIG_MTD_OOPS is not set
376
377#
378# RAM/ROM/Flash chip drivers
379#
380CONFIG_MTD_CFI=y
381CONFIG_MTD_JEDECPROBE=y
382CONFIG_MTD_GEN_PROBE=y
383# CONFIG_MTD_CFI_ADV_OPTIONS is not set
384CONFIG_MTD_MAP_BANK_WIDTH_1=y
385CONFIG_MTD_MAP_BANK_WIDTH_2=y
386CONFIG_MTD_MAP_BANK_WIDTH_4=y
387# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
388# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
389# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
390CONFIG_MTD_CFI_I1=y
391CONFIG_MTD_CFI_I2=y
392# CONFIG_MTD_CFI_I4 is not set
393# CONFIG_MTD_CFI_I8 is not set
394# CONFIG_MTD_CFI_INTELEXT is not set
395CONFIG_MTD_CFI_AMDSTD=y
396# CONFIG_MTD_CFI_STAA is not set
397CONFIG_MTD_CFI_UTIL=y
398# CONFIG_MTD_RAM is not set
399# CONFIG_MTD_ROM is not set
400# CONFIG_MTD_ABSENT is not set
401
402#
403# Mapping drivers for chip access
404#
405# CONFIG_MTD_COMPLEX_MAPPINGS is not set
406# CONFIG_MTD_PHYSMAP is not set
407CONFIG_MTD_PHYSMAP_OF=y
408# CONFIG_MTD_INTEL_VR_NOR is not set
409# CONFIG_MTD_PLATRAM is not set
410
411#
412# Self-contained MTD device drivers
413#
414# CONFIG_MTD_PMC551 is not set
415# CONFIG_MTD_SLRAM is not set
416# CONFIG_MTD_PHRAM is not set
417# CONFIG_MTD_MTDRAM is not set
418# CONFIG_MTD_BLOCK2MTD is not set
419
420#
421# Disk-On-Chip Device Drivers
422#
423# CONFIG_MTD_DOC2000 is not set
424# CONFIG_MTD_DOC2001 is not set
425# CONFIG_MTD_DOC2001PLUS is not set
426# CONFIG_MTD_NAND is not set
427# CONFIG_MTD_ONENAND is not set
428
429#
430# UBI - Unsorted block images
431#
432# CONFIG_MTD_UBI is not set
433CONFIG_OF_DEVICE=y
434# CONFIG_PARPORT is not set
435CONFIG_BLK_DEV=y
436# CONFIG_BLK_DEV_FD is not set
437# CONFIG_BLK_CPQ_DA is not set
438# CONFIG_BLK_CPQ_CISS_DA is not set
439# CONFIG_BLK_DEV_DAC960 is not set
440# CONFIG_BLK_DEV_UMEM is not set
441# CONFIG_BLK_DEV_COW_COMMON is not set
442# CONFIG_BLK_DEV_LOOP is not set
443# CONFIG_BLK_DEV_NBD is not set
444# CONFIG_BLK_DEV_SX8 is not set
445CONFIG_BLK_DEV_RAM=y
446CONFIG_BLK_DEV_RAM_COUNT=16
447CONFIG_BLK_DEV_RAM_SIZE=35000
448# CONFIG_BLK_DEV_XIP is not set
449# CONFIG_CDROM_PKTCDVD is not set
450# CONFIG_ATA_OVER_ETH is not set
451# CONFIG_XILINX_SYSACE is not set
452CONFIG_MISC_DEVICES=y
453# CONFIG_PHANTOM is not set
454# CONFIG_EEPROM_93CX6 is not set
455# CONFIG_SGI_IOC4 is not set
456# CONFIG_TIFM_CORE is not set
457# CONFIG_ENCLOSURE_SERVICES is not set
458CONFIG_HAVE_IDE=y
459# CONFIG_IDE is not set
460
461#
462# SCSI device support
463#
464# CONFIG_RAID_ATTRS is not set
465# CONFIG_SCSI is not set
466# CONFIG_SCSI_DMA is not set
467# CONFIG_SCSI_NETLINK is not set
468# CONFIG_ATA is not set
469# CONFIG_MD is not set
470# CONFIG_FUSION is not set
471
472#
473# IEEE 1394 (FireWire) support
474#
475
476#
477# Enable only one of the two stacks, unless you know what you are doing
478#
479# CONFIG_FIREWIRE is not set
480# CONFIG_IEEE1394 is not set
481# CONFIG_I2O is not set
482# CONFIG_MACINTOSH_DRIVERS is not set
483CONFIG_NETDEVICES=y
484# CONFIG_NETDEVICES_MULTIQUEUE is not set
485# CONFIG_DUMMY is not set
486# CONFIG_BONDING is not set
487# CONFIG_MACVLAN is not set
488# CONFIG_EQUALIZER is not set
489# CONFIG_TUN is not set
490# CONFIG_VETH is not set
491# CONFIG_ARCNET is not set
492# CONFIG_PHYLIB is not set
493CONFIG_NET_ETHERNET=y
494# CONFIG_MII is not set
495# CONFIG_HAPPYMEAL is not set
496# CONFIG_SUNGEM is not set
497# CONFIG_CASSINI is not set
498# CONFIG_NET_VENDOR_3COM is not set
499# CONFIG_NET_TULIP is not set
500# CONFIG_HP100 is not set
501CONFIG_IBM_NEW_EMAC=y
502CONFIG_IBM_NEW_EMAC_RXB=128
503CONFIG_IBM_NEW_EMAC_TXB=64
504CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
505CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
506CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
507# CONFIG_IBM_NEW_EMAC_DEBUG is not set
508# CONFIG_IBM_NEW_EMAC_ZMII is not set
509# CONFIG_IBM_NEW_EMAC_RGMII is not set
510# CONFIG_IBM_NEW_EMAC_TAH is not set
511# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
512# CONFIG_NET_PCI is not set
513# CONFIG_B44 is not set
514CONFIG_NETDEV_1000=y
515# CONFIG_ACENIC is not set
516# CONFIG_DL2K is not set
517# CONFIG_E1000 is not set
518# CONFIG_E1000E is not set
519# CONFIG_E1000E_ENABLED is not set
520# CONFIG_IP1000 is not set
521# CONFIG_IGB is not set
522# CONFIG_NS83820 is not set
523# CONFIG_HAMACHI is not set
524# CONFIG_YELLOWFIN is not set
525# CONFIG_R8169 is not set
526# CONFIG_SIS190 is not set
527# CONFIG_SKGE is not set
528# CONFIG_SKY2 is not set
529# CONFIG_VIA_VELOCITY is not set
530# CONFIG_TIGON3 is not set
531# CONFIG_BNX2 is not set
532# CONFIG_QLA3XXX is not set
533# CONFIG_ATL1 is not set
534CONFIG_NETDEV_10000=y
535# CONFIG_CHELSIO_T1 is not set
536# CONFIG_CHELSIO_T3 is not set
537# CONFIG_IXGBE is not set
538# CONFIG_IXGB is not set
539# CONFIG_S2IO is not set
540# CONFIG_MYRI10GE is not set
541# CONFIG_NETXEN_NIC is not set
542# CONFIG_NIU is not set
543# CONFIG_MLX4_CORE is not set
544# CONFIG_TEHUTI is not set
545# CONFIG_BNX2X is not set
546# CONFIG_SFC is not set
547# CONFIG_TR is not set
548
549#
550# Wireless LAN
551#
552# CONFIG_WLAN_PRE80211 is not set
553# CONFIG_WLAN_80211 is not set
554# CONFIG_IWLWIFI_LEDS is not set
555# CONFIG_WAN is not set
556# CONFIG_FDDI is not set
557# CONFIG_HIPPI is not set
558# CONFIG_PPP is not set
559# CONFIG_SLIP is not set
560# CONFIG_NETCONSOLE is not set
561# CONFIG_NETPOLL is not set
562# CONFIG_NET_POLL_CONTROLLER is not set
563# CONFIG_ISDN is not set
564# CONFIG_PHONE is not set
565
566#
567# Input device support
568#
569# CONFIG_INPUT is not set
570
571#
572# Hardware I/O ports
573#
574# CONFIG_SERIO is not set
575# CONFIG_GAMEPORT is not set
576
577#
578# Character devices
579#
580# CONFIG_VT is not set
581CONFIG_DEVKMEM=y
582# CONFIG_SERIAL_NONSTANDARD is not set
583# CONFIG_NOZOMI is not set
584
585#
586# Serial drivers
587#
588CONFIG_SERIAL_8250=y
589CONFIG_SERIAL_8250_CONSOLE=y
590CONFIG_SERIAL_8250_PCI=y
591CONFIG_SERIAL_8250_NR_UARTS=4
592CONFIG_SERIAL_8250_RUNTIME_UARTS=4
593CONFIG_SERIAL_8250_EXTENDED=y
594# CONFIG_SERIAL_8250_MANY_PORTS is not set
595CONFIG_SERIAL_8250_SHARE_IRQ=y
596# CONFIG_SERIAL_8250_DETECT_IRQ is not set
597# CONFIG_SERIAL_8250_RSA is not set
598
599#
600# Non-8250 serial port support
601#
602# CONFIG_SERIAL_UARTLITE is not set
603CONFIG_SERIAL_CORE=y
604CONFIG_SERIAL_CORE_CONSOLE=y
605# CONFIG_SERIAL_JSM is not set
606CONFIG_SERIAL_OF_PLATFORM=y
607CONFIG_UNIX98_PTYS=y
608CONFIG_LEGACY_PTYS=y
609CONFIG_LEGACY_PTY_COUNT=256
610# CONFIG_IPMI_HANDLER is not set
611# CONFIG_HW_RANDOM is not set
612# CONFIG_NVRAM is not set
613# CONFIG_GEN_RTC is not set
614# CONFIG_R3964 is not set
615# CONFIG_APPLICOM is not set
616# CONFIG_RAW_DRIVER is not set
617# CONFIG_TCG_TPM is not set
618CONFIG_DEVPORT=y
619# CONFIG_I2C is not set
620# CONFIG_SPI is not set
621# CONFIG_W1 is not set
622# CONFIG_POWER_SUPPLY is not set
623# CONFIG_HWMON is not set
624# CONFIG_THERMAL is not set
625# CONFIG_THERMAL_HWMON is not set
626# CONFIG_WATCHDOG is not set
627
628#
629# Sonics Silicon Backplane
630#
631CONFIG_SSB_POSSIBLE=y
632# CONFIG_SSB is not set
633
634#
635# Multifunction device drivers
636#
637# CONFIG_MFD_SM501 is not set
638# CONFIG_HTC_PASIC3 is not set
639
640#
641# Multimedia devices
642#
643
644#
645# Multimedia core support
646#
647# CONFIG_VIDEO_DEV is not set
648# CONFIG_DVB_CORE is not set
649# CONFIG_VIDEO_MEDIA is not set
650
651#
652# Multimedia drivers
653#
654# CONFIG_DAB is not set
655
656#
657# Graphics support
658#
659# CONFIG_AGP is not set
660# CONFIG_DRM is not set
661# CONFIG_VGASTATE is not set
662CONFIG_VIDEO_OUTPUT_CONTROL=m
663# CONFIG_FB is not set
664# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
665
666#
667# Display device support
668#
669# CONFIG_DISPLAY_SUPPORT is not set
670
671#
672# Sound
673#
674# CONFIG_SOUND is not set
675# CONFIG_USB_SUPPORT is not set
676# CONFIG_MMC is not set
677# CONFIG_MEMSTICK is not set
678# CONFIG_NEW_LEDS is not set
679# CONFIG_ACCESSIBILITY is not set
680# CONFIG_INFINIBAND is not set
681# CONFIG_EDAC is not set
682# CONFIG_RTC_CLASS is not set
683# CONFIG_DMADEVICES is not set
684# CONFIG_UIO is not set
685
686#
687# File systems
688#
689CONFIG_EXT2_FS=y
690# CONFIG_EXT2_FS_XATTR is not set
691# CONFIG_EXT2_FS_XIP is not set
692# CONFIG_EXT3_FS is not set
693# CONFIG_EXT4DEV_FS is not set
694# CONFIG_REISERFS_FS is not set
695# CONFIG_JFS_FS is not set
696# CONFIG_FS_POSIX_ACL is not set
697# CONFIG_XFS_FS is not set
698# CONFIG_OCFS2_FS is not set
699CONFIG_DNOTIFY=y
700CONFIG_INOTIFY=y
701CONFIG_INOTIFY_USER=y
702# CONFIG_QUOTA is not set
703# CONFIG_AUTOFS_FS is not set
704# CONFIG_AUTOFS4_FS is not set
705# CONFIG_FUSE_FS is not set
706
707#
708# CD-ROM/DVD Filesystems
709#
710# CONFIG_ISO9660_FS is not set
711# CONFIG_UDF_FS is not set
712
713#
714# DOS/FAT/NT Filesystems
715#
716# CONFIG_MSDOS_FS is not set
717# CONFIG_VFAT_FS is not set
718# CONFIG_NTFS_FS is not set
719
720#
721# Pseudo filesystems
722#
723CONFIG_PROC_FS=y
724CONFIG_PROC_KCORE=y
725CONFIG_PROC_SYSCTL=y
726CONFIG_SYSFS=y
727CONFIG_TMPFS=y
728# CONFIG_TMPFS_POSIX_ACL is not set
729# CONFIG_HUGETLB_PAGE is not set
730# CONFIG_CONFIGFS_FS is not set
731
732#
733# Miscellaneous filesystems
734#
735# CONFIG_ADFS_FS is not set
736# CONFIG_AFFS_FS is not set
737# CONFIG_HFS_FS is not set
738# CONFIG_HFSPLUS_FS is not set
739# CONFIG_BEFS_FS is not set
740# CONFIG_BFS_FS is not set
741# CONFIG_EFS_FS is not set
742# CONFIG_YAFFS_FS is not set
743# CONFIG_JFFS2_FS is not set
744CONFIG_CRAMFS=y
745# CONFIG_VXFS_FS is not set
746# CONFIG_MINIX_FS is not set
747# CONFIG_HPFS_FS is not set
748# CONFIG_QNX4FS_FS is not set
749# CONFIG_ROMFS_FS is not set
750# CONFIG_SYSV_FS is not set
751# CONFIG_UFS_FS is not set
752CONFIG_NETWORK_FILESYSTEMS=y
753CONFIG_NFS_FS=y
754CONFIG_NFS_V3=y
755# CONFIG_NFS_V3_ACL is not set
756# CONFIG_NFS_V4 is not set
757# CONFIG_NFSD is not set
758CONFIG_ROOT_NFS=y
759CONFIG_LOCKD=y
760CONFIG_LOCKD_V4=y
761CONFIG_NFS_COMMON=y
762CONFIG_SUNRPC=y
763# CONFIG_SUNRPC_BIND34 is not set
764# CONFIG_RPCSEC_GSS_KRB5 is not set
765# CONFIG_RPCSEC_GSS_SPKM3 is not set
766# CONFIG_SMB_FS is not set
767# CONFIG_CIFS is not set
768# CONFIG_NCP_FS is not set
769# CONFIG_CODA_FS is not set
770# CONFIG_AFS_FS is not set
771
772#
773# Partition Types
774#
775# CONFIG_PARTITION_ADVANCED is not set
776CONFIG_MSDOS_PARTITION=y
777# CONFIG_NLS is not set
778# CONFIG_DLM is not set
779
780#
781# Library routines
782#
783CONFIG_BITREVERSE=y
784# CONFIG_GENERIC_FIND_FIRST_BIT is not set
785# CONFIG_CRC_CCITT is not set
786# CONFIG_CRC16 is not set
787# CONFIG_CRC_ITU_T is not set
788CONFIG_CRC32=y
789# CONFIG_CRC7 is not set
790# CONFIG_LIBCRC32C is not set
791CONFIG_ZLIB_INFLATE=y
792CONFIG_PLIST=y
793CONFIG_HAS_IOMEM=y
794CONFIG_HAS_IOPORT=y
795CONFIG_HAS_DMA=y
796CONFIG_HAVE_LMB=y
797
798#
799# Kernel hacking
800#
801# CONFIG_PRINTK_TIME is not set
802CONFIG_ENABLE_WARN_DEPRECATED=y
803CONFIG_ENABLE_MUST_CHECK=y
804CONFIG_FRAME_WARN=1024
805CONFIG_MAGIC_SYSRQ=y
806# CONFIG_UNUSED_SYMBOLS is not set
807CONFIG_DEBUG_FS=y
808# CONFIG_HEADERS_CHECK is not set
809CONFIG_DEBUG_KERNEL=y
810# CONFIG_DEBUG_SHIRQ is not set
811CONFIG_DETECT_SOFTLOCKUP=y
812CONFIG_SCHED_DEBUG=y
813# CONFIG_SCHEDSTATS is not set
814# CONFIG_TIMER_STATS is not set
815# CONFIG_DEBUG_OBJECTS is not set
816# CONFIG_SLUB_DEBUG_ON is not set
817# CONFIG_SLUB_STATS is not set
818# CONFIG_DEBUG_RT_MUTEXES is not set
819# CONFIG_RT_MUTEX_TESTER is not set
820# CONFIG_DEBUG_SPINLOCK is not set
821# CONFIG_DEBUG_MUTEXES is not set
822# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
823# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
824# CONFIG_DEBUG_KOBJECT is not set
825CONFIG_DEBUG_BUGVERBOSE=y
826# CONFIG_DEBUG_INFO is not set
827# CONFIG_DEBUG_VM is not set
828# CONFIG_DEBUG_WRITECOUNT is not set
829# CONFIG_DEBUG_LIST is not set
830# CONFIG_DEBUG_SG is not set
831# CONFIG_BOOT_PRINTK_DELAY is not set
832# CONFIG_RCU_TORTURE_TEST is not set
833# CONFIG_BACKTRACE_SELF_TEST is not set
834# CONFIG_FAULT_INJECTION is not set
835# CONFIG_SAMPLES is not set
836# CONFIG_DEBUG_STACKOVERFLOW is not set
837# CONFIG_DEBUG_STACK_USAGE is not set
838# CONFIG_DEBUG_PAGEALLOC is not set
839# CONFIG_DEBUGGER is not set
840# CONFIG_IRQSTACKS is not set
841# CONFIG_VIRQ_DEBUG is not set
842# CONFIG_BDI_SWITCH is not set
843# CONFIG_PPC_EARLY_DEBUG is not set
844
845#
846# Security options
847#
848# CONFIG_KEYS is not set
849# CONFIG_SECURITY is not set
850# CONFIG_SECURITY_FILE_CAPABILITIES is not set
851CONFIG_CRYPTO=y
852
853#
854# Crypto core or helper
855#
856CONFIG_CRYPTO_ALGAPI=y
857CONFIG_CRYPTO_BLKCIPHER=y
858CONFIG_CRYPTO_MANAGER=y
859# CONFIG_CRYPTO_GF128MUL is not set
860# CONFIG_CRYPTO_NULL is not set
861# CONFIG_CRYPTO_CRYPTD is not set
862# CONFIG_CRYPTO_AUTHENC is not set
863# CONFIG_CRYPTO_TEST is not set
864
865#
866# Authenticated Encryption with Associated Data
867#
868# CONFIG_CRYPTO_CCM is not set
869# CONFIG_CRYPTO_GCM is not set
870# CONFIG_CRYPTO_SEQIV is not set
871
872#
873# Block modes
874#
875CONFIG_CRYPTO_CBC=y
876# CONFIG_CRYPTO_CTR is not set
877# CONFIG_CRYPTO_CTS is not set
878CONFIG_CRYPTO_ECB=y
879# CONFIG_CRYPTO_LRW is not set
880CONFIG_CRYPTO_PCBC=y
881# CONFIG_CRYPTO_XTS is not set
882
883#
884# Hash modes
885#
886# CONFIG_CRYPTO_HMAC is not set
887# CONFIG_CRYPTO_XCBC is not set
888
889#
890# Digest
891#
892# CONFIG_CRYPTO_CRC32C is not set
893# CONFIG_CRYPTO_MD4 is not set
894CONFIG_CRYPTO_MD5=y
895# CONFIG_CRYPTO_MICHAEL_MIC is not set
896# CONFIG_CRYPTO_SHA1 is not set
897# CONFIG_CRYPTO_SHA256 is not set
898# CONFIG_CRYPTO_SHA512 is not set
899# CONFIG_CRYPTO_TGR192 is not set
900# CONFIG_CRYPTO_WP512 is not set
901
902#
903# Ciphers
904#
905# CONFIG_CRYPTO_AES is not set
906# CONFIG_CRYPTO_ANUBIS is not set
907# CONFIG_CRYPTO_ARC4 is not set
908# CONFIG_CRYPTO_BLOWFISH is not set
909# CONFIG_CRYPTO_CAMELLIA is not set
910# CONFIG_CRYPTO_CAST5 is not set
911# CONFIG_CRYPTO_CAST6 is not set
912CONFIG_CRYPTO_DES=y
913# CONFIG_CRYPTO_FCRYPT is not set
914# CONFIG_CRYPTO_KHAZAD is not set
915# CONFIG_CRYPTO_SALSA20 is not set
916# CONFIG_CRYPTO_SEED is not set
917# CONFIG_CRYPTO_SERPENT is not set
918# CONFIG_CRYPTO_TEA is not set
919# CONFIG_CRYPTO_TWOFISH is not set
920
921#
922# Compression
923#
924# CONFIG_CRYPTO_DEFLATE is not set
925# CONFIG_CRYPTO_LZO is not set
926CONFIG_CRYPTO_HW=y
927# CONFIG_CRYPTO_DEV_HIFN_795X is not set
928# CONFIG_PPC_CLOCK is not set
929# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/include/asm/kdump.h b/arch/powerpc/include/asm/kdump.h
index f6c93c716898..a503da9d56f3 100644
--- a/arch/powerpc/include/asm/kdump.h
+++ b/arch/powerpc/include/asm/kdump.h
@@ -9,6 +9,12 @@
9 * Reserve to the end of the FWNMI area, see head_64.S */ 9 * Reserve to the end of the FWNMI area, see head_64.S */
10#define KDUMP_RESERVE_LIMIT 0x10000 /* 64K */ 10#define KDUMP_RESERVE_LIMIT 0x10000 /* 64K */
11 11
12/*
13 * Used to differentiate between relocatable kdump kernel and other
14 * kernels
15 */
16#define KDUMP_SIGNATURE 0xfeed1234
17
12#ifdef CONFIG_CRASH_DUMP 18#ifdef CONFIG_CRASH_DUMP
13 19
14#define KDUMP_TRAMPOLINE_START 0x0100 20#define KDUMP_TRAMPOLINE_START 0x0100
@@ -19,17 +25,18 @@
19#endif /* CONFIG_CRASH_DUMP */ 25#endif /* CONFIG_CRASH_DUMP */
20 26
21#ifndef __ASSEMBLY__ 27#ifndef __ASSEMBLY__
22#ifdef CONFIG_CRASH_DUMP
23 28
29extern unsigned long __kdump_flag;
30
31#if defined(CONFIG_CRASH_DUMP) && !defined(CONFIG_RELOCATABLE)
24extern void reserve_kdump_trampoline(void); 32extern void reserve_kdump_trampoline(void);
25extern void setup_kdump_trampoline(void); 33extern void setup_kdump_trampoline(void);
26 34#else
27#else /* !CONFIG_CRASH_DUMP */ 35/* !CRASH_DUMP || RELOCATABLE */
28
29static inline void reserve_kdump_trampoline(void) { ; } 36static inline void reserve_kdump_trampoline(void) { ; }
30static inline void setup_kdump_trampoline(void) { ; } 37static inline void setup_kdump_trampoline(void) { ; }
38#endif
31 39
32#endif /* CONFIG_CRASH_DUMP */
33#endif /* __ASSEMBLY__ */ 40#endif /* __ASSEMBLY__ */
34 41
35#endif /* __PPC64_KDUMP_H */ 42#endif /* __PPC64_KDUMP_H */
diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
index 5ac51e6efc1d..c0b8d4a29a91 100644
--- a/arch/powerpc/include/asm/page.h
+++ b/arch/powerpc/include/asm/page.h
@@ -77,6 +77,7 @@
77 77
78#if defined(CONFIG_RELOCATABLE) 78#if defined(CONFIG_RELOCATABLE)
79#ifndef __ASSEMBLY__ 79#ifndef __ASSEMBLY__
80
80extern phys_addr_t memstart_addr; 81extern phys_addr_t memstart_addr;
81extern phys_addr_t kernstart_addr; 82extern phys_addr_t kernstart_addr;
82#endif 83#endif
diff --git a/arch/powerpc/include/asm/signal.h b/arch/powerpc/include/asm/signal.h
index a7360cdd99eb..69f709d8e8e7 100644
--- a/arch/powerpc/include/asm/signal.h
+++ b/arch/powerpc/include/asm/signal.h
@@ -122,7 +122,6 @@ typedef struct sigaltstack {
122 122
123#ifdef __KERNEL__ 123#ifdef __KERNEL__
124struct pt_regs; 124struct pt_regs;
125extern void do_signal(struct pt_regs *regs, unsigned long thread_info_flags);
126#define ptrace_signal_deliver(regs, cookie) do { } while (0) 125#define ptrace_signal_deliver(regs, cookie) do { } while (0)
127#endif /* __KERNEL__ */ 126#endif /* __KERNEL__ */
128 127
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index e70d0483fb4e..b1eb834bc0fc 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -1277,6 +1277,19 @@ static struct cpu_spec __initdata cpu_specs[] = {
1277 .machine_check = machine_check_4xx, 1277 .machine_check = machine_check_4xx,
1278 .platform = "ppc405", 1278 .platform = "ppc405",
1279 }, 1279 },
1280 {
1281 /* 405EZ */
1282 .pvr_mask = 0xffff0000,
1283 .pvr_value = 0x41510000,
1284 .cpu_name = "405EZ",
1285 .cpu_features = CPU_FTRS_40X,
1286 .cpu_user_features = PPC_FEATURE_32 |
1287 PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
1288 .icache_bsize = 32,
1289 .dcache_bsize = 32,
1290 .machine_check = machine_check_4xx,
1291 .platform = "ppc405",
1292 },
1280 { /* default match */ 1293 { /* default match */
1281 .pvr_mask = 0x00000000, 1294 .pvr_mask = 0x00000000,
1282 .pvr_value = 0x00000000, 1295 .pvr_value = 0x00000000,
diff --git a/arch/powerpc/kernel/crash_dump.c b/arch/powerpc/kernel/crash_dump.c
index 97e056379728..19671aca6591 100644
--- a/arch/powerpc/kernel/crash_dump.c
+++ b/arch/powerpc/kernel/crash_dump.c
@@ -30,6 +30,7 @@
30/* Stores the physical address of elf header of crash image. */ 30/* Stores the physical address of elf header of crash image. */
31unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; 31unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX;
32 32
33#ifndef CONFIG_RELOCATABLE
33void __init reserve_kdump_trampoline(void) 34void __init reserve_kdump_trampoline(void)
34{ 35{
35 lmb_reserve(0, KDUMP_RESERVE_LIMIT); 36 lmb_reserve(0, KDUMP_RESERVE_LIMIT);
@@ -68,6 +69,7 @@ void __init setup_kdump_trampoline(void)
68 69
69 DBG(" <- setup_kdump_trampoline()\n"); 70 DBG(" <- setup_kdump_trampoline()\n");
70} 71}
72#endif /* CONFIG_RELOCATABLE */
71 73
72/* 74/*
73 * Note: elfcorehdr_addr is not just limited to vmcore. It is also used by 75 * Note: elfcorehdr_addr is not just limited to vmcore. It is also used by
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index 84856bee33a5..69489bd3210c 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -97,6 +97,12 @@ __secondary_hold_spinloop:
97__secondary_hold_acknowledge: 97__secondary_hold_acknowledge:
98 .llong 0x0 98 .llong 0x0
99 99
100 /* This flag is set by purgatory if we should be a kdump kernel. */
101 /* Do not move this variable as purgatory knows about it. */
102 .globl __kdump_flag
103__kdump_flag:
104 .llong 0x0
105
100#ifdef CONFIG_PPC_ISERIES 106#ifdef CONFIG_PPC_ISERIES
101 /* 107 /*
102 * At offset 0x20, there is a pointer to iSeries LPAR data. 108 * At offset 0x20, there is a pointer to iSeries LPAR data.
@@ -1384,7 +1390,13 @@ _STATIC(__after_prom_start)
1384 /* process relocations for the final address of the kernel */ 1390 /* process relocations for the final address of the kernel */
1385 lis r25,PAGE_OFFSET@highest /* compute virtual base of kernel */ 1391 lis r25,PAGE_OFFSET@highest /* compute virtual base of kernel */
1386 sldi r25,r25,32 1392 sldi r25,r25,32
1387 mr r3,r25 1393#ifdef CONFIG_CRASH_DUMP
1394 ld r7,__kdump_flag-_stext(r26)
1395 cmpldi cr0,r7,1 /* kdump kernel ? - stay where we are */
1396 bne 1f
1397 add r25,r25,r26
1398#endif
13991: mr r3,r25
1388 bl .relocate 1400 bl .relocate
1389#endif 1401#endif
1390 1402
@@ -1398,11 +1410,26 @@ _STATIC(__after_prom_start)
1398 li r3,0 /* target addr */ 1410 li r3,0 /* target addr */
1399 mr. r4,r26 /* In some cases the loader may */ 1411 mr. r4,r26 /* In some cases the loader may */
1400 beq 9f /* have already put us at zero */ 1412 beq 9f /* have already put us at zero */
1401 lis r5,(copy_to_here - _stext)@ha
1402 addi r5,r5,(copy_to_here - _stext)@l /* # bytes of memory to copy */
1403 li r6,0x100 /* Start offset, the first 0x100 */ 1413 li r6,0x100 /* Start offset, the first 0x100 */
1404 /* bytes were copied earlier. */ 1414 /* bytes were copied earlier. */
1405 1415
1416#ifdef CONFIG_CRASH_DUMP
1417/*
1418 * Check if the kernel has to be running as relocatable kernel based on the
1419 * variable __kdump_flag, if it is set the kernel is treated as relocatable
1420 * kernel, otherwise it will be moved to PHYSICAL_START
1421 */
1422 ld r7,__kdump_flag-_stext(r26)
1423 cmpldi cr0,r7,1
1424 bne 3f
1425
1426 li r5,__end_interrupts - _stext /* just copy interrupts */
1427 b 5f
14283:
1429#endif
1430 lis r5,(copy_to_here - _stext)@ha
1431 addi r5,r5,(copy_to_here - _stext)@l /* # bytes of memory to copy */
1432
1406 bl .copy_and_flush /* copy the first n bytes */ 1433 bl .copy_and_flush /* copy the first n bytes */
1407 /* this includes the code being */ 1434 /* this includes the code being */
1408 /* executed here. */ 1435 /* executed here. */
@@ -1411,15 +1438,15 @@ _STATIC(__after_prom_start)
1411 mtctr r8 1438 mtctr r8
1412 bctr 1439 bctr
1413 1440
1441p_end: .llong _end - _stext
1442
14144: /* Now copy the rest of the kernel up to _end */ 14434: /* Now copy the rest of the kernel up to _end */
1415 addis r5,r26,(p_end - _stext)@ha 1444 addis r5,r26,(p_end - _stext)@ha
1416 ld r5,(p_end - _stext)@l(r5) /* get _end */ 1445 ld r5,(p_end - _stext)@l(r5) /* get _end */
1417 bl .copy_and_flush /* copy the rest */ 14465: bl .copy_and_flush /* copy the rest */
1418 1447
14199: b .start_here_multiplatform 14489: b .start_here_multiplatform
1420 1449
1421p_end: .llong _end - _stext
1422
1423/* 1450/*
1424 * Copy routine used to copy the kernel to start at physical address 0 1451 * Copy routine used to copy the kernel to start at physical address 0
1425 * and flush and invalidate the caches as needed. 1452 * and flush and invalidate the caches as needed.
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index ea1ba89f9c90..3857d7e2af0c 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -458,6 +458,42 @@ void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist,
458 spin_unlock_irqrestore(&(tbl->it_lock), flags); 458 spin_unlock_irqrestore(&(tbl->it_lock), flags);
459} 459}
460 460
461static void iommu_table_clear(struct iommu_table *tbl)
462{
463 if (!__kdump_flag) {
464 /* Clear the table in case firmware left allocations in it */
465 ppc_md.tce_free(tbl, tbl->it_offset, tbl->it_size);
466 return;
467 }
468
469#ifdef CONFIG_CRASH_DUMP
470 if (ppc_md.tce_get) {
471 unsigned long index, tceval, tcecount = 0;
472
473 /* Reserve the existing mappings left by the first kernel. */
474 for (index = 0; index < tbl->it_size; index++) {
475 tceval = ppc_md.tce_get(tbl, index + tbl->it_offset);
476 /*
477 * Freed TCE entry contains 0x7fffffffffffffff on JS20
478 */
479 if (tceval && (tceval != 0x7fffffffffffffffUL)) {
480 __set_bit(index, tbl->it_map);
481 tcecount++;
482 }
483 }
484
485 if ((tbl->it_size - tcecount) < KDUMP_MIN_TCE_ENTRIES) {
486 printk(KERN_WARNING "TCE table is full; freeing ");
487 printk(KERN_WARNING "%d entries for the kdump boot\n",
488 KDUMP_MIN_TCE_ENTRIES);
489 for (index = tbl->it_size - KDUMP_MIN_TCE_ENTRIES;
490 index < tbl->it_size; index++)
491 __clear_bit(index, tbl->it_map);
492 }
493 }
494#endif
495}
496
461/* 497/*
462 * Build a iommu_table structure. This contains a bit map which 498 * Build a iommu_table structure. This contains a bit map which
463 * is used to manage allocation of the tce space. 499 * is used to manage allocation of the tce space.
@@ -484,38 +520,7 @@ struct iommu_table *iommu_init_table(struct iommu_table *tbl, int nid)
484 tbl->it_largehint = tbl->it_halfpoint; 520 tbl->it_largehint = tbl->it_halfpoint;
485 spin_lock_init(&tbl->it_lock); 521 spin_lock_init(&tbl->it_lock);
486 522
487#ifdef CONFIG_CRASH_DUMP 523 iommu_table_clear(tbl);
488 if (ppc_md.tce_get) {
489 unsigned long index;
490 unsigned long tceval;
491 unsigned long tcecount = 0;
492
493 /*
494 * Reserve the existing mappings left by the first kernel.
495 */
496 for (index = 0; index < tbl->it_size; index++) {
497 tceval = ppc_md.tce_get(tbl, index + tbl->it_offset);
498 /*
499 * Freed TCE entry contains 0x7fffffffffffffff on JS20
500 */
501 if (tceval && (tceval != 0x7fffffffffffffffUL)) {
502 __set_bit(index, tbl->it_map);
503 tcecount++;
504 }
505 }
506 if ((tbl->it_size - tcecount) < KDUMP_MIN_TCE_ENTRIES) {
507 printk(KERN_WARNING "TCE table is full; ");
508 printk(KERN_WARNING "freeing %d entries for the kdump boot\n",
509 KDUMP_MIN_TCE_ENTRIES);
510 for (index = tbl->it_size - KDUMP_MIN_TCE_ENTRIES;
511 index < tbl->it_size; index++)
512 __clear_bit(index, tbl->it_map);
513 }
514 }
515#else
516 /* Clear the hardware table in case firmware left allocations in it */
517 ppc_md.tce_free(tbl, tbl->it_offset, tbl->it_size);
518#endif
519 524
520 if (!welcomed) { 525 if (!welcomed) {
521 printk(KERN_INFO "IOMMU table initialized, virtual merging %s\n", 526 printk(KERN_INFO "IOMMU table initialized, virtual merging %s\n",
diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c
index aab76887a842..ac2a21f45c75 100644
--- a/arch/powerpc/kernel/machine_kexec.c
+++ b/arch/powerpc/kernel/machine_kexec.c
@@ -88,11 +88,13 @@ void __init reserve_crashkernel(void)
88 88
89 crash_size = crashk_res.end - crashk_res.start + 1; 89 crash_size = crashk_res.end - crashk_res.start + 1;
90 90
91#ifndef CONFIG_RELOCATABLE
91 if (crashk_res.start != KDUMP_KERNELBASE) 92 if (crashk_res.start != KDUMP_KERNELBASE)
92 printk("Crash kernel location must be 0x%x\n", 93 printk("Crash kernel location must be 0x%x\n",
93 KDUMP_KERNELBASE); 94 KDUMP_KERNELBASE);
94 95
95 crashk_res.start = KDUMP_KERNELBASE; 96 crashk_res.start = KDUMP_KERNELBASE;
97#endif
96 crash_size = PAGE_ALIGN(crash_size); 98 crash_size = PAGE_ALIGN(crash_size);
97 crashk_res.end = crashk_res.start + crash_size - 1; 99 crashk_res.end = crashk_res.start + crash_size - 1;
98 100
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c
index a168514d8609..e6efec788c4d 100644
--- a/arch/powerpc/kernel/machine_kexec_64.c
+++ b/arch/powerpc/kernel/machine_kexec_64.c
@@ -255,11 +255,14 @@ static union thread_union kexec_stack
255/* Our assembly helper, in kexec_stub.S */ 255/* Our assembly helper, in kexec_stub.S */
256extern NORET_TYPE void kexec_sequence(void *newstack, unsigned long start, 256extern NORET_TYPE void kexec_sequence(void *newstack, unsigned long start,
257 void *image, void *control, 257 void *image, void *control,
258 void (*clear_all)(void)) ATTRIB_NORET; 258 void (*clear_all)(void),
259 unsigned long kdump_flag) ATTRIB_NORET;
259 260
260/* too late to fail here */ 261/* too late to fail here */
261void default_machine_kexec(struct kimage *image) 262void default_machine_kexec(struct kimage *image)
262{ 263{
264 unsigned long kdump_flag = 0;
265
263 /* prepare control code if any */ 266 /* prepare control code if any */
264 267
265 /* 268 /*
@@ -270,8 +273,10 @@ void default_machine_kexec(struct kimage *image)
270 * using debugger IPI. 273 * using debugger IPI.
271 */ 274 */
272 275
273 if (crashing_cpu == -1) 276 if (crashing_cpu == -1)
274 kexec_prepare_cpus(); 277 kexec_prepare_cpus();
278 else
279 kdump_flag = KDUMP_SIGNATURE;
275 280
276 /* switch to a staticly allocated stack. Based on irq stack code. 281 /* switch to a staticly allocated stack. Based on irq stack code.
277 * XXX: the task struct will likely be invalid once we do the copy! 282 * XXX: the task struct will likely be invalid once we do the copy!
@@ -284,7 +289,7 @@ void default_machine_kexec(struct kimage *image)
284 */ 289 */
285 kexec_sequence(&kexec_stack, image->start, image, 290 kexec_sequence(&kexec_stack, image->start, image,
286 page_address(image->control_code_page), 291 page_address(image->control_code_page),
287 ppc_md.hpte_clear_all); 292 ppc_md.hpte_clear_all, kdump_flag);
288 /* NOTREACHED */ 293 /* NOTREACHED */
289} 294}
290 295
@@ -312,11 +317,24 @@ static struct property kernel_end_prop = {
312static void __init export_htab_values(void) 317static void __init export_htab_values(void)
313{ 318{
314 struct device_node *node; 319 struct device_node *node;
320 struct property *prop;
315 321
316 node = of_find_node_by_path("/chosen"); 322 node = of_find_node_by_path("/chosen");
317 if (!node) 323 if (!node)
318 return; 324 return;
319 325
326 /* remove any stale propertys so ours can be found */
327 prop = of_find_property(node, kernel_end_prop.name, NULL);
328 if (prop)
329 prom_remove_property(node, prop);
330 prop = of_find_property(node, htab_base_prop.name, NULL);
331 if (prop)
332 prom_remove_property(node, prop);
333 prop = of_find_property(node, htab_size_prop.name, NULL);
334 if (prop)
335 prom_remove_property(node, prop);
336
337 /* information needed by userspace when using default_machine_kexec */
320 kernel_end = __pa(_end); 338 kernel_end = __pa(_end);
321 prom_add_property(node, &kernel_end_prop); 339 prom_add_property(node, &kernel_end_prop);
322 340
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index 3053fe5c62f2..a243fd072a77 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -611,10 +611,12 @@ real_mode: /* assume normal blr return */
611 611
612 612
613/* 613/*
614 * kexec_sequence(newstack, start, image, control, clear_all()) 614 * kexec_sequence(newstack, start, image, control, clear_all(), kdump_flag)
615 * 615 *
616 * does the grungy work with stack switching and real mode switches 616 * does the grungy work with stack switching and real mode switches
617 * also does simple calls to other code 617 * also does simple calls to other code
618 *
619 * kdump_flag says whether the next kernel should be a kdump kernel.
618 */ 620 */
619 621
620_GLOBAL(kexec_sequence) 622_GLOBAL(kexec_sequence)
@@ -647,7 +649,7 @@ _GLOBAL(kexec_sequence)
647 mr r29,r5 /* image (virt) */ 649 mr r29,r5 /* image (virt) */
648 mr r28,r6 /* control, unused */ 650 mr r28,r6 /* control, unused */
649 mr r27,r7 /* clear_all() fn desc */ 651 mr r27,r7 /* clear_all() fn desc */
650 mr r26,r8 /* spare */ 652 mr r26,r8 /* kdump flag */
651 lhz r25,PACAHWCPUID(r13) /* get our phys cpu from paca */ 653 lhz r25,PACAHWCPUID(r13) /* get our phys cpu from paca */
652 654
653 /* disable interrupts, we are overwriting kernel data next */ 655 /* disable interrupts, we are overwriting kernel data next */
@@ -709,5 +711,6 @@ _GLOBAL(kexec_sequence)
709 mr r4,r30 # start, aka phys mem offset 711 mr r4,r30 # start, aka phys mem offset
710 mtlr 4 712 mtlr 4
711 li r5,0 713 li r5,0
712 blr /* image->start(physid, image->start, 0); */ 714 mr r6,r26 /* kdump_flag */
715 blr /* image->start(physid, image->start, 0, kdump_flag); */
713#endif /* CONFIG_KEXEC */ 716#endif /* CONFIG_KEXEC */
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 3815d84a1ef4..1ec73938a00f 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -610,7 +610,8 @@ int pci_mmap_legacy_page_range(struct pci_bus *bus,
610 pr_debug(" -> mapping phys %llx\n", (unsigned long long)offset); 610 pr_debug(" -> mapping phys %llx\n", (unsigned long long)offset);
611 611
612 vma->vm_pgoff = offset >> PAGE_SHIFT; 612 vma->vm_pgoff = offset >> PAGE_SHIFT;
613 vma->vm_page_prot |= _PAGE_NO_CACHE | _PAGE_GUARDED; 613 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
614 | _PAGE_NO_CACHE | _PAGE_GUARDED);
614 return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, 615 return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
615 vma->vm_end - vma->vm_start, 616 vma->vm_end - vma->vm_start,
616 vma->vm_page_prot); 617 vma->vm_page_prot);
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index 2fdbc18ae94a..23e0db203329 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -487,67 +487,6 @@ static int __init prom_setprop(phandle node, const char *nodename,
487 return call_prom("interpret", 1, 1, (u32)(unsigned long) cmd); 487 return call_prom("interpret", 1, 1, (u32)(unsigned long) cmd);
488} 488}
489 489
490/* We can't use the standard versions because of RELOC headaches. */
491#define isxdigit(c) (('0' <= (c) && (c) <= '9') \
492 || ('a' <= (c) && (c) <= 'f') \
493 || ('A' <= (c) && (c) <= 'F'))
494
495#define isdigit(c) ('0' <= (c) && (c) <= '9')
496#define islower(c) ('a' <= (c) && (c) <= 'z')
497#define toupper(c) (islower(c) ? ((c) - 'a' + 'A') : (c))
498
499unsigned long prom_strtoul(const char *cp, const char **endp)
500{
501 unsigned long result = 0, base = 10, value;
502
503 if (*cp == '0') {
504 base = 8;
505 cp++;
506 if (toupper(*cp) == 'X') {
507 cp++;
508 base = 16;
509 }
510 }
511
512 while (isxdigit(*cp) &&
513 (value = isdigit(*cp) ? *cp - '0' : toupper(*cp) - 'A' + 10) < base) {
514 result = result * base + value;
515 cp++;
516 }
517
518 if (endp)
519 *endp = cp;
520
521 return result;
522}
523
524unsigned long prom_memparse(const char *ptr, const char **retptr)
525{
526 unsigned long ret = prom_strtoul(ptr, retptr);
527 int shift = 0;
528
529 /*
530 * We can't use a switch here because GCC *may* generate a
531 * jump table which won't work, because we're not running at
532 * the address we're linked at.
533 */
534 if ('G' == **retptr || 'g' == **retptr)
535 shift = 30;
536
537 if ('M' == **retptr || 'm' == **retptr)
538 shift = 20;
539
540 if ('K' == **retptr || 'k' == **retptr)
541 shift = 10;
542
543 if (shift) {
544 ret <<= shift;
545 (*retptr)++;
546 }
547
548 return ret;
549}
550
551/* 490/*
552 * Early parsing of the command line passed to the kernel, used for 491 * Early parsing of the command line passed to the kernel, used for
553 * "mem=x" and the options that affect the iommu 492 * "mem=x" and the options that affect the iommu
diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh
index 2c7e8e87f770..ea3a2ec03ffa 100644
--- a/arch/powerpc/kernel/prom_init_check.sh
+++ b/arch/powerpc/kernel/prom_init_check.sh
@@ -20,7 +20,7 @@ WHITELIST="add_reloc_offset __bss_start __bss_stop copy_and_flush
20_end enter_prom memcpy memset reloc_offset __secondary_hold 20_end enter_prom memcpy memset reloc_offset __secondary_hold
21__secondary_hold_acknowledge __secondary_hold_spinloop __start 21__secondary_hold_acknowledge __secondary_hold_spinloop __start
22strcmp strcpy strlcpy strlen strncmp strstr logo_linux_clut224 22strcmp strcpy strlcpy strlen strncmp strstr logo_linux_clut224
23reloc_got2 kernstart_addr" 23reloc_got2 kernstart_addr memstart_addr"
24 24
25NM="$1" 25NM="$1"
26OBJ="$2" 26OBJ="$2"
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 5ec56ff03e86..705fc4bf3800 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -59,6 +59,7 @@
59#include <asm/mmu.h> 59#include <asm/mmu.h>
60#include <asm/xmon.h> 60#include <asm/xmon.h>
61#include <asm/cputhreads.h> 61#include <asm/cputhreads.h>
62#include <mm/mmu_decl.h>
62 63
63#include "setup.h" 64#include "setup.h"
64 65
@@ -190,6 +191,12 @@ static int show_cpuinfo(struct seq_file *m, void *v)
190 if (ppc_md.show_cpuinfo != NULL) 191 if (ppc_md.show_cpuinfo != NULL)
191 ppc_md.show_cpuinfo(m); 192 ppc_md.show_cpuinfo(m);
192 193
194#ifdef CONFIG_PPC32
195 /* Display the amount of memory */
196 seq_printf(m, "Memory\t\t: %d MB\n",
197 (unsigned int)(total_memory / (1024 * 1024)));
198#endif
199
193 return 0; 200 return 0;
194 } 201 }
195 202
diff --git a/arch/powerpc/kernel/signal.h b/arch/powerpc/kernel/signal.h
index 28f4b9f5fe5e..b427bf8e1d8f 100644
--- a/arch/powerpc/kernel/signal.h
+++ b/arch/powerpc/kernel/signal.h
@@ -12,6 +12,8 @@
12 12
13#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 13#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
14 14
15extern void do_signal(struct pt_regs *regs, unsigned long thread_info_flags);
16
15extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, 17extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
16 size_t frame_size); 18 size_t frame_size);
17extern void restore_sigmask(sigset_t *set); 19extern void restore_sigmask(sigset_t *set);
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
index 65ad925c3a8f..c6a8f2326b6f 100644
--- a/arch/powerpc/kernel/signal_64.c
+++ b/arch/powerpc/kernel/signal_64.c
@@ -235,8 +235,6 @@ static long restore_sigcontext(struct pt_regs *regs, sigset_t *set, int sig,
235 else 235 else
236 for (i = 0; i < 32 ; i++) 236 for (i = 0; i < 32 ; i++)
237 current->thread.fpr[i][TS_VSRLOWOFFSET] = 0; 237 current->thread.fpr[i][TS_VSRLOWOFFSET] = 0;
238
239#else
240#endif 238#endif
241 return err; 239 return err;
242} 240}
diff --git a/arch/powerpc/kernel/udbg_16550.c b/arch/powerpc/kernel/udbg_16550.c
index cb01ebc59387..7b7da8cfd5e8 100644
--- a/arch/powerpc/kernel/udbg_16550.c
+++ b/arch/powerpc/kernel/udbg_16550.c
@@ -142,7 +142,7 @@ unsigned int udbg_probe_uart_speed(void __iomem *comport, unsigned int clock)
142 speed = (clock / prescaler) / (divisor * 16); 142 speed = (clock / prescaler) / (divisor * 16);
143 143
144 /* sanity check */ 144 /* sanity check */
145 if (speed < 0 || speed > (clock / 16)) 145 if (speed > (clock / 16))
146 speed = 9600; 146 speed = 9600;
147 147
148 return speed; 148 return speed;
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 5c64af174752..8d5b4758c13a 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -382,8 +382,10 @@ static int __init htab_dt_scan_hugepage_blocks(unsigned long node,
382 printk(KERN_INFO "Huge page(16GB) memory: " 382 printk(KERN_INFO "Huge page(16GB) memory: "
383 "addr = 0x%lX size = 0x%lX pages = %d\n", 383 "addr = 0x%lX size = 0x%lX pages = %d\n",
384 phys_addr, block_size, expected_pages); 384 phys_addr, block_size, expected_pages);
385 lmb_reserve(phys_addr, block_size * expected_pages); 385 if (phys_addr + (16 * GB) <= lmb_end_of_DRAM()) {
386 add_gpage(phys_addr, block_size, expected_pages); 386 lmb_reserve(phys_addr, block_size * expected_pages);
387 add_gpage(phys_addr, block_size, expected_pages);
388 }
387 return 0; 389 return 0;
388} 390}
389#endif /* CONFIG_HUGETLB_PAGE */ 391#endif /* CONFIG_HUGETLB_PAGE */
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 6cf5c71c431f..eb505ad34a85 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -116,6 +116,7 @@ static int __init get_active_region_work_fn(unsigned long start_pfn,
116 116
117/* 117/*
118 * get_node_active_region - Return active region containing start_pfn 118 * get_node_active_region - Return active region containing start_pfn
119 * Active range returned is empty if none found.
119 * @start_pfn: The page to return the region for. 120 * @start_pfn: The page to return the region for.
120 * @node_ar: Returned set to the active region containing start_pfn 121 * @node_ar: Returned set to the active region containing start_pfn
121 */ 122 */
@@ -126,6 +127,7 @@ static void __init get_node_active_region(unsigned long start_pfn,
126 127
127 node_ar->nid = nid; 128 node_ar->nid = nid;
128 node_ar->start_pfn = start_pfn; 129 node_ar->start_pfn = start_pfn;
130 node_ar->end_pfn = start_pfn;
129 work_with_active_regions(nid, get_active_region_work_fn, node_ar); 131 work_with_active_regions(nid, get_active_region_work_fn, node_ar);
130} 132}
131 133
@@ -526,12 +528,10 @@ static unsigned long __init numa_enforce_memory_limit(unsigned long start,
526 /* 528 /*
527 * We use lmb_end_of_DRAM() in here instead of memory_limit because 529 * We use lmb_end_of_DRAM() in here instead of memory_limit because
528 * we've already adjusted it for the limit and it takes care of 530 * we've already adjusted it for the limit and it takes care of
529 * having memory holes below the limit. 531 * having memory holes below the limit. Also, in the case of
532 * iommu_is_off, memory_limit is not set but is implicitly enforced.
530 */ 533 */
531 534
532 if (! memory_limit)
533 return size;
534
535 if (start + size <= lmb_end_of_DRAM()) 535 if (start + size <= lmb_end_of_DRAM())
536 return size; 536 return size;
537 537
@@ -933,18 +933,20 @@ void __init do_init_bootmem(void)
933 struct node_active_region node_ar; 933 struct node_active_region node_ar;
934 934
935 get_node_active_region(start_pfn, &node_ar); 935 get_node_active_region(start_pfn, &node_ar);
936 while (start_pfn < end_pfn) { 936 while (start_pfn < end_pfn &&
937 node_ar.start_pfn < node_ar.end_pfn) {
938 unsigned long reserve_size = size;
937 /* 939 /*
938 * if reserved region extends past active region 940 * if reserved region extends past active region
939 * then trim size to active region 941 * then trim size to active region
940 */ 942 */
941 if (end_pfn > node_ar.end_pfn) 943 if (end_pfn > node_ar.end_pfn)
942 size = (node_ar.end_pfn << PAGE_SHIFT) 944 reserve_size = (node_ar.end_pfn << PAGE_SHIFT)
943 - (start_pfn << PAGE_SHIFT); 945 - (start_pfn << PAGE_SHIFT);
944 dbg("reserve_bootmem %lx %lx nid=%d\n", physbase, size, 946 dbg("reserve_bootmem %lx %lx nid=%d\n", physbase,
945 node_ar.nid); 947 reserve_size, node_ar.nid);
946 reserve_bootmem_node(NODE_DATA(node_ar.nid), physbase, 948 reserve_bootmem_node(NODE_DATA(node_ar.nid), physbase,
947 size, BOOTMEM_DEFAULT); 949 reserve_size, BOOTMEM_DEFAULT);
948 /* 950 /*
949 * if reserved region is contained in the active region 951 * if reserved region is contained in the active region
950 * then done. 952 * then done.
@@ -959,6 +961,7 @@ void __init do_init_bootmem(void)
959 */ 961 */
960 start_pfn = node_ar.end_pfn; 962 start_pfn = node_ar.end_pfn;
961 physbase = start_pfn << PAGE_SHIFT; 963 physbase = start_pfn << PAGE_SHIFT;
964 size = size - reserve_size;
962 get_node_active_region(start_pfn, &node_ar); 965 get_node_active_region(start_pfn, &node_ar);
963 } 966 }
964 967
diff --git a/arch/powerpc/oprofile/cell/pr_util.h b/arch/powerpc/oprofile/cell/pr_util.h
index 22e4e8d4eb2c..628009c01958 100644
--- a/arch/powerpc/oprofile/cell/pr_util.h
+++ b/arch/powerpc/oprofile/cell/pr_util.h
@@ -24,6 +24,11 @@
24#define SKIP_GENERIC_SYNC 0 24#define SKIP_GENERIC_SYNC 0
25#define SYNC_START_ERROR -1 25#define SYNC_START_ERROR -1
26#define DO_GENERIC_SYNC 1 26#define DO_GENERIC_SYNC 1
27#define SPUS_PER_NODE 8
28#define DEFAULT_TIMER_EXPIRE (HZ / 10)
29
30extern struct delayed_work spu_work;
31extern int spu_prof_running;
27 32
28struct spu_overlay_info { /* map of sections within an SPU overlay */ 33struct spu_overlay_info { /* map of sections within an SPU overlay */
29 unsigned int vma; /* SPU virtual memory address from elf */ 34 unsigned int vma; /* SPU virtual memory address from elf */
@@ -62,6 +67,14 @@ struct vma_to_fileoffset_map { /* map of sections within an SPU program */
62 67
63}; 68};
64 69
70struct spu_buffer {
71 int last_guard_val;
72 int ctx_sw_seen;
73 unsigned long *buff;
74 unsigned int head, tail;
75};
76
77
65/* The three functions below are for maintaining and accessing 78/* The three functions below are for maintaining and accessing
66 * the vma-to-fileoffset map. 79 * the vma-to-fileoffset map.
67 */ 80 */
diff --git a/arch/powerpc/oprofile/cell/spu_profiler.c b/arch/powerpc/oprofile/cell/spu_profiler.c
index 380d7e217531..dd499c3e9da7 100644
--- a/arch/powerpc/oprofile/cell/spu_profiler.c
+++ b/arch/powerpc/oprofile/cell/spu_profiler.c
@@ -23,12 +23,11 @@
23 23
24static u32 *samples; 24static u32 *samples;
25 25
26static int spu_prof_running; 26int spu_prof_running;
27static unsigned int profiling_interval; 27static unsigned int profiling_interval;
28 28
29#define NUM_SPU_BITS_TRBUF 16 29#define NUM_SPU_BITS_TRBUF 16
30#define SPUS_PER_TB_ENTRY 4 30#define SPUS_PER_TB_ENTRY 4
31#define SPUS_PER_NODE 8
32 31
33#define SPU_PC_MASK 0xFFFF 32#define SPU_PC_MASK 0xFFFF
34 33
@@ -196,7 +195,7 @@ int start_spu_profiling(unsigned int cycles_reset)
196 pr_debug("timer resolution: %lu\n", TICK_NSEC); 195 pr_debug("timer resolution: %lu\n", TICK_NSEC);
197 kt = ktime_set(0, profiling_interval); 196 kt = ktime_set(0, profiling_interval);
198 hrtimer_init(&timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); 197 hrtimer_init(&timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
199 timer.expires = kt; 198 hrtimer_set_expires(&timer, kt);
200 timer.function = profile_spus; 199 timer.function = profile_spus;
201 200
202 /* Allocate arrays for collecting SPU PC samples */ 201 /* Allocate arrays for collecting SPU PC samples */
@@ -208,6 +207,7 @@ int start_spu_profiling(unsigned int cycles_reset)
208 207
209 spu_prof_running = 1; 208 spu_prof_running = 1;
210 hrtimer_start(&timer, kt, HRTIMER_MODE_REL); 209 hrtimer_start(&timer, kt, HRTIMER_MODE_REL);
210 schedule_delayed_work(&spu_work, DEFAULT_TIMER_EXPIRE);
211 211
212 return 0; 212 return 0;
213} 213}
diff --git a/arch/powerpc/oprofile/cell/spu_task_sync.c b/arch/powerpc/oprofile/cell/spu_task_sync.c
index 2a9b4a049329..2949126d28d1 100644
--- a/arch/powerpc/oprofile/cell/spu_task_sync.c
+++ b/arch/powerpc/oprofile/cell/spu_task_sync.c
@@ -35,7 +35,102 @@ static DEFINE_SPINLOCK(buffer_lock);
35static DEFINE_SPINLOCK(cache_lock); 35static DEFINE_SPINLOCK(cache_lock);
36static int num_spu_nodes; 36static int num_spu_nodes;
37int spu_prof_num_nodes; 37int spu_prof_num_nodes;
38int last_guard_val[MAX_NUMNODES * 8]; 38
39struct spu_buffer spu_buff[MAX_NUMNODES * SPUS_PER_NODE];
40struct delayed_work spu_work;
41static unsigned max_spu_buff;
42
43static void spu_buff_add(unsigned long int value, int spu)
44{
45 /* spu buff is a circular buffer. Add entries to the
46 * head. Head is the index to store the next value.
47 * The buffer is full when there is one available entry
48 * in the queue, i.e. head and tail can't be equal.
49 * That way we can tell the difference between the
50 * buffer being full versus empty.
51 *
52 * ASSUPTION: the buffer_lock is held when this function
53 * is called to lock the buffer, head and tail.
54 */
55 int full = 1;
56
57 if (spu_buff[spu].head >= spu_buff[spu].tail) {
58 if ((spu_buff[spu].head - spu_buff[spu].tail)
59 < (max_spu_buff - 1))
60 full = 0;
61
62 } else if (spu_buff[spu].tail > spu_buff[spu].head) {
63 if ((spu_buff[spu].tail - spu_buff[spu].head)
64 > 1)
65 full = 0;
66 }
67
68 if (!full) {
69 spu_buff[spu].buff[spu_buff[spu].head] = value;
70 spu_buff[spu].head++;
71
72 if (spu_buff[spu].head >= max_spu_buff)
73 spu_buff[spu].head = 0;
74 } else {
75 /* From the user's perspective make the SPU buffer
76 * size management/overflow look like we are using
77 * per cpu buffers. The user uses the same
78 * per cpu parameter to adjust the SPU buffer size.
79 * Increment the sample_lost_overflow to inform
80 * the user the buffer size needs to be increased.
81 */
82 oprofile_cpu_buffer_inc_smpl_lost();
83 }
84}
85
86/* This function copies the per SPU buffers to the
87 * OProfile kernel buffer.
88 */
89void sync_spu_buff(void)
90{
91 int spu;
92 unsigned long flags;
93 int curr_head;
94
95 for (spu = 0; spu < num_spu_nodes; spu++) {
96 /* In case there was an issue and the buffer didn't
97 * get created skip it.
98 */
99 if (spu_buff[spu].buff == NULL)
100 continue;
101
102 /* Hold the lock to make sure the head/tail
103 * doesn't change while spu_buff_add() is
104 * deciding if the buffer is full or not.
105 * Being a little paranoid.
106 */
107 spin_lock_irqsave(&buffer_lock, flags);
108 curr_head = spu_buff[spu].head;
109 spin_unlock_irqrestore(&buffer_lock, flags);
110
111 /* Transfer the current contents to the kernel buffer.
112 * data can still be added to the head of the buffer.
113 */
114 oprofile_put_buff(spu_buff[spu].buff,
115 spu_buff[spu].tail,
116 curr_head, max_spu_buff);
117
118 spin_lock_irqsave(&buffer_lock, flags);
119 spu_buff[spu].tail = curr_head;
120 spin_unlock_irqrestore(&buffer_lock, flags);
121 }
122
123}
124
125static void wq_sync_spu_buff(struct work_struct *work)
126{
127 /* move data from spu buffers to kernel buffer */
128 sync_spu_buff();
129
130 /* only reschedule if profiling is not done */
131 if (spu_prof_running)
132 schedule_delayed_work(&spu_work, DEFAULT_TIMER_EXPIRE);
133}
39 134
40/* Container for caching information about an active SPU task. */ 135/* Container for caching information about an active SPU task. */
41struct cached_info { 136struct cached_info {
@@ -305,14 +400,21 @@ static int process_context_switch(struct spu *spu, unsigned long objectId)
305 400
306 /* Record context info in event buffer */ 401 /* Record context info in event buffer */
307 spin_lock_irqsave(&buffer_lock, flags); 402 spin_lock_irqsave(&buffer_lock, flags);
308 add_event_entry(ESCAPE_CODE); 403 spu_buff_add(ESCAPE_CODE, spu->number);
309 add_event_entry(SPU_CTX_SWITCH_CODE); 404 spu_buff_add(SPU_CTX_SWITCH_CODE, spu->number);
310 add_event_entry(spu->number); 405 spu_buff_add(spu->number, spu->number);
311 add_event_entry(spu->pid); 406 spu_buff_add(spu->pid, spu->number);
312 add_event_entry(spu->tgid); 407 spu_buff_add(spu->tgid, spu->number);
313 add_event_entry(app_dcookie); 408 spu_buff_add(app_dcookie, spu->number);
314 add_event_entry(spu_cookie); 409 spu_buff_add(spu_cookie, spu->number);
315 add_event_entry(offset); 410 spu_buff_add(offset, spu->number);
411
412 /* Set flag to indicate SPU PC data can now be written out. If
413 * the SPU program counter data is seen before an SPU context
414 * record is seen, the postprocessing will fail.
415 */
416 spu_buff[spu->number].ctx_sw_seen = 1;
417
316 spin_unlock_irqrestore(&buffer_lock, flags); 418 spin_unlock_irqrestore(&buffer_lock, flags);
317 smp_wmb(); /* insure spu event buffer updates are written */ 419 smp_wmb(); /* insure spu event buffer updates are written */
318 /* don't want entries intermingled... */ 420 /* don't want entries intermingled... */
@@ -360,6 +462,47 @@ static int number_of_online_nodes(void)
360 return nodes; 462 return nodes;
361} 463}
362 464
465static int oprofile_spu_buff_create(void)
466{
467 int spu;
468
469 max_spu_buff = oprofile_get_cpu_buffer_size();
470
471 for (spu = 0; spu < num_spu_nodes; spu++) {
472 /* create circular buffers to store the data in.
473 * use locks to manage accessing the buffers
474 */
475 spu_buff[spu].head = 0;
476 spu_buff[spu].tail = 0;
477
478 /*
479 * Create a buffer for each SPU. Can't reliably
480 * create a single buffer for all spus due to not
481 * enough contiguous kernel memory.
482 */
483
484 spu_buff[spu].buff = kzalloc((max_spu_buff
485 * sizeof(unsigned long)),
486 GFP_KERNEL);
487
488 if (!spu_buff[spu].buff) {
489 printk(KERN_ERR "SPU_PROF: "
490 "%s, line %d: oprofile_spu_buff_create "
491 "failed to allocate spu buffer %d.\n",
492 __func__, __LINE__, spu);
493
494 /* release the spu buffers that have been allocated */
495 while (spu >= 0) {
496 kfree(spu_buff[spu].buff);
497 spu_buff[spu].buff = 0;
498 spu--;
499 }
500 return -ENOMEM;
501 }
502 }
503 return 0;
504}
505
363/* The main purpose of this function is to synchronize 506/* The main purpose of this function is to synchronize
364 * OProfile with SPUFS by registering to be notified of 507 * OProfile with SPUFS by registering to be notified of
365 * SPU task switches. 508 * SPU task switches.
@@ -372,20 +515,35 @@ static int number_of_online_nodes(void)
372 */ 515 */
373int spu_sync_start(void) 516int spu_sync_start(void)
374{ 517{
375 int k; 518 int spu;
376 int ret = SKIP_GENERIC_SYNC; 519 int ret = SKIP_GENERIC_SYNC;
377 int register_ret; 520 int register_ret;
378 unsigned long flags = 0; 521 unsigned long flags = 0;
379 522
380 spu_prof_num_nodes = number_of_online_nodes(); 523 spu_prof_num_nodes = number_of_online_nodes();
381 num_spu_nodes = spu_prof_num_nodes * 8; 524 num_spu_nodes = spu_prof_num_nodes * 8;
525 INIT_DELAYED_WORK(&spu_work, wq_sync_spu_buff);
526
527 /* create buffer for storing the SPU data to put in
528 * the kernel buffer.
529 */
530 ret = oprofile_spu_buff_create();
531 if (ret)
532 goto out;
382 533
383 spin_lock_irqsave(&buffer_lock, flags); 534 spin_lock_irqsave(&buffer_lock, flags);
384 add_event_entry(ESCAPE_CODE); 535 for (spu = 0; spu < num_spu_nodes; spu++) {
385 add_event_entry(SPU_PROFILING_CODE); 536 spu_buff_add(ESCAPE_CODE, spu);
386 add_event_entry(num_spu_nodes); 537 spu_buff_add(SPU_PROFILING_CODE, spu);
538 spu_buff_add(num_spu_nodes, spu);
539 }
387 spin_unlock_irqrestore(&buffer_lock, flags); 540 spin_unlock_irqrestore(&buffer_lock, flags);
388 541
542 for (spu = 0; spu < num_spu_nodes; spu++) {
543 spu_buff[spu].ctx_sw_seen = 0;
544 spu_buff[spu].last_guard_val = 0;
545 }
546
389 /* Register for SPU events */ 547 /* Register for SPU events */
390 register_ret = spu_switch_event_register(&spu_active); 548 register_ret = spu_switch_event_register(&spu_active);
391 if (register_ret) { 549 if (register_ret) {
@@ -393,8 +551,6 @@ int spu_sync_start(void)
393 goto out; 551 goto out;
394 } 552 }
395 553
396 for (k = 0; k < (MAX_NUMNODES * 8); k++)
397 last_guard_val[k] = 0;
398 pr_debug("spu_sync_start -- running.\n"); 554 pr_debug("spu_sync_start -- running.\n");
399out: 555out:
400 return ret; 556 return ret;
@@ -446,13 +602,20 @@ void spu_sync_buffer(int spu_num, unsigned int *samples,
446 * use. We need to discard samples taken during the time 602 * use. We need to discard samples taken during the time
447 * period which an overlay occurs (i.e., guard value changes). 603 * period which an overlay occurs (i.e., guard value changes).
448 */ 604 */
449 if (grd_val && grd_val != last_guard_val[spu_num]) { 605 if (grd_val && grd_val != spu_buff[spu_num].last_guard_val) {
450 last_guard_val[spu_num] = grd_val; 606 spu_buff[spu_num].last_guard_val = grd_val;
451 /* Drop the rest of the samples. */ 607 /* Drop the rest of the samples. */
452 break; 608 break;
453 } 609 }
454 610
455 add_event_entry(file_offset | spu_num_shifted); 611 /* We must ensure that the SPU context switch has been written
612 * out before samples for the SPU. Otherwise, the SPU context
613 * information is not available and the postprocessing of the
614 * SPU PC will fail with no available anonymous map information.
615 */
616 if (spu_buff[spu_num].ctx_sw_seen)
617 spu_buff_add((file_offset | spu_num_shifted),
618 spu_num);
456 } 619 }
457 spin_unlock(&buffer_lock); 620 spin_unlock(&buffer_lock);
458out: 621out:
@@ -463,20 +626,41 @@ out:
463int spu_sync_stop(void) 626int spu_sync_stop(void)
464{ 627{
465 unsigned long flags = 0; 628 unsigned long flags = 0;
466 int ret = spu_switch_event_unregister(&spu_active); 629 int ret;
467 if (ret) { 630 int k;
631
632 ret = spu_switch_event_unregister(&spu_active);
633
634 if (ret)
468 printk(KERN_ERR "SPU_PROF: " 635 printk(KERN_ERR "SPU_PROF: "
469 "%s, line %d: spu_switch_event_unregister returned %d\n", 636 "%s, line %d: spu_switch_event_unregister " \
470 __func__, __LINE__, ret); 637 "returned %d\n",
471 goto out; 638 __func__, __LINE__, ret);
472 } 639
640 /* flush any remaining data in the per SPU buffers */
641 sync_spu_buff();
473 642
474 spin_lock_irqsave(&cache_lock, flags); 643 spin_lock_irqsave(&cache_lock, flags);
475 ret = release_cached_info(RELEASE_ALL); 644 ret = release_cached_info(RELEASE_ALL);
476 spin_unlock_irqrestore(&cache_lock, flags); 645 spin_unlock_irqrestore(&cache_lock, flags);
477out: 646
647 /* remove scheduled work queue item rather then waiting
648 * for every queued entry to execute. Then flush pending
649 * system wide buffer to event buffer.
650 */
651 cancel_delayed_work(&spu_work);
652
653 for (k = 0; k < num_spu_nodes; k++) {
654 spu_buff[k].ctx_sw_seen = 0;
655
656 /*
657 * spu_sys_buff will be null if there was a problem
658 * allocating the buffer. Only delete if it exists.
659 */
660 kfree(spu_buff[k].buff);
661 spu_buff[k].buff = 0;
662 }
478 pr_debug("spu_sync_stop -- done.\n"); 663 pr_debug("spu_sync_stop -- done.\n");
479 return ret; 664 return ret;
480} 665}
481 666
482
diff --git a/arch/powerpc/oprofile/op_model_cell.c b/arch/powerpc/oprofile/op_model_cell.c
index 5ff4de3eb3be..35141a8bc3d9 100644
--- a/arch/powerpc/oprofile/op_model_cell.c
+++ b/arch/powerpc/oprofile/op_model_cell.c
@@ -404,7 +404,7 @@ set_count_mode(u32 kernel, u32 user)
404 } 404 }
405} 405}
406 406
407static inline void enable_ctr(u32 cpu, u32 ctr, u32 * pm07_cntrl) 407static inline void enable_ctr(u32 cpu, u32 ctr, u32 *pm07_cntrl)
408{ 408{
409 409
410 pm07_cntrl[ctr] |= CBE_PM_CTR_ENABLE; 410 pm07_cntrl[ctr] |= CBE_PM_CTR_ENABLE;
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig
index a9260e21451e..65730275e012 100644
--- a/arch/powerpc/platforms/40x/Kconfig
+++ b/arch/powerpc/platforms/40x/Kconfig
@@ -14,6 +14,15 @@
14# help 14# help
15# This option enables support for the CPCI405 board. 15# This option enables support for the CPCI405 board.
16 16
17config ACADIA
18 bool "Acadia"
19 depends on 40x
20 default n
21 select PPC40x_SIMPLE
22 select 405EZ
23 help
24 This option enables support for the AMCC 405EZ Acadia evaluation board.
25
17config EP405 26config EP405
18 bool "EP405/EP405PC" 27 bool "EP405/EP405PC"
19 depends on 40x 28 depends on 40x
@@ -23,6 +32,14 @@ config EP405
23 help 32 help
24 This option enables support for the EP405/EP405PC boards. 33 This option enables support for the EP405/EP405PC boards.
25 34
35config HCU4
36 bool "Hcu4"
37 depends on 40x
38 default y
39 select 405GPR
40 help
41 This option enables support for the Nestal Maschinen HCU4 board.
42
26config KILAUEA 43config KILAUEA
27 bool "Kilauea" 44 bool "Kilauea"
28 depends on 40x 45 depends on 40x
@@ -93,6 +110,13 @@ config XILINX_VIRTEX_GENERIC_BOARD
93 Most Virtex designs should use this unless it needs to do some 110 Most Virtex designs should use this unless it needs to do some
94 special configuration at board probe time. 111 special configuration at board probe time.
95 112
113config PPC40x_SIMPLE
114 bool "Simple PowerPC 40x board support"
115 depends on 40x
116 default n
117 help
118 This option enables the simple PowerPC 40x platform support.
119
96# 40x specific CPU modules, selected based on the board above. 120# 40x specific CPU modules, selected based on the board above.
97config NP405H 121config NP405H
98 bool 122 bool
@@ -118,6 +142,12 @@ config 405EX
118 select IBM_NEW_EMAC_EMAC4 142 select IBM_NEW_EMAC_EMAC4
119 select IBM_NEW_EMAC_RGMII 143 select IBM_NEW_EMAC_RGMII
120 144
145config 405EZ
146 bool
147 select IBM_NEW_EMAC_NO_FLOW_CTRL
148 select IBM_NEW_EMAC_MAL_CLR_ICINTSTAT
149 select IBM_NEW_EMAC_MAL_COMMON_ERR
150
121config 405GPR 151config 405GPR
122 bool 152 bool
123 153
@@ -139,6 +169,14 @@ config STB03xxx
139 select IBM405_ERR77 169 select IBM405_ERR77
140 select IBM405_ERR51 170 select IBM405_ERR51
141 171
172config PPC4xx_GPIO
173 bool "PPC4xx GPIO support"
174 depends on 40x
175 select ARCH_REQUIRE_GPIOLIB
176 select GENERIC_GPIO
177 help
178 Enable gpiolib support for ppc40x based boards
179
142# 40x errata/workaround config symbols, selected by the CPU models above 180# 40x errata/workaround config symbols, selected by the CPU models above
143 181
144# All 405-based cores up until the 405GPR and 405EP have this errata. 182# All 405-based cores up until the 405GPR and 405EP have this errata.
diff --git a/arch/powerpc/platforms/40x/Makefile b/arch/powerpc/platforms/40x/Makefile
index 5533a5c8ce4e..9bab76a652a6 100644
--- a/arch/powerpc/platforms/40x/Makefile
+++ b/arch/powerpc/platforms/40x/Makefile
@@ -1,5 +1,7 @@
1obj-$(CONFIG_KILAUEA) += kilauea.o 1obj-$(CONFIG_KILAUEA) += kilauea.o
2obj-$(CONFIG_HCU4) += hcu4.o
2obj-$(CONFIG_MAKALU) += makalu.o 3obj-$(CONFIG_MAKALU) += makalu.o
3obj-$(CONFIG_WALNUT) += walnut.o 4obj-$(CONFIG_WALNUT) += walnut.o
4obj-$(CONFIG_XILINX_VIRTEX_GENERIC_BOARD) += virtex.o 5obj-$(CONFIG_XILINX_VIRTEX_GENERIC_BOARD) += virtex.o
5obj-$(CONFIG_EP405) += ep405.o 6obj-$(CONFIG_EP405) += ep405.o
7obj-$(CONFIG_PPC40x_SIMPLE) += ppc40x_simple.o
diff --git a/arch/powerpc/platforms/40x/hcu4.c b/arch/powerpc/platforms/40x/hcu4.c
new file mode 100644
index 000000000000..60b2afecab75
--- /dev/null
+++ b/arch/powerpc/platforms/40x/hcu4.c
@@ -0,0 +1,61 @@
1/*
2 * Architecture- / platform-specific boot-time initialization code for
3 * IBM PowerPC 4xx based boards. Adapted from original
4 * code by Gary Thomas, Cort Dougan <cort@fsmlabs.com>, and Dan Malek
5 * <dan@net4x.com>.
6 *
7 * Copyright(c) 1999-2000 Grant Erickson <grant@lcse.umn.edu>
8 *
9 * Rewritten and ported to the merged powerpc tree:
10 * Copyright 2007 IBM Corporation
11 * Josh Boyer <jwboyer@linux.vnet.ibm.com>
12 *
13 * 2002 (c) MontaVista, Software, Inc. This file is licensed under
14 * the terms of the GNU General Public License version 2. This program
15 * is licensed "as is" without any warranty of any kind, whether express
16 * or implied.
17 */
18
19#include <linux/init.h>
20#include <linux/of_platform.h>
21
22#include <asm/machdep.h>
23#include <asm/prom.h>
24#include <asm/udbg.h>
25#include <asm/time.h>
26#include <asm/uic.h>
27#include <asm/ppc4xx.h>
28
29static __initdata struct of_device_id hcu4_of_bus[] = {
30 { .compatible = "ibm,plb3", },
31 { .compatible = "ibm,opb", },
32 { .compatible = "ibm,ebc", },
33 {},
34};
35
36static int __init hcu4_device_probe(void)
37{
38 of_platform_bus_probe(NULL, hcu4_of_bus, NULL);
39 return 0;
40}
41machine_device_initcall(hcu4, hcu4_device_probe);
42
43static int __init hcu4_probe(void)
44{
45 unsigned long root = of_get_flat_dt_root();
46
47 if (!of_flat_dt_is_compatible(root, "netstal,hcu4"))
48 return 0;
49
50 return 1;
51}
52
53define_machine(hcu4) {
54 .name = "HCU4",
55 .probe = hcu4_probe,
56 .progress = udbg_progress,
57 .init_IRQ = uic_init_tree,
58 .get_irq = uic_get_irq,
59 .restart = ppc4xx_reset_system,
60 .calibrate_decr = generic_calibrate_decr,
61};
diff --git a/arch/powerpc/platforms/40x/ppc40x_simple.c b/arch/powerpc/platforms/40x/ppc40x_simple.c
new file mode 100644
index 000000000000..4498a86b46c3
--- /dev/null
+++ b/arch/powerpc/platforms/40x/ppc40x_simple.c
@@ -0,0 +1,80 @@
1/*
2 * Generic PowerPC 40x platform support
3 *
4 * Copyright 2008 IBM Corporation
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; version 2 of the License.
9 *
10 * This implements simple platform support for PowerPC 44x chips. This is
11 * mostly used for eval boards or other simple and "generic" 44x boards. If
12 * your board has custom functions or hardware, then you will likely want to
13 * implement your own board.c file to accommodate it.
14 */
15
16#include <asm/machdep.h>
17#include <asm/pci-bridge.h>
18#include <asm/ppc4xx.h>
19#include <asm/prom.h>
20#include <asm/time.h>
21#include <asm/udbg.h>
22#include <asm/uic.h>
23
24#include <linux/init.h>
25#include <linux/of_platform.h>
26
27static __initdata struct of_device_id ppc40x_of_bus[] = {
28 { .compatible = "ibm,plb3", },
29 { .compatible = "ibm,plb4", },
30 { .compatible = "ibm,opb", },
31 { .compatible = "ibm,ebc", },
32 { .compatible = "simple-bus", },
33 {},
34};
35
36static int __init ppc40x_device_probe(void)
37{
38 of_platform_bus_probe(NULL, ppc40x_of_bus, NULL);
39
40 return 0;
41}
42machine_device_initcall(ppc40x_simple, ppc40x_device_probe);
43
44/* This is the list of boards that can be supported by this simple
45 * platform code. This does _not_ mean the boards are compatible,
46 * as they most certainly are not from a device tree perspective.
47 * However, their differences are handled by the device tree and the
48 * drivers and therefore they don't need custom board support files.
49 *
50 * Again, if your board needs to do things differently then create a
51 * board.c file for it rather than adding it to this list.
52 */
53static char *board[] __initdata = {
54 "amcc,acadia"
55};
56
57static int __init ppc40x_probe(void)
58{
59 unsigned long root = of_get_flat_dt_root();
60 int i = 0;
61
62 for (i = 0; i < ARRAY_SIZE(board); i++) {
63 if (of_flat_dt_is_compatible(root, board[i])) {
64 ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
65 return 1;
66 }
67 }
68
69 return 0;
70}
71
72define_machine(ppc40x_simple) {
73 .name = "PowerPC 40x Platform",
74 .probe = ppc40x_probe,
75 .progress = udbg_progress,
76 .init_IRQ = uic_init_tree,
77 .get_irq = uic_get_irq,
78 .restart = ppc4xx_reset_system,
79 .calibrate_decr = generic_calibrate_decr,
80};
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig
index 79c1154f88d4..3496bc05058e 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -167,6 +167,14 @@ config PPC44x_SIMPLE
167 help 167 help
168 This option enables the simple PowerPC 44x platform support. 168 This option enables the simple PowerPC 44x platform support.
169 169
170config PPC4xx_GPIO
171 bool "PPC4xx GPIO support"
172 depends on 44x
173 select ARCH_REQUIRE_GPIOLIB
174 select GENERIC_GPIO
175 help
176 Enable gpiolib support for ppc440 based boards
177
170# 44x specific CPU modules, selected based on the board above. 178# 44x specific CPU modules, selected based on the board above.
171config 440EP 179config 440EP
172 bool 180 bool
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index 044b4e6e8743..ae7c34f37e1c 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -99,11 +99,14 @@ mpc5200_setup_xlb_arbiter(void)
99 out_be32(&xlb->master_pri_enable, 0xff); 99 out_be32(&xlb->master_pri_enable, 0xff);
100 out_be32(&xlb->master_priority, 0x11111111); 100 out_be32(&xlb->master_priority, 0x11111111);
101 101
102 /* Disable XLB pipelining 102 /*
103 * Disable XLB pipelining
103 * (cfr errate 292. We could do this only just before ATA PIO 104 * (cfr errate 292. We could do this only just before ATA PIO
104 * transaction and re-enable it afterwards ...) 105 * transaction and re-enable it afterwards ...)
106 * Not needed on MPC5200B.
105 */ 107 */
106 out_be32(&xlb->config, in_be32(&xlb->config) | MPC52xx_XLB_CFG_PLDIS); 108 if ((mfspr(SPRN_SVR) & MPC5200_SVR_MASK) == MPC5200_SVR)
109 out_be32(&xlb->config, in_be32(&xlb->config) | MPC52xx_XLB_CFG_PLDIS);
107 110
108 iounmap(xlb); 111 iounmap(xlb);
109} 112}
diff --git a/arch/powerpc/platforms/85xx/ksi8560.c b/arch/powerpc/platforms/85xx/ksi8560.c
index 8a3b117b6ce2..81cee7bbf2d2 100644
--- a/arch/powerpc/platforms/85xx/ksi8560.c
+++ b/arch/powerpc/platforms/85xx/ksi8560.c
@@ -193,7 +193,6 @@ static void __init ksi8560_setup_arch(void)
193static void ksi8560_show_cpuinfo(struct seq_file *m) 193static void ksi8560_show_cpuinfo(struct seq_file *m)
194{ 194{
195 uint pvid, svid, phid1; 195 uint pvid, svid, phid1;
196 uint memsize = total_memory;
197 196
198 pvid = mfspr(SPRN_PVR); 197 pvid = mfspr(SPRN_PVR);
199 svid = mfspr(SPRN_SVR); 198 svid = mfspr(SPRN_SVR);
@@ -215,9 +214,6 @@ static void ksi8560_show_cpuinfo(struct seq_file *m)
215 /* Display cpu Pll setting */ 214 /* Display cpu Pll setting */
216 phid1 = mfspr(SPRN_HID1); 215 phid1 = mfspr(SPRN_HID1);
217 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); 216 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
218
219 /* Display the amount of memory */
220 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
221} 217}
222 218
223static struct of_device_id __initdata of_bus_ids[] = { 219static struct of_device_id __initdata of_bus_ids[] = {
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
index 0293e3d3580f..21f009023e26 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
@@ -207,7 +207,6 @@ static void __init mpc85xx_ads_setup_arch(void)
207static void mpc85xx_ads_show_cpuinfo(struct seq_file *m) 207static void mpc85xx_ads_show_cpuinfo(struct seq_file *m)
208{ 208{
209 uint pvid, svid, phid1; 209 uint pvid, svid, phid1;
210 uint memsize = total_memory;
211 210
212 pvid = mfspr(SPRN_PVR); 211 pvid = mfspr(SPRN_PVR);
213 svid = mfspr(SPRN_SVR); 212 svid = mfspr(SPRN_SVR);
@@ -219,9 +218,6 @@ static void mpc85xx_ads_show_cpuinfo(struct seq_file *m)
219 /* Display cpu Pll setting */ 218 /* Display cpu Pll setting */
220 phid1 = mfspr(SPRN_HID1); 219 phid1 = mfspr(SPRN_HID1);
221 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); 220 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
222
223 /* Display the amount of memory */
224 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
225} 221}
226 222
227static struct of_device_id __initdata of_bus_ids[] = { 223static struct of_device_id __initdata of_bus_ids[] = {
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index 50d7ea8f922b..aeb6a5bc5522 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -307,7 +307,6 @@ static void __init mpc85xx_cds_setup_arch(void)
307static void mpc85xx_cds_show_cpuinfo(struct seq_file *m) 307static void mpc85xx_cds_show_cpuinfo(struct seq_file *m)
308{ 308{
309 uint pvid, svid, phid1; 309 uint pvid, svid, phid1;
310 uint memsize = total_memory;
311 310
312 pvid = mfspr(SPRN_PVR); 311 pvid = mfspr(SPRN_PVR);
313 svid = mfspr(SPRN_SVR); 312 svid = mfspr(SPRN_SVR);
@@ -320,9 +319,6 @@ static void mpc85xx_cds_show_cpuinfo(struct seq_file *m)
320 /* Display cpu Pll setting */ 319 /* Display cpu Pll setting */
321 phid1 = mfspr(SPRN_HID1); 320 phid1 = mfspr(SPRN_HID1);
322 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); 321 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
323
324 /* Display the amount of memory */
325 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
326} 322}
327 323
328 324
diff --git a/arch/powerpc/platforms/85xx/sbc8548.c b/arch/powerpc/platforms/85xx/sbc8548.c
index b9246ea0928a..7ec77ce12dad 100644
--- a/arch/powerpc/platforms/85xx/sbc8548.c
+++ b/arch/powerpc/platforms/85xx/sbc8548.c
@@ -136,7 +136,6 @@ static void __init sbc8548_setup_arch(void)
136static void sbc8548_show_cpuinfo(struct seq_file *m) 136static void sbc8548_show_cpuinfo(struct seq_file *m)
137{ 137{
138 uint pvid, svid, phid1; 138 uint pvid, svid, phid1;
139 uint memsize = total_memory;
140 139
141 pvid = mfspr(SPRN_PVR); 140 pvid = mfspr(SPRN_PVR);
142 svid = mfspr(SPRN_SVR); 141 svid = mfspr(SPRN_SVR);
@@ -149,9 +148,6 @@ static void sbc8548_show_cpuinfo(struct seq_file *m)
149 /* Display cpu Pll setting */ 148 /* Display cpu Pll setting */
150 phid1 = mfspr(SPRN_HID1); 149 phid1 = mfspr(SPRN_HID1);
151 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); 150 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
152
153 /* Display the amount of memory */
154 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
155} 151}
156 152
157static struct of_device_id __initdata of_bus_ids[] = { 153static struct of_device_id __initdata of_bus_ids[] = {
diff --git a/arch/powerpc/platforms/85xx/sbc8560.c b/arch/powerpc/platforms/85xx/sbc8560.c
index 0c9a856f66b6..472f254a19d2 100644
--- a/arch/powerpc/platforms/85xx/sbc8560.c
+++ b/arch/powerpc/platforms/85xx/sbc8560.c
@@ -194,7 +194,6 @@ static void __init sbc8560_setup_arch(void)
194static void sbc8560_show_cpuinfo(struct seq_file *m) 194static void sbc8560_show_cpuinfo(struct seq_file *m)
195{ 195{
196 uint pvid, svid, phid1; 196 uint pvid, svid, phid1;
197 uint memsize = total_memory;
198 197
199 pvid = mfspr(SPRN_PVR); 198 pvid = mfspr(SPRN_PVR);
200 svid = mfspr(SPRN_SVR); 199 svid = mfspr(SPRN_SVR);
@@ -206,9 +205,6 @@ static void sbc8560_show_cpuinfo(struct seq_file *m)
206 /* Display cpu Pll setting */ 205 /* Display cpu Pll setting */
207 phid1 = mfspr(SPRN_HID1); 206 phid1 = mfspr(SPRN_HID1);
208 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); 207 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
209
210 /* Display the amount of memory */
211 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
212} 208}
213 209
214static struct of_device_id __initdata of_bus_ids[] = { 210static struct of_device_id __initdata of_bus_ids[] = {
diff --git a/arch/powerpc/platforms/85xx/stx_gp3.c b/arch/powerpc/platforms/85xx/stx_gp3.c
index 18499d7c9d9e..0cca8f5cb272 100644
--- a/arch/powerpc/platforms/85xx/stx_gp3.c
+++ b/arch/powerpc/platforms/85xx/stx_gp3.c
@@ -130,7 +130,6 @@ static void __init stx_gp3_setup_arch(void)
130static void stx_gp3_show_cpuinfo(struct seq_file *m) 130static void stx_gp3_show_cpuinfo(struct seq_file *m)
131{ 131{
132 uint pvid, svid, phid1; 132 uint pvid, svid, phid1;
133 uint memsize = total_memory;
134 133
135 pvid = mfspr(SPRN_PVR); 134 pvid = mfspr(SPRN_PVR);
136 svid = mfspr(SPRN_SVR); 135 svid = mfspr(SPRN_SVR);
@@ -142,9 +141,6 @@ static void stx_gp3_show_cpuinfo(struct seq_file *m)
142 /* Display cpu Pll setting */ 141 /* Display cpu Pll setting */
143 phid1 = mfspr(SPRN_HID1); 142 phid1 = mfspr(SPRN_HID1);
144 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); 143 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
145
146 /* Display the amount of memory */
147 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
148} 144}
149 145
150static struct of_device_id __initdata of_bus_ids[] = { 146static struct of_device_id __initdata of_bus_ids[] = {
diff --git a/arch/powerpc/platforms/85xx/tqm85xx.c b/arch/powerpc/platforms/85xx/tqm85xx.c
index d850880d6964..2933a8e827d9 100644
--- a/arch/powerpc/platforms/85xx/tqm85xx.c
+++ b/arch/powerpc/platforms/85xx/tqm85xx.c
@@ -138,7 +138,6 @@ static void __init tqm85xx_setup_arch(void)
138static void tqm85xx_show_cpuinfo(struct seq_file *m) 138static void tqm85xx_show_cpuinfo(struct seq_file *m)
139{ 139{
140 uint pvid, svid, phid1; 140 uint pvid, svid, phid1;
141 uint memsize = total_memory;
142 141
143 pvid = mfspr(SPRN_PVR); 142 pvid = mfspr(SPRN_PVR);
144 svid = mfspr(SPRN_SVR); 143 svid = mfspr(SPRN_SVR);
@@ -150,9 +149,6 @@ static void tqm85xx_show_cpuinfo(struct seq_file *m)
150 /* Display cpu Pll setting */ 149 /* Display cpu Pll setting */
151 phid1 = mfspr(SPRN_HID1); 150 phid1 = mfspr(SPRN_HID1);
152 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); 151 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
153
154 /* Display the amount of memory */
155 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
156} 152}
157 153
158static struct of_device_id __initdata of_bus_ids[] = { 154static struct of_device_id __initdata of_bus_ids[] = {
diff --git a/arch/powerpc/platforms/86xx/gef_sbc610.c b/arch/powerpc/platforms/86xx/gef_sbc610.c
index 821c45fac18b..fb371f5ce132 100644
--- a/arch/powerpc/platforms/86xx/gef_sbc610.c
+++ b/arch/powerpc/platforms/86xx/gef_sbc610.c
@@ -127,7 +127,6 @@ static unsigned int gef_sbc610_get_fpga_rev(void)
127 127
128static void gef_sbc610_show_cpuinfo(struct seq_file *m) 128static void gef_sbc610_show_cpuinfo(struct seq_file *m)
129{ 129{
130 uint memsize = total_memory;
131 uint svid = mfspr(SPRN_SVR); 130 uint svid = mfspr(SPRN_SVR);
132 131
133 seq_printf(m, "Vendor\t\t: GE Fanuc Intelligent Platforms\n"); 132 seq_printf(m, "Vendor\t\t: GE Fanuc Intelligent Platforms\n");
@@ -137,7 +136,6 @@ static void gef_sbc610_show_cpuinfo(struct seq_file *m)
137 seq_printf(m, "FPGA Revision\t: %u\n", gef_sbc610_get_fpga_rev()); 136 seq_printf(m, "FPGA Revision\t: %u\n", gef_sbc610_get_fpga_rev());
138 137
139 seq_printf(m, "SVR\t\t: 0x%x\n", svid); 138 seq_printf(m, "SVR\t\t: 0x%x\n", svid);
140 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
141} 139}
142 140
143static void __init gef_sbc610_nec_fixup(struct pci_dev *pdev) 141static void __init gef_sbc610_nec_fixup(struct pci_dev *pdev)
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
index 2672829a71dc..27e0e682d8e1 100644
--- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
+++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
@@ -101,13 +101,11 @@ mpc86xx_hpcn_setup_arch(void)
101static void 101static void
102mpc86xx_hpcn_show_cpuinfo(struct seq_file *m) 102mpc86xx_hpcn_show_cpuinfo(struct seq_file *m)
103{ 103{
104 uint memsize = total_memory;
105 uint svid = mfspr(SPRN_SVR); 104 uint svid = mfspr(SPRN_SVR);
106 105
107 seq_printf(m, "Vendor\t\t: Freescale Semiconductor\n"); 106 seq_printf(m, "Vendor\t\t: Freescale Semiconductor\n");
108 107
109 seq_printf(m, "SVR\t\t: 0x%x\n", svid); 108 seq_printf(m, "SVR\t\t: 0x%x\n", svid);
110 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
111} 109}
112 110
113 111
diff --git a/arch/powerpc/platforms/86xx/sbc8641d.c b/arch/powerpc/platforms/86xx/sbc8641d.c
index da677a74e2d1..5fd7ed40986f 100644
--- a/arch/powerpc/platforms/86xx/sbc8641d.c
+++ b/arch/powerpc/platforms/86xx/sbc8641d.c
@@ -63,13 +63,11 @@ sbc8641_setup_arch(void)
63static void 63static void
64sbc8641_show_cpuinfo(struct seq_file *m) 64sbc8641_show_cpuinfo(struct seq_file *m)
65{ 65{
66 uint memsize = total_memory;
67 uint svid = mfspr(SPRN_SVR); 66 uint svid = mfspr(SPRN_SVR);
68 67
69 seq_printf(m, "Vendor\t\t: Wind River Systems\n"); 68 seq_printf(m, "Vendor\t\t: Wind River Systems\n");
70 69
71 seq_printf(m, "SVR\t\t: 0x%x\n", svid); 70 seq_printf(m, "SVR\t\t: 0x%x\n", svid);
72 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
73} 71}
74 72
75 73
diff --git a/arch/powerpc/platforms/cell/ras.c b/arch/powerpc/platforms/cell/ras.c
index 2a14b052abcd..665af1c4195b 100644
--- a/arch/powerpc/platforms/cell/ras.c
+++ b/arch/powerpc/platforms/cell/ras.c
@@ -21,6 +21,7 @@
21#include <asm/machdep.h> 21#include <asm/machdep.h>
22#include <asm/rtas.h> 22#include <asm/rtas.h>
23#include <asm/cell-regs.h> 23#include <asm/cell-regs.h>
24#include <asm/kdump.h>
24 25
25#include "ras.h" 26#include "ras.h"
26 27
@@ -111,9 +112,8 @@ static int __init cbe_ptcal_enable_on_node(int nid, int order)
111 int ret = -ENOMEM; 112 int ret = -ENOMEM;
112 unsigned long addr; 113 unsigned long addr;
113 114
114#ifdef CONFIG_CRASH_DUMP 115 if (__kdump_flag)
115 rtas_call(ptcal_stop_tok, 1, 1, NULL, nid); 116 rtas_call(ptcal_stop_tok, 1, 1, NULL, nid);
116#endif
117 117
118 area = kmalloc(sizeof(*area), GFP_KERNEL); 118 area = kmalloc(sizeof(*area), GFP_KERNEL);
119 if (!area) 119 if (!area)
diff --git a/arch/powerpc/platforms/cell/smp.c b/arch/powerpc/platforms/cell/smp.c
index efb3964457b1..c0d86e1f56ea 100644
--- a/arch/powerpc/platforms/cell/smp.c
+++ b/arch/powerpc/platforms/cell/smp.c
@@ -54,8 +54,8 @@
54#endif 54#endif
55 55
56/* 56/*
57 * The primary thread of each non-boot processor is recorded here before 57 * The Primary thread of each non-boot processor was started from the OF client
58 * smp init. 58 * interface by prom_hold_cpus and is spinning on secondary_hold_spinloop.
59 */ 59 */
60static cpumask_t of_spin_map; 60static cpumask_t of_spin_map;
61 61
@@ -208,11 +208,7 @@ void __init smp_init_cell(void)
208 /* Mark threads which are still spinning in hold loops. */ 208 /* Mark threads which are still spinning in hold loops. */
209 if (cpu_has_feature(CPU_FTR_SMT)) { 209 if (cpu_has_feature(CPU_FTR_SMT)) {
210 for_each_present_cpu(i) { 210 for_each_present_cpu(i) {
211 if (i % 2 == 0) 211 if (cpu_thread_in_core(i) == 0)
212 /*
213 * Even-numbered logical cpus correspond to
214 * primary threads.
215 */
216 cpu_set(i, of_spin_map); 212 cpu_set(i, of_spin_map);
217 } 213 }
218 } else { 214 } else {
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index 010a51f59796..b73c369cc6f1 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -548,6 +548,11 @@ spufs_regs_read(struct file *file, char __user *buffer,
548 int ret; 548 int ret;
549 struct spu_context *ctx = file->private_data; 549 struct spu_context *ctx = file->private_data;
550 550
551 /* pre-check for file position: if we'd return EOF, there's no point
552 * causing a deschedule */
553 if (*pos >= sizeof(ctx->csa.lscsa->gprs))
554 return 0;
555
551 ret = spu_acquire_saved(ctx); 556 ret = spu_acquire_saved(ctx);
552 if (ret) 557 if (ret)
553 return ret; 558 return ret;
@@ -2426,38 +2431,49 @@ static inline int spufs_switch_log_avail(struct spu_context *ctx)
2426static int spufs_switch_log_open(struct inode *inode, struct file *file) 2431static int spufs_switch_log_open(struct inode *inode, struct file *file)
2427{ 2432{
2428 struct spu_context *ctx = SPUFS_I(inode)->i_ctx; 2433 struct spu_context *ctx = SPUFS_I(inode)->i_ctx;
2434 int rc;
2435
2436 rc = spu_acquire(ctx);
2437 if (rc)
2438 return rc;
2429 2439
2430 /*
2431 * We (ab-)use the mapping_lock here because it serves the similar
2432 * purpose for synchronizing open/close elsewhere. Maybe it should
2433 * be renamed eventually.
2434 */
2435 mutex_lock(&ctx->mapping_lock);
2436 if (ctx->switch_log) { 2440 if (ctx->switch_log) {
2437 spin_lock(&ctx->switch_log->lock); 2441 rc = -EBUSY;
2438 ctx->switch_log->head = 0; 2442 goto out;
2439 ctx->switch_log->tail = 0;
2440 spin_unlock(&ctx->switch_log->lock);
2441 } else {
2442 /*
2443 * We allocate the switch log data structures on first open.
2444 * They will never be free because we assume a context will
2445 * be traced until it goes away.
2446 */
2447 ctx->switch_log = kzalloc(sizeof(struct switch_log) +
2448 SWITCH_LOG_BUFSIZE * sizeof(struct switch_log_entry),
2449 GFP_KERNEL);
2450 if (!ctx->switch_log)
2451 goto out;
2452 spin_lock_init(&ctx->switch_log->lock);
2453 init_waitqueue_head(&ctx->switch_log->wait);
2454 } 2443 }
2455 mutex_unlock(&ctx->mapping_lock); 2444
2445 ctx->switch_log = kmalloc(sizeof(struct switch_log) +
2446 SWITCH_LOG_BUFSIZE * sizeof(struct switch_log_entry),
2447 GFP_KERNEL);
2448
2449 if (!ctx->switch_log) {
2450 rc = -ENOMEM;
2451 goto out;
2452 }
2453
2454 ctx->switch_log->head = ctx->switch_log->tail = 0;
2455 init_waitqueue_head(&ctx->switch_log->wait);
2456 rc = 0;
2457
2458out:
2459 spu_release(ctx);
2460 return rc;
2461}
2462
2463static int spufs_switch_log_release(struct inode *inode, struct file *file)
2464{
2465 struct spu_context *ctx = SPUFS_I(inode)->i_ctx;
2466 int rc;
2467
2468 rc = spu_acquire(ctx);
2469 if (rc)
2470 return rc;
2471
2472 kfree(ctx->switch_log);
2473 ctx->switch_log = NULL;
2474 spu_release(ctx);
2456 2475
2457 return 0; 2476 return 0;
2458 out:
2459 mutex_unlock(&ctx->mapping_lock);
2460 return -ENOMEM;
2461} 2477}
2462 2478
2463static int switch_log_sprint(struct spu_context *ctx, char *tbuf, int n) 2479static int switch_log_sprint(struct spu_context *ctx, char *tbuf, int n)
@@ -2485,42 +2501,54 @@ static ssize_t spufs_switch_log_read(struct file *file, char __user *buf,
2485 if (!buf || len < 0) 2501 if (!buf || len < 0)
2486 return -EINVAL; 2502 return -EINVAL;
2487 2503
2504 error = spu_acquire(ctx);
2505 if (error)
2506 return error;
2507
2488 while (cnt < len) { 2508 while (cnt < len) {
2489 char tbuf[128]; 2509 char tbuf[128];
2490 int width; 2510 int width;
2491 2511
2492 if (file->f_flags & O_NONBLOCK) { 2512 if (spufs_switch_log_used(ctx) == 0) {
2493 if (spufs_switch_log_used(ctx) <= 0) 2513 if (cnt > 0) {
2494 return cnt ? cnt : -EAGAIN; 2514 /* If there's data ready to go, we can
2495 } else { 2515 * just return straight away */
2496 /* Wait for data in buffer */ 2516 break;
2497 error = wait_event_interruptible(ctx->switch_log->wait, 2517
2498 spufs_switch_log_used(ctx) > 0); 2518 } else if (file->f_flags & O_NONBLOCK) {
2499 if (error) 2519 error = -EAGAIN;
2500 break; 2520 break;
2501 }
2502 2521
2503 spin_lock(&ctx->switch_log->lock); 2522 } else {
2504 if (ctx->switch_log->head == ctx->switch_log->tail) { 2523 /* spufs_wait will drop the mutex and
2505 /* multiple readers race? */ 2524 * re-acquire, but since we're in read(), the
2506 spin_unlock(&ctx->switch_log->lock); 2525 * file cannot be _released (and so
2507 continue; 2526 * ctx->switch_log is stable).
2527 */
2528 error = spufs_wait(ctx->switch_log->wait,
2529 spufs_switch_log_used(ctx) > 0);
2530
2531 /* On error, spufs_wait returns without the
2532 * state mutex held */
2533 if (error)
2534 return error;
2535
2536 /* We may have had entries read from underneath
2537 * us while we dropped the mutex in spufs_wait,
2538 * so re-check */
2539 if (spufs_switch_log_used(ctx) == 0)
2540 continue;
2541 }
2508 } 2542 }
2509 2543
2510 width = switch_log_sprint(ctx, tbuf, sizeof(tbuf)); 2544 width = switch_log_sprint(ctx, tbuf, sizeof(tbuf));
2511 if (width < len) { 2545 if (width < len)
2512 ctx->switch_log->tail = 2546 ctx->switch_log->tail =
2513 (ctx->switch_log->tail + 1) % 2547 (ctx->switch_log->tail + 1) %
2514 SWITCH_LOG_BUFSIZE; 2548 SWITCH_LOG_BUFSIZE;
2515 } 2549 else
2516 2550 /* If the record is greater than space available return
2517 spin_unlock(&ctx->switch_log->lock); 2551 * partial buffer (so far) */
2518
2519 /*
2520 * If the record is greater than space available return
2521 * partial buffer (so far)
2522 */
2523 if (width >= len)
2524 break; 2552 break;
2525 2553
2526 error = copy_to_user(buf + cnt, tbuf, width); 2554 error = copy_to_user(buf + cnt, tbuf, width);
@@ -2529,6 +2557,8 @@ static ssize_t spufs_switch_log_read(struct file *file, char __user *buf,
2529 cnt += width; 2557 cnt += width;
2530 } 2558 }
2531 2559
2560 spu_release(ctx);
2561
2532 return cnt == 0 ? error : cnt; 2562 return cnt == 0 ? error : cnt;
2533} 2563}
2534 2564
@@ -2537,29 +2567,41 @@ static unsigned int spufs_switch_log_poll(struct file *file, poll_table *wait)
2537 struct inode *inode = file->f_path.dentry->d_inode; 2567 struct inode *inode = file->f_path.dentry->d_inode;
2538 struct spu_context *ctx = SPUFS_I(inode)->i_ctx; 2568 struct spu_context *ctx = SPUFS_I(inode)->i_ctx;
2539 unsigned int mask = 0; 2569 unsigned int mask = 0;
2570 int rc;
2540 2571
2541 poll_wait(file, &ctx->switch_log->wait, wait); 2572 poll_wait(file, &ctx->switch_log->wait, wait);
2542 2573
2574 rc = spu_acquire(ctx);
2575 if (rc)
2576 return rc;
2577
2543 if (spufs_switch_log_used(ctx) > 0) 2578 if (spufs_switch_log_used(ctx) > 0)
2544 mask |= POLLIN; 2579 mask |= POLLIN;
2545 2580
2581 spu_release(ctx);
2582
2546 return mask; 2583 return mask;
2547} 2584}
2548 2585
2549static const struct file_operations spufs_switch_log_fops = { 2586static const struct file_operations spufs_switch_log_fops = {
2550 .owner = THIS_MODULE, 2587 .owner = THIS_MODULE,
2551 .open = spufs_switch_log_open, 2588 .open = spufs_switch_log_open,
2552 .read = spufs_switch_log_read, 2589 .read = spufs_switch_log_read,
2553 .poll = spufs_switch_log_poll, 2590 .poll = spufs_switch_log_poll,
2591 .release = spufs_switch_log_release,
2554}; 2592};
2555 2593
2594/**
2595 * Log a context switch event to a switch log reader.
2596 *
2597 * Must be called with ctx->state_mutex held.
2598 */
2556void spu_switch_log_notify(struct spu *spu, struct spu_context *ctx, 2599void spu_switch_log_notify(struct spu *spu, struct spu_context *ctx,
2557 u32 type, u32 val) 2600 u32 type, u32 val)
2558{ 2601{
2559 if (!ctx->switch_log) 2602 if (!ctx->switch_log)
2560 return; 2603 return;
2561 2604
2562 spin_lock(&ctx->switch_log->lock);
2563 if (spufs_switch_log_avail(ctx) > 1) { 2605 if (spufs_switch_log_avail(ctx) > 1) {
2564 struct switch_log_entry *p; 2606 struct switch_log_entry *p;
2565 2607
@@ -2573,7 +2615,6 @@ void spu_switch_log_notify(struct spu *spu, struct spu_context *ctx,
2573 ctx->switch_log->head = 2615 ctx->switch_log->head =
2574 (ctx->switch_log->head + 1) % SWITCH_LOG_BUFSIZE; 2616 (ctx->switch_log->head + 1) % SWITCH_LOG_BUFSIZE;
2575 } 2617 }
2576 spin_unlock(&ctx->switch_log->lock);
2577 2618
2578 wake_up(&ctx->switch_log->wait); 2619 wake_up(&ctx->switch_log->wait);
2579} 2620}
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c
index c9bb7cfd3dca..c58bd36b0c5b 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -249,6 +249,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc,
249 249
250 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); 250 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED);
251 clear_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags); 251 clear_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
252 spu_switch_log_notify(NULL, ctx, SWITCH_LOG_EXIT, *status);
252 spu_release(ctx); 253 spu_release(ctx);
253 254
254 if (signal_pending(current)) 255 if (signal_pending(current))
@@ -417,8 +418,6 @@ long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event)
417 ret = spu_run_fini(ctx, npc, &status); 418 ret = spu_run_fini(ctx, npc, &status);
418 spu_yield(ctx); 419 spu_yield(ctx);
419 420
420 spu_switch_log_notify(NULL, ctx, SWITCH_LOG_EXIT, status);
421
422 if ((status & SPU_STATUS_STOPPED_BY_STOP) && 421 if ((status & SPU_STATUS_STOPPED_BY_STOP) &&
423 (((status >> SPU_STOP_STATUS_SHIFT) & 0x3f00) == 0x2100)) 422 (((status >> SPU_STOP_STATUS_SHIFT) & 0x3f00) == 0x2100))
424 ctx->stats.libassist++; 423 ctx->stats.libassist++;
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 67595bc380dc..2ad914c47493 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -312,6 +312,15 @@ static struct spu *aff_ref_location(struct spu_context *ctx, int mem_aff,
312 */ 312 */
313 node = cpu_to_node(raw_smp_processor_id()); 313 node = cpu_to_node(raw_smp_processor_id());
314 for (n = 0; n < MAX_NUMNODES; n++, node++) { 314 for (n = 0; n < MAX_NUMNODES; n++, node++) {
315 /*
316 * "available_spus" counts how many spus are not potentially
317 * going to be used by other affinity gangs whose reference
318 * context is already in place. Although this code seeks to
319 * avoid having affinity gangs with a summed amount of
320 * contexts bigger than the amount of spus in the node,
321 * this may happen sporadically. In this case, available_spus
322 * becomes negative, which is harmless.
323 */
315 int available_spus; 324 int available_spus;
316 325
317 node = (node < MAX_NUMNODES) ? node : 0; 326 node = (node < MAX_NUMNODES) ? node : 0;
@@ -321,12 +330,10 @@ static struct spu *aff_ref_location(struct spu_context *ctx, int mem_aff,
321 available_spus = 0; 330 available_spus = 0;
322 mutex_lock(&cbe_spu_info[node].list_mutex); 331 mutex_lock(&cbe_spu_info[node].list_mutex);
323 list_for_each_entry(spu, &cbe_spu_info[node].spus, cbe_list) { 332 list_for_each_entry(spu, &cbe_spu_info[node].spus, cbe_list) {
324 if (spu->ctx && spu->ctx->gang 333 if (spu->ctx && spu->ctx->gang && !spu->ctx->aff_offset
325 && spu->ctx->aff_offset == 0) 334 && spu->ctx->gang->aff_ref_spu)
326 available_spus -= 335 available_spus -= spu->ctx->gang->contexts;
327 (spu->ctx->gang->contexts - 1); 336 available_spus++;
328 else
329 available_spus++;
330 } 337 }
331 if (available_spus < ctx->gang->contexts) { 338 if (available_spus < ctx->gang->contexts) {
332 mutex_unlock(&cbe_spu_info[node].list_mutex); 339 mutex_unlock(&cbe_spu_info[node].list_mutex);
@@ -437,6 +444,11 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
437 atomic_dec(&cbe_spu_info[spu->node].reserved_spus); 444 atomic_dec(&cbe_spu_info[spu->node].reserved_spus);
438 445
439 if (ctx->gang) 446 if (ctx->gang)
447 /*
448 * If ctx->gang->aff_sched_count is positive, SPU affinity is
449 * being considered in this gang. Using atomic_dec_if_positive
450 * allow us to skip an explicit check for affinity in this gang
451 */
440 atomic_dec_if_positive(&ctx->gang->aff_sched_count); 452 atomic_dec_if_positive(&ctx->gang->aff_sched_count);
441 453
442 spu_switch_notify(spu, NULL); 454 spu_switch_notify(spu, NULL);
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h
index 8ae8ef9dfc22..15c62d3ca129 100644
--- a/arch/powerpc/platforms/cell/spufs/spufs.h
+++ b/arch/powerpc/platforms/cell/spufs/spufs.h
@@ -65,7 +65,6 @@ enum {
65}; 65};
66 66
67struct switch_log { 67struct switch_log {
68 spinlock_t lock;
69 wait_queue_head_t wait; 68 wait_queue_head_t wait;
70 unsigned long head; 69 unsigned long head;
71 unsigned long tail; 70 unsigned long tail;
diff --git a/arch/powerpc/platforms/cell/spufs/sputrace.c b/arch/powerpc/platforms/cell/spufs/sputrace.c
index 2ece399f2862..d0b1f3f4d9c8 100644
--- a/arch/powerpc/platforms/cell/spufs/sputrace.c
+++ b/arch/powerpc/platforms/cell/spufs/sputrace.c
@@ -40,6 +40,7 @@ static DECLARE_WAIT_QUEUE_HEAD(sputrace_wait);
40static ktime_t sputrace_start; 40static ktime_t sputrace_start;
41static unsigned long sputrace_head, sputrace_tail; 41static unsigned long sputrace_head, sputrace_tail;
42static struct sputrace *sputrace_log; 42static struct sputrace *sputrace_log;
43static int sputrace_logging;
43 44
44static int sputrace_used(void) 45static int sputrace_used(void)
45{ 46{
@@ -79,6 +80,11 @@ static ssize_t sputrace_read(struct file *file, char __user *buf,
79 char tbuf[128]; 80 char tbuf[128];
80 int width; 81 int width;
81 82
83 /* If we have data ready to return, don't block waiting
84 * for more */
85 if (cnt > 0 && sputrace_used() == 0)
86 break;
87
82 error = wait_event_interruptible(sputrace_wait, 88 error = wait_event_interruptible(sputrace_wait,
83 sputrace_used() > 0); 89 sputrace_used() > 0);
84 if (error) 90 if (error)
@@ -109,24 +115,49 @@ static ssize_t sputrace_read(struct file *file, char __user *buf,
109 115
110static int sputrace_open(struct inode *inode, struct file *file) 116static int sputrace_open(struct inode *inode, struct file *file)
111{ 117{
118 int rc;
119
112 spin_lock(&sputrace_lock); 120 spin_lock(&sputrace_lock);
121 if (sputrace_logging) {
122 rc = -EBUSY;
123 goto out;
124 }
125
126 sputrace_logging = 1;
113 sputrace_head = sputrace_tail = 0; 127 sputrace_head = sputrace_tail = 0;
114 sputrace_start = ktime_get(); 128 sputrace_start = ktime_get();
129 rc = 0;
130
131out:
115 spin_unlock(&sputrace_lock); 132 spin_unlock(&sputrace_lock);
133 return rc;
134}
116 135
136static int sputrace_release(struct inode *inode, struct file *file)
137{
138 spin_lock(&sputrace_lock);
139 sputrace_logging = 0;
140 spin_unlock(&sputrace_lock);
117 return 0; 141 return 0;
118} 142}
119 143
120static const struct file_operations sputrace_fops = { 144static const struct file_operations sputrace_fops = {
121 .owner = THIS_MODULE, 145 .owner = THIS_MODULE,
122 .open = sputrace_open, 146 .open = sputrace_open,
123 .read = sputrace_read, 147 .read = sputrace_read,
148 .release = sputrace_release,
124}; 149};
125 150
126static void sputrace_log_item(const char *name, struct spu_context *ctx, 151static void sputrace_log_item(const char *name, struct spu_context *ctx,
127 struct spu *spu) 152 struct spu *spu)
128{ 153{
129 spin_lock(&sputrace_lock); 154 spin_lock(&sputrace_lock);
155
156 if (!sputrace_logging) {
157 spin_unlock(&sputrace_lock);
158 return;
159 }
160
130 if (sputrace_avail() > 1) { 161 if (sputrace_avail() > 1) {
131 struct sputrace *t = sputrace_log + sputrace_head; 162 struct sputrace *t = sputrace_log + sputrace_head;
132 163
diff --git a/arch/powerpc/platforms/cell/spufs/syscalls.c b/arch/powerpc/platforms/cell/spufs/syscalls.c
index 49c87769b1f8..c23617c6baf3 100644
--- a/arch/powerpc/platforms/cell/spufs/syscalls.c
+++ b/arch/powerpc/platforms/cell/spufs/syscalls.c
@@ -69,9 +69,9 @@ static long do_spu_create(const char __user *pathname, unsigned int flags,
69 if (!IS_ERR(tmp)) { 69 if (!IS_ERR(tmp)) {
70 struct nameidata nd; 70 struct nameidata nd;
71 71
72 ret = path_lookup(tmp, LOOKUP_PARENT| 72 ret = path_lookup(tmp, LOOKUP_PARENT, &nd);
73 LOOKUP_OPEN|LOOKUP_CREATE, &nd);
74 if (!ret) { 73 if (!ret) {
74 nd.flags |= LOOKUP_OPEN | LOOKUP_CREATE;
75 ret = spufs_create(&nd, flags, mode, neighbor); 75 ret = spufs_create(&nd, flags, mode, neighbor);
76 path_put(&nd.path); 76 path_put(&nd.path);
77 } 77 }
diff --git a/arch/powerpc/platforms/embedded6xx/c2k.c b/arch/powerpc/platforms/embedded6xx/c2k.c
index d0b25b8c39d1..32ba0fa0ad03 100644
--- a/arch/powerpc/platforms/embedded6xx/c2k.c
+++ b/arch/powerpc/platforms/embedded6xx/c2k.c
@@ -116,10 +116,7 @@ static void c2k_restart(char *cmd)
116 116
117void c2k_show_cpuinfo(struct seq_file *m) 117void c2k_show_cpuinfo(struct seq_file *m)
118{ 118{
119 uint memsize = total_memory;
120
121 seq_printf(m, "Vendor\t\t: GEFanuc\n"); 119 seq_printf(m, "Vendor\t\t: GEFanuc\n");
122 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
123 seq_printf(m, "coherency\t: %s\n", COHERENCY_SETTING); 120 seq_printf(m, "coherency\t: %s\n", COHERENCY_SETTING);
124} 121}
125 122
diff --git a/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/arch/powerpc/platforms/embedded6xx/prpmc2800.c
index 5a19b9a1457c..4c485e984236 100644
--- a/arch/powerpc/platforms/embedded6xx/prpmc2800.c
+++ b/arch/powerpc/platforms/embedded6xx/prpmc2800.c
@@ -119,10 +119,7 @@ static void prpmc2800_restart(char *cmd)
119 119
120void prpmc2800_show_cpuinfo(struct seq_file *m) 120void prpmc2800_show_cpuinfo(struct seq_file *m)
121{ 121{
122 uint memsize = total_memory;
123
124 seq_printf(m, "Vendor\t\t: Motorola\n"); 122 seq_printf(m, "Vendor\t\t: Motorola\n");
125 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
126 seq_printf(m, "coherency\t: %s\n", PPRPM2800_COHERENCY_SETTING); 123 seq_printf(m, "coherency\t: %s\n", PPRPM2800_COHERENCY_SETTING);
127} 124}
128 125
diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
index 140d02a5232a..a623ad256e9e 100644
--- a/arch/powerpc/platforms/pseries/hotplug-memory.c
+++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
@@ -22,6 +22,12 @@ static int pseries_remove_lmb(unsigned long base, unsigned int lmb_size)
22 int ret; 22 int ret;
23 23
24 start_pfn = base >> PAGE_SHIFT; 24 start_pfn = base >> PAGE_SHIFT;
25
26 if (!pfn_valid(start_pfn)) {
27 lmb_remove(base, lmb_size);
28 return 0;
29 }
30
25 zone = page_zone(pfn_to_page(start_pfn)); 31 zone = page_zone(pfn_to_page(start_pfn));
26 32
27 /* 33 /*
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index a8c446697f9e..d56491d182d3 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -44,6 +44,7 @@
44#include <asm/tce.h> 44#include <asm/tce.h>
45#include <asm/ppc-pci.h> 45#include <asm/ppc-pci.h>
46#include <asm/udbg.h> 46#include <asm/udbg.h>
47#include <asm/kdump.h>
47 48
48#include "plpar_wrappers.h" 49#include "plpar_wrappers.h"
49 50
@@ -291,9 +292,8 @@ static void iommu_table_setparms(struct pci_controller *phb,
291 292
292 tbl->it_base = (unsigned long)__va(*basep); 293 tbl->it_base = (unsigned long)__va(*basep);
293 294
294#ifndef CONFIG_CRASH_DUMP 295 if (!__kdump_flag)
295 memset((void *)tbl->it_base, 0, *sizep); 296 memset((void *)tbl->it_base, 0, *sizep);
296#endif
297 297
298 tbl->it_busno = phb->bus->number; 298 tbl->it_busno = phb->bus->number;
299 299
diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c
index e00f96baa381..1a231c389ba0 100644
--- a/arch/powerpc/platforms/pseries/smp.c
+++ b/arch/powerpc/platforms/pseries/smp.c
@@ -52,8 +52,8 @@
52 52
53 53
54/* 54/*
55 * The primary thread of each non-boot processor is recorded here before 55 * The Primary thread of each non-boot processor was started from the OF client
56 * smp init. 56 * interface by prom_hold_cpus and is spinning on secondary_hold_spinloop.
57 */ 57 */
58static cpumask_t of_spin_map; 58static cpumask_t of_spin_map;
59 59
@@ -161,8 +161,7 @@ static void __devinit smp_pSeries_kick_cpu(int nr)
161static int smp_pSeries_cpu_bootable(unsigned int nr) 161static int smp_pSeries_cpu_bootable(unsigned int nr)
162{ 162{
163 /* Special case - we inhibit secondary thread startup 163 /* Special case - we inhibit secondary thread startup
164 * during boot if the user requests it. Odd-numbered 164 * during boot if the user requests it.
165 * cpus are assumed to be secondary threads.
166 */ 165 */
167 if (system_state < SYSTEM_RUNNING && 166 if (system_state < SYSTEM_RUNNING &&
168 cpu_has_feature(CPU_FTR_SMT) && 167 cpu_has_feature(CPU_FTR_SMT) &&
@@ -199,11 +198,7 @@ static void __init smp_init_pseries(void)
199 /* Mark threads which are still spinning in hold loops. */ 198 /* Mark threads which are still spinning in hold loops. */
200 if (cpu_has_feature(CPU_FTR_SMT)) { 199 if (cpu_has_feature(CPU_FTR_SMT)) {
201 for_each_present_cpu(i) { 200 for_each_present_cpu(i) {
202 if (i % 2 == 0) 201 if (cpu_thread_in_core(i) == 0)
203 /*
204 * Even-numbered logical cpus correspond to
205 * primary threads.
206 */
207 cpu_set(i, of_spin_map); 202 cpu_set(i, of_spin_map);
208 } 203 }
209 } else { 204 } else {
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index a44709a94f97..5afce115ab1f 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -37,6 +37,7 @@ obj-$(CONFIG_OF_RTC) += of_rtc.o
37ifeq ($(CONFIG_PCI),y) 37ifeq ($(CONFIG_PCI),y)
38obj-$(CONFIG_4xx) += ppc4xx_pci.o 38obj-$(CONFIG_4xx) += ppc4xx_pci.o
39endif 39endif
40obj-$(CONFIG_PPC4xx_GPIO) += ppc4xx_gpio.o
40 41
41obj-$(CONFIG_CPM) += cpm_common.o 42obj-$(CONFIG_CPM) += cpm_common.o
42obj-$(CONFIG_CPM2) += cpm2.o cpm2_pic.o 43obj-$(CONFIG_CPM2) += cpm2.o cpm2_pic.o
diff --git a/arch/powerpc/sysdev/ppc4xx_gpio.c b/arch/powerpc/sysdev/ppc4xx_gpio.c
new file mode 100644
index 000000000000..110efe2a54fc
--- /dev/null
+++ b/arch/powerpc/sysdev/ppc4xx_gpio.c
@@ -0,0 +1,217 @@
1/*
2 * PPC4xx gpio driver
3 *
4 * Copyright (c) 2008 Harris Corporation
5 * Copyright (c) 2008 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
6 * Copyright (c) MontaVista Software, Inc. 2008.
7 *
8 * Author: Steve Falco <sfalco@harris.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2
12 * as published by the Free Software Foundation.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
24#include <linux/kernel.h>
25#include <linux/init.h>
26#include <linux/spinlock.h>
27#include <linux/io.h>
28#include <linux/of.h>
29#include <linux/of_gpio.h>
30#include <linux/gpio.h>
31#include <linux/types.h>
32
33#define GPIO_MASK(gpio) (0x80000000 >> (gpio))
34#define GPIO_MASK2(gpio) (0xc0000000 >> ((gpio) * 2))
35
36/* Physical GPIO register layout */
37struct ppc4xx_gpio {
38 __be32 or;
39 __be32 tcr;
40 __be32 osrl;
41 __be32 osrh;
42 __be32 tsrl;
43 __be32 tsrh;
44 __be32 odr;
45 __be32 ir;
46 __be32 rr1;
47 __be32 rr2;
48 __be32 rr3;
49 __be32 reserved1;
50 __be32 isr1l;
51 __be32 isr1h;
52 __be32 isr2l;
53 __be32 isr2h;
54 __be32 isr3l;
55 __be32 isr3h;
56};
57
58struct ppc4xx_gpio_chip {
59 struct of_mm_gpio_chip mm_gc;
60 spinlock_t lock;
61};
62
63/*
64 * GPIO LIB API implementation for GPIOs
65 *
66 * There are a maximum of 32 gpios in each gpio controller.
67 */
68
69static inline struct ppc4xx_gpio_chip *
70to_ppc4xx_gpiochip(struct of_mm_gpio_chip *mm_gc)
71{
72 return container_of(mm_gc, struct ppc4xx_gpio_chip, mm_gc);
73}
74
75static int ppc4xx_gpio_get(struct gpio_chip *gc, unsigned int gpio)
76{
77 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
78 struct ppc4xx_gpio __iomem *regs = mm_gc->regs;
79
80 return in_be32(&regs->ir) & GPIO_MASK(gpio);
81}
82
83static inline void
84__ppc4xx_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
85{
86 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
87 struct ppc4xx_gpio __iomem *regs = mm_gc->regs;
88
89 if (val)
90 setbits32(&regs->or, GPIO_MASK(gpio));
91 else
92 clrbits32(&regs->or, GPIO_MASK(gpio));
93}
94
95static void
96ppc4xx_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
97{
98 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
99 struct ppc4xx_gpio_chip *chip = to_ppc4xx_gpiochip(mm_gc);
100 unsigned long flags;
101
102 spin_lock_irqsave(&chip->lock, flags);
103
104 __ppc4xx_gpio_set(gc, gpio, val);
105
106 spin_unlock_irqrestore(&chip->lock, flags);
107
108 pr_debug("%s: gpio: %d val: %d\n", __func__, gpio, val);
109}
110
111static int ppc4xx_gpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
112{
113 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
114 struct ppc4xx_gpio_chip *chip = to_ppc4xx_gpiochip(mm_gc);
115 struct ppc4xx_gpio __iomem *regs = mm_gc->regs;
116 unsigned long flags;
117
118 spin_lock_irqsave(&chip->lock, flags);
119
120 /* Disable open-drain function */
121 clrbits32(&regs->odr, GPIO_MASK(gpio));
122
123 /* Float the pin */
124 clrbits32(&regs->tcr, GPIO_MASK(gpio));
125
126 /* Bits 0-15 use TSRL/OSRL, bits 16-31 use TSRH/OSRH */
127 if (gpio < 16) {
128 clrbits32(&regs->osrl, GPIO_MASK2(gpio));
129 clrbits32(&regs->tsrl, GPIO_MASK2(gpio));
130 } else {
131 clrbits32(&regs->osrh, GPIO_MASK2(gpio));
132 clrbits32(&regs->tsrh, GPIO_MASK2(gpio));
133 }
134
135 spin_unlock_irqrestore(&chip->lock, flags);
136
137 return 0;
138}
139
140static int
141ppc4xx_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
142{
143 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
144 struct ppc4xx_gpio_chip *chip = to_ppc4xx_gpiochip(mm_gc);
145 struct ppc4xx_gpio __iomem *regs = mm_gc->regs;
146 unsigned long flags;
147
148 spin_lock_irqsave(&chip->lock, flags);
149
150 /* First set initial value */
151 __ppc4xx_gpio_set(gc, gpio, val);
152
153 /* Disable open-drain function */
154 clrbits32(&regs->odr, GPIO_MASK(gpio));
155
156 /* Drive the pin */
157 setbits32(&regs->tcr, GPIO_MASK(gpio));
158
159 /* Bits 0-15 use TSRL, bits 16-31 use TSRH */
160 if (gpio < 16) {
161 clrbits32(&regs->osrl, GPIO_MASK2(gpio));
162 clrbits32(&regs->tsrl, GPIO_MASK2(gpio));
163 } else {
164 clrbits32(&regs->osrh, GPIO_MASK2(gpio));
165 clrbits32(&regs->tsrh, GPIO_MASK2(gpio));
166 }
167
168 spin_unlock_irqrestore(&chip->lock, flags);
169
170 pr_debug("%s: gpio: %d val: %d\n", __func__, gpio, val);
171
172 return 0;
173}
174
175static int __init ppc4xx_add_gpiochips(void)
176{
177 struct device_node *np;
178
179 for_each_compatible_node(np, NULL, "ibm,ppc4xx-gpio") {
180 int ret;
181 struct ppc4xx_gpio_chip *ppc4xx_gc;
182 struct of_mm_gpio_chip *mm_gc;
183 struct of_gpio_chip *of_gc;
184 struct gpio_chip *gc;
185
186 ppc4xx_gc = kzalloc(sizeof(*ppc4xx_gc), GFP_KERNEL);
187 if (!ppc4xx_gc) {
188 ret = -ENOMEM;
189 goto err;
190 }
191
192 spin_lock_init(&ppc4xx_gc->lock);
193
194 mm_gc = &ppc4xx_gc->mm_gc;
195 of_gc = &mm_gc->of_gc;
196 gc = &of_gc->gc;
197
198 of_gc->gpio_cells = 2;
199 gc->ngpio = 32;
200 gc->direction_input = ppc4xx_gpio_dir_in;
201 gc->direction_output = ppc4xx_gpio_dir_out;
202 gc->get = ppc4xx_gpio_get;
203 gc->set = ppc4xx_gpio_set;
204
205 ret = of_mm_gpiochip_add(np, mm_gc);
206 if (ret)
207 goto err;
208 continue;
209err:
210 pr_err("%s: registration failed with status %d\n",
211 np->full_name, ret);
212 kfree(ppc4xx_gc);
213 /* try others anyway */
214 }
215 return 0;
216}
217arch_initcall(ppc4xx_add_gpiochips);
diff --git a/arch/sh/boards/board-ap325rxa.c b/arch/sh/boards/board-ap325rxa.c
index 7c7874e6ac36..8881a643ac32 100644
--- a/arch/sh/boards/board-ap325rxa.c
+++ b/arch/sh/boards/board-ap325rxa.c
@@ -15,6 +15,7 @@
15#include <linux/interrupt.h> 15#include <linux/interrupt.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/mtd/physmap.h> 17#include <linux/mtd/physmap.h>
18#include <linux/mtd/sh_flctl.h>
18#include <linux/delay.h> 19#include <linux/delay.h>
19#include <linux/i2c.h> 20#include <linux/i2c.h>
20#include <linux/smc911x.h> 21#include <linux/smc911x.h>
@@ -108,10 +109,45 @@ static struct platform_device ap325rxa_nor_flash_device = {
108 }, 109 },
109}; 110};
110 111
112static struct mtd_partition nand_partition_info[] = {
113 {
114 .name = "nand_data",
115 .offset = 0,
116 .size = MTDPART_SIZ_FULL,
117 },
118};
119
120static struct resource nand_flash_resources[] = {
121 [0] = {
122 .start = 0xa4530000,
123 .end = 0xa45300ff,
124 .flags = IORESOURCE_MEM,
125 }
126};
127
128static struct sh_flctl_platform_data nand_flash_data = {
129 .parts = nand_partition_info,
130 .nr_parts = ARRAY_SIZE(nand_partition_info),
131 .flcmncr_val = FCKSEL_E | TYPESEL_SET | NANWF_E,
132 .has_hwecc = 1,
133};
134
135static struct platform_device nand_flash_device = {
136 .name = "sh_flctl",
137 .resource = nand_flash_resources,
138 .num_resources = ARRAY_SIZE(nand_flash_resources),
139 .dev = {
140 .platform_data = &nand_flash_data,
141 },
142};
143
111#define FPGA_LCDREG 0xB4100180 144#define FPGA_LCDREG 0xB4100180
112#define FPGA_BKLREG 0xB4100212 145#define FPGA_BKLREG 0xB4100212
113#define FPGA_LCDREG_VAL 0x0018 146#define FPGA_LCDREG_VAL 0x0018
114#define PORT_MSELCRB 0xA4050182 147#define PORT_MSELCRB 0xA4050182
148#define PORT_HIZCRC 0xA405015C
149#define PORT_DRVCRA 0xA405018A
150#define PORT_DRVCRB 0xA405018C
115 151
116static void ap320_wvga_power_on(void *board_data) 152static void ap320_wvga_power_on(void *board_data)
117{ 153{
@@ -282,6 +318,7 @@ static struct platform_device *ap325rxa_devices[] __initdata = {
282#ifdef CONFIG_I2C 318#ifdef CONFIG_I2C
283 &camera_device, 319 &camera_device,
284#endif 320#endif
321 &nand_flash_device,
285}; 322};
286 323
287static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = { 324static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = {
@@ -364,21 +401,36 @@ static int __init ap325rxa_devices_setup(void)
364 401
365 ctrl_outw(ctrl_inw(PORT_MSELCRB) & ~0x0001, PORT_MSELCRB); 402 ctrl_outw(ctrl_inw(PORT_MSELCRB) & ~0x0001, PORT_MSELCRB);
366 403
404 /* FLCTL */
405 gpio_request(GPIO_FN_FCE, NULL);
406 gpio_request(GPIO_FN_NAF7, NULL);
407 gpio_request(GPIO_FN_NAF6, NULL);
408 gpio_request(GPIO_FN_NAF5, NULL);
409 gpio_request(GPIO_FN_NAF4, NULL);
410 gpio_request(GPIO_FN_NAF3, NULL);
411 gpio_request(GPIO_FN_NAF2, NULL);
412 gpio_request(GPIO_FN_NAF1, NULL);
413 gpio_request(GPIO_FN_NAF0, NULL);
414 gpio_request(GPIO_FN_FCDE, NULL);
415 gpio_request(GPIO_FN_FOE, NULL);
416 gpio_request(GPIO_FN_FSC, NULL);
417 gpio_request(GPIO_FN_FWE, NULL);
418 gpio_request(GPIO_FN_FRB, NULL);
419
420 ctrl_outw(0, PORT_HIZCRC);
421 ctrl_outw(0xFFFF, PORT_DRVCRA);
422 ctrl_outw(0xFFFF, PORT_DRVCRB);
423
367 platform_resource_setup_memory(&ceu_device, "ceu", 4 << 20); 424 platform_resource_setup_memory(&ceu_device, "ceu", 4 << 20);
368 425
369 i2c_register_board_info(0, ap325rxa_i2c_devices, 426 i2c_register_board_info(0, ap325rxa_i2c_devices,
370 ARRAY_SIZE(ap325rxa_i2c_devices)); 427 ARRAY_SIZE(ap325rxa_i2c_devices));
371 428
372 return platform_add_devices(ap325rxa_devices, 429 return platform_add_devices(ap325rxa_devices,
373 ARRAY_SIZE(ap325rxa_devices)); 430 ARRAY_SIZE(ap325rxa_devices));
374} 431}
375device_initcall(ap325rxa_devices_setup); 432device_initcall(ap325rxa_devices_setup);
376 433
377static void __init ap325rxa_setup(char **cmdline_p)
378{
379}
380
381static struct sh_machine_vector mv_ap325rxa __initmv = { 434static struct sh_machine_vector mv_ap325rxa __initmv = {
382 .mv_name = "AP-325RXA", 435 .mv_name = "AP-325RXA",
383 .mv_setup = ap325rxa_setup,
384}; 436};
diff --git a/arch/sh/boards/board-rsk7203.c b/arch/sh/boards/board-rsk7203.c
index ded799cf3eae..58266f06134a 100644
--- a/arch/sh/boards/board-rsk7203.c
+++ b/arch/sh/boards/board-rsk7203.c
@@ -17,9 +17,10 @@
17#include <linux/mtd/map.h> 17#include <linux/mtd/map.h>
18#include <linux/smc911x.h> 18#include <linux/smc911x.h>
19#include <linux/gpio.h> 19#include <linux/gpio.h>
20#include <linux/leds.h>
20#include <asm/machvec.h> 21#include <asm/machvec.h>
21#include <asm/io.h> 22#include <asm/io.h>
22#include <asm/sh7203.h> 23#include <cpu/sh7203.h>
23 24
24static struct smc911x_platdata smc911x_info = { 25static struct smc911x_platdata smc911x_info = {
25 .flags = SMC911X_USE_16BIT, 26 .flags = SMC911X_USE_16BIT,
@@ -116,10 +117,46 @@ static void __init set_mtd_partitions(void)
116 } 117 }
117} 118}
118 119
120static struct gpio_led rsk7203_gpio_leds[] = {
121 {
122 .name = "green",
123 .gpio = GPIO_PE10,
124 .active_low = 1,
125 }, {
126 .name = "orange",
127 .default_trigger = "nand-disk",
128 .gpio = GPIO_PE12,
129 .active_low = 1,
130 }, {
131 .name = "red:timer",
132 .default_trigger = "timer",
133 .gpio = GPIO_PC14,
134 .active_low = 1,
135 }, {
136 .name = "red:heartbeat",
137 .default_trigger = "heartbeat",
138 .gpio = GPIO_PE11,
139 .active_low = 1,
140 },
141};
142
143static struct gpio_led_platform_data rsk7203_gpio_leds_info = {
144 .leds = rsk7203_gpio_leds,
145 .num_leds = ARRAY_SIZE(rsk7203_gpio_leds),
146};
147
148static struct platform_device led_device = {
149 .name = "leds-gpio",
150 .id = -1,
151 .dev = {
152 .platform_data = &rsk7203_gpio_leds_info,
153 },
154};
119 155
120static struct platform_device *rsk7203_devices[] __initdata = { 156static struct platform_device *rsk7203_devices[] __initdata = {
121 &smc911x_device, 157 &smc911x_device,
122 &flash_device, 158 &flash_device,
159 &led_device,
123}; 160};
124 161
125static int __init rsk7203_devices_setup(void) 162static int __init rsk7203_devices_setup(void)
@@ -128,11 +165,6 @@ static int __init rsk7203_devices_setup(void)
128 gpio_request(GPIO_FN_TXD0, NULL); 165 gpio_request(GPIO_FN_TXD0, NULL);
129 gpio_request(GPIO_FN_RXD0, NULL); 166 gpio_request(GPIO_FN_RXD0, NULL);
130 167
131 /* Lit LED0 */
132 gpio_request(GPIO_PE10, NULL);
133 gpio_direction_output(GPIO_PE10, 0);
134 gpio_export(GPIO_PE10, 0);
135
136 set_mtd_partitions(); 168 set_mtd_partitions();
137 return platform_add_devices(rsk7203_devices, 169 return platform_add_devices(rsk7203_devices,
138 ARRAY_SIZE(rsk7203_devices)); 170 ARRAY_SIZE(rsk7203_devices));
diff --git a/arch/sh/boards/mach-highlander/Kconfig b/arch/sh/boards/mach-highlander/Kconfig
index fc8f28e04ba3..08057f62687b 100644
--- a/arch/sh/boards/mach-highlander/Kconfig
+++ b/arch/sh/boards/mach-highlander/Kconfig
@@ -18,6 +18,7 @@ config SH_R7780MP
18config SH_R7785RP 18config SH_R7785RP
19 bool "R7785RP board support" 19 bool "R7785RP board support"
20 depends on CPU_SUBTYPE_SH7785 20 depends on CPU_SUBTYPE_SH7785
21 select GENERIC_GPIO
21 22
22endchoice 23endchoice
23 24
diff --git a/arch/sh/boards/mach-highlander/Makefile b/arch/sh/boards/mach-highlander/Makefile
index 20a10080b11f..d93aaf880134 100644
--- a/arch/sh/boards/mach-highlander/Makefile
+++ b/arch/sh/boards/mach-highlander/Makefile
@@ -1,10 +1,10 @@
1# 1#
2# Makefile for the R7780RP-1 specific parts of the kernel 2# Makefile for the Highlander specific parts of the kernel
3# 3#
4irqinit-$(CONFIG_SH_R7780MP) := irq-r7780mp.o 4obj-y := setup.o
5irqinit-$(CONFIG_SH_R7785RP) := irq-r7785rp.o 5obj-$(CONFIG_SH_R7780RP) += irq-r7780rp.o
6irqinit-$(CONFIG_SH_R7780RP) := irq-r7780rp.o 6obj-$(CONFIG_SH_R7780MP) += irq-r7780mp.o
7obj-y := setup.o $(irqinit-y) 7obj-$(CONFIG_SH_R7785RP) += irq-r7785rp.o pinmux-r7785rp.o
8 8
9ifneq ($(CONFIG_SH_R7785RP),y) 9ifneq ($(CONFIG_SH_R7785RP),y)
10obj-$(CONFIG_PUSH_SWITCH) += psw.o 10obj-$(CONFIG_PUSH_SWITCH) += psw.o
diff --git a/arch/sh/boards/mach-highlander/pinmux-r7785rp.c b/arch/sh/boards/mach-highlander/pinmux-r7785rp.c
new file mode 100644
index 000000000000..c77a2bea8f2a
--- /dev/null
+++ b/arch/sh/boards/mach-highlander/pinmux-r7785rp.c
@@ -0,0 +1,20 @@
1/*
2 * Copyright (C) 2008 Paul Mundt
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8#include <linux/init.h>
9#include <linux/gpio.h>
10#include <cpu/sh7785.h>
11
12void __init highlander_plat_pinmux_setup(void)
13{
14 /* SCIF0 */
15 gpio_request(GPIO_FN_SCIF0_CTS, NULL);
16 gpio_request(GPIO_FN_SCIF0_RTS, NULL);
17 gpio_request(GPIO_FN_SCIF0_SCK, NULL);
18 gpio_request(GPIO_FN_SCIF0_RXD, NULL);
19 gpio_request(GPIO_FN_SCIF0_TXD, NULL);
20}
diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c
index c5a40f7906d7..806438b42cac 100644
--- a/arch/sh/boards/mach-highlander/setup.c
+++ b/arch/sh/boards/mach-highlander/setup.c
@@ -294,6 +294,8 @@ static void __init highlander_setup(char **cmdline_p)
294 (ver >> 12) & 0xf, (ver >> 8) & 0xf, 294 (ver >> 12) & 0xf, (ver >> 8) & 0xf,
295 (ver >> 4) & 0xf, ver & 0xf); 295 (ver >> 4) & 0xf, ver & 0xf);
296 296
297 highlander_plat_pinmux_setup();
298
297 /* 299 /*
298 * Enable the important clocks right away.. 300 * Enable the important clocks right away..
299 */ 301 */
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c
index 769d63043424..975281980299 100644
--- a/arch/sh/boards/mach-migor/setup.c
+++ b/arch/sh/boards/mach-migor/setup.c
@@ -288,8 +288,11 @@ static struct clk *camera_clk;
288 288
289static void camera_power_on(void) 289static void camera_power_on(void)
290{ 290{
291 /* Use 10 MHz VIO_CKO instead of 24 MHz to work
292 * around signal quality issues on Panel Board V2.1.
293 */
291 camera_clk = clk_get(NULL, "video_clk"); 294 camera_clk = clk_get(NULL, "video_clk");
292 clk_set_rate(camera_clk, 24000000); 295 clk_set_rate(camera_clk, 10000000);
293 clk_enable(camera_clk); /* start VIO_CKO */ 296 clk_enable(camera_clk); /* start VIO_CKO */
294 297
295 /* use VIO_RST to take camera out of reset */ 298 /* use VIO_RST to take camera out of reset */
@@ -307,10 +310,18 @@ static void camera_power_off(void)
307 gpio_set_value(GPIO_PTT3, 0); 310 gpio_set_value(GPIO_PTT3, 0);
308} 311}
309 312
313static void camera_power(int mode)
314{
315 if (mode)
316 camera_power_on();
317 else
318 camera_power_off();
319}
320
310#ifdef CONFIG_I2C 321#ifdef CONFIG_I2C
311static unsigned char camera_ov772x_magic[] = 322static unsigned char camera_ov772x_magic[] =
312{ 323{
313 0x09, 0x01, 0x0c, 0x10, 0x0d, 0x41, 0x0e, 0x01, 324 0x09, 0x01, 0x0c, 0x20, 0x0d, 0x41, 0x0e, 0x01,
314 0x12, 0x00, 0x13, 0x8F, 0x14, 0x4A, 0x15, 0x00, 325 0x12, 0x00, 0x13, 0x8F, 0x14, 0x4A, 0x15, 0x00,
315 0x16, 0x00, 0x17, 0x23, 0x18, 0xa0, 0x19, 0x07, 326 0x16, 0x00, 0x17, 0x23, 0x18, 0xa0, 0x19, 0x07,
316 0x1a, 0xf0, 0x1b, 0x40, 0x1f, 0x00, 0x20, 0x10, 327 0x1a, 0xf0, 0x1b, 0x40, 0x1f, 0x00, 0x20, 0x10,
@@ -386,6 +397,7 @@ static struct soc_camera_platform_info ov772x_info = {
386 }, 397 },
387 .bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH | 398 .bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH |
388 SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8, 399 SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8,
400 .power = camera_power,
389 .set_capture = ov772x_set_capture, 401 .set_capture = ov772x_set_capture,
390}; 402};
391 403
@@ -400,8 +412,6 @@ static struct platform_device migor_camera_device = {
400static struct sh_mobile_ceu_info sh_mobile_ceu_info = { 412static struct sh_mobile_ceu_info sh_mobile_ceu_info = {
401 .flags = SOCAM_MASTER | SOCAM_DATAWIDTH_8 | SOCAM_PCLK_SAMPLE_RISING \ 413 .flags = SOCAM_MASTER | SOCAM_DATAWIDTH_8 | SOCAM_PCLK_SAMPLE_RISING \
402 | SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_HIGH, 414 | SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_HIGH,
403 .enable_camera = camera_power_on,
404 .disable_camera = camera_power_off,
405}; 415};
406 416
407static struct resource migor_ceu_resources[] = { 417static struct resource migor_ceu_resources[] = {
diff --git a/arch/sh/configs/ap325rxa_defconfig b/arch/sh/configs/ap325rxa_defconfig
index 851c870adf3b..874dd9726e52 100644
--- a/arch/sh/configs/ap325rxa_defconfig
+++ b/arch/sh/configs/ap325rxa_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.27-rc4 3# Linux kernel version: 2.6.27
4# Tue Aug 26 14:21:17 2008 4# Tue Oct 21 18:20:06 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -13,11 +13,12 @@ CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_GPIO=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
@@ -72,22 +73,20 @@ CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y 73CONFIG_TIMERFD=y
73CONFIG_EVENTFD=y 74CONFIG_EVENTFD=y
74CONFIG_SHMEM=y 75CONFIG_SHMEM=y
76CONFIG_AIO=y
75CONFIG_VM_EVENT_COUNTERS=y 77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
76CONFIG_SLAB=y 79CONFIG_SLAB=y
77# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set 82# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set 83# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y 84CONFIG_HAVE_OPROFILE=y
82# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 85CONFIG_HAVE_IOREMAP_PROT=y
83# CONFIG_HAVE_IOREMAP_PROT is not set 86CONFIG_HAVE_KPROBES=y
84# CONFIG_HAVE_KPROBES is not set 87CONFIG_HAVE_KRETPROBES=y
85# CONFIG_HAVE_KRETPROBES is not set 88CONFIG_HAVE_ARCH_TRACEHOOK=y
86# CONFIG_HAVE_ARCH_TRACEHOOK is not set
87# CONFIG_HAVE_DMA_ATTRS is not set
88# CONFIG_USE_GENERIC_SMP_HELPERS is not set
89CONFIG_HAVE_CLK=y 89CONFIG_HAVE_CLK=y
90CONFIG_PROC_PAGE_MONITOR=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
92CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
93CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
@@ -120,6 +119,7 @@ CONFIG_DEFAULT_CFQ=y
120# CONFIG_DEFAULT_NOOP is not set 119# CONFIG_DEFAULT_NOOP is not set
121CONFIG_DEFAULT_IOSCHED="cfq" 120CONFIG_DEFAULT_IOSCHED="cfq"
122CONFIG_CLASSIC_RCU=y 121CONFIG_CLASSIC_RCU=y
122# CONFIG_FREEZER is not set
123 123
124# 124#
125# System type 125# System type
@@ -190,12 +190,13 @@ CONFIG_FLATMEM_MANUAL=y
190CONFIG_FLATMEM=y 190CONFIG_FLATMEM=y
191CONFIG_FLAT_NODE_MEM_MAP=y 191CONFIG_FLAT_NODE_MEM_MAP=y
192CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
193# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
194CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
195CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
196# CONFIG_RESOURCES_64BIT is not set 195# CONFIG_RESOURCES_64BIT is not set
196# CONFIG_PHYS_ADDR_T_64BIT is not set
197CONFIG_ZONE_DMA_FLAG=0 197CONFIG_ZONE_DMA_FLAG=0
198CONFIG_NR_QUICK=2 198CONFIG_NR_QUICK=2
199CONFIG_UNEVICTABLE_LRU=y
199 200
200# 201#
201# Cache configuration 202# Cache configuration
@@ -289,6 +290,8 @@ CONFIG_CMDLINE="console=tty1 console=ttySC5,38400 root=/dev/nfs ip=dhcp"
289# Executable file formats 290# Executable file formats
290# 291#
291CONFIG_BINFMT_ELF=y 292CONFIG_BINFMT_ELF=y
293# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
294# CONFIG_HAVE_AOUT is not set
292# CONFIG_BINFMT_MISC is not set 295# CONFIG_BINFMT_MISC is not set
293CONFIG_NET=y 296CONFIG_NET=y
294 297
@@ -339,6 +342,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
339# CONFIG_TIPC is not set 342# CONFIG_TIPC is not set
340# CONFIG_ATM is not set 343# CONFIG_ATM is not set
341# CONFIG_BRIDGE is not set 344# CONFIG_BRIDGE is not set
345# CONFIG_NET_DSA is not set
342# CONFIG_VLAN_8021Q is not set 346# CONFIG_VLAN_8021Q is not set
343# CONFIG_DECNET is not set 347# CONFIG_DECNET is not set
344# CONFIG_LLC2 is not set 348# CONFIG_LLC2 is not set
@@ -359,11 +363,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
359# CONFIG_IRDA is not set 363# CONFIG_IRDA is not set
360# CONFIG_BT is not set 364# CONFIG_BT is not set
361# CONFIG_AF_RXRPC is not set 365# CONFIG_AF_RXRPC is not set
362 366# CONFIG_PHONET is not set
363# 367CONFIG_WIRELESS=y
364# Wireless
365#
366# CONFIG_CFG80211 is not set 368# CONFIG_CFG80211 is not set
369# CONFIG_WIRELESS_OLD_REGULATORY is not set
367# CONFIG_WIRELESS_EXT is not set 370# CONFIG_WIRELESS_EXT is not set
368# CONFIG_MAC80211 is not set 371# CONFIG_MAC80211 is not set
369# CONFIG_IEEE80211 is not set 372# CONFIG_IEEE80211 is not set
@@ -455,7 +458,15 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0
455# CONFIG_MTD_DOC2000 is not set 458# CONFIG_MTD_DOC2000 is not set
456# CONFIG_MTD_DOC2001 is not set 459# CONFIG_MTD_DOC2001 is not set
457# CONFIG_MTD_DOC2001PLUS is not set 460# CONFIG_MTD_DOC2001PLUS is not set
458# CONFIG_MTD_NAND is not set 461CONFIG_MTD_NAND=y
462# CONFIG_MTD_NAND_VERIFY_WRITE is not set
463# CONFIG_MTD_NAND_ECC_SMC is not set
464# CONFIG_MTD_NAND_MUSEUM_IDS is not set
465CONFIG_MTD_NAND_IDS=y
466# CONFIG_MTD_NAND_DISKONCHIP is not set
467# CONFIG_MTD_NAND_NANDSIM is not set
468# CONFIG_MTD_NAND_PLATFORM is not set
469CONFIG_MTD_NAND_SH_FLCTL=y
459# CONFIG_MTD_ONENAND is not set 470# CONFIG_MTD_ONENAND is not set
460 471
461# 472#
@@ -541,6 +552,9 @@ CONFIG_SMC911X=y
541# CONFIG_IBM_NEW_EMAC_RGMII is not set 552# CONFIG_IBM_NEW_EMAC_RGMII is not set
542# CONFIG_IBM_NEW_EMAC_TAH is not set 553# CONFIG_IBM_NEW_EMAC_TAH is not set
543# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 554# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
555# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
556# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
557# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
544# CONFIG_B44 is not set 558# CONFIG_B44 is not set
545# CONFIG_NETDEV_1000 is not set 559# CONFIG_NETDEV_1000 is not set
546# CONFIG_NETDEV_10000 is not set 560# CONFIG_NETDEV_10000 is not set
@@ -645,6 +659,7 @@ CONFIG_SSB_POSSIBLE=y
645# CONFIG_MFD_SM501 is not set 659# CONFIG_MFD_SM501 is not set
646# CONFIG_HTC_PASIC3 is not set 660# CONFIG_HTC_PASIC3 is not set
647# CONFIG_MFD_TMIO is not set 661# CONFIG_MFD_TMIO is not set
662# CONFIG_MFD_WM8400 is not set
648 663
649# 664#
650# Multimedia devices 665# Multimedia devices
@@ -692,6 +707,8 @@ CONFIG_UIO=y
692# CONFIG_UIO_PDRV is not set 707# CONFIG_UIO_PDRV is not set
693CONFIG_UIO_PDRV_GENIRQ=y 708CONFIG_UIO_PDRV_GENIRQ=y
694# CONFIG_UIO_SMX is not set 709# CONFIG_UIO_SMX is not set
710# CONFIG_UIO_SERCOS3 is not set
711# CONFIG_STAGING is not set
695 712
696# 713#
697# File systems 714# File systems
@@ -705,12 +722,13 @@ CONFIG_EXT3_FS=y
705CONFIG_EXT3_FS_XATTR=y 722CONFIG_EXT3_FS_XATTR=y
706CONFIG_EXT3_FS_POSIX_ACL=y 723CONFIG_EXT3_FS_POSIX_ACL=y
707CONFIG_EXT3_FS_SECURITY=y 724CONFIG_EXT3_FS_SECURITY=y
708# CONFIG_EXT4DEV_FS is not set 725# CONFIG_EXT4_FS is not set
709CONFIG_JBD=y 726CONFIG_JBD=y
710CONFIG_FS_MBCACHE=y 727CONFIG_FS_MBCACHE=y
711# CONFIG_REISERFS_FS is not set 728# CONFIG_REISERFS_FS is not set
712# CONFIG_JFS_FS is not set 729# CONFIG_JFS_FS is not set
713CONFIG_FS_POSIX_ACL=y 730CONFIG_FS_POSIX_ACL=y
731CONFIG_FILE_LOCKING=y
714# CONFIG_XFS_FS is not set 732# CONFIG_XFS_FS is not set
715# CONFIG_OCFS2_FS is not set 733# CONFIG_OCFS2_FS is not set
716CONFIG_DNOTIFY=y 734CONFIG_DNOTIFY=y
@@ -743,6 +761,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
743CONFIG_PROC_FS=y 761CONFIG_PROC_FS=y
744CONFIG_PROC_KCORE=y 762CONFIG_PROC_KCORE=y
745CONFIG_PROC_SYSCTL=y 763CONFIG_PROC_SYSCTL=y
764CONFIG_PROC_PAGE_MONITOR=y
746CONFIG_SYSFS=y 765CONFIG_SYSFS=y
747CONFIG_TMPFS=y 766CONFIG_TMPFS=y
748# CONFIG_TMPFS_POSIX_ACL is not set 767# CONFIG_TMPFS_POSIX_ACL is not set
@@ -785,6 +804,7 @@ CONFIG_LOCKD_V4=y
785CONFIG_EXPORTFS=y 804CONFIG_EXPORTFS=y
786CONFIG_NFS_COMMON=y 805CONFIG_NFS_COMMON=y
787CONFIG_SUNRPC=y 806CONFIG_SUNRPC=y
807# CONFIG_SUNRPC_REGISTER_V4 is not set
788# CONFIG_RPCSEC_GSS_KRB5 is not set 808# CONFIG_RPCSEC_GSS_KRB5 is not set
789# CONFIG_RPCSEC_GSS_SPKM3 is not set 809# CONFIG_RPCSEC_GSS_SPKM3 is not set
790# CONFIG_SMB_FS is not set 810# CONFIG_SMB_FS is not set
@@ -855,7 +875,12 @@ CONFIG_FRAME_WARN=1024
855# CONFIG_DEBUG_KERNEL is not set 875# CONFIG_DEBUG_KERNEL is not set
856# CONFIG_DEBUG_BUGVERBOSE is not set 876# CONFIG_DEBUG_BUGVERBOSE is not set
857# CONFIG_DEBUG_MEMORY_INIT is not set 877# CONFIG_DEBUG_MEMORY_INIT is not set
878# CONFIG_RCU_CPU_STALL_DETECTOR is not set
879# CONFIG_LATENCYTOP is not set
858CONFIG_SYSCTL_SYSCALL_CHECK=y 880CONFIG_SYSCTL_SYSCALL_CHECK=y
881CONFIG_NOP_TRACER=y
882CONFIG_HAVE_FTRACE=y
883# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
859# CONFIG_SAMPLES is not set 884# CONFIG_SAMPLES is not set
860# CONFIG_SH_STANDARD_BIOS is not set 885# CONFIG_SH_STANDARD_BIOS is not set
861# CONFIG_EARLY_SCIF_CONSOLE is not set 886# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -866,14 +891,19 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
866# 891#
867# CONFIG_KEYS is not set 892# CONFIG_KEYS is not set
868# CONFIG_SECURITY is not set 893# CONFIG_SECURITY is not set
894# CONFIG_SECURITYFS is not set
869# CONFIG_SECURITY_FILE_CAPABILITIES is not set 895# CONFIG_SECURITY_FILE_CAPABILITIES is not set
870CONFIG_CRYPTO=y 896CONFIG_CRYPTO=y
871 897
872# 898#
873# Crypto core or helper 899# Crypto core or helper
874# 900#
901# CONFIG_CRYPTO_FIPS is not set
875CONFIG_CRYPTO_ALGAPI=y 902CONFIG_CRYPTO_ALGAPI=y
903CONFIG_CRYPTO_AEAD=y
876CONFIG_CRYPTO_BLKCIPHER=y 904CONFIG_CRYPTO_BLKCIPHER=y
905CONFIG_CRYPTO_HASH=y
906CONFIG_CRYPTO_RNG=y
877CONFIG_CRYPTO_MANAGER=y 907CONFIG_CRYPTO_MANAGER=y
878# CONFIG_CRYPTO_GF128MUL is not set 908# CONFIG_CRYPTO_GF128MUL is not set
879# CONFIG_CRYPTO_NULL is not set 909# CONFIG_CRYPTO_NULL is not set
@@ -946,13 +976,17 @@ CONFIG_CRYPTO_CBC=y
946# 976#
947# CONFIG_CRYPTO_DEFLATE is not set 977# CONFIG_CRYPTO_DEFLATE is not set
948# CONFIG_CRYPTO_LZO is not set 978# CONFIG_CRYPTO_LZO is not set
979
980#
981# Random Number Generation
982#
983# CONFIG_CRYPTO_ANSI_CPRNG is not set
949CONFIG_CRYPTO_HW=y 984CONFIG_CRYPTO_HW=y
950 985
951# 986#
952# Library routines 987# Library routines
953# 988#
954CONFIG_BITREVERSE=y 989CONFIG_BITREVERSE=y
955# CONFIG_GENERIC_FIND_FIRST_BIT is not set
956# CONFIG_CRC_CCITT is not set 990# CONFIG_CRC_CCITT is not set
957# CONFIG_CRC16 is not set 991# CONFIG_CRC16 is not set
958CONFIG_CRC_T10DIF=y 992CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/cayman_defconfig b/arch/sh/configs/cayman_defconfig
index a05b278d72f5..e21c0e8e22d9 100644
--- a/arch/sh/configs/cayman_defconfig
+++ b/arch/sh/configs/cayman_defconfig
@@ -1,22 +1,25 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc3 3# Linux kernel version: 2.6.27
4# Fri Nov 23 14:15:55 2007 4# Wed Oct 22 18:04:52 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7# CONFIG_SUPERH32 is not set 7# CONFIG_SUPERH32 is not set
8CONFIG_SUPERH64=y 8CONFIG_SUPERH64=y
9CONFIG_ARCH_DEFCONFIG="arch/sh/configs/cayman_defconfig"
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 10CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
11CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
13CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
15# CONFIG_GENERIC_TIME is not set 17# CONFIG_GENERIC_TIME is not set
16# CONFIG_GENERIC_CLOCKEVENTS is not set 18# CONFIG_GENERIC_CLOCKEVENTS is not set
17CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
18CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
@@ -36,17 +39,15 @@ CONFIG_SWAP=y
36CONFIG_POSIX_MQUEUE=y 39CONFIG_POSIX_MQUEUE=y
37# CONFIG_BSD_PROCESS_ACCT is not set 40# CONFIG_BSD_PROCESS_ACCT is not set
38# CONFIG_TASKSTATS is not set 41# CONFIG_TASKSTATS is not set
39# CONFIG_USER_NS is not set
40# CONFIG_PID_NS is not set
41# CONFIG_AUDIT is not set 42# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set 43# CONFIG_IKCONFIG is not set
43CONFIG_LOG_BUF_SHIFT=14 44CONFIG_LOG_BUF_SHIFT=14
44# CONFIG_CGROUPS is not set 45# CONFIG_CGROUPS is not set
45CONFIG_FAIR_GROUP_SCHED=y 46# CONFIG_GROUP_SCHED is not set
46CONFIG_FAIR_USER_SCHED=y
47# CONFIG_FAIR_CGROUP_SCHED is not set
48CONFIG_SYSFS_DEPRECATED=y 47CONFIG_SYSFS_DEPRECATED=y
48CONFIG_SYSFS_DEPRECATED_V2=y
49# CONFIG_RELAY is not set 49# CONFIG_RELAY is not set
50# CONFIG_NAMESPACES is not set
50# CONFIG_BLK_DEV_INITRD is not set 51# CONFIG_BLK_DEV_INITRD is not set
51# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 52# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
52CONFIG_SYSCTL=y 53CONFIG_SYSCTL=y
@@ -60,21 +61,33 @@ CONFIG_HOTPLUG=y
60CONFIG_PRINTK=y 61CONFIG_PRINTK=y
61CONFIG_BUG=y 62CONFIG_BUG=y
62CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
64CONFIG_COMPAT_BRK=y
63CONFIG_BASE_FULL=y 65CONFIG_BASE_FULL=y
64CONFIG_FUTEX=y 66CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y 67CONFIG_ANON_INODES=y
66CONFIG_EPOLL=y 68CONFIG_EPOLL=y
67CONFIG_SIGNALFD=y 69CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 71CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 72CONFIG_SHMEM=y
73CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 74CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
71CONFIG_SLAB=y 76CONFIG_SLAB=y
72# CONFIG_SLUB is not set 77# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y
82CONFIG_HAVE_IOREMAP_PROT=y
83CONFIG_HAVE_CLK=y
84CONFIG_HAVE_GENERIC_DMA_COHERENT=y
85CONFIG_SLABINFO=y
74CONFIG_RT_MUTEXES=y 86CONFIG_RT_MUTEXES=y
75# CONFIG_TINY_SHMEM is not set 87# CONFIG_TINY_SHMEM is not set
76CONFIG_BASE_SMALL=0 88CONFIG_BASE_SMALL=0
77CONFIG_MODULES=y 89CONFIG_MODULES=y
90# CONFIG_MODULE_FORCE_LOAD is not set
78CONFIG_MODULE_UNLOAD=y 91CONFIG_MODULE_UNLOAD=y
79# CONFIG_MODULE_FORCE_UNLOAD is not set 92# CONFIG_MODULE_FORCE_UNLOAD is not set
80# CONFIG_MODVERSIONS is not set 93# CONFIG_MODVERSIONS is not set
@@ -85,6 +98,7 @@ CONFIG_BLOCK=y
85# CONFIG_BLK_DEV_IO_TRACE is not set 98# CONFIG_BLK_DEV_IO_TRACE is not set
86# CONFIG_LSF is not set 99# CONFIG_LSF is not set
87# CONFIG_BLK_DEV_BSG is not set 100# CONFIG_BLK_DEV_BSG is not set
101# CONFIG_BLK_DEV_INTEGRITY is not set
88 102
89# 103#
90# IO Schedulers 104# IO Schedulers
@@ -98,13 +112,18 @@ CONFIG_IOSCHED_CFQ=y
98CONFIG_DEFAULT_CFQ=y 112CONFIG_DEFAULT_CFQ=y
99# CONFIG_DEFAULT_NOOP is not set 113# CONFIG_DEFAULT_NOOP is not set
100CONFIG_DEFAULT_IOSCHED="cfq" 114CONFIG_DEFAULT_IOSCHED="cfq"
115CONFIG_CLASSIC_RCU=y
116# CONFIG_FREEZER is not set
101 117
102# 118#
103# System type 119# System type
104# 120#
105CONFIG_CPU_SH5=y 121CONFIG_CPU_SH5=y
106# CONFIG_CPU_SUBTYPE_SH7619 is not set 122# CONFIG_CPU_SUBTYPE_SH7619 is not set
123# CONFIG_CPU_SUBTYPE_SH7203 is not set
107# CONFIG_CPU_SUBTYPE_SH7206 is not set 124# CONFIG_CPU_SUBTYPE_SH7206 is not set
125# CONFIG_CPU_SUBTYPE_SH7263 is not set
126# CONFIG_CPU_SUBTYPE_MXG is not set
108# CONFIG_CPU_SUBTYPE_SH7705 is not set 127# CONFIG_CPU_SUBTYPE_SH7705 is not set
109# CONFIG_CPU_SUBTYPE_SH7706 is not set 128# CONFIG_CPU_SUBTYPE_SH7706 is not set
110# CONFIG_CPU_SUBTYPE_SH7707 is not set 129# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -113,6 +132,7 @@ CONFIG_CPU_SH5=y
113# CONFIG_CPU_SUBTYPE_SH7710 is not set 132# CONFIG_CPU_SUBTYPE_SH7710 is not set
114# CONFIG_CPU_SUBTYPE_SH7712 is not set 133# CONFIG_CPU_SUBTYPE_SH7712 is not set
115# CONFIG_CPU_SUBTYPE_SH7720 is not set 134# CONFIG_CPU_SUBTYPE_SH7720 is not set
135# CONFIG_CPU_SUBTYPE_SH7721 is not set
116# CONFIG_CPU_SUBTYPE_SH7750 is not set 136# CONFIG_CPU_SUBTYPE_SH7750 is not set
117# CONFIG_CPU_SUBTYPE_SH7091 is not set 137# CONFIG_CPU_SUBTYPE_SH7091 is not set
118# CONFIG_CPU_SUBTYPE_SH7750R is not set 138# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -121,12 +141,15 @@ CONFIG_CPU_SH5=y
121# CONFIG_CPU_SUBTYPE_SH7751R is not set 141# CONFIG_CPU_SUBTYPE_SH7751R is not set
122# CONFIG_CPU_SUBTYPE_SH7760 is not set 142# CONFIG_CPU_SUBTYPE_SH7760 is not set
123# CONFIG_CPU_SUBTYPE_SH4_202 is not set 143# CONFIG_CPU_SUBTYPE_SH4_202 is not set
144# CONFIG_CPU_SUBTYPE_SH7723 is not set
145# CONFIG_CPU_SUBTYPE_SH7763 is not set
124# CONFIG_CPU_SUBTYPE_SH7770 is not set 146# CONFIG_CPU_SUBTYPE_SH7770 is not set
125# CONFIG_CPU_SUBTYPE_SH7780 is not set 147# CONFIG_CPU_SUBTYPE_SH7780 is not set
126# CONFIG_CPU_SUBTYPE_SH7785 is not set 148# CONFIG_CPU_SUBTYPE_SH7785 is not set
127# CONFIG_CPU_SUBTYPE_SHX3 is not set 149# CONFIG_CPU_SUBTYPE_SHX3 is not set
128# CONFIG_CPU_SUBTYPE_SH7343 is not set 150# CONFIG_CPU_SUBTYPE_SH7343 is not set
129# CONFIG_CPU_SUBTYPE_SH7722 is not set 151# CONFIG_CPU_SUBTYPE_SH7722 is not set
152# CONFIG_CPU_SUBTYPE_SH7366 is not set
130CONFIG_CPU_SUBTYPE_SH5_101=y 153CONFIG_CPU_SUBTYPE_SH5_101=y
131# CONFIG_CPU_SUBTYPE_SH5_103 is not set 154# CONFIG_CPU_SUBTYPE_SH5_103 is not set
132 155
@@ -147,7 +170,9 @@ CONFIG_ARCH_POPULATES_NODE_MAP=y
147CONFIG_ARCH_SELECT_MEMORY_MODEL=y 170CONFIG_ARCH_SELECT_MEMORY_MODEL=y
148CONFIG_PAGE_SIZE_4KB=y 171CONFIG_PAGE_SIZE_4KB=y
149# CONFIG_PAGE_SIZE_8KB is not set 172# CONFIG_PAGE_SIZE_8KB is not set
173# CONFIG_PAGE_SIZE_16KB is not set
150# CONFIG_PAGE_SIZE_64KB is not set 174# CONFIG_PAGE_SIZE_64KB is not set
175CONFIG_ENTRY_OFFSET=0x00001000
151CONFIG_HUGETLB_PAGE_SIZE_64K=y 176CONFIG_HUGETLB_PAGE_SIZE_64K=y
152# CONFIG_HUGETLB_PAGE_SIZE_256K is not set 177# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
153# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set 178# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
@@ -161,11 +186,13 @@ CONFIG_FLATMEM_MANUAL=y
161CONFIG_FLATMEM=y 186CONFIG_FLATMEM=y
162CONFIG_FLAT_NODE_MEM_MAP=y 187CONFIG_FLAT_NODE_MEM_MAP=y
163CONFIG_SPARSEMEM_STATIC=y 188CONFIG_SPARSEMEM_STATIC=y
164# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 189CONFIG_PAGEFLAGS_EXTENDED=y
165CONFIG_SPLIT_PTLOCK_CPUS=4 190CONFIG_SPLIT_PTLOCK_CPUS=4
166CONFIG_RESOURCES_64BIT=y 191CONFIG_RESOURCES_64BIT=y
192# CONFIG_PHYS_ADDR_T_64BIT is not set
167CONFIG_ZONE_DMA_FLAG=0 193CONFIG_ZONE_DMA_FLAG=0
168CONFIG_NR_QUICK=2 194CONFIG_NR_QUICK=2
195CONFIG_UNEVICTABLE_LRU=y
169 196
170# 197#
171# Cache configuration 198# Cache configuration
@@ -196,7 +223,6 @@ CONFIG_SH_CAYMAN=y
196# 223#
197CONFIG_SH_TIMER_IRQ=16 224CONFIG_SH_TIMER_IRQ=16
198CONFIG_SH_PCLK_FREQ=50000000 225CONFIG_SH_PCLK_FREQ=50000000
199# CONFIG_TICK_ONESHOT is not set
200 226
201# 227#
202# CPU Frequency scaling 228# CPU Frequency scaling
@@ -225,13 +251,12 @@ CONFIG_HZ_250=y
225# CONFIG_HZ_300 is not set 251# CONFIG_HZ_300 is not set
226# CONFIG_HZ_1000 is not set 252# CONFIG_HZ_1000 is not set
227CONFIG_HZ=250 253CONFIG_HZ=250
228# CONFIG_KEXEC is not set 254# CONFIG_SCHED_HRTICK is not set
229# CONFIG_CRASH_DUMP is not set 255# CONFIG_SECCOMP is not set
230# CONFIG_PREEMPT_NONE is not set 256# CONFIG_PREEMPT_NONE is not set
231# CONFIG_PREEMPT_VOLUNTARY is not set 257# CONFIG_PREEMPT_VOLUNTARY is not set
232CONFIG_PREEMPT=y 258CONFIG_PREEMPT=y
233CONFIG_PREEMPT_BKL=y 259# CONFIG_PREEMPT_RCU is not set
234CONFIG_GUSA=y
235 260
236# 261#
237# Boot options 262# Boot options
@@ -257,11 +282,9 @@ CONFIG_PCI_LEGACY=y
257# Executable file formats 282# Executable file formats
258# 283#
259CONFIG_BINFMT_ELF=y 284CONFIG_BINFMT_ELF=y
285# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
286# CONFIG_HAVE_AOUT is not set
260# CONFIG_BINFMT_MISC is not set 287# CONFIG_BINFMT_MISC is not set
261
262#
263# Networking
264#
265CONFIG_NET=y 288CONFIG_NET=y
266 289
267# 290#
@@ -274,6 +297,7 @@ CONFIG_XFRM=y
274# CONFIG_XFRM_USER is not set 297# CONFIG_XFRM_USER is not set
275# CONFIG_XFRM_SUB_POLICY is not set 298# CONFIG_XFRM_SUB_POLICY is not set
276# CONFIG_XFRM_MIGRATE is not set 299# CONFIG_XFRM_MIGRATE is not set
300# CONFIG_XFRM_STATISTICS is not set
277# CONFIG_NET_KEY is not set 301# CONFIG_NET_KEY is not set
278CONFIG_INET=y 302CONFIG_INET=y
279# CONFIG_IP_MULTICAST is not set 303# CONFIG_IP_MULTICAST is not set
@@ -303,8 +327,6 @@ CONFIG_TCP_CONG_CUBIC=y
303CONFIG_DEFAULT_TCP_CONG="cubic" 327CONFIG_DEFAULT_TCP_CONG="cubic"
304# CONFIG_TCP_MD5SIG is not set 328# CONFIG_TCP_MD5SIG is not set
305# CONFIG_IPV6 is not set 329# CONFIG_IPV6 is not set
306# CONFIG_INET6_XFRM_TUNNEL is not set
307# CONFIG_INET6_TUNNEL is not set
308# CONFIG_NETWORK_SECMARK is not set 330# CONFIG_NETWORK_SECMARK is not set
309# CONFIG_NETFILTER is not set 331# CONFIG_NETFILTER is not set
310# CONFIG_IP_DCCP is not set 332# CONFIG_IP_DCCP is not set
@@ -312,6 +334,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
312# CONFIG_TIPC is not set 334# CONFIG_TIPC is not set
313# CONFIG_ATM is not set 335# CONFIG_ATM is not set
314# CONFIG_BRIDGE is not set 336# CONFIG_BRIDGE is not set
337# CONFIG_NET_DSA is not set
315# CONFIG_VLAN_8021Q is not set 338# CONFIG_VLAN_8021Q is not set
316# CONFIG_DECNET is not set 339# CONFIG_DECNET is not set
317# CONFIG_LLC2 is not set 340# CONFIG_LLC2 is not set
@@ -328,14 +351,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
328# 351#
329# CONFIG_NET_PKTGEN is not set 352# CONFIG_NET_PKTGEN is not set
330# CONFIG_HAMRADIO is not set 353# CONFIG_HAMRADIO is not set
354# CONFIG_CAN is not set
331# CONFIG_IRDA is not set 355# CONFIG_IRDA is not set
332# CONFIG_BT is not set 356# CONFIG_BT is not set
333# CONFIG_AF_RXRPC is not set 357# CONFIG_AF_RXRPC is not set
334 358# CONFIG_PHONET is not set
335# 359CONFIG_WIRELESS=y
336# Wireless
337#
338# CONFIG_CFG80211 is not set 360# CONFIG_CFG80211 is not set
361# CONFIG_WIRELESS_OLD_REGULATORY is not set
339# CONFIG_WIRELESS_EXT is not set 362# CONFIG_WIRELESS_EXT is not set
340# CONFIG_MAC80211 is not set 363# CONFIG_MAC80211 is not set
341# CONFIG_IEEE80211 is not set 364# CONFIG_IEEE80211 is not set
@@ -371,14 +394,18 @@ CONFIG_BLK_DEV_LOOP=y
371CONFIG_BLK_DEV_RAM=y 394CONFIG_BLK_DEV_RAM=y
372CONFIG_BLK_DEV_RAM_COUNT=16 395CONFIG_BLK_DEV_RAM_COUNT=16
373CONFIG_BLK_DEV_RAM_SIZE=4096 396CONFIG_BLK_DEV_RAM_SIZE=4096
374CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 397# CONFIG_BLK_DEV_XIP is not set
375# CONFIG_CDROM_PKTCDVD is not set 398# CONFIG_CDROM_PKTCDVD is not set
376# CONFIG_ATA_OVER_ETH is not set 399# CONFIG_ATA_OVER_ETH is not set
400# CONFIG_BLK_DEV_HD is not set
377CONFIG_MISC_DEVICES=y 401CONFIG_MISC_DEVICES=y
378# CONFIG_PHANTOM is not set 402# CONFIG_PHANTOM is not set
379# CONFIG_EEPROM_93CX6 is not set 403# CONFIG_EEPROM_93CX6 is not set
380# CONFIG_SGI_IOC4 is not set 404# CONFIG_SGI_IOC4 is not set
381# CONFIG_TIFM_CORE is not set 405# CONFIG_TIFM_CORE is not set
406# CONFIG_ENCLOSURE_SERVICES is not set
407# CONFIG_HP_ILO is not set
408CONFIG_HAVE_IDE=y
382# CONFIG_IDE is not set 409# CONFIG_IDE is not set
383 410
384# 411#
@@ -438,6 +465,7 @@ CONFIG_SCSI_LOWLEVEL=y
438# CONFIG_SCSI_IPS is not set 465# CONFIG_SCSI_IPS is not set
439# CONFIG_SCSI_INITIO is not set 466# CONFIG_SCSI_INITIO is not set
440# CONFIG_SCSI_INIA100 is not set 467# CONFIG_SCSI_INIA100 is not set
468# CONFIG_SCSI_MVSAS is not set
441# CONFIG_SCSI_STEX is not set 469# CONFIG_SCSI_STEX is not set
442# CONFIG_SCSI_SYM53C8XX_2 is not set 470# CONFIG_SCSI_SYM53C8XX_2 is not set
443# CONFIG_SCSI_QLOGIC_1280 is not set 471# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -449,6 +477,7 @@ CONFIG_SCSI_LOWLEVEL=y
449# CONFIG_SCSI_NSP32 is not set 477# CONFIG_SCSI_NSP32 is not set
450# CONFIG_SCSI_DEBUG is not set 478# CONFIG_SCSI_DEBUG is not set
451# CONFIG_SCSI_SRP is not set 479# CONFIG_SCSI_SRP is not set
480# CONFIG_SCSI_DH is not set
452# CONFIG_ATA is not set 481# CONFIG_ATA is not set
453# CONFIG_MD is not set 482# CONFIG_MD is not set
454# CONFIG_FUSION is not set 483# CONFIG_FUSION is not set
@@ -456,18 +485,20 @@ CONFIG_SCSI_LOWLEVEL=y
456# 485#
457# IEEE 1394 (FireWire) support 486# IEEE 1394 (FireWire) support
458# 487#
488
489#
490# Enable only one of the two stacks, unless you know what you are doing
491#
459# CONFIG_FIREWIRE is not set 492# CONFIG_FIREWIRE is not set
460# CONFIG_IEEE1394 is not set 493# CONFIG_IEEE1394 is not set
461# CONFIG_I2O is not set 494# CONFIG_I2O is not set
462CONFIG_NETDEVICES=y 495CONFIG_NETDEVICES=y
463# CONFIG_NETDEVICES_MULTIQUEUE is not set
464# CONFIG_DUMMY is not set 496# CONFIG_DUMMY is not set
465# CONFIG_BONDING is not set 497# CONFIG_BONDING is not set
466# CONFIG_MACVLAN is not set 498# CONFIG_MACVLAN is not set
467# CONFIG_EQUALIZER is not set 499# CONFIG_EQUALIZER is not set
468# CONFIG_TUN is not set 500# CONFIG_TUN is not set
469# CONFIG_VETH is not set 501# CONFIG_VETH is not set
470# CONFIG_IP1000 is not set
471# CONFIG_ARCNET is not set 502# CONFIG_ARCNET is not set
472# CONFIG_PHYLIB is not set 503# CONFIG_PHYLIB is not set
473CONFIG_NET_ETHERNET=y 504CONFIG_NET_ETHERNET=y
@@ -486,13 +517,19 @@ CONFIG_NET_ETHERNET=y
486# CONFIG_IBM_NEW_EMAC_RGMII is not set 517# CONFIG_IBM_NEW_EMAC_RGMII is not set
487# CONFIG_IBM_NEW_EMAC_TAH is not set 518# CONFIG_IBM_NEW_EMAC_TAH is not set
488# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 519# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
520# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
521# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
522# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
489# CONFIG_NET_PCI is not set 523# CONFIG_NET_PCI is not set
490# CONFIG_B44 is not set 524# CONFIG_B44 is not set
525# CONFIG_ATL2 is not set
491CONFIG_NETDEV_1000=y 526CONFIG_NETDEV_1000=y
492# CONFIG_ACENIC is not set 527# CONFIG_ACENIC is not set
493# CONFIG_DL2K is not set 528# CONFIG_DL2K is not set
494# CONFIG_E1000 is not set 529# CONFIG_E1000 is not set
495# CONFIG_E1000E is not set 530# CONFIG_E1000E is not set
531# CONFIG_IP1000 is not set
532# CONFIG_IGB is not set
496# CONFIG_NS83820 is not set 533# CONFIG_NS83820 is not set
497# CONFIG_HAMACHI is not set 534# CONFIG_HAMACHI is not set
498# CONFIG_YELLOWFIN is not set 535# CONFIG_YELLOWFIN is not set
@@ -500,15 +537,17 @@ CONFIG_NETDEV_1000=y
500# CONFIG_SIS190 is not set 537# CONFIG_SIS190 is not set
501# CONFIG_SKGE is not set 538# CONFIG_SKGE is not set
502# CONFIG_SKY2 is not set 539# CONFIG_SKY2 is not set
503# CONFIG_SK98LIN is not set
504# CONFIG_VIA_VELOCITY is not set 540# CONFIG_VIA_VELOCITY is not set
505# CONFIG_TIGON3 is not set 541# CONFIG_TIGON3 is not set
506# CONFIG_BNX2 is not set 542# CONFIG_BNX2 is not set
507# CONFIG_QLA3XXX is not set 543# CONFIG_QLA3XXX is not set
508# CONFIG_ATL1 is not set 544# CONFIG_ATL1 is not set
545# CONFIG_ATL1E is not set
546# CONFIG_JME is not set
509CONFIG_NETDEV_10000=y 547CONFIG_NETDEV_10000=y
510# CONFIG_CHELSIO_T1 is not set 548# CONFIG_CHELSIO_T1 is not set
511# CONFIG_CHELSIO_T3 is not set 549# CONFIG_CHELSIO_T3 is not set
550# CONFIG_ENIC is not set
512# CONFIG_IXGBE is not set 551# CONFIG_IXGBE is not set
513# CONFIG_IXGB is not set 552# CONFIG_IXGB is not set
514# CONFIG_S2IO is not set 553# CONFIG_S2IO is not set
@@ -517,6 +556,9 @@ CONFIG_NETDEV_10000=y
517# CONFIG_NIU is not set 556# CONFIG_NIU is not set
518# CONFIG_MLX4_CORE is not set 557# CONFIG_MLX4_CORE is not set
519# CONFIG_TEHUTI is not set 558# CONFIG_TEHUTI is not set
559# CONFIG_BNX2X is not set
560# CONFIG_QLGE is not set
561# CONFIG_SFC is not set
520# CONFIG_TR is not set 562# CONFIG_TR is not set
521 563
522# 564#
@@ -524,13 +566,13 @@ CONFIG_NETDEV_10000=y
524# 566#
525# CONFIG_WLAN_PRE80211 is not set 567# CONFIG_WLAN_PRE80211 is not set
526# CONFIG_WLAN_80211 is not set 568# CONFIG_WLAN_80211 is not set
569# CONFIG_IWLWIFI_LEDS is not set
527# CONFIG_WAN is not set 570# CONFIG_WAN is not set
528# CONFIG_FDDI is not set 571# CONFIG_FDDI is not set
529# CONFIG_HIPPI is not set 572# CONFIG_HIPPI is not set
530# CONFIG_PPP is not set 573# CONFIG_PPP is not set
531# CONFIG_SLIP is not set 574# CONFIG_SLIP is not set
532# CONFIG_NET_FC is not set 575# CONFIG_NET_FC is not set
533# CONFIG_SHAPER is not set
534# CONFIG_NETCONSOLE is not set 576# CONFIG_NETCONSOLE is not set
535# CONFIG_NETPOLL is not set 577# CONFIG_NETPOLL is not set
536# CONFIG_NET_POLL_CONTROLLER is not set 578# CONFIG_NET_POLL_CONTROLLER is not set
@@ -575,10 +617,13 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
575# Character devices 617# Character devices
576# 618#
577CONFIG_VT=y 619CONFIG_VT=y
620CONFIG_CONSOLE_TRANSLATIONS=y
578CONFIG_VT_CONSOLE=y 621CONFIG_VT_CONSOLE=y
579CONFIG_HW_CONSOLE=y 622CONFIG_HW_CONSOLE=y
580# CONFIG_VT_HW_CONSOLE_BINDING is not set 623# CONFIG_VT_HW_CONSOLE_BINDING is not set
624CONFIG_DEVKMEM=y
581# CONFIG_SERIAL_NONSTANDARD is not set 625# CONFIG_SERIAL_NONSTANDARD is not set
626# CONFIG_NOZOMI is not set
582 627
583# 628#
584# Serial drivers 629# Serial drivers
@@ -603,16 +648,14 @@ CONFIG_DEVPORT=y
603CONFIG_I2C=m 648CONFIG_I2C=m
604CONFIG_I2C_BOARDINFO=y 649CONFIG_I2C_BOARDINFO=y
605# CONFIG_I2C_CHARDEV is not set 650# CONFIG_I2C_CHARDEV is not set
651CONFIG_I2C_HELPER_AUTO=y
606 652
607# 653#
608# I2C Algorithms 654# I2C Hardware Bus support
609# 655#
610# CONFIG_I2C_ALGOBIT is not set
611# CONFIG_I2C_ALGOPCF is not set
612# CONFIG_I2C_ALGOPCA is not set
613 656
614# 657#
615# I2C Hardware Bus support 658# PC SMBus host controller drivers
616# 659#
617# CONFIG_I2C_ALI1535 is not set 660# CONFIG_I2C_ALI1535 is not set
618# CONFIG_I2C_ALI1563 is not set 661# CONFIG_I2C_ALI1563 is not set
@@ -620,31 +663,47 @@ CONFIG_I2C_BOARDINFO=y
620# CONFIG_I2C_AMD756 is not set 663# CONFIG_I2C_AMD756 is not set
621# CONFIG_I2C_AMD8111 is not set 664# CONFIG_I2C_AMD8111 is not set
622# CONFIG_I2C_I801 is not set 665# CONFIG_I2C_I801 is not set
623# CONFIG_I2C_I810 is not set 666# CONFIG_I2C_ISCH is not set
624# CONFIG_I2C_PIIX4 is not set 667# CONFIG_I2C_PIIX4 is not set
625# CONFIG_I2C_NFORCE2 is not set 668# CONFIG_I2C_NFORCE2 is not set
626# CONFIG_I2C_OCORES is not set
627# CONFIG_I2C_PARPORT_LIGHT is not set
628# CONFIG_I2C_PROSAVAGE is not set
629# CONFIG_I2C_SAVAGE4 is not set
630# CONFIG_I2C_SIMTEC is not set
631# CONFIG_I2C_SIS5595 is not set 669# CONFIG_I2C_SIS5595 is not set
632# CONFIG_I2C_SIS630 is not set 670# CONFIG_I2C_SIS630 is not set
633# CONFIG_I2C_SIS96X is not set 671# CONFIG_I2C_SIS96X is not set
634# CONFIG_I2C_TAOS_EVM is not set
635# CONFIG_I2C_STUB is not set
636# CONFIG_I2C_VIA is not set 672# CONFIG_I2C_VIA is not set
637# CONFIG_I2C_VIAPRO is not set 673# CONFIG_I2C_VIAPRO is not set
674
675#
676# I2C system bus drivers (mostly embedded / system-on-chip)
677#
678# CONFIG_I2C_OCORES is not set
679# CONFIG_I2C_SH_MOBILE is not set
680# CONFIG_I2C_SIMTEC is not set
681
682#
683# External I2C/SMBus adapter drivers
684#
685# CONFIG_I2C_PARPORT_LIGHT is not set
686# CONFIG_I2C_TAOS_EVM is not set
687
688#
689# Graphics adapter I2C/DDC channel drivers
690#
638# CONFIG_I2C_VOODOO3 is not set 691# CONFIG_I2C_VOODOO3 is not set
639 692
640# 693#
694# Other I2C/SMBus bus drivers
695#
696# CONFIG_I2C_PCA_PLATFORM is not set
697# CONFIG_I2C_STUB is not set
698
699#
641# Miscellaneous I2C Chip support 700# Miscellaneous I2C Chip support
642# 701#
643# CONFIG_SENSORS_DS1337 is not set
644# CONFIG_SENSORS_DS1374 is not set
645# CONFIG_DS1682 is not set 702# CONFIG_DS1682 is not set
703# CONFIG_AT24 is not set
646# CONFIG_SENSORS_EEPROM is not set 704# CONFIG_SENSORS_EEPROM is not set
647# CONFIG_SENSORS_PCF8574 is not set 705# CONFIG_SENSORS_PCF8574 is not set
706# CONFIG_PCF8575 is not set
648# CONFIG_SENSORS_PCA9539 is not set 707# CONFIG_SENSORS_PCA9539 is not set
649# CONFIG_SENSORS_PCF8591 is not set 708# CONFIG_SENSORS_PCF8591 is not set
650# CONFIG_SENSORS_MAX6875 is not set 709# CONFIG_SENSORS_MAX6875 is not set
@@ -653,16 +712,12 @@ CONFIG_I2C_BOARDINFO=y
653# CONFIG_I2C_DEBUG_ALGO is not set 712# CONFIG_I2C_DEBUG_ALGO is not set
654# CONFIG_I2C_DEBUG_BUS is not set 713# CONFIG_I2C_DEBUG_BUS is not set
655# CONFIG_I2C_DEBUG_CHIP is not set 714# CONFIG_I2C_DEBUG_CHIP is not set
656
657#
658# SPI support
659#
660# CONFIG_SPI is not set 715# CONFIG_SPI is not set
661# CONFIG_SPI_MASTER is not set
662# CONFIG_W1 is not set 716# CONFIG_W1 is not set
663# CONFIG_POWER_SUPPLY is not set 717# CONFIG_POWER_SUPPLY is not set
664CONFIG_HWMON=y 718CONFIG_HWMON=y
665# CONFIG_HWMON_VID is not set 719# CONFIG_HWMON_VID is not set
720# CONFIG_SENSORS_AD7414 is not set
666# CONFIG_SENSORS_AD7418 is not set 721# CONFIG_SENSORS_AD7418 is not set
667# CONFIG_SENSORS_ADM1021 is not set 722# CONFIG_SENSORS_ADM1021 is not set
668# CONFIG_SENSORS_ADM1025 is not set 723# CONFIG_SENSORS_ADM1025 is not set
@@ -671,6 +726,7 @@ CONFIG_HWMON=y
671# CONFIG_SENSORS_ADM1031 is not set 726# CONFIG_SENSORS_ADM1031 is not set
672# CONFIG_SENSORS_ADM9240 is not set 727# CONFIG_SENSORS_ADM9240 is not set
673# CONFIG_SENSORS_ADT7470 is not set 728# CONFIG_SENSORS_ADT7470 is not set
729# CONFIG_SENSORS_ADT7473 is not set
674# CONFIG_SENSORS_ATXP1 is not set 730# CONFIG_SENSORS_ATXP1 is not set
675# CONFIG_SENSORS_DS1621 is not set 731# CONFIG_SENSORS_DS1621 is not set
676# CONFIG_SENSORS_I5K_AMB is not set 732# CONFIG_SENSORS_I5K_AMB is not set
@@ -700,6 +756,7 @@ CONFIG_HWMON=y
700# CONFIG_SENSORS_SMSC47M1 is not set 756# CONFIG_SENSORS_SMSC47M1 is not set
701# CONFIG_SENSORS_SMSC47M192 is not set 757# CONFIG_SENSORS_SMSC47M192 is not set
702# CONFIG_SENSORS_SMSC47B397 is not set 758# CONFIG_SENSORS_SMSC47B397 is not set
759# CONFIG_SENSORS_ADS7828 is not set
703# CONFIG_SENSORS_THMC50 is not set 760# CONFIG_SENSORS_THMC50 is not set
704# CONFIG_SENSORS_VIA686A is not set 761# CONFIG_SENSORS_VIA686A is not set
705# CONFIG_SENSORS_VT1211 is not set 762# CONFIG_SENSORS_VT1211 is not set
@@ -709,9 +766,12 @@ CONFIG_HWMON=y
709# CONFIG_SENSORS_W83792D is not set 766# CONFIG_SENSORS_W83792D is not set
710# CONFIG_SENSORS_W83793 is not set 767# CONFIG_SENSORS_W83793 is not set
711# CONFIG_SENSORS_W83L785TS is not set 768# CONFIG_SENSORS_W83L785TS is not set
769# CONFIG_SENSORS_W83L786NG is not set
712# CONFIG_SENSORS_W83627HF is not set 770# CONFIG_SENSORS_W83627HF is not set
713# CONFIG_SENSORS_W83627EHF is not set 771# CONFIG_SENSORS_W83627EHF is not set
714# CONFIG_HWMON_DEBUG_CHIP is not set 772# CONFIG_HWMON_DEBUG_CHIP is not set
773# CONFIG_THERMAL is not set
774# CONFIG_THERMAL_HWMON is not set
715CONFIG_WATCHDOG=y 775CONFIG_WATCHDOG=y
716# CONFIG_WATCHDOG_NOWAYOUT is not set 776# CONFIG_WATCHDOG_NOWAYOUT is not set
717 777
@@ -719,6 +779,7 @@ CONFIG_WATCHDOG=y
719# Watchdog Device Drivers 779# Watchdog Device Drivers
720# 780#
721# CONFIG_SOFT_WATCHDOG is not set 781# CONFIG_SOFT_WATCHDOG is not set
782# CONFIG_ALIM7101_WDT is not set
722 783
723# 784#
724# PCI-based Watchdog Cards 785# PCI-based Watchdog Cards
@@ -735,35 +796,71 @@ CONFIG_SSB_POSSIBLE=y
735# 796#
736# Multifunction device drivers 797# Multifunction device drivers
737# 798#
799# CONFIG_MFD_CORE is not set
738# CONFIG_MFD_SM501 is not set 800# CONFIG_MFD_SM501 is not set
801# CONFIG_HTC_PASIC3 is not set
802# CONFIG_MFD_TMIO is not set
803# CONFIG_MFD_WM8400 is not set
804# CONFIG_MFD_WM8350_I2C is not set
739 805
740# 806#
741# Multimedia devices 807# Multimedia devices
742# 808#
809
810#
811# Multimedia core support
812#
743CONFIG_VIDEO_DEV=m 813CONFIG_VIDEO_DEV=m
744# CONFIG_VIDEO_V4L1 is not set 814CONFIG_VIDEO_V4L2_COMMON=m
745# CONFIG_VIDEO_V4L1_COMPAT is not set 815CONFIG_VIDEO_ALLOW_V4L1=y
746CONFIG_VIDEO_V4L2=y 816CONFIG_VIDEO_V4L1_COMPAT=y
817CONFIG_DVB_CORE=y
818CONFIG_VIDEO_MEDIA=m
819
820#
821# Multimedia drivers
822#
823# CONFIG_MEDIA_ATTACH is not set
824CONFIG_MEDIA_TUNER=m
825# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
826CONFIG_MEDIA_TUNER_SIMPLE=m
827CONFIG_MEDIA_TUNER_TDA8290=m
828CONFIG_MEDIA_TUNER_TDA9887=m
829CONFIG_MEDIA_TUNER_TEA5761=m
830CONFIG_MEDIA_TUNER_TEA5767=m
831CONFIG_MEDIA_TUNER_MT20XX=m
832CONFIG_MEDIA_TUNER_XC2028=m
833CONFIG_MEDIA_TUNER_XC5000=m
834CONFIG_VIDEO_V4L2=m
835CONFIG_VIDEO_V4L1=m
747CONFIG_VIDEO_CAPTURE_DRIVERS=y 836CONFIG_VIDEO_CAPTURE_DRIVERS=y
748# CONFIG_VIDEO_ADV_DEBUG is not set 837# CONFIG_VIDEO_ADV_DEBUG is not set
838# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
749CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 839CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
750# CONFIG_VIDEO_VIVI is not set 840# CONFIG_VIDEO_VIVI is not set
841# CONFIG_VIDEO_BT848 is not set
842# CONFIG_VIDEO_CPIA is not set
751# CONFIG_VIDEO_SAA5246A is not set 843# CONFIG_VIDEO_SAA5246A is not set
752# CONFIG_VIDEO_SAA5249 is not set 844# CONFIG_VIDEO_SAA5249 is not set
753# CONFIG_VIDEO_SAA7134 is not set 845# CONFIG_VIDEO_SAA7134 is not set
846# CONFIG_VIDEO_MXB is not set
754# CONFIG_VIDEO_HEXIUM_ORION is not set 847# CONFIG_VIDEO_HEXIUM_ORION is not set
755# CONFIG_VIDEO_HEXIUM_GEMINI is not set 848# CONFIG_VIDEO_HEXIUM_GEMINI is not set
756# CONFIG_VIDEO_CX88 is not set 849# CONFIG_VIDEO_CX88 is not set
757# CONFIG_VIDEO_CX23885 is not set 850# CONFIG_VIDEO_CX23885 is not set
851# CONFIG_VIDEO_IVTV is not set
852# CONFIG_VIDEO_CX18 is not set
758# CONFIG_VIDEO_CAFE_CCIC is not set 853# CONFIG_VIDEO_CAFE_CCIC is not set
854# CONFIG_SOC_CAMERA is not set
759# CONFIG_RADIO_ADAPTERS is not set 855# CONFIG_RADIO_ADAPTERS is not set
760CONFIG_DVB_CORE=y
761# CONFIG_DVB_CORE_ATTACH is not set
762CONFIG_DVB_CAPTURE_DRIVERS=y 856CONFIG_DVB_CAPTURE_DRIVERS=y
763 857
764# 858#
765# Supported SAA7146 based PCI Adapters 859# Supported SAA7146 based PCI Adapters
766# 860#
861# CONFIG_TTPCI_EEPROM is not set
862# CONFIG_DVB_AV7110 is not set
863# CONFIG_DVB_BUDGET_CORE is not set
767 864
768# 865#
769# Supported FlexCopII (B2C2) Adapters 866# Supported FlexCopII (B2C2) Adapters
@@ -780,6 +877,11 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
780# CONFIG_DVB_PLUTO2 is not set 877# CONFIG_DVB_PLUTO2 is not set
781 878
782# 879#
880# Supported SDMC DM1105 Adapters
881#
882# CONFIG_DVB_DM1105 is not set
883
884#
783# Supported DVB Frontends 885# Supported DVB Frontends
784# 886#
785 887
@@ -791,14 +893,21 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
791# 893#
792# DVB-S (satellite) frontends 894# DVB-S (satellite) frontends
793# 895#
794# CONFIG_DVB_STV0299 is not set
795# CONFIG_DVB_CX24110 is not set 896# CONFIG_DVB_CX24110 is not set
796# CONFIG_DVB_CX24123 is not set 897# CONFIG_DVB_CX24123 is not set
797# CONFIG_DVB_TDA8083 is not set
798# CONFIG_DVB_MT312 is not set 898# CONFIG_DVB_MT312 is not set
799# CONFIG_DVB_VES1X93 is not set
800# CONFIG_DVB_S5H1420 is not set 899# CONFIG_DVB_S5H1420 is not set
900# CONFIG_DVB_STV0288 is not set
901# CONFIG_DVB_STB6000 is not set
902# CONFIG_DVB_STV0299 is not set
903# CONFIG_DVB_TDA8083 is not set
801# CONFIG_DVB_TDA10086 is not set 904# CONFIG_DVB_TDA10086 is not set
905# CONFIG_DVB_VES1X93 is not set
906# CONFIG_DVB_TUNER_ITD1000 is not set
907# CONFIG_DVB_TDA826X is not set
908# CONFIG_DVB_TUA6100 is not set
909# CONFIG_DVB_CX24116 is not set
910# CONFIG_DVB_SI21XX is not set
802 911
803# 912#
804# DVB-T (terrestrial) frontends 913# DVB-T (terrestrial) frontends
@@ -807,6 +916,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
807# CONFIG_DVB_SP887X is not set 916# CONFIG_DVB_SP887X is not set
808# CONFIG_DVB_CX22700 is not set 917# CONFIG_DVB_CX22700 is not set
809# CONFIG_DVB_CX22702 is not set 918# CONFIG_DVB_CX22702 is not set
919# CONFIG_DVB_DRX397XD is not set
810# CONFIG_DVB_L64781 is not set 920# CONFIG_DVB_L64781 is not set
811# CONFIG_DVB_TDA1004X is not set 921# CONFIG_DVB_TDA1004X is not set
812# CONFIG_DVB_NXT6000 is not set 922# CONFIG_DVB_NXT6000 is not set
@@ -816,6 +926,7 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
816# CONFIG_DVB_DIB3000MC is not set 926# CONFIG_DVB_DIB3000MC is not set
817# CONFIG_DVB_DIB7000M is not set 927# CONFIG_DVB_DIB7000M is not set
818# CONFIG_DVB_DIB7000P is not set 928# CONFIG_DVB_DIB7000P is not set
929# CONFIG_DVB_TDA10048 is not set
819 930
820# 931#
821# DVB-C (cable) frontends 932# DVB-C (cable) frontends
@@ -834,25 +945,28 @@ CONFIG_DVB_CAPTURE_DRIVERS=y
834# CONFIG_DVB_BCM3510 is not set 945# CONFIG_DVB_BCM3510 is not set
835# CONFIG_DVB_LGDT330X is not set 946# CONFIG_DVB_LGDT330X is not set
836# CONFIG_DVB_S5H1409 is not set 947# CONFIG_DVB_S5H1409 is not set
948# CONFIG_DVB_AU8522 is not set
949# CONFIG_DVB_S5H1411 is not set
837 950
838# 951#
839# Tuners/PLL support 952# Digital terrestrial only tuners/PLL
840# 953#
841# CONFIG_DVB_PLL is not set 954# CONFIG_DVB_PLL is not set
842# CONFIG_DVB_TDA826X is not set
843# CONFIG_DVB_TDA827X is not set
844# CONFIG_DVB_TUNER_QT1010 is not set
845# CONFIG_DVB_TUNER_MT2060 is not set
846# CONFIG_DVB_TUNER_MT2266 is not set
847# CONFIG_DVB_TUNER_MT2131 is not set
848# CONFIG_DVB_TUNER_DIB0070 is not set 955# CONFIG_DVB_TUNER_DIB0070 is not set
849 956
850# 957#
851# Miscellaneous devices 958# SEC control devices for DVB-S
852# 959#
853# CONFIG_DVB_LNBP21 is not set 960# CONFIG_DVB_LNBP21 is not set
961# CONFIG_DVB_ISL6405 is not set
854# CONFIG_DVB_ISL6421 is not set 962# CONFIG_DVB_ISL6421 is not set
855# CONFIG_DVB_TUA6100 is not set 963# CONFIG_DVB_LGS8GL5 is not set
964
965#
966# Tools to develop new frontends
967#
968# CONFIG_DVB_DUMMY_FE is not set
969# CONFIG_DVB_AF9013 is not set
856CONFIG_DAB=y 970CONFIG_DAB=y
857 971
858# 972#
@@ -864,15 +978,16 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
864CONFIG_FB=y 978CONFIG_FB=y
865CONFIG_FIRMWARE_EDID=y 979CONFIG_FIRMWARE_EDID=y
866# CONFIG_FB_DDC is not set 980# CONFIG_FB_DDC is not set
867# CONFIG_FB_CFB_FILLRECT is not set 981# CONFIG_FB_BOOT_VESA_SUPPORT is not set
868# CONFIG_FB_CFB_COPYAREA is not set 982CONFIG_FB_CFB_FILLRECT=m
869# CONFIG_FB_CFB_IMAGEBLIT is not set 983CONFIG_FB_CFB_COPYAREA=m
984CONFIG_FB_CFB_IMAGEBLIT=m
870# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 985# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
871# CONFIG_FB_SYS_FILLRECT is not set 986# CONFIG_FB_SYS_FILLRECT is not set
872# CONFIG_FB_SYS_COPYAREA is not set 987# CONFIG_FB_SYS_COPYAREA is not set
873# CONFIG_FB_SYS_IMAGEBLIT is not set 988# CONFIG_FB_SYS_IMAGEBLIT is not set
989# CONFIG_FB_FOREIGN_ENDIAN is not set
874# CONFIG_FB_SYS_FOPS is not set 990# CONFIG_FB_SYS_FOPS is not set
875CONFIG_FB_DEFERRED_IO=y
876# CONFIG_FB_SVGALIB is not set 991# CONFIG_FB_SVGALIB is not set
877# CONFIG_FB_MACMODES is not set 992# CONFIG_FB_MACMODES is not set
878# CONFIG_FB_BACKLIGHT is not set 993# CONFIG_FB_BACKLIGHT is not set
@@ -897,6 +1012,7 @@ CONFIG_FB_MODE_HELPERS=y
897# CONFIG_FB_S3 is not set 1012# CONFIG_FB_S3 is not set
898# CONFIG_FB_SAVAGE is not set 1013# CONFIG_FB_SAVAGE is not set
899# CONFIG_FB_SIS is not set 1014# CONFIG_FB_SIS is not set
1015# CONFIG_FB_VIA is not set
900# CONFIG_FB_NEOMAGIC is not set 1016# CONFIG_FB_NEOMAGIC is not set
901# CONFIG_FB_KYRO is not set 1017# CONFIG_FB_KYRO is not set
902# CONFIG_FB_3DFX is not set 1018# CONFIG_FB_3DFX is not set
@@ -905,7 +1021,10 @@ CONFIG_FB_MODE_HELPERS=y
905# CONFIG_FB_TRIDENT is not set 1021# CONFIG_FB_TRIDENT is not set
906# CONFIG_FB_ARK is not set 1022# CONFIG_FB_ARK is not set
907# CONFIG_FB_PM3 is not set 1023# CONFIG_FB_PM3 is not set
1024# CONFIG_FB_CARMINE is not set
1025CONFIG_FB_SH_MOBILE_LCDC=m
908# CONFIG_FB_VIRTUAL is not set 1026# CONFIG_FB_VIRTUAL is not set
1027# CONFIG_FB_METRONOME is not set
909# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1028# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
910 1029
911# 1030#
@@ -938,38 +1057,42 @@ CONFIG_LOGO=y
938# CONFIG_LOGO_SUPERH_MONO is not set 1057# CONFIG_LOGO_SUPERH_MONO is not set
939# CONFIG_LOGO_SUPERH_VGA16 is not set 1058# CONFIG_LOGO_SUPERH_VGA16 is not set
940CONFIG_LOGO_SUPERH_CLUT224=y 1059CONFIG_LOGO_SUPERH_CLUT224=y
941
942#
943# Sound
944#
945# CONFIG_SOUND is not set 1060# CONFIG_SOUND is not set
946CONFIG_HID_SUPPORT=y 1061CONFIG_HID_SUPPORT=y
947CONFIG_HID=y 1062CONFIG_HID=y
948# CONFIG_HID_DEBUG is not set 1063# CONFIG_HID_DEBUG is not set
949# CONFIG_HIDRAW is not set 1064# CONFIG_HIDRAW is not set
1065# CONFIG_HID_PID is not set
1066
1067#
1068# Special HID drivers
1069#
1070CONFIG_HID_COMPAT=y
950CONFIG_USB_SUPPORT=y 1071CONFIG_USB_SUPPORT=y
951CONFIG_USB_ARCH_HAS_HCD=y 1072CONFIG_USB_ARCH_HAS_HCD=y
952CONFIG_USB_ARCH_HAS_OHCI=y 1073CONFIG_USB_ARCH_HAS_OHCI=y
953CONFIG_USB_ARCH_HAS_EHCI=y 1074CONFIG_USB_ARCH_HAS_EHCI=y
954# CONFIG_USB is not set 1075# CONFIG_USB is not set
1076# CONFIG_USB_OTG_WHITELIST is not set
1077# CONFIG_USB_OTG_BLACKLIST_HUB is not set
955 1078
956# 1079#
957# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1080# Enable Host or Gadget support to see Inventra options
958# 1081#
959 1082
960# 1083#
961# USB Gadget Support 1084# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
962# 1085#
963# CONFIG_USB_GADGET is not set 1086# CONFIG_USB_GADGET is not set
964# CONFIG_MMC is not set 1087# CONFIG_MMC is not set
1088# CONFIG_MEMSTICK is not set
965# CONFIG_NEW_LEDS is not set 1089# CONFIG_NEW_LEDS is not set
1090# CONFIG_ACCESSIBILITY is not set
966# CONFIG_INFINIBAND is not set 1091# CONFIG_INFINIBAND is not set
967# CONFIG_RTC_CLASS is not set 1092# CONFIG_RTC_CLASS is not set
968 1093# CONFIG_DMADEVICES is not set
969#
970# Userspace I/O
971#
972# CONFIG_UIO is not set 1094# CONFIG_UIO is not set
1095# CONFIG_STAGING is not set
973 1096
974# 1097#
975# File systems 1098# File systems
@@ -981,22 +1104,20 @@ CONFIG_EXT3_FS=y
981CONFIG_EXT3_FS_XATTR=y 1104CONFIG_EXT3_FS_XATTR=y
982# CONFIG_EXT3_FS_POSIX_ACL is not set 1105# CONFIG_EXT3_FS_POSIX_ACL is not set
983# CONFIG_EXT3_FS_SECURITY is not set 1106# CONFIG_EXT3_FS_SECURITY is not set
984# CONFIG_EXT4DEV_FS is not set 1107# CONFIG_EXT4_FS is not set
985CONFIG_JBD=y 1108CONFIG_JBD=y
986# CONFIG_JBD_DEBUG is not set 1109# CONFIG_JBD_DEBUG is not set
987CONFIG_FS_MBCACHE=y 1110CONFIG_FS_MBCACHE=y
988# CONFIG_REISERFS_FS is not set 1111# CONFIG_REISERFS_FS is not set
989# CONFIG_JFS_FS is not set 1112# CONFIG_JFS_FS is not set
990# CONFIG_FS_POSIX_ACL is not set 1113# CONFIG_FS_POSIX_ACL is not set
1114CONFIG_FILE_LOCKING=y
991# CONFIG_XFS_FS is not set 1115# CONFIG_XFS_FS is not set
992# CONFIG_GFS2_FS is not set
993# CONFIG_OCFS2_FS is not set 1116# CONFIG_OCFS2_FS is not set
994CONFIG_MINIX_FS=y 1117CONFIG_DNOTIFY=y
995CONFIG_ROMFS_FS=y
996CONFIG_INOTIFY=y 1118CONFIG_INOTIFY=y
997CONFIG_INOTIFY_USER=y 1119CONFIG_INOTIFY_USER=y
998# CONFIG_QUOTA is not set 1120# CONFIG_QUOTA is not set
999CONFIG_DNOTIFY=y
1000# CONFIG_AUTOFS_FS is not set 1121# CONFIG_AUTOFS_FS is not set
1001# CONFIG_AUTOFS4_FS is not set 1122# CONFIG_AUTOFS4_FS is not set
1002# CONFIG_FUSE_FS is not set 1123# CONFIG_FUSE_FS is not set
@@ -1020,6 +1141,7 @@ CONFIG_DNOTIFY=y
1020CONFIG_PROC_FS=y 1141CONFIG_PROC_FS=y
1021CONFIG_PROC_KCORE=y 1142CONFIG_PROC_KCORE=y
1022CONFIG_PROC_SYSCTL=y 1143CONFIG_PROC_SYSCTL=y
1144CONFIG_PROC_PAGE_MONITOR=y
1023CONFIG_SYSFS=y 1145CONFIG_SYSFS=y
1024CONFIG_TMPFS=y 1146CONFIG_TMPFS=y
1025# CONFIG_TMPFS_POSIX_ACL is not set 1147# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1039,8 +1161,11 @@ CONFIG_HUGETLB_PAGE=y
1039# CONFIG_EFS_FS is not set 1161# CONFIG_EFS_FS is not set
1040# CONFIG_CRAMFS is not set 1162# CONFIG_CRAMFS is not set
1041# CONFIG_VXFS_FS is not set 1163# CONFIG_VXFS_FS is not set
1164CONFIG_MINIX_FS=y
1165# CONFIG_OMFS_FS is not set
1042# CONFIG_HPFS_FS is not set 1166# CONFIG_HPFS_FS is not set
1043# CONFIG_QNX4FS_FS is not set 1167# CONFIG_QNX4FS_FS is not set
1168CONFIG_ROMFS_FS=y
1044# CONFIG_SYSV_FS is not set 1169# CONFIG_SYSV_FS is not set
1045# CONFIG_UFS_FS is not set 1170# CONFIG_UFS_FS is not set
1046CONFIG_NETWORK_FILESYSTEMS=y 1171CONFIG_NETWORK_FILESYSTEMS=y
@@ -1048,14 +1173,13 @@ CONFIG_NFS_FS=y
1048CONFIG_NFS_V3=y 1173CONFIG_NFS_V3=y
1049# CONFIG_NFS_V3_ACL is not set 1174# CONFIG_NFS_V3_ACL is not set
1050# CONFIG_NFS_V4 is not set 1175# CONFIG_NFS_V4 is not set
1051# CONFIG_NFS_DIRECTIO is not set
1052# CONFIG_NFSD is not set
1053CONFIG_ROOT_NFS=y 1176CONFIG_ROOT_NFS=y
1177# CONFIG_NFSD is not set
1054CONFIG_LOCKD=y 1178CONFIG_LOCKD=y
1055CONFIG_LOCKD_V4=y 1179CONFIG_LOCKD_V4=y
1056CONFIG_NFS_COMMON=y 1180CONFIG_NFS_COMMON=y
1057CONFIG_SUNRPC=y 1181CONFIG_SUNRPC=y
1058# CONFIG_SUNRPC_BIND34 is not set 1182# CONFIG_SUNRPC_REGISTER_V4 is not set
1059# CONFIG_RPCSEC_GSS_KRB5 is not set 1183# CONFIG_RPCSEC_GSS_KRB5 is not set
1060# CONFIG_RPCSEC_GSS_SPKM3 is not set 1184# CONFIG_RPCSEC_GSS_SPKM3 is not set
1061# CONFIG_SMB_FS is not set 1185# CONFIG_SMB_FS is not set
@@ -1087,9 +1211,6 @@ CONFIG_MSDOS_PARTITION=y
1087# CONFIG_SYSV68_PARTITION is not set 1211# CONFIG_SYSV68_PARTITION is not set
1088# CONFIG_NLS is not set 1212# CONFIG_NLS is not set
1089# CONFIG_DLM is not set 1213# CONFIG_DLM is not set
1090CONFIG_INSTRUMENTATION=y
1091# CONFIG_PROFILING is not set
1092# CONFIG_MARKERS is not set
1093 1214
1094# 1215#
1095# Kernel hacking 1216# Kernel hacking
@@ -1098,6 +1219,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1098# CONFIG_PRINTK_TIME is not set 1219# CONFIG_PRINTK_TIME is not set
1099CONFIG_ENABLE_WARN_DEPRECATED=y 1220CONFIG_ENABLE_WARN_DEPRECATED=y
1100CONFIG_ENABLE_MUST_CHECK=y 1221CONFIG_ENABLE_MUST_CHECK=y
1222CONFIG_FRAME_WARN=1024
1101CONFIG_MAGIC_SYSRQ=y 1223CONFIG_MAGIC_SYSRQ=y
1102# CONFIG_UNUSED_SYMBOLS is not set 1224# CONFIG_UNUSED_SYMBOLS is not set
1103CONFIG_DEBUG_FS=y 1225CONFIG_DEBUG_FS=y
@@ -1105,9 +1227,12 @@ CONFIG_DEBUG_FS=y
1105CONFIG_DEBUG_KERNEL=y 1227CONFIG_DEBUG_KERNEL=y
1106# CONFIG_DEBUG_SHIRQ is not set 1228# CONFIG_DEBUG_SHIRQ is not set
1107CONFIG_DETECT_SOFTLOCKUP=y 1229CONFIG_DETECT_SOFTLOCKUP=y
1230# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1231CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1108CONFIG_SCHED_DEBUG=y 1232CONFIG_SCHED_DEBUG=y
1109CONFIG_SCHEDSTATS=y 1233CONFIG_SCHEDSTATS=y
1110# CONFIG_TIMER_STATS is not set 1234# CONFIG_TIMER_STATS is not set
1235# CONFIG_DEBUG_OBJECTS is not set
1111# CONFIG_DEBUG_SLAB is not set 1236# CONFIG_DEBUG_SLAB is not set
1112CONFIG_DEBUG_PREEMPT=y 1237CONFIG_DEBUG_PREEMPT=y
1113# CONFIG_DEBUG_RT_MUTEXES is not set 1238# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1123,15 +1248,20 @@ CONFIG_DEBUG_PREEMPT=y
1123CONFIG_DEBUG_BUGVERBOSE=y 1248CONFIG_DEBUG_BUGVERBOSE=y
1124# CONFIG_DEBUG_INFO is not set 1249# CONFIG_DEBUG_INFO is not set
1125# CONFIG_DEBUG_VM is not set 1250# CONFIG_DEBUG_VM is not set
1251# CONFIG_DEBUG_WRITECOUNT is not set
1252# CONFIG_DEBUG_MEMORY_INIT is not set
1126# CONFIG_DEBUG_LIST is not set 1253# CONFIG_DEBUG_LIST is not set
1127# CONFIG_DEBUG_SG is not set 1254# CONFIG_DEBUG_SG is not set
1128CONFIG_FRAME_POINTER=y 1255CONFIG_FRAME_POINTER=y
1129CONFIG_FORCED_INLINING=y
1130# CONFIG_BOOT_PRINTK_DELAY is not set
1131# CONFIG_RCU_TORTURE_TEST is not set 1256# CONFIG_RCU_TORTURE_TEST is not set
1257# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1258# CONFIG_BACKTRACE_SELF_TEST is not set
1259# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1132# CONFIG_FAULT_INJECTION is not set 1260# CONFIG_FAULT_INJECTION is not set
1261# CONFIG_LATENCYTOP is not set
1262# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1263# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1133# CONFIG_SAMPLES is not set 1264# CONFIG_SAMPLES is not set
1134# CONFIG_SH_STANDARD_BIOS is not set
1135# CONFIG_EARLY_SCIF_CONSOLE is not set 1265# CONFIG_EARLY_SCIF_CONSOLE is not set
1136# CONFIG_DEBUG_BOOTMEM is not set 1266# CONFIG_DEBUG_BOOTMEM is not set
1137# CONFIG_DEBUG_STACK_USAGE is not set 1267# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1147,8 +1277,93 @@ CONFIG_SH64_SR_WATCH=y
1147# 1277#
1148# CONFIG_KEYS is not set 1278# CONFIG_KEYS is not set
1149# CONFIG_SECURITY is not set 1279# CONFIG_SECURITY is not set
1280# CONFIG_SECURITYFS is not set
1150# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1281# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1151# CONFIG_CRYPTO is not set 1282CONFIG_CRYPTO=y
1283
1284#
1285# Crypto core or helper
1286#
1287# CONFIG_CRYPTO_FIPS is not set
1288# CONFIG_CRYPTO_MANAGER is not set
1289# CONFIG_CRYPTO_GF128MUL is not set
1290# CONFIG_CRYPTO_NULL is not set
1291# CONFIG_CRYPTO_CRYPTD is not set
1292# CONFIG_CRYPTO_AUTHENC is not set
1293# CONFIG_CRYPTO_TEST is not set
1294
1295#
1296# Authenticated Encryption with Associated Data
1297#
1298# CONFIG_CRYPTO_CCM is not set
1299# CONFIG_CRYPTO_GCM is not set
1300# CONFIG_CRYPTO_SEQIV is not set
1301
1302#
1303# Block modes
1304#
1305# CONFIG_CRYPTO_CBC is not set
1306# CONFIG_CRYPTO_CTR is not set
1307# CONFIG_CRYPTO_CTS is not set
1308# CONFIG_CRYPTO_ECB is not set
1309# CONFIG_CRYPTO_LRW is not set
1310# CONFIG_CRYPTO_PCBC is not set
1311# CONFIG_CRYPTO_XTS is not set
1312
1313#
1314# Hash modes
1315#
1316# CONFIG_CRYPTO_HMAC is not set
1317# CONFIG_CRYPTO_XCBC is not set
1318
1319#
1320# Digest
1321#
1322# CONFIG_CRYPTO_CRC32C is not set
1323# CONFIG_CRYPTO_MD4 is not set
1324# CONFIG_CRYPTO_MD5 is not set
1325# CONFIG_CRYPTO_MICHAEL_MIC is not set
1326# CONFIG_CRYPTO_RMD128 is not set
1327# CONFIG_CRYPTO_RMD160 is not set
1328# CONFIG_CRYPTO_RMD256 is not set
1329# CONFIG_CRYPTO_RMD320 is not set
1330# CONFIG_CRYPTO_SHA1 is not set
1331# CONFIG_CRYPTO_SHA256 is not set
1332# CONFIG_CRYPTO_SHA512 is not set
1333# CONFIG_CRYPTO_TGR192 is not set
1334# CONFIG_CRYPTO_WP512 is not set
1335
1336#
1337# Ciphers
1338#
1339# CONFIG_CRYPTO_AES is not set
1340# CONFIG_CRYPTO_ANUBIS is not set
1341# CONFIG_CRYPTO_ARC4 is not set
1342# CONFIG_CRYPTO_BLOWFISH is not set
1343# CONFIG_CRYPTO_CAMELLIA is not set
1344# CONFIG_CRYPTO_CAST5 is not set
1345# CONFIG_CRYPTO_CAST6 is not set
1346# CONFIG_CRYPTO_DES is not set
1347# CONFIG_CRYPTO_FCRYPT is not set
1348# CONFIG_CRYPTO_KHAZAD is not set
1349# CONFIG_CRYPTO_SALSA20 is not set
1350# CONFIG_CRYPTO_SEED is not set
1351# CONFIG_CRYPTO_SERPENT is not set
1352# CONFIG_CRYPTO_TEA is not set
1353# CONFIG_CRYPTO_TWOFISH is not set
1354
1355#
1356# Compression
1357#
1358# CONFIG_CRYPTO_DEFLATE is not set
1359# CONFIG_CRYPTO_LZO is not set
1360
1361#
1362# Random Number Generation
1363#
1364# CONFIG_CRYPTO_ANSI_CPRNG is not set
1365CONFIG_CRYPTO_HW=y
1366# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1152 1367
1153# 1368#
1154# Library routines 1369# Library routines
@@ -1156,6 +1371,7 @@ CONFIG_SH64_SR_WATCH=y
1156CONFIG_BITREVERSE=y 1371CONFIG_BITREVERSE=y
1157# CONFIG_CRC_CCITT is not set 1372# CONFIG_CRC_CCITT is not set
1158# CONFIG_CRC16 is not set 1373# CONFIG_CRC16 is not set
1374# CONFIG_CRC_T10DIF is not set
1159# CONFIG_CRC_ITU_T is not set 1375# CONFIG_CRC_ITU_T is not set
1160CONFIG_CRC32=y 1376CONFIG_CRC32=y
1161# CONFIG_CRC7 is not set 1377# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig
index 3dc1cbd8a981..be4c2e0dbb26 100644
--- a/arch/sh/configs/dreamcast_defconfig
+++ b/arch/sh/configs/dreamcast_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.27-rc1 3# Linux kernel version: 2.6.27
4# Mon Aug 4 16:49:13 2008 4# Wed Oct 22 18:18:02 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -13,12 +13,13 @@ CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
@@ -70,7 +71,9 @@ CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y 71CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y 72CONFIG_EVENTFD=y
72CONFIG_SHMEM=y 73CONFIG_SHMEM=y
74CONFIG_AIO=y
73CONFIG_VM_EVENT_COUNTERS=y 75CONFIG_VM_EVENT_COUNTERS=y
76CONFIG_PCI_QUIRKS=y
74CONFIG_SLAB=y 77CONFIG_SLAB=y
75# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
76# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
@@ -78,15 +81,12 @@ CONFIG_PROFILING=y
78# CONFIG_MARKERS is not set 81# CONFIG_MARKERS is not set
79# CONFIG_OPROFILE is not set 82# CONFIG_OPROFILE is not set
80CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
81# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 84# CONFIG_KPROBES is not set
82# CONFIG_HAVE_IOREMAP_PROT is not set 85CONFIG_HAVE_IOREMAP_PROT=y
83# CONFIG_HAVE_KPROBES is not set 86CONFIG_HAVE_KPROBES=y
84# CONFIG_HAVE_KRETPROBES is not set 87CONFIG_HAVE_KRETPROBES=y
85# CONFIG_HAVE_ARCH_TRACEHOOK is not set 88CONFIG_HAVE_ARCH_TRACEHOOK=y
86# CONFIG_HAVE_DMA_ATTRS is not set
87# CONFIG_USE_GENERIC_SMP_HELPERS is not set
88CONFIG_HAVE_CLK=y 89CONFIG_HAVE_CLK=y
89CONFIG_PROC_PAGE_MONITOR=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
92CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
@@ -119,6 +119,7 @@ CONFIG_DEFAULT_AS=y
119# CONFIG_DEFAULT_NOOP is not set 119# CONFIG_DEFAULT_NOOP is not set
120CONFIG_DEFAULT_IOSCHED="anticipatory" 120CONFIG_DEFAULT_IOSCHED="anticipatory"
121CONFIG_CLASSIC_RCU=y 121CONFIG_CLASSIC_RCU=y
122# CONFIG_FREEZER is not set
122 123
123# 124#
124# System type 125# System type
@@ -192,12 +193,13 @@ CONFIG_FLATMEM_MANUAL=y
192CONFIG_FLATMEM=y 193CONFIG_FLATMEM=y
193CONFIG_FLAT_NODE_MEM_MAP=y 194CONFIG_FLAT_NODE_MEM_MAP=y
194CONFIG_SPARSEMEM_STATIC=y 195CONFIG_SPARSEMEM_STATIC=y
195# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
196CONFIG_PAGEFLAGS_EXTENDED=y 196CONFIG_PAGEFLAGS_EXTENDED=y
197CONFIG_SPLIT_PTLOCK_CPUS=4 197CONFIG_SPLIT_PTLOCK_CPUS=4
198# CONFIG_RESOURCES_64BIT is not set 198# CONFIG_RESOURCES_64BIT is not set
199# CONFIG_PHYS_ADDR_T_64BIT is not set
199CONFIG_ZONE_DMA_FLAG=0 200CONFIG_ZONE_DMA_FLAG=0
200CONFIG_NR_QUICK=2 201CONFIG_NR_QUICK=2
202CONFIG_UNEVICTABLE_LRU=y
201 203
202# 204#
203# Cache configuration 205# Cache configuration
@@ -230,7 +232,6 @@ CONFIG_SH_DREAMCAST=y
230CONFIG_SH_TMU=y 232CONFIG_SH_TMU=y
231CONFIG_SH_TIMER_IRQ=16 233CONFIG_SH_TIMER_IRQ=16
232CONFIG_SH_PCLK_FREQ=49876504 234CONFIG_SH_PCLK_FREQ=49876504
233# CONFIG_TICK_ONESHOT is not set
234# CONFIG_NO_HZ is not set 235# CONFIG_NO_HZ is not set
235# CONFIG_HIGH_RES_TIMERS is not set 236# CONFIG_HIGH_RES_TIMERS is not set
236CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 237CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -318,6 +319,8 @@ CONFIG_PCI_LEGACY=y
318# Executable file formats 319# Executable file formats
319# 320#
320CONFIG_BINFMT_ELF=y 321CONFIG_BINFMT_ELF=y
322# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
323# CONFIG_HAVE_AOUT is not set
321# CONFIG_BINFMT_MISC is not set 324# CONFIG_BINFMT_MISC is not set
322CONFIG_NET=y 325CONFIG_NET=y
323 326
@@ -365,6 +368,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
365# CONFIG_TIPC is not set 368# CONFIG_TIPC is not set
366# CONFIG_ATM is not set 369# CONFIG_ATM is not set
367# CONFIG_BRIDGE is not set 370# CONFIG_BRIDGE is not set
371# CONFIG_NET_DSA is not set
368# CONFIG_VLAN_8021Q is not set 372# CONFIG_VLAN_8021Q is not set
369# CONFIG_DECNET is not set 373# CONFIG_DECNET is not set
370# CONFIG_LLC2 is not set 374# CONFIG_LLC2 is not set
@@ -385,11 +389,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
385# CONFIG_IRDA is not set 389# CONFIG_IRDA is not set
386# CONFIG_BT is not set 390# CONFIG_BT is not set
387# CONFIG_AF_RXRPC is not set 391# CONFIG_AF_RXRPC is not set
388 392# CONFIG_PHONET is not set
389# 393CONFIG_WIRELESS=y
390# Wireless
391#
392# CONFIG_CFG80211 is not set 394# CONFIG_CFG80211 is not set
395# CONFIG_WIRELESS_OLD_REGULATORY is not set
393# CONFIG_WIRELESS_EXT is not set 396# CONFIG_WIRELESS_EXT is not set
394# CONFIG_MAC80211 is not set 397# CONFIG_MAC80211 is not set
395# CONFIG_IEEE80211 is not set 398# CONFIG_IEEE80211 is not set
@@ -480,6 +483,9 @@ CONFIG_MII=y
480# CONFIG_IBM_NEW_EMAC_RGMII is not set 483# CONFIG_IBM_NEW_EMAC_RGMII is not set
481# CONFIG_IBM_NEW_EMAC_TAH is not set 484# CONFIG_IBM_NEW_EMAC_TAH is not set
482# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 485# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
486# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
487# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
488# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
483CONFIG_NET_PCI=y 489CONFIG_NET_PCI=y
484# CONFIG_PCNET32 is not set 490# CONFIG_PCNET32 is not set
485# CONFIG_AMD8111_ETH is not set 491# CONFIG_AMD8111_ETH is not set
@@ -504,6 +510,7 @@ CONFIG_8139TOO=y
504# CONFIG_TLAN is not set 510# CONFIG_TLAN is not set
505# CONFIG_VIA_RHINE is not set 511# CONFIG_VIA_RHINE is not set
506# CONFIG_SC92031 is not set 512# CONFIG_SC92031 is not set
513# CONFIG_ATL2 is not set
507# CONFIG_NETDEV_1000 is not set 514# CONFIG_NETDEV_1000 is not set
508# CONFIG_NETDEV_10000 is not set 515# CONFIG_NETDEV_10000 is not set
509# CONFIG_TR is not set 516# CONFIG_TR is not set
@@ -559,6 +566,7 @@ CONFIG_INPUT_MOUSE=y
559# CONFIG_MOUSE_PS2 is not set 566# CONFIG_MOUSE_PS2 is not set
560# CONFIG_MOUSE_SERIAL is not set 567# CONFIG_MOUSE_SERIAL is not set
561# CONFIG_MOUSE_APPLETOUCH is not set 568# CONFIG_MOUSE_APPLETOUCH is not set
569# CONFIG_MOUSE_BCM5974 is not set
562# CONFIG_MOUSE_VSXXXAA is not set 570# CONFIG_MOUSE_VSXXXAA is not set
563# CONFIG_INPUT_JOYSTICK is not set 571# CONFIG_INPUT_JOYSTICK is not set
564# CONFIG_INPUT_TABLET is not set 572# CONFIG_INPUT_TABLET is not set
@@ -626,6 +634,7 @@ CONFIG_WATCHDOG=y
626# Watchdog Device Drivers 634# Watchdog Device Drivers
627# 635#
628# CONFIG_SOFT_WATCHDOG is not set 636# CONFIG_SOFT_WATCHDOG is not set
637# CONFIG_ALIM7101_WDT is not set
629CONFIG_SH_WDT=y 638CONFIG_SH_WDT=y
630# CONFIG_SH_WDT_MMAP is not set 639# CONFIG_SH_WDT_MMAP is not set
631 640
@@ -647,6 +656,8 @@ CONFIG_SSB_POSSIBLE=y
647# CONFIG_MFD_CORE is not set 656# CONFIG_MFD_CORE is not set
648# CONFIG_MFD_SM501 is not set 657# CONFIG_MFD_SM501 is not set
649# CONFIG_HTC_PASIC3 is not set 658# CONFIG_HTC_PASIC3 is not set
659# CONFIG_MFD_TMIO is not set
660# CONFIG_MFD_WM8400 is not set
650 661
651# 662#
652# Multimedia devices 663# Multimedia devices
@@ -673,6 +684,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
673CONFIG_FB=y 684CONFIG_FB=y
674CONFIG_FIRMWARE_EDID=y 685CONFIG_FIRMWARE_EDID=y
675# CONFIG_FB_DDC is not set 686# CONFIG_FB_DDC is not set
687# CONFIG_FB_BOOT_VESA_SUPPORT is not set
676CONFIG_FB_CFB_FILLRECT=y 688CONFIG_FB_CFB_FILLRECT=y
677CONFIG_FB_CFB_COPYAREA=y 689CONFIG_FB_CFB_COPYAREA=y
678CONFIG_FB_CFB_IMAGEBLIT=y 690CONFIG_FB_CFB_IMAGEBLIT=y
@@ -707,6 +719,7 @@ CONFIG_FB_PVR2=y
707# CONFIG_FB_S3 is not set 719# CONFIG_FB_S3 is not set
708# CONFIG_FB_SAVAGE is not set 720# CONFIG_FB_SAVAGE is not set
709# CONFIG_FB_SIS is not set 721# CONFIG_FB_SIS is not set
722# CONFIG_FB_VIA is not set
710# CONFIG_FB_NEOMAGIC is not set 723# CONFIG_FB_NEOMAGIC is not set
711# CONFIG_FB_KYRO is not set 724# CONFIG_FB_KYRO is not set
712# CONFIG_FB_3DFX is not set 725# CONFIG_FB_3DFX is not set
@@ -718,6 +731,7 @@ CONFIG_FB_PVR2=y
718# CONFIG_FB_CARMINE is not set 731# CONFIG_FB_CARMINE is not set
719# CONFIG_FB_SH_MOBILE_LCDC is not set 732# CONFIG_FB_SH_MOBILE_LCDC is not set
720# CONFIG_FB_VIRTUAL is not set 733# CONFIG_FB_VIRTUAL is not set
734# CONFIG_FB_METRONOME is not set
721# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 735# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
722 736
723# 737#
@@ -755,6 +769,12 @@ CONFIG_HID_SUPPORT=y
755CONFIG_HID=y 769CONFIG_HID=y
756# CONFIG_HID_DEBUG is not set 770# CONFIG_HID_DEBUG is not set
757# CONFIG_HIDRAW is not set 771# CONFIG_HIDRAW is not set
772# CONFIG_HID_PID is not set
773
774#
775# Special HID drivers
776#
777CONFIG_HID_COMPAT=y
758CONFIG_USB_SUPPORT=y 778CONFIG_USB_SUPPORT=y
759CONFIG_USB_ARCH_HAS_HCD=y 779CONFIG_USB_ARCH_HAS_HCD=y
760CONFIG_USB_ARCH_HAS_OHCI=y 780CONFIG_USB_ARCH_HAS_OHCI=y
@@ -764,6 +784,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
764# CONFIG_USB_OTG_BLACKLIST_HUB is not set 784# CONFIG_USB_OTG_BLACKLIST_HUB is not set
765 785
766# 786#
787# Enable Host or Gadget support to see Inventra options
788#
789
790#
767# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 791# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
768# 792#
769# CONFIG_USB_GADGET is not set 793# CONFIG_USB_GADGET is not set
@@ -775,16 +799,18 @@ CONFIG_USB_ARCH_HAS_EHCI=y
775# CONFIG_RTC_CLASS is not set 799# CONFIG_RTC_CLASS is not set
776# CONFIG_DMADEVICES is not set 800# CONFIG_DMADEVICES is not set
777# CONFIG_UIO is not set 801# CONFIG_UIO is not set
802# CONFIG_STAGING is not set
778 803
779# 804#
780# File systems 805# File systems
781# 806#
782# CONFIG_EXT2_FS is not set 807# CONFIG_EXT2_FS is not set
783# CONFIG_EXT3_FS is not set 808# CONFIG_EXT3_FS is not set
784# CONFIG_EXT4DEV_FS is not set 809# CONFIG_EXT4_FS is not set
785# CONFIG_REISERFS_FS is not set 810# CONFIG_REISERFS_FS is not set
786# CONFIG_JFS_FS is not set 811# CONFIG_JFS_FS is not set
787# CONFIG_FS_POSIX_ACL is not set 812# CONFIG_FS_POSIX_ACL is not set
813CONFIG_FILE_LOCKING=y
788# CONFIG_XFS_FS is not set 814# CONFIG_XFS_FS is not set
789# CONFIG_OCFS2_FS is not set 815# CONFIG_OCFS2_FS is not set
790# CONFIG_DNOTIFY is not set 816# CONFIG_DNOTIFY is not set
@@ -814,6 +840,7 @@ CONFIG_INOTIFY_USER=y
814CONFIG_PROC_FS=y 840CONFIG_PROC_FS=y
815CONFIG_PROC_KCORE=y 841CONFIG_PROC_KCORE=y
816CONFIG_PROC_SYSCTL=y 842CONFIG_PROC_SYSCTL=y
843CONFIG_PROC_PAGE_MONITOR=y
817CONFIG_SYSFS=y 844CONFIG_SYSFS=y
818CONFIG_TMPFS=y 845CONFIG_TMPFS=y
819# CONFIG_TMPFS_POSIX_ACL is not set 846# CONFIG_TMPFS_POSIX_ACL is not set
@@ -872,6 +899,11 @@ CONFIG_FRAME_WARN=1024
872# CONFIG_DEBUG_KERNEL is not set 899# CONFIG_DEBUG_KERNEL is not set
873# CONFIG_DEBUG_BUGVERBOSE is not set 900# CONFIG_DEBUG_BUGVERBOSE is not set
874# CONFIG_DEBUG_MEMORY_INIT is not set 901# CONFIG_DEBUG_MEMORY_INIT is not set
902# CONFIG_RCU_CPU_STALL_DETECTOR is not set
903# CONFIG_LATENCYTOP is not set
904CONFIG_NOP_TRACER=y
905CONFIG_HAVE_FTRACE=y
906# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
875# CONFIG_SAMPLES is not set 907# CONFIG_SAMPLES is not set
876# CONFIG_SH_STANDARD_BIOS is not set 908# CONFIG_SH_STANDARD_BIOS is not set
877# CONFIG_EARLY_SCIF_CONSOLE is not set 909# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -882,12 +914,14 @@ CONFIG_FRAME_WARN=1024
882# 914#
883# CONFIG_KEYS is not set 915# CONFIG_KEYS is not set
884# CONFIG_SECURITY is not set 916# CONFIG_SECURITY is not set
917# CONFIG_SECURITYFS is not set
885# CONFIG_SECURITY_FILE_CAPABILITIES is not set 918# CONFIG_SECURITY_FILE_CAPABILITIES is not set
886CONFIG_CRYPTO=y 919CONFIG_CRYPTO=y
887 920
888# 921#
889# Crypto core or helper 922# Crypto core or helper
890# 923#
924# CONFIG_CRYPTO_FIPS is not set
891# CONFIG_CRYPTO_MANAGER is not set 925# CONFIG_CRYPTO_MANAGER is not set
892# CONFIG_CRYPTO_GF128MUL is not set 926# CONFIG_CRYPTO_GF128MUL is not set
893# CONFIG_CRYPTO_NULL is not set 927# CONFIG_CRYPTO_NULL is not set
@@ -960,6 +994,11 @@ CONFIG_CRYPTO=y
960# 994#
961# CONFIG_CRYPTO_DEFLATE is not set 995# CONFIG_CRYPTO_DEFLATE is not set
962# CONFIG_CRYPTO_LZO is not set 996# CONFIG_CRYPTO_LZO is not set
997
998#
999# Random Number Generation
1000#
1001# CONFIG_CRYPTO_ANSI_CPRNG is not set
963CONFIG_CRYPTO_HW=y 1002CONFIG_CRYPTO_HW=y
964# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1003# CONFIG_CRYPTO_DEV_HIFN_795X is not set
965 1004
@@ -967,7 +1006,6 @@ CONFIG_CRYPTO_HW=y
967# Library routines 1006# Library routines
968# 1007#
969CONFIG_BITREVERSE=y 1008CONFIG_BITREVERSE=y
970# CONFIG_GENERIC_FIND_FIRST_BIT is not set
971# CONFIG_CRC_CCITT is not set 1009# CONFIG_CRC_CCITT is not set
972# CONFIG_CRC16 is not set 1010# CONFIG_CRC16 is not set
973# CONFIG_CRC_T10DIF is not set 1011# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/edosk7760_defconfig b/arch/sh/configs/edosk7760_defconfig
index bef07fa8d858..158006847ad6 100644
--- a/arch/sh/configs/edosk7760_defconfig
+++ b/arch/sh/configs/edosk7760_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26 3# Linux kernel version: 2.6.27
4# Tue Aug 26 11:36:09 2008 4# Wed Oct 22 18:20:09 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
10CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
11CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
13CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
15CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
22CONFIG_ARCH_SUPPORTS_AOUT=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24 26
25# 27#
@@ -55,7 +57,6 @@ CONFIG_SYSCTL=y
55CONFIG_EMBEDDED=y 57CONFIG_EMBEDDED=y
56CONFIG_UID16=y 58CONFIG_UID16=y
57CONFIG_SYSCTL_SYSCALL=y 59CONFIG_SYSCTL_SYSCALL=y
58CONFIG_SYSCTL_SYSCALL_CHECK=y
59CONFIG_KALLSYMS=y 60CONFIG_KALLSYMS=y
60CONFIG_KALLSYMS_ALL=y 61CONFIG_KALLSYMS_ALL=y
61# CONFIG_KALLSYMS_EXTRA_PASS is not set 62# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -72,7 +73,9 @@ CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y 73CONFIG_TIMERFD=y
73CONFIG_EVENTFD=y 74CONFIG_EVENTFD=y
74CONFIG_SHMEM=y 75CONFIG_SHMEM=y
76CONFIG_AIO=y
75CONFIG_VM_EVENT_COUNTERS=y 77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
76CONFIG_SLUB_DEBUG=y 79CONFIG_SLUB_DEBUG=y
77# CONFIG_SLAB is not set 80# CONFIG_SLAB is not set
78CONFIG_SLUB=y 81CONFIG_SLUB=y
@@ -80,10 +83,13 @@ CONFIG_SLUB=y
80# CONFIG_PROFILING is not set 83# CONFIG_PROFILING is not set
81# CONFIG_MARKERS is not set 84# CONFIG_MARKERS is not set
82CONFIG_HAVE_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
83# CONFIG_HAVE_KPROBES is not set 86# CONFIG_KPROBES is not set
84# CONFIG_HAVE_KRETPROBES is not set 87CONFIG_HAVE_IOREMAP_PROT=y
85# CONFIG_HAVE_DMA_ATTRS is not set 88CONFIG_HAVE_KPROBES=y
86CONFIG_PROC_PAGE_MONITOR=y 89CONFIG_HAVE_KRETPROBES=y
90CONFIG_HAVE_ARCH_TRACEHOOK=y
91CONFIG_HAVE_CLK=y
92CONFIG_HAVE_GENERIC_DMA_COHERENT=y
87CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
89# CONFIG_TINY_SHMEM is not set 95# CONFIG_TINY_SHMEM is not set
@@ -100,6 +106,7 @@ CONFIG_BLOCK=y
100# CONFIG_BLK_DEV_IO_TRACE is not set 106# CONFIG_BLK_DEV_IO_TRACE is not set
101# CONFIG_LSF is not set 107# CONFIG_LSF is not set
102# CONFIG_BLK_DEV_BSG is not set 108# CONFIG_BLK_DEV_BSG is not set
109# CONFIG_BLK_DEV_INTEGRITY is not set
103 110
104# 111#
105# IO Schedulers 112# IO Schedulers
@@ -114,6 +121,7 @@ CONFIG_DEFAULT_CFQ=y
114# CONFIG_DEFAULT_NOOP is not set 121# CONFIG_DEFAULT_NOOP is not set
115CONFIG_DEFAULT_IOSCHED="cfq" 122CONFIG_DEFAULT_IOSCHED="cfq"
116CONFIG_CLASSIC_RCU=y 123CONFIG_CLASSIC_RCU=y
124# CONFIG_FREEZER is not set
117 125
118# 126#
119# System type 127# System type
@@ -171,7 +179,9 @@ CONFIG_ARCH_POPULATES_NODE_MAP=y
171CONFIG_ARCH_SELECT_MEMORY_MODEL=y 179CONFIG_ARCH_SELECT_MEMORY_MODEL=y
172CONFIG_PAGE_SIZE_4KB=y 180CONFIG_PAGE_SIZE_4KB=y
173# CONFIG_PAGE_SIZE_8KB is not set 181# CONFIG_PAGE_SIZE_8KB is not set
182# CONFIG_PAGE_SIZE_16KB is not set
174# CONFIG_PAGE_SIZE_64KB is not set 183# CONFIG_PAGE_SIZE_64KB is not set
184CONFIG_ENTRY_OFFSET=0x00001000
175CONFIG_SELECT_MEMORY_MODEL=y 185CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y 186CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set 187# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -179,12 +189,13 @@ CONFIG_FLATMEM_MANUAL=y
179CONFIG_FLATMEM=y 189CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y 190CONFIG_FLAT_NODE_MEM_MAP=y
181CONFIG_SPARSEMEM_STATIC=y 191CONFIG_SPARSEMEM_STATIC=y
182# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
183CONFIG_PAGEFLAGS_EXTENDED=y 192CONFIG_PAGEFLAGS_EXTENDED=y
184CONFIG_SPLIT_PTLOCK_CPUS=4 193CONFIG_SPLIT_PTLOCK_CPUS=4
185# CONFIG_RESOURCES_64BIT is not set 194# CONFIG_RESOURCES_64BIT is not set
195# CONFIG_PHYS_ADDR_T_64BIT is not set
186CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
187CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
198CONFIG_UNEVICTABLE_LRU=y
188 199
189# 200#
190# Cache configuration 201# Cache configuration
@@ -254,9 +265,10 @@ CONFIG_HZ_250=y
254# CONFIG_HZ_300 is not set 265# CONFIG_HZ_300 is not set
255# CONFIG_HZ_1000 is not set 266# CONFIG_HZ_1000 is not set
256CONFIG_HZ=250 267CONFIG_HZ=250
257# CONFIG_SCHED_HRTICK is not set 268CONFIG_SCHED_HRTICK=y
258# CONFIG_KEXEC is not set 269# CONFIG_KEXEC is not set
259# CONFIG_CRASH_DUMP is not set 270# CONFIG_CRASH_DUMP is not set
271# CONFIG_SECCOMP is not set
260# CONFIG_PREEMPT_NONE is not set 272# CONFIG_PREEMPT_NONE is not set
261# CONFIG_PREEMPT_VOLUNTARY is not set 273# CONFIG_PREEMPT_VOLUNTARY is not set
262CONFIG_PREEMPT=y 274CONFIG_PREEMPT=y
@@ -283,11 +295,9 @@ CONFIG_CMDLINE="mem=64M console=ttySC2,115200 root=/dev/nfs rw nfsroot=192.168.0
283# Executable file formats 295# Executable file formats
284# 296#
285CONFIG_BINFMT_ELF=y 297CONFIG_BINFMT_ELF=y
298# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
299# CONFIG_HAVE_AOUT is not set
286# CONFIG_BINFMT_MISC is not set 300# CONFIG_BINFMT_MISC is not set
287
288#
289# Networking
290#
291CONFIG_NET=y 301CONFIG_NET=y
292 302
293# 303#
@@ -332,6 +342,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
332# CONFIG_TIPC is not set 342# CONFIG_TIPC is not set
333# CONFIG_ATM is not set 343# CONFIG_ATM is not set
334# CONFIG_BRIDGE is not set 344# CONFIG_BRIDGE is not set
345# CONFIG_NET_DSA is not set
335# CONFIG_VLAN_8021Q is not set 346# CONFIG_VLAN_8021Q is not set
336# CONFIG_DECNET is not set 347# CONFIG_DECNET is not set
337# CONFIG_LLC2 is not set 348# CONFIG_LLC2 is not set
@@ -352,11 +363,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_IRDA is not set 363# CONFIG_IRDA is not set
353# CONFIG_BT is not set 364# CONFIG_BT is not set
354# CONFIG_AF_RXRPC is not set 365# CONFIG_AF_RXRPC is not set
355 366# CONFIG_PHONET is not set
356# 367CONFIG_WIRELESS=y
357# Wireless
358#
359# CONFIG_CFG80211 is not set 368# CONFIG_CFG80211 is not set
369# CONFIG_WIRELESS_OLD_REGULATORY is not set
360# CONFIG_WIRELESS_EXT is not set 370# CONFIG_WIRELESS_EXT is not set
361# CONFIG_MAC80211 is not set 371# CONFIG_MAC80211 is not set
362# CONFIG_IEEE80211 is not set 372# CONFIG_IEEE80211 is not set
@@ -472,6 +482,7 @@ CONFIG_BLK_DEV_RAM_SIZE=26000
472# CONFIG_BLK_DEV_XIP is not set 482# CONFIG_BLK_DEV_XIP is not set
473# CONFIG_CDROM_PKTCDVD is not set 483# CONFIG_CDROM_PKTCDVD is not set
474# CONFIG_ATA_OVER_ETH is not set 484# CONFIG_ATA_OVER_ETH is not set
485# CONFIG_BLK_DEV_HD is not set
475# CONFIG_MISC_DEVICES is not set 486# CONFIG_MISC_DEVICES is not set
476CONFIG_HAVE_IDE=y 487CONFIG_HAVE_IDE=y
477# CONFIG_IDE is not set 488# CONFIG_IDE is not set
@@ -486,7 +497,6 @@ CONFIG_HAVE_IDE=y
486# CONFIG_ATA is not set 497# CONFIG_ATA is not set
487# CONFIG_MD is not set 498# CONFIG_MD is not set
488CONFIG_NETDEVICES=y 499CONFIG_NETDEVICES=y
489# CONFIG_NETDEVICES_MULTIQUEUE is not set
490# CONFIG_DUMMY is not set 500# CONFIG_DUMMY is not set
491# CONFIG_BONDING is not set 501# CONFIG_BONDING is not set
492# CONFIG_MACVLAN is not set 502# CONFIG_MACVLAN is not set
@@ -498,12 +508,15 @@ CONFIG_NET_ETHERNET=y
498CONFIG_MII=y 508CONFIG_MII=y
499# CONFIG_AX88796 is not set 509# CONFIG_AX88796 is not set
500# CONFIG_STNIC is not set 510# CONFIG_STNIC is not set
501# CONFIG_SMC9194 is not set
502CONFIG_SMC91X=y 511CONFIG_SMC91X=y
512# CONFIG_SMC911X is not set
503# CONFIG_IBM_NEW_EMAC_ZMII is not set 513# CONFIG_IBM_NEW_EMAC_ZMII is not set
504# CONFIG_IBM_NEW_EMAC_RGMII is not set 514# CONFIG_IBM_NEW_EMAC_RGMII is not set
505# CONFIG_IBM_NEW_EMAC_TAH is not set 515# CONFIG_IBM_NEW_EMAC_TAH is not set
506# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 516# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
517# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
518# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
519# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
507# CONFIG_B44 is not set 520# CONFIG_B44 is not set
508# CONFIG_NETDEV_1000 is not set 521# CONFIG_NETDEV_1000 is not set
509# CONFIG_NETDEV_10000 is not set 522# CONFIG_NETDEV_10000 is not set
@@ -558,6 +571,7 @@ CONFIG_INPUT=y
558# Character devices 571# Character devices
559# 572#
560CONFIG_VT=y 573CONFIG_VT=y
574CONFIG_CONSOLE_TRANSLATIONS=y
561CONFIG_VT_CONSOLE=y 575CONFIG_VT_CONSOLE=y
562CONFIG_HW_CONSOLE=y 576CONFIG_HW_CONSOLE=y
563# CONFIG_VT_HW_CONSOLE_BINDING is not set 577# CONFIG_VT_HW_CONSOLE_BINDING is not set
@@ -588,26 +602,41 @@ CONFIG_HW_RANDOM=y
588CONFIG_I2C=y 602CONFIG_I2C=y
589CONFIG_I2C_BOARDINFO=y 603CONFIG_I2C_BOARDINFO=y
590CONFIG_I2C_CHARDEV=y 604CONFIG_I2C_CHARDEV=y
605CONFIG_I2C_HELPER_AUTO=y
591 606
592# 607#
593# I2C Hardware Bus support 608# I2C Hardware Bus support
594# 609#
610
611#
612# I2C system bus drivers (mostly embedded / system-on-chip)
613#
595# CONFIG_I2C_OCORES is not set 614# CONFIG_I2C_OCORES is not set
596# CONFIG_I2C_PARPORT_LIGHT is not set 615CONFIG_I2C_SH7760=y
616# CONFIG_I2C_SH_MOBILE is not set
597# CONFIG_I2C_SIMTEC is not set 617# CONFIG_I2C_SIMTEC is not set
618
619#
620# External I2C/SMBus adapter drivers
621#
622# CONFIG_I2C_PARPORT_LIGHT is not set
598# CONFIG_I2C_TAOS_EVM is not set 623# CONFIG_I2C_TAOS_EVM is not set
599# CONFIG_I2C_STUB is not set 624
625#
626# Other I2C/SMBus bus drivers
627#
600# CONFIG_I2C_PCA_PLATFORM is not set 628# CONFIG_I2C_PCA_PLATFORM is not set
601CONFIG_I2C_SH7760=y 629# CONFIG_I2C_STUB is not set
602# CONFIG_I2C_SH_MOBILE is not set
603 630
604# 631#
605# Miscellaneous I2C Chip support 632# Miscellaneous I2C Chip support
606# 633#
607# CONFIG_DS1682 is not set 634# CONFIG_DS1682 is not set
635# CONFIG_AT24 is not set
608# CONFIG_SENSORS_EEPROM is not set 636# CONFIG_SENSORS_EEPROM is not set
609# CONFIG_SENSORS_PCF8574 is not set 637# CONFIG_SENSORS_PCF8574 is not set
610# CONFIG_PCF8575 is not set 638# CONFIG_PCF8575 is not set
639# CONFIG_SENSORS_PCA9539 is not set
611# CONFIG_SENSORS_PCF8591 is not set 640# CONFIG_SENSORS_PCF8591 is not set
612# CONFIG_SENSORS_MAX6875 is not set 641# CONFIG_SENSORS_MAX6875 is not set
613# CONFIG_SENSORS_TSL2550 is not set 642# CONFIG_SENSORS_TSL2550 is not set
@@ -632,8 +661,12 @@ CONFIG_SSB_POSSIBLE=y
632# 661#
633# Multifunction device drivers 662# Multifunction device drivers
634# 663#
664# CONFIG_MFD_CORE is not set
635# CONFIG_MFD_SM501 is not set 665# CONFIG_MFD_SM501 is not set
636# CONFIG_HTC_PASIC3 is not set 666# CONFIG_HTC_PASIC3 is not set
667# CONFIG_MFD_TMIO is not set
668# CONFIG_MFD_WM8400 is not set
669# CONFIG_MFD_WM8350_I2C is not set
637 670
638# 671#
639# Multimedia devices 672# Multimedia devices
@@ -659,6 +692,7 @@ CONFIG_SSB_POSSIBLE=y
659CONFIG_FB=m 692CONFIG_FB=m
660# CONFIG_FIRMWARE_EDID is not set 693# CONFIG_FIRMWARE_EDID is not set
661# CONFIG_FB_DDC is not set 694# CONFIG_FB_DDC is not set
695# CONFIG_FB_BOOT_VESA_SUPPORT is not set
662CONFIG_FB_CFB_FILLRECT=m 696CONFIG_FB_CFB_FILLRECT=m
663CONFIG_FB_CFB_COPYAREA=m 697CONFIG_FB_CFB_COPYAREA=m
664CONFIG_FB_CFB_IMAGEBLIT=m 698CONFIG_FB_CFB_IMAGEBLIT=m
@@ -677,9 +711,11 @@ CONFIG_FB_TILEBLITTING=y
677# 711#
678# Frame buffer hardware drivers 712# Frame buffer hardware drivers
679# 713#
680# CONFIG_FB_MB86290_640X480_16BPP is not set
681# CONFIG_FB_S1D13XXX is not set 714# CONFIG_FB_S1D13XXX is not set
715CONFIG_FB_SH_MOBILE_LCDC=m
716# CONFIG_FB_SH7760 is not set
682# CONFIG_FB_VIRTUAL is not set 717# CONFIG_FB_VIRTUAL is not set
718# CONFIG_FB_METRONOME is not set
683# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 719# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
684 720
685# 721#
@@ -693,15 +729,8 @@ CONFIG_FB_TILEBLITTING=y
693CONFIG_DUMMY_CONSOLE=y 729CONFIG_DUMMY_CONSOLE=y
694# CONFIG_FRAMEBUFFER_CONSOLE is not set 730# CONFIG_FRAMEBUFFER_CONSOLE is not set
695# CONFIG_LOGO is not set 731# CONFIG_LOGO is not set
696
697#
698# Sound
699#
700CONFIG_SOUND=y 732CONFIG_SOUND=y
701 733# CONFIG_SOUND_OSS_CORE is not set
702#
703# Advanced Linux Sound Architecture
704#
705CONFIG_SND=y 734CONFIG_SND=y
706CONFIG_SND_TIMER=y 735CONFIG_SND_TIMER=y
707CONFIG_SND_PCM=y 736CONFIG_SND_PCM=y
@@ -713,39 +742,18 @@ CONFIG_SND_PCM=y
713# CONFIG_SND_VERBOSE_PROCFS is not set 742# CONFIG_SND_VERBOSE_PROCFS is not set
714CONFIG_SND_VERBOSE_PRINTK=y 743CONFIG_SND_VERBOSE_PRINTK=y
715# CONFIG_SND_DEBUG is not set 744# CONFIG_SND_DEBUG is not set
716 745CONFIG_SND_DRIVERS=y
717#
718# Generic devices
719#
720# CONFIG_SND_DUMMY is not set 746# CONFIG_SND_DUMMY is not set
721# CONFIG_SND_MTPAV is not set 747# CONFIG_SND_MTPAV is not set
722# CONFIG_SND_SERIAL_U16550 is not set 748# CONFIG_SND_SERIAL_U16550 is not set
723# CONFIG_SND_MPU401 is not set 749# CONFIG_SND_MPU401 is not set
724 750CONFIG_SND_SUPERH=y
725#
726# SUPERH devices
727#
728
729#
730# System on Chip audio support
731#
732CONFIG_SND_SOC=y 751CONFIG_SND_SOC=y
733 752
734# 753#
735# SoC Audio support for SuperH 754# SoC Audio support for SuperH
736# 755#
737 756# CONFIG_SND_SOC_ALL_CODECS is not set
738#
739# ALSA SoC audio for Freescale SOCs
740#
741
742#
743# SoC Audio for the Texas Instruments OMAP
744#
745
746#
747# Open Sound System
748#
749# CONFIG_SOUND_PRIME is not set 757# CONFIG_SOUND_PRIME is not set
750# CONFIG_HID_SUPPORT is not set 758# CONFIG_HID_SUPPORT is not set
751# CONFIG_USB_SUPPORT is not set 759# CONFIG_USB_SUPPORT is not set
@@ -754,7 +762,9 @@ CONFIG_SND_SOC=y
754# CONFIG_NEW_LEDS is not set 762# CONFIG_NEW_LEDS is not set
755# CONFIG_ACCESSIBILITY is not set 763# CONFIG_ACCESSIBILITY is not set
756# CONFIG_RTC_CLASS is not set 764# CONFIG_RTC_CLASS is not set
765# CONFIG_DMADEVICES is not set
757# CONFIG_UIO is not set 766# CONFIG_UIO is not set
767# CONFIG_STAGING is not set
758 768
759# 769#
760# File systems 770# File systems
@@ -764,17 +774,18 @@ CONFIG_EXT2_FS_XATTR=y
764# CONFIG_EXT2_FS_POSIX_ACL is not set 774# CONFIG_EXT2_FS_POSIX_ACL is not set
765# CONFIG_EXT2_FS_SECURITY is not set 775# CONFIG_EXT2_FS_SECURITY is not set
766CONFIG_EXT2_FS_XIP=y 776CONFIG_EXT2_FS_XIP=y
767CONFIG_FS_XIP=y
768CONFIG_EXT3_FS=y 777CONFIG_EXT3_FS=y
769CONFIG_EXT3_FS_XATTR=y 778CONFIG_EXT3_FS_XATTR=y
770# CONFIG_EXT3_FS_POSIX_ACL is not set 779# CONFIG_EXT3_FS_POSIX_ACL is not set
771# CONFIG_EXT3_FS_SECURITY is not set 780# CONFIG_EXT3_FS_SECURITY is not set
772# CONFIG_EXT4DEV_FS is not set 781# CONFIG_EXT4_FS is not set
782CONFIG_FS_XIP=y
773CONFIG_JBD=y 783CONFIG_JBD=y
774CONFIG_FS_MBCACHE=y 784CONFIG_FS_MBCACHE=y
775# CONFIG_REISERFS_FS is not set 785# CONFIG_REISERFS_FS is not set
776# CONFIG_JFS_FS is not set 786# CONFIG_JFS_FS is not set
777CONFIG_FS_POSIX_ACL=y 787CONFIG_FS_POSIX_ACL=y
788CONFIG_FILE_LOCKING=y
778# CONFIG_XFS_FS is not set 789# CONFIG_XFS_FS is not set
779# CONFIG_OCFS2_FS is not set 790# CONFIG_OCFS2_FS is not set
780CONFIG_DNOTIFY=y 791CONFIG_DNOTIFY=y
@@ -805,6 +816,7 @@ CONFIG_GENERIC_ACL=y
805CONFIG_PROC_FS=y 816CONFIG_PROC_FS=y
806# CONFIG_PROC_KCORE is not set 817# CONFIG_PROC_KCORE is not set
807CONFIG_PROC_SYSCTL=y 818CONFIG_PROC_SYSCTL=y
819CONFIG_PROC_PAGE_MONITOR=y
808CONFIG_SYSFS=y 820CONFIG_SYSFS=y
809CONFIG_TMPFS=y 821CONFIG_TMPFS=y
810CONFIG_TMPFS_POSIX_ACL=y 822CONFIG_TMPFS_POSIX_ACL=y
@@ -826,6 +838,7 @@ CONFIG_TMPFS_POSIX_ACL=y
826# CONFIG_CRAMFS is not set 838# CONFIG_CRAMFS is not set
827# CONFIG_VXFS_FS is not set 839# CONFIG_VXFS_FS is not set
828# CONFIG_MINIX_FS is not set 840# CONFIG_MINIX_FS is not set
841# CONFIG_OMFS_FS is not set
829# CONFIG_HPFS_FS is not set 842# CONFIG_HPFS_FS is not set
830# CONFIG_QNX4FS_FS is not set 843# CONFIG_QNX4FS_FS is not set
831# CONFIG_ROMFS_FS is not set 844# CONFIG_ROMFS_FS is not set
@@ -835,12 +848,12 @@ CONFIG_NETWORK_FILESYSTEMS=y
835CONFIG_NFS_FS=y 848CONFIG_NFS_FS=y
836# CONFIG_NFS_V3 is not set 849# CONFIG_NFS_V3 is not set
837# CONFIG_NFS_V4 is not set 850# CONFIG_NFS_V4 is not set
838# CONFIG_NFSD is not set
839CONFIG_ROOT_NFS=y 851CONFIG_ROOT_NFS=y
852# CONFIG_NFSD is not set
840CONFIG_LOCKD=y 853CONFIG_LOCKD=y
841CONFIG_NFS_COMMON=y 854CONFIG_NFS_COMMON=y
842CONFIG_SUNRPC=y 855CONFIG_SUNRPC=y
843# CONFIG_SUNRPC_BIND34 is not set 856# CONFIG_SUNRPC_REGISTER_V4 is not set
844# CONFIG_RPCSEC_GSS_KRB5 is not set 857# CONFIG_RPCSEC_GSS_KRB5 is not set
845# CONFIG_RPCSEC_GSS_SPKM3 is not set 858# CONFIG_RPCSEC_GSS_SPKM3 is not set
846# CONFIG_SMB_FS is not set 859# CONFIG_SMB_FS is not set
@@ -911,6 +924,8 @@ CONFIG_UNUSED_SYMBOLS=y
911CONFIG_DEBUG_KERNEL=y 924CONFIG_DEBUG_KERNEL=y
912CONFIG_DEBUG_SHIRQ=y 925CONFIG_DEBUG_SHIRQ=y
913CONFIG_DETECT_SOFTLOCKUP=y 926CONFIG_DETECT_SOFTLOCKUP=y
927# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
928CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
914# CONFIG_SCHED_DEBUG is not set 929# CONFIG_SCHED_DEBUG is not set
915# CONFIG_SCHEDSTATS is not set 930# CONFIG_SCHEDSTATS is not set
916CONFIG_TIMER_STATS=y 931CONFIG_TIMER_STATS=y
@@ -932,13 +947,27 @@ CONFIG_DEBUG_BUGVERBOSE=y
932CONFIG_DEBUG_INFO=y 947CONFIG_DEBUG_INFO=y
933# CONFIG_DEBUG_VM is not set 948# CONFIG_DEBUG_VM is not set
934# CONFIG_DEBUG_WRITECOUNT is not set 949# CONFIG_DEBUG_WRITECOUNT is not set
950# CONFIG_DEBUG_MEMORY_INIT is not set
935# CONFIG_DEBUG_LIST is not set 951# CONFIG_DEBUG_LIST is not set
936# CONFIG_DEBUG_SG is not set 952# CONFIG_DEBUG_SG is not set
937# CONFIG_FRAME_POINTER is not set 953# CONFIG_FRAME_POINTER is not set
938# CONFIG_BOOT_PRINTK_DELAY is not set
939# CONFIG_RCU_TORTURE_TEST is not set 954# CONFIG_RCU_TORTURE_TEST is not set
955# CONFIG_RCU_CPU_STALL_DETECTOR is not set
940# CONFIG_BACKTRACE_SELF_TEST is not set 956# CONFIG_BACKTRACE_SELF_TEST is not set
957# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
941# CONFIG_FAULT_INJECTION is not set 958# CONFIG_FAULT_INJECTION is not set
959# CONFIG_LATENCYTOP is not set
960CONFIG_SYSCTL_SYSCALL_CHECK=y
961CONFIG_NOP_TRACER=y
962CONFIG_HAVE_FTRACE=y
963# CONFIG_FTRACE is not set
964# CONFIG_IRQSOFF_TRACER is not set
965# CONFIG_PREEMPT_TRACER is not set
966# CONFIG_SCHED_TRACER is not set
967# CONFIG_CONTEXT_SWITCH_TRACER is not set
968# CONFIG_BOOT_TRACER is not set
969# CONFIG_STACK_TRACER is not set
970# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
942# CONFIG_SAMPLES is not set 971# CONFIG_SAMPLES is not set
943# CONFIG_SH_STANDARD_BIOS is not set 972# CONFIG_SH_STANDARD_BIOS is not set
944CONFIG_EARLY_SCIF_CONSOLE=y 973CONFIG_EARLY_SCIF_CONSOLE=y
@@ -956,12 +985,14 @@ CONFIG_DEBUG_STACKOVERFLOW=y
956# 985#
957# CONFIG_KEYS is not set 986# CONFIG_KEYS is not set
958# CONFIG_SECURITY is not set 987# CONFIG_SECURITY is not set
988# CONFIG_SECURITYFS is not set
959# CONFIG_SECURITY_FILE_CAPABILITIES is not set 989# CONFIG_SECURITY_FILE_CAPABILITIES is not set
960CONFIG_CRYPTO=y 990CONFIG_CRYPTO=y
961 991
962# 992#
963# Crypto core or helper 993# Crypto core or helper
964# 994#
995# CONFIG_CRYPTO_FIPS is not set
965CONFIG_CRYPTO_ALGAPI=y 996CONFIG_CRYPTO_ALGAPI=y
966# CONFIG_CRYPTO_MANAGER is not set 997# CONFIG_CRYPTO_MANAGER is not set
967# CONFIG_CRYPTO_GF128MUL is not set 998# CONFIG_CRYPTO_GF128MUL is not set
@@ -1001,6 +1032,10 @@ CONFIG_CRYPTO_ALGAPI=y
1001# CONFIG_CRYPTO_MD4 is not set 1032# CONFIG_CRYPTO_MD4 is not set
1002CONFIG_CRYPTO_MD5=y 1033CONFIG_CRYPTO_MD5=y
1003# CONFIG_CRYPTO_MICHAEL_MIC is not set 1034# CONFIG_CRYPTO_MICHAEL_MIC is not set
1035# CONFIG_CRYPTO_RMD128 is not set
1036# CONFIG_CRYPTO_RMD160 is not set
1037# CONFIG_CRYPTO_RMD256 is not set
1038# CONFIG_CRYPTO_RMD320 is not set
1004# CONFIG_CRYPTO_SHA1 is not set 1039# CONFIG_CRYPTO_SHA1 is not set
1005# CONFIG_CRYPTO_SHA256 is not set 1040# CONFIG_CRYPTO_SHA256 is not set
1006# CONFIG_CRYPTO_SHA512 is not set 1041# CONFIG_CRYPTO_SHA512 is not set
@@ -1031,15 +1066,20 @@ CONFIG_CRYPTO_DES=y
1031# 1066#
1032# CONFIG_CRYPTO_DEFLATE is not set 1067# CONFIG_CRYPTO_DEFLATE is not set
1033# CONFIG_CRYPTO_LZO is not set 1068# CONFIG_CRYPTO_LZO is not set
1069
1070#
1071# Random Number Generation
1072#
1073# CONFIG_CRYPTO_ANSI_CPRNG is not set
1034CONFIG_CRYPTO_HW=y 1074CONFIG_CRYPTO_HW=y
1035 1075
1036# 1076#
1037# Library routines 1077# Library routines
1038# 1078#
1039CONFIG_BITREVERSE=y 1079CONFIG_BITREVERSE=y
1040# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1041# CONFIG_CRC_CCITT is not set 1080# CONFIG_CRC_CCITT is not set
1042# CONFIG_CRC16 is not set 1081# CONFIG_CRC16 is not set
1082# CONFIG_CRC_T10DIF is not set
1043# CONFIG_CRC_ITU_T is not set 1083# CONFIG_CRC_ITU_T is not set
1044CONFIG_CRC32=y 1084CONFIG_CRC32=y
1045# CONFIG_CRC7 is not set 1085# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/hp6xx_defconfig b/arch/sh/configs/hp6xx_defconfig
index 41e25b3a5b01..1032b235f080 100644
--- a/arch/sh/configs/hp6xx_defconfig
+++ b/arch/sh/configs/hp6xx_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:24:57 2008 4# Wed Oct 22 18:23:53 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,18 +11,19 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_PM=y 19CONFIG_SYS_SUPPORTS_PM=y
19CONFIG_SYS_SUPPORTS_APM_EMULATION=y 20CONFIG_SYS_SUPPORTS_APM_EMULATION=y
20CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set 24# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set 25# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y 26CONFIG_ARCH_NO_VIRT_TO_BUS=y
25CONFIG_ARCH_SUPPORTS_AOUT=y
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
27 28
28# 29#
@@ -67,22 +68,21 @@ CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y 68CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y 69CONFIG_EVENTFD=y
69CONFIG_SHMEM=y 70CONFIG_SHMEM=y
71CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 72CONFIG_VM_EVENT_COUNTERS=y
73CONFIG_PCI_QUIRKS=y
71CONFIG_SLAB=y 74CONFIG_SLAB=y
72# CONFIG_SLUB is not set 75# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set 76# CONFIG_SLOB is not set
74# CONFIG_PROFILING is not set 77# CONFIG_PROFILING is not set
75# CONFIG_MARKERS is not set 78# CONFIG_MARKERS is not set
76CONFIG_HAVE_OPROFILE=y 79CONFIG_HAVE_OPROFILE=y
77# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 80CONFIG_HAVE_IOREMAP_PROT=y
78# CONFIG_HAVE_IOREMAP_PROT is not set 81CONFIG_HAVE_KPROBES=y
79# CONFIG_HAVE_KPROBES is not set 82CONFIG_HAVE_KRETPROBES=y
80# CONFIG_HAVE_KRETPROBES is not set 83CONFIG_HAVE_ARCH_TRACEHOOK=y
81# CONFIG_HAVE_ARCH_TRACEHOOK is not set
82# CONFIG_HAVE_DMA_ATTRS is not set
83# CONFIG_USE_GENERIC_SMP_HELPERS is not set
84CONFIG_HAVE_CLK=y 84CONFIG_HAVE_CLK=y
85CONFIG_PROC_PAGE_MONITOR=y 85CONFIG_HAVE_GENERIC_DMA_COHERENT=y
86CONFIG_SLABINFO=y 86CONFIG_SLABINFO=y
87CONFIG_RT_MUTEXES=y 87CONFIG_RT_MUTEXES=y
88# CONFIG_TINY_SHMEM is not set 88# CONFIG_TINY_SHMEM is not set
@@ -108,6 +108,7 @@ CONFIG_DEFAULT_AS=y
108# CONFIG_DEFAULT_NOOP is not set 108# CONFIG_DEFAULT_NOOP is not set
109CONFIG_DEFAULT_IOSCHED="anticipatory" 109CONFIG_DEFAULT_IOSCHED="anticipatory"
110CONFIG_CLASSIC_RCU=y 110CONFIG_CLASSIC_RCU=y
111CONFIG_FREEZER=y
111 112
112# 113#
113# System type 114# System type
@@ -175,12 +176,13 @@ CONFIG_FLATMEM_MANUAL=y
175CONFIG_FLATMEM=y 176CONFIG_FLATMEM=y
176CONFIG_FLAT_NODE_MEM_MAP=y 177CONFIG_FLAT_NODE_MEM_MAP=y
177CONFIG_SPARSEMEM_STATIC=y 178CONFIG_SPARSEMEM_STATIC=y
178# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
179CONFIG_PAGEFLAGS_EXTENDED=y 179CONFIG_PAGEFLAGS_EXTENDED=y
180CONFIG_SPLIT_PTLOCK_CPUS=4 180CONFIG_SPLIT_PTLOCK_CPUS=4
181# CONFIG_RESOURCES_64BIT is not set 181# CONFIG_RESOURCES_64BIT is not set
182# CONFIG_PHYS_ADDR_T_64BIT is not set
182CONFIG_ZONE_DMA_FLAG=0 183CONFIG_ZONE_DMA_FLAG=0
183CONFIG_NR_QUICK=2 184CONFIG_NR_QUICK=2
185CONFIG_UNEVICTABLE_LRU=y
184 186
185# 187#
186# Cache configuration 188# Cache configuration
@@ -212,7 +214,6 @@ CONFIG_SH_HP6XX=y
212CONFIG_SH_TMU=y 214CONFIG_SH_TMU=y
213CONFIG_SH_TIMER_IRQ=16 215CONFIG_SH_TIMER_IRQ=16
214CONFIG_SH_PCLK_FREQ=22110000 216CONFIG_SH_PCLK_FREQ=22110000
215# CONFIG_TICK_ONESHOT is not set
216# CONFIG_NO_HZ is not set 217# CONFIG_NO_HZ is not set
217# CONFIG_HIGH_RES_TIMERS is not set 218# CONFIG_HIGH_RES_TIMERS is not set
218CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 219CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -257,6 +258,7 @@ CONFIG_HZ=250
257# CONFIG_SCHED_HRTICK is not set 258# CONFIG_SCHED_HRTICK is not set
258# CONFIG_KEXEC is not set 259# CONFIG_KEXEC is not set
259# CONFIG_CRASH_DUMP is not set 260# CONFIG_CRASH_DUMP is not set
261# CONFIG_SECCOMP is not set
260CONFIG_PREEMPT_NONE=y 262CONFIG_PREEMPT_NONE=y
261# CONFIG_PREEMPT_VOLUNTARY is not set 263# CONFIG_PREEMPT_VOLUNTARY is not set
262# CONFIG_PREEMPT is not set 264# CONFIG_PREEMPT is not set
@@ -292,6 +294,8 @@ CONFIG_PCMCIA_PROBE=y
292# Executable file formats 294# Executable file formats
293# 295#
294CONFIG_BINFMT_ELF=y 296CONFIG_BINFMT_ELF=y
297# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
298# CONFIG_HAVE_AOUT is not set
295# CONFIG_BINFMT_MISC is not set 299# CONFIG_BINFMT_MISC is not set
296 300
297# 301#
@@ -304,10 +308,6 @@ CONFIG_PM_SLEEP=y
304CONFIG_SUSPEND=y 308CONFIG_SUSPEND=y
305CONFIG_SUSPEND_FREEZER=y 309CONFIG_SUSPEND_FREEZER=y
306CONFIG_APM_EMULATION=y 310CONFIG_APM_EMULATION=y
307
308#
309# Networking
310#
311# CONFIG_NET is not set 311# CONFIG_NET is not set
312 312
313# 313#
@@ -446,7 +446,6 @@ CONFIG_TOUCHSCREEN_HP600=y
446# CONFIG_TOUCHSCREEN_PENMOUNT is not set 446# CONFIG_TOUCHSCREEN_PENMOUNT is not set
447# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set 447# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
448# CONFIG_TOUCHSCREEN_TOUCHWIN is not set 448# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
449# CONFIG_TOUCHSCREEN_UCB1400 is not set
450# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 449# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
451# CONFIG_INPUT_MISC is not set 450# CONFIG_INPUT_MISC is not set
452 451
@@ -522,6 +521,8 @@ CONFIG_SSB_POSSIBLE=y
522# CONFIG_MFD_CORE is not set 521# CONFIG_MFD_CORE is not set
523# CONFIG_MFD_SM501 is not set 522# CONFIG_MFD_SM501 is not set
524# CONFIG_HTC_PASIC3 is not set 523# CONFIG_HTC_PASIC3 is not set
524# CONFIG_MFD_TMIO is not set
525# CONFIG_MFD_WM8400 is not set
525 526
526# 527#
527# Multimedia devices 528# Multimedia devices
@@ -546,6 +547,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
546CONFIG_FB=y 547CONFIG_FB=y
547CONFIG_FIRMWARE_EDID=y 548CONFIG_FIRMWARE_EDID=y
548# CONFIG_FB_DDC is not set 549# CONFIG_FB_DDC is not set
550# CONFIG_FB_BOOT_VESA_SUPPORT is not set
549CONFIG_FB_CFB_FILLRECT=y 551CONFIG_FB_CFB_FILLRECT=y
550CONFIG_FB_CFB_COPYAREA=y 552CONFIG_FB_CFB_COPYAREA=y
551CONFIG_FB_CFB_IMAGEBLIT=y 553CONFIG_FB_CFB_IMAGEBLIT=y
@@ -568,6 +570,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
568CONFIG_FB_HIT=y 570CONFIG_FB_HIT=y
569CONFIG_FB_SH_MOBILE_LCDC=y 571CONFIG_FB_SH_MOBILE_LCDC=y
570# CONFIG_FB_VIRTUAL is not set 572# CONFIG_FB_VIRTUAL is not set
573# CONFIG_FB_METRONOME is not set
571CONFIG_BACKLIGHT_LCD_SUPPORT=y 574CONFIG_BACKLIGHT_LCD_SUPPORT=y
572CONFIG_LCD_CLASS_DEVICE=y 575CONFIG_LCD_CLASS_DEVICE=y
573# CONFIG_LCD_ILI9320 is not set 576# CONFIG_LCD_ILI9320 is not set
@@ -630,12 +633,15 @@ CONFIG_RTC_INTF_DEV=y
630# 633#
631# Platform RTC drivers 634# Platform RTC drivers
632# 635#
636# CONFIG_RTC_DRV_DS1286 is not set
633# CONFIG_RTC_DRV_DS1511 is not set 637# CONFIG_RTC_DRV_DS1511 is not set
634# CONFIG_RTC_DRV_DS1553 is not set 638# CONFIG_RTC_DRV_DS1553 is not set
635# CONFIG_RTC_DRV_DS1742 is not set 639# CONFIG_RTC_DRV_DS1742 is not set
636# CONFIG_RTC_DRV_STK17TA8 is not set 640# CONFIG_RTC_DRV_STK17TA8 is not set
637# CONFIG_RTC_DRV_M48T86 is not set 641# CONFIG_RTC_DRV_M48T86 is not set
642# CONFIG_RTC_DRV_M48T35 is not set
638# CONFIG_RTC_DRV_M48T59 is not set 643# CONFIG_RTC_DRV_M48T59 is not set
644# CONFIG_RTC_DRV_BQ4802 is not set
639# CONFIG_RTC_DRV_V3020 is not set 645# CONFIG_RTC_DRV_V3020 is not set
640 646
641# 647#
@@ -644,6 +650,7 @@ CONFIG_RTC_INTF_DEV=y
644CONFIG_RTC_DRV_SH=y 650CONFIG_RTC_DRV_SH=y
645# CONFIG_DMADEVICES is not set 651# CONFIG_DMADEVICES is not set
646# CONFIG_UIO is not set 652# CONFIG_UIO is not set
653# CONFIG_STAGING is not set
647 654
648# 655#
649# File systems 656# File systems
@@ -652,10 +659,11 @@ CONFIG_EXT2_FS=y
652# CONFIG_EXT2_FS_XATTR is not set 659# CONFIG_EXT2_FS_XATTR is not set
653# CONFIG_EXT2_FS_XIP is not set 660# CONFIG_EXT2_FS_XIP is not set
654# CONFIG_EXT3_FS is not set 661# CONFIG_EXT3_FS is not set
655# CONFIG_EXT4DEV_FS is not set 662# CONFIG_EXT4_FS is not set
656# CONFIG_REISERFS_FS is not set 663# CONFIG_REISERFS_FS is not set
657# CONFIG_JFS_FS is not set 664# CONFIG_JFS_FS is not set
658# CONFIG_FS_POSIX_ACL is not set 665# CONFIG_FS_POSIX_ACL is not set
666CONFIG_FILE_LOCKING=y
659# CONFIG_XFS_FS is not set 667# CONFIG_XFS_FS is not set
660CONFIG_DNOTIFY=y 668CONFIG_DNOTIFY=y
661CONFIG_INOTIFY=y 669CONFIG_INOTIFY=y
@@ -687,6 +695,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
687CONFIG_PROC_FS=y 695CONFIG_PROC_FS=y
688CONFIG_PROC_KCORE=y 696CONFIG_PROC_KCORE=y
689CONFIG_PROC_SYSCTL=y 697CONFIG_PROC_SYSCTL=y
698CONFIG_PROC_PAGE_MONITOR=y
690CONFIG_SYSFS=y 699CONFIG_SYSFS=y
691# CONFIG_TMPFS is not set 700# CONFIG_TMPFS is not set
692# CONFIG_HUGETLBFS is not set 701# CONFIG_HUGETLBFS is not set
@@ -774,6 +783,11 @@ CONFIG_FRAME_WARN=1024
774# CONFIG_DEBUG_KERNEL is not set 783# CONFIG_DEBUG_KERNEL is not set
775# CONFIG_DEBUG_BUGVERBOSE is not set 784# CONFIG_DEBUG_BUGVERBOSE is not set
776# CONFIG_DEBUG_MEMORY_INIT is not set 785# CONFIG_DEBUG_MEMORY_INIT is not set
786# CONFIG_RCU_CPU_STALL_DETECTOR is not set
787# CONFIG_LATENCYTOP is not set
788CONFIG_NOP_TRACER=y
789CONFIG_HAVE_FTRACE=y
790# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
777# CONFIG_SAMPLES is not set 791# CONFIG_SAMPLES is not set
778# CONFIG_SH_STANDARD_BIOS is not set 792# CONFIG_SH_STANDARD_BIOS is not set
779# CONFIG_EARLY_SCIF_CONSOLE is not set 793# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -784,14 +798,19 @@ CONFIG_FRAME_WARN=1024
784# 798#
785# CONFIG_KEYS is not set 799# CONFIG_KEYS is not set
786# CONFIG_SECURITY is not set 800# CONFIG_SECURITY is not set
801# CONFIG_SECURITYFS is not set
787# CONFIG_SECURITY_FILE_CAPABILITIES is not set 802# CONFIG_SECURITY_FILE_CAPABILITIES is not set
788CONFIG_CRYPTO=y 803CONFIG_CRYPTO=y
789 804
790# 805#
791# Crypto core or helper 806# Crypto core or helper
792# 807#
808# CONFIG_CRYPTO_FIPS is not set
793CONFIG_CRYPTO_ALGAPI=y 809CONFIG_CRYPTO_ALGAPI=y
810CONFIG_CRYPTO_AEAD=y
794CONFIG_CRYPTO_BLKCIPHER=y 811CONFIG_CRYPTO_BLKCIPHER=y
812CONFIG_CRYPTO_HASH=y
813CONFIG_CRYPTO_RNG=y
795CONFIG_CRYPTO_MANAGER=y 814CONFIG_CRYPTO_MANAGER=y
796# CONFIG_CRYPTO_GF128MUL is not set 815# CONFIG_CRYPTO_GF128MUL is not set
797# CONFIG_CRYPTO_NULL is not set 816# CONFIG_CRYPTO_NULL is not set
@@ -863,13 +882,17 @@ CONFIG_CRYPTO_MD5=y
863# 882#
864# CONFIG_CRYPTO_DEFLATE is not set 883# CONFIG_CRYPTO_DEFLATE is not set
865# CONFIG_CRYPTO_LZO is not set 884# CONFIG_CRYPTO_LZO is not set
885
886#
887# Random Number Generation
888#
889# CONFIG_CRYPTO_ANSI_CPRNG is not set
866# CONFIG_CRYPTO_HW is not set 890# CONFIG_CRYPTO_HW is not set
867 891
868# 892#
869# Library routines 893# Library routines
870# 894#
871CONFIG_BITREVERSE=y 895CONFIG_BITREVERSE=y
872# CONFIG_GENERIC_FIND_FIRST_BIT is not set
873# CONFIG_CRC_CCITT is not set 896# CONFIG_CRC_CCITT is not set
874CONFIG_CRC16=y 897CONFIG_CRC16=y
875CONFIG_CRC_T10DIF=y 898CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/landisk_defconfig b/arch/sh/configs/landisk_defconfig
index 99cc39c5c6ca..b82dfb4da3aa 100644
--- a/arch/sh/configs/landisk_defconfig
+++ b/arch/sh/configs/landisk_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:35:07 2008 4# Wed Oct 22 18:25:51 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,17 +11,18 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
19CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26 27
27# 28#
@@ -68,22 +69,22 @@ CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y 69CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y 70CONFIG_EVENTFD=y
70CONFIG_SHMEM=y 71CONFIG_SHMEM=y
72CONFIG_AIO=y
71CONFIG_VM_EVENT_COUNTERS=y 73CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y 75CONFIG_SLAB=y
73# CONFIG_SLUB is not set 76# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 77# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set 78# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set 79# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y 80CONFIG_HAVE_OPROFILE=y
78# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 81# CONFIG_KPROBES is not set
79# CONFIG_HAVE_IOREMAP_PROT is not set 82CONFIG_HAVE_IOREMAP_PROT=y
80# CONFIG_HAVE_KPROBES is not set 83CONFIG_HAVE_KPROBES=y
81# CONFIG_HAVE_KRETPROBES is not set 84CONFIG_HAVE_KRETPROBES=y
82# CONFIG_HAVE_ARCH_TRACEHOOK is not set 85CONFIG_HAVE_ARCH_TRACEHOOK=y
83# CONFIG_HAVE_DMA_ATTRS is not set
84# CONFIG_USE_GENERIC_SMP_HELPERS is not set
85CONFIG_HAVE_CLK=y 86CONFIG_HAVE_CLK=y
86CONFIG_PROC_PAGE_MONITOR=y 87CONFIG_HAVE_GENERIC_DMA_COHERENT=y
87CONFIG_SLABINFO=y 88CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
89# CONFIG_TINY_SHMEM is not set 90# CONFIG_TINY_SHMEM is not set
@@ -115,6 +116,7 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 116# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 117CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 118CONFIG_CLASSIC_RCU=y
119# CONFIG_FREEZER is not set
118 120
119# 121#
120# System type 122# System type
@@ -182,12 +184,13 @@ CONFIG_FLATMEM_MANUAL=y
182CONFIG_FLATMEM=y 184CONFIG_FLATMEM=y
183CONFIG_FLAT_NODE_MEM_MAP=y 185CONFIG_FLAT_NODE_MEM_MAP=y
184CONFIG_SPARSEMEM_STATIC=y 186CONFIG_SPARSEMEM_STATIC=y
185# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
186CONFIG_PAGEFLAGS_EXTENDED=y 187CONFIG_PAGEFLAGS_EXTENDED=y
187CONFIG_SPLIT_PTLOCK_CPUS=4 188CONFIG_SPLIT_PTLOCK_CPUS=4
188# CONFIG_RESOURCES_64BIT is not set 189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set
189CONFIG_ZONE_DMA_FLAG=0 191CONFIG_ZONE_DMA_FLAG=0
190CONFIG_NR_QUICK=2 192CONFIG_NR_QUICK=2
193CONFIG_UNEVICTABLE_LRU=y
191 194
192# 195#
193# Cache configuration 196# Cache configuration
@@ -225,7 +228,6 @@ CONFIG_SH_LANDISK=y
225CONFIG_SH_TMU=y 228CONFIG_SH_TMU=y
226CONFIG_SH_TIMER_IRQ=16 229CONFIG_SH_TIMER_IRQ=16
227CONFIG_SH_PCLK_FREQ=33333333 230CONFIG_SH_PCLK_FREQ=33333333
228# CONFIG_TICK_ONESHOT is not set
229# CONFIG_NO_HZ is not set 231# CONFIG_NO_HZ is not set
230# CONFIG_HIGH_RES_TIMERS is not set 232# CONFIG_HIGH_RES_TIMERS is not set
231CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 233CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -261,6 +263,7 @@ CONFIG_HZ=250
261# CONFIG_SCHED_HRTICK is not set 263# CONFIG_SCHED_HRTICK is not set
262CONFIG_KEXEC=y 264CONFIG_KEXEC=y
263# CONFIG_CRASH_DUMP is not set 265# CONFIG_CRASH_DUMP is not set
266# CONFIG_SECCOMP is not set
264CONFIG_PREEMPT_NONE=y 267CONFIG_PREEMPT_NONE=y
265# CONFIG_PREEMPT_VOLUNTARY is not set 268# CONFIG_PREEMPT_VOLUNTARY is not set
266# CONFIG_PREEMPT is not set 269# CONFIG_PREEMPT is not set
@@ -309,11 +312,9 @@ CONFIG_PCCARD_NONSTATIC=y
309# Executable file formats 312# Executable file formats
310# 313#
311CONFIG_BINFMT_ELF=y 314CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set
312# CONFIG_BINFMT_MISC is not set 317# CONFIG_BINFMT_MISC is not set
313
314#
315# Networking
316#
317CONFIG_NET=y 318CONFIG_NET=y
318 319
319# 320#
@@ -360,7 +361,6 @@ CONFIG_INET_TCP_DIAG=y
360CONFIG_TCP_CONG_CUBIC=y 361CONFIG_TCP_CONG_CUBIC=y
361CONFIG_DEFAULT_TCP_CONG="cubic" 362CONFIG_DEFAULT_TCP_CONG="cubic"
362# CONFIG_TCP_MD5SIG is not set 363# CONFIG_TCP_MD5SIG is not set
363# CONFIG_IP_VS is not set
364# CONFIG_IPV6 is not set 364# CONFIG_IPV6 is not set
365# CONFIG_NETWORK_SECMARK is not set 365# CONFIG_NETWORK_SECMARK is not set
366CONFIG_NETFILTER=y 366CONFIG_NETFILTER=y
@@ -374,10 +374,12 @@ CONFIG_NETFILTER_ADVANCED=y
374# CONFIG_NETFILTER_NETLINK_LOG is not set 374# CONFIG_NETFILTER_NETLINK_LOG is not set
375# CONFIG_NF_CONNTRACK is not set 375# CONFIG_NF_CONNTRACK is not set
376# CONFIG_NETFILTER_XTABLES is not set 376# CONFIG_NETFILTER_XTABLES is not set
377# CONFIG_IP_VS is not set
377 378
378# 379#
379# IP: Netfilter Configuration 380# IP: Netfilter Configuration
380# 381#
382# CONFIG_NF_DEFRAG_IPV4 is not set
381CONFIG_IP_NF_QUEUE=m 383CONFIG_IP_NF_QUEUE=m
382# CONFIG_IP_NF_IPTABLES is not set 384# CONFIG_IP_NF_IPTABLES is not set
383# CONFIG_IP_NF_ARPTABLES is not set 385# CONFIG_IP_NF_ARPTABLES is not set
@@ -386,6 +388,7 @@ CONFIG_IP_NF_QUEUE=m
386# CONFIG_TIPC is not set 388# CONFIG_TIPC is not set
387# CONFIG_ATM is not set 389# CONFIG_ATM is not set
388# CONFIG_BRIDGE is not set 390# CONFIG_BRIDGE is not set
391# CONFIG_NET_DSA is not set
389# CONFIG_VLAN_8021Q is not set 392# CONFIG_VLAN_8021Q is not set
390# CONFIG_DECNET is not set 393# CONFIG_DECNET is not set
391CONFIG_LLC=m 394CONFIG_LLC=m
@@ -408,11 +411,10 @@ CONFIG_ATALK=m
408# CONFIG_IRDA is not set 411# CONFIG_IRDA is not set
409# CONFIG_BT is not set 412# CONFIG_BT is not set
410# CONFIG_AF_RXRPC is not set 413# CONFIG_AF_RXRPC is not set
411 414# CONFIG_PHONET is not set
412# 415CONFIG_WIRELESS=y
413# Wireless
414#
415# CONFIG_CFG80211 is not set 416# CONFIG_CFG80211 is not set
417# CONFIG_WIRELESS_OLD_REGULATORY is not set
416# CONFIG_WIRELESS_EXT is not set 418# CONFIG_WIRELESS_EXT is not set
417# CONFIG_MAC80211 is not set 419# CONFIG_MAC80211 is not set
418# CONFIG_IEEE80211 is not set 420# CONFIG_IEEE80211 is not set
@@ -462,22 +464,20 @@ CONFIG_MISC_DEVICES=y
462# CONFIG_HP_ILO is not set 464# CONFIG_HP_ILO is not set
463CONFIG_HAVE_IDE=y 465CONFIG_HAVE_IDE=y
464CONFIG_IDE=y 466CONFIG_IDE=y
465CONFIG_IDE_MAX_HWIFS=4
466CONFIG_BLK_DEV_IDE=y
467 467
468# 468#
469# Please see Documentation/ide/ide.txt for help/info on IDE drives 469# Please see Documentation/ide/ide.txt for help/info on IDE drives
470# 470#
471CONFIG_IDE_ATAPI=y 471CONFIG_IDE_ATAPI=y
472# CONFIG_BLK_DEV_IDE_SATA is not set 472# CONFIG_BLK_DEV_IDE_SATA is not set
473CONFIG_BLK_DEV_IDEDISK=y 473CONFIG_IDE_GD=y
474# CONFIG_IDEDISK_MULTI_MODE is not set 474CONFIG_IDE_GD_ATA=y
475# CONFIG_IDE_GD_ATAPI is not set
475# CONFIG_BLK_DEV_IDECS is not set 476# CONFIG_BLK_DEV_IDECS is not set
476# CONFIG_BLK_DEV_DELKIN is not set 477# CONFIG_BLK_DEV_DELKIN is not set
477CONFIG_BLK_DEV_IDECD=y 478CONFIG_BLK_DEV_IDECD=y
478CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 479CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
479# CONFIG_BLK_DEV_IDETAPE is not set 480# CONFIG_BLK_DEV_IDETAPE is not set
480# CONFIG_BLK_DEV_IDEFLOPPY is not set
481CONFIG_BLK_DEV_IDESCSI=y 481CONFIG_BLK_DEV_IDESCSI=y
482# CONFIG_IDE_TASK_IOCTL is not set 482# CONFIG_IDE_TASK_IOCTL is not set
483CONFIG_IDE_PROC_FS=y 483CONFIG_IDE_PROC_FS=y
@@ -640,6 +640,9 @@ CONFIG_MII=y
640# CONFIG_IBM_NEW_EMAC_RGMII is not set 640# CONFIG_IBM_NEW_EMAC_RGMII is not set
641# CONFIG_IBM_NEW_EMAC_TAH is not set 641# CONFIG_IBM_NEW_EMAC_TAH is not set
642# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 642# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
643# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
644# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
645# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
643CONFIG_NET_PCI=y 646CONFIG_NET_PCI=y
644# CONFIG_PCNET32 is not set 647# CONFIG_PCNET32 is not set
645# CONFIG_AMD8111_ETH is not set 648# CONFIG_AMD8111_ETH is not set
@@ -660,6 +663,7 @@ CONFIG_8139CP=y
660# CONFIG_TLAN is not set 663# CONFIG_TLAN is not set
661# CONFIG_VIA_RHINE is not set 664# CONFIG_VIA_RHINE is not set
662# CONFIG_SC92031 is not set 665# CONFIG_SC92031 is not set
666# CONFIG_ATL2 is not set
663CONFIG_NETDEV_1000=y 667CONFIG_NETDEV_1000=y
664# CONFIG_ACENIC is not set 668# CONFIG_ACENIC is not set
665# CONFIG_DL2K is not set 669# CONFIG_DL2K is not set
@@ -680,9 +684,11 @@ CONFIG_NETDEV_1000=y
680# CONFIG_QLA3XXX is not set 684# CONFIG_QLA3XXX is not set
681# CONFIG_ATL1 is not set 685# CONFIG_ATL1 is not set
682# CONFIG_ATL1E is not set 686# CONFIG_ATL1E is not set
687# CONFIG_JME is not set
683CONFIG_NETDEV_10000=y 688CONFIG_NETDEV_10000=y
684# CONFIG_CHELSIO_T1 is not set 689# CONFIG_CHELSIO_T1 is not set
685# CONFIG_CHELSIO_T3 is not set 690# CONFIG_CHELSIO_T3 is not set
691# CONFIG_ENIC is not set
686# CONFIG_IXGBE is not set 692# CONFIG_IXGBE is not set
687# CONFIG_IXGB is not set 693# CONFIG_IXGB is not set
688# CONFIG_S2IO is not set 694# CONFIG_S2IO is not set
@@ -692,6 +698,7 @@ CONFIG_NETDEV_10000=y
692# CONFIG_MLX4_CORE is not set 698# CONFIG_MLX4_CORE is not set
693# CONFIG_TEHUTI is not set 699# CONFIG_TEHUTI is not set
694# CONFIG_BNX2X is not set 700# CONFIG_BNX2X is not set
701# CONFIG_QLGE is not set
695# CONFIG_SFC is not set 702# CONFIG_SFC is not set
696# CONFIG_TR is not set 703# CONFIG_TR is not set
697 704
@@ -727,7 +734,7 @@ CONFIG_USB_RTL8150=m
727# Input device support 734# Input device support
728# 735#
729CONFIG_INPUT=y 736CONFIG_INPUT=y
730# CONFIG_INPUT_FF_MEMLESS is not set 737CONFIG_INPUT_FF_MEMLESS=m
731# CONFIG_INPUT_POLLDEV is not set 738# CONFIG_INPUT_POLLDEV is not set
732 739
733# 740#
@@ -838,6 +845,8 @@ CONFIG_SSB_POSSIBLE=y
838# CONFIG_MFD_CORE is not set 845# CONFIG_MFD_CORE is not set
839# CONFIG_MFD_SM501 is not set 846# CONFIG_MFD_SM501 is not set
840# CONFIG_HTC_PASIC3 is not set 847# CONFIG_HTC_PASIC3 is not set
848# CONFIG_MFD_TMIO is not set
849# CONFIG_MFD_WM8400 is not set
841 850
842# 851#
843# Multimedia devices 852# Multimedia devices
@@ -861,10 +870,12 @@ CONFIG_VIDEO_V4L2=m
861CONFIG_VIDEO_V4L1=m 870CONFIG_VIDEO_V4L1=m
862CONFIG_VIDEO_CAPTURE_DRIVERS=y 871CONFIG_VIDEO_CAPTURE_DRIVERS=y
863# CONFIG_VIDEO_ADV_DEBUG is not set 872# CONFIG_VIDEO_ADV_DEBUG is not set
873# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
864CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 874CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
865# CONFIG_VIDEO_VIVI is not set 875# CONFIG_VIDEO_VIVI is not set
866# CONFIG_VIDEO_CPIA is not set 876# CONFIG_VIDEO_CPIA is not set
867# CONFIG_VIDEO_CPIA2 is not set 877# CONFIG_VIDEO_CPIA2 is not set
878# CONFIG_SOC_CAMERA is not set
868CONFIG_V4L_USB_DRIVERS=y 879CONFIG_V4L_USB_DRIVERS=y
869# CONFIG_USB_VIDEO_CLASS is not set 880# CONFIG_USB_VIDEO_CLASS is not set
870# CONFIG_USB_GSPCA is not set 881# CONFIG_USB_GSPCA is not set
@@ -884,14 +895,13 @@ CONFIG_USB_PWC=m
884# CONFIG_USB_ZR364XX is not set 895# CONFIG_USB_ZR364XX is not set
885# CONFIG_USB_STKWEBCAM is not set 896# CONFIG_USB_STKWEBCAM is not set
886# CONFIG_USB_S2255 is not set 897# CONFIG_USB_S2255 is not set
887# CONFIG_SOC_CAMERA is not set
888# CONFIG_VIDEO_SH_MOBILE_CEU is not set
889CONFIG_RADIO_ADAPTERS=y 898CONFIG_RADIO_ADAPTERS=y
890# CONFIG_RADIO_GEMTEK_PCI is not set 899# CONFIG_RADIO_GEMTEK_PCI is not set
891# CONFIG_RADIO_MAXIRADIO is not set 900# CONFIG_RADIO_MAXIRADIO is not set
892# CONFIG_RADIO_MAESTRO is not set 901# CONFIG_RADIO_MAESTRO is not set
893CONFIG_USB_DSBR=m 902CONFIG_USB_DSBR=m
894# CONFIG_USB_SI470X is not set 903# CONFIG_USB_SI470X is not set
904# CONFIG_USB_MR800 is not set
895# CONFIG_DAB is not set 905# CONFIG_DAB is not set
896 906
897# 907#
@@ -914,6 +924,7 @@ CONFIG_USB_DSBR=m
914CONFIG_DUMMY_CONSOLE=y 924CONFIG_DUMMY_CONSOLE=y
915CONFIG_FONT_8x16=y 925CONFIG_FONT_8x16=y
916CONFIG_SOUND=m 926CONFIG_SOUND=m
927CONFIG_SOUND_OSS_CORE=y
917# CONFIG_SND is not set 928# CONFIG_SND is not set
918CONFIG_SOUND_PRIME=m 929CONFIG_SOUND_PRIME=m
919CONFIG_HID_SUPPORT=y 930CONFIG_HID_SUPPORT=y
@@ -925,8 +936,7 @@ CONFIG_HID=y
925# USB Input Devices 936# USB Input Devices
926# 937#
927CONFIG_USB_HID=m 938CONFIG_USB_HID=m
928# CONFIG_USB_HIDINPUT_POWERBOOK is not set 939# CONFIG_HID_PID is not set
929# CONFIG_HID_FF is not set
930# CONFIG_USB_HIDDEV is not set 940# CONFIG_USB_HIDDEV is not set
931 941
932# 942#
@@ -934,6 +944,34 @@ CONFIG_USB_HID=m
934# 944#
935# CONFIG_USB_KBD is not set 945# CONFIG_USB_KBD is not set
936# CONFIG_USB_MOUSE is not set 946# CONFIG_USB_MOUSE is not set
947
948#
949# Special HID drivers
950#
951CONFIG_HID_COMPAT=y
952CONFIG_HID_A4TECH=m
953CONFIG_HID_APPLE=m
954CONFIG_HID_BELKIN=m
955CONFIG_HID_BRIGHT=m
956CONFIG_HID_CHERRY=m
957CONFIG_HID_CHICONY=m
958CONFIG_HID_CYPRESS=m
959CONFIG_HID_DELL=m
960CONFIG_HID_EZKEY=m
961CONFIG_HID_GYRATION=m
962CONFIG_HID_LOGITECH=m
963# CONFIG_LOGITECH_FF is not set
964# CONFIG_LOGIRUMBLEPAD2_FF is not set
965CONFIG_HID_MICROSOFT=m
966CONFIG_HID_MONTEREY=m
967CONFIG_HID_PANTHERLORD=m
968# CONFIG_PANTHERLORD_FF is not set
969CONFIG_HID_PETALYNX=m
970CONFIG_HID_SAMSUNG=m
971CONFIG_HID_SONY=m
972CONFIG_HID_SUNPLUS=m
973CONFIG_THRUSTMASTER_FF=m
974CONFIG_ZEROPLUS_FF=m
937CONFIG_USB_SUPPORT=y 975CONFIG_USB_SUPPORT=y
938CONFIG_USB_ARCH_HAS_HCD=y 976CONFIG_USB_ARCH_HAS_HCD=y
939CONFIG_USB_ARCH_HAS_OHCI=y 977CONFIG_USB_ARCH_HAS_OHCI=y
@@ -951,6 +989,7 @@ CONFIG_USB_DEVICE_CLASS=y
951# CONFIG_USB_OTG is not set 989# CONFIG_USB_OTG is not set
952# CONFIG_USB_OTG_WHITELIST is not set 990# CONFIG_USB_OTG_WHITELIST is not set
953# CONFIG_USB_OTG_BLACKLIST_HUB is not set 991# CONFIG_USB_OTG_BLACKLIST_HUB is not set
992CONFIG_USB_MON=y
954 993
955# 994#
956# USB Host Controller Drivers 995# USB Host Controller Drivers
@@ -975,6 +1014,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
975# CONFIG_USB_ACM is not set 1014# CONFIG_USB_ACM is not set
976CONFIG_USB_PRINTER=m 1015CONFIG_USB_PRINTER=m
977# CONFIG_USB_WDM is not set 1016# CONFIG_USB_WDM is not set
1017# CONFIG_USB_TMC is not set
978 1018
979# 1019#
980# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1020# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1004,7 +1044,6 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
1004# 1044#
1005# CONFIG_USB_MDC800 is not set 1045# CONFIG_USB_MDC800 is not set
1006# CONFIG_USB_MICROTEK is not set 1046# CONFIG_USB_MICROTEK is not set
1007CONFIG_USB_MON=y
1008 1047
1009# 1048#
1010# USB port drivers 1049# USB port drivers
@@ -1059,7 +1098,7 @@ CONFIG_USB_SERIAL_PL2303=m
1059CONFIG_USB_EMI62=m 1098CONFIG_USB_EMI62=m
1060CONFIG_USB_EMI26=m 1099CONFIG_USB_EMI26=m
1061# CONFIG_USB_ADUTUX is not set 1100# CONFIG_USB_ADUTUX is not set
1062# CONFIG_USB_AUERSWALD is not set 1101# CONFIG_USB_SEVSEG is not set
1063# CONFIG_USB_RIO500 is not set 1102# CONFIG_USB_RIO500 is not set
1064# CONFIG_USB_LEGOTOWER is not set 1103# CONFIG_USB_LEGOTOWER is not set
1065# CONFIG_USB_LCD is not set 1104# CONFIG_USB_LCD is not set
@@ -1078,6 +1117,7 @@ CONFIG_USB_SISUSBVGA_CON=y
1078# CONFIG_USB_IOWARRIOR is not set 1117# CONFIG_USB_IOWARRIOR is not set
1079# CONFIG_USB_TEST is not set 1118# CONFIG_USB_TEST is not set
1080# CONFIG_USB_ISIGHTFW is not set 1119# CONFIG_USB_ISIGHTFW is not set
1120# CONFIG_USB_VST is not set
1081# CONFIG_USB_GADGET is not set 1121# CONFIG_USB_GADGET is not set
1082# CONFIG_MMC is not set 1122# CONFIG_MMC is not set
1083# CONFIG_MEMSTICK is not set 1123# CONFIG_MEMSTICK is not set
@@ -1087,6 +1127,7 @@ CONFIG_USB_SISUSBVGA_CON=y
1087# CONFIG_RTC_CLASS is not set 1127# CONFIG_RTC_CLASS is not set
1088# CONFIG_DMADEVICES is not set 1128# CONFIG_DMADEVICES is not set
1089# CONFIG_UIO is not set 1129# CONFIG_UIO is not set
1130# CONFIG_STAGING is not set
1090 1131
1091# 1132#
1092# File systems 1133# File systems
@@ -1098,7 +1139,7 @@ CONFIG_EXT3_FS=y
1098CONFIG_EXT3_FS_XATTR=y 1139CONFIG_EXT3_FS_XATTR=y
1099# CONFIG_EXT3_FS_POSIX_ACL is not set 1140# CONFIG_EXT3_FS_POSIX_ACL is not set
1100# CONFIG_EXT3_FS_SECURITY is not set 1141# CONFIG_EXT3_FS_SECURITY is not set
1101# CONFIG_EXT4DEV_FS is not set 1142# CONFIG_EXT4_FS is not set
1102CONFIG_JBD=y 1143CONFIG_JBD=y
1103CONFIG_FS_MBCACHE=y 1144CONFIG_FS_MBCACHE=y
1104CONFIG_REISERFS_FS=y 1145CONFIG_REISERFS_FS=y
@@ -1107,6 +1148,7 @@ CONFIG_REISERFS_FS=y
1107# CONFIG_REISERFS_FS_XATTR is not set 1148# CONFIG_REISERFS_FS_XATTR is not set
1108# CONFIG_JFS_FS is not set 1149# CONFIG_JFS_FS is not set
1109# CONFIG_FS_POSIX_ACL is not set 1150# CONFIG_FS_POSIX_ACL is not set
1151CONFIG_FILE_LOCKING=y
1110# CONFIG_XFS_FS is not set 1152# CONFIG_XFS_FS is not set
1111# CONFIG_OCFS2_FS is not set 1153# CONFIG_OCFS2_FS is not set
1112CONFIG_DNOTIFY=y 1154CONFIG_DNOTIFY=y
@@ -1143,6 +1185,7 @@ CONFIG_NTFS_RW=y
1143CONFIG_PROC_FS=y 1185CONFIG_PROC_FS=y
1144# CONFIG_PROC_KCORE is not set 1186# CONFIG_PROC_KCORE is not set
1145CONFIG_PROC_SYSCTL=y 1187CONFIG_PROC_SYSCTL=y
1188CONFIG_PROC_PAGE_MONITOR=y
1146CONFIG_SYSFS=y 1189CONFIG_SYSFS=y
1147CONFIG_TMPFS=y 1190CONFIG_TMPFS=y
1148# CONFIG_TMPFS_POSIX_ACL is not set 1191# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1185,6 +1228,7 @@ CONFIG_LOCKD_V4=y
1185CONFIG_EXPORTFS=m 1228CONFIG_EXPORTFS=m
1186CONFIG_NFS_COMMON=y 1229CONFIG_NFS_COMMON=y
1187CONFIG_SUNRPC=m 1230CONFIG_SUNRPC=m
1231# CONFIG_SUNRPC_REGISTER_V4 is not set
1188# CONFIG_RPCSEC_GSS_KRB5 is not set 1232# CONFIG_RPCSEC_GSS_KRB5 is not set
1189# CONFIG_RPCSEC_GSS_SPKM3 is not set 1233# CONFIG_RPCSEC_GSS_SPKM3 is not set
1190CONFIG_SMB_FS=m 1234CONFIG_SMB_FS=m
@@ -1256,6 +1300,11 @@ CONFIG_FRAME_WARN=1024
1256# CONFIG_DEBUG_KERNEL is not set 1300# CONFIG_DEBUG_KERNEL is not set
1257# CONFIG_DEBUG_BUGVERBOSE is not set 1301# CONFIG_DEBUG_BUGVERBOSE is not set
1258# CONFIG_DEBUG_MEMORY_INIT is not set 1302# CONFIG_DEBUG_MEMORY_INIT is not set
1303# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1304# CONFIG_LATENCYTOP is not set
1305CONFIG_NOP_TRACER=y
1306CONFIG_HAVE_FTRACE=y
1307# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1259# CONFIG_SAMPLES is not set 1308# CONFIG_SAMPLES is not set
1260CONFIG_SH_STANDARD_BIOS=y 1309CONFIG_SH_STANDARD_BIOS=y
1261# CONFIG_EARLY_SCIF_CONSOLE is not set 1310# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1267,12 +1316,14 @@ CONFIG_SH_STANDARD_BIOS=y
1267# 1316#
1268# CONFIG_KEYS is not set 1317# CONFIG_KEYS is not set
1269# CONFIG_SECURITY is not set 1318# CONFIG_SECURITY is not set
1319# CONFIG_SECURITYFS is not set
1270# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1320# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1271CONFIG_CRYPTO=y 1321CONFIG_CRYPTO=y
1272 1322
1273# 1323#
1274# Crypto core or helper 1324# Crypto core or helper
1275# 1325#
1326# CONFIG_CRYPTO_FIPS is not set
1276# CONFIG_CRYPTO_MANAGER is not set 1327# CONFIG_CRYPTO_MANAGER is not set
1277# CONFIG_CRYPTO_GF128MUL is not set 1328# CONFIG_CRYPTO_GF128MUL is not set
1278# CONFIG_CRYPTO_NULL is not set 1329# CONFIG_CRYPTO_NULL is not set
@@ -1345,6 +1396,11 @@ CONFIG_CRYPTO=y
1345# 1396#
1346# CONFIG_CRYPTO_DEFLATE is not set 1397# CONFIG_CRYPTO_DEFLATE is not set
1347# CONFIG_CRYPTO_LZO is not set 1398# CONFIG_CRYPTO_LZO is not set
1399
1400#
1401# Random Number Generation
1402#
1403# CONFIG_CRYPTO_ANSI_CPRNG is not set
1348CONFIG_CRYPTO_HW=y 1404CONFIG_CRYPTO_HW=y
1349# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1405# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1350 1406
@@ -1352,7 +1408,6 @@ CONFIG_CRYPTO_HW=y
1352# Library routines 1408# Library routines
1353# 1409#
1354CONFIG_BITREVERSE=y 1410CONFIG_BITREVERSE=y
1355# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1356# CONFIG_CRC_CCITT is not set 1411# CONFIG_CRC_CCITT is not set
1357# CONFIG_CRC16 is not set 1412# CONFIG_CRC16 is not set
1358CONFIG_CRC_T10DIF=y 1413CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/lboxre2_defconfig b/arch/sh/configs/lboxre2_defconfig
index aecdfd33c695..c3ecedfc1bc7 100644
--- a/arch/sh/configs/lboxre2_defconfig
+++ b/arch/sh/configs/lboxre2_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:39:41 2008 4# Wed Oct 22 18:29:42 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,17 +11,18 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
19CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26 27
27# 28#
@@ -68,22 +69,22 @@ CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y 69CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y 70CONFIG_EVENTFD=y
70CONFIG_SHMEM=y 71CONFIG_SHMEM=y
72CONFIG_AIO=y
71CONFIG_VM_EVENT_COUNTERS=y 73CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y 75CONFIG_SLAB=y
73# CONFIG_SLUB is not set 76# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 77# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set 78# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set 79# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y 80CONFIG_HAVE_OPROFILE=y
78# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 81# CONFIG_KPROBES is not set
79# CONFIG_HAVE_IOREMAP_PROT is not set 82CONFIG_HAVE_IOREMAP_PROT=y
80# CONFIG_HAVE_KPROBES is not set 83CONFIG_HAVE_KPROBES=y
81# CONFIG_HAVE_KRETPROBES is not set 84CONFIG_HAVE_KRETPROBES=y
82# CONFIG_HAVE_ARCH_TRACEHOOK is not set 85CONFIG_HAVE_ARCH_TRACEHOOK=y
83# CONFIG_HAVE_DMA_ATTRS is not set
84# CONFIG_USE_GENERIC_SMP_HELPERS is not set
85CONFIG_HAVE_CLK=y 86CONFIG_HAVE_CLK=y
86CONFIG_PROC_PAGE_MONITOR=y 87CONFIG_HAVE_GENERIC_DMA_COHERENT=y
87CONFIG_SLABINFO=y 88CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
89# CONFIG_TINY_SHMEM is not set 90# CONFIG_TINY_SHMEM is not set
@@ -115,6 +116,7 @@ CONFIG_DEFAULT_AS=y
115# CONFIG_DEFAULT_NOOP is not set 116# CONFIG_DEFAULT_NOOP is not set
116CONFIG_DEFAULT_IOSCHED="anticipatory" 117CONFIG_DEFAULT_IOSCHED="anticipatory"
117CONFIG_CLASSIC_RCU=y 118CONFIG_CLASSIC_RCU=y
119# CONFIG_FREEZER is not set
118 120
119# 121#
120# System type 122# System type
@@ -182,12 +184,13 @@ CONFIG_FLATMEM_MANUAL=y
182CONFIG_FLATMEM=y 184CONFIG_FLATMEM=y
183CONFIG_FLAT_NODE_MEM_MAP=y 185CONFIG_FLAT_NODE_MEM_MAP=y
184CONFIG_SPARSEMEM_STATIC=y 186CONFIG_SPARSEMEM_STATIC=y
185# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
186CONFIG_PAGEFLAGS_EXTENDED=y 187CONFIG_PAGEFLAGS_EXTENDED=y
187CONFIG_SPLIT_PTLOCK_CPUS=4 188CONFIG_SPLIT_PTLOCK_CPUS=4
188# CONFIG_RESOURCES_64BIT is not set 189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set
189CONFIG_ZONE_DMA_FLAG=0 191CONFIG_ZONE_DMA_FLAG=0
190CONFIG_NR_QUICK=2 192CONFIG_NR_QUICK=2
193CONFIG_UNEVICTABLE_LRU=y
191 194
192# 195#
193# Cache configuration 196# Cache configuration
@@ -225,7 +228,6 @@ CONFIG_SH_LBOX_RE2=y
225CONFIG_SH_TMU=y 228CONFIG_SH_TMU=y
226CONFIG_SH_TIMER_IRQ=16 229CONFIG_SH_TIMER_IRQ=16
227CONFIG_SH_PCLK_FREQ=40000000 230CONFIG_SH_PCLK_FREQ=40000000
228# CONFIG_TICK_ONESHOT is not set
229# CONFIG_NO_HZ is not set 231# CONFIG_NO_HZ is not set
230# CONFIG_HIGH_RES_TIMERS is not set 232# CONFIG_HIGH_RES_TIMERS is not set
231CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 233CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -261,6 +263,7 @@ CONFIG_HZ=250
261# CONFIG_SCHED_HRTICK is not set 263# CONFIG_SCHED_HRTICK is not set
262CONFIG_KEXEC=y 264CONFIG_KEXEC=y
263# CONFIG_CRASH_DUMP is not set 265# CONFIG_CRASH_DUMP is not set
266# CONFIG_SECCOMP is not set
264CONFIG_PREEMPT_NONE=y 267CONFIG_PREEMPT_NONE=y
265# CONFIG_PREEMPT_VOLUNTARY is not set 268# CONFIG_PREEMPT_VOLUNTARY is not set
266# CONFIG_PREEMPT is not set 269# CONFIG_PREEMPT is not set
@@ -309,11 +312,9 @@ CONFIG_PCCARD_NONSTATIC=y
309# Executable file formats 312# Executable file formats
310# 313#
311CONFIG_BINFMT_ELF=y 314CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set
312# CONFIG_BINFMT_MISC is not set 317# CONFIG_BINFMT_MISC is not set
313
314#
315# Networking
316#
317CONFIG_NET=y 318CONFIG_NET=y
318 319
319# 320#
@@ -360,7 +361,6 @@ CONFIG_INET_TCP_DIAG=y
360CONFIG_TCP_CONG_CUBIC=y 361CONFIG_TCP_CONG_CUBIC=y
361CONFIG_DEFAULT_TCP_CONG="cubic" 362CONFIG_DEFAULT_TCP_CONG="cubic"
362# CONFIG_TCP_MD5SIG is not set 363# CONFIG_TCP_MD5SIG is not set
363# CONFIG_IP_VS is not set
364# CONFIG_IPV6 is not set 364# CONFIG_IPV6 is not set
365# CONFIG_NETWORK_SECMARK is not set 365# CONFIG_NETWORK_SECMARK is not set
366CONFIG_NETFILTER=y 366CONFIG_NETFILTER=y
@@ -374,10 +374,12 @@ CONFIG_NETFILTER_ADVANCED=y
374# CONFIG_NETFILTER_NETLINK_LOG is not set 374# CONFIG_NETFILTER_NETLINK_LOG is not set
375# CONFIG_NF_CONNTRACK is not set 375# CONFIG_NF_CONNTRACK is not set
376# CONFIG_NETFILTER_XTABLES is not set 376# CONFIG_NETFILTER_XTABLES is not set
377# CONFIG_IP_VS is not set
377 378
378# 379#
379# IP: Netfilter Configuration 380# IP: Netfilter Configuration
380# 381#
382# CONFIG_NF_DEFRAG_IPV4 is not set
381# CONFIG_IP_NF_QUEUE is not set 383# CONFIG_IP_NF_QUEUE is not set
382# CONFIG_IP_NF_IPTABLES is not set 384# CONFIG_IP_NF_IPTABLES is not set
383# CONFIG_IP_NF_ARPTABLES is not set 385# CONFIG_IP_NF_ARPTABLES is not set
@@ -386,6 +388,7 @@ CONFIG_NETFILTER_ADVANCED=y
386# CONFIG_TIPC is not set 388# CONFIG_TIPC is not set
387# CONFIG_ATM is not set 389# CONFIG_ATM is not set
388# CONFIG_BRIDGE is not set 390# CONFIG_BRIDGE is not set
391# CONFIG_NET_DSA is not set
389# CONFIG_VLAN_8021Q is not set 392# CONFIG_VLAN_8021Q is not set
390# CONFIG_DECNET is not set 393# CONFIG_DECNET is not set
391# CONFIG_LLC2 is not set 394# CONFIG_LLC2 is not set
@@ -406,11 +409,10 @@ CONFIG_NETFILTER_ADVANCED=y
406# CONFIG_IRDA is not set 409# CONFIG_IRDA is not set
407# CONFIG_BT is not set 410# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 411# CONFIG_AF_RXRPC is not set
409 412# CONFIG_PHONET is not set
410# 413CONFIG_WIRELESS=y
411# Wireless
412#
413# CONFIG_CFG80211 is not set 414# CONFIG_CFG80211 is not set
415# CONFIG_WIRELESS_OLD_REGULATORY is not set
414# CONFIG_WIRELESS_EXT is not set 416# CONFIG_WIRELESS_EXT is not set
415# CONFIG_MAC80211 is not set 417# CONFIG_MAC80211 is not set
416# CONFIG_IEEE80211 is not set 418# CONFIG_IEEE80211 is not set
@@ -631,6 +633,9 @@ CONFIG_MII=y
631# CONFIG_IBM_NEW_EMAC_RGMII is not set 633# CONFIG_IBM_NEW_EMAC_RGMII is not set
632# CONFIG_IBM_NEW_EMAC_TAH is not set 634# CONFIG_IBM_NEW_EMAC_TAH is not set
633# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 635# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
636# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
637# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
638# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
634CONFIG_NET_PCI=y 639CONFIG_NET_PCI=y
635# CONFIG_PCNET32 is not set 640# CONFIG_PCNET32 is not set
636# CONFIG_AMD8111_ETH is not set 641# CONFIG_AMD8111_ETH is not set
@@ -655,6 +660,7 @@ CONFIG_8139TOO_TUNE_TWISTER=y
655# CONFIG_TLAN is not set 660# CONFIG_TLAN is not set
656# CONFIG_VIA_RHINE is not set 661# CONFIG_VIA_RHINE is not set
657# CONFIG_SC92031 is not set 662# CONFIG_SC92031 is not set
663# CONFIG_ATL2 is not set
658CONFIG_NETDEV_1000=y 664CONFIG_NETDEV_1000=y
659# CONFIG_ACENIC is not set 665# CONFIG_ACENIC is not set
660# CONFIG_DL2K is not set 666# CONFIG_DL2K is not set
@@ -675,9 +681,11 @@ CONFIG_NETDEV_1000=y
675# CONFIG_QLA3XXX is not set 681# CONFIG_QLA3XXX is not set
676# CONFIG_ATL1 is not set 682# CONFIG_ATL1 is not set
677# CONFIG_ATL1E is not set 683# CONFIG_ATL1E is not set
684# CONFIG_JME is not set
678CONFIG_NETDEV_10000=y 685CONFIG_NETDEV_10000=y
679# CONFIG_CHELSIO_T1 is not set 686# CONFIG_CHELSIO_T1 is not set
680# CONFIG_CHELSIO_T3 is not set 687# CONFIG_CHELSIO_T3 is not set
688# CONFIG_ENIC is not set
681# CONFIG_IXGBE is not set 689# CONFIG_IXGBE is not set
682# CONFIG_IXGB is not set 690# CONFIG_IXGB is not set
683# CONFIG_S2IO is not set 691# CONFIG_S2IO is not set
@@ -687,6 +695,7 @@ CONFIG_NETDEV_10000=y
687# CONFIG_MLX4_CORE is not set 695# CONFIG_MLX4_CORE is not set
688# CONFIG_TEHUTI is not set 696# CONFIG_TEHUTI is not set
689# CONFIG_BNX2X is not set 697# CONFIG_BNX2X is not set
698# CONFIG_QLGE is not set
690# CONFIG_SFC is not set 699# CONFIG_SFC is not set
691# CONFIG_TR is not set 700# CONFIG_TR is not set
692 701
@@ -832,6 +841,8 @@ CONFIG_SSB_POSSIBLE=y
832# CONFIG_MFD_CORE is not set 841# CONFIG_MFD_CORE is not set
833# CONFIG_MFD_SM501 is not set 842# CONFIG_MFD_SM501 is not set
834# CONFIG_HTC_PASIC3 is not set 843# CONFIG_HTC_PASIC3 is not set
844# CONFIG_MFD_TMIO is not set
845# CONFIG_MFD_WM8400 is not set
835 846
836# 847#
837# Multimedia devices 848# Multimedia devices
@@ -872,6 +883,12 @@ CONFIG_HID_SUPPORT=y
872CONFIG_HID=y 883CONFIG_HID=y
873# CONFIG_HID_DEBUG is not set 884# CONFIG_HID_DEBUG is not set
874# CONFIG_HIDRAW is not set 885# CONFIG_HIDRAW is not set
886# CONFIG_HID_PID is not set
887
888#
889# Special HID drivers
890#
891CONFIG_HID_COMPAT=y
875CONFIG_USB_SUPPORT=y 892CONFIG_USB_SUPPORT=y
876CONFIG_USB_ARCH_HAS_HCD=y 893CONFIG_USB_ARCH_HAS_HCD=y
877CONFIG_USB_ARCH_HAS_OHCI=y 894CONFIG_USB_ARCH_HAS_OHCI=y
@@ -881,6 +898,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
881# CONFIG_USB_OTG_BLACKLIST_HUB is not set 898# CONFIG_USB_OTG_BLACKLIST_HUB is not set
882 899
883# 900#
901# Enable Host or Gadget support to see Inventra options
902#
903
904#
884# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 905# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
885# 906#
886# CONFIG_USB_GADGET is not set 907# CONFIG_USB_GADGET is not set
@@ -911,12 +932,15 @@ CONFIG_RTC_INTF_DEV=y
911# 932#
912# Platform RTC drivers 933# Platform RTC drivers
913# 934#
935# CONFIG_RTC_DRV_DS1286 is not set
914# CONFIG_RTC_DRV_DS1511 is not set 936# CONFIG_RTC_DRV_DS1511 is not set
915# CONFIG_RTC_DRV_DS1553 is not set 937# CONFIG_RTC_DRV_DS1553 is not set
916# CONFIG_RTC_DRV_DS1742 is not set 938# CONFIG_RTC_DRV_DS1742 is not set
917# CONFIG_RTC_DRV_STK17TA8 is not set 939# CONFIG_RTC_DRV_STK17TA8 is not set
918# CONFIG_RTC_DRV_M48T86 is not set 940# CONFIG_RTC_DRV_M48T86 is not set
941# CONFIG_RTC_DRV_M48T35 is not set
919# CONFIG_RTC_DRV_M48T59 is not set 942# CONFIG_RTC_DRV_M48T59 is not set
943# CONFIG_RTC_DRV_BQ4802 is not set
920# CONFIG_RTC_DRV_V3020 is not set 944# CONFIG_RTC_DRV_V3020 is not set
921 945
922# 946#
@@ -925,6 +949,7 @@ CONFIG_RTC_INTF_DEV=y
925# CONFIG_RTC_DRV_SH is not set 949# CONFIG_RTC_DRV_SH is not set
926# CONFIG_DMADEVICES is not set 950# CONFIG_DMADEVICES is not set
927# CONFIG_UIO is not set 951# CONFIG_UIO is not set
952# CONFIG_STAGING is not set
928 953
929# 954#
930# File systems 955# File systems
@@ -936,12 +961,13 @@ CONFIG_EXT3_FS=y
936CONFIG_EXT3_FS_XATTR=y 961CONFIG_EXT3_FS_XATTR=y
937# CONFIG_EXT3_FS_POSIX_ACL is not set 962# CONFIG_EXT3_FS_POSIX_ACL is not set
938# CONFIG_EXT3_FS_SECURITY is not set 963# CONFIG_EXT3_FS_SECURITY is not set
939# CONFIG_EXT4DEV_FS is not set 964# CONFIG_EXT4_FS is not set
940CONFIG_JBD=y 965CONFIG_JBD=y
941CONFIG_FS_MBCACHE=y 966CONFIG_FS_MBCACHE=y
942# CONFIG_REISERFS_FS is not set 967# CONFIG_REISERFS_FS is not set
943# CONFIG_JFS_FS is not set 968# CONFIG_JFS_FS is not set
944# CONFIG_FS_POSIX_ACL is not set 969# CONFIG_FS_POSIX_ACL is not set
970CONFIG_FILE_LOCKING=y
945# CONFIG_XFS_FS is not set 971# CONFIG_XFS_FS is not set
946# CONFIG_OCFS2_FS is not set 972# CONFIG_OCFS2_FS is not set
947CONFIG_DNOTIFY=y 973CONFIG_DNOTIFY=y
@@ -974,6 +1000,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
974CONFIG_PROC_FS=y 1000CONFIG_PROC_FS=y
975# CONFIG_PROC_KCORE is not set 1001# CONFIG_PROC_KCORE is not set
976CONFIG_PROC_SYSCTL=y 1002CONFIG_PROC_SYSCTL=y
1003CONFIG_PROC_PAGE_MONITOR=y
977CONFIG_SYSFS=y 1004CONFIG_SYSFS=y
978CONFIG_TMPFS=y 1005CONFIG_TMPFS=y
979# CONFIG_TMPFS_POSIX_ACL is not set 1006# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1071,6 +1098,11 @@ CONFIG_FRAME_WARN=1024
1071# CONFIG_DEBUG_KERNEL is not set 1098# CONFIG_DEBUG_KERNEL is not set
1072# CONFIG_DEBUG_BUGVERBOSE is not set 1099# CONFIG_DEBUG_BUGVERBOSE is not set
1073# CONFIG_DEBUG_MEMORY_INIT is not set 1100# CONFIG_DEBUG_MEMORY_INIT is not set
1101# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1102# CONFIG_LATENCYTOP is not set
1103CONFIG_NOP_TRACER=y
1104CONFIG_HAVE_FTRACE=y
1105# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1074# CONFIG_SAMPLES is not set 1106# CONFIG_SAMPLES is not set
1075CONFIG_SH_STANDARD_BIOS=y 1107CONFIG_SH_STANDARD_BIOS=y
1076# CONFIG_EARLY_SCIF_CONSOLE is not set 1108# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1082,12 +1114,14 @@ CONFIG_SH_STANDARD_BIOS=y
1082# 1114#
1083# CONFIG_KEYS is not set 1115# CONFIG_KEYS is not set
1084# CONFIG_SECURITY is not set 1116# CONFIG_SECURITY is not set
1117# CONFIG_SECURITYFS is not set
1085# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1118# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1086CONFIG_CRYPTO=y 1119CONFIG_CRYPTO=y
1087 1120
1088# 1121#
1089# Crypto core or helper 1122# Crypto core or helper
1090# 1123#
1124# CONFIG_CRYPTO_FIPS is not set
1091# CONFIG_CRYPTO_MANAGER is not set 1125# CONFIG_CRYPTO_MANAGER is not set
1092# CONFIG_CRYPTO_GF128MUL is not set 1126# CONFIG_CRYPTO_GF128MUL is not set
1093# CONFIG_CRYPTO_NULL is not set 1127# CONFIG_CRYPTO_NULL is not set
@@ -1160,6 +1194,11 @@ CONFIG_CRYPTO=y
1160# 1194#
1161# CONFIG_CRYPTO_DEFLATE is not set 1195# CONFIG_CRYPTO_DEFLATE is not set
1162# CONFIG_CRYPTO_LZO is not set 1196# CONFIG_CRYPTO_LZO is not set
1197
1198#
1199# Random Number Generation
1200#
1201# CONFIG_CRYPTO_ANSI_CPRNG is not set
1163CONFIG_CRYPTO_HW=y 1202CONFIG_CRYPTO_HW=y
1164# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1203# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1165 1204
@@ -1167,7 +1206,6 @@ CONFIG_CRYPTO_HW=y
1167# Library routines 1206# Library routines
1168# 1207#
1169CONFIG_BITREVERSE=y 1208CONFIG_BITREVERSE=y
1170# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1171# CONFIG_CRC_CCITT is not set 1209# CONFIG_CRC_CCITT is not set
1172# CONFIG_CRC16 is not set 1210# CONFIG_CRC16 is not set
1173CONFIG_CRC_T10DIF=y 1211CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/magicpanelr2_defconfig b/arch/sh/configs/magicpanelr2_defconfig
index a3a80f3d27c0..499ed7204385 100644
--- a/arch/sh/configs/magicpanelr2_defconfig
+++ b/arch/sh/configs/magicpanelr2_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:41:08 2008 4# Wed Oct 22 18:32:23 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,16 +11,17 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_GPIO=y
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25 26
26# 27#
@@ -55,7 +56,6 @@ CONFIG_SYSCTL=y
55CONFIG_EMBEDDED=y 56CONFIG_EMBEDDED=y
56CONFIG_UID16=y 57CONFIG_UID16=y
57CONFIG_SYSCTL_SYSCALL=y 58CONFIG_SYSCTL_SYSCALL=y
58CONFIG_SYSCTL_SYSCALL_CHECK=y
59CONFIG_KALLSYMS=y 59CONFIG_KALLSYMS=y
60CONFIG_KALLSYMS_ALL=y 60CONFIG_KALLSYMS_ALL=y
61# CONFIG_KALLSYMS_EXTRA_PASS is not set 61# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -72,22 +72,22 @@ CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y 72CONFIG_TIMERFD=y
73CONFIG_EVENTFD=y 73CONFIG_EVENTFD=y
74CONFIG_SHMEM=y 74CONFIG_SHMEM=y
75CONFIG_AIO=y
75CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
76CONFIG_SLAB=y 78CONFIG_SLAB=y
77# CONFIG_SLUB is not set 79# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 80# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set 81# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set 82# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
82# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 84# CONFIG_KPROBES is not set
83# CONFIG_HAVE_IOREMAP_PROT is not set 85CONFIG_HAVE_IOREMAP_PROT=y
84# CONFIG_HAVE_KPROBES is not set 86CONFIG_HAVE_KPROBES=y
85# CONFIG_HAVE_KRETPROBES is not set 87CONFIG_HAVE_KRETPROBES=y
86# CONFIG_HAVE_ARCH_TRACEHOOK is not set 88CONFIG_HAVE_ARCH_TRACEHOOK=y
87# CONFIG_HAVE_DMA_ATTRS is not set
88# CONFIG_USE_GENERIC_SMP_HELPERS is not set
89CONFIG_HAVE_CLK=y 89CONFIG_HAVE_CLK=y
90CONFIG_PROC_PAGE_MONITOR=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
92CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
93# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
@@ -119,6 +119,7 @@ CONFIG_IOSCHED_NOOP=y
119CONFIG_DEFAULT_NOOP=y 119CONFIG_DEFAULT_NOOP=y
120CONFIG_DEFAULT_IOSCHED="noop" 120CONFIG_DEFAULT_IOSCHED="noop"
121CONFIG_CLASSIC_RCU=y 121CONFIG_CLASSIC_RCU=y
122# CONFIG_FREEZER is not set
122 123
123# 124#
124# System type 125# System type
@@ -186,12 +187,13 @@ CONFIG_FLATMEM_MANUAL=y
186CONFIG_FLATMEM=y 187CONFIG_FLATMEM=y
187CONFIG_FLAT_NODE_MEM_MAP=y 188CONFIG_FLAT_NODE_MEM_MAP=y
188CONFIG_SPARSEMEM_STATIC=y 189CONFIG_SPARSEMEM_STATIC=y
189# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
190CONFIG_PAGEFLAGS_EXTENDED=y 190CONFIG_PAGEFLAGS_EXTENDED=y
191CONFIG_SPLIT_PTLOCK_CPUS=4 191CONFIG_SPLIT_PTLOCK_CPUS=4
192# CONFIG_RESOURCES_64BIT is not set 192# CONFIG_RESOURCES_64BIT is not set
193# CONFIG_PHYS_ADDR_T_64BIT is not set
193CONFIG_ZONE_DMA_FLAG=0 194CONFIG_ZONE_DMA_FLAG=0
194CONFIG_NR_QUICK=2 195CONFIG_NR_QUICK=2
196CONFIG_UNEVICTABLE_LRU=y
195 197
196# 198#
197# Cache configuration 199# Cache configuration
@@ -229,7 +231,6 @@ CONFIG_SH_MAGIC_PANEL_R2_VERSION=3
229CONFIG_SH_TMU=y 231CONFIG_SH_TMU=y
230CONFIG_SH_TIMER_IRQ=16 232CONFIG_SH_TIMER_IRQ=16
231CONFIG_SH_PCLK_FREQ=24000000 233CONFIG_SH_PCLK_FREQ=24000000
232# CONFIG_TICK_ONESHOT is not set
233# CONFIG_NO_HZ is not set 234# CONFIG_NO_HZ is not set
234# CONFIG_HIGH_RES_TIMERS is not set 235# CONFIG_HIGH_RES_TIMERS is not set
235CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 236CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -268,6 +269,7 @@ CONFIG_HZ=250
268# CONFIG_SCHED_HRTICK is not set 269# CONFIG_SCHED_HRTICK is not set
269# CONFIG_KEXEC is not set 270# CONFIG_KEXEC is not set
270# CONFIG_CRASH_DUMP is not set 271# CONFIG_CRASH_DUMP is not set
272# CONFIG_SECCOMP is not set
271CONFIG_PREEMPT_NONE=y 273CONFIG_PREEMPT_NONE=y
272# CONFIG_PREEMPT_VOLUNTARY is not set 274# CONFIG_PREEMPT_VOLUNTARY is not set
273# CONFIG_PREEMPT is not set 275# CONFIG_PREEMPT is not set
@@ -291,11 +293,9 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
291# Executable file formats 293# Executable file formats
292# 294#
293CONFIG_BINFMT_ELF=y 295CONFIG_BINFMT_ELF=y
296# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
297# CONFIG_HAVE_AOUT is not set
294# CONFIG_BINFMT_MISC is not set 298# CONFIG_BINFMT_MISC is not set
295
296#
297# Networking
298#
299CONFIG_NET=y 299CONFIG_NET=y
300 300
301# 301#
@@ -340,6 +340,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
340# CONFIG_TIPC is not set 340# CONFIG_TIPC is not set
341# CONFIG_ATM is not set 341# CONFIG_ATM is not set
342# CONFIG_BRIDGE is not set 342# CONFIG_BRIDGE is not set
343# CONFIG_NET_DSA is not set
343# CONFIG_VLAN_8021Q is not set 344# CONFIG_VLAN_8021Q is not set
344# CONFIG_DECNET is not set 345# CONFIG_DECNET is not set
345# CONFIG_LLC2 is not set 346# CONFIG_LLC2 is not set
@@ -360,11 +361,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
360# CONFIG_IRDA is not set 361# CONFIG_IRDA is not set
361# CONFIG_BT is not set 362# CONFIG_BT is not set
362# CONFIG_AF_RXRPC is not set 363# CONFIG_AF_RXRPC is not set
363 364# CONFIG_PHONET is not set
364# 365CONFIG_WIRELESS=y
365# Wireless
366#
367# CONFIG_CFG80211 is not set 366# CONFIG_CFG80211 is not set
367# CONFIG_WIRELESS_OLD_REGULATORY is not set
368# CONFIG_WIRELESS_EXT is not set 368# CONFIG_WIRELESS_EXT is not set
369# CONFIG_MAC80211 is not set 369# CONFIG_MAC80211 is not set
370# CONFIG_IEEE80211 is not set 370# CONFIG_IEEE80211 is not set
@@ -513,6 +513,9 @@ CONFIG_SMC911X=y
513# CONFIG_IBM_NEW_EMAC_RGMII is not set 513# CONFIG_IBM_NEW_EMAC_RGMII is not set
514# CONFIG_IBM_NEW_EMAC_TAH is not set 514# CONFIG_IBM_NEW_EMAC_TAH is not set
515# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 515# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
516# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
517# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
518# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
516# CONFIG_B44 is not set 519# CONFIG_B44 is not set
517# CONFIG_NETDEV_1000 is not set 520# CONFIG_NETDEV_1000 is not set
518# CONFIG_NETDEV_10000 is not set 521# CONFIG_NETDEV_10000 is not set
@@ -560,11 +563,13 @@ CONFIG_KEYBOARD_ATKBD=y
560# CONFIG_KEYBOARD_XTKBD is not set 563# CONFIG_KEYBOARD_XTKBD is not set
561# CONFIG_KEYBOARD_NEWTON is not set 564# CONFIG_KEYBOARD_NEWTON is not set
562# CONFIG_KEYBOARD_STOWAWAY is not set 565# CONFIG_KEYBOARD_STOWAWAY is not set
566# CONFIG_KEYBOARD_GPIO is not set
563# CONFIG_KEYBOARD_SH_KEYSC is not set 567# CONFIG_KEYBOARD_SH_KEYSC is not set
564CONFIG_INPUT_MOUSE=y 568CONFIG_INPUT_MOUSE=y
565# CONFIG_MOUSE_PS2 is not set 569# CONFIG_MOUSE_PS2 is not set
566# CONFIG_MOUSE_SERIAL is not set 570# CONFIG_MOUSE_SERIAL is not set
567# CONFIG_MOUSE_VSXXXAA is not set 571# CONFIG_MOUSE_VSXXXAA is not set
572# CONFIG_MOUSE_GPIO is not set
568# CONFIG_INPUT_JOYSTICK is not set 573# CONFIG_INPUT_JOYSTICK is not set
569# CONFIG_INPUT_TABLET is not set 574# CONFIG_INPUT_TABLET is not set
570# CONFIG_INPUT_TOUCHSCREEN is not set 575# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -641,6 +646,8 @@ CONFIG_SSB_POSSIBLE=y
641# CONFIG_MFD_CORE is not set 646# CONFIG_MFD_CORE is not set
642# CONFIG_MFD_SM501 is not set 647# CONFIG_MFD_SM501 is not set
643# CONFIG_HTC_PASIC3 is not set 648# CONFIG_HTC_PASIC3 is not set
649# CONFIG_MFD_TMIO is not set
650# CONFIG_MFD_WM8400 is not set
644 651
645# 652#
646# Multimedia devices 653# Multimedia devices
@@ -703,12 +710,15 @@ CONFIG_RTC_INTF_DEV=y
703# 710#
704# Platform RTC drivers 711# Platform RTC drivers
705# 712#
713# CONFIG_RTC_DRV_DS1286 is not set
706# CONFIG_RTC_DRV_DS1511 is not set 714# CONFIG_RTC_DRV_DS1511 is not set
707# CONFIG_RTC_DRV_DS1553 is not set 715# CONFIG_RTC_DRV_DS1553 is not set
708# CONFIG_RTC_DRV_DS1742 is not set 716# CONFIG_RTC_DRV_DS1742 is not set
709# CONFIG_RTC_DRV_STK17TA8 is not set 717# CONFIG_RTC_DRV_STK17TA8 is not set
710# CONFIG_RTC_DRV_M48T86 is not set 718# CONFIG_RTC_DRV_M48T86 is not set
719# CONFIG_RTC_DRV_M48T35 is not set
711# CONFIG_RTC_DRV_M48T59 is not set 720# CONFIG_RTC_DRV_M48T59 is not set
721# CONFIG_RTC_DRV_BQ4802 is not set
712# CONFIG_RTC_DRV_V3020 is not set 722# CONFIG_RTC_DRV_V3020 is not set
713 723
714# 724#
@@ -717,6 +727,7 @@ CONFIG_RTC_INTF_DEV=y
717CONFIG_RTC_DRV_SH=y 727CONFIG_RTC_DRV_SH=y
718# CONFIG_DMADEVICES is not set 728# CONFIG_DMADEVICES is not set
719# CONFIG_UIO is not set 729# CONFIG_UIO is not set
730# CONFIG_STAGING is not set
720 731
721# 732#
722# File systems 733# File systems
@@ -726,11 +737,12 @@ CONFIG_EXT2_FS=y
726# CONFIG_EXT2_FS_XIP is not set 737# CONFIG_EXT2_FS_XIP is not set
727CONFIG_EXT3_FS=y 738CONFIG_EXT3_FS=y
728# CONFIG_EXT3_FS_XATTR is not set 739# CONFIG_EXT3_FS_XATTR is not set
729# CONFIG_EXT4DEV_FS is not set 740# CONFIG_EXT4_FS is not set
730CONFIG_JBD=y 741CONFIG_JBD=y
731# CONFIG_REISERFS_FS is not set 742# CONFIG_REISERFS_FS is not set
732# CONFIG_JFS_FS is not set 743# CONFIG_JFS_FS is not set
733# CONFIG_FS_POSIX_ACL is not set 744# CONFIG_FS_POSIX_ACL is not set
745CONFIG_FILE_LOCKING=y
734# CONFIG_XFS_FS is not set 746# CONFIG_XFS_FS is not set
735# CONFIG_OCFS2_FS is not set 747# CONFIG_OCFS2_FS is not set
736# CONFIG_DNOTIFY is not set 748# CONFIG_DNOTIFY is not set
@@ -759,6 +771,7 @@ CONFIG_JBD=y
759CONFIG_PROC_FS=y 771CONFIG_PROC_FS=y
760CONFIG_PROC_KCORE=y 772CONFIG_PROC_KCORE=y
761CONFIG_PROC_SYSCTL=y 773CONFIG_PROC_SYSCTL=y
774CONFIG_PROC_PAGE_MONITOR=y
762CONFIG_SYSFS=y 775CONFIG_SYSFS=y
763CONFIG_TMPFS=y 776CONFIG_TMPFS=y
764# CONFIG_TMPFS_POSIX_ACL is not set 777# CONFIG_TMPFS_POSIX_ACL is not set
@@ -806,6 +819,7 @@ CONFIG_LOCKD=y
806CONFIG_LOCKD_V4=y 819CONFIG_LOCKD_V4=y
807CONFIG_NFS_COMMON=y 820CONFIG_NFS_COMMON=y
808CONFIG_SUNRPC=y 821CONFIG_SUNRPC=y
822# CONFIG_SUNRPC_REGISTER_V4 is not set
809# CONFIG_RPCSEC_GSS_KRB5 is not set 823# CONFIG_RPCSEC_GSS_KRB5 is not set
810# CONFIG_RPCSEC_GSS_SPKM3 is not set 824# CONFIG_RPCSEC_GSS_SPKM3 is not set
811# CONFIG_SMB_FS is not set 825# CONFIG_SMB_FS is not set
@@ -899,10 +913,22 @@ CONFIG_DEBUG_INFO=y
899# CONFIG_DEBUG_LIST is not set 913# CONFIG_DEBUG_LIST is not set
900# CONFIG_DEBUG_SG is not set 914# CONFIG_DEBUG_SG is not set
901CONFIG_FRAME_POINTER=y 915CONFIG_FRAME_POINTER=y
902# CONFIG_BOOT_PRINTK_DELAY is not set
903# CONFIG_RCU_TORTURE_TEST is not set 916# CONFIG_RCU_TORTURE_TEST is not set
917# CONFIG_RCU_CPU_STALL_DETECTOR is not set
904# CONFIG_BACKTRACE_SELF_TEST is not set 918# CONFIG_BACKTRACE_SELF_TEST is not set
919# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
905# CONFIG_FAULT_INJECTION is not set 920# CONFIG_FAULT_INJECTION is not set
921# CONFIG_LATENCYTOP is not set
922CONFIG_SYSCTL_SYSCALL_CHECK=y
923CONFIG_NOP_TRACER=y
924CONFIG_HAVE_FTRACE=y
925# CONFIG_FTRACE is not set
926# CONFIG_IRQSOFF_TRACER is not set
927# CONFIG_SCHED_TRACER is not set
928# CONFIG_CONTEXT_SWITCH_TRACER is not set
929# CONFIG_BOOT_TRACER is not set
930# CONFIG_STACK_TRACER is not set
931# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
906# CONFIG_SAMPLES is not set 932# CONFIG_SAMPLES is not set
907# CONFIG_SH_STANDARD_BIOS is not set 933# CONFIG_SH_STANDARD_BIOS is not set
908CONFIG_EARLY_SCIF_CONSOLE=y 934CONFIG_EARLY_SCIF_CONSOLE=y
@@ -938,6 +964,7 @@ CONFIG_KGDB_DEFBITS_8=y
938# 964#
939# CONFIG_KEYS is not set 965# CONFIG_KEYS is not set
940# CONFIG_SECURITY is not set 966# CONFIG_SECURITY is not set
967# CONFIG_SECURITYFS is not set
941# CONFIG_SECURITY_FILE_CAPABILITIES is not set 968# CONFIG_SECURITY_FILE_CAPABILITIES is not set
942# CONFIG_CRYPTO is not set 969# CONFIG_CRYPTO is not set
943 970
@@ -945,7 +972,6 @@ CONFIG_KGDB_DEFBITS_8=y
945# Library routines 972# Library routines
946# 973#
947CONFIG_BITREVERSE=y 974CONFIG_BITREVERSE=y
948# CONFIG_GENERIC_FIND_FIRST_BIT is not set
949CONFIG_CRC_CCITT=m 975CONFIG_CRC_CCITT=m
950CONFIG_CRC16=m 976CONFIG_CRC16=m
951# CONFIG_CRC_T10DIF is not set 977# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/microdev_defconfig b/arch/sh/configs/microdev_defconfig
index e4b900e72dcd..b8ada8ce98d9 100644
--- a/arch/sh/configs/microdev_defconfig
+++ b/arch/sh/configs/microdev_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:47:16 2008 4# Wed Oct 22 18:37:41 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,16 +11,17 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25 26
26# 27#
@@ -69,22 +70,21 @@ CONFIG_SIGNALFD=y
69CONFIG_TIMERFD=y 70CONFIG_TIMERFD=y
70CONFIG_EVENTFD=y 71CONFIG_EVENTFD=y
71CONFIG_SHMEM=y 72CONFIG_SHMEM=y
73CONFIG_AIO=y
72CONFIG_VM_EVENT_COUNTERS=y 74CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
73CONFIG_SLAB=y 76CONFIG_SLAB=y
74# CONFIG_SLUB is not set 77# CONFIG_SLUB is not set
75# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
76# CONFIG_PROFILING is not set 79# CONFIG_PROFILING is not set
77# CONFIG_MARKERS is not set 80# CONFIG_MARKERS is not set
78CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
79# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 82CONFIG_HAVE_IOREMAP_PROT=y
80# CONFIG_HAVE_IOREMAP_PROT is not set 83CONFIG_HAVE_KPROBES=y
81# CONFIG_HAVE_KPROBES is not set 84CONFIG_HAVE_KRETPROBES=y
82# CONFIG_HAVE_KRETPROBES is not set 85CONFIG_HAVE_ARCH_TRACEHOOK=y
83# CONFIG_HAVE_ARCH_TRACEHOOK is not set
84# CONFIG_HAVE_DMA_ATTRS is not set
85# CONFIG_USE_GENERIC_SMP_HELPERS is not set
86CONFIG_HAVE_CLK=y 86CONFIG_HAVE_CLK=y
87CONFIG_PROC_PAGE_MONITOR=y 87CONFIG_HAVE_GENERIC_DMA_COHERENT=y
88CONFIG_SLABINFO=y 88CONFIG_SLABINFO=y
89CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
90# CONFIG_TINY_SHMEM is not set 90# CONFIG_TINY_SHMEM is not set
@@ -110,6 +110,7 @@ CONFIG_DEFAULT_AS=y
110# CONFIG_DEFAULT_NOOP is not set 110# CONFIG_DEFAULT_NOOP is not set
111CONFIG_DEFAULT_IOSCHED="anticipatory" 111CONFIG_DEFAULT_IOSCHED="anticipatory"
112CONFIG_CLASSIC_RCU=y 112CONFIG_CLASSIC_RCU=y
113# CONFIG_FREEZER is not set
113 114
114# 115#
115# System type 116# System type
@@ -183,12 +184,13 @@ CONFIG_FLATMEM_MANUAL=y
183CONFIG_FLATMEM=y 184CONFIG_FLATMEM=y
184CONFIG_FLAT_NODE_MEM_MAP=y 185CONFIG_FLAT_NODE_MEM_MAP=y
185CONFIG_SPARSEMEM_STATIC=y 186CONFIG_SPARSEMEM_STATIC=y
186# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
187CONFIG_PAGEFLAGS_EXTENDED=y 187CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 188CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set 189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set
190CONFIG_ZONE_DMA_FLAG=0 191CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=2 192CONFIG_NR_QUICK=2
193CONFIG_UNEVICTABLE_LRU=y
192 194
193# 195#
194# Cache configuration 196# Cache configuration
@@ -221,7 +223,6 @@ CONFIG_SH_SH4202_MICRODEV=y
221CONFIG_SH_TMU=y 223CONFIG_SH_TMU=y
222CONFIG_SH_TIMER_IRQ=16 224CONFIG_SH_TIMER_IRQ=16
223CONFIG_SH_PCLK_FREQ=66000000 225CONFIG_SH_PCLK_FREQ=66000000
224# CONFIG_TICK_ONESHOT is not set
225# CONFIG_NO_HZ is not set 226# CONFIG_NO_HZ is not set
226# CONFIG_HIGH_RES_TIMERS is not set 227# CONFIG_HIGH_RES_TIMERS is not set
227CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 228CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -260,6 +261,7 @@ CONFIG_HZ=250
260# CONFIG_SCHED_HRTICK is not set 261# CONFIG_SCHED_HRTICK is not set
261# CONFIG_KEXEC is not set 262# CONFIG_KEXEC is not set
262# CONFIG_CRASH_DUMP is not set 263# CONFIG_CRASH_DUMP is not set
264# CONFIG_SECCOMP is not set
263# CONFIG_PREEMPT_NONE is not set 265# CONFIG_PREEMPT_NONE is not set
264# CONFIG_PREEMPT_VOLUNTARY is not set 266# CONFIG_PREEMPT_VOLUNTARY is not set
265CONFIG_PREEMPT=y 267CONFIG_PREEMPT=y
@@ -287,11 +289,9 @@ CONFIG_SUPERHYWAY=y
287# Executable file formats 289# Executable file formats
288# 290#
289CONFIG_BINFMT_ELF=y 291CONFIG_BINFMT_ELF=y
292# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
293# CONFIG_HAVE_AOUT is not set
290# CONFIG_BINFMT_MISC is not set 294# CONFIG_BINFMT_MISC is not set
291
292#
293# Networking
294#
295CONFIG_NET=y 295CONFIG_NET=y
296 296
297# 297#
@@ -340,6 +340,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
340# CONFIG_TIPC is not set 340# CONFIG_TIPC is not set
341# CONFIG_ATM is not set 341# CONFIG_ATM is not set
342# CONFIG_BRIDGE is not set 342# CONFIG_BRIDGE is not set
343# CONFIG_NET_DSA is not set
343# CONFIG_VLAN_8021Q is not set 344# CONFIG_VLAN_8021Q is not set
344# CONFIG_DECNET is not set 345# CONFIG_DECNET is not set
345# CONFIG_LLC2 is not set 346# CONFIG_LLC2 is not set
@@ -360,11 +361,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
360# CONFIG_IRDA is not set 361# CONFIG_IRDA is not set
361# CONFIG_BT is not set 362# CONFIG_BT is not set
362# CONFIG_AF_RXRPC is not set 363# CONFIG_AF_RXRPC is not set
363 364# CONFIG_PHONET is not set
364# 365CONFIG_WIRELESS=y
365# Wireless
366#
367# CONFIG_CFG80211 is not set 366# CONFIG_CFG80211 is not set
367# CONFIG_WIRELESS_OLD_REGULATORY is not set
368# CONFIG_WIRELESS_EXT is not set 368# CONFIG_WIRELESS_EXT is not set
369# CONFIG_MAC80211 is not set 369# CONFIG_MAC80211 is not set
370# CONFIG_IEEE80211 is not set 370# CONFIG_IEEE80211 is not set
@@ -402,19 +402,17 @@ CONFIG_MISC_DEVICES=y
402# CONFIG_ENCLOSURE_SERVICES is not set 402# CONFIG_ENCLOSURE_SERVICES is not set
403CONFIG_HAVE_IDE=y 403CONFIG_HAVE_IDE=y
404CONFIG_IDE=y 404CONFIG_IDE=y
405CONFIG_IDE_MAX_HWIFS=1
406CONFIG_BLK_DEV_IDE=y
407 405
408# 406#
409# Please see Documentation/ide/ide.txt for help/info on IDE drives 407# Please see Documentation/ide/ide.txt for help/info on IDE drives
410# 408#
411# CONFIG_BLK_DEV_IDE_SATA is not set 409# CONFIG_BLK_DEV_IDE_SATA is not set
412CONFIG_BLK_DEV_IDEDISK=y 410CONFIG_IDE_GD=y
413# CONFIG_IDEDISK_MULTI_MODE is not set 411CONFIG_IDE_GD_ATA=y
412# CONFIG_IDE_GD_ATAPI is not set
414CONFIG_BLK_DEV_IDECD=y 413CONFIG_BLK_DEV_IDECD=y
415CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 414CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
416# CONFIG_BLK_DEV_IDETAPE is not set 415# CONFIG_BLK_DEV_IDETAPE is not set
417# CONFIG_BLK_DEV_IDEFLOPPY is not set
418# CONFIG_IDE_TASK_IOCTL is not set 416# CONFIG_IDE_TASK_IOCTL is not set
419CONFIG_IDE_PROC_FS=y 417CONFIG_IDE_PROC_FS=y
420 418
@@ -451,6 +449,9 @@ CONFIG_SMC91X=y
451# CONFIG_IBM_NEW_EMAC_RGMII is not set 449# CONFIG_IBM_NEW_EMAC_RGMII is not set
452# CONFIG_IBM_NEW_EMAC_TAH is not set 450# CONFIG_IBM_NEW_EMAC_TAH is not set
453# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 451# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
452# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
453# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
454# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
454# CONFIG_B44 is not set 455# CONFIG_B44 is not set
455CONFIG_NETDEV_1000=y 456CONFIG_NETDEV_1000=y
456CONFIG_NETDEV_10000=y 457CONFIG_NETDEV_10000=y
@@ -542,6 +543,8 @@ CONFIG_SSB_POSSIBLE=y
542# CONFIG_MFD_CORE is not set 543# CONFIG_MFD_CORE is not set
543# CONFIG_MFD_SM501 is not set 544# CONFIG_MFD_SM501 is not set
544# CONFIG_HTC_PASIC3 is not set 545# CONFIG_HTC_PASIC3 is not set
546# CONFIG_MFD_TMIO is not set
547# CONFIG_MFD_WM8400 is not set
545 548
546# 549#
547# Multimedia devices 550# Multimedia devices
@@ -581,6 +584,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
581# CONFIG_USB_OTG_BLACKLIST_HUB is not set 584# CONFIG_USB_OTG_BLACKLIST_HUB is not set
582 585
583# 586#
587# Enable Host or Gadget support to see Inventra options
588#
589
590#
584# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 591# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
585# 592#
586# CONFIG_USB_GADGET is not set 593# CONFIG_USB_GADGET is not set
@@ -591,6 +598,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
591# CONFIG_RTC_CLASS is not set 598# CONFIG_RTC_CLASS is not set
592# CONFIG_DMADEVICES is not set 599# CONFIG_DMADEVICES is not set
593# CONFIG_UIO is not set 600# CONFIG_UIO is not set
601# CONFIG_STAGING is not set
594 602
595# 603#
596# File systems 604# File systems
@@ -602,12 +610,13 @@ CONFIG_EXT3_FS=y
602CONFIG_EXT3_FS_XATTR=y 610CONFIG_EXT3_FS_XATTR=y
603# CONFIG_EXT3_FS_POSIX_ACL is not set 611# CONFIG_EXT3_FS_POSIX_ACL is not set
604# CONFIG_EXT3_FS_SECURITY is not set 612# CONFIG_EXT3_FS_SECURITY is not set
605# CONFIG_EXT4DEV_FS is not set 613# CONFIG_EXT4_FS is not set
606CONFIG_JBD=y 614CONFIG_JBD=y
607CONFIG_FS_MBCACHE=y 615CONFIG_FS_MBCACHE=y
608# CONFIG_REISERFS_FS is not set 616# CONFIG_REISERFS_FS is not set
609# CONFIG_JFS_FS is not set 617# CONFIG_JFS_FS is not set
610# CONFIG_FS_POSIX_ACL is not set 618# CONFIG_FS_POSIX_ACL is not set
619CONFIG_FILE_LOCKING=y
611# CONFIG_XFS_FS is not set 620# CONFIG_XFS_FS is not set
612# CONFIG_OCFS2_FS is not set 621# CONFIG_OCFS2_FS is not set
613CONFIG_DNOTIFY=y 622CONFIG_DNOTIFY=y
@@ -640,6 +649,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
640CONFIG_PROC_FS=y 649CONFIG_PROC_FS=y
641CONFIG_PROC_KCORE=y 650CONFIG_PROC_KCORE=y
642CONFIG_PROC_SYSCTL=y 651CONFIG_PROC_SYSCTL=y
652CONFIG_PROC_PAGE_MONITOR=y
643CONFIG_SYSFS=y 653CONFIG_SYSFS=y
644CONFIG_TMPFS=y 654CONFIG_TMPFS=y
645# CONFIG_TMPFS_POSIX_ACL is not set 655# CONFIG_TMPFS_POSIX_ACL is not set
@@ -678,6 +688,7 @@ CONFIG_LOCKD_V4=y
678CONFIG_NFS_COMMON=y 688CONFIG_NFS_COMMON=y
679CONFIG_SUNRPC=y 689CONFIG_SUNRPC=y
680CONFIG_SUNRPC_GSS=y 690CONFIG_SUNRPC_GSS=y
691# CONFIG_SUNRPC_REGISTER_V4 is not set
681CONFIG_RPCSEC_GSS_KRB5=y 692CONFIG_RPCSEC_GSS_KRB5=y
682# CONFIG_RPCSEC_GSS_SPKM3 is not set 693# CONFIG_RPCSEC_GSS_SPKM3 is not set
683# CONFIG_SMB_FS is not set 694# CONFIG_SMB_FS is not set
@@ -748,6 +759,11 @@ CONFIG_FRAME_WARN=1024
748# CONFIG_DEBUG_KERNEL is not set 759# CONFIG_DEBUG_KERNEL is not set
749# CONFIG_DEBUG_BUGVERBOSE is not set 760# CONFIG_DEBUG_BUGVERBOSE is not set
750# CONFIG_DEBUG_MEMORY_INIT is not set 761# CONFIG_DEBUG_MEMORY_INIT is not set
762# CONFIG_RCU_CPU_STALL_DETECTOR is not set
763# CONFIG_LATENCYTOP is not set
764CONFIG_NOP_TRACER=y
765CONFIG_HAVE_FTRACE=y
766# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
751# CONFIG_SAMPLES is not set 767# CONFIG_SAMPLES is not set
752# CONFIG_SH_STANDARD_BIOS is not set 768# CONFIG_SH_STANDARD_BIOS is not set
753# CONFIG_EARLY_SCIF_CONSOLE is not set 769# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -758,14 +774,19 @@ CONFIG_FRAME_WARN=1024
758# 774#
759# CONFIG_KEYS is not set 775# CONFIG_KEYS is not set
760# CONFIG_SECURITY is not set 776# CONFIG_SECURITY is not set
777# CONFIG_SECURITYFS is not set
761# CONFIG_SECURITY_FILE_CAPABILITIES is not set 778# CONFIG_SECURITY_FILE_CAPABILITIES is not set
762CONFIG_CRYPTO=y 779CONFIG_CRYPTO=y
763 780
764# 781#
765# Crypto core or helper 782# Crypto core or helper
766# 783#
784# CONFIG_CRYPTO_FIPS is not set
767CONFIG_CRYPTO_ALGAPI=y 785CONFIG_CRYPTO_ALGAPI=y
786CONFIG_CRYPTO_AEAD=y
768CONFIG_CRYPTO_BLKCIPHER=y 787CONFIG_CRYPTO_BLKCIPHER=y
788CONFIG_CRYPTO_HASH=y
789CONFIG_CRYPTO_RNG=y
769CONFIG_CRYPTO_MANAGER=y 790CONFIG_CRYPTO_MANAGER=y
770# CONFIG_CRYPTO_GF128MUL is not set 791# CONFIG_CRYPTO_GF128MUL is not set
771# CONFIG_CRYPTO_NULL is not set 792# CONFIG_CRYPTO_NULL is not set
@@ -837,13 +858,17 @@ CONFIG_CRYPTO_DES=y
837# 858#
838# CONFIG_CRYPTO_DEFLATE is not set 859# CONFIG_CRYPTO_DEFLATE is not set
839# CONFIG_CRYPTO_LZO is not set 860# CONFIG_CRYPTO_LZO is not set
861
862#
863# Random Number Generation
864#
865# CONFIG_CRYPTO_ANSI_CPRNG is not set
840CONFIG_CRYPTO_HW=y 866CONFIG_CRYPTO_HW=y
841 867
842# 868#
843# Library routines 869# Library routines
844# 870#
845CONFIG_BITREVERSE=y 871CONFIG_BITREVERSE=y
846# CONFIG_GENERIC_FIND_FIRST_BIT is not set
847# CONFIG_CRC_CCITT is not set 872# CONFIG_CRC_CCITT is not set
848# CONFIG_CRC16 is not set 873# CONFIG_CRC16 is not set
849# CONFIG_CRC_T10DIF is not set 874# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/migor_defconfig b/arch/sh/configs/migor_defconfig
index 4f8b1974f2c7..624c47aa66d3 100644
--- a/arch/sh/configs/migor_defconfig
+++ b/arch/sh/configs/migor_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.27-rc4 3# Linux kernel version: 2.6.27
4# Tue Aug 26 14:18:17 2008 4# Tue Oct 21 12:57:28 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -13,12 +13,13 @@ CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_GPIO=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_SYS_SUPPORTS_NUMA=y 19CONFIG_SYS_SUPPORTS_NUMA=y
20CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
@@ -70,7 +71,9 @@ CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y 71CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y 72CONFIG_EVENTFD=y
72CONFIG_SHMEM=y 73CONFIG_SHMEM=y
74CONFIG_AIO=y
73CONFIG_VM_EVENT_COUNTERS=y 75CONFIG_VM_EVENT_COUNTERS=y
76CONFIG_PCI_QUIRKS=y
74CONFIG_SLAB=y 77CONFIG_SLAB=y
75# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
76# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
@@ -78,15 +81,12 @@ CONFIG_PROFILING=y
78# CONFIG_MARKERS is not set 81# CONFIG_MARKERS is not set
79CONFIG_OPROFILE=y 82CONFIG_OPROFILE=y
80CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
81# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 84# CONFIG_KPROBES is not set
82# CONFIG_HAVE_IOREMAP_PROT is not set 85CONFIG_HAVE_IOREMAP_PROT=y
83# CONFIG_HAVE_KPROBES is not set 86CONFIG_HAVE_KPROBES=y
84# CONFIG_HAVE_KRETPROBES is not set 87CONFIG_HAVE_KRETPROBES=y
85# CONFIG_HAVE_ARCH_TRACEHOOK is not set 88CONFIG_HAVE_ARCH_TRACEHOOK=y
86# CONFIG_HAVE_DMA_ATTRS is not set
87# CONFIG_USE_GENERIC_SMP_HELPERS is not set
88CONFIG_HAVE_CLK=y 89CONFIG_HAVE_CLK=y
89CONFIG_PROC_PAGE_MONITOR=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
92CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
@@ -118,6 +118,7 @@ CONFIG_DEFAULT_AS=y
118# CONFIG_DEFAULT_NOOP is not set 118# CONFIG_DEFAULT_NOOP is not set
119CONFIG_DEFAULT_IOSCHED="anticipatory" 119CONFIG_DEFAULT_IOSCHED="anticipatory"
120CONFIG_CLASSIC_RCU=y 120CONFIG_CLASSIC_RCU=y
121# CONFIG_FREEZER is not set
121 122
122# 123#
123# System type 124# System type
@@ -179,6 +180,7 @@ CONFIG_MAX_ACTIVE_REGIONS=2
179CONFIG_ARCH_POPULATES_NODE_MAP=y 180CONFIG_ARCH_POPULATES_NODE_MAP=y
180CONFIG_ARCH_SELECT_MEMORY_MODEL=y 181CONFIG_ARCH_SELECT_MEMORY_MODEL=y
181CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 182CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
183CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
182CONFIG_PAGE_SIZE_4KB=y 184CONFIG_PAGE_SIZE_4KB=y
183# CONFIG_PAGE_SIZE_8KB is not set 185# CONFIG_PAGE_SIZE_8KB is not set
184# CONFIG_PAGE_SIZE_16KB is not set 186# CONFIG_PAGE_SIZE_16KB is not set
@@ -192,13 +194,14 @@ CONFIG_SPARSEMEM=y
192CONFIG_NEED_MULTIPLE_NODES=y 194CONFIG_NEED_MULTIPLE_NODES=y
193CONFIG_HAVE_MEMORY_PRESENT=y 195CONFIG_HAVE_MEMORY_PRESENT=y
194CONFIG_SPARSEMEM_STATIC=y 196CONFIG_SPARSEMEM_STATIC=y
195# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
196# CONFIG_MEMORY_HOTPLUG is not set 197# CONFIG_MEMORY_HOTPLUG is not set
197CONFIG_SPLIT_PTLOCK_CPUS=4 198CONFIG_SPLIT_PTLOCK_CPUS=4
198# CONFIG_MIGRATION is not set 199# CONFIG_MIGRATION is not set
199# CONFIG_RESOURCES_64BIT is not set 200# CONFIG_RESOURCES_64BIT is not set
201# CONFIG_PHYS_ADDR_T_64BIT is not set
200CONFIG_ZONE_DMA_FLAG=0 202CONFIG_ZONE_DMA_FLAG=0
201CONFIG_NR_QUICK=2 203CONFIG_NR_QUICK=2
204CONFIG_UNEVICTABLE_LRU=y
202 205
203# 206#
204# Cache configuration 207# Cache configuration
@@ -235,7 +238,6 @@ CONFIG_SH_MIGOR_QVGA=y
235CONFIG_SH_TMU=y 238CONFIG_SH_TMU=y
236CONFIG_SH_TIMER_IRQ=16 239CONFIG_SH_TIMER_IRQ=16
237CONFIG_SH_PCLK_FREQ=33333333 240CONFIG_SH_PCLK_FREQ=33333333
238# CONFIG_TICK_ONESHOT is not set
239# CONFIG_NO_HZ is not set 241# CONFIG_NO_HZ is not set
240# CONFIG_HIGH_RES_TIMERS is not set 242# CONFIG_HIGH_RES_TIMERS is not set
241CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 243CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -295,6 +297,8 @@ CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=serial ip=on"
295# Executable file formats 297# Executable file formats
296# 298#
297CONFIG_BINFMT_ELF=y 299CONFIG_BINFMT_ELF=y
300# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
301# CONFIG_HAVE_AOUT is not set
298# CONFIG_BINFMT_MISC is not set 302# CONFIG_BINFMT_MISC is not set
299CONFIG_NET=y 303CONFIG_NET=y
300 304
@@ -345,6 +349,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
345# CONFIG_TIPC is not set 349# CONFIG_TIPC is not set
346# CONFIG_ATM is not set 350# CONFIG_ATM is not set
347# CONFIG_BRIDGE is not set 351# CONFIG_BRIDGE is not set
352# CONFIG_NET_DSA is not set
348# CONFIG_VLAN_8021Q is not set 353# CONFIG_VLAN_8021Q is not set
349# CONFIG_DECNET is not set 354# CONFIG_DECNET is not set
350# CONFIG_LLC2 is not set 355# CONFIG_LLC2 is not set
@@ -365,11 +370,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
365# CONFIG_IRDA is not set 370# CONFIG_IRDA is not set
366# CONFIG_BT is not set 371# CONFIG_BT is not set
367# CONFIG_AF_RXRPC is not set 372# CONFIG_AF_RXRPC is not set
368 373# CONFIG_PHONET is not set
369# 374CONFIG_WIRELESS=y
370# Wireless
371#
372# CONFIG_CFG80211 is not set 375# CONFIG_CFG80211 is not set
376# CONFIG_WIRELESS_OLD_REGULATORY is not set
373CONFIG_WIRELESS_EXT=y 377CONFIG_WIRELESS_EXT=y
374CONFIG_WIRELESS_EXT_SYSFS=y 378CONFIG_WIRELESS_EXT_SYSFS=y
375# CONFIG_MAC80211 is not set 379# CONFIG_MAC80211 is not set
@@ -555,6 +559,9 @@ CONFIG_SMC91X=y
555# CONFIG_IBM_NEW_EMAC_RGMII is not set 559# CONFIG_IBM_NEW_EMAC_RGMII is not set
556# CONFIG_IBM_NEW_EMAC_TAH is not set 560# CONFIG_IBM_NEW_EMAC_TAH is not set
557# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 561# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
562# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
563# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
564# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
558# CONFIG_B44 is not set 565# CONFIG_B44 is not set
559# CONFIG_NETDEV_1000 is not set 566# CONFIG_NETDEV_1000 is not set
560# CONFIG_NETDEV_10000 is not set 567# CONFIG_NETDEV_10000 is not set
@@ -599,6 +606,7 @@ CONFIG_INPUT_KEYBOARD=y
599# CONFIG_KEYBOARD_XTKBD is not set 606# CONFIG_KEYBOARD_XTKBD is not set
600# CONFIG_KEYBOARD_NEWTON is not set 607# CONFIG_KEYBOARD_NEWTON is not set
601# CONFIG_KEYBOARD_STOWAWAY is not set 608# CONFIG_KEYBOARD_STOWAWAY is not set
609# CONFIG_KEYBOARD_GPIO is not set
602CONFIG_KEYBOARD_SH_KEYSC=y 610CONFIG_KEYBOARD_SH_KEYSC=y
603# CONFIG_INPUT_MOUSE is not set 611# CONFIG_INPUT_MOUSE is not set
604# CONFIG_INPUT_JOYSTICK is not set 612# CONFIG_INPUT_JOYSTICK is not set
@@ -656,6 +664,7 @@ CONFIG_I2C_HELPER_AUTO=y
656# 664#
657# I2C system bus drivers (mostly embedded / system-on-chip) 665# I2C system bus drivers (mostly embedded / system-on-chip)
658# 666#
667# CONFIG_I2C_GPIO is not set
659# CONFIG_I2C_OCORES is not set 668# CONFIG_I2C_OCORES is not set
660CONFIG_I2C_SH_MOBILE=y 669CONFIG_I2C_SH_MOBILE=y
661# CONFIG_I2C_SIMTEC is not set 670# CONFIG_I2C_SIMTEC is not set
@@ -709,6 +718,8 @@ CONFIG_SSB_POSSIBLE=y
709# CONFIG_MFD_SM501 is not set 718# CONFIG_MFD_SM501 is not set
710# CONFIG_HTC_PASIC3 is not set 719# CONFIG_HTC_PASIC3 is not set
711# CONFIG_MFD_TMIO is not set 720# CONFIG_MFD_TMIO is not set
721# CONFIG_MFD_WM8400 is not set
722# CONFIG_MFD_WM8350_I2C is not set
712 723
713# 724#
714# Multimedia devices 725# Multimedia devices
@@ -717,13 +728,44 @@ CONFIG_SSB_POSSIBLE=y
717# 728#
718# Multimedia core support 729# Multimedia core support
719# 730#
720# CONFIG_VIDEO_DEV is not set 731CONFIG_VIDEO_DEV=y
732CONFIG_VIDEO_V4L2_COMMON=y
733# CONFIG_VIDEO_ALLOW_V4L1 is not set
734CONFIG_VIDEO_V4L1_COMPAT=y
721# CONFIG_DVB_CORE is not set 735# CONFIG_DVB_CORE is not set
722# CONFIG_VIDEO_MEDIA is not set 736CONFIG_VIDEO_MEDIA=y
723 737
724# 738#
725# Multimedia drivers 739# Multimedia drivers
726# 740#
741# CONFIG_MEDIA_ATTACH is not set
742CONFIG_MEDIA_TUNER=y
743# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
744CONFIG_MEDIA_TUNER_SIMPLE=y
745CONFIG_MEDIA_TUNER_TDA8290=y
746CONFIG_MEDIA_TUNER_TDA9887=y
747CONFIG_MEDIA_TUNER_TEA5761=y
748CONFIG_MEDIA_TUNER_TEA5767=y
749CONFIG_MEDIA_TUNER_MT20XX=y
750CONFIG_MEDIA_TUNER_XC2028=y
751CONFIG_MEDIA_TUNER_XC5000=y
752CONFIG_VIDEO_V4L2=y
753CONFIG_VIDEOBUF_GEN=y
754CONFIG_VIDEOBUF_DMA_CONTIG=y
755CONFIG_VIDEO_CAPTURE_DRIVERS=y
756# CONFIG_VIDEO_ADV_DEBUG is not set
757# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
758CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
759# CONFIG_VIDEO_VIVI is not set
760# CONFIG_VIDEO_SAA5246A is not set
761# CONFIG_VIDEO_SAA5249 is not set
762CONFIG_SOC_CAMERA=y
763# CONFIG_SOC_CAMERA_MT9M001 is not set
764# CONFIG_SOC_CAMERA_MT9M111 is not set
765# CONFIG_SOC_CAMERA_MT9V022 is not set
766CONFIG_SOC_CAMERA_PLATFORM=y
767CONFIG_VIDEO_SH_MOBILE_CEU=y
768# CONFIG_RADIO_ADAPTERS is not set
727# CONFIG_DAB is not set 769# CONFIG_DAB is not set
728 770
729# 771#
@@ -748,6 +790,12 @@ CONFIG_HID_SUPPORT=y
748CONFIG_HID=y 790CONFIG_HID=y
749# CONFIG_HID_DEBUG is not set 791# CONFIG_HID_DEBUG is not set
750# CONFIG_HIDRAW is not set 792# CONFIG_HIDRAW is not set
793# CONFIG_HID_PID is not set
794
795#
796# Special HID drivers
797#
798CONFIG_HID_COMPAT=y
751CONFIG_USB_SUPPORT=y 799CONFIG_USB_SUPPORT=y
752CONFIG_USB_ARCH_HAS_HCD=y 800CONFIG_USB_ARCH_HAS_HCD=y
753# CONFIG_USB_ARCH_HAS_OHCI is not set 801# CONFIG_USB_ARCH_HAS_OHCI is not set
@@ -755,7 +803,6 @@ CONFIG_USB_ARCH_HAS_HCD=y
755# CONFIG_USB is not set 803# CONFIG_USB is not set
756# CONFIG_USB_OTG_WHITELIST is not set 804# CONFIG_USB_OTG_WHITELIST is not set
757# CONFIG_USB_OTG_BLACKLIST_HUB is not set 805# CONFIG_USB_OTG_BLACKLIST_HUB is not set
758# CONFIG_USB_MUSB_HDRC is not set
759# CONFIG_USB_GADGET_MUSB_HDRC is not set 806# CONFIG_USB_GADGET_MUSB_HDRC is not set
760 807
761# 808#
@@ -764,21 +811,23 @@ CONFIG_USB_ARCH_HAS_HCD=y
764CONFIG_USB_GADGET=y 811CONFIG_USB_GADGET=y
765# CONFIG_USB_GADGET_DEBUG_FILES is not set 812# CONFIG_USB_GADGET_DEBUG_FILES is not set
766# CONFIG_USB_GADGET_DEBUG_FS is not set 813# CONFIG_USB_GADGET_DEBUG_FS is not set
814CONFIG_USB_GADGET_VBUS_DRAW=2
767CONFIG_USB_GADGET_SELECTED=y 815CONFIG_USB_GADGET_SELECTED=y
768# CONFIG_USB_GADGET_AMD5536UDC is not set 816# CONFIG_USB_GADGET_AT91 is not set
769# CONFIG_USB_GADGET_ATMEL_USBA is not set 817# CONFIG_USB_GADGET_ATMEL_USBA is not set
770# CONFIG_USB_GADGET_FSL_USB2 is not set 818# CONFIG_USB_GADGET_FSL_USB2 is not set
771# CONFIG_USB_GADGET_NET2280 is not set 819# CONFIG_USB_GADGET_LH7A40X is not set
820# CONFIG_USB_GADGET_OMAP is not set
772# CONFIG_USB_GADGET_PXA25X is not set 821# CONFIG_USB_GADGET_PXA25X is not set
822# CONFIG_USB_GADGET_PXA27X is not set
823# CONFIG_USB_GADGET_S3C2410 is not set
773CONFIG_USB_GADGET_M66592=y 824CONFIG_USB_GADGET_M66592=y
774CONFIG_USB_M66592=y 825CONFIG_USB_M66592=y
775CONFIG_SUPERH_BUILT_IN_M66592=y 826CONFIG_SUPERH_BUILT_IN_M66592=y
776# CONFIG_USB_GADGET_PXA27X is not set 827# CONFIG_USB_GADGET_AMD5536UDC is not set
828# CONFIG_USB_GADGET_FSL_QE is not set
829# CONFIG_USB_GADGET_NET2280 is not set
777# CONFIG_USB_GADGET_GOKU is not set 830# CONFIG_USB_GADGET_GOKU is not set
778# CONFIG_USB_GADGET_LH7A40X is not set
779# CONFIG_USB_GADGET_OMAP is not set
780# CONFIG_USB_GADGET_S3C2410 is not set
781# CONFIG_USB_GADGET_AT91 is not set
782# CONFIG_USB_GADGET_DUMMY_HCD is not set 831# CONFIG_USB_GADGET_DUMMY_HCD is not set
783CONFIG_USB_GADGET_DUALSPEED=y 832CONFIG_USB_GADGET_DUALSPEED=y
784# CONFIG_USB_ZERO is not set 833# CONFIG_USB_ZERO is not set
@@ -831,12 +880,15 @@ CONFIG_RTC_DRV_RS5C372=y
831# 880#
832# Platform RTC drivers 881# Platform RTC drivers
833# 882#
883# CONFIG_RTC_DRV_DS1286 is not set
834# CONFIG_RTC_DRV_DS1511 is not set 884# CONFIG_RTC_DRV_DS1511 is not set
835# CONFIG_RTC_DRV_DS1553 is not set 885# CONFIG_RTC_DRV_DS1553 is not set
836# CONFIG_RTC_DRV_DS1742 is not set 886# CONFIG_RTC_DRV_DS1742 is not set
837# CONFIG_RTC_DRV_STK17TA8 is not set 887# CONFIG_RTC_DRV_STK17TA8 is not set
838# CONFIG_RTC_DRV_M48T86 is not set 888# CONFIG_RTC_DRV_M48T86 is not set
889# CONFIG_RTC_DRV_M48T35 is not set
839# CONFIG_RTC_DRV_M48T59 is not set 890# CONFIG_RTC_DRV_M48T59 is not set
891# CONFIG_RTC_DRV_BQ4802 is not set
840# CONFIG_RTC_DRV_V3020 is not set 892# CONFIG_RTC_DRV_V3020 is not set
841 893
842# 894#
@@ -848,16 +900,19 @@ CONFIG_UIO=y
848# CONFIG_UIO_PDRV is not set 900# CONFIG_UIO_PDRV is not set
849CONFIG_UIO_PDRV_GENIRQ=y 901CONFIG_UIO_PDRV_GENIRQ=y
850# CONFIG_UIO_SMX is not set 902# CONFIG_UIO_SMX is not set
903# CONFIG_UIO_SERCOS3 is not set
904# CONFIG_STAGING is not set
851 905
852# 906#
853# File systems 907# File systems
854# 908#
855# CONFIG_EXT2_FS is not set 909# CONFIG_EXT2_FS is not set
856# CONFIG_EXT3_FS is not set 910# CONFIG_EXT3_FS is not set
857# CONFIG_EXT4DEV_FS is not set 911# CONFIG_EXT4_FS is not set
858# CONFIG_REISERFS_FS is not set 912# CONFIG_REISERFS_FS is not set
859# CONFIG_JFS_FS is not set 913# CONFIG_JFS_FS is not set
860# CONFIG_FS_POSIX_ACL is not set 914# CONFIG_FS_POSIX_ACL is not set
915CONFIG_FILE_LOCKING=y
861# CONFIG_XFS_FS is not set 916# CONFIG_XFS_FS is not set
862# CONFIG_OCFS2_FS is not set 917# CONFIG_OCFS2_FS is not set
863# CONFIG_DNOTIFY is not set 918# CONFIG_DNOTIFY is not set
@@ -886,6 +941,7 @@ CONFIG_UIO_PDRV_GENIRQ=y
886CONFIG_PROC_FS=y 941CONFIG_PROC_FS=y
887CONFIG_PROC_KCORE=y 942CONFIG_PROC_KCORE=y
888CONFIG_PROC_SYSCTL=y 943CONFIG_PROC_SYSCTL=y
944CONFIG_PROC_PAGE_MONITOR=y
889CONFIG_SYSFS=y 945CONFIG_SYSFS=y
890CONFIG_TMPFS=y 946CONFIG_TMPFS=y
891# CONFIG_TMPFS_POSIX_ACL is not set 947# CONFIG_TMPFS_POSIX_ACL is not set
@@ -938,6 +994,11 @@ CONFIG_DEBUG_FS=y
938# CONFIG_DEBUG_KERNEL is not set 994# CONFIG_DEBUG_KERNEL is not set
939# CONFIG_DEBUG_BUGVERBOSE is not set 995# CONFIG_DEBUG_BUGVERBOSE is not set
940# CONFIG_DEBUG_MEMORY_INIT is not set 996# CONFIG_DEBUG_MEMORY_INIT is not set
997# CONFIG_RCU_CPU_STALL_DETECTOR is not set
998# CONFIG_LATENCYTOP is not set
999CONFIG_NOP_TRACER=y
1000CONFIG_HAVE_FTRACE=y
1001# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
941# CONFIG_SAMPLES is not set 1002# CONFIG_SAMPLES is not set
942# CONFIG_SH_STANDARD_BIOS is not set 1003# CONFIG_SH_STANDARD_BIOS is not set
943CONFIG_EARLY_SCIF_CONSOLE=y 1004CONFIG_EARLY_SCIF_CONSOLE=y
@@ -950,12 +1011,14 @@ CONFIG_EARLY_PRINTK=y
950# 1011#
951# CONFIG_KEYS is not set 1012# CONFIG_KEYS is not set
952# CONFIG_SECURITY is not set 1013# CONFIG_SECURITY is not set
1014# CONFIG_SECURITYFS is not set
953# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1015# CONFIG_SECURITY_FILE_CAPABILITIES is not set
954CONFIG_CRYPTO=y 1016CONFIG_CRYPTO=y
955 1017
956# 1018#
957# Crypto core or helper 1019# Crypto core or helper
958# 1020#
1021# CONFIG_CRYPTO_FIPS is not set
959# CONFIG_CRYPTO_MANAGER is not set 1022# CONFIG_CRYPTO_MANAGER is not set
960# CONFIG_CRYPTO_GF128MUL is not set 1023# CONFIG_CRYPTO_GF128MUL is not set
961# CONFIG_CRYPTO_NULL is not set 1024# CONFIG_CRYPTO_NULL is not set
@@ -1028,13 +1091,17 @@ CONFIG_CRYPTO=y
1028# 1091#
1029# CONFIG_CRYPTO_DEFLATE is not set 1092# CONFIG_CRYPTO_DEFLATE is not set
1030# CONFIG_CRYPTO_LZO is not set 1093# CONFIG_CRYPTO_LZO is not set
1094
1095#
1096# Random Number Generation
1097#
1098# CONFIG_CRYPTO_ANSI_CPRNG is not set
1031CONFIG_CRYPTO_HW=y 1099CONFIG_CRYPTO_HW=y
1032 1100
1033# 1101#
1034# Library routines 1102# Library routines
1035# 1103#
1036CONFIG_BITREVERSE=y 1104CONFIG_BITREVERSE=y
1037# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1038# CONFIG_CRC_CCITT is not set 1105# CONFIG_CRC_CCITT is not set
1039# CONFIG_CRC16 is not set 1106# CONFIG_CRC16 is not set
1040CONFIG_CRC_T10DIF=y 1107CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig
index 57a300797584..2e65149e9502 100644
--- a/arch/sh/configs/r7780mp_defconfig
+++ b/arch/sh/configs/r7780mp_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:51:13 2008 4# Wed Oct 22 20:03:46 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,17 +11,18 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
19CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_IO_TRAPPED=y 26CONFIG_IO_TRAPPED=y
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
27 28
@@ -77,7 +78,9 @@ CONFIG_SIGNALFD=y
77CONFIG_TIMERFD=y 78CONFIG_TIMERFD=y
78CONFIG_EVENTFD=y 79CONFIG_EVENTFD=y
79CONFIG_SHMEM=y 80CONFIG_SHMEM=y
81CONFIG_AIO=y
80CONFIG_VM_EVENT_COUNTERS=y 82CONFIG_VM_EVENT_COUNTERS=y
83CONFIG_PCI_QUIRKS=y
81CONFIG_SLAB=y 84CONFIG_SLAB=y
82# CONFIG_SLUB is not set 85# CONFIG_SLUB is not set
83# CONFIG_SLOB is not set 86# CONFIG_SLOB is not set
@@ -85,15 +88,13 @@ CONFIG_PROFILING=y
85# CONFIG_MARKERS is not set 88# CONFIG_MARKERS is not set
86CONFIG_OPROFILE=m 89CONFIG_OPROFILE=m
87CONFIG_HAVE_OPROFILE=y 90CONFIG_HAVE_OPROFILE=y
88# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 91# CONFIG_KPROBES is not set
89# CONFIG_HAVE_IOREMAP_PROT is not set 92CONFIG_HAVE_IOREMAP_PROT=y
90# CONFIG_HAVE_KPROBES is not set 93CONFIG_HAVE_KPROBES=y
91# CONFIG_HAVE_KRETPROBES is not set 94CONFIG_HAVE_KRETPROBES=y
92# CONFIG_HAVE_ARCH_TRACEHOOK is not set 95CONFIG_HAVE_ARCH_TRACEHOOK=y
93# CONFIG_HAVE_DMA_ATTRS is not set
94# CONFIG_USE_GENERIC_SMP_HELPERS is not set
95CONFIG_HAVE_CLK=y 96CONFIG_HAVE_CLK=y
96CONFIG_PROC_PAGE_MONITOR=y 97CONFIG_HAVE_GENERIC_DMA_COHERENT=y
97CONFIG_SLABINFO=y 98CONFIG_SLABINFO=y
98# CONFIG_TINY_SHMEM is not set 99# CONFIG_TINY_SHMEM is not set
99CONFIG_BASE_SMALL=0 100CONFIG_BASE_SMALL=0
@@ -124,6 +125,7 @@ CONFIG_IOSCHED_NOOP=y
124CONFIG_DEFAULT_NOOP=y 125CONFIG_DEFAULT_NOOP=y
125CONFIG_DEFAULT_IOSCHED="noop" 126CONFIG_DEFAULT_IOSCHED="noop"
126CONFIG_CLASSIC_RCU=y 127CONFIG_CLASSIC_RCU=y
128# CONFIG_FREEZER is not set
127 129
128# 130#
129# System type 131# System type
@@ -199,12 +201,13 @@ CONFIG_FLATMEM_MANUAL=y
199CONFIG_FLATMEM=y 201CONFIG_FLATMEM=y
200CONFIG_FLAT_NODE_MEM_MAP=y 202CONFIG_FLAT_NODE_MEM_MAP=y
201CONFIG_SPARSEMEM_STATIC=y 203CONFIG_SPARSEMEM_STATIC=y
202# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
203CONFIG_PAGEFLAGS_EXTENDED=y 204CONFIG_PAGEFLAGS_EXTENDED=y
204CONFIG_SPLIT_PTLOCK_CPUS=4 205CONFIG_SPLIT_PTLOCK_CPUS=4
205# CONFIG_RESOURCES_64BIT is not set 206# CONFIG_RESOURCES_64BIT is not set
207# CONFIG_PHYS_ADDR_T_64BIT is not set
206CONFIG_ZONE_DMA_FLAG=0 208CONFIG_ZONE_DMA_FLAG=0
207CONFIG_NR_QUICK=2 209CONFIG_NR_QUICK=2
210CONFIG_UNEVICTABLE_LRU=y
208 211
209# 212#
210# Cache configuration 213# Cache configuration
@@ -242,7 +245,6 @@ CONFIG_SH_R7780MP=y
242CONFIG_SH_TMU=y 245CONFIG_SH_TMU=y
243CONFIG_SH_TIMER_IRQ=28 246CONFIG_SH_TIMER_IRQ=28
244CONFIG_SH_PCLK_FREQ=32000000 247CONFIG_SH_PCLK_FREQ=32000000
245# CONFIG_TICK_ONESHOT is not set
246# CONFIG_NO_HZ is not set 248# CONFIG_NO_HZ is not set
247# CONFIG_HIGH_RES_TIMERS is not set 249# CONFIG_HIGH_RES_TIMERS is not set
248CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 250CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -278,6 +280,7 @@ CONFIG_HZ=250
278# CONFIG_SCHED_HRTICK is not set 280# CONFIG_SCHED_HRTICK is not set
279CONFIG_KEXEC=y 281CONFIG_KEXEC=y
280# CONFIG_CRASH_DUMP is not set 282# CONFIG_CRASH_DUMP is not set
283# CONFIG_SECCOMP is not set
281# CONFIG_PREEMPT_NONE is not set 284# CONFIG_PREEMPT_NONE is not set
282# CONFIG_PREEMPT_VOLUNTARY is not set 285# CONFIG_PREEMPT_VOLUNTARY is not set
283CONFIG_PREEMPT=y 286CONFIG_PREEMPT=y
@@ -309,11 +312,9 @@ CONFIG_PCI_LEGACY=y
309# Executable file formats 312# Executable file formats
310# 313#
311CONFIG_BINFMT_ELF=y 314CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set
312# CONFIG_BINFMT_MISC is not set 317# CONFIG_BINFMT_MISC is not set
313
314#
315# Networking
316#
317CONFIG_NET=y 318CONFIG_NET=y
318 319
319# 320#
@@ -369,6 +370,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_ATM is not set 370# CONFIG_ATM is not set
370CONFIG_STP=m 371CONFIG_STP=m
371CONFIG_BRIDGE=m 372CONFIG_BRIDGE=m
373# CONFIG_NET_DSA is not set
372# CONFIG_VLAN_8021Q is not set 374# CONFIG_VLAN_8021Q is not set
373# CONFIG_DECNET is not set 375# CONFIG_DECNET is not set
374CONFIG_LLC=m 376CONFIG_LLC=m
@@ -390,11 +392,10 @@ CONFIG_LLC=m
390# CONFIG_IRDA is not set 392# CONFIG_IRDA is not set
391# CONFIG_BT is not set 393# CONFIG_BT is not set
392# CONFIG_AF_RXRPC is not set 394# CONFIG_AF_RXRPC is not set
393 395# CONFIG_PHONET is not set
394# 396CONFIG_WIRELESS=y
395# Wireless
396#
397# CONFIG_CFG80211 is not set 397# CONFIG_CFG80211 is not set
398# CONFIG_WIRELESS_OLD_REGULATORY is not set
398CONFIG_WIRELESS_EXT=y 399CONFIG_WIRELESS_EXT=y
399CONFIG_WIRELESS_EXT_SYSFS=y 400CONFIG_WIRELESS_EXT_SYSFS=y
400# CONFIG_MAC80211 is not set 401# CONFIG_MAC80211 is not set
@@ -616,6 +617,9 @@ CONFIG_AX88796_93CX6=y
616# CONFIG_IBM_NEW_EMAC_RGMII is not set 617# CONFIG_IBM_NEW_EMAC_RGMII is not set
617# CONFIG_IBM_NEW_EMAC_TAH is not set 618# CONFIG_IBM_NEW_EMAC_TAH is not set
618# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 619# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
620# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
621# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
622# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
619CONFIG_NET_PCI=y 623CONFIG_NET_PCI=y
620CONFIG_PCNET32=m 624CONFIG_PCNET32=m
621# CONFIG_AMD8111_ETH is not set 625# CONFIG_AMD8111_ETH is not set
@@ -641,11 +645,11 @@ CONFIG_8139TOO_8129=y
641CONFIG_VIA_RHINE=m 645CONFIG_VIA_RHINE=m
642CONFIG_VIA_RHINE_MMIO=y 646CONFIG_VIA_RHINE_MMIO=y
643# CONFIG_SC92031 is not set 647# CONFIG_SC92031 is not set
648# CONFIG_ATL2 is not set
644CONFIG_NETDEV_1000=y 649CONFIG_NETDEV_1000=y
645# CONFIG_ACENIC is not set 650# CONFIG_ACENIC is not set
646# CONFIG_DL2K is not set 651# CONFIG_DL2K is not set
647CONFIG_E1000=m 652CONFIG_E1000=m
648# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
649# CONFIG_E1000E is not set 653# CONFIG_E1000E is not set
650# CONFIG_IP1000 is not set 654# CONFIG_IP1000 is not set
651# CONFIG_IGB is not set 655# CONFIG_IGB is not set
@@ -662,9 +666,11 @@ CONFIG_R8169=y
662# CONFIG_QLA3XXX is not set 666# CONFIG_QLA3XXX is not set
663# CONFIG_ATL1 is not set 667# CONFIG_ATL1 is not set
664# CONFIG_ATL1E is not set 668# CONFIG_ATL1E is not set
669# CONFIG_JME is not set
665CONFIG_NETDEV_10000=y 670CONFIG_NETDEV_10000=y
666# CONFIG_CHELSIO_T1 is not set 671# CONFIG_CHELSIO_T1 is not set
667# CONFIG_CHELSIO_T3 is not set 672# CONFIG_CHELSIO_T3 is not set
673# CONFIG_ENIC is not set
668# CONFIG_IXGBE is not set 674# CONFIG_IXGBE is not set
669# CONFIG_IXGB is not set 675# CONFIG_IXGB is not set
670# CONFIG_S2IO is not set 676# CONFIG_S2IO is not set
@@ -674,6 +680,7 @@ CONFIG_NETDEV_10000=y
674# CONFIG_MLX4_CORE is not set 680# CONFIG_MLX4_CORE is not set
675# CONFIG_TEHUTI is not set 681# CONFIG_TEHUTI is not set
676# CONFIG_BNX2X is not set 682# CONFIG_BNX2X is not set
683# CONFIG_QLGE is not set
677# CONFIG_SFC is not set 684# CONFIG_SFC is not set
678# CONFIG_TR is not set 685# CONFIG_TR is not set
679 686
@@ -773,24 +780,129 @@ CONFIG_HW_RANDOM=y
773# CONFIG_RAW_DRIVER is not set 780# CONFIG_RAW_DRIVER is not set
774# CONFIG_TCG_TPM is not set 781# CONFIG_TCG_TPM is not set
775CONFIG_DEVPORT=y 782CONFIG_DEVPORT=y
776# CONFIG_I2C is not set 783CONFIG_I2C=y
784CONFIG_I2C_BOARDINFO=y
785CONFIG_I2C_CHARDEV=y
786CONFIG_I2C_HELPER_AUTO=y
787
788#
789# I2C Hardware Bus support
790#
791
792#
793# PC SMBus host controller drivers
794#
795# CONFIG_I2C_ALI1535 is not set
796# CONFIG_I2C_ALI1563 is not set
797# CONFIG_I2C_ALI15X3 is not set
798# CONFIG_I2C_AMD756 is not set
799# CONFIG_I2C_AMD8111 is not set
800# CONFIG_I2C_I801 is not set
801# CONFIG_I2C_ISCH is not set
802# CONFIG_I2C_PIIX4 is not set
803# CONFIG_I2C_NFORCE2 is not set
804# CONFIG_I2C_SIS5595 is not set
805# CONFIG_I2C_SIS630 is not set
806# CONFIG_I2C_SIS96X is not set
807# CONFIG_I2C_VIA is not set
808# CONFIG_I2C_VIAPRO is not set
809
810#
811# I2C system bus drivers (mostly embedded / system-on-chip)
812#
813CONFIG_I2C_HIGHLANDER=y
814# CONFIG_I2C_OCORES is not set
815# CONFIG_I2C_SH_MOBILE is not set
816# CONFIG_I2C_SIMTEC is not set
817
818#
819# External I2C/SMBus adapter drivers
820#
821# CONFIG_I2C_PARPORT_LIGHT is not set
822# CONFIG_I2C_TAOS_EVM is not set
823
824#
825# Graphics adapter I2C/DDC channel drivers
826#
827# CONFIG_I2C_VOODOO3 is not set
828
829#
830# Other I2C/SMBus bus drivers
831#
832# CONFIG_I2C_PCA_PLATFORM is not set
833# CONFIG_I2C_STUB is not set
834
835#
836# Miscellaneous I2C Chip support
837#
838# CONFIG_DS1682 is not set
839# CONFIG_AT24 is not set
840# CONFIG_SENSORS_EEPROM is not set
841# CONFIG_SENSORS_PCF8574 is not set
842# CONFIG_PCF8575 is not set
843# CONFIG_SENSORS_PCA9539 is not set
844# CONFIG_SENSORS_PCF8591 is not set
845# CONFIG_SENSORS_MAX6875 is not set
846# CONFIG_SENSORS_TSL2550 is not set
847# CONFIG_I2C_DEBUG_CORE is not set
848# CONFIG_I2C_DEBUG_ALGO is not set
849# CONFIG_I2C_DEBUG_BUS is not set
850# CONFIG_I2C_DEBUG_CHIP is not set
777# CONFIG_SPI is not set 851# CONFIG_SPI is not set
778# CONFIG_W1 is not set 852# CONFIG_W1 is not set
779# CONFIG_POWER_SUPPLY is not set 853# CONFIG_POWER_SUPPLY is not set
780CONFIG_HWMON=y 854CONFIG_HWMON=y
781# CONFIG_HWMON_VID is not set 855# CONFIG_HWMON_VID is not set
856# CONFIG_SENSORS_AD7414 is not set
857# CONFIG_SENSORS_AD7418 is not set
858# CONFIG_SENSORS_ADM1021 is not set
859# CONFIG_SENSORS_ADM1025 is not set
860# CONFIG_SENSORS_ADM1026 is not set
861# CONFIG_SENSORS_ADM1029 is not set
862# CONFIG_SENSORS_ADM1031 is not set
863# CONFIG_SENSORS_ADM9240 is not set
864# CONFIG_SENSORS_ADT7470 is not set
865# CONFIG_SENSORS_ADT7473 is not set
866# CONFIG_SENSORS_ATXP1 is not set
867# CONFIG_SENSORS_DS1621 is not set
782# CONFIG_SENSORS_I5K_AMB is not set 868# CONFIG_SENSORS_I5K_AMB is not set
783# CONFIG_SENSORS_F71805F is not set 869# CONFIG_SENSORS_F71805F is not set
784# CONFIG_SENSORS_F71882FG is not set 870# CONFIG_SENSORS_F71882FG is not set
871# CONFIG_SENSORS_F75375S is not set
872# CONFIG_SENSORS_GL518SM is not set
873# CONFIG_SENSORS_GL520SM is not set
785# CONFIG_SENSORS_IT87 is not set 874# CONFIG_SENSORS_IT87 is not set
875# CONFIG_SENSORS_LM63 is not set
876# CONFIG_SENSORS_LM75 is not set
877# CONFIG_SENSORS_LM77 is not set
878# CONFIG_SENSORS_LM78 is not set
879# CONFIG_SENSORS_LM80 is not set
880# CONFIG_SENSORS_LM83 is not set
881# CONFIG_SENSORS_LM85 is not set
882# CONFIG_SENSORS_LM87 is not set
883# CONFIG_SENSORS_LM90 is not set
884# CONFIG_SENSORS_LM92 is not set
885# CONFIG_SENSORS_LM93 is not set
886# CONFIG_SENSORS_MAX1619 is not set
887# CONFIG_SENSORS_MAX6650 is not set
786# CONFIG_SENSORS_PC87360 is not set 888# CONFIG_SENSORS_PC87360 is not set
787# CONFIG_SENSORS_PC87427 is not set 889# CONFIG_SENSORS_PC87427 is not set
788# CONFIG_SENSORS_SIS5595 is not set 890# CONFIG_SENSORS_SIS5595 is not set
891# CONFIG_SENSORS_DME1737 is not set
789# CONFIG_SENSORS_SMSC47M1 is not set 892# CONFIG_SENSORS_SMSC47M1 is not set
893# CONFIG_SENSORS_SMSC47M192 is not set
790# CONFIG_SENSORS_SMSC47B397 is not set 894# CONFIG_SENSORS_SMSC47B397 is not set
895# CONFIG_SENSORS_ADS7828 is not set
896# CONFIG_SENSORS_THMC50 is not set
791# CONFIG_SENSORS_VIA686A is not set 897# CONFIG_SENSORS_VIA686A is not set
792# CONFIG_SENSORS_VT1211 is not set 898# CONFIG_SENSORS_VT1211 is not set
793# CONFIG_SENSORS_VT8231 is not set 899# CONFIG_SENSORS_VT8231 is not set
900# CONFIG_SENSORS_W83781D is not set
901# CONFIG_SENSORS_W83791D is not set
902# CONFIG_SENSORS_W83792D is not set
903# CONFIG_SENSORS_W83793 is not set
904# CONFIG_SENSORS_W83L785TS is not set
905# CONFIG_SENSORS_W83L786NG is not set
794# CONFIG_SENSORS_W83627HF is not set 906# CONFIG_SENSORS_W83627HF is not set
795# CONFIG_SENSORS_W83627EHF is not set 907# CONFIG_SENSORS_W83627EHF is not set
796# CONFIG_HWMON_DEBUG_CHIP is not set 908# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -810,6 +922,9 @@ CONFIG_SSB_POSSIBLE=y
810# CONFIG_MFD_CORE is not set 922# CONFIG_MFD_CORE is not set
811# CONFIG_MFD_SM501 is not set 923# CONFIG_MFD_SM501 is not set
812# CONFIG_HTC_PASIC3 is not set 924# CONFIG_HTC_PASIC3 is not set
925# CONFIG_MFD_TMIO is not set
926# CONFIG_MFD_WM8400 is not set
927# CONFIG_MFD_WM8350_I2C is not set
813 928
814# 929#
815# Multimedia devices 930# Multimedia devices
@@ -841,12 +956,19 @@ CONFIG_DAB=y
841# 956#
842# CONFIG_DISPLAY_SUPPORT is not set 957# CONFIG_DISPLAY_SUPPORT is not set
843CONFIG_SOUND=m 958CONFIG_SOUND=m
959CONFIG_SOUND_OSS_CORE=y
844# CONFIG_SND is not set 960# CONFIG_SND is not set
845CONFIG_SOUND_PRIME=m 961CONFIG_SOUND_PRIME=m
846CONFIG_HID_SUPPORT=y 962CONFIG_HID_SUPPORT=y
847CONFIG_HID=y 963CONFIG_HID=y
848# CONFIG_HID_DEBUG is not set 964# CONFIG_HID_DEBUG is not set
849# CONFIG_HIDRAW is not set 965# CONFIG_HIDRAW is not set
966# CONFIG_HID_PID is not set
967
968#
969# Special HID drivers
970#
971CONFIG_HID_COMPAT=y
850CONFIG_USB_SUPPORT=y 972CONFIG_USB_SUPPORT=y
851CONFIG_USB_ARCH_HAS_HCD=y 973CONFIG_USB_ARCH_HAS_HCD=y
852CONFIG_USB_ARCH_HAS_OHCI=y 974CONFIG_USB_ARCH_HAS_OHCI=y
@@ -856,6 +978,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
856# CONFIG_USB_OTG_BLACKLIST_HUB is not set 978# CONFIG_USB_OTG_BLACKLIST_HUB is not set
857 979
858# 980#
981# Enable Host or Gadget support to see Inventra options
982#
983
984#
859# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 985# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
860# 986#
861# CONFIG_USB_GADGET is not set 987# CONFIG_USB_GADGET is not set
@@ -880,18 +1006,37 @@ CONFIG_RTC_INTF_DEV=y
880# CONFIG_RTC_DRV_TEST is not set 1006# CONFIG_RTC_DRV_TEST is not set
881 1007
882# 1008#
1009# I2C RTC drivers
1010#
1011# CONFIG_RTC_DRV_DS1307 is not set
1012# CONFIG_RTC_DRV_DS1374 is not set
1013# CONFIG_RTC_DRV_DS1672 is not set
1014# CONFIG_RTC_DRV_MAX6900 is not set
1015CONFIG_RTC_DRV_RS5C372=y
1016# CONFIG_RTC_DRV_ISL1208 is not set
1017# CONFIG_RTC_DRV_X1205 is not set
1018# CONFIG_RTC_DRV_PCF8563 is not set
1019# CONFIG_RTC_DRV_PCF8583 is not set
1020# CONFIG_RTC_DRV_M41T80 is not set
1021# CONFIG_RTC_DRV_S35390A is not set
1022# CONFIG_RTC_DRV_FM3130 is not set
1023
1024#
883# SPI RTC drivers 1025# SPI RTC drivers
884# 1026#
885 1027
886# 1028#
887# Platform RTC drivers 1029# Platform RTC drivers
888# 1030#
1031# CONFIG_RTC_DRV_DS1286 is not set
889# CONFIG_RTC_DRV_DS1511 is not set 1032# CONFIG_RTC_DRV_DS1511 is not set
890# CONFIG_RTC_DRV_DS1553 is not set 1033# CONFIG_RTC_DRV_DS1553 is not set
891# CONFIG_RTC_DRV_DS1742 is not set 1034# CONFIG_RTC_DRV_DS1742 is not set
892# CONFIG_RTC_DRV_STK17TA8 is not set 1035# CONFIG_RTC_DRV_STK17TA8 is not set
893# CONFIG_RTC_DRV_M48T86 is not set 1036# CONFIG_RTC_DRV_M48T86 is not set
1037# CONFIG_RTC_DRV_M48T35 is not set
894# CONFIG_RTC_DRV_M48T59 is not set 1038# CONFIG_RTC_DRV_M48T59 is not set
1039# CONFIG_RTC_DRV_BQ4802 is not set
895# CONFIG_RTC_DRV_V3020 is not set 1040# CONFIG_RTC_DRV_V3020 is not set
896 1041
897# 1042#
@@ -900,6 +1045,7 @@ CONFIG_RTC_INTF_DEV=y
900CONFIG_RTC_DRV_SH=y 1045CONFIG_RTC_DRV_SH=y
901# CONFIG_DMADEVICES is not set 1046# CONFIG_DMADEVICES is not set
902# CONFIG_UIO is not set 1047# CONFIG_UIO is not set
1048# CONFIG_STAGING is not set
903 1049
904# 1050#
905# File systems 1051# File systems
@@ -911,13 +1057,14 @@ CONFIG_EXT3_FS=y
911CONFIG_EXT3_FS_XATTR=y 1057CONFIG_EXT3_FS_XATTR=y
912# CONFIG_EXT3_FS_POSIX_ACL is not set 1058# CONFIG_EXT3_FS_POSIX_ACL is not set
913# CONFIG_EXT3_FS_SECURITY is not set 1059# CONFIG_EXT3_FS_SECURITY is not set
914# CONFIG_EXT4DEV_FS is not set 1060# CONFIG_EXT4_FS is not set
915CONFIG_JBD=y 1061CONFIG_JBD=y
916# CONFIG_JBD_DEBUG is not set 1062# CONFIG_JBD_DEBUG is not set
917CONFIG_FS_MBCACHE=y 1063CONFIG_FS_MBCACHE=y
918# CONFIG_REISERFS_FS is not set 1064# CONFIG_REISERFS_FS is not set
919# CONFIG_JFS_FS is not set 1065# CONFIG_JFS_FS is not set
920CONFIG_FS_POSIX_ACL=y 1066CONFIG_FS_POSIX_ACL=y
1067CONFIG_FILE_LOCKING=y
921# CONFIG_XFS_FS is not set 1068# CONFIG_XFS_FS is not set
922# CONFIG_OCFS2_FS is not set 1069# CONFIG_OCFS2_FS is not set
923CONFIG_DNOTIFY=y 1070CONFIG_DNOTIFY=y
@@ -952,6 +1099,7 @@ CONFIG_NTFS_RW=y
952CONFIG_PROC_FS=y 1099CONFIG_PROC_FS=y
953CONFIG_PROC_KCORE=y 1100CONFIG_PROC_KCORE=y
954CONFIG_PROC_SYSCTL=y 1101CONFIG_PROC_SYSCTL=y
1102CONFIG_PROC_PAGE_MONITOR=y
955CONFIG_SYSFS=y 1103CONFIG_SYSFS=y
956CONFIG_TMPFS=y 1104CONFIG_TMPFS=y
957# CONFIG_TMPFS_POSIX_ACL is not set 1105# CONFIG_TMPFS_POSIX_ACL is not set
@@ -994,6 +1142,7 @@ CONFIG_EXPORTFS=y
994CONFIG_NFS_COMMON=y 1142CONFIG_NFS_COMMON=y
995CONFIG_SUNRPC=y 1143CONFIG_SUNRPC=y
996CONFIG_SUNRPC_GSS=y 1144CONFIG_SUNRPC_GSS=y
1145# CONFIG_SUNRPC_REGISTER_V4 is not set
997CONFIG_RPCSEC_GSS_KRB5=y 1146CONFIG_RPCSEC_GSS_KRB5=y
998# CONFIG_RPCSEC_GSS_SPKM3 is not set 1147# CONFIG_RPCSEC_GSS_SPKM3 is not set
999# CONFIG_SMB_FS is not set 1148# CONFIG_SMB_FS is not set
@@ -1088,10 +1237,22 @@ CONFIG_DEBUG_INFO=y
1088# CONFIG_DEBUG_LIST is not set 1237# CONFIG_DEBUG_LIST is not set
1089# CONFIG_DEBUG_SG is not set 1238# CONFIG_DEBUG_SG is not set
1090# CONFIG_FRAME_POINTER is not set 1239# CONFIG_FRAME_POINTER is not set
1091# CONFIG_BOOT_PRINTK_DELAY is not set
1092# CONFIG_RCU_TORTURE_TEST is not set 1240# CONFIG_RCU_TORTURE_TEST is not set
1241# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1093# CONFIG_BACKTRACE_SELF_TEST is not set 1242# CONFIG_BACKTRACE_SELF_TEST is not set
1243# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1094# CONFIG_FAULT_INJECTION is not set 1244# CONFIG_FAULT_INJECTION is not set
1245# CONFIG_LATENCYTOP is not set
1246CONFIG_NOP_TRACER=y
1247CONFIG_HAVE_FTRACE=y
1248# CONFIG_FTRACE is not set
1249# CONFIG_IRQSOFF_TRACER is not set
1250# CONFIG_PREEMPT_TRACER is not set
1251# CONFIG_SCHED_TRACER is not set
1252# CONFIG_CONTEXT_SWITCH_TRACER is not set
1253# CONFIG_BOOT_TRACER is not set
1254# CONFIG_STACK_TRACER is not set
1255# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1095# CONFIG_SAMPLES is not set 1256# CONFIG_SAMPLES is not set
1096CONFIG_SH_STANDARD_BIOS=y 1257CONFIG_SH_STANDARD_BIOS=y
1097# CONFIG_EARLY_SCIF_CONSOLE is not set 1258# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1108,15 +1269,19 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1108# 1269#
1109# CONFIG_KEYS is not set 1270# CONFIG_KEYS is not set
1110# CONFIG_SECURITY is not set 1271# CONFIG_SECURITY is not set
1272# CONFIG_SECURITYFS is not set
1111# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1273# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1112CONFIG_CRYPTO=y 1274CONFIG_CRYPTO=y
1113 1275
1114# 1276#
1115# Crypto core or helper 1277# Crypto core or helper
1116# 1278#
1279# CONFIG_CRYPTO_FIPS is not set
1117CONFIG_CRYPTO_ALGAPI=y 1280CONFIG_CRYPTO_ALGAPI=y
1281CONFIG_CRYPTO_AEAD=y
1118CONFIG_CRYPTO_BLKCIPHER=y 1282CONFIG_CRYPTO_BLKCIPHER=y
1119CONFIG_CRYPTO_HASH=y 1283CONFIG_CRYPTO_HASH=y
1284CONFIG_CRYPTO_RNG=y
1120CONFIG_CRYPTO_MANAGER=y 1285CONFIG_CRYPTO_MANAGER=y
1121# CONFIG_CRYPTO_GF128MUL is not set 1286# CONFIG_CRYPTO_GF128MUL is not set
1122# CONFIG_CRYPTO_NULL is not set 1287# CONFIG_CRYPTO_NULL is not set
@@ -1189,6 +1354,11 @@ CONFIG_CRYPTO_DES=y
1189# 1354#
1190# CONFIG_CRYPTO_DEFLATE is not set 1355# CONFIG_CRYPTO_DEFLATE is not set
1191# CONFIG_CRYPTO_LZO is not set 1356# CONFIG_CRYPTO_LZO is not set
1357
1358#
1359# Random Number Generation
1360#
1361# CONFIG_CRYPTO_ANSI_CPRNG is not set
1192CONFIG_CRYPTO_HW=y 1362CONFIG_CRYPTO_HW=y
1193# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1363# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1194 1364
@@ -1196,7 +1366,6 @@ CONFIG_CRYPTO_HW=y
1196# Library routines 1366# Library routines
1197# 1367#
1198CONFIG_BITREVERSE=y 1368CONFIG_BITREVERSE=y
1199# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1200# CONFIG_CRC_CCITT is not set 1369# CONFIG_CRC_CCITT is not set
1201# CONFIG_CRC16 is not set 1370# CONFIG_CRC16 is not set
1202CONFIG_CRC_T10DIF=y 1371CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/r7785rp_defconfig b/arch/sh/configs/r7785rp_defconfig
index 1d09d24d4298..043a8a509e09 100644
--- a/arch/sh/configs/r7785rp_defconfig
+++ b/arch/sh/configs/r7785rp_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 00:59:19 2008 4# Wed Oct 22 16:25:30 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,18 +11,19 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_NUMA=y 19CONFIG_SYS_SUPPORTS_NUMA=y
19CONFIG_SYS_SUPPORTS_PCI=y 20CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set 24# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set 25# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y 26CONFIG_ARCH_NO_VIRT_TO_BUS=y
25CONFIG_ARCH_SUPPORTS_AOUT=y
26CONFIG_IO_TRAPPED=y 27CONFIG_IO_TRAPPED=y
27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
28 29
@@ -38,11 +39,13 @@ CONFIG_LOCALVERSION_AUTO=y
38CONFIG_SWAP=y 39CONFIG_SWAP=y
39CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
40CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
41# CONFIG_POSIX_MQUEUE is not set 42CONFIG_POSIX_MQUEUE=y
42CONFIG_BSD_PROCESS_ACCT=y 43CONFIG_BSD_PROCESS_ACCT=y
43# CONFIG_BSD_PROCESS_ACCT_V3 is not set 44# CONFIG_BSD_PROCESS_ACCT_V3 is not set
44# CONFIG_TASKSTATS is not set 45# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set 46CONFIG_AUDIT=y
47CONFIG_AUDITSYSCALL=y
48CONFIG_AUDIT_TREE=y
46CONFIG_IKCONFIG=y 49CONFIG_IKCONFIG=y
47CONFIG_IKCONFIG_PROC=y 50CONFIG_IKCONFIG_PROC=y
48CONFIG_LOG_BUF_SHIFT=14 51CONFIG_LOG_BUF_SHIFT=14
@@ -67,31 +70,33 @@ CONFIG_BUG=y
67CONFIG_ELF_CORE=y 70CONFIG_ELF_CORE=y
68CONFIG_COMPAT_BRK=y 71CONFIG_COMPAT_BRK=y
69CONFIG_BASE_FULL=y 72CONFIG_BASE_FULL=y
70# CONFIG_FUTEX is not set 73CONFIG_FUTEX=y
71CONFIG_ANON_INODES=y 74CONFIG_ANON_INODES=y
72# CONFIG_EPOLL is not set 75CONFIG_EPOLL=y
73CONFIG_SIGNALFD=y 76CONFIG_SIGNALFD=y
74CONFIG_TIMERFD=y 77CONFIG_TIMERFD=y
75CONFIG_EVENTFD=y 78CONFIG_EVENTFD=y
76CONFIG_SHMEM=y 79CONFIG_SHMEM=y
80CONFIG_AIO=y
77CONFIG_VM_EVENT_COUNTERS=y 81CONFIG_VM_EVENT_COUNTERS=y
82CONFIG_PCI_QUIRKS=y
78CONFIG_SLAB=y 83CONFIG_SLAB=y
79# CONFIG_SLUB is not set 84# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set 85# CONFIG_SLOB is not set
81CONFIG_PROFILING=y 86CONFIG_PROFILING=y
82# CONFIG_MARKERS is not set 87# CONFIG_MARKERS is not set
83CONFIG_OPROFILE=m 88CONFIG_OPROFILE=y
84CONFIG_HAVE_OPROFILE=y 89CONFIG_HAVE_OPROFILE=y
85# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 90CONFIG_KPROBES=y
86# CONFIG_HAVE_IOREMAP_PROT is not set 91CONFIG_KRETPROBES=y
87# CONFIG_HAVE_KPROBES is not set 92CONFIG_HAVE_IOREMAP_PROT=y
88# CONFIG_HAVE_KRETPROBES is not set 93CONFIG_HAVE_KPROBES=y
89# CONFIG_HAVE_ARCH_TRACEHOOK is not set 94CONFIG_HAVE_KRETPROBES=y
90# CONFIG_HAVE_DMA_ATTRS is not set 95CONFIG_HAVE_ARCH_TRACEHOOK=y
91# CONFIG_USE_GENERIC_SMP_HELPERS is not set
92CONFIG_HAVE_CLK=y 96CONFIG_HAVE_CLK=y
93CONFIG_PROC_PAGE_MONITOR=y 97CONFIG_HAVE_GENERIC_DMA_COHERENT=y
94CONFIG_SLABINFO=y 98CONFIG_SLABINFO=y
99CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set 100# CONFIG_TINY_SHMEM is not set
96CONFIG_BASE_SMALL=0 101CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 102CONFIG_MODULES=y
@@ -120,7 +125,8 @@ CONFIG_IOSCHED_NOOP=y
120# CONFIG_DEFAULT_CFQ is not set 125# CONFIG_DEFAULT_CFQ is not set
121CONFIG_DEFAULT_NOOP=y 126CONFIG_DEFAULT_NOOP=y
122CONFIG_DEFAULT_IOSCHED="noop" 127CONFIG_DEFAULT_IOSCHED="noop"
123CONFIG_CLASSIC_RCU=y 128# CONFIG_CLASSIC_RCU is not set
129# CONFIG_FREEZER is not set
124 130
125# 131#
126# System type 132# System type
@@ -182,6 +188,7 @@ CONFIG_MAX_ACTIVE_REGIONS=2
182CONFIG_ARCH_POPULATES_NODE_MAP=y 188CONFIG_ARCH_POPULATES_NODE_MAP=y
183CONFIG_ARCH_SELECT_MEMORY_MODEL=y 189CONFIG_ARCH_SELECT_MEMORY_MODEL=y
184CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 190CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
191CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
185CONFIG_PAGE_SIZE_4KB=y 192CONFIG_PAGE_SIZE_4KB=y
186# CONFIG_PAGE_SIZE_8KB is not set 193# CONFIG_PAGE_SIZE_8KB is not set
187# CONFIG_PAGE_SIZE_16KB is not set 194# CONFIG_PAGE_SIZE_16KB is not set
@@ -200,13 +207,15 @@ CONFIG_SPARSEMEM_MANUAL=y
200CONFIG_SPARSEMEM=y 207CONFIG_SPARSEMEM=y
201CONFIG_HAVE_MEMORY_PRESENT=y 208CONFIG_HAVE_MEMORY_PRESENT=y
202CONFIG_SPARSEMEM_STATIC=y 209CONFIG_SPARSEMEM_STATIC=y
203# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
204# CONFIG_MEMORY_HOTPLUG is not set 210# CONFIG_MEMORY_HOTPLUG is not set
205CONFIG_PAGEFLAGS_EXTENDED=y 211CONFIG_PAGEFLAGS_EXTENDED=y
206CONFIG_SPLIT_PTLOCK_CPUS=4 212CONFIG_SPLIT_PTLOCK_CPUS=4
213CONFIG_MIGRATION=y
207# CONFIG_RESOURCES_64BIT is not set 214# CONFIG_RESOURCES_64BIT is not set
215# CONFIG_PHYS_ADDR_T_64BIT is not set
208CONFIG_ZONE_DMA_FLAG=0 216CONFIG_ZONE_DMA_FLAG=0
209CONFIG_NR_QUICK=2 217CONFIG_NR_QUICK=2
218CONFIG_UNEVICTABLE_LRU=y
210 219
211# 220#
212# Cache configuration 221# Cache configuration
@@ -243,15 +252,30 @@ CONFIG_SH_R7785RP=y
243CONFIG_SH_TMU=y 252CONFIG_SH_TMU=y
244CONFIG_SH_TIMER_IRQ=28 253CONFIG_SH_TIMER_IRQ=28
245CONFIG_SH_PCLK_FREQ=50000000 254CONFIG_SH_PCLK_FREQ=50000000
246# CONFIG_TICK_ONESHOT is not set 255CONFIG_TICK_ONESHOT=y
247# CONFIG_NO_HZ is not set 256CONFIG_NO_HZ=y
248# CONFIG_HIGH_RES_TIMERS is not set 257CONFIG_HIGH_RES_TIMERS=y
249CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 258CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
250 259
251# 260#
252# CPU Frequency scaling 261# CPU Frequency scaling
253# 262#
254# CONFIG_CPU_FREQ is not set 263CONFIG_CPU_FREQ=y
264CONFIG_CPU_FREQ_TABLE=y
265# CONFIG_CPU_FREQ_DEBUG is not set
266CONFIG_CPU_FREQ_STAT=y
267# CONFIG_CPU_FREQ_STAT_DETAILS is not set
268CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
269# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
270# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
271# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
272# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
273CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
274# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
275# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
276# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
277# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
278CONFIG_SH_CPU_FREQ=y
255 279
256# 280#
257# DMA support 281# DMA support
@@ -276,13 +300,15 @@ CONFIG_HZ_250=y
276# CONFIG_HZ_300 is not set 300# CONFIG_HZ_300 is not set
277# CONFIG_HZ_1000 is not set 301# CONFIG_HZ_1000 is not set
278CONFIG_HZ=250 302CONFIG_HZ=250
279# CONFIG_SCHED_HRTICK is not set 303CONFIG_SCHED_HRTICK=y
280CONFIG_KEXEC=y 304CONFIG_KEXEC=y
281# CONFIG_CRASH_DUMP is not set 305# CONFIG_CRASH_DUMP is not set
306# CONFIG_SECCOMP is not set
282# CONFIG_PREEMPT_NONE is not set 307# CONFIG_PREEMPT_NONE is not set
283# CONFIG_PREEMPT_VOLUNTARY is not set 308# CONFIG_PREEMPT_VOLUNTARY is not set
284CONFIG_PREEMPT=y 309CONFIG_PREEMPT=y
285# CONFIG_PREEMPT_RCU is not set 310CONFIG_PREEMPT_RCU=y
311CONFIG_RCU_TRACE=y
286CONFIG_GUSA=y 312CONFIG_GUSA=y
287 313
288# 314#
@@ -301,7 +327,7 @@ CONFIG_SH_PCIDMA_NONCOHERENT=y
301CONFIG_PCI_AUTO=y 327CONFIG_PCI_AUTO=y
302CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 328CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
303# CONFIG_ARCH_SUPPORTS_MSI is not set 329# CONFIG_ARCH_SUPPORTS_MSI is not set
304CONFIG_PCI_LEGACY=y 330# CONFIG_PCI_LEGACY is not set
305# CONFIG_PCI_DEBUG is not set 331# CONFIG_PCI_DEBUG is not set
306# CONFIG_PCCARD is not set 332# CONFIG_PCCARD is not set
307# CONFIG_HOTPLUG_PCI is not set 333# CONFIG_HOTPLUG_PCI is not set
@@ -310,11 +336,9 @@ CONFIG_PCI_LEGACY=y
310# Executable file formats 336# Executable file formats
311# 337#
312CONFIG_BINFMT_ELF=y 338CONFIG_BINFMT_ELF=y
313# CONFIG_BINFMT_MISC is not set 339# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
314 340# CONFIG_HAVE_AOUT is not set
315# 341CONFIG_BINFMT_MISC=m
316# Networking
317#
318CONFIG_NET=y 342CONFIG_NET=y
319 343
320# 344#
@@ -370,6 +394,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
370# CONFIG_ATM is not set 394# CONFIG_ATM is not set
371CONFIG_STP=m 395CONFIG_STP=m
372CONFIG_BRIDGE=m 396CONFIG_BRIDGE=m
397# CONFIG_NET_DSA is not set
373# CONFIG_VLAN_8021Q is not set 398# CONFIG_VLAN_8021Q is not set
374# CONFIG_DECNET is not set 399# CONFIG_DECNET is not set
375CONFIG_LLC=m 400CONFIG_LLC=m
@@ -386,16 +411,16 @@ CONFIG_LLC=m
386# Network testing 411# Network testing
387# 412#
388# CONFIG_NET_PKTGEN is not set 413# CONFIG_NET_PKTGEN is not set
414# CONFIG_NET_TCPPROBE is not set
389# CONFIG_HAMRADIO is not set 415# CONFIG_HAMRADIO is not set
390# CONFIG_CAN is not set 416# CONFIG_CAN is not set
391# CONFIG_IRDA is not set 417# CONFIG_IRDA is not set
392# CONFIG_BT is not set 418# CONFIG_BT is not set
393# CONFIG_AF_RXRPC is not set 419# CONFIG_AF_RXRPC is not set
394 420# CONFIG_PHONET is not set
395# 421CONFIG_WIRELESS=y
396# Wireless
397#
398# CONFIG_CFG80211 is not set 422# CONFIG_CFG80211 is not set
423# CONFIG_WIRELESS_OLD_REGULATORY is not set
399CONFIG_WIRELESS_EXT=y 424CONFIG_WIRELESS_EXT=y
400CONFIG_WIRELESS_EXT_SYSFS=y 425CONFIG_WIRELESS_EXT_SYSFS=y
401# CONFIG_MAC80211 is not set 426# CONFIG_MAC80211 is not set
@@ -617,8 +642,12 @@ CONFIG_AX88796_93CX6=y
617# CONFIG_IBM_NEW_EMAC_RGMII is not set 642# CONFIG_IBM_NEW_EMAC_RGMII is not set
618# CONFIG_IBM_NEW_EMAC_TAH is not set 643# CONFIG_IBM_NEW_EMAC_TAH is not set
619# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 644# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
645# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
646# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
647# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
620# CONFIG_NET_PCI is not set 648# CONFIG_NET_PCI is not set
621# CONFIG_B44 is not set 649# CONFIG_B44 is not set
650# CONFIG_ATL2 is not set
622CONFIG_NETDEV_1000=y 651CONFIG_NETDEV_1000=y
623# CONFIG_ACENIC is not set 652# CONFIG_ACENIC is not set
624# CONFIG_DL2K is not set 653# CONFIG_DL2K is not set
@@ -639,9 +668,11 @@ CONFIG_R8169=y
639# CONFIG_QLA3XXX is not set 668# CONFIG_QLA3XXX is not set
640# CONFIG_ATL1 is not set 669# CONFIG_ATL1 is not set
641# CONFIG_ATL1E is not set 670# CONFIG_ATL1E is not set
671# CONFIG_JME is not set
642CONFIG_NETDEV_10000=y 672CONFIG_NETDEV_10000=y
643# CONFIG_CHELSIO_T1 is not set 673# CONFIG_CHELSIO_T1 is not set
644# CONFIG_CHELSIO_T3 is not set 674# CONFIG_CHELSIO_T3 is not set
675# CONFIG_ENIC is not set
645# CONFIG_IXGBE is not set 676# CONFIG_IXGBE is not set
646# CONFIG_IXGB is not set 677# CONFIG_IXGB is not set
647# CONFIG_S2IO is not set 678# CONFIG_S2IO is not set
@@ -651,6 +682,7 @@ CONFIG_NETDEV_10000=y
651# CONFIG_MLX4_CORE is not set 682# CONFIG_MLX4_CORE is not set
652# CONFIG_TEHUTI is not set 683# CONFIG_TEHUTI is not set
653# CONFIG_BNX2X is not set 684# CONFIG_BNX2X is not set
685# CONFIG_QLGE is not set
654# CONFIG_SFC is not set 686# CONFIG_SFC is not set
655# CONFIG_TR is not set 687# CONFIG_TR is not set
656 688
@@ -750,24 +782,129 @@ CONFIG_HW_RANDOM=y
750# CONFIG_RAW_DRIVER is not set 782# CONFIG_RAW_DRIVER is not set
751# CONFIG_TCG_TPM is not set 783# CONFIG_TCG_TPM is not set
752CONFIG_DEVPORT=y 784CONFIG_DEVPORT=y
753# CONFIG_I2C is not set 785CONFIG_I2C=y
786CONFIG_I2C_BOARDINFO=y
787CONFIG_I2C_CHARDEV=y
788CONFIG_I2C_HELPER_AUTO=y
789
790#
791# I2C Hardware Bus support
792#
793
794#
795# PC SMBus host controller drivers
796#
797# CONFIG_I2C_ALI1535 is not set
798# CONFIG_I2C_ALI1563 is not set
799# CONFIG_I2C_ALI15X3 is not set
800# CONFIG_I2C_AMD756 is not set
801# CONFIG_I2C_AMD8111 is not set
802# CONFIG_I2C_I801 is not set
803# CONFIG_I2C_ISCH is not set
804# CONFIG_I2C_PIIX4 is not set
805# CONFIG_I2C_NFORCE2 is not set
806# CONFIG_I2C_SIS5595 is not set
807# CONFIG_I2C_SIS630 is not set
808# CONFIG_I2C_SIS96X is not set
809# CONFIG_I2C_VIA is not set
810# CONFIG_I2C_VIAPRO is not set
811
812#
813# I2C system bus drivers (mostly embedded / system-on-chip)
814#
815CONFIG_I2C_HIGHLANDER=y
816# CONFIG_I2C_OCORES is not set
817# CONFIG_I2C_SH_MOBILE is not set
818# CONFIG_I2C_SIMTEC is not set
819
820#
821# External I2C/SMBus adapter drivers
822#
823# CONFIG_I2C_PARPORT_LIGHT is not set
824# CONFIG_I2C_TAOS_EVM is not set
825
826#
827# Graphics adapter I2C/DDC channel drivers
828#
829# CONFIG_I2C_VOODOO3 is not set
830
831#
832# Other I2C/SMBus bus drivers
833#
834# CONFIG_I2C_PCA_PLATFORM is not set
835# CONFIG_I2C_STUB is not set
836
837#
838# Miscellaneous I2C Chip support
839#
840# CONFIG_DS1682 is not set
841# CONFIG_AT24 is not set
842# CONFIG_SENSORS_EEPROM is not set
843# CONFIG_SENSORS_PCF8574 is not set
844# CONFIG_PCF8575 is not set
845# CONFIG_SENSORS_PCA9539 is not set
846# CONFIG_SENSORS_PCF8591 is not set
847# CONFIG_SENSORS_MAX6875 is not set
848# CONFIG_SENSORS_TSL2550 is not set
849# CONFIG_I2C_DEBUG_CORE is not set
850# CONFIG_I2C_DEBUG_ALGO is not set
851# CONFIG_I2C_DEBUG_BUS is not set
852# CONFIG_I2C_DEBUG_CHIP is not set
754# CONFIG_SPI is not set 853# CONFIG_SPI is not set
755# CONFIG_W1 is not set 854# CONFIG_W1 is not set
756# CONFIG_POWER_SUPPLY is not set 855# CONFIG_POWER_SUPPLY is not set
757CONFIG_HWMON=y 856CONFIG_HWMON=y
758# CONFIG_HWMON_VID is not set 857# CONFIG_HWMON_VID is not set
858# CONFIG_SENSORS_AD7414 is not set
859# CONFIG_SENSORS_AD7418 is not set
860# CONFIG_SENSORS_ADM1021 is not set
861# CONFIG_SENSORS_ADM1025 is not set
862# CONFIG_SENSORS_ADM1026 is not set
863# CONFIG_SENSORS_ADM1029 is not set
864# CONFIG_SENSORS_ADM1031 is not set
865# CONFIG_SENSORS_ADM9240 is not set
866# CONFIG_SENSORS_ADT7470 is not set
867# CONFIG_SENSORS_ADT7473 is not set
868# CONFIG_SENSORS_ATXP1 is not set
869# CONFIG_SENSORS_DS1621 is not set
759# CONFIG_SENSORS_I5K_AMB is not set 870# CONFIG_SENSORS_I5K_AMB is not set
760# CONFIG_SENSORS_F71805F is not set 871# CONFIG_SENSORS_F71805F is not set
761# CONFIG_SENSORS_F71882FG is not set 872# CONFIG_SENSORS_F71882FG is not set
873# CONFIG_SENSORS_F75375S is not set
874# CONFIG_SENSORS_GL518SM is not set
875# CONFIG_SENSORS_GL520SM is not set
762# CONFIG_SENSORS_IT87 is not set 876# CONFIG_SENSORS_IT87 is not set
877# CONFIG_SENSORS_LM63 is not set
878# CONFIG_SENSORS_LM75 is not set
879# CONFIG_SENSORS_LM77 is not set
880# CONFIG_SENSORS_LM78 is not set
881# CONFIG_SENSORS_LM80 is not set
882# CONFIG_SENSORS_LM83 is not set
883# CONFIG_SENSORS_LM85 is not set
884# CONFIG_SENSORS_LM87 is not set
885# CONFIG_SENSORS_LM90 is not set
886# CONFIG_SENSORS_LM92 is not set
887# CONFIG_SENSORS_LM93 is not set
888# CONFIG_SENSORS_MAX1619 is not set
889# CONFIG_SENSORS_MAX6650 is not set
763# CONFIG_SENSORS_PC87360 is not set 890# CONFIG_SENSORS_PC87360 is not set
764# CONFIG_SENSORS_PC87427 is not set 891# CONFIG_SENSORS_PC87427 is not set
765# CONFIG_SENSORS_SIS5595 is not set 892# CONFIG_SENSORS_SIS5595 is not set
893# CONFIG_SENSORS_DME1737 is not set
766# CONFIG_SENSORS_SMSC47M1 is not set 894# CONFIG_SENSORS_SMSC47M1 is not set
895# CONFIG_SENSORS_SMSC47M192 is not set
767# CONFIG_SENSORS_SMSC47B397 is not set 896# CONFIG_SENSORS_SMSC47B397 is not set
897# CONFIG_SENSORS_ADS7828 is not set
898# CONFIG_SENSORS_THMC50 is not set
768# CONFIG_SENSORS_VIA686A is not set 899# CONFIG_SENSORS_VIA686A is not set
769# CONFIG_SENSORS_VT1211 is not set 900# CONFIG_SENSORS_VT1211 is not set
770# CONFIG_SENSORS_VT8231 is not set 901# CONFIG_SENSORS_VT8231 is not set
902# CONFIG_SENSORS_W83781D is not set
903# CONFIG_SENSORS_W83791D is not set
904# CONFIG_SENSORS_W83792D is not set
905# CONFIG_SENSORS_W83793 is not set
906# CONFIG_SENSORS_W83L785TS is not set
907# CONFIG_SENSORS_W83L786NG is not set
771# CONFIG_SENSORS_W83627HF is not set 908# CONFIG_SENSORS_W83627HF is not set
772# CONFIG_SENSORS_W83627EHF is not set 909# CONFIG_SENSORS_W83627EHF is not set
773# CONFIG_HWMON_DEBUG_CHIP is not set 910# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -787,6 +924,9 @@ CONFIG_SSB_POSSIBLE=y
787# CONFIG_MFD_CORE is not set 924# CONFIG_MFD_CORE is not set
788# CONFIG_MFD_SM501 is not set 925# CONFIG_MFD_SM501 is not set
789# CONFIG_HTC_PASIC3 is not set 926# CONFIG_HTC_PASIC3 is not set
927# CONFIG_MFD_TMIO is not set
928# CONFIG_MFD_WM8400 is not set
929# CONFIG_MFD_WM8350_I2C is not set
790 930
791# 931#
792# Multimedia devices 932# Multimedia devices
@@ -813,6 +953,7 @@ CONFIG_SSB_POSSIBLE=y
813CONFIG_FB=y 953CONFIG_FB=y
814# CONFIG_FIRMWARE_EDID is not set 954# CONFIG_FIRMWARE_EDID is not set
815# CONFIG_FB_DDC is not set 955# CONFIG_FB_DDC is not set
956# CONFIG_FB_BOOT_VESA_SUPPORT is not set
816CONFIG_FB_CFB_FILLRECT=m 957CONFIG_FB_CFB_FILLRECT=m
817CONFIG_FB_CFB_COPYAREA=m 958CONFIG_FB_CFB_COPYAREA=m
818CONFIG_FB_CFB_IMAGEBLIT=m 959CONFIG_FB_CFB_IMAGEBLIT=m
@@ -846,6 +987,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
846# CONFIG_FB_S3 is not set 987# CONFIG_FB_S3 is not set
847# CONFIG_FB_SAVAGE is not set 988# CONFIG_FB_SAVAGE is not set
848# CONFIG_FB_SIS is not set 989# CONFIG_FB_SIS is not set
990# CONFIG_FB_VIA is not set
849# CONFIG_FB_NEOMAGIC is not set 991# CONFIG_FB_NEOMAGIC is not set
850# CONFIG_FB_KYRO is not set 992# CONFIG_FB_KYRO is not set
851# CONFIG_FB_3DFX is not set 993# CONFIG_FB_3DFX is not set
@@ -857,6 +999,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
857# CONFIG_FB_CARMINE is not set 999# CONFIG_FB_CARMINE is not set
858CONFIG_FB_SH_MOBILE_LCDC=m 1000CONFIG_FB_SH_MOBILE_LCDC=m
859# CONFIG_FB_VIRTUAL is not set 1001# CONFIG_FB_VIRTUAL is not set
1002# CONFIG_FB_METRONOME is not set
860# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1003# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
861 1004
862# 1005#
@@ -865,12 +1008,19 @@ CONFIG_FB_SH_MOBILE_LCDC=m
865# CONFIG_DISPLAY_SUPPORT is not set 1008# CONFIG_DISPLAY_SUPPORT is not set
866# CONFIG_LOGO is not set 1009# CONFIG_LOGO is not set
867CONFIG_SOUND=m 1010CONFIG_SOUND=m
1011CONFIG_SOUND_OSS_CORE=y
868# CONFIG_SND is not set 1012# CONFIG_SND is not set
869CONFIG_SOUND_PRIME=m 1013CONFIG_SOUND_PRIME=m
870CONFIG_HID_SUPPORT=y 1014CONFIG_HID_SUPPORT=y
871CONFIG_HID=y 1015CONFIG_HID=y
872# CONFIG_HID_DEBUG is not set 1016# CONFIG_HID_DEBUG is not set
873# CONFIG_HIDRAW is not set 1017# CONFIG_HIDRAW is not set
1018# CONFIG_HID_PID is not set
1019
1020#
1021# Special HID drivers
1022#
1023CONFIG_HID_COMPAT=y
874CONFIG_USB_SUPPORT=y 1024CONFIG_USB_SUPPORT=y
875CONFIG_USB_ARCH_HAS_HCD=y 1025CONFIG_USB_ARCH_HAS_HCD=y
876CONFIG_USB_ARCH_HAS_OHCI=y 1026CONFIG_USB_ARCH_HAS_OHCI=y
@@ -880,6 +1030,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
880# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1030# CONFIG_USB_OTG_BLACKLIST_HUB is not set
881 1031
882# 1032#
1033# Enable Host or Gadget support to see Inventra options
1034#
1035
1036#
883# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1037# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
884# 1038#
885# CONFIG_USB_GADGET is not set 1039# CONFIG_USB_GADGET is not set
@@ -904,18 +1058,37 @@ CONFIG_RTC_INTF_DEV=y
904# CONFIG_RTC_DRV_TEST is not set 1058# CONFIG_RTC_DRV_TEST is not set
905 1059
906# 1060#
1061# I2C RTC drivers
1062#
1063# CONFIG_RTC_DRV_DS1307 is not set
1064# CONFIG_RTC_DRV_DS1374 is not set
1065# CONFIG_RTC_DRV_DS1672 is not set
1066# CONFIG_RTC_DRV_MAX6900 is not set
1067CONFIG_RTC_DRV_RS5C372=y
1068# CONFIG_RTC_DRV_ISL1208 is not set
1069# CONFIG_RTC_DRV_X1205 is not set
1070# CONFIG_RTC_DRV_PCF8563 is not set
1071# CONFIG_RTC_DRV_PCF8583 is not set
1072# CONFIG_RTC_DRV_M41T80 is not set
1073# CONFIG_RTC_DRV_S35390A is not set
1074# CONFIG_RTC_DRV_FM3130 is not set
1075
1076#
907# SPI RTC drivers 1077# SPI RTC drivers
908# 1078#
909 1079
910# 1080#
911# Platform RTC drivers 1081# Platform RTC drivers
912# 1082#
1083# CONFIG_RTC_DRV_DS1286 is not set
913# CONFIG_RTC_DRV_DS1511 is not set 1084# CONFIG_RTC_DRV_DS1511 is not set
914# CONFIG_RTC_DRV_DS1553 is not set 1085# CONFIG_RTC_DRV_DS1553 is not set
915# CONFIG_RTC_DRV_DS1742 is not set 1086# CONFIG_RTC_DRV_DS1742 is not set
916# CONFIG_RTC_DRV_STK17TA8 is not set 1087# CONFIG_RTC_DRV_STK17TA8 is not set
917# CONFIG_RTC_DRV_M48T86 is not set 1088# CONFIG_RTC_DRV_M48T86 is not set
1089# CONFIG_RTC_DRV_M48T35 is not set
918# CONFIG_RTC_DRV_M48T59 is not set 1090# CONFIG_RTC_DRV_M48T59 is not set
1091# CONFIG_RTC_DRV_BQ4802 is not set
919# CONFIG_RTC_DRV_V3020 is not set 1092# CONFIG_RTC_DRV_V3020 is not set
920 1093
921# 1094#
@@ -924,6 +1097,7 @@ CONFIG_RTC_INTF_DEV=y
924CONFIG_RTC_DRV_SH=y 1097CONFIG_RTC_DRV_SH=y
925# CONFIG_DMADEVICES is not set 1098# CONFIG_DMADEVICES is not set
926# CONFIG_UIO is not set 1099# CONFIG_UIO is not set
1100# CONFIG_STAGING is not set
927 1101
928# 1102#
929# File systems 1103# File systems
@@ -935,13 +1109,14 @@ CONFIG_EXT3_FS=y
935CONFIG_EXT3_FS_XATTR=y 1109CONFIG_EXT3_FS_XATTR=y
936# CONFIG_EXT3_FS_POSIX_ACL is not set 1110# CONFIG_EXT3_FS_POSIX_ACL is not set
937# CONFIG_EXT3_FS_SECURITY is not set 1111# CONFIG_EXT3_FS_SECURITY is not set
938# CONFIG_EXT4DEV_FS is not set 1112# CONFIG_EXT4_FS is not set
939CONFIG_JBD=y 1113CONFIG_JBD=y
940# CONFIG_JBD_DEBUG is not set 1114# CONFIG_JBD_DEBUG is not set
941CONFIG_FS_MBCACHE=y 1115CONFIG_FS_MBCACHE=y
942# CONFIG_REISERFS_FS is not set 1116# CONFIG_REISERFS_FS is not set
943# CONFIG_JFS_FS is not set 1117# CONFIG_JFS_FS is not set
944CONFIG_FS_POSIX_ACL=y 1118CONFIG_FS_POSIX_ACL=y
1119CONFIG_FILE_LOCKING=y
945# CONFIG_XFS_FS is not set 1120# CONFIG_XFS_FS is not set
946# CONFIG_OCFS2_FS is not set 1121# CONFIG_OCFS2_FS is not set
947CONFIG_DNOTIFY=y 1122CONFIG_DNOTIFY=y
@@ -976,6 +1151,7 @@ CONFIG_NTFS_RW=y
976CONFIG_PROC_FS=y 1151CONFIG_PROC_FS=y
977CONFIG_PROC_KCORE=y 1152CONFIG_PROC_KCORE=y
978CONFIG_PROC_SYSCTL=y 1153CONFIG_PROC_SYSCTL=y
1154CONFIG_PROC_PAGE_MONITOR=y
979CONFIG_SYSFS=y 1155CONFIG_SYSFS=y
980CONFIG_TMPFS=y 1156CONFIG_TMPFS=y
981# CONFIG_TMPFS_POSIX_ACL is not set 1157# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1018,6 +1194,7 @@ CONFIG_EXPORTFS=y
1018CONFIG_NFS_COMMON=y 1194CONFIG_NFS_COMMON=y
1019CONFIG_SUNRPC=y 1195CONFIG_SUNRPC=y
1020CONFIG_SUNRPC_GSS=y 1196CONFIG_SUNRPC_GSS=y
1197# CONFIG_SUNRPC_REGISTER_V4 is not set
1021CONFIG_RPCSEC_GSS_KRB5=y 1198CONFIG_RPCSEC_GSS_KRB5=y
1022# CONFIG_RPCSEC_GSS_SPKM3 is not set 1199# CONFIG_RPCSEC_GSS_SPKM3 is not set
1023# CONFIG_SMB_FS is not set 1200# CONFIG_SMB_FS is not set
@@ -1094,6 +1271,8 @@ CONFIG_SCHED_DEBUG=y
1094# CONFIG_DEBUG_OBJECTS is not set 1271# CONFIG_DEBUG_OBJECTS is not set
1095# CONFIG_DEBUG_SLAB is not set 1272# CONFIG_DEBUG_SLAB is not set
1096# CONFIG_DEBUG_PREEMPT is not set 1273# CONFIG_DEBUG_PREEMPT is not set
1274# CONFIG_DEBUG_RT_MUTEXES is not set
1275# CONFIG_RT_MUTEX_TESTER is not set
1097CONFIG_DEBUG_SPINLOCK=y 1276CONFIG_DEBUG_SPINLOCK=y
1098CONFIG_DEBUG_MUTEXES=y 1277CONFIG_DEBUG_MUTEXES=y
1099CONFIG_DEBUG_LOCK_ALLOC=y 1278CONFIG_DEBUG_LOCK_ALLOC=y
@@ -1113,10 +1292,23 @@ CONFIG_DEBUG_INFO=y
1113# CONFIG_DEBUG_LIST is not set 1292# CONFIG_DEBUG_LIST is not set
1114# CONFIG_DEBUG_SG is not set 1293# CONFIG_DEBUG_SG is not set
1115CONFIG_FRAME_POINTER=y 1294CONFIG_FRAME_POINTER=y
1116# CONFIG_BOOT_PRINTK_DELAY is not set
1117# CONFIG_RCU_TORTURE_TEST is not set 1295# CONFIG_RCU_TORTURE_TEST is not set
1296# CONFIG_KPROBES_SANITY_TEST is not set
1118# CONFIG_BACKTRACE_SELF_TEST is not set 1297# CONFIG_BACKTRACE_SELF_TEST is not set
1298# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1299# CONFIG_LKDTM is not set
1119# CONFIG_FAULT_INJECTION is not set 1300# CONFIG_FAULT_INJECTION is not set
1301# CONFIG_LATENCYTOP is not set
1302CONFIG_NOP_TRACER=y
1303CONFIG_HAVE_FTRACE=y
1304# CONFIG_FTRACE is not set
1305# CONFIG_IRQSOFF_TRACER is not set
1306# CONFIG_PREEMPT_TRACER is not set
1307# CONFIG_SCHED_TRACER is not set
1308# CONFIG_CONTEXT_SWITCH_TRACER is not set
1309# CONFIG_BOOT_TRACER is not set
1310# CONFIG_STACK_TRACER is not set
1311# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1120# CONFIG_SAMPLES is not set 1312# CONFIG_SAMPLES is not set
1121CONFIG_SH_STANDARD_BIOS=y 1313CONFIG_SH_STANDARD_BIOS=y
1122# CONFIG_EARLY_SCIF_CONSOLE is not set 1314# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1133,15 +1325,19 @@ CONFIG_4KSTACKS=y
1133# 1325#
1134# CONFIG_KEYS is not set 1326# CONFIG_KEYS is not set
1135# CONFIG_SECURITY is not set 1327# CONFIG_SECURITY is not set
1328# CONFIG_SECURITYFS is not set
1136# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1329# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1137CONFIG_CRYPTO=y 1330CONFIG_CRYPTO=y
1138 1331
1139# 1332#
1140# Crypto core or helper 1333# Crypto core or helper
1141# 1334#
1335# CONFIG_CRYPTO_FIPS is not set
1142CONFIG_CRYPTO_ALGAPI=y 1336CONFIG_CRYPTO_ALGAPI=y
1337CONFIG_CRYPTO_AEAD=y
1143CONFIG_CRYPTO_BLKCIPHER=y 1338CONFIG_CRYPTO_BLKCIPHER=y
1144CONFIG_CRYPTO_HASH=y 1339CONFIG_CRYPTO_HASH=y
1340CONFIG_CRYPTO_RNG=y
1145CONFIG_CRYPTO_MANAGER=y 1341CONFIG_CRYPTO_MANAGER=y
1146# CONFIG_CRYPTO_GF128MUL is not set 1342# CONFIG_CRYPTO_GF128MUL is not set
1147# CONFIG_CRYPTO_NULL is not set 1343# CONFIG_CRYPTO_NULL is not set
@@ -1214,6 +1410,11 @@ CONFIG_CRYPTO_DES=y
1214# 1410#
1215# CONFIG_CRYPTO_DEFLATE is not set 1411# CONFIG_CRYPTO_DEFLATE is not set
1216# CONFIG_CRYPTO_LZO is not set 1412# CONFIG_CRYPTO_LZO is not set
1413
1414#
1415# Random Number Generation
1416#
1417# CONFIG_CRYPTO_ANSI_CPRNG is not set
1217CONFIG_CRYPTO_HW=y 1418CONFIG_CRYPTO_HW=y
1218# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1419# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1219 1420
@@ -1221,7 +1422,6 @@ CONFIG_CRYPTO_HW=y
1221# Library routines 1422# Library routines
1222# 1423#
1223CONFIG_BITREVERSE=y 1424CONFIG_BITREVERSE=y
1224# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1225# CONFIG_CRC_CCITT is not set 1425# CONFIG_CRC_CCITT is not set
1226# CONFIG_CRC16 is not set 1426# CONFIG_CRC16 is not set
1227CONFIG_CRC_T10DIF=y 1427CONFIG_CRC_T10DIF=y
@@ -1229,6 +1429,8 @@ CONFIG_CRC_T10DIF=y
1229CONFIG_CRC32=y 1429CONFIG_CRC32=y
1230# CONFIG_CRC7 is not set 1430# CONFIG_CRC7 is not set
1231# CONFIG_LIBCRC32C is not set 1431# CONFIG_LIBCRC32C is not set
1432CONFIG_AUDIT_GENERIC=y
1433CONFIG_PLIST=y
1232CONFIG_HAS_IOMEM=y 1434CONFIG_HAS_IOMEM=y
1233CONFIG_HAS_IOPORT=y 1435CONFIG_HAS_IOPORT=y
1234CONFIG_HAS_DMA=y 1436CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/rsk7203_defconfig b/arch/sh/configs/rsk7203_defconfig
index 840fe3843ffa..85b0ac4fc667 100644
--- a/arch/sh/configs/rsk7203_defconfig
+++ b/arch/sh/configs/rsk7203_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26 3# Linux kernel version: 2.6.27
4# Mon Jul 28 22:23:03 2008 4# Tue Oct 21 12:58:47 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
10CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
11CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
13CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_GPIO=y
15# CONFIG_GENERIC_TIME is not set 17# CONFIG_GENERIC_TIME is not set
16# CONFIG_GENERIC_CLOCKEVENTS is not set 18# CONFIG_GENERIC_CLOCKEVENTS is not set
17CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
22CONFIG_ARCH_SUPPORTS_AOUT=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24 26
25# 27#
@@ -56,7 +58,6 @@ CONFIG_SYSCTL=y
56CONFIG_EMBEDDED=y 58CONFIG_EMBEDDED=y
57CONFIG_UID16=y 59CONFIG_UID16=y
58CONFIG_SYSCTL_SYSCALL=y 60CONFIG_SYSCTL_SYSCALL=y
59CONFIG_SYSCTL_SYSCALL_CHECK=y
60CONFIG_KALLSYMS=y 61CONFIG_KALLSYMS=y
61CONFIG_KALLSYMS_ALL=y 62CONFIG_KALLSYMS_ALL=y
62# CONFIG_KALLSYMS_EXTRA_PASS is not set 63# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -72,7 +73,9 @@ CONFIG_EPOLL=y
72CONFIG_SIGNALFD=y 73CONFIG_SIGNALFD=y
73CONFIG_TIMERFD=y 74CONFIG_TIMERFD=y
74CONFIG_EVENTFD=y 75CONFIG_EVENTFD=y
76CONFIG_AIO=y
75CONFIG_VM_EVENT_COUNTERS=y 77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
76# CONFIG_SLAB is not set 79# CONFIG_SLAB is not set
77# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
78CONFIG_SLOB=y 81CONFIG_SLOB=y
@@ -80,14 +83,12 @@ CONFIG_PROFILING=y
80# CONFIG_MARKERS is not set 83# CONFIG_MARKERS is not set
81CONFIG_OPROFILE=y 84CONFIG_OPROFILE=y
82CONFIG_HAVE_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
83# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 86# CONFIG_KPROBES is not set
84# CONFIG_HAVE_IOREMAP_PROT is not set 87CONFIG_HAVE_KPROBES=y
85# CONFIG_HAVE_KPROBES is not set 88CONFIG_HAVE_KRETPROBES=y
86# CONFIG_HAVE_KRETPROBES is not set 89CONFIG_HAVE_ARCH_TRACEHOOK=y
87# CONFIG_HAVE_ARCH_TRACEHOOK is not set
88# CONFIG_HAVE_DMA_ATTRS is not set
89# CONFIG_USE_GENERIC_SMP_HELPERS is not set
90CONFIG_HAVE_CLK=y 90CONFIG_HAVE_CLK=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
92CONFIG_TINY_SHMEM=y 93CONFIG_TINY_SHMEM=y
93CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
@@ -117,6 +118,7 @@ CONFIG_IOSCHED_NOOP=y
117CONFIG_DEFAULT_NOOP=y 118CONFIG_DEFAULT_NOOP=y
118CONFIG_DEFAULT_IOSCHED="noop" 119CONFIG_DEFAULT_IOSCHED="noop"
119CONFIG_CLASSIC_RCU=y 120CONFIG_CLASSIC_RCU=y
121# CONFIG_FREEZER is not set
120 122
121# 123#
122# System type 124# System type
@@ -183,10 +185,10 @@ CONFIG_FLATMEM_MANUAL=y
183CONFIG_FLATMEM=y 185CONFIG_FLATMEM=y
184CONFIG_FLAT_NODE_MEM_MAP=y 186CONFIG_FLAT_NODE_MEM_MAP=y
185CONFIG_SPARSEMEM_STATIC=y 187CONFIG_SPARSEMEM_STATIC=y
186# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
187CONFIG_PAGEFLAGS_EXTENDED=y 188CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 189CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set 190# CONFIG_RESOURCES_64BIT is not set
191# CONFIG_PHYS_ADDR_T_64BIT is not set
190CONFIG_ZONE_DMA_FLAG=0 192CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=2 193CONFIG_NR_QUICK=2
192 194
@@ -219,7 +221,6 @@ CONFIG_SH_CMT=y
219CONFIG_SH_TIMER_IRQ=142 221CONFIG_SH_TIMER_IRQ=142
220CONFIG_SH_PCLK_FREQ=16670800 222CONFIG_SH_PCLK_FREQ=16670800
221CONFIG_SH_CLK_MD=0 223CONFIG_SH_CLK_MD=0
222# CONFIG_TICK_ONESHOT is not set
223 224
224# 225#
225# CPU Frequency scaling 226# CPU Frequency scaling
@@ -266,6 +267,7 @@ CONFIG_HZ=1000
266# CONFIG_SCHED_HRTICK is not set 267# CONFIG_SCHED_HRTICK is not set
267# CONFIG_KEXEC is not set 268# CONFIG_KEXEC is not set
268# CONFIG_CRASH_DUMP is not set 269# CONFIG_CRASH_DUMP is not set
270# CONFIG_SECCOMP is not set
269CONFIG_PREEMPT_NONE=y 271CONFIG_PREEMPT_NONE=y
270# CONFIG_PREEMPT_VOLUNTARY is not set 272# CONFIG_PREEMPT_VOLUNTARY is not set
271# CONFIG_PREEMPT is not set 273# CONFIG_PREEMPT is not set
@@ -292,11 +294,8 @@ CONFIG_BINFMT_ELF_FDPIC=y
292CONFIG_BINFMT_FLAT=y 294CONFIG_BINFMT_FLAT=y
293CONFIG_BINFMT_ZFLAT=y 295CONFIG_BINFMT_ZFLAT=y
294CONFIG_BINFMT_SHARED_FLAT=y 296CONFIG_BINFMT_SHARED_FLAT=y
297# CONFIG_HAVE_AOUT is not set
295# CONFIG_BINFMT_MISC is not set 298# CONFIG_BINFMT_MISC is not set
296
297#
298# Networking
299#
300CONFIG_NET=y 299CONFIG_NET=y
301 300
302# 301#
@@ -339,6 +338,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
339# CONFIG_TIPC is not set 338# CONFIG_TIPC is not set
340# CONFIG_ATM is not set 339# CONFIG_ATM is not set
341# CONFIG_BRIDGE is not set 340# CONFIG_BRIDGE is not set
341# CONFIG_NET_DSA is not set
342# CONFIG_VLAN_8021Q is not set 342# CONFIG_VLAN_8021Q is not set
343# CONFIG_DECNET is not set 343# CONFIG_DECNET is not set
344# CONFIG_LLC2 is not set 344# CONFIG_LLC2 is not set
@@ -359,11 +359,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
359# CONFIG_IRDA is not set 359# CONFIG_IRDA is not set
360# CONFIG_BT is not set 360# CONFIG_BT is not set
361# CONFIG_AF_RXRPC is not set 361# CONFIG_AF_RXRPC is not set
362 362# CONFIG_PHONET is not set
363# 363CONFIG_WIRELESS=y
364# Wireless
365#
366# CONFIG_CFG80211 is not set 364# CONFIG_CFG80211 is not set
365# CONFIG_WIRELESS_OLD_REGULATORY is not set
367# CONFIG_WIRELESS_EXT is not set 366# CONFIG_WIRELESS_EXT is not set
368# CONFIG_MAC80211 is not set 367# CONFIG_MAC80211 is not set
369# CONFIG_IEEE80211 is not set 368# CONFIG_IEEE80211 is not set
@@ -442,7 +441,6 @@ CONFIG_MTD_PHYSMAP=y
442CONFIG_MTD_PHYSMAP_START=0x0 441CONFIG_MTD_PHYSMAP_START=0x0
443CONFIG_MTD_PHYSMAP_LEN=0x0 442CONFIG_MTD_PHYSMAP_LEN=0x0
444CONFIG_MTD_PHYSMAP_BANKWIDTH=4 443CONFIG_MTD_PHYSMAP_BANKWIDTH=4
445# CONFIG_MTD_UCLINUX is not set
446# CONFIG_MTD_PLATRAM is not set 444# CONFIG_MTD_PLATRAM is not set
447 445
448# 446#
@@ -509,6 +507,9 @@ CONFIG_SMC911X=y
509# CONFIG_IBM_NEW_EMAC_RGMII is not set 507# CONFIG_IBM_NEW_EMAC_RGMII is not set
510# CONFIG_IBM_NEW_EMAC_TAH is not set 508# CONFIG_IBM_NEW_EMAC_TAH is not set
511# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 509# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
510# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
511# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
512# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
512# CONFIG_B44 is not set 513# CONFIG_B44 is not set
513# CONFIG_NETDEV_1000 is not set 514# CONFIG_NETDEV_1000 is not set
514# CONFIG_NETDEV_10000 is not set 515# CONFIG_NETDEV_10000 is not set
@@ -541,7 +542,7 @@ CONFIG_SMC911X=y
541# Input device support 542# Input device support
542# 543#
543CONFIG_INPUT=y 544CONFIG_INPUT=y
544# CONFIG_INPUT_FF_MEMLESS is not set 545CONFIG_INPUT_FF_MEMLESS=m
545# CONFIG_INPUT_POLLDEV is not set 546# CONFIG_INPUT_POLLDEV is not set
546 547
547# 548#
@@ -615,6 +616,8 @@ CONFIG_SSB_POSSIBLE=y
615# CONFIG_MFD_CORE is not set 616# CONFIG_MFD_CORE is not set
616# CONFIG_MFD_SM501 is not set 617# CONFIG_MFD_SM501 is not set
617# CONFIG_HTC_PASIC3 is not set 618# CONFIG_HTC_PASIC3 is not set
619# CONFIG_MFD_TMIO is not set
620# CONFIG_MFD_WM8400 is not set
618 621
619# 622#
620# Multimedia devices 623# Multimedia devices
@@ -655,9 +658,36 @@ CONFIG_HID=y
655# USB Input Devices 658# USB Input Devices
656# 659#
657CONFIG_USB_HID=y 660CONFIG_USB_HID=y
658# CONFIG_USB_HIDINPUT_POWERBOOK is not set 661# CONFIG_HID_PID is not set
659# CONFIG_HID_FF is not set
660# CONFIG_USB_HIDDEV is not set 662# CONFIG_USB_HIDDEV is not set
663
664#
665# Special HID drivers
666#
667CONFIG_HID_COMPAT=y
668CONFIG_HID_A4TECH=y
669CONFIG_HID_APPLE=y
670CONFIG_HID_BELKIN=y
671CONFIG_HID_BRIGHT=y
672CONFIG_HID_CHERRY=y
673CONFIG_HID_CHICONY=y
674CONFIG_HID_CYPRESS=y
675CONFIG_HID_DELL=y
676CONFIG_HID_EZKEY=y
677CONFIG_HID_GYRATION=y
678CONFIG_HID_LOGITECH=y
679# CONFIG_LOGITECH_FF is not set
680# CONFIG_LOGIRUMBLEPAD2_FF is not set
681CONFIG_HID_MICROSOFT=y
682CONFIG_HID_MONTEREY=y
683CONFIG_HID_PANTHERLORD=y
684# CONFIG_PANTHERLORD_FF is not set
685CONFIG_HID_PETALYNX=y
686CONFIG_HID_SAMSUNG=y
687CONFIG_HID_SONY=y
688CONFIG_HID_SUNPLUS=y
689CONFIG_THRUSTMASTER_FF=m
690CONFIG_ZEROPLUS_FF=m
661CONFIG_USB_SUPPORT=y 691CONFIG_USB_SUPPORT=y
662CONFIG_USB_ARCH_HAS_HCD=y 692CONFIG_USB_ARCH_HAS_HCD=y
663# CONFIG_USB_ARCH_HAS_OHCI is not set 693# CONFIG_USB_ARCH_HAS_OHCI is not set
@@ -675,6 +705,7 @@ CONFIG_USB_DEVICE_CLASS=y
675# CONFIG_USB_OTG is not set 705# CONFIG_USB_OTG is not set
676# CONFIG_USB_OTG_WHITELIST is not set 706# CONFIG_USB_OTG_WHITELIST is not set
677# CONFIG_USB_OTG_BLACKLIST_HUB is not set 707# CONFIG_USB_OTG_BLACKLIST_HUB is not set
708CONFIG_USB_MON=y
678 709
679# 710#
680# USB Host Controller Drivers 711# USB Host Controller Drivers
@@ -691,6 +722,7 @@ CONFIG_USB_R8A66597_HCD=y
691# CONFIG_USB_ACM is not set 722# CONFIG_USB_ACM is not set
692# CONFIG_USB_PRINTER is not set 723# CONFIG_USB_PRINTER is not set
693# CONFIG_USB_WDM is not set 724# CONFIG_USB_WDM is not set
725# CONFIG_USB_TMC is not set
694 726
695# 727#
696# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 728# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -705,7 +737,6 @@ CONFIG_USB_R8A66597_HCD=y
705# USB Imaging devices 737# USB Imaging devices
706# 738#
707# CONFIG_USB_MDC800 is not set 739# CONFIG_USB_MDC800 is not set
708CONFIG_USB_MON=y
709 740
710# 741#
711# USB port drivers 742# USB port drivers
@@ -718,7 +749,7 @@ CONFIG_USB_MON=y
718# CONFIG_USB_EMI62 is not set 749# CONFIG_USB_EMI62 is not set
719# CONFIG_USB_EMI26 is not set 750# CONFIG_USB_EMI26 is not set
720# CONFIG_USB_ADUTUX is not set 751# CONFIG_USB_ADUTUX is not set
721# CONFIG_USB_AUERSWALD is not set 752# CONFIG_USB_SEVSEG is not set
722# CONFIG_USB_RIO500 is not set 753# CONFIG_USB_RIO500 is not set
723# CONFIG_USB_LEGOTOWER is not set 754# CONFIG_USB_LEGOTOWER is not set
724# CONFIG_USB_LCD is not set 755# CONFIG_USB_LCD is not set
@@ -735,6 +766,7 @@ CONFIG_USB_MON=y
735# CONFIG_USB_IOWARRIOR is not set 766# CONFIG_USB_IOWARRIOR is not set
736# CONFIG_USB_TEST is not set 767# CONFIG_USB_TEST is not set
737# CONFIG_USB_ISIGHTFW is not set 768# CONFIG_USB_ISIGHTFW is not set
769# CONFIG_USB_VST is not set
738# CONFIG_USB_GADGET is not set 770# CONFIG_USB_GADGET is not set
739# CONFIG_MMC is not set 771# CONFIG_MMC is not set
740# CONFIG_MEMSTICK is not set 772# CONFIG_MEMSTICK is not set
@@ -762,12 +794,15 @@ CONFIG_RTC_INTF_DEV=y
762# 794#
763# Platform RTC drivers 795# Platform RTC drivers
764# 796#
797# CONFIG_RTC_DRV_DS1286 is not set
765# CONFIG_RTC_DRV_DS1511 is not set 798# CONFIG_RTC_DRV_DS1511 is not set
766# CONFIG_RTC_DRV_DS1553 is not set 799# CONFIG_RTC_DRV_DS1553 is not set
767# CONFIG_RTC_DRV_DS1742 is not set 800# CONFIG_RTC_DRV_DS1742 is not set
768# CONFIG_RTC_DRV_STK17TA8 is not set 801# CONFIG_RTC_DRV_STK17TA8 is not set
769# CONFIG_RTC_DRV_M48T86 is not set 802# CONFIG_RTC_DRV_M48T86 is not set
803# CONFIG_RTC_DRV_M48T35 is not set
770# CONFIG_RTC_DRV_M48T59 is not set 804# CONFIG_RTC_DRV_M48T59 is not set
805# CONFIG_RTC_DRV_BQ4802 is not set
771# CONFIG_RTC_DRV_V3020 is not set 806# CONFIG_RTC_DRV_V3020 is not set
772 807
773# 808#
@@ -776,16 +811,18 @@ CONFIG_RTC_INTF_DEV=y
776CONFIG_RTC_DRV_SH=y 811CONFIG_RTC_DRV_SH=y
777# CONFIG_DMADEVICES is not set 812# CONFIG_DMADEVICES is not set
778# CONFIG_UIO is not set 813# CONFIG_UIO is not set
814# CONFIG_STAGING is not set
779 815
780# 816#
781# File systems 817# File systems
782# 818#
783# CONFIG_EXT2_FS is not set 819# CONFIG_EXT2_FS is not set
784# CONFIG_EXT3_FS is not set 820# CONFIG_EXT3_FS is not set
785# CONFIG_EXT4DEV_FS is not set 821# CONFIG_EXT4_FS is not set
786# CONFIG_REISERFS_FS is not set 822# CONFIG_REISERFS_FS is not set
787# CONFIG_JFS_FS is not set 823# CONFIG_JFS_FS is not set
788# CONFIG_FS_POSIX_ACL is not set 824# CONFIG_FS_POSIX_ACL is not set
825CONFIG_FILE_LOCKING=y
789# CONFIG_XFS_FS is not set 826# CONFIG_XFS_FS is not set
790# CONFIG_OCFS2_FS is not set 827# CONFIG_OCFS2_FS is not set
791# CONFIG_DNOTIFY is not set 828# CONFIG_DNOTIFY is not set
@@ -847,6 +884,7 @@ CONFIG_ROOT_NFS=y
847CONFIG_LOCKD=y 884CONFIG_LOCKD=y
848CONFIG_NFS_COMMON=y 885CONFIG_NFS_COMMON=y
849CONFIG_SUNRPC=y 886CONFIG_SUNRPC=y
887# CONFIG_SUNRPC_REGISTER_V4 is not set
850# CONFIG_RPCSEC_GSS_KRB5 is not set 888# CONFIG_RPCSEC_GSS_KRB5 is not set
851# CONFIG_RPCSEC_GSS_SPKM3 is not set 889# CONFIG_RPCSEC_GSS_SPKM3 is not set
852# CONFIG_SMB_FS is not set 890# CONFIG_SMB_FS is not set
@@ -905,10 +943,21 @@ CONFIG_DEBUG_WRITECOUNT=y
905CONFIG_DEBUG_LIST=y 943CONFIG_DEBUG_LIST=y
906CONFIG_DEBUG_SG=y 944CONFIG_DEBUG_SG=y
907CONFIG_FRAME_POINTER=y 945CONFIG_FRAME_POINTER=y
908# CONFIG_BOOT_PRINTK_DELAY is not set
909# CONFIG_RCU_TORTURE_TEST is not set 946# CONFIG_RCU_TORTURE_TEST is not set
947# CONFIG_RCU_CPU_STALL_DETECTOR is not set
910# CONFIG_BACKTRACE_SELF_TEST is not set 948# CONFIG_BACKTRACE_SELF_TEST is not set
949# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
911# CONFIG_FAULT_INJECTION is not set 950# CONFIG_FAULT_INJECTION is not set
951# CONFIG_LATENCYTOP is not set
952CONFIG_SYSCTL_SYSCALL_CHECK=y
953CONFIG_NOP_TRACER=y
954CONFIG_HAVE_FTRACE=y
955# CONFIG_FTRACE is not set
956# CONFIG_SCHED_TRACER is not set
957# CONFIG_CONTEXT_SWITCH_TRACER is not set
958# CONFIG_BOOT_TRACER is not set
959# CONFIG_STACK_TRACER is not set
960# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
912# CONFIG_SAMPLES is not set 961# CONFIG_SAMPLES is not set
913# CONFIG_SH_STANDARD_BIOS is not set 962# CONFIG_SH_STANDARD_BIOS is not set
914CONFIG_EARLY_SCIF_CONSOLE=y 963CONFIG_EARLY_SCIF_CONSOLE=y
@@ -924,6 +973,7 @@ CONFIG_DEBUG_STACK_USAGE=y
924# 973#
925# CONFIG_KEYS is not set 974# CONFIG_KEYS is not set
926# CONFIG_SECURITY is not set 975# CONFIG_SECURITY is not set
976# CONFIG_SECURITYFS is not set
927# CONFIG_SECURITY_FILE_CAPABILITIES is not set 977# CONFIG_SECURITY_FILE_CAPABILITIES is not set
928# CONFIG_CRYPTO is not set 978# CONFIG_CRYPTO is not set
929 979
@@ -931,7 +981,6 @@ CONFIG_DEBUG_STACK_USAGE=y
931# Library routines 981# Library routines
932# 982#
933CONFIG_BITREVERSE=y 983CONFIG_BITREVERSE=y
934# CONFIG_GENERIC_FIND_FIRST_BIT is not set
935# CONFIG_CRC_CCITT is not set 984# CONFIG_CRC_CCITT is not set
936# CONFIG_CRC16 is not set 985# CONFIG_CRC16 is not set
937# CONFIG_CRC_T10DIF is not set 986# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/rts7751r2d1_defconfig b/arch/sh/configs/rts7751r2d1_defconfig
index 8413236c1b37..7d2a9e88838b 100644
--- a/arch/sh/configs/rts7751r2d1_defconfig
+++ b/arch/sh/configs/rts7751r2d1_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:55:52 2008 4# Wed Oct 22 18:44:36 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,17 +11,18 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
19CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_IO_TRAPPED=y 26CONFIG_IO_TRAPPED=y
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
27 28
@@ -69,7 +70,9 @@ CONFIG_SIGNALFD=y
69CONFIG_TIMERFD=y 70CONFIG_TIMERFD=y
70CONFIG_EVENTFD=y 71CONFIG_EVENTFD=y
71CONFIG_SHMEM=y 72CONFIG_SHMEM=y
73CONFIG_AIO=y
72CONFIG_VM_EVENT_COUNTERS=y 74CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
73CONFIG_SLAB=y 76CONFIG_SLAB=y
74# CONFIG_SLUB is not set 77# CONFIG_SLUB is not set
75# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
@@ -77,15 +80,13 @@ CONFIG_PROFILING=y
77# CONFIG_MARKERS is not set 80# CONFIG_MARKERS is not set
78CONFIG_OPROFILE=y 81CONFIG_OPROFILE=y
79CONFIG_HAVE_OPROFILE=y 82CONFIG_HAVE_OPROFILE=y
80# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 83# CONFIG_KPROBES is not set
81# CONFIG_HAVE_IOREMAP_PROT is not set 84CONFIG_HAVE_IOREMAP_PROT=y
82# CONFIG_HAVE_KPROBES is not set 85CONFIG_HAVE_KPROBES=y
83# CONFIG_HAVE_KRETPROBES is not set 86CONFIG_HAVE_KRETPROBES=y
84# CONFIG_HAVE_ARCH_TRACEHOOK is not set 87CONFIG_HAVE_ARCH_TRACEHOOK=y
85# CONFIG_HAVE_DMA_ATTRS is not set
86# CONFIG_USE_GENERIC_SMP_HELPERS is not set
87CONFIG_HAVE_CLK=y 88CONFIG_HAVE_CLK=y
88CONFIG_PROC_PAGE_MONITOR=y 89CONFIG_HAVE_GENERIC_DMA_COHERENT=y
89CONFIG_SLABINFO=y 90CONFIG_SLABINFO=y
90CONFIG_RT_MUTEXES=y 91CONFIG_RT_MUTEXES=y
91# CONFIG_TINY_SHMEM is not set 92# CONFIG_TINY_SHMEM is not set
@@ -116,6 +117,7 @@ CONFIG_DEFAULT_AS=y
116# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
117CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_FREEZER is not set
119 121
120# 122#
121# System type 123# System type
@@ -183,12 +185,13 @@ CONFIG_FLATMEM_MANUAL=y
183CONFIG_FLATMEM=y 185CONFIG_FLATMEM=y
184CONFIG_FLAT_NODE_MEM_MAP=y 186CONFIG_FLAT_NODE_MEM_MAP=y
185CONFIG_SPARSEMEM_STATIC=y 187CONFIG_SPARSEMEM_STATIC=y
186# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
187CONFIG_PAGEFLAGS_EXTENDED=y 188CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 189CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set 190# CONFIG_RESOURCES_64BIT is not set
191# CONFIG_PHYS_ADDR_T_64BIT is not set
190CONFIG_ZONE_DMA_FLAG=0 192CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=2 193CONFIG_NR_QUICK=2
194CONFIG_UNEVICTABLE_LRU=y
192 195
193# 196#
194# Cache configuration 197# Cache configuration
@@ -232,7 +235,6 @@ CONFIG_RTS7751R2D_1=y
232CONFIG_SH_TMU=y 235CONFIG_SH_TMU=y
233CONFIG_SH_TIMER_IRQ=16 236CONFIG_SH_TIMER_IRQ=16
234CONFIG_SH_PCLK_FREQ=60000000 237CONFIG_SH_PCLK_FREQ=60000000
235# CONFIG_TICK_ONESHOT is not set
236# CONFIG_NO_HZ is not set 238# CONFIG_NO_HZ is not set
237# CONFIG_HIGH_RES_TIMERS is not set 239# CONFIG_HIGH_RES_TIMERS is not set
238CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 240CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -268,6 +270,7 @@ CONFIG_HZ=250
268# CONFIG_SCHED_HRTICK is not set 270# CONFIG_SCHED_HRTICK is not set
269# CONFIG_KEXEC is not set 271# CONFIG_KEXEC is not set
270# CONFIG_CRASH_DUMP is not set 272# CONFIG_CRASH_DUMP is not set
273# CONFIG_SECCOMP is not set
271CONFIG_PREEMPT_NONE=y 274CONFIG_PREEMPT_NONE=y
272# CONFIG_PREEMPT_VOLUNTARY is not set 275# CONFIG_PREEMPT_VOLUNTARY is not set
273# CONFIG_PREEMPT is not set 276# CONFIG_PREEMPT is not set
@@ -302,11 +305,9 @@ CONFIG_HOTPLUG_PCI=y
302# Executable file formats 305# Executable file formats
303# 306#
304CONFIG_BINFMT_ELF=y 307CONFIG_BINFMT_ELF=y
308# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
309# CONFIG_HAVE_AOUT is not set
305# CONFIG_BINFMT_MISC is not set 310# CONFIG_BINFMT_MISC is not set
306
307#
308# Networking
309#
310CONFIG_NET=y 311CONFIG_NET=y
311 312
312# 313#
@@ -353,6 +354,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
353# CONFIG_TIPC is not set 354# CONFIG_TIPC is not set
354# CONFIG_ATM is not set 355# CONFIG_ATM is not set
355# CONFIG_BRIDGE is not set 356# CONFIG_BRIDGE is not set
357# CONFIG_NET_DSA is not set
356# CONFIG_VLAN_8021Q is not set 358# CONFIG_VLAN_8021Q is not set
357# CONFIG_DECNET is not set 359# CONFIG_DECNET is not set
358# CONFIG_LLC2 is not set 360# CONFIG_LLC2 is not set
@@ -373,11 +375,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
373# CONFIG_IRDA is not set 375# CONFIG_IRDA is not set
374# CONFIG_BT is not set 376# CONFIG_BT is not set
375# CONFIG_AF_RXRPC is not set 377# CONFIG_AF_RXRPC is not set
376 378# CONFIG_PHONET is not set
377# 379CONFIG_WIRELESS=y
378# Wireless
379#
380# CONFIG_CFG80211 is not set 380# CONFIG_CFG80211 is not set
381# CONFIG_WIRELESS_OLD_REGULATORY is not set
381CONFIG_WIRELESS_EXT=y 382CONFIG_WIRELESS_EXT=y
382CONFIG_WIRELESS_EXT_SYSFS=y 383CONFIG_WIRELESS_EXT_SYSFS=y
383# CONFIG_MAC80211 is not set 384# CONFIG_MAC80211 is not set
@@ -598,6 +599,9 @@ CONFIG_MII=y
598# CONFIG_IBM_NEW_EMAC_RGMII is not set 599# CONFIG_IBM_NEW_EMAC_RGMII is not set
599# CONFIG_IBM_NEW_EMAC_TAH is not set 600# CONFIG_IBM_NEW_EMAC_TAH is not set
600# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 601# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
602# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
603# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
604# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
601CONFIG_NET_PCI=y 605CONFIG_NET_PCI=y
602# CONFIG_PCNET32 is not set 606# CONFIG_PCNET32 is not set
603# CONFIG_AMD8111_ETH is not set 607# CONFIG_AMD8111_ETH is not set
@@ -622,6 +626,7 @@ CONFIG_8139TOO=y
622# CONFIG_TLAN is not set 626# CONFIG_TLAN is not set
623# CONFIG_VIA_RHINE is not set 627# CONFIG_VIA_RHINE is not set
624# CONFIG_SC92031 is not set 628# CONFIG_SC92031 is not set
629# CONFIG_ATL2 is not set
625CONFIG_NETDEV_1000=y 630CONFIG_NETDEV_1000=y
626# CONFIG_ACENIC is not set 631# CONFIG_ACENIC is not set
627# CONFIG_DL2K is not set 632# CONFIG_DL2K is not set
@@ -642,9 +647,11 @@ CONFIG_NETDEV_1000=y
642# CONFIG_QLA3XXX is not set 647# CONFIG_QLA3XXX is not set
643# CONFIG_ATL1 is not set 648# CONFIG_ATL1 is not set
644# CONFIG_ATL1E is not set 649# CONFIG_ATL1E is not set
650# CONFIG_JME is not set
645CONFIG_NETDEV_10000=y 651CONFIG_NETDEV_10000=y
646# CONFIG_CHELSIO_T1 is not set 652# CONFIG_CHELSIO_T1 is not set
647# CONFIG_CHELSIO_T3 is not set 653# CONFIG_CHELSIO_T3 is not set
654# CONFIG_ENIC is not set
648# CONFIG_IXGBE is not set 655# CONFIG_IXGBE is not set
649# CONFIG_IXGB is not set 656# CONFIG_IXGB is not set
650# CONFIG_S2IO is not set 657# CONFIG_S2IO is not set
@@ -654,6 +661,7 @@ CONFIG_NETDEV_10000=y
654# CONFIG_MLX4_CORE is not set 661# CONFIG_MLX4_CORE is not set
655# CONFIG_TEHUTI is not set 662# CONFIG_TEHUTI is not set
656# CONFIG_BNX2X is not set 663# CONFIG_BNX2X is not set
664# CONFIG_QLGE is not set
657# CONFIG_SFC is not set 665# CONFIG_SFC is not set
658# CONFIG_TR is not set 666# CONFIG_TR is not set
659 667
@@ -688,7 +696,7 @@ CONFIG_NETDEV_10000=y
688# Input device support 696# Input device support
689# 697#
690CONFIG_INPUT=y 698CONFIG_INPUT=y
691# CONFIG_INPUT_FF_MEMLESS is not set 699CONFIG_INPUT_FF_MEMLESS=m
692# CONFIG_INPUT_POLLDEV is not set 700# CONFIG_INPUT_POLLDEV is not set
693 701
694# 702#
@@ -776,11 +784,13 @@ CONFIG_SPI_SH_SCI=y
776# CONFIG_POWER_SUPPLY is not set 784# CONFIG_POWER_SUPPLY is not set
777CONFIG_HWMON=y 785CONFIG_HWMON=y
778# CONFIG_HWMON_VID is not set 786# CONFIG_HWMON_VID is not set
787# CONFIG_SENSORS_ADCXX is not set
779# CONFIG_SENSORS_I5K_AMB is not set 788# CONFIG_SENSORS_I5K_AMB is not set
780# CONFIG_SENSORS_F71805F is not set 789# CONFIG_SENSORS_F71805F is not set
781# CONFIG_SENSORS_F71882FG is not set 790# CONFIG_SENSORS_F71882FG is not set
782# CONFIG_SENSORS_IT87 is not set 791# CONFIG_SENSORS_IT87 is not set
783# CONFIG_SENSORS_LM70 is not set 792# CONFIG_SENSORS_LM70 is not set
793# CONFIG_SENSORS_MAX1111 is not set
784# CONFIG_SENSORS_PC87360 is not set 794# CONFIG_SENSORS_PC87360 is not set
785# CONFIG_SENSORS_PC87427 is not set 795# CONFIG_SENSORS_PC87427 is not set
786# CONFIG_SENSORS_SIS5595 is not set 796# CONFIG_SENSORS_SIS5595 is not set
@@ -808,6 +818,8 @@ CONFIG_SSB_POSSIBLE=y
808# CONFIG_MFD_CORE is not set 818# CONFIG_MFD_CORE is not set
809CONFIG_MFD_SM501=y 819CONFIG_MFD_SM501=y
810# CONFIG_HTC_PASIC3 is not set 820# CONFIG_HTC_PASIC3 is not set
821# CONFIG_MFD_TMIO is not set
822# CONFIG_MFD_WM8400 is not set
811 823
812# 824#
813# Multimedia devices 825# Multimedia devices
@@ -835,6 +847,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
835CONFIG_FB=y 847CONFIG_FB=y
836# CONFIG_FIRMWARE_EDID is not set 848# CONFIG_FIRMWARE_EDID is not set
837# CONFIG_FB_DDC is not set 849# CONFIG_FB_DDC is not set
850# CONFIG_FB_BOOT_VESA_SUPPORT is not set
838CONFIG_FB_CFB_FILLRECT=y 851CONFIG_FB_CFB_FILLRECT=y
839CONFIG_FB_CFB_COPYAREA=y 852CONFIG_FB_CFB_COPYAREA=y
840CONFIG_FB_CFB_IMAGEBLIT=y 853CONFIG_FB_CFB_IMAGEBLIT=y
@@ -868,6 +881,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
868# CONFIG_FB_S3 is not set 881# CONFIG_FB_S3 is not set
869# CONFIG_FB_SAVAGE is not set 882# CONFIG_FB_SAVAGE is not set
870# CONFIG_FB_SIS is not set 883# CONFIG_FB_SIS is not set
884# CONFIG_FB_VIA is not set
871# CONFIG_FB_NEOMAGIC is not set 885# CONFIG_FB_NEOMAGIC is not set
872# CONFIG_FB_KYRO is not set 886# CONFIG_FB_KYRO is not set
873# CONFIG_FB_3DFX is not set 887# CONFIG_FB_3DFX is not set
@@ -880,6 +894,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
880CONFIG_FB_SH_MOBILE_LCDC=m 894CONFIG_FB_SH_MOBILE_LCDC=m
881CONFIG_FB_SM501=y 895CONFIG_FB_SM501=y
882# CONFIG_FB_VIRTUAL is not set 896# CONFIG_FB_VIRTUAL is not set
897# CONFIG_FB_METRONOME is not set
883# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 898# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
884 899
885# 900#
@@ -905,6 +920,7 @@ CONFIG_LOGO=y
905# CONFIG_LOGO_SUPERH_VGA16 is not set 920# CONFIG_LOGO_SUPERH_VGA16 is not set
906CONFIG_LOGO_SUPERH_CLUT224=y 921CONFIG_LOGO_SUPERH_CLUT224=y
907CONFIG_SOUND=y 922CONFIG_SOUND=y
923CONFIG_SOUND_OSS_CORE=y
908CONFIG_SND=m 924CONFIG_SND=m
909CONFIG_SND_TIMER=m 925CONFIG_SND_TIMER=m
910CONFIG_SND_PCM=m 926CONFIG_SND_PCM=m
@@ -1005,9 +1021,36 @@ CONFIG_HID=y
1005# USB Input Devices 1021# USB Input Devices
1006# 1022#
1007CONFIG_USB_HID=y 1023CONFIG_USB_HID=y
1008# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1024# CONFIG_HID_PID is not set
1009# CONFIG_HID_FF is not set
1010# CONFIG_USB_HIDDEV is not set 1025# CONFIG_USB_HIDDEV is not set
1026
1027#
1028# Special HID drivers
1029#
1030CONFIG_HID_COMPAT=y
1031CONFIG_HID_A4TECH=y
1032CONFIG_HID_APPLE=y
1033CONFIG_HID_BELKIN=y
1034CONFIG_HID_BRIGHT=y
1035CONFIG_HID_CHERRY=y
1036CONFIG_HID_CHICONY=y
1037CONFIG_HID_CYPRESS=y
1038CONFIG_HID_DELL=y
1039CONFIG_HID_EZKEY=y
1040CONFIG_HID_GYRATION=y
1041CONFIG_HID_LOGITECH=y
1042# CONFIG_LOGITECH_FF is not set
1043# CONFIG_LOGIRUMBLEPAD2_FF is not set
1044CONFIG_HID_MICROSOFT=y
1045CONFIG_HID_MONTEREY=y
1046CONFIG_HID_PANTHERLORD=y
1047# CONFIG_PANTHERLORD_FF is not set
1048CONFIG_HID_PETALYNX=y
1049CONFIG_HID_SAMSUNG=y
1050CONFIG_HID_SONY=y
1051CONFIG_HID_SUNPLUS=y
1052CONFIG_THRUSTMASTER_FF=m
1053CONFIG_ZEROPLUS_FF=m
1011CONFIG_USB_SUPPORT=y 1054CONFIG_USB_SUPPORT=y
1012CONFIG_USB_ARCH_HAS_HCD=y 1055CONFIG_USB_ARCH_HAS_HCD=y
1013CONFIG_USB_ARCH_HAS_OHCI=y 1056CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1025,6 +1068,7 @@ CONFIG_USB_DEVICE_CLASS=y
1025# CONFIG_USB_OTG is not set 1068# CONFIG_USB_OTG is not set
1026# CONFIG_USB_OTG_WHITELIST is not set 1069# CONFIG_USB_OTG_WHITELIST is not set
1027# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1070# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1071# CONFIG_USB_MON is not set
1028 1072
1029# 1073#
1030# USB Host Controller Drivers 1074# USB Host Controller Drivers
@@ -1047,6 +1091,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1047# CONFIG_USB_ACM is not set 1091# CONFIG_USB_ACM is not set
1048# CONFIG_USB_PRINTER is not set 1092# CONFIG_USB_PRINTER is not set
1049# CONFIG_USB_WDM is not set 1093# CONFIG_USB_WDM is not set
1094# CONFIG_USB_TMC is not set
1050 1095
1051# 1096#
1052# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1097# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1076,7 +1121,6 @@ CONFIG_USB_LIBUSUAL=y
1076# 1121#
1077# CONFIG_USB_MDC800 is not set 1122# CONFIG_USB_MDC800 is not set
1078# CONFIG_USB_MICROTEK is not set 1123# CONFIG_USB_MICROTEK is not set
1079# CONFIG_USB_MON is not set
1080 1124
1081# 1125#
1082# USB port drivers 1126# USB port drivers
@@ -1089,7 +1133,7 @@ CONFIG_USB_LIBUSUAL=y
1089# CONFIG_USB_EMI62 is not set 1133# CONFIG_USB_EMI62 is not set
1090# CONFIG_USB_EMI26 is not set 1134# CONFIG_USB_EMI26 is not set
1091# CONFIG_USB_ADUTUX is not set 1135# CONFIG_USB_ADUTUX is not set
1092# CONFIG_USB_AUERSWALD is not set 1136# CONFIG_USB_SEVSEG is not set
1093# CONFIG_USB_RIO500 is not set 1137# CONFIG_USB_RIO500 is not set
1094# CONFIG_USB_LEGOTOWER is not set 1138# CONFIG_USB_LEGOTOWER is not set
1095# CONFIG_USB_LCD is not set 1139# CONFIG_USB_LCD is not set
@@ -1105,6 +1149,7 @@ CONFIG_USB_LIBUSUAL=y
1105# CONFIG_USB_TRANCEVIBRATOR is not set 1149# CONFIG_USB_TRANCEVIBRATOR is not set
1106# CONFIG_USB_IOWARRIOR is not set 1150# CONFIG_USB_IOWARRIOR is not set
1107# CONFIG_USB_ISIGHTFW is not set 1151# CONFIG_USB_ISIGHTFW is not set
1152# CONFIG_USB_VST is not set
1108# CONFIG_USB_GADGET is not set 1153# CONFIG_USB_GADGET is not set
1109# CONFIG_MMC is not set 1154# CONFIG_MMC is not set
1110# CONFIG_MEMSTICK is not set 1155# CONFIG_MEMSTICK is not set
@@ -1134,16 +1179,20 @@ CONFIG_RTC_INTF_DEV=y
1134# CONFIG_RTC_DRV_MAX6902 is not set 1179# CONFIG_RTC_DRV_MAX6902 is not set
1135CONFIG_RTC_DRV_R9701=y 1180CONFIG_RTC_DRV_R9701=y
1136# CONFIG_RTC_DRV_RS5C348 is not set 1181# CONFIG_RTC_DRV_RS5C348 is not set
1182# CONFIG_RTC_DRV_DS3234 is not set
1137 1183
1138# 1184#
1139# Platform RTC drivers 1185# Platform RTC drivers
1140# 1186#
1187# CONFIG_RTC_DRV_DS1286 is not set
1141# CONFIG_RTC_DRV_DS1511 is not set 1188# CONFIG_RTC_DRV_DS1511 is not set
1142# CONFIG_RTC_DRV_DS1553 is not set 1189# CONFIG_RTC_DRV_DS1553 is not set
1143# CONFIG_RTC_DRV_DS1742 is not set 1190# CONFIG_RTC_DRV_DS1742 is not set
1144# CONFIG_RTC_DRV_STK17TA8 is not set 1191# CONFIG_RTC_DRV_STK17TA8 is not set
1145# CONFIG_RTC_DRV_M48T86 is not set 1192# CONFIG_RTC_DRV_M48T86 is not set
1193# CONFIG_RTC_DRV_M48T35 is not set
1146# CONFIG_RTC_DRV_M48T59 is not set 1194# CONFIG_RTC_DRV_M48T59 is not set
1195# CONFIG_RTC_DRV_BQ4802 is not set
1147# CONFIG_RTC_DRV_V3020 is not set 1196# CONFIG_RTC_DRV_V3020 is not set
1148 1197
1149# 1198#
@@ -1152,6 +1201,7 @@ CONFIG_RTC_DRV_R9701=y
1152# CONFIG_RTC_DRV_SH is not set 1201# CONFIG_RTC_DRV_SH is not set
1153# CONFIG_DMADEVICES is not set 1202# CONFIG_DMADEVICES is not set
1154# CONFIG_UIO is not set 1203# CONFIG_UIO is not set
1204# CONFIG_STAGING is not set
1155 1205
1156# 1206#
1157# File systems 1207# File systems
@@ -1160,10 +1210,11 @@ CONFIG_EXT2_FS=y
1160# CONFIG_EXT2_FS_XATTR is not set 1210# CONFIG_EXT2_FS_XATTR is not set
1161# CONFIG_EXT2_FS_XIP is not set 1211# CONFIG_EXT2_FS_XIP is not set
1162# CONFIG_EXT3_FS is not set 1212# CONFIG_EXT3_FS is not set
1163# CONFIG_EXT4DEV_FS is not set 1213# CONFIG_EXT4_FS is not set
1164# CONFIG_REISERFS_FS is not set 1214# CONFIG_REISERFS_FS is not set
1165# CONFIG_JFS_FS is not set 1215# CONFIG_JFS_FS is not set
1166# CONFIG_FS_POSIX_ACL is not set 1216# CONFIG_FS_POSIX_ACL is not set
1217CONFIG_FILE_LOCKING=y
1167# CONFIG_XFS_FS is not set 1218# CONFIG_XFS_FS is not set
1168# CONFIG_OCFS2_FS is not set 1219# CONFIG_OCFS2_FS is not set
1169CONFIG_DNOTIFY=y 1220CONFIG_DNOTIFY=y
@@ -1196,6 +1247,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1196CONFIG_PROC_FS=y 1247CONFIG_PROC_FS=y
1197CONFIG_PROC_KCORE=y 1248CONFIG_PROC_KCORE=y
1198CONFIG_PROC_SYSCTL=y 1249CONFIG_PROC_SYSCTL=y
1250CONFIG_PROC_PAGE_MONITOR=y
1199CONFIG_SYSFS=y 1251CONFIG_SYSFS=y
1200CONFIG_TMPFS=y 1252CONFIG_TMPFS=y
1201# CONFIG_TMPFS_POSIX_ACL is not set 1253# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1293,6 +1345,11 @@ CONFIG_DEBUG_FS=y
1293# CONFIG_DEBUG_KERNEL is not set 1345# CONFIG_DEBUG_KERNEL is not set
1294# CONFIG_DEBUG_BUGVERBOSE is not set 1346# CONFIG_DEBUG_BUGVERBOSE is not set
1295# CONFIG_DEBUG_MEMORY_INIT is not set 1347# CONFIG_DEBUG_MEMORY_INIT is not set
1348# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1349# CONFIG_LATENCYTOP is not set
1350CONFIG_NOP_TRACER=y
1351CONFIG_HAVE_FTRACE=y
1352# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1296# CONFIG_SAMPLES is not set 1353# CONFIG_SAMPLES is not set
1297# CONFIG_SH_STANDARD_BIOS is not set 1354# CONFIG_SH_STANDARD_BIOS is not set
1298CONFIG_EARLY_SCIF_CONSOLE=y 1355CONFIG_EARLY_SCIF_CONSOLE=y
@@ -1305,12 +1362,14 @@ CONFIG_EARLY_PRINTK=y
1305# 1362#
1306# CONFIG_KEYS is not set 1363# CONFIG_KEYS is not set
1307# CONFIG_SECURITY is not set 1364# CONFIG_SECURITY is not set
1365# CONFIG_SECURITYFS is not set
1308# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1366# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1309CONFIG_CRYPTO=y 1367CONFIG_CRYPTO=y
1310 1368
1311# 1369#
1312# Crypto core or helper 1370# Crypto core or helper
1313# 1371#
1372# CONFIG_CRYPTO_FIPS is not set
1314# CONFIG_CRYPTO_MANAGER is not set 1373# CONFIG_CRYPTO_MANAGER is not set
1315# CONFIG_CRYPTO_GF128MUL is not set 1374# CONFIG_CRYPTO_GF128MUL is not set
1316# CONFIG_CRYPTO_NULL is not set 1375# CONFIG_CRYPTO_NULL is not set
@@ -1383,6 +1442,11 @@ CONFIG_CRYPTO=y
1383# 1442#
1384# CONFIG_CRYPTO_DEFLATE is not set 1443# CONFIG_CRYPTO_DEFLATE is not set
1385# CONFIG_CRYPTO_LZO is not set 1444# CONFIG_CRYPTO_LZO is not set
1445
1446#
1447# Random Number Generation
1448#
1449# CONFIG_CRYPTO_ANSI_CPRNG is not set
1386CONFIG_CRYPTO_HW=y 1450CONFIG_CRYPTO_HW=y
1387# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1451# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1388 1452
@@ -1390,7 +1454,6 @@ CONFIG_CRYPTO_HW=y
1390# Library routines 1454# Library routines
1391# 1455#
1392CONFIG_BITREVERSE=y 1456CONFIG_BITREVERSE=y
1393# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1394# CONFIG_CRC_CCITT is not set 1457# CONFIG_CRC_CCITT is not set
1395# CONFIG_CRC16 is not set 1458# CONFIG_CRC16 is not set
1396CONFIG_CRC_T10DIF=y 1459CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig
index 7d9fa6e9ded5..f680d3eecdfb 100644
--- a/arch/sh/configs/rts7751r2dplus_defconfig
+++ b/arch/sh/configs/rts7751r2dplus_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 01:59:18 2008 4# Wed Oct 22 18:47:39 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,17 +11,18 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
19CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_IO_TRAPPED=y 26CONFIG_IO_TRAPPED=y
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
27 28
@@ -69,7 +70,9 @@ CONFIG_SIGNALFD=y
69CONFIG_TIMERFD=y 70CONFIG_TIMERFD=y
70CONFIG_EVENTFD=y 71CONFIG_EVENTFD=y
71CONFIG_SHMEM=y 72CONFIG_SHMEM=y
73CONFIG_AIO=y
72CONFIG_VM_EVENT_COUNTERS=y 74CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
73CONFIG_SLAB=y 76CONFIG_SLAB=y
74# CONFIG_SLUB is not set 77# CONFIG_SLUB is not set
75# CONFIG_SLOB is not set 78# CONFIG_SLOB is not set
@@ -77,15 +80,13 @@ CONFIG_PROFILING=y
77# CONFIG_MARKERS is not set 80# CONFIG_MARKERS is not set
78CONFIG_OPROFILE=y 81CONFIG_OPROFILE=y
79CONFIG_HAVE_OPROFILE=y 82CONFIG_HAVE_OPROFILE=y
80# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 83# CONFIG_KPROBES is not set
81# CONFIG_HAVE_IOREMAP_PROT is not set 84CONFIG_HAVE_IOREMAP_PROT=y
82# CONFIG_HAVE_KPROBES is not set 85CONFIG_HAVE_KPROBES=y
83# CONFIG_HAVE_KRETPROBES is not set 86CONFIG_HAVE_KRETPROBES=y
84# CONFIG_HAVE_ARCH_TRACEHOOK is not set 87CONFIG_HAVE_ARCH_TRACEHOOK=y
85# CONFIG_HAVE_DMA_ATTRS is not set
86# CONFIG_USE_GENERIC_SMP_HELPERS is not set
87CONFIG_HAVE_CLK=y 88CONFIG_HAVE_CLK=y
88CONFIG_PROC_PAGE_MONITOR=y 89CONFIG_HAVE_GENERIC_DMA_COHERENT=y
89CONFIG_SLABINFO=y 90CONFIG_SLABINFO=y
90CONFIG_RT_MUTEXES=y 91CONFIG_RT_MUTEXES=y
91# CONFIG_TINY_SHMEM is not set 92# CONFIG_TINY_SHMEM is not set
@@ -116,6 +117,7 @@ CONFIG_DEFAULT_AS=y
116# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
117CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_FREEZER is not set
119 121
120# 122#
121# System type 123# System type
@@ -183,12 +185,13 @@ CONFIG_FLATMEM_MANUAL=y
183CONFIG_FLATMEM=y 185CONFIG_FLATMEM=y
184CONFIG_FLAT_NODE_MEM_MAP=y 186CONFIG_FLAT_NODE_MEM_MAP=y
185CONFIG_SPARSEMEM_STATIC=y 187CONFIG_SPARSEMEM_STATIC=y
186# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
187CONFIG_PAGEFLAGS_EXTENDED=y 188CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 189CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set 190# CONFIG_RESOURCES_64BIT is not set
191# CONFIG_PHYS_ADDR_T_64BIT is not set
190CONFIG_ZONE_DMA_FLAG=0 192CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=2 193CONFIG_NR_QUICK=2
194CONFIG_UNEVICTABLE_LRU=y
192 195
193# 196#
194# Cache configuration 197# Cache configuration
@@ -232,7 +235,6 @@ CONFIG_RTS7751R2D_PLUS=y
232CONFIG_SH_TMU=y 235CONFIG_SH_TMU=y
233CONFIG_SH_TIMER_IRQ=16 236CONFIG_SH_TIMER_IRQ=16
234CONFIG_SH_PCLK_FREQ=60000000 237CONFIG_SH_PCLK_FREQ=60000000
235# CONFIG_TICK_ONESHOT is not set
236# CONFIG_NO_HZ is not set 238# CONFIG_NO_HZ is not set
237# CONFIG_HIGH_RES_TIMERS is not set 239# CONFIG_HIGH_RES_TIMERS is not set
238CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 240CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -268,6 +270,7 @@ CONFIG_HZ=250
268# CONFIG_SCHED_HRTICK is not set 270# CONFIG_SCHED_HRTICK is not set
269# CONFIG_KEXEC is not set 271# CONFIG_KEXEC is not set
270# CONFIG_CRASH_DUMP is not set 272# CONFIG_CRASH_DUMP is not set
273# CONFIG_SECCOMP is not set
271CONFIG_PREEMPT_NONE=y 274CONFIG_PREEMPT_NONE=y
272# CONFIG_PREEMPT_VOLUNTARY is not set 275# CONFIG_PREEMPT_VOLUNTARY is not set
273# CONFIG_PREEMPT is not set 276# CONFIG_PREEMPT is not set
@@ -302,11 +305,9 @@ CONFIG_HOTPLUG_PCI=y
302# Executable file formats 305# Executable file formats
303# 306#
304CONFIG_BINFMT_ELF=y 307CONFIG_BINFMT_ELF=y
308# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
309# CONFIG_HAVE_AOUT is not set
305# CONFIG_BINFMT_MISC is not set 310# CONFIG_BINFMT_MISC is not set
306
307#
308# Networking
309#
310CONFIG_NET=y 311CONFIG_NET=y
311 312
312# 313#
@@ -353,6 +354,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
353# CONFIG_TIPC is not set 354# CONFIG_TIPC is not set
354# CONFIG_ATM is not set 355# CONFIG_ATM is not set
355# CONFIG_BRIDGE is not set 356# CONFIG_BRIDGE is not set
357# CONFIG_NET_DSA is not set
356# CONFIG_VLAN_8021Q is not set 358# CONFIG_VLAN_8021Q is not set
357# CONFIG_DECNET is not set 359# CONFIG_DECNET is not set
358# CONFIG_LLC2 is not set 360# CONFIG_LLC2 is not set
@@ -373,11 +375,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
373# CONFIG_IRDA is not set 375# CONFIG_IRDA is not set
374# CONFIG_BT is not set 376# CONFIG_BT is not set
375# CONFIG_AF_RXRPC is not set 377# CONFIG_AF_RXRPC is not set
376 378# CONFIG_PHONET is not set
377# 379CONFIG_WIRELESS=y
378# Wireless
379#
380# CONFIG_CFG80211 is not set 380# CONFIG_CFG80211 is not set
381# CONFIG_WIRELESS_OLD_REGULATORY is not set
381CONFIG_WIRELESS_EXT=y 382CONFIG_WIRELESS_EXT=y
382CONFIG_WIRELESS_EXT_SYSFS=y 383CONFIG_WIRELESS_EXT_SYSFS=y
383# CONFIG_MAC80211 is not set 384# CONFIG_MAC80211 is not set
@@ -598,6 +599,9 @@ CONFIG_MII=y
598# CONFIG_IBM_NEW_EMAC_RGMII is not set 599# CONFIG_IBM_NEW_EMAC_RGMII is not set
599# CONFIG_IBM_NEW_EMAC_TAH is not set 600# CONFIG_IBM_NEW_EMAC_TAH is not set
600# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 601# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
602# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
603# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
604# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
601CONFIG_NET_PCI=y 605CONFIG_NET_PCI=y
602# CONFIG_PCNET32 is not set 606# CONFIG_PCNET32 is not set
603# CONFIG_AMD8111_ETH is not set 607# CONFIG_AMD8111_ETH is not set
@@ -622,6 +626,7 @@ CONFIG_8139TOO=y
622# CONFIG_TLAN is not set 626# CONFIG_TLAN is not set
623# CONFIG_VIA_RHINE is not set 627# CONFIG_VIA_RHINE is not set
624# CONFIG_SC92031 is not set 628# CONFIG_SC92031 is not set
629# CONFIG_ATL2 is not set
625CONFIG_NETDEV_1000=y 630CONFIG_NETDEV_1000=y
626# CONFIG_ACENIC is not set 631# CONFIG_ACENIC is not set
627# CONFIG_DL2K is not set 632# CONFIG_DL2K is not set
@@ -642,9 +647,11 @@ CONFIG_NETDEV_1000=y
642# CONFIG_QLA3XXX is not set 647# CONFIG_QLA3XXX is not set
643# CONFIG_ATL1 is not set 648# CONFIG_ATL1 is not set
644# CONFIG_ATL1E is not set 649# CONFIG_ATL1E is not set
650# CONFIG_JME is not set
645CONFIG_NETDEV_10000=y 651CONFIG_NETDEV_10000=y
646# CONFIG_CHELSIO_T1 is not set 652# CONFIG_CHELSIO_T1 is not set
647# CONFIG_CHELSIO_T3 is not set 653# CONFIG_CHELSIO_T3 is not set
654# CONFIG_ENIC is not set
648# CONFIG_IXGBE is not set 655# CONFIG_IXGBE is not set
649# CONFIG_IXGB is not set 656# CONFIG_IXGB is not set
650# CONFIG_S2IO is not set 657# CONFIG_S2IO is not set
@@ -654,6 +661,7 @@ CONFIG_NETDEV_10000=y
654# CONFIG_MLX4_CORE is not set 661# CONFIG_MLX4_CORE is not set
655# CONFIG_TEHUTI is not set 662# CONFIG_TEHUTI is not set
656# CONFIG_BNX2X is not set 663# CONFIG_BNX2X is not set
664# CONFIG_QLGE is not set
657# CONFIG_SFC is not set 665# CONFIG_SFC is not set
658# CONFIG_TR is not set 666# CONFIG_TR is not set
659 667
@@ -688,7 +696,7 @@ CONFIG_NETDEV_10000=y
688# Input device support 696# Input device support
689# 697#
690CONFIG_INPUT=y 698CONFIG_INPUT=y
691# CONFIG_INPUT_FF_MEMLESS is not set 699CONFIG_INPUT_FF_MEMLESS=m
692# CONFIG_INPUT_POLLDEV is not set 700# CONFIG_INPUT_POLLDEV is not set
693 701
694# 702#
@@ -776,11 +784,13 @@ CONFIG_SPI_SH_SCI=y
776# CONFIG_POWER_SUPPLY is not set 784# CONFIG_POWER_SUPPLY is not set
777CONFIG_HWMON=y 785CONFIG_HWMON=y
778# CONFIG_HWMON_VID is not set 786# CONFIG_HWMON_VID is not set
787# CONFIG_SENSORS_ADCXX is not set
779# CONFIG_SENSORS_I5K_AMB is not set 788# CONFIG_SENSORS_I5K_AMB is not set
780# CONFIG_SENSORS_F71805F is not set 789# CONFIG_SENSORS_F71805F is not set
781# CONFIG_SENSORS_F71882FG is not set 790# CONFIG_SENSORS_F71882FG is not set
782# CONFIG_SENSORS_IT87 is not set 791# CONFIG_SENSORS_IT87 is not set
783# CONFIG_SENSORS_LM70 is not set 792# CONFIG_SENSORS_LM70 is not set
793# CONFIG_SENSORS_MAX1111 is not set
784# CONFIG_SENSORS_PC87360 is not set 794# CONFIG_SENSORS_PC87360 is not set
785# CONFIG_SENSORS_PC87427 is not set 795# CONFIG_SENSORS_PC87427 is not set
786# CONFIG_SENSORS_SIS5595 is not set 796# CONFIG_SENSORS_SIS5595 is not set
@@ -808,6 +818,8 @@ CONFIG_SSB_POSSIBLE=y
808# CONFIG_MFD_CORE is not set 818# CONFIG_MFD_CORE is not set
809CONFIG_MFD_SM501=y 819CONFIG_MFD_SM501=y
810# CONFIG_HTC_PASIC3 is not set 820# CONFIG_HTC_PASIC3 is not set
821# CONFIG_MFD_TMIO is not set
822# CONFIG_MFD_WM8400 is not set
811 823
812# 824#
813# Multimedia devices 825# Multimedia devices
@@ -835,6 +847,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
835CONFIG_FB=y 847CONFIG_FB=y
836# CONFIG_FIRMWARE_EDID is not set 848# CONFIG_FIRMWARE_EDID is not set
837# CONFIG_FB_DDC is not set 849# CONFIG_FB_DDC is not set
850# CONFIG_FB_BOOT_VESA_SUPPORT is not set
838CONFIG_FB_CFB_FILLRECT=y 851CONFIG_FB_CFB_FILLRECT=y
839CONFIG_FB_CFB_COPYAREA=y 852CONFIG_FB_CFB_COPYAREA=y
840CONFIG_FB_CFB_IMAGEBLIT=y 853CONFIG_FB_CFB_IMAGEBLIT=y
@@ -868,6 +881,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
868# CONFIG_FB_S3 is not set 881# CONFIG_FB_S3 is not set
869# CONFIG_FB_SAVAGE is not set 882# CONFIG_FB_SAVAGE is not set
870# CONFIG_FB_SIS is not set 883# CONFIG_FB_SIS is not set
884# CONFIG_FB_VIA is not set
871# CONFIG_FB_NEOMAGIC is not set 885# CONFIG_FB_NEOMAGIC is not set
872# CONFIG_FB_KYRO is not set 886# CONFIG_FB_KYRO is not set
873# CONFIG_FB_3DFX is not set 887# CONFIG_FB_3DFX is not set
@@ -880,6 +894,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
880CONFIG_FB_SH_MOBILE_LCDC=m 894CONFIG_FB_SH_MOBILE_LCDC=m
881CONFIG_FB_SM501=y 895CONFIG_FB_SM501=y
882# CONFIG_FB_VIRTUAL is not set 896# CONFIG_FB_VIRTUAL is not set
897# CONFIG_FB_METRONOME is not set
883# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 898# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
884 899
885# 900#
@@ -905,6 +920,7 @@ CONFIG_LOGO=y
905# CONFIG_LOGO_SUPERH_VGA16 is not set 920# CONFIG_LOGO_SUPERH_VGA16 is not set
906CONFIG_LOGO_SUPERH_CLUT224=y 921CONFIG_LOGO_SUPERH_CLUT224=y
907CONFIG_SOUND=y 922CONFIG_SOUND=y
923CONFIG_SOUND_OSS_CORE=y
908CONFIG_SND=m 924CONFIG_SND=m
909CONFIG_SND_TIMER=m 925CONFIG_SND_TIMER=m
910CONFIG_SND_PCM=m 926CONFIG_SND_PCM=m
@@ -1005,9 +1021,36 @@ CONFIG_HID=y
1005# USB Input Devices 1021# USB Input Devices
1006# 1022#
1007CONFIG_USB_HID=y 1023CONFIG_USB_HID=y
1008# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1024# CONFIG_HID_PID is not set
1009# CONFIG_HID_FF is not set
1010# CONFIG_USB_HIDDEV is not set 1025# CONFIG_USB_HIDDEV is not set
1026
1027#
1028# Special HID drivers
1029#
1030CONFIG_HID_COMPAT=y
1031CONFIG_HID_A4TECH=y
1032CONFIG_HID_APPLE=y
1033CONFIG_HID_BELKIN=y
1034CONFIG_HID_BRIGHT=y
1035CONFIG_HID_CHERRY=y
1036CONFIG_HID_CHICONY=y
1037CONFIG_HID_CYPRESS=y
1038CONFIG_HID_DELL=y
1039CONFIG_HID_EZKEY=y
1040CONFIG_HID_GYRATION=y
1041CONFIG_HID_LOGITECH=y
1042# CONFIG_LOGITECH_FF is not set
1043# CONFIG_LOGIRUMBLEPAD2_FF is not set
1044CONFIG_HID_MICROSOFT=y
1045CONFIG_HID_MONTEREY=y
1046CONFIG_HID_PANTHERLORD=y
1047# CONFIG_PANTHERLORD_FF is not set
1048CONFIG_HID_PETALYNX=y
1049CONFIG_HID_SAMSUNG=y
1050CONFIG_HID_SONY=y
1051CONFIG_HID_SUNPLUS=y
1052CONFIG_THRUSTMASTER_FF=m
1053CONFIG_ZEROPLUS_FF=m
1011CONFIG_USB_SUPPORT=y 1054CONFIG_USB_SUPPORT=y
1012CONFIG_USB_ARCH_HAS_HCD=y 1055CONFIG_USB_ARCH_HAS_HCD=y
1013CONFIG_USB_ARCH_HAS_OHCI=y 1056CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1025,6 +1068,7 @@ CONFIG_USB_DEVICE_CLASS=y
1025# CONFIG_USB_OTG is not set 1068# CONFIG_USB_OTG is not set
1026# CONFIG_USB_OTG_WHITELIST is not set 1069# CONFIG_USB_OTG_WHITELIST is not set
1027# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1070# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1071# CONFIG_USB_MON is not set
1028 1072
1029# 1073#
1030# USB Host Controller Drivers 1074# USB Host Controller Drivers
@@ -1047,6 +1091,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1047# CONFIG_USB_ACM is not set 1091# CONFIG_USB_ACM is not set
1048# CONFIG_USB_PRINTER is not set 1092# CONFIG_USB_PRINTER is not set
1049# CONFIG_USB_WDM is not set 1093# CONFIG_USB_WDM is not set
1094# CONFIG_USB_TMC is not set
1050 1095
1051# 1096#
1052# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1097# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1076,7 +1121,6 @@ CONFIG_USB_LIBUSUAL=y
1076# 1121#
1077# CONFIG_USB_MDC800 is not set 1122# CONFIG_USB_MDC800 is not set
1078# CONFIG_USB_MICROTEK is not set 1123# CONFIG_USB_MICROTEK is not set
1079# CONFIG_USB_MON is not set
1080 1124
1081# 1125#
1082# USB port drivers 1126# USB port drivers
@@ -1089,7 +1133,7 @@ CONFIG_USB_LIBUSUAL=y
1089# CONFIG_USB_EMI62 is not set 1133# CONFIG_USB_EMI62 is not set
1090# CONFIG_USB_EMI26 is not set 1134# CONFIG_USB_EMI26 is not set
1091# CONFIG_USB_ADUTUX is not set 1135# CONFIG_USB_ADUTUX is not set
1092# CONFIG_USB_AUERSWALD is not set 1136# CONFIG_USB_SEVSEG is not set
1093# CONFIG_USB_RIO500 is not set 1137# CONFIG_USB_RIO500 is not set
1094# CONFIG_USB_LEGOTOWER is not set 1138# CONFIG_USB_LEGOTOWER is not set
1095# CONFIG_USB_LCD is not set 1139# CONFIG_USB_LCD is not set
@@ -1105,6 +1149,7 @@ CONFIG_USB_LIBUSUAL=y
1105# CONFIG_USB_TRANCEVIBRATOR is not set 1149# CONFIG_USB_TRANCEVIBRATOR is not set
1106# CONFIG_USB_IOWARRIOR is not set 1150# CONFIG_USB_IOWARRIOR is not set
1107# CONFIG_USB_ISIGHTFW is not set 1151# CONFIG_USB_ISIGHTFW is not set
1152# CONFIG_USB_VST is not set
1108# CONFIG_USB_GADGET is not set 1153# CONFIG_USB_GADGET is not set
1109# CONFIG_MMC is not set 1154# CONFIG_MMC is not set
1110# CONFIG_MEMSTICK is not set 1155# CONFIG_MEMSTICK is not set
@@ -1134,16 +1179,20 @@ CONFIG_RTC_INTF_DEV=y
1134# CONFIG_RTC_DRV_MAX6902 is not set 1179# CONFIG_RTC_DRV_MAX6902 is not set
1135CONFIG_RTC_DRV_R9701=y 1180CONFIG_RTC_DRV_R9701=y
1136# CONFIG_RTC_DRV_RS5C348 is not set 1181# CONFIG_RTC_DRV_RS5C348 is not set
1182# CONFIG_RTC_DRV_DS3234 is not set
1137 1183
1138# 1184#
1139# Platform RTC drivers 1185# Platform RTC drivers
1140# 1186#
1187# CONFIG_RTC_DRV_DS1286 is not set
1141# CONFIG_RTC_DRV_DS1511 is not set 1188# CONFIG_RTC_DRV_DS1511 is not set
1142# CONFIG_RTC_DRV_DS1553 is not set 1189# CONFIG_RTC_DRV_DS1553 is not set
1143# CONFIG_RTC_DRV_DS1742 is not set 1190# CONFIG_RTC_DRV_DS1742 is not set
1144# CONFIG_RTC_DRV_STK17TA8 is not set 1191# CONFIG_RTC_DRV_STK17TA8 is not set
1145# CONFIG_RTC_DRV_M48T86 is not set 1192# CONFIG_RTC_DRV_M48T86 is not set
1193# CONFIG_RTC_DRV_M48T35 is not set
1146# CONFIG_RTC_DRV_M48T59 is not set 1194# CONFIG_RTC_DRV_M48T59 is not set
1195# CONFIG_RTC_DRV_BQ4802 is not set
1147# CONFIG_RTC_DRV_V3020 is not set 1196# CONFIG_RTC_DRV_V3020 is not set
1148 1197
1149# 1198#
@@ -1152,6 +1201,7 @@ CONFIG_RTC_DRV_R9701=y
1152# CONFIG_RTC_DRV_SH is not set 1201# CONFIG_RTC_DRV_SH is not set
1153# CONFIG_DMADEVICES is not set 1202# CONFIG_DMADEVICES is not set
1154# CONFIG_UIO is not set 1203# CONFIG_UIO is not set
1204# CONFIG_STAGING is not set
1155 1205
1156# 1206#
1157# File systems 1207# File systems
@@ -1160,10 +1210,11 @@ CONFIG_EXT2_FS=y
1160# CONFIG_EXT2_FS_XATTR is not set 1210# CONFIG_EXT2_FS_XATTR is not set
1161# CONFIG_EXT2_FS_XIP is not set 1211# CONFIG_EXT2_FS_XIP is not set
1162# CONFIG_EXT3_FS is not set 1212# CONFIG_EXT3_FS is not set
1163# CONFIG_EXT4DEV_FS is not set 1213# CONFIG_EXT4_FS is not set
1164# CONFIG_REISERFS_FS is not set 1214# CONFIG_REISERFS_FS is not set
1165# CONFIG_JFS_FS is not set 1215# CONFIG_JFS_FS is not set
1166# CONFIG_FS_POSIX_ACL is not set 1216# CONFIG_FS_POSIX_ACL is not set
1217CONFIG_FILE_LOCKING=y
1167# CONFIG_XFS_FS is not set 1218# CONFIG_XFS_FS is not set
1168# CONFIG_OCFS2_FS is not set 1219# CONFIG_OCFS2_FS is not set
1169CONFIG_DNOTIFY=y 1220CONFIG_DNOTIFY=y
@@ -1196,6 +1247,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1196CONFIG_PROC_FS=y 1247CONFIG_PROC_FS=y
1197CONFIG_PROC_KCORE=y 1248CONFIG_PROC_KCORE=y
1198CONFIG_PROC_SYSCTL=y 1249CONFIG_PROC_SYSCTL=y
1250CONFIG_PROC_PAGE_MONITOR=y
1199CONFIG_SYSFS=y 1251CONFIG_SYSFS=y
1200CONFIG_TMPFS=y 1252CONFIG_TMPFS=y
1201# CONFIG_TMPFS_POSIX_ACL is not set 1253# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1293,6 +1345,11 @@ CONFIG_DEBUG_FS=y
1293# CONFIG_DEBUG_KERNEL is not set 1345# CONFIG_DEBUG_KERNEL is not set
1294# CONFIG_DEBUG_BUGVERBOSE is not set 1346# CONFIG_DEBUG_BUGVERBOSE is not set
1295# CONFIG_DEBUG_MEMORY_INIT is not set 1347# CONFIG_DEBUG_MEMORY_INIT is not set
1348# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1349# CONFIG_LATENCYTOP is not set
1350CONFIG_NOP_TRACER=y
1351CONFIG_HAVE_FTRACE=y
1352# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1296# CONFIG_SAMPLES is not set 1353# CONFIG_SAMPLES is not set
1297# CONFIG_SH_STANDARD_BIOS is not set 1354# CONFIG_SH_STANDARD_BIOS is not set
1298CONFIG_EARLY_SCIF_CONSOLE=y 1355CONFIG_EARLY_SCIF_CONSOLE=y
@@ -1305,12 +1362,14 @@ CONFIG_EARLY_PRINTK=y
1305# 1362#
1306# CONFIG_KEYS is not set 1363# CONFIG_KEYS is not set
1307# CONFIG_SECURITY is not set 1364# CONFIG_SECURITY is not set
1365# CONFIG_SECURITYFS is not set
1308# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1366# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1309CONFIG_CRYPTO=y 1367CONFIG_CRYPTO=y
1310 1368
1311# 1369#
1312# Crypto core or helper 1370# Crypto core or helper
1313# 1371#
1372# CONFIG_CRYPTO_FIPS is not set
1314# CONFIG_CRYPTO_MANAGER is not set 1373# CONFIG_CRYPTO_MANAGER is not set
1315# CONFIG_CRYPTO_GF128MUL is not set 1374# CONFIG_CRYPTO_GF128MUL is not set
1316# CONFIG_CRYPTO_NULL is not set 1375# CONFIG_CRYPTO_NULL is not set
@@ -1383,6 +1442,11 @@ CONFIG_CRYPTO=y
1383# 1442#
1384# CONFIG_CRYPTO_DEFLATE is not set 1443# CONFIG_CRYPTO_DEFLATE is not set
1385# CONFIG_CRYPTO_LZO is not set 1444# CONFIG_CRYPTO_LZO is not set
1445
1446#
1447# Random Number Generation
1448#
1449# CONFIG_CRYPTO_ANSI_CPRNG is not set
1386CONFIG_CRYPTO_HW=y 1450CONFIG_CRYPTO_HW=y
1387# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1451# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1388 1452
@@ -1390,7 +1454,6 @@ CONFIG_CRYPTO_HW=y
1390# Library routines 1454# Library routines
1391# 1455#
1392CONFIG_BITREVERSE=y 1456CONFIG_BITREVERSE=y
1393# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1394# CONFIG_CRC_CCITT is not set 1457# CONFIG_CRC_CCITT is not set
1395# CONFIG_CRC16 is not set 1458# CONFIG_CRC16 is not set
1396CONFIG_CRC_T10DIF=y 1459CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/rts7751r2dplus_qemu_defconfig b/arch/sh/configs/rts7751r2dplus_qemu_defconfig
index a72796c0293c..ae8f63000fbf 100644
--- a/arch/sh/configs/rts7751r2dplus_qemu_defconfig
+++ b/arch/sh/configs/rts7751r2dplus_qemu_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.27-rc2 3# Linux kernel version: 2.6.27
4# Mon Aug 18 22:17:44 2008 4# Wed Oct 22 18:51:20 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -13,12 +13,13 @@ CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
@@ -73,7 +74,9 @@ CONFIG_SIGNALFD=y
73CONFIG_TIMERFD=y 74CONFIG_TIMERFD=y
74CONFIG_EVENTFD=y 75CONFIG_EVENTFD=y
75CONFIG_SHMEM=y 76CONFIG_SHMEM=y
77CONFIG_AIO=y
76CONFIG_VM_EVENT_COUNTERS=y 78CONFIG_VM_EVENT_COUNTERS=y
79CONFIG_PCI_QUIRKS=y
77CONFIG_SLAB=y 80CONFIG_SLAB=y
78# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
79# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
@@ -81,15 +84,12 @@ CONFIG_PROFILING=y
81# CONFIG_MARKERS is not set 84# CONFIG_MARKERS is not set
82CONFIG_OPROFILE=y 85CONFIG_OPROFILE=y
83CONFIG_HAVE_OPROFILE=y 86CONFIG_HAVE_OPROFILE=y
84# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 87# CONFIG_KPROBES is not set
85# CONFIG_HAVE_IOREMAP_PROT is not set 88CONFIG_HAVE_IOREMAP_PROT=y
86# CONFIG_HAVE_KPROBES is not set 89CONFIG_HAVE_KPROBES=y
87# CONFIG_HAVE_KRETPROBES is not set 90CONFIG_HAVE_KRETPROBES=y
88# CONFIG_HAVE_ARCH_TRACEHOOK is not set 91CONFIG_HAVE_ARCH_TRACEHOOK=y
89# CONFIG_HAVE_DMA_ATTRS is not set
90# CONFIG_USE_GENERIC_SMP_HELPERS is not set
91CONFIG_HAVE_CLK=y 92CONFIG_HAVE_CLK=y
92CONFIG_PROC_PAGE_MONITOR=y
93CONFIG_HAVE_GENERIC_DMA_COHERENT=y 93CONFIG_HAVE_GENERIC_DMA_COHERENT=y
94CONFIG_SLABINFO=y 94CONFIG_SLABINFO=y
95CONFIG_RT_MUTEXES=y 95CONFIG_RT_MUTEXES=y
@@ -121,6 +121,7 @@ CONFIG_DEFAULT_AS=y
121# CONFIG_DEFAULT_NOOP is not set 121# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="anticipatory" 122CONFIG_DEFAULT_IOSCHED="anticipatory"
123CONFIG_CLASSIC_RCU=y 123CONFIG_CLASSIC_RCU=y
124# CONFIG_FREEZER is not set
124 125
125# 126#
126# System type 127# System type
@@ -188,12 +189,13 @@ CONFIG_FLATMEM_MANUAL=y
188CONFIG_FLATMEM=y 189CONFIG_FLATMEM=y
189CONFIG_FLAT_NODE_MEM_MAP=y 190CONFIG_FLAT_NODE_MEM_MAP=y
190CONFIG_SPARSEMEM_STATIC=y 191CONFIG_SPARSEMEM_STATIC=y
191# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
192CONFIG_PAGEFLAGS_EXTENDED=y 192CONFIG_PAGEFLAGS_EXTENDED=y
193CONFIG_SPLIT_PTLOCK_CPUS=4 193CONFIG_SPLIT_PTLOCK_CPUS=4
194# CONFIG_RESOURCES_64BIT is not set 194# CONFIG_RESOURCES_64BIT is not set
195# CONFIG_PHYS_ADDR_T_64BIT is not set
195CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
196CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
198CONFIG_UNEVICTABLE_LRU=y
197 199
198# 200#
199# Cache configuration 201# Cache configuration
@@ -237,7 +239,6 @@ CONFIG_RTS7751R2D_PLUS=y
237CONFIG_SH_TMU=y 239CONFIG_SH_TMU=y
238CONFIG_SH_TIMER_IRQ=16 240CONFIG_SH_TIMER_IRQ=16
239CONFIG_SH_PCLK_FREQ=60000000 241CONFIG_SH_PCLK_FREQ=60000000
240# CONFIG_TICK_ONESHOT is not set
241# CONFIG_NO_HZ is not set 242# CONFIG_NO_HZ is not set
242# CONFIG_HIGH_RES_TIMERS is not set 243# CONFIG_HIGH_RES_TIMERS is not set
243CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 244CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -299,6 +300,8 @@ CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 root=/dev/sda1 earlyprintk=se
299# Executable file formats 300# Executable file formats
300# 301#
301CONFIG_BINFMT_ELF=y 302CONFIG_BINFMT_ELF=y
303# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
304# CONFIG_HAVE_AOUT is not set
302# CONFIG_BINFMT_MISC is not set 305# CONFIG_BINFMT_MISC is not set
303# CONFIG_NET is not set 306# CONFIG_NET is not set
304 307
@@ -467,10 +470,12 @@ CONFIG_SPI_BITBANG=y
467# CONFIG_POWER_SUPPLY is not set 470# CONFIG_POWER_SUPPLY is not set
468CONFIG_HWMON=y 471CONFIG_HWMON=y
469# CONFIG_HWMON_VID is not set 472# CONFIG_HWMON_VID is not set
473# CONFIG_SENSORS_ADCXX is not set
470# CONFIG_SENSORS_F71805F is not set 474# CONFIG_SENSORS_F71805F is not set
471# CONFIG_SENSORS_F71882FG is not set 475# CONFIG_SENSORS_F71882FG is not set
472# CONFIG_SENSORS_IT87 is not set 476# CONFIG_SENSORS_IT87 is not set
473# CONFIG_SENSORS_LM70 is not set 477# CONFIG_SENSORS_LM70 is not set
478# CONFIG_SENSORS_MAX1111 is not set
474# CONFIG_SENSORS_PC87360 is not set 479# CONFIG_SENSORS_PC87360 is not set
475# CONFIG_SENSORS_PC87427 is not set 480# CONFIG_SENSORS_PC87427 is not set
476# CONFIG_SENSORS_SMSC47M1 is not set 481# CONFIG_SENSORS_SMSC47M1 is not set
@@ -495,6 +500,8 @@ CONFIG_SSB_POSSIBLE=y
495# CONFIG_MFD_CORE is not set 500# CONFIG_MFD_CORE is not set
496CONFIG_MFD_SM501=y 501CONFIG_MFD_SM501=y
497# CONFIG_HTC_PASIC3 is not set 502# CONFIG_HTC_PASIC3 is not set
503# CONFIG_MFD_TMIO is not set
504# CONFIG_MFD_WM8400 is not set
498 505
499# 506#
500# Multimedia devices 507# Multimedia devices
@@ -519,6 +526,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
519CONFIG_FB=y 526CONFIG_FB=y
520# CONFIG_FIRMWARE_EDID is not set 527# CONFIG_FIRMWARE_EDID is not set
521# CONFIG_FB_DDC is not set 528# CONFIG_FB_DDC is not set
529# CONFIG_FB_BOOT_VESA_SUPPORT is not set
522CONFIG_FB_CFB_FILLRECT=y 530CONFIG_FB_CFB_FILLRECT=y
523CONFIG_FB_CFB_COPYAREA=y 531CONFIG_FB_CFB_COPYAREA=y
524CONFIG_FB_CFB_IMAGEBLIT=y 532CONFIG_FB_CFB_IMAGEBLIT=y
@@ -541,6 +549,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
541CONFIG_FB_SH_MOBILE_LCDC=m 549CONFIG_FB_SH_MOBILE_LCDC=m
542CONFIG_FB_SM501=y 550CONFIG_FB_SM501=y
543# CONFIG_FB_VIRTUAL is not set 551# CONFIG_FB_VIRTUAL is not set
552# CONFIG_FB_METRONOME is not set
544# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 553# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
545 554
546# 555#
@@ -566,6 +575,7 @@ CONFIG_LOGO=y
566# CONFIG_LOGO_SUPERH_VGA16 is not set 575# CONFIG_LOGO_SUPERH_VGA16 is not set
567CONFIG_LOGO_SUPERH_CLUT224=y 576CONFIG_LOGO_SUPERH_CLUT224=y
568CONFIG_SOUND=y 577CONFIG_SOUND=y
578CONFIG_SOUND_OSS_CORE=y
569CONFIG_SND=m 579CONFIG_SND=m
570# CONFIG_SND_SEQUENCER is not set 580# CONFIG_SND_SEQUENCER is not set
571# CONFIG_SND_MIXER_OSS is not set 581# CONFIG_SND_MIXER_OSS is not set
@@ -588,6 +598,12 @@ CONFIG_HID_SUPPORT=y
588CONFIG_HID=y 598CONFIG_HID=y
589# CONFIG_HID_DEBUG is not set 599# CONFIG_HID_DEBUG is not set
590# CONFIG_HIDRAW is not set 600# CONFIG_HIDRAW is not set
601# CONFIG_HID_PID is not set
602
603#
604# Special HID drivers
605#
606CONFIG_HID_COMPAT=y
591# CONFIG_USB_SUPPORT is not set 607# CONFIG_USB_SUPPORT is not set
592# CONFIG_MMC is not set 608# CONFIG_MMC is not set
593# CONFIG_MEMSTICK is not set 609# CONFIG_MEMSTICK is not set
@@ -616,16 +632,20 @@ CONFIG_RTC_INTF_DEV=y
616# CONFIG_RTC_DRV_MAX6902 is not set 632# CONFIG_RTC_DRV_MAX6902 is not set
617CONFIG_RTC_DRV_R9701=y 633CONFIG_RTC_DRV_R9701=y
618# CONFIG_RTC_DRV_RS5C348 is not set 634# CONFIG_RTC_DRV_RS5C348 is not set
635# CONFIG_RTC_DRV_DS3234 is not set
619 636
620# 637#
621# Platform RTC drivers 638# Platform RTC drivers
622# 639#
640# CONFIG_RTC_DRV_DS1286 is not set
623# CONFIG_RTC_DRV_DS1511 is not set 641# CONFIG_RTC_DRV_DS1511 is not set
624# CONFIG_RTC_DRV_DS1553 is not set 642# CONFIG_RTC_DRV_DS1553 is not set
625# CONFIG_RTC_DRV_DS1742 is not set 643# CONFIG_RTC_DRV_DS1742 is not set
626# CONFIG_RTC_DRV_STK17TA8 is not set 644# CONFIG_RTC_DRV_STK17TA8 is not set
627# CONFIG_RTC_DRV_M48T86 is not set 645# CONFIG_RTC_DRV_M48T86 is not set
646# CONFIG_RTC_DRV_M48T35 is not set
628# CONFIG_RTC_DRV_M48T59 is not set 647# CONFIG_RTC_DRV_M48T59 is not set
648# CONFIG_RTC_DRV_BQ4802 is not set
629# CONFIG_RTC_DRV_V3020 is not set 649# CONFIG_RTC_DRV_V3020 is not set
630 650
631# 651#
@@ -634,6 +654,7 @@ CONFIG_RTC_DRV_R9701=y
634# CONFIG_RTC_DRV_SH is not set 654# CONFIG_RTC_DRV_SH is not set
635# CONFIG_DMADEVICES is not set 655# CONFIG_DMADEVICES is not set
636# CONFIG_UIO is not set 656# CONFIG_UIO is not set
657# CONFIG_STAGING is not set
637 658
638# 659#
639# File systems 660# File systems
@@ -642,10 +663,11 @@ CONFIG_EXT2_FS=y
642# CONFIG_EXT2_FS_XATTR is not set 663# CONFIG_EXT2_FS_XATTR is not set
643# CONFIG_EXT2_FS_XIP is not set 664# CONFIG_EXT2_FS_XIP is not set
644# CONFIG_EXT3_FS is not set 665# CONFIG_EXT3_FS is not set
645# CONFIG_EXT4DEV_FS is not set 666# CONFIG_EXT4_FS is not set
646# CONFIG_REISERFS_FS is not set 667# CONFIG_REISERFS_FS is not set
647# CONFIG_JFS_FS is not set 668# CONFIG_JFS_FS is not set
648# CONFIG_FS_POSIX_ACL is not set 669# CONFIG_FS_POSIX_ACL is not set
670CONFIG_FILE_LOCKING=y
649# CONFIG_XFS_FS is not set 671# CONFIG_XFS_FS is not set
650CONFIG_DNOTIFY=y 672CONFIG_DNOTIFY=y
651CONFIG_INOTIFY=y 673CONFIG_INOTIFY=y
@@ -677,6 +699,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
677CONFIG_PROC_FS=y 699CONFIG_PROC_FS=y
678CONFIG_PROC_KCORE=y 700CONFIG_PROC_KCORE=y
679CONFIG_PROC_SYSCTL=y 701CONFIG_PROC_SYSCTL=y
702CONFIG_PROC_PAGE_MONITOR=y
680CONFIG_SYSFS=y 703CONFIG_SYSFS=y
681CONFIG_TMPFS=y 704CONFIG_TMPFS=y
682# CONFIG_TMPFS_POSIX_ACL is not set 705# CONFIG_TMPFS_POSIX_ACL is not set
@@ -790,10 +813,21 @@ CONFIG_DEBUG_INFO=y
790# CONFIG_DEBUG_LIST is not set 813# CONFIG_DEBUG_LIST is not set
791# CONFIG_DEBUG_SG is not set 814# CONFIG_DEBUG_SG is not set
792# CONFIG_FRAME_POINTER is not set 815# CONFIG_FRAME_POINTER is not set
793# CONFIG_BOOT_PRINTK_DELAY is not set
794# CONFIG_RCU_TORTURE_TEST is not set 816# CONFIG_RCU_TORTURE_TEST is not set
817# CONFIG_RCU_CPU_STALL_DETECTOR is not set
795# CONFIG_BACKTRACE_SELF_TEST is not set 818# CONFIG_BACKTRACE_SELF_TEST is not set
819# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
796# CONFIG_FAULT_INJECTION is not set 820# CONFIG_FAULT_INJECTION is not set
821# CONFIG_LATENCYTOP is not set
822CONFIG_NOP_TRACER=y
823CONFIG_HAVE_FTRACE=y
824# CONFIG_FTRACE is not set
825# CONFIG_IRQSOFF_TRACER is not set
826# CONFIG_SCHED_TRACER is not set
827# CONFIG_CONTEXT_SWITCH_TRACER is not set
828# CONFIG_BOOT_TRACER is not set
829# CONFIG_STACK_TRACER is not set
830# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
797# CONFIG_SAMPLES is not set 831# CONFIG_SAMPLES is not set
798# CONFIG_SH_STANDARD_BIOS is not set 832# CONFIG_SH_STANDARD_BIOS is not set
799CONFIG_EARLY_SCIF_CONSOLE=y 833CONFIG_EARLY_SCIF_CONSOLE=y
@@ -811,12 +845,14 @@ CONFIG_EARLY_PRINTK=y
811# 845#
812# CONFIG_KEYS is not set 846# CONFIG_KEYS is not set
813# CONFIG_SECURITY is not set 847# CONFIG_SECURITY is not set
848# CONFIG_SECURITYFS is not set
814# CONFIG_SECURITY_FILE_CAPABILITIES is not set 849# CONFIG_SECURITY_FILE_CAPABILITIES is not set
815CONFIG_CRYPTO=y 850CONFIG_CRYPTO=y
816 851
817# 852#
818# Crypto core or helper 853# Crypto core or helper
819# 854#
855# CONFIG_CRYPTO_FIPS is not set
820# CONFIG_CRYPTO_MANAGER is not set 856# CONFIG_CRYPTO_MANAGER is not set
821# CONFIG_CRYPTO_GF128MUL is not set 857# CONFIG_CRYPTO_GF128MUL is not set
822# CONFIG_CRYPTO_NULL is not set 858# CONFIG_CRYPTO_NULL is not set
@@ -889,13 +925,17 @@ CONFIG_CRYPTO=y
889# 925#
890# CONFIG_CRYPTO_DEFLATE is not set 926# CONFIG_CRYPTO_DEFLATE is not set
891# CONFIG_CRYPTO_LZO is not set 927# CONFIG_CRYPTO_LZO is not set
928
929#
930# Random Number Generation
931#
932# CONFIG_CRYPTO_ANSI_CPRNG is not set
892CONFIG_CRYPTO_HW=y 933CONFIG_CRYPTO_HW=y
893 934
894# 935#
895# Library routines 936# Library routines
896# 937#
897CONFIG_BITREVERSE=y 938CONFIG_BITREVERSE=y
898# CONFIG_GENERIC_FIND_FIRST_BIT is not set
899# CONFIG_CRC_CCITT is not set 939# CONFIG_CRC_CCITT is not set
900# CONFIG_CRC16 is not set 940# CONFIG_CRC16 is not set
901CONFIG_CRC_T10DIF=y 941CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/sdk7780_defconfig b/arch/sh/configs/sdk7780_defconfig
index 6d834f242905..543287b97a6a 100644
--- a/arch/sh/configs/sdk7780_defconfig
+++ b/arch/sh/configs/sdk7780_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 02:00:12 2008 4# Wed Oct 22 18:53:22 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,17 +11,18 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
19CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26 27
27# 28#
@@ -56,7 +57,6 @@ CONFIG_SYSCTL=y
56CONFIG_EMBEDDED=y 57CONFIG_EMBEDDED=y
57CONFIG_UID16=y 58CONFIG_UID16=y
58CONFIG_SYSCTL_SYSCALL=y 59CONFIG_SYSCTL_SYSCALL=y
59CONFIG_SYSCTL_SYSCALL_CHECK=y
60CONFIG_KALLSYMS=y 60CONFIG_KALLSYMS=y
61CONFIG_KALLSYMS_ALL=y 61CONFIG_KALLSYMS_ALL=y
62# CONFIG_KALLSYMS_EXTRA_PASS is not set 62# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -73,7 +73,9 @@ CONFIG_SIGNALFD=y
73CONFIG_TIMERFD=y 73CONFIG_TIMERFD=y
74CONFIG_EVENTFD=y 74CONFIG_EVENTFD=y
75CONFIG_SHMEM=y 75CONFIG_SHMEM=y
76CONFIG_AIO=y
76CONFIG_VM_EVENT_COUNTERS=y 77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
77CONFIG_SLUB_DEBUG=y 79CONFIG_SLUB_DEBUG=y
78# CONFIG_SLAB is not set 80# CONFIG_SLAB is not set
79CONFIG_SLUB=y 81CONFIG_SLUB=y
@@ -81,15 +83,13 @@ CONFIG_SLUB=y
81# CONFIG_PROFILING is not set 83# CONFIG_PROFILING is not set
82# CONFIG_MARKERS is not set 84# CONFIG_MARKERS is not set
83CONFIG_HAVE_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
84# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 86# CONFIG_KPROBES is not set
85# CONFIG_HAVE_IOREMAP_PROT is not set 87CONFIG_HAVE_IOREMAP_PROT=y
86# CONFIG_HAVE_KPROBES is not set 88CONFIG_HAVE_KPROBES=y
87# CONFIG_HAVE_KRETPROBES is not set 89CONFIG_HAVE_KRETPROBES=y
88# CONFIG_HAVE_ARCH_TRACEHOOK is not set 90CONFIG_HAVE_ARCH_TRACEHOOK=y
89# CONFIG_HAVE_DMA_ATTRS is not set
90# CONFIG_USE_GENERIC_SMP_HELPERS is not set
91CONFIG_HAVE_CLK=y 91CONFIG_HAVE_CLK=y
92CONFIG_PROC_PAGE_MONITOR=y 92CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set 95# CONFIG_TINY_SHMEM is not set
@@ -121,6 +121,7 @@ CONFIG_DEFAULT_AS=y
121# CONFIG_DEFAULT_NOOP is not set 121# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="anticipatory" 122CONFIG_DEFAULT_IOSCHED="anticipatory"
123CONFIG_CLASSIC_RCU=y 123CONFIG_CLASSIC_RCU=y
124# CONFIG_FREEZER is not set
124 125
125# 126#
126# System type 127# System type
@@ -196,12 +197,13 @@ CONFIG_FLATMEM_MANUAL=y
196CONFIG_FLATMEM=y 197CONFIG_FLATMEM=y
197CONFIG_FLAT_NODE_MEM_MAP=y 198CONFIG_FLAT_NODE_MEM_MAP=y
198CONFIG_SPARSEMEM_STATIC=y 199CONFIG_SPARSEMEM_STATIC=y
199# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
200CONFIG_PAGEFLAGS_EXTENDED=y 200CONFIG_PAGEFLAGS_EXTENDED=y
201CONFIG_SPLIT_PTLOCK_CPUS=4 201CONFIG_SPLIT_PTLOCK_CPUS=4
202CONFIG_RESOURCES_64BIT=y 202CONFIG_RESOURCES_64BIT=y
203# CONFIG_PHYS_ADDR_T_64BIT is not set
203CONFIG_ZONE_DMA_FLAG=0 204CONFIG_ZONE_DMA_FLAG=0
204CONFIG_NR_QUICK=2 205CONFIG_NR_QUICK=2
206CONFIG_UNEVICTABLE_LRU=y
205 207
206# 208#
207# Cache configuration 209# Cache configuration
@@ -273,9 +275,10 @@ CONFIG_HZ_250=y
273# CONFIG_HZ_300 is not set 275# CONFIG_HZ_300 is not set
274# CONFIG_HZ_1000 is not set 276# CONFIG_HZ_1000 is not set
275CONFIG_HZ=250 277CONFIG_HZ=250
276# CONFIG_SCHED_HRTICK is not set 278CONFIG_SCHED_HRTICK=y
277# CONFIG_KEXEC is not set 279# CONFIG_KEXEC is not set
278# CONFIG_CRASH_DUMP is not set 280# CONFIG_CRASH_DUMP is not set
281# CONFIG_SECCOMP is not set
279# CONFIG_PREEMPT_NONE is not set 282# CONFIG_PREEMPT_NONE is not set
280# CONFIG_PREEMPT_VOLUNTARY is not set 283# CONFIG_PREEMPT_VOLUNTARY is not set
281CONFIG_PREEMPT=y 284CONFIG_PREEMPT=y
@@ -328,11 +331,9 @@ CONFIG_HOTPLUG_PCI=y
328# Executable file formats 331# Executable file formats
329# 332#
330CONFIG_BINFMT_ELF=y 333CONFIG_BINFMT_ELF=y
334# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
335# CONFIG_HAVE_AOUT is not set
331# CONFIG_BINFMT_MISC is not set 336# CONFIG_BINFMT_MISC is not set
332
333#
334# Networking
335#
336CONFIG_NET=y 337CONFIG_NET=y
337 338
338# 339#
@@ -406,6 +407,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
406# CONFIG_TIPC is not set 407# CONFIG_TIPC is not set
407# CONFIG_ATM is not set 408# CONFIG_ATM is not set
408# CONFIG_BRIDGE is not set 409# CONFIG_BRIDGE is not set
410# CONFIG_NET_DSA is not set
409# CONFIG_VLAN_8021Q is not set 411# CONFIG_VLAN_8021Q is not set
410# CONFIG_DECNET is not set 412# CONFIG_DECNET is not set
411# CONFIG_LLC2 is not set 413# CONFIG_LLC2 is not set
@@ -424,6 +426,7 @@ CONFIG_NET_SCHED=y
424# CONFIG_NET_SCH_HTB is not set 426# CONFIG_NET_SCH_HTB is not set
425# CONFIG_NET_SCH_HFSC is not set 427# CONFIG_NET_SCH_HFSC is not set
426# CONFIG_NET_SCH_PRIO is not set 428# CONFIG_NET_SCH_PRIO is not set
429# CONFIG_NET_SCH_MULTIQ is not set
427# CONFIG_NET_SCH_RED is not set 430# CONFIG_NET_SCH_RED is not set
428# CONFIG_NET_SCH_SFQ is not set 431# CONFIG_NET_SCH_SFQ is not set
429# CONFIG_NET_SCH_TEQL is not set 432# CONFIG_NET_SCH_TEQL is not set
@@ -456,11 +459,10 @@ CONFIG_NET_SCH_FIFO=y
456# CONFIG_IRDA is not set 459# CONFIG_IRDA is not set
457# CONFIG_BT is not set 460# CONFIG_BT is not set
458# CONFIG_AF_RXRPC is not set 461# CONFIG_AF_RXRPC is not set
459 462# CONFIG_PHONET is not set
460# 463CONFIG_WIRELESS=y
461# Wireless
462#
463# CONFIG_CFG80211 is not set 464# CONFIG_CFG80211 is not set
465# CONFIG_WIRELESS_OLD_REGULATORY is not set
464# CONFIG_WIRELESS_EXT is not set 466# CONFIG_WIRELESS_EXT is not set
465# CONFIG_MAC80211 is not set 467# CONFIG_MAC80211 is not set
466# CONFIG_IEEE80211 is not set 468# CONFIG_IEEE80211 is not set
@@ -510,21 +512,19 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
510# CONFIG_MISC_DEVICES is not set 512# CONFIG_MISC_DEVICES is not set
511CONFIG_HAVE_IDE=y 513CONFIG_HAVE_IDE=y
512CONFIG_IDE=y 514CONFIG_IDE=y
513CONFIG_IDE_MAX_HWIFS=4
514CONFIG_BLK_DEV_IDE=y
515 515
516# 516#
517# Please see Documentation/ide/ide.txt for help/info on IDE drives 517# Please see Documentation/ide/ide.txt for help/info on IDE drives
518# 518#
519# CONFIG_BLK_DEV_IDE_SATA is not set 519# CONFIG_BLK_DEV_IDE_SATA is not set
520CONFIG_BLK_DEV_IDEDISK=y 520CONFIG_IDE_GD=y
521CONFIG_IDEDISK_MULTI_MODE=y 521CONFIG_IDE_GD_ATA=y
522# CONFIG_IDE_GD_ATAPI is not set
522# CONFIG_BLK_DEV_IDECS is not set 523# CONFIG_BLK_DEV_IDECS is not set
523# CONFIG_BLK_DEV_DELKIN is not set 524# CONFIG_BLK_DEV_DELKIN is not set
524CONFIG_BLK_DEV_IDECD=y 525CONFIG_BLK_DEV_IDECD=y
525CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 526CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
526# CONFIG_BLK_DEV_IDETAPE is not set 527# CONFIG_BLK_DEV_IDETAPE is not set
527# CONFIG_BLK_DEV_IDEFLOPPY is not set
528# CONFIG_BLK_DEV_IDESCSI is not set 528# CONFIG_BLK_DEV_IDESCSI is not set
529# CONFIG_IDE_TASK_IOCTL is not set 529# CONFIG_IDE_TASK_IOCTL is not set
530CONFIG_IDE_PROC_FS=y 530CONFIG_IDE_PROC_FS=y
@@ -748,9 +748,13 @@ CONFIG_SMC91X=y
748# CONFIG_IBM_NEW_EMAC_RGMII is not set 748# CONFIG_IBM_NEW_EMAC_RGMII is not set
749# CONFIG_IBM_NEW_EMAC_TAH is not set 749# CONFIG_IBM_NEW_EMAC_TAH is not set
750# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 750# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
751# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
752# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
753# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
751# CONFIG_NET_PCI is not set 754# CONFIG_NET_PCI is not set
752# CONFIG_B44 is not set 755# CONFIG_B44 is not set
753# CONFIG_NET_POCKET is not set 756# CONFIG_NET_POCKET is not set
757# CONFIG_ATL2 is not set
754# CONFIG_NETDEV_1000 is not set 758# CONFIG_NETDEV_1000 is not set
755# CONFIG_NETDEV_10000 is not set 759# CONFIG_NETDEV_10000 is not set
756# CONFIG_TR is not set 760# CONFIG_TR is not set
@@ -790,7 +794,7 @@ CONFIG_NET_POLL_CONTROLLER=y
790# Input device support 794# Input device support
791# 795#
792CONFIG_INPUT=y 796CONFIG_INPUT=y
793# CONFIG_INPUT_FF_MEMLESS is not set 797CONFIG_INPUT_FF_MEMLESS=m
794# CONFIG_INPUT_POLLDEV is not set 798# CONFIG_INPUT_POLLDEV is not set
795 799
796# 800#
@@ -825,6 +829,7 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
825# CONFIG_MOUSE_PS2_TOUCHKIT is not set 829# CONFIG_MOUSE_PS2_TOUCHKIT is not set
826# CONFIG_MOUSE_SERIAL is not set 830# CONFIG_MOUSE_SERIAL is not set
827# CONFIG_MOUSE_APPLETOUCH is not set 831# CONFIG_MOUSE_APPLETOUCH is not set
832# CONFIG_MOUSE_BCM5974 is not set
828# CONFIG_MOUSE_VSXXXAA is not set 833# CONFIG_MOUSE_VSXXXAA is not set
829# CONFIG_INPUT_JOYSTICK is not set 834# CONFIG_INPUT_JOYSTICK is not set
830# CONFIG_INPUT_TABLET is not set 835# CONFIG_INPUT_TABLET is not set
@@ -923,6 +928,8 @@ CONFIG_SSB_DRIVER_PCICORE=y
923# CONFIG_MFD_CORE is not set 928# CONFIG_MFD_CORE is not set
924# CONFIG_MFD_SM501 is not set 929# CONFIG_MFD_SM501 is not set
925# CONFIG_HTC_PASIC3 is not set 930# CONFIG_HTC_PASIC3 is not set
931# CONFIG_MFD_TMIO is not set
932# CONFIG_MFD_WM8400 is not set
926 933
927# 934#
928# Multimedia devices 935# Multimedia devices
@@ -949,6 +956,7 @@ CONFIG_SSB_DRIVER_PCICORE=y
949CONFIG_FB=y 956CONFIG_FB=y
950# CONFIG_FIRMWARE_EDID is not set 957# CONFIG_FIRMWARE_EDID is not set
951# CONFIG_FB_DDC is not set 958# CONFIG_FB_DDC is not set
959# CONFIG_FB_BOOT_VESA_SUPPORT is not set
952CONFIG_FB_CFB_FILLRECT=m 960CONFIG_FB_CFB_FILLRECT=m
953CONFIG_FB_CFB_COPYAREA=m 961CONFIG_FB_CFB_COPYAREA=m
954CONFIG_FB_CFB_IMAGEBLIT=m 962CONFIG_FB_CFB_IMAGEBLIT=m
@@ -982,6 +990,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
982# CONFIG_FB_S3 is not set 990# CONFIG_FB_S3 is not set
983# CONFIG_FB_SAVAGE is not set 991# CONFIG_FB_SAVAGE is not set
984# CONFIG_FB_SIS is not set 992# CONFIG_FB_SIS is not set
993# CONFIG_FB_VIA is not set
985# CONFIG_FB_NEOMAGIC is not set 994# CONFIG_FB_NEOMAGIC is not set
986# CONFIG_FB_KYRO is not set 995# CONFIG_FB_KYRO is not set
987# CONFIG_FB_3DFX is not set 996# CONFIG_FB_3DFX is not set
@@ -993,6 +1002,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
993# CONFIG_FB_CARMINE is not set 1002# CONFIG_FB_CARMINE is not set
994CONFIG_FB_SH_MOBILE_LCDC=m 1003CONFIG_FB_SH_MOBILE_LCDC=m
995# CONFIG_FB_VIRTUAL is not set 1004# CONFIG_FB_VIRTUAL is not set
1005# CONFIG_FB_METRONOME is not set
996# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1006# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
997 1007
998# 1008#
@@ -1022,6 +1032,7 @@ CONFIG_LOGO_SUPERH_MONO=y
1022CONFIG_LOGO_SUPERH_VGA16=y 1032CONFIG_LOGO_SUPERH_VGA16=y
1023CONFIG_LOGO_SUPERH_CLUT224=y 1033CONFIG_LOGO_SUPERH_CLUT224=y
1024CONFIG_SOUND=y 1034CONFIG_SOUND=y
1035CONFIG_SOUND_OSS_CORE=y
1025# CONFIG_SND is not set 1036# CONFIG_SND is not set
1026CONFIG_SOUND_PRIME=y 1037CONFIG_SOUND_PRIME=y
1027CONFIG_HID_SUPPORT=y 1038CONFIG_HID_SUPPORT=y
@@ -1033,9 +1044,36 @@ CONFIG_HID=y
1033# USB Input Devices 1044# USB Input Devices
1034# 1045#
1035CONFIG_USB_HID=y 1046CONFIG_USB_HID=y
1036# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1047# CONFIG_HID_PID is not set
1037# CONFIG_HID_FF is not set
1038# CONFIG_USB_HIDDEV is not set 1048# CONFIG_USB_HIDDEV is not set
1049
1050#
1051# Special HID drivers
1052#
1053CONFIG_HID_COMPAT=y
1054CONFIG_HID_A4TECH=y
1055CONFIG_HID_APPLE=y
1056CONFIG_HID_BELKIN=y
1057CONFIG_HID_BRIGHT=y
1058CONFIG_HID_CHERRY=y
1059CONFIG_HID_CHICONY=y
1060CONFIG_HID_CYPRESS=y
1061CONFIG_HID_DELL=y
1062CONFIG_HID_EZKEY=y
1063CONFIG_HID_GYRATION=y
1064CONFIG_HID_LOGITECH=y
1065# CONFIG_LOGITECH_FF is not set
1066# CONFIG_LOGIRUMBLEPAD2_FF is not set
1067CONFIG_HID_MICROSOFT=y
1068CONFIG_HID_MONTEREY=y
1069CONFIG_HID_PANTHERLORD=y
1070# CONFIG_PANTHERLORD_FF is not set
1071CONFIG_HID_PETALYNX=y
1072CONFIG_HID_SAMSUNG=y
1073CONFIG_HID_SONY=y
1074CONFIG_HID_SUNPLUS=y
1075CONFIG_THRUSTMASTER_FF=m
1076CONFIG_ZEROPLUS_FF=m
1039CONFIG_USB_SUPPORT=y 1077CONFIG_USB_SUPPORT=y
1040CONFIG_USB_ARCH_HAS_HCD=y 1078CONFIG_USB_ARCH_HAS_HCD=y
1041CONFIG_USB_ARCH_HAS_OHCI=y 1079CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1053,6 +1091,7 @@ CONFIG_USB_DEVICEFS=y
1053# CONFIG_USB_OTG is not set 1091# CONFIG_USB_OTG is not set
1054# CONFIG_USB_OTG_WHITELIST is not set 1092# CONFIG_USB_OTG_WHITELIST is not set
1055# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1093# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1094CONFIG_USB_MON=y
1056 1095
1057# 1096#
1058# USB Host Controller Drivers 1097# USB Host Controller Drivers
@@ -1074,6 +1113,7 @@ CONFIG_USB_EHCI_HCD=y
1074# CONFIG_USB_ACM is not set 1113# CONFIG_USB_ACM is not set
1075CONFIG_USB_PRINTER=y 1114CONFIG_USB_PRINTER=y
1076# CONFIG_USB_WDM is not set 1115# CONFIG_USB_WDM is not set
1116# CONFIG_USB_TMC is not set
1077 1117
1078# 1118#
1079# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1119# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1103,7 +1143,6 @@ CONFIG_USB_STORAGE=y
1103# 1143#
1104# CONFIG_USB_MDC800 is not set 1144# CONFIG_USB_MDC800 is not set
1105# CONFIG_USB_MICROTEK is not set 1145# CONFIG_USB_MICROTEK is not set
1106CONFIG_USB_MON=y
1107 1146
1108# 1147#
1109# USB port drivers 1148# USB port drivers
@@ -1117,7 +1156,7 @@ CONFIG_USB_MON=y
1117# CONFIG_USB_EMI62 is not set 1156# CONFIG_USB_EMI62 is not set
1118# CONFIG_USB_EMI26 is not set 1157# CONFIG_USB_EMI26 is not set
1119# CONFIG_USB_ADUTUX is not set 1158# CONFIG_USB_ADUTUX is not set
1120# CONFIG_USB_AUERSWALD is not set 1159# CONFIG_USB_SEVSEG is not set
1121# CONFIG_USB_RIO500 is not set 1160# CONFIG_USB_RIO500 is not set
1122# CONFIG_USB_LEGOTOWER is not set 1161# CONFIG_USB_LEGOTOWER is not set
1123# CONFIG_USB_LCD is not set 1162# CONFIG_USB_LCD is not set
@@ -1135,6 +1174,7 @@ CONFIG_USB_MON=y
1135# CONFIG_USB_IOWARRIOR is not set 1174# CONFIG_USB_IOWARRIOR is not set
1136# CONFIG_USB_TEST is not set 1175# CONFIG_USB_TEST is not set
1137# CONFIG_USB_ISIGHTFW is not set 1176# CONFIG_USB_ISIGHTFW is not set
1177# CONFIG_USB_VST is not set
1138# CONFIG_USB_GADGET is not set 1178# CONFIG_USB_GADGET is not set
1139# CONFIG_MMC is not set 1179# CONFIG_MMC is not set
1140# CONFIG_MEMSTICK is not set 1180# CONFIG_MEMSTICK is not set
@@ -1155,6 +1195,7 @@ CONFIG_LEDS_CLASS=y
1155# CONFIG_DMADEVICES is not set 1195# CONFIG_DMADEVICES is not set
1156# CONFIG_AUXDISPLAY is not set 1196# CONFIG_AUXDISPLAY is not set
1157# CONFIG_UIO is not set 1197# CONFIG_UIO is not set
1198# CONFIG_STAGING is not set
1158 1199
1159# 1200#
1160# File systems 1201# File systems
@@ -1168,12 +1209,13 @@ CONFIG_EXT3_FS=y
1168CONFIG_EXT3_FS_XATTR=y 1209CONFIG_EXT3_FS_XATTR=y
1169CONFIG_EXT3_FS_POSIX_ACL=y 1210CONFIG_EXT3_FS_POSIX_ACL=y
1170# CONFIG_EXT3_FS_SECURITY is not set 1211# CONFIG_EXT3_FS_SECURITY is not set
1171# CONFIG_EXT4DEV_FS is not set 1212# CONFIG_EXT4_FS is not set
1172CONFIG_JBD=y 1213CONFIG_JBD=y
1173CONFIG_FS_MBCACHE=y 1214CONFIG_FS_MBCACHE=y
1174# CONFIG_REISERFS_FS is not set 1215# CONFIG_REISERFS_FS is not set
1175# CONFIG_JFS_FS is not set 1216# CONFIG_JFS_FS is not set
1176CONFIG_FS_POSIX_ACL=y 1217CONFIG_FS_POSIX_ACL=y
1218CONFIG_FILE_LOCKING=y
1177# CONFIG_XFS_FS is not set 1219# CONFIG_XFS_FS is not set
1178# CONFIG_OCFS2_FS is not set 1220# CONFIG_OCFS2_FS is not set
1179CONFIG_DNOTIFY=y 1221CONFIG_DNOTIFY=y
@@ -1211,6 +1253,7 @@ CONFIG_NTFS_RW=y
1211CONFIG_PROC_FS=y 1253CONFIG_PROC_FS=y
1212# CONFIG_PROC_KCORE is not set 1254# CONFIG_PROC_KCORE is not set
1213CONFIG_PROC_SYSCTL=y 1255CONFIG_PROC_SYSCTL=y
1256CONFIG_PROC_PAGE_MONITOR=y
1214CONFIG_SYSFS=y 1257CONFIG_SYSFS=y
1215CONFIG_TMPFS=y 1258CONFIG_TMPFS=y
1216CONFIG_TMPFS_POSIX_ACL=y 1259CONFIG_TMPFS_POSIX_ACL=y
@@ -1252,6 +1295,7 @@ CONFIG_LOCKD_V4=y
1252CONFIG_EXPORTFS=y 1295CONFIG_EXPORTFS=y
1253CONFIG_NFS_COMMON=y 1296CONFIG_NFS_COMMON=y
1254CONFIG_SUNRPC=y 1297CONFIG_SUNRPC=y
1298# CONFIG_SUNRPC_REGISTER_V4 is not set
1255# CONFIG_RPCSEC_GSS_KRB5 is not set 1299# CONFIG_RPCSEC_GSS_KRB5 is not set
1256# CONFIG_RPCSEC_GSS_SPKM3 is not set 1300# CONFIG_RPCSEC_GSS_SPKM3 is not set
1257# CONFIG_SMB_FS is not set 1301# CONFIG_SMB_FS is not set
@@ -1349,10 +1393,23 @@ CONFIG_DEBUG_INFO=y
1349# CONFIG_DEBUG_LIST is not set 1393# CONFIG_DEBUG_LIST is not set
1350# CONFIG_DEBUG_SG is not set 1394# CONFIG_DEBUG_SG is not set
1351# CONFIG_FRAME_POINTER is not set 1395# CONFIG_FRAME_POINTER is not set
1352# CONFIG_BOOT_PRINTK_DELAY is not set
1353# CONFIG_RCU_TORTURE_TEST is not set 1396# CONFIG_RCU_TORTURE_TEST is not set
1397# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1354# CONFIG_BACKTRACE_SELF_TEST is not set 1398# CONFIG_BACKTRACE_SELF_TEST is not set
1399# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1355# CONFIG_FAULT_INJECTION is not set 1400# CONFIG_FAULT_INJECTION is not set
1401# CONFIG_LATENCYTOP is not set
1402CONFIG_SYSCTL_SYSCALL_CHECK=y
1403CONFIG_NOP_TRACER=y
1404CONFIG_HAVE_FTRACE=y
1405# CONFIG_FTRACE is not set
1406# CONFIG_IRQSOFF_TRACER is not set
1407# CONFIG_PREEMPT_TRACER is not set
1408# CONFIG_SCHED_TRACER is not set
1409# CONFIG_CONTEXT_SWITCH_TRACER is not set
1410# CONFIG_BOOT_TRACER is not set
1411# CONFIG_STACK_TRACER is not set
1412# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1356# CONFIG_SAMPLES is not set 1413# CONFIG_SAMPLES is not set
1357CONFIG_SH_STANDARD_BIOS=y 1414CONFIG_SH_STANDARD_BIOS=y
1358# CONFIG_EARLY_SCIF_CONSOLE is not set 1415# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1369,12 +1426,14 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1369# 1426#
1370# CONFIG_KEYS is not set 1427# CONFIG_KEYS is not set
1371# CONFIG_SECURITY is not set 1428# CONFIG_SECURITY is not set
1429# CONFIG_SECURITYFS is not set
1372# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1430# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1373CONFIG_CRYPTO=y 1431CONFIG_CRYPTO=y
1374 1432
1375# 1433#
1376# Crypto core or helper 1434# Crypto core or helper
1377# 1435#
1436# CONFIG_CRYPTO_FIPS is not set
1378CONFIG_CRYPTO_ALGAPI=y 1437CONFIG_CRYPTO_ALGAPI=y
1379# CONFIG_CRYPTO_MANAGER is not set 1438# CONFIG_CRYPTO_MANAGER is not set
1380# CONFIG_CRYPTO_GF128MUL is not set 1439# CONFIG_CRYPTO_GF128MUL is not set
@@ -1448,6 +1507,11 @@ CONFIG_CRYPTO_DES=y
1448# 1507#
1449# CONFIG_CRYPTO_DEFLATE is not set 1508# CONFIG_CRYPTO_DEFLATE is not set
1450# CONFIG_CRYPTO_LZO is not set 1509# CONFIG_CRYPTO_LZO is not set
1510
1511#
1512# Random Number Generation
1513#
1514# CONFIG_CRYPTO_ANSI_CPRNG is not set
1451CONFIG_CRYPTO_HW=y 1515CONFIG_CRYPTO_HW=y
1452# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1516# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1453 1517
@@ -1455,7 +1519,6 @@ CONFIG_CRYPTO_HW=y
1455# Library routines 1519# Library routines
1456# 1520#
1457CONFIG_BITREVERSE=y 1521CONFIG_BITREVERSE=y
1458# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1459# CONFIG_CRC_CCITT is not set 1522# CONFIG_CRC_CCITT is not set
1460# CONFIG_CRC16 is not set 1523# CONFIG_CRC16 is not set
1461CONFIG_CRC_T10DIF=y 1524CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/se7206_defconfig b/arch/sh/configs/se7206_defconfig
index af15cbef12ba..25717ff26ca9 100644
--- a/arch/sh/configs/se7206_defconfig
+++ b/arch/sh/configs/se7206_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 02:06:07 2008 4# Wed Oct 22 18:57:39 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,16 +11,17 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16# CONFIG_GENERIC_TIME is not set 17# CONFIG_GENERIC_TIME is not set
17# CONFIG_GENERIC_CLOCKEVENTS is not set 18# CONFIG_GENERIC_CLOCKEVENTS is not set
18CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25 26
26# 27#
@@ -45,6 +46,7 @@ CONFIG_LOG_BUF_SHIFT=14
45CONFIG_CGROUPS=y 46CONFIG_CGROUPS=y
46CONFIG_CGROUP_DEBUG=y 47CONFIG_CGROUP_DEBUG=y
47CONFIG_CGROUP_NS=y 48CONFIG_CGROUP_NS=y
49# CONFIG_CGROUP_FREEZER is not set
48CONFIG_CGROUP_DEVICE=y 50CONFIG_CGROUP_DEVICE=y
49# CONFIG_GROUP_SCHED is not set 51# CONFIG_GROUP_SCHED is not set
50CONFIG_CGROUP_CPUACCT=y 52CONFIG_CGROUP_CPUACCT=y
@@ -80,7 +82,9 @@ CONFIG_EPOLL=y
80CONFIG_SIGNALFD=y 82CONFIG_SIGNALFD=y
81CONFIG_TIMERFD=y 83CONFIG_TIMERFD=y
82CONFIG_EVENTFD=y 84CONFIG_EVENTFD=y
85CONFIG_AIO=y
83CONFIG_VM_EVENT_COUNTERS=y 86CONFIG_VM_EVENT_COUNTERS=y
87CONFIG_PCI_QUIRKS=y
84# CONFIG_SLAB is not set 88# CONFIG_SLAB is not set
85# CONFIG_SLUB is not set 89# CONFIG_SLUB is not set
86CONFIG_SLOB=y 90CONFIG_SLOB=y
@@ -88,14 +92,12 @@ CONFIG_PROFILING=y
88# CONFIG_MARKERS is not set 92# CONFIG_MARKERS is not set
89CONFIG_OPROFILE=y 93CONFIG_OPROFILE=y
90CONFIG_HAVE_OPROFILE=y 94CONFIG_HAVE_OPROFILE=y
91# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 95# CONFIG_KPROBES is not set
92# CONFIG_HAVE_IOREMAP_PROT is not set 96CONFIG_HAVE_KPROBES=y
93# CONFIG_HAVE_KPROBES is not set 97CONFIG_HAVE_KRETPROBES=y
94# CONFIG_HAVE_KRETPROBES is not set 98CONFIG_HAVE_ARCH_TRACEHOOK=y
95# CONFIG_HAVE_ARCH_TRACEHOOK is not set
96# CONFIG_HAVE_DMA_ATTRS is not set
97# CONFIG_USE_GENERIC_SMP_HELPERS is not set
98CONFIG_HAVE_CLK=y 99CONFIG_HAVE_CLK=y
100CONFIG_HAVE_GENERIC_DMA_COHERENT=y
99CONFIG_RT_MUTEXES=y 101CONFIG_RT_MUTEXES=y
100CONFIG_TINY_SHMEM=y 102CONFIG_TINY_SHMEM=y
101CONFIG_BASE_SMALL=0 103CONFIG_BASE_SMALL=0
@@ -126,6 +128,7 @@ CONFIG_IOSCHED_NOOP=y
126CONFIG_DEFAULT_NOOP=y 128CONFIG_DEFAULT_NOOP=y
127CONFIG_DEFAULT_IOSCHED="noop" 129CONFIG_DEFAULT_IOSCHED="noop"
128# CONFIG_CLASSIC_RCU is not set 130# CONFIG_CLASSIC_RCU is not set
131# CONFIG_FREEZER is not set
129 132
130# 133#
131# System type 134# System type
@@ -192,10 +195,10 @@ CONFIG_FLATMEM_MANUAL=y
192CONFIG_FLATMEM=y 195CONFIG_FLATMEM=y
193CONFIG_FLAT_NODE_MEM_MAP=y 196CONFIG_FLAT_NODE_MEM_MAP=y
194CONFIG_SPARSEMEM_STATIC=y 197CONFIG_SPARSEMEM_STATIC=y
195# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
196CONFIG_PAGEFLAGS_EXTENDED=y 198CONFIG_PAGEFLAGS_EXTENDED=y
197CONFIG_SPLIT_PTLOCK_CPUS=4 199CONFIG_SPLIT_PTLOCK_CPUS=4
198# CONFIG_RESOURCES_64BIT is not set 200# CONFIG_RESOURCES_64BIT is not set
201# CONFIG_PHYS_ADDR_T_64BIT is not set
199CONFIG_ZONE_DMA_FLAG=0 202CONFIG_ZONE_DMA_FLAG=0
200CONFIG_NR_QUICK=2 203CONFIG_NR_QUICK=2
201 204
@@ -228,7 +231,6 @@ CONFIG_SH_CMT=y
228CONFIG_SH_TIMER_IRQ=140 231CONFIG_SH_TIMER_IRQ=140
229CONFIG_SH_PCLK_FREQ=33333333 232CONFIG_SH_PCLK_FREQ=33333333
230CONFIG_SH_CLK_MD=6 233CONFIG_SH_CLK_MD=6
231# CONFIG_TICK_ONESHOT is not set
232 234
233# 235#
234# CPU Frequency scaling 236# CPU Frequency scaling
@@ -275,6 +277,7 @@ CONFIG_HZ=1000
275# CONFIG_SCHED_HRTICK is not set 277# CONFIG_SCHED_HRTICK is not set
276CONFIG_KEXEC=y 278CONFIG_KEXEC=y
277# CONFIG_CRASH_DUMP is not set 279# CONFIG_CRASH_DUMP is not set
280# CONFIG_SECCOMP is not set
278# CONFIG_PREEMPT_NONE is not set 281# CONFIG_PREEMPT_NONE is not set
279# CONFIG_PREEMPT_VOLUNTARY is not set 282# CONFIG_PREEMPT_VOLUNTARY is not set
280CONFIG_PREEMPT=y 283CONFIG_PREEMPT=y
@@ -307,11 +310,8 @@ CONFIG_BINFMT_ELF_FDPIC=y
307CONFIG_BINFMT_FLAT=y 310CONFIG_BINFMT_FLAT=y
308CONFIG_BINFMT_ZFLAT=y 311CONFIG_BINFMT_ZFLAT=y
309CONFIG_BINFMT_SHARED_FLAT=y 312CONFIG_BINFMT_SHARED_FLAT=y
313# CONFIG_HAVE_AOUT is not set
310CONFIG_BINFMT_MISC=y 314CONFIG_BINFMT_MISC=y
311
312#
313# Networking
314#
315CONFIG_NET=y 315CONFIG_NET=y
316 316
317# 317#
@@ -361,6 +361,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
361# CONFIG_TIPC is not set 361# CONFIG_TIPC is not set
362# CONFIG_ATM is not set 362# CONFIG_ATM is not set
363# CONFIG_BRIDGE is not set 363# CONFIG_BRIDGE is not set
364# CONFIG_NET_DSA is not set
364# CONFIG_VLAN_8021Q is not set 365# CONFIG_VLAN_8021Q is not set
365# CONFIG_DECNET is not set 366# CONFIG_DECNET is not set
366# CONFIG_LLC2 is not set 367# CONFIG_LLC2 is not set
@@ -381,11 +382,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
381# CONFIG_IRDA is not set 382# CONFIG_IRDA is not set
382# CONFIG_BT is not set 383# CONFIG_BT is not set
383# CONFIG_AF_RXRPC is not set 384# CONFIG_AF_RXRPC is not set
384 385# CONFIG_PHONET is not set
385# 386CONFIG_WIRELESS=y
386# Wireless
387#
388# CONFIG_CFG80211 is not set 387# CONFIG_CFG80211 is not set
388# CONFIG_WIRELESS_OLD_REGULATORY is not set
389# CONFIG_WIRELESS_EXT is not set 389# CONFIG_WIRELESS_EXT is not set
390# CONFIG_MAC80211 is not set 390# CONFIG_MAC80211 is not set
391# CONFIG_IEEE80211 is not set 391# CONFIG_IEEE80211 is not set
@@ -461,7 +461,6 @@ CONFIG_MTD_PHYSMAP=y
461CONFIG_MTD_PHYSMAP_START=0x20000000 461CONFIG_MTD_PHYSMAP_START=0x20000000
462CONFIG_MTD_PHYSMAP_LEN=0x01000000 462CONFIG_MTD_PHYSMAP_LEN=0x01000000
463CONFIG_MTD_PHYSMAP_BANKWIDTH=4 463CONFIG_MTD_PHYSMAP_BANKWIDTH=4
464# CONFIG_MTD_UCLINUX is not set
465# CONFIG_MTD_PLATRAM is not set 464# CONFIG_MTD_PLATRAM is not set
466 465
467# 466#
@@ -531,6 +530,9 @@ CONFIG_SMC91X=y
531# CONFIG_IBM_NEW_EMAC_RGMII is not set 530# CONFIG_IBM_NEW_EMAC_RGMII is not set
532# CONFIG_IBM_NEW_EMAC_TAH is not set 531# CONFIG_IBM_NEW_EMAC_TAH is not set
533# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 532# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
533# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
534# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
535# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
534# CONFIG_B44 is not set 536# CONFIG_B44 is not set
535# CONFIG_NETDEV_1000 is not set 537# CONFIG_NETDEV_1000 is not set
536# CONFIG_NETDEV_10000 is not set 538# CONFIG_NETDEV_10000 is not set
@@ -609,6 +611,8 @@ CONFIG_SSB_POSSIBLE=y
609# CONFIG_MFD_CORE is not set 611# CONFIG_MFD_CORE is not set
610# CONFIG_MFD_SM501 is not set 612# CONFIG_MFD_SM501 is not set
611# CONFIG_HTC_PASIC3 is not set 613# CONFIG_HTC_PASIC3 is not set
614# CONFIG_MFD_TMIO is not set
615# CONFIG_MFD_WM8400 is not set
612 616
613# 617#
614# Multimedia devices 618# Multimedia devices
@@ -666,12 +670,15 @@ CONFIG_RTC_INTF_DEV=y
666# 670#
667# Platform RTC drivers 671# Platform RTC drivers
668# 672#
673# CONFIG_RTC_DRV_DS1286 is not set
669# CONFIG_RTC_DRV_DS1511 is not set 674# CONFIG_RTC_DRV_DS1511 is not set
670# CONFIG_RTC_DRV_DS1553 is not set 675# CONFIG_RTC_DRV_DS1553 is not set
671# CONFIG_RTC_DRV_DS1742 is not set 676# CONFIG_RTC_DRV_DS1742 is not set
672# CONFIG_RTC_DRV_STK17TA8 is not set 677# CONFIG_RTC_DRV_STK17TA8 is not set
673# CONFIG_RTC_DRV_M48T86 is not set 678# CONFIG_RTC_DRV_M48T86 is not set
679# CONFIG_RTC_DRV_M48T35 is not set
674# CONFIG_RTC_DRV_M48T59 is not set 680# CONFIG_RTC_DRV_M48T59 is not set
681# CONFIG_RTC_DRV_BQ4802 is not set
675# CONFIG_RTC_DRV_V3020 is not set 682# CONFIG_RTC_DRV_V3020 is not set
676 683
677# 684#
@@ -680,6 +687,7 @@ CONFIG_RTC_INTF_DEV=y
680CONFIG_RTC_DRV_SH=y 687CONFIG_RTC_DRV_SH=y
681# CONFIG_DMADEVICES is not set 688# CONFIG_DMADEVICES is not set
682# CONFIG_UIO is not set 689# CONFIG_UIO is not set
690# CONFIG_STAGING is not set
683 691
684# 692#
685# File systems 693# File systems
@@ -687,10 +695,11 @@ CONFIG_RTC_DRV_SH=y
687CONFIG_EXT2_FS=y 695CONFIG_EXT2_FS=y
688# CONFIG_EXT2_FS_XATTR is not set 696# CONFIG_EXT2_FS_XATTR is not set
689# CONFIG_EXT3_FS is not set 697# CONFIG_EXT3_FS is not set
690# CONFIG_EXT4DEV_FS is not set 698# CONFIG_EXT4_FS is not set
691# CONFIG_REISERFS_FS is not set 699# CONFIG_REISERFS_FS is not set
692# CONFIG_JFS_FS is not set 700# CONFIG_JFS_FS is not set
693# CONFIG_FS_POSIX_ACL is not set 701# CONFIG_FS_POSIX_ACL is not set
702CONFIG_FILE_LOCKING=y
694# CONFIG_XFS_FS is not set 703# CONFIG_XFS_FS is not set
695# CONFIG_OCFS2_FS is not set 704# CONFIG_OCFS2_FS is not set
696# CONFIG_DNOTIFY is not set 705# CONFIG_DNOTIFY is not set
@@ -755,6 +764,7 @@ CONFIG_LOCKD=y
755CONFIG_LOCKD_V4=y 764CONFIG_LOCKD_V4=y
756CONFIG_NFS_COMMON=y 765CONFIG_NFS_COMMON=y
757CONFIG_SUNRPC=y 766CONFIG_SUNRPC=y
767# CONFIG_SUNRPC_REGISTER_V4 is not set
758# CONFIG_RPCSEC_GSS_KRB5 is not set 768# CONFIG_RPCSEC_GSS_KRB5 is not set
759# CONFIG_RPCSEC_GSS_SPKM3 is not set 769# CONFIG_RPCSEC_GSS_SPKM3 is not set
760# CONFIG_SMB_FS is not set 770# CONFIG_SMB_FS is not set
@@ -811,10 +821,19 @@ CONFIG_DEBUG_VM=y
811CONFIG_DEBUG_LIST=y 821CONFIG_DEBUG_LIST=y
812# CONFIG_DEBUG_SG is not set 822# CONFIG_DEBUG_SG is not set
813CONFIG_FRAME_POINTER=y 823CONFIG_FRAME_POINTER=y
814# CONFIG_BOOT_PRINTK_DELAY is not set
815# CONFIG_RCU_TORTURE_TEST is not set 824# CONFIG_RCU_TORTURE_TEST is not set
816# CONFIG_BACKTRACE_SELF_TEST is not set 825# CONFIG_BACKTRACE_SELF_TEST is not set
826# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
817# CONFIG_FAULT_INJECTION is not set 827# CONFIG_FAULT_INJECTION is not set
828# CONFIG_LATENCYTOP is not set
829CONFIG_NOP_TRACER=y
830CONFIG_HAVE_FTRACE=y
831# CONFIG_FTRACE is not set
832# CONFIG_SCHED_TRACER is not set
833# CONFIG_CONTEXT_SWITCH_TRACER is not set
834# CONFIG_BOOT_TRACER is not set
835# CONFIG_STACK_TRACER is not set
836# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
818# CONFIG_SAMPLES is not set 837# CONFIG_SAMPLES is not set
819# CONFIG_SH_STANDARD_BIOS is not set 838# CONFIG_SH_STANDARD_BIOS is not set
820# CONFIG_EARLY_SCIF_CONSOLE is not set 839# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -828,12 +847,14 @@ CONFIG_DEBUG_STACK_USAGE=y
828# 847#
829# CONFIG_KEYS is not set 848# CONFIG_KEYS is not set
830# CONFIG_SECURITY is not set 849# CONFIG_SECURITY is not set
850# CONFIG_SECURITYFS is not set
831# CONFIG_SECURITY_FILE_CAPABILITIES is not set 851# CONFIG_SECURITY_FILE_CAPABILITIES is not set
832CONFIG_CRYPTO=y 852CONFIG_CRYPTO=y
833 853
834# 854#
835# Crypto core or helper 855# Crypto core or helper
836# 856#
857# CONFIG_CRYPTO_FIPS is not set
837CONFIG_CRYPTO_ALGAPI=y 858CONFIG_CRYPTO_ALGAPI=y
838# CONFIG_CRYPTO_MANAGER is not set 859# CONFIG_CRYPTO_MANAGER is not set
839# CONFIG_CRYPTO_GF128MUL is not set 860# CONFIG_CRYPTO_GF128MUL is not set
@@ -907,13 +928,17 @@ CONFIG_CRYPTO_ALGAPI=y
907# 928#
908CONFIG_CRYPTO_DEFLATE=y 929CONFIG_CRYPTO_DEFLATE=y
909CONFIG_CRYPTO_LZO=y 930CONFIG_CRYPTO_LZO=y
931
932#
933# Random Number Generation
934#
935# CONFIG_CRYPTO_ANSI_CPRNG is not set
910# CONFIG_CRYPTO_HW is not set 936# CONFIG_CRYPTO_HW is not set
911 937
912# 938#
913# Library routines 939# Library routines
914# 940#
915CONFIG_BITREVERSE=y 941CONFIG_BITREVERSE=y
916# CONFIG_GENERIC_FIND_FIRST_BIT is not set
917CONFIG_CRC_CCITT=y 942CONFIG_CRC_CCITT=y
918CONFIG_CRC16=y 943CONFIG_CRC16=y
919# CONFIG_CRC_T10DIF is not set 944# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7343_defconfig b/arch/sh/configs/se7343_defconfig
index 4e30b70377e2..075f42ed5b09 100644
--- a/arch/sh/configs/se7343_defconfig
+++ b/arch/sh/configs/se7343_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 02:08:38 2008 4# Wed Oct 22 19:00:21 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,16 +11,17 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25 26
26# 27#
@@ -71,22 +72,22 @@ CONFIG_SIGNALFD=y
71CONFIG_TIMERFD=y 72CONFIG_TIMERFD=y
72CONFIG_EVENTFD=y 73CONFIG_EVENTFD=y
73# CONFIG_SHMEM is not set 74# CONFIG_SHMEM is not set
75CONFIG_AIO=y
74CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
75CONFIG_SLAB=y 78CONFIG_SLAB=y
76# CONFIG_SLUB is not set 79# CONFIG_SLUB is not set
77# CONFIG_SLOB is not set 80# CONFIG_SLOB is not set
78# CONFIG_PROFILING is not set 81# CONFIG_PROFILING is not set
79# CONFIG_MARKERS is not set 82# CONFIG_MARKERS is not set
80CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
81# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 84# CONFIG_KPROBES is not set
82# CONFIG_HAVE_IOREMAP_PROT is not set 85CONFIG_HAVE_IOREMAP_PROT=y
83# CONFIG_HAVE_KPROBES is not set 86CONFIG_HAVE_KPROBES=y
84# CONFIG_HAVE_KRETPROBES is not set 87CONFIG_HAVE_KRETPROBES=y
85# CONFIG_HAVE_ARCH_TRACEHOOK is not set 88CONFIG_HAVE_ARCH_TRACEHOOK=y
86# CONFIG_HAVE_DMA_ATTRS is not set
87# CONFIG_USE_GENERIC_SMP_HELPERS is not set
88CONFIG_HAVE_CLK=y 89CONFIG_HAVE_CLK=y
89CONFIG_PROC_PAGE_MONITOR=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
90CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
91CONFIG_TINY_SHMEM=y 92CONFIG_TINY_SHMEM=y
92CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
@@ -117,6 +118,7 @@ CONFIG_DEFAULT_DEADLINE=y
117# CONFIG_DEFAULT_NOOP is not set 118# CONFIG_DEFAULT_NOOP is not set
118CONFIG_DEFAULT_IOSCHED="deadline" 119CONFIG_DEFAULT_IOSCHED="deadline"
119CONFIG_CLASSIC_RCU=y 120CONFIG_CLASSIC_RCU=y
121# CONFIG_FREEZER is not set
120 122
121# 123#
122# System type 124# System type
@@ -186,12 +188,13 @@ CONFIG_FLATMEM_MANUAL=y
186CONFIG_FLATMEM=y 188CONFIG_FLATMEM=y
187CONFIG_FLAT_NODE_MEM_MAP=y 189CONFIG_FLAT_NODE_MEM_MAP=y
188CONFIG_SPARSEMEM_STATIC=y 190CONFIG_SPARSEMEM_STATIC=y
189# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
190CONFIG_PAGEFLAGS_EXTENDED=y 191CONFIG_PAGEFLAGS_EXTENDED=y
191CONFIG_SPLIT_PTLOCK_CPUS=4 192CONFIG_SPLIT_PTLOCK_CPUS=4
192# CONFIG_RESOURCES_64BIT is not set 193# CONFIG_RESOURCES_64BIT is not set
194# CONFIG_PHYS_ADDR_T_64BIT is not set
193CONFIG_ZONE_DMA_FLAG=0 195CONFIG_ZONE_DMA_FLAG=0
194CONFIG_NR_QUICK=2 196CONFIG_NR_QUICK=2
197CONFIG_UNEVICTABLE_LRU=y
195 198
196# 199#
197# Cache configuration 200# Cache configuration
@@ -225,7 +228,6 @@ CONFIG_SH_7343_SOLUTION_ENGINE=y
225CONFIG_SH_TMU=y 228CONFIG_SH_TMU=y
226CONFIG_SH_TIMER_IRQ=16 229CONFIG_SH_TIMER_IRQ=16
227CONFIG_SH_PCLK_FREQ=27000000 230CONFIG_SH_PCLK_FREQ=27000000
228# CONFIG_TICK_ONESHOT is not set
229# CONFIG_NO_HZ is not set 231# CONFIG_NO_HZ is not set
230# CONFIG_HIGH_RES_TIMERS is not set 232# CONFIG_HIGH_RES_TIMERS is not set
231CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 233CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -261,6 +263,7 @@ CONFIG_HZ=250
261# CONFIG_SCHED_HRTICK is not set 263# CONFIG_SCHED_HRTICK is not set
262# CONFIG_KEXEC is not set 264# CONFIG_KEXEC is not set
263# CONFIG_CRASH_DUMP is not set 265# CONFIG_CRASH_DUMP is not set
266# CONFIG_SECCOMP is not set
264CONFIG_PREEMPT_NONE=y 267CONFIG_PREEMPT_NONE=y
265# CONFIG_PREEMPT_VOLUNTARY is not set 268# CONFIG_PREEMPT_VOLUNTARY is not set
266# CONFIG_PREEMPT is not set 269# CONFIG_PREEMPT is not set
@@ -284,11 +287,9 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
284# Executable file formats 287# Executable file formats
285# 288#
286CONFIG_BINFMT_ELF=y 289CONFIG_BINFMT_ELF=y
290# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
291# CONFIG_HAVE_AOUT is not set
287# CONFIG_BINFMT_MISC is not set 292# CONFIG_BINFMT_MISC is not set
288
289#
290# Networking
291#
292CONFIG_NET=y 293CONFIG_NET=y
293 294
294# 295#
@@ -334,6 +335,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
334# CONFIG_TIPC is not set 335# CONFIG_TIPC is not set
335# CONFIG_ATM is not set 336# CONFIG_ATM is not set
336# CONFIG_BRIDGE is not set 337# CONFIG_BRIDGE is not set
338# CONFIG_NET_DSA is not set
337# CONFIG_VLAN_8021Q is not set 339# CONFIG_VLAN_8021Q is not set
338# CONFIG_DECNET is not set 340# CONFIG_DECNET is not set
339# CONFIG_LLC2 is not set 341# CONFIG_LLC2 is not set
@@ -354,11 +356,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
354# CONFIG_IRDA is not set 356# CONFIG_IRDA is not set
355# CONFIG_BT is not set 357# CONFIG_BT is not set
356# CONFIG_AF_RXRPC is not set 358# CONFIG_AF_RXRPC is not set
357 359# CONFIG_PHONET is not set
358# 360CONFIG_WIRELESS=y
359# Wireless
360#
361# CONFIG_CFG80211 is not set 361# CONFIG_CFG80211 is not set
362# CONFIG_WIRELESS_OLD_REGULATORY is not set
362# CONFIG_WIRELESS_EXT is not set 363# CONFIG_WIRELESS_EXT is not set
363# CONFIG_MAC80211 is not set 364# CONFIG_MAC80211 is not set
364# CONFIG_IEEE80211 is not set 365# CONFIG_IEEE80211 is not set
@@ -529,6 +530,9 @@ CONFIG_SMC91X=y
529# CONFIG_IBM_NEW_EMAC_RGMII is not set 530# CONFIG_IBM_NEW_EMAC_RGMII is not set
530# CONFIG_IBM_NEW_EMAC_TAH is not set 531# CONFIG_IBM_NEW_EMAC_TAH is not set
531# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 532# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
533# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
534# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
535# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
532# CONFIG_B44 is not set 536# CONFIG_B44 is not set
533CONFIG_NETDEV_1000=y 537CONFIG_NETDEV_1000=y
534CONFIG_NETDEV_10000=y 538CONFIG_NETDEV_10000=y
@@ -632,6 +636,8 @@ CONFIG_SSB_POSSIBLE=y
632# CONFIG_MFD_CORE is not set 636# CONFIG_MFD_CORE is not set
633# CONFIG_MFD_SM501 is not set 637# CONFIG_MFD_SM501 is not set
634# CONFIG_HTC_PASIC3 is not set 638# CONFIG_HTC_PASIC3 is not set
639# CONFIG_MFD_TMIO is not set
640# CONFIG_MFD_WM8400 is not set
635 641
636# 642#
637# Multimedia devices 643# Multimedia devices
@@ -655,11 +661,11 @@ CONFIG_VIDEO_V4L2=y
655CONFIG_VIDEO_V4L1=y 661CONFIG_VIDEO_V4L1=y
656CONFIG_VIDEO_CAPTURE_DRIVERS=y 662CONFIG_VIDEO_CAPTURE_DRIVERS=y
657# CONFIG_VIDEO_ADV_DEBUG is not set 663# CONFIG_VIDEO_ADV_DEBUG is not set
664# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
658CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 665CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
659# CONFIG_VIDEO_VIVI is not set 666# CONFIG_VIDEO_VIVI is not set
660# CONFIG_VIDEO_CPIA is not set 667# CONFIG_VIDEO_CPIA is not set
661# CONFIG_SOC_CAMERA is not set 668# CONFIG_SOC_CAMERA is not set
662# CONFIG_VIDEO_SH_MOBILE_CEU is not set
663CONFIG_RADIO_ADAPTERS=y 669CONFIG_RADIO_ADAPTERS=y
664# CONFIG_DAB is not set 670# CONFIG_DAB is not set
665 671
@@ -671,6 +677,7 @@ CONFIG_RADIO_ADAPTERS=y
671CONFIG_FB=y 677CONFIG_FB=y
672CONFIG_FIRMWARE_EDID=y 678CONFIG_FIRMWARE_EDID=y
673# CONFIG_FB_DDC is not set 679# CONFIG_FB_DDC is not set
680# CONFIG_FB_BOOT_VESA_SUPPORT is not set
674CONFIG_FB_CFB_FILLRECT=m 681CONFIG_FB_CFB_FILLRECT=m
675CONFIG_FB_CFB_COPYAREA=m 682CONFIG_FB_CFB_COPYAREA=m
676CONFIG_FB_CFB_IMAGEBLIT=m 683CONFIG_FB_CFB_IMAGEBLIT=m
@@ -692,6 +699,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
692# CONFIG_FB_S1D13XXX is not set 699# CONFIG_FB_S1D13XXX is not set
693CONFIG_FB_SH_MOBILE_LCDC=m 700CONFIG_FB_SH_MOBILE_LCDC=m
694# CONFIG_FB_VIRTUAL is not set 701# CONFIG_FB_VIRTUAL is not set
702# CONFIG_FB_METRONOME is not set
695# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 703# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
696 704
697# 705#
@@ -706,6 +714,7 @@ CONFIG_DUMMY_CONSOLE=y
706# CONFIG_FRAMEBUFFER_CONSOLE is not set 714# CONFIG_FRAMEBUFFER_CONSOLE is not set
707# CONFIG_LOGO is not set 715# CONFIG_LOGO is not set
708CONFIG_SOUND=y 716CONFIG_SOUND=y
717CONFIG_SOUND_OSS_CORE=y
709CONFIG_SND=y 718CONFIG_SND=y
710CONFIG_SND_TIMER=y 719CONFIG_SND_TIMER=y
711CONFIG_SND_PCM=y 720CONFIG_SND_PCM=y
@@ -734,6 +743,12 @@ CONFIG_HID_SUPPORT=y
734CONFIG_HID=y 743CONFIG_HID=y
735# CONFIG_HID_DEBUG is not set 744# CONFIG_HID_DEBUG is not set
736# CONFIG_HIDRAW is not set 745# CONFIG_HIDRAW is not set
746# CONFIG_HID_PID is not set
747
748#
749# Special HID drivers
750#
751CONFIG_HID_COMPAT=y
737# CONFIG_USB_SUPPORT is not set 752# CONFIG_USB_SUPPORT is not set
738# CONFIG_MMC is not set 753# CONFIG_MMC is not set
739# CONFIG_MEMSTICK is not set 754# CONFIG_MEMSTICK is not set
@@ -742,6 +757,7 @@ CONFIG_HID=y
742# CONFIG_RTC_CLASS is not set 757# CONFIG_RTC_CLASS is not set
743# CONFIG_DMADEVICES is not set 758# CONFIG_DMADEVICES is not set
744# CONFIG_UIO is not set 759# CONFIG_UIO is not set
760# CONFIG_STAGING is not set
745 761
746# 762#
747# File systems 763# File systems
@@ -753,12 +769,13 @@ CONFIG_EXT3_FS=y
753CONFIG_EXT3_FS_XATTR=y 769CONFIG_EXT3_FS_XATTR=y
754# CONFIG_EXT3_FS_POSIX_ACL is not set 770# CONFIG_EXT3_FS_POSIX_ACL is not set
755# CONFIG_EXT3_FS_SECURITY is not set 771# CONFIG_EXT3_FS_SECURITY is not set
756# CONFIG_EXT4DEV_FS is not set 772# CONFIG_EXT4_FS is not set
757CONFIG_JBD=y 773CONFIG_JBD=y
758CONFIG_FS_MBCACHE=y 774CONFIG_FS_MBCACHE=y
759# CONFIG_REISERFS_FS is not set 775# CONFIG_REISERFS_FS is not set
760# CONFIG_JFS_FS is not set 776# CONFIG_JFS_FS is not set
761# CONFIG_FS_POSIX_ACL is not set 777# CONFIG_FS_POSIX_ACL is not set
778CONFIG_FILE_LOCKING=y
762# CONFIG_XFS_FS is not set 779# CONFIG_XFS_FS is not set
763# CONFIG_OCFS2_FS is not set 780# CONFIG_OCFS2_FS is not set
764# CONFIG_DNOTIFY is not set 781# CONFIG_DNOTIFY is not set
@@ -787,6 +804,7 @@ CONFIG_FS_MBCACHE=y
787CONFIG_PROC_FS=y 804CONFIG_PROC_FS=y
788# CONFIG_PROC_KCORE is not set 805# CONFIG_PROC_KCORE is not set
789CONFIG_PROC_SYSCTL=y 806CONFIG_PROC_SYSCTL=y
807CONFIG_PROC_PAGE_MONITOR=y
790CONFIG_SYSFS=y 808CONFIG_SYSFS=y
791CONFIG_TMPFS=y 809CONFIG_TMPFS=y
792# CONFIG_TMPFS_POSIX_ACL is not set 810# CONFIG_TMPFS_POSIX_ACL is not set
@@ -837,6 +855,7 @@ CONFIG_LOCKD_V4=y
837CONFIG_EXPORTFS=y 855CONFIG_EXPORTFS=y
838CONFIG_NFS_COMMON=y 856CONFIG_NFS_COMMON=y
839CONFIG_SUNRPC=y 857CONFIG_SUNRPC=y
858# CONFIG_SUNRPC_REGISTER_V4 is not set
840# CONFIG_RPCSEC_GSS_KRB5 is not set 859# CONFIG_RPCSEC_GSS_KRB5 is not set
841# CONFIG_RPCSEC_GSS_SPKM3 is not set 860# CONFIG_RPCSEC_GSS_SPKM3 is not set
842# CONFIG_SMB_FS is not set 861# CONFIG_SMB_FS is not set
@@ -868,6 +887,11 @@ CONFIG_FRAME_WARN=1024
868# CONFIG_DEBUG_KERNEL is not set 887# CONFIG_DEBUG_KERNEL is not set
869# CONFIG_DEBUG_BUGVERBOSE is not set 888# CONFIG_DEBUG_BUGVERBOSE is not set
870# CONFIG_DEBUG_MEMORY_INIT is not set 889# CONFIG_DEBUG_MEMORY_INIT is not set
890# CONFIG_RCU_CPU_STALL_DETECTOR is not set
891# CONFIG_LATENCYTOP is not set
892CONFIG_NOP_TRACER=y
893CONFIG_HAVE_FTRACE=y
894# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
871# CONFIG_SAMPLES is not set 895# CONFIG_SAMPLES is not set
872# CONFIG_SH_STANDARD_BIOS is not set 896# CONFIG_SH_STANDARD_BIOS is not set
873CONFIG_EARLY_SCIF_CONSOLE=y 897CONFIG_EARLY_SCIF_CONSOLE=y
@@ -880,12 +904,14 @@ CONFIG_EARLY_PRINTK=y
880# 904#
881# CONFIG_KEYS is not set 905# CONFIG_KEYS is not set
882# CONFIG_SECURITY is not set 906# CONFIG_SECURITY is not set
907# CONFIG_SECURITYFS is not set
883# CONFIG_SECURITY_FILE_CAPABILITIES is not set 908# CONFIG_SECURITY_FILE_CAPABILITIES is not set
884CONFIG_CRYPTO=y 909CONFIG_CRYPTO=y
885 910
886# 911#
887# Crypto core or helper 912# Crypto core or helper
888# 913#
914# CONFIG_CRYPTO_FIPS is not set
889# CONFIG_CRYPTO_MANAGER is not set 915# CONFIG_CRYPTO_MANAGER is not set
890# CONFIG_CRYPTO_GF128MUL is not set 916# CONFIG_CRYPTO_GF128MUL is not set
891# CONFIG_CRYPTO_NULL is not set 917# CONFIG_CRYPTO_NULL is not set
@@ -958,13 +984,17 @@ CONFIG_CRYPTO=y
958# 984#
959# CONFIG_CRYPTO_DEFLATE is not set 985# CONFIG_CRYPTO_DEFLATE is not set
960# CONFIG_CRYPTO_LZO is not set 986# CONFIG_CRYPTO_LZO is not set
987
988#
989# Random Number Generation
990#
991# CONFIG_CRYPTO_ANSI_CPRNG is not set
961CONFIG_CRYPTO_HW=y 992CONFIG_CRYPTO_HW=y
962 993
963# 994#
964# Library routines 995# Library routines
965# 996#
966CONFIG_BITREVERSE=y 997CONFIG_BITREVERSE=y
967# CONFIG_GENERIC_FIND_FIRST_BIT is not set
968# CONFIG_CRC_CCITT is not set 998# CONFIG_CRC_CCITT is not set
969# CONFIG_CRC16 is not set 999# CONFIG_CRC16 is not set
970# CONFIG_CRC_T10DIF is not set 1000# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7619_defconfig b/arch/sh/configs/se7619_defconfig
index 80c1c72edb56..db9cacd7c4e7 100644
--- a/arch/sh/configs/se7619_defconfig
+++ b/arch/sh/configs/se7619_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.26 3# Linux kernel version: 2.6.27
4# Wed Jul 30 02:12:32 2008 4# Wed Oct 22 19:03:29 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -11,16 +11,17 @@ CONFIG_GENERIC_BUG=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
16# CONFIG_GENERIC_TIME is not set 17# CONFIG_GENERIC_TIME is not set
17# CONFIG_GENERIC_CLOCKEVENTS is not set 18# CONFIG_GENERIC_CLOCKEVENTS is not set
18CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25 26
26# 27#
@@ -58,21 +59,20 @@ CONFIG_ANON_INODES=y
58CONFIG_SIGNALFD=y 59CONFIG_SIGNALFD=y
59CONFIG_TIMERFD=y 60CONFIG_TIMERFD=y
60CONFIG_EVENTFD=y 61CONFIG_EVENTFD=y
62CONFIG_AIO=y
61# CONFIG_VM_EVENT_COUNTERS is not set 63# CONFIG_VM_EVENT_COUNTERS is not set
64CONFIG_PCI_QUIRKS=y
62CONFIG_SLAB=y 65CONFIG_SLAB=y
63# CONFIG_SLUB is not set 66# CONFIG_SLUB is not set
64# CONFIG_SLOB is not set 67# CONFIG_SLOB is not set
65# CONFIG_PROFILING is not set 68# CONFIG_PROFILING is not set
66# CONFIG_MARKERS is not set 69# CONFIG_MARKERS is not set
67CONFIG_HAVE_OPROFILE=y 70CONFIG_HAVE_OPROFILE=y
68# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 71CONFIG_HAVE_KPROBES=y
69# CONFIG_HAVE_IOREMAP_PROT is not set 72CONFIG_HAVE_KRETPROBES=y
70# CONFIG_HAVE_KPROBES is not set 73CONFIG_HAVE_ARCH_TRACEHOOK=y
71# CONFIG_HAVE_KRETPROBES is not set
72# CONFIG_HAVE_ARCH_TRACEHOOK is not set
73# CONFIG_HAVE_DMA_ATTRS is not set
74# CONFIG_USE_GENERIC_SMP_HELPERS is not set
75CONFIG_HAVE_CLK=y 74CONFIG_HAVE_CLK=y
75CONFIG_HAVE_GENERIC_DMA_COHERENT=y
76CONFIG_SLABINFO=y 76CONFIG_SLABINFO=y
77CONFIG_TINY_SHMEM=y 77CONFIG_TINY_SHMEM=y
78CONFIG_BASE_SMALL=1 78CONFIG_BASE_SMALL=1
@@ -96,6 +96,7 @@ CONFIG_IOSCHED_NOOP=y
96CONFIG_DEFAULT_NOOP=y 96CONFIG_DEFAULT_NOOP=y
97CONFIG_DEFAULT_IOSCHED="noop" 97CONFIG_DEFAULT_IOSCHED="noop"
98CONFIG_CLASSIC_RCU=y 98CONFIG_CLASSIC_RCU=y
99# CONFIG_FREEZER is not set
99 100
100# 101#
101# System type 102# System type
@@ -161,10 +162,10 @@ CONFIG_FLATMEM_MANUAL=y
161CONFIG_FLATMEM=y 162CONFIG_FLATMEM=y
162CONFIG_FLAT_NODE_MEM_MAP=y 163CONFIG_FLAT_NODE_MEM_MAP=y
163CONFIG_SPARSEMEM_STATIC=y 164CONFIG_SPARSEMEM_STATIC=y
164# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
165CONFIG_PAGEFLAGS_EXTENDED=y 165CONFIG_PAGEFLAGS_EXTENDED=y
166CONFIG_SPLIT_PTLOCK_CPUS=4 166CONFIG_SPLIT_PTLOCK_CPUS=4
167# CONFIG_RESOURCES_64BIT is not set 167# CONFIG_RESOURCES_64BIT is not set
168# CONFIG_PHYS_ADDR_T_64BIT is not set
168CONFIG_ZONE_DMA_FLAG=0 169CONFIG_ZONE_DMA_FLAG=0
169CONFIG_NR_QUICK=2 170CONFIG_NR_QUICK=2
170 171
@@ -196,7 +197,6 @@ CONFIG_SH_CMT=y
196CONFIG_SH_TIMER_IRQ=86 197CONFIG_SH_TIMER_IRQ=86
197CONFIG_SH_PCLK_FREQ=31250000 198CONFIG_SH_PCLK_FREQ=31250000
198CONFIG_SH_CLK_MD=5 199CONFIG_SH_CLK_MD=5
199# CONFIG_TICK_ONESHOT is not set
200 200
201# 201#
202# CPU Frequency scaling 202# CPU Frequency scaling
@@ -228,6 +228,7 @@ CONFIG_HZ=100
228# CONFIG_SCHED_HRTICK is not set 228# CONFIG_SCHED_HRTICK is not set
229# CONFIG_KEXEC is not set 229# CONFIG_KEXEC is not set
230# CONFIG_CRASH_DUMP is not set 230# CONFIG_CRASH_DUMP is not set
231# CONFIG_SECCOMP is not set
231CONFIG_PREEMPT_NONE=y 232CONFIG_PREEMPT_NONE=y
232# CONFIG_PREEMPT_VOLUNTARY is not set 233# CONFIG_PREEMPT_VOLUNTARY is not set
233# CONFIG_PREEMPT is not set 234# CONFIG_PREEMPT is not set
@@ -253,11 +254,8 @@ CONFIG_BINFMT_ELF_FDPIC=y
253CONFIG_BINFMT_FLAT=y 254CONFIG_BINFMT_FLAT=y
254CONFIG_BINFMT_ZFLAT=y 255CONFIG_BINFMT_ZFLAT=y
255# CONFIG_BINFMT_SHARED_FLAT is not set 256# CONFIG_BINFMT_SHARED_FLAT is not set
257# CONFIG_HAVE_AOUT is not set
256# CONFIG_BINFMT_MISC is not set 258# CONFIG_BINFMT_MISC is not set
257
258#
259# Networking
260#
261# CONFIG_NET is not set 259# CONFIG_NET is not set
262 260
263# 261#
@@ -328,7 +326,6 @@ CONFIG_MTD_PHYSMAP_START=0xa0000000
328CONFIG_MTD_PHYSMAP_LEN=0x01000000 326CONFIG_MTD_PHYSMAP_LEN=0x01000000
329CONFIG_MTD_PHYSMAP_BANKWIDTH=2 327CONFIG_MTD_PHYSMAP_BANKWIDTH=2
330# CONFIG_MTD_SOLUTIONENGINE is not set 328# CONFIG_MTD_SOLUTIONENGINE is not set
331# CONFIG_MTD_UCLINUX is not set
332# CONFIG_MTD_PLATRAM is not set 329# CONFIG_MTD_PLATRAM is not set
333 330
334# 331#
@@ -455,6 +452,8 @@ CONFIG_SSB_POSSIBLE=y
455# CONFIG_MFD_CORE is not set 452# CONFIG_MFD_CORE is not set
456# CONFIG_MFD_SM501 is not set 453# CONFIG_MFD_SM501 is not set
457# CONFIG_HTC_PASIC3 is not set 454# CONFIG_HTC_PASIC3 is not set
455# CONFIG_MFD_TMIO is not set
456# CONFIG_MFD_WM8400 is not set
458 457
459# 458#
460# Multimedia devices 459# Multimedia devices
@@ -488,6 +487,12 @@ CONFIG_HID_SUPPORT=y
488CONFIG_HID=y 487CONFIG_HID=y
489# CONFIG_HID_DEBUG is not set 488# CONFIG_HID_DEBUG is not set
490# CONFIG_HIDRAW is not set 489# CONFIG_HIDRAW is not set
490# CONFIG_HID_PID is not set
491
492#
493# Special HID drivers
494#
495CONFIG_HID_COMPAT=y
491CONFIG_USB_SUPPORT=y 496CONFIG_USB_SUPPORT=y
492CONFIG_USB_ARCH_HAS_HCD=y 497CONFIG_USB_ARCH_HAS_HCD=y
493# CONFIG_USB_ARCH_HAS_OHCI is not set 498# CONFIG_USB_ARCH_HAS_OHCI is not set
@@ -497,6 +502,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
497# CONFIG_USB_OTG_BLACKLIST_HUB is not set 502# CONFIG_USB_OTG_BLACKLIST_HUB is not set
498 503
499# 504#
505# Enable Host or Gadget support to see Inventra options
506#
507
508#
500# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 509# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
501# 510#
502# CONFIG_USB_GADGET is not set 511# CONFIG_USB_GADGET is not set
@@ -507,16 +516,18 @@ CONFIG_USB_ARCH_HAS_HCD=y
507# CONFIG_RTC_CLASS is not set 516# CONFIG_RTC_CLASS is not set
508# CONFIG_DMADEVICES is not set 517# CONFIG_DMADEVICES is not set
509# CONFIG_UIO is not set 518# CONFIG_UIO is not set
519# CONFIG_STAGING is not set
510 520
511# 521#
512# File systems 522# File systems
513# 523#
514# CONFIG_EXT2_FS is not set 524# CONFIG_EXT2_FS is not set
515# CONFIG_EXT3_FS is not set 525# CONFIG_EXT3_FS is not set
516# CONFIG_EXT4DEV_FS is not set 526# CONFIG_EXT4_FS is not set
517# CONFIG_REISERFS_FS is not set 527# CONFIG_REISERFS_FS is not set
518# CONFIG_JFS_FS is not set 528# CONFIG_JFS_FS is not set
519# CONFIG_FS_POSIX_ACL is not set 529# CONFIG_FS_POSIX_ACL is not set
530CONFIG_FILE_LOCKING=y
520# CONFIG_XFS_FS is not set 531# CONFIG_XFS_FS is not set
521# CONFIG_DNOTIFY is not set 532# CONFIG_DNOTIFY is not set
522# CONFIG_INOTIFY is not set 533# CONFIG_INOTIFY is not set
@@ -589,6 +600,11 @@ CONFIG_FRAME_WARN=1024
589# CONFIG_DEBUG_KERNEL is not set 600# CONFIG_DEBUG_KERNEL is not set
590# CONFIG_DEBUG_BUGVERBOSE is not set 601# CONFIG_DEBUG_BUGVERBOSE is not set
591# CONFIG_DEBUG_MEMORY_INIT is not set 602# CONFIG_DEBUG_MEMORY_INIT is not set
603# CONFIG_RCU_CPU_STALL_DETECTOR is not set
604# CONFIG_LATENCYTOP is not set
605CONFIG_NOP_TRACER=y
606CONFIG_HAVE_FTRACE=y
607# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
592# CONFIG_SAMPLES is not set 608# CONFIG_SAMPLES is not set
593# CONFIG_SH_STANDARD_BIOS is not set 609# CONFIG_SH_STANDARD_BIOS is not set
594# CONFIG_EARLY_SCIF_CONSOLE is not set 610# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -597,6 +613,7 @@ CONFIG_FRAME_WARN=1024
597# Security options 613# Security options
598# 614#
599# CONFIG_KEYS is not set 615# CONFIG_KEYS is not set
616# CONFIG_SECURITYFS is not set
600# CONFIG_SECURITY_FILE_CAPABILITIES is not set 617# CONFIG_SECURITY_FILE_CAPABILITIES is not set
601# CONFIG_CRYPTO is not set 618# CONFIG_CRYPTO is not set
602 619
@@ -604,7 +621,6 @@ CONFIG_FRAME_WARN=1024
604# Library routines 621# Library routines
605# 622#
606CONFIG_BITREVERSE=y 623CONFIG_BITREVERSE=y
607# CONFIG_GENERIC_FIND_FIRST_BIT is not set
608# CONFIG_CRC_CCITT is not set 624# CONFIG_CRC_CCITT is not set
609# CONFIG_CRC16 is not set 625# CONFIG_CRC16 is not set
610# CONFIG_CRC_T10DIF is not set 626# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7705_defconfig b/arch/sh/configs/se7705_defconfig
index 490dcbc2ce33..d88190fdd7c1 100644
--- a/arch/sh/configs/se7705_defconfig
+++ b/arch/sh/configs/se7705_defconfig
@@ -1,34 +1,36 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc5 3# Linux kernel version: 2.6.27
4# Thu Apr 26 09:16:31 2007 4# Wed Oct 22 19:04:52 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
12CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
14# CONFIG_GENERIC_TIME is not set 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y
15CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 26
21# 27#
22# Code maturity level options 28# General setup
23# 29#
24CONFIG_EXPERIMENTAL=y 30CONFIG_EXPERIMENTAL=y
25CONFIG_BROKEN_ON_SMP=y 31CONFIG_BROKEN_ON_SMP=y
26CONFIG_LOCK_KERNEL=y 32CONFIG_LOCK_KERNEL=y
27CONFIG_INIT_ENV_ARG_LIMIT=32 33CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION="" 34CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y 35CONFIG_LOCALVERSION_AUTO=y
34# CONFIG_SWAP is not set 36# CONFIG_SWAP is not set
@@ -36,11 +38,13 @@ CONFIG_LOCALVERSION_AUTO=y
36# CONFIG_POSIX_MQUEUE is not set 38# CONFIG_POSIX_MQUEUE is not set
37# CONFIG_BSD_PROCESS_ACCT is not set 39# CONFIG_BSD_PROCESS_ACCT is not set
38# CONFIG_TASKSTATS is not set 40# CONFIG_TASKSTATS is not set
39# CONFIG_UTS_NS is not set
40# CONFIG_AUDIT is not set 41# CONFIG_AUDIT is not set
41# CONFIG_IKCONFIG is not set 42# CONFIG_IKCONFIG is not set
42CONFIG_SYSFS_DEPRECATED=y 43CONFIG_LOG_BUF_SHIFT=14
44# CONFIG_CGROUPS is not set
45# CONFIG_GROUP_SCHED is not set
43# CONFIG_RELAY is not set 46# CONFIG_RELAY is not set
47# CONFIG_NAMESPACES is not set
44CONFIG_BLK_DEV_INITRD=y 48CONFIG_BLK_DEV_INITRD=y
45CONFIG_INITRAMFS_SOURCE="" 49CONFIG_INITRAMFS_SOURCE=""
46# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 50# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -53,32 +57,45 @@ CONFIG_UID16=y
53CONFIG_PRINTK=y 57CONFIG_PRINTK=y
54CONFIG_BUG=y 58CONFIG_BUG=y
55CONFIG_ELF_CORE=y 59CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
56CONFIG_BASE_FULL=y 61CONFIG_BASE_FULL=y
57CONFIG_FUTEX=y 62CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
58CONFIG_EPOLL=y 64CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y
67CONFIG_EVENTFD=y
59CONFIG_SHMEM=y 68CONFIG_SHMEM=y
60CONFIG_SLAB=y 69CONFIG_AIO=y
61CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y
73# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y
78CONFIG_HAVE_IOREMAP_PROT=y
79CONFIG_HAVE_KPROBES=y
80CONFIG_HAVE_KRETPROBES=y
81CONFIG_HAVE_ARCH_TRACEHOOK=y
82CONFIG_HAVE_CLK=y
83CONFIG_HAVE_GENERIC_DMA_COHERENT=y
84CONFIG_SLABINFO=y
62CONFIG_RT_MUTEXES=y 85CONFIG_RT_MUTEXES=y
63# CONFIG_TINY_SHMEM is not set 86# CONFIG_TINY_SHMEM is not set
64CONFIG_BASE_SMALL=0 87CONFIG_BASE_SMALL=0
65# CONFIG_SLOB is not set
66
67#
68# Loadable module support
69#
70CONFIG_MODULES=y 88CONFIG_MODULES=y
89# CONFIG_MODULE_FORCE_LOAD is not set
71# CONFIG_MODULE_UNLOAD is not set 90# CONFIG_MODULE_UNLOAD is not set
72# CONFIG_MODVERSIONS is not set 91# CONFIG_MODVERSIONS is not set
73# CONFIG_MODULE_SRCVERSION_ALL is not set 92# CONFIG_MODULE_SRCVERSION_ALL is not set
74CONFIG_KMOD=y 93CONFIG_KMOD=y
75
76#
77# Block layer
78#
79CONFIG_BLOCK=y 94CONFIG_BLOCK=y
80# CONFIG_LBD is not set 95# CONFIG_LBD is not set
81# CONFIG_LSF is not set 96# CONFIG_LSF is not set
97# CONFIG_BLK_DEV_BSG is not set
98# CONFIG_BLK_DEV_INTEGRITY is not set
82 99
83# 100#
84# IO Schedulers 101# IO Schedulers
@@ -92,59 +109,18 @@ CONFIG_DEFAULT_AS=y
92# CONFIG_DEFAULT_CFQ is not set 109# CONFIG_DEFAULT_CFQ is not set
93# CONFIG_DEFAULT_NOOP is not set 110# CONFIG_DEFAULT_NOOP is not set
94CONFIG_DEFAULT_IOSCHED="anticipatory" 111CONFIG_DEFAULT_IOSCHED="anticipatory"
112CONFIG_CLASSIC_RCU=y
113# CONFIG_FREEZER is not set
95 114
96# 115#
97# System type 116# System type
98# 117#
99CONFIG_SOLUTION_ENGINE=y
100CONFIG_SH_SOLUTION_ENGINE=y
101# CONFIG_SH_7751_SOLUTION_ENGINE is not set
102# CONFIG_SH_7780_SOLUTION_ENGINE is not set
103# CONFIG_SH_7300_SOLUTION_ENGINE is not set
104# CONFIG_SH_7343_SOLUTION_ENGINE is not set
105# CONFIG_SH_73180_SOLUTION_ENGINE is not set
106# CONFIG_SH_7722_SOLUTION_ENGINE is not set
107# CONFIG_SH_7751_SYSTEMH is not set
108# CONFIG_SH_HP6XX is not set
109# CONFIG_SH_SATURN is not set
110# CONFIG_SH_DREAMCAST is not set
111# CONFIG_SH_MPC1211 is not set
112# CONFIG_SH_SH03 is not set
113# CONFIG_SH_SECUREEDGE5410 is not set
114# CONFIG_SH_HS7751RVOIP is not set
115# CONFIG_SH_7710VOIPGW is not set
116# CONFIG_SH_RTS7751R2D is not set
117# CONFIG_SH_HIGHLANDER is not set
118# CONFIG_SH_EDOSK7705 is not set
119# CONFIG_SH_SH4202_MICRODEV is not set
120# CONFIG_SH_LANDISK is not set
121# CONFIG_SH_TITAN is not set
122# CONFIG_SH_SHMIN is not set
123# CONFIG_SH_7206_SOLUTION_ENGINE is not set
124# CONFIG_SH_7619_SOLUTION_ENGINE is not set
125# CONFIG_SH_LBOX_RE2 is not set
126# CONFIG_SH_UNKNOWN is not set
127
128#
129# Processor selection
130#
131CONFIG_CPU_SH3=y 118CONFIG_CPU_SH3=y
132
133#
134# SH-2 Processor Support
135#
136# CONFIG_CPU_SUBTYPE_SH7604 is not set
137# CONFIG_CPU_SUBTYPE_SH7619 is not set 119# CONFIG_CPU_SUBTYPE_SH7619 is not set
138 120# CONFIG_CPU_SUBTYPE_SH7203 is not set
139#
140# SH-2A Processor Support
141#
142# CONFIG_CPU_SUBTYPE_SH7206 is not set 121# CONFIG_CPU_SUBTYPE_SH7206 is not set
143 122# CONFIG_CPU_SUBTYPE_SH7263 is not set
144# 123# CONFIG_CPU_SUBTYPE_MXG is not set
145# SH-3 Processor Support
146#
147# CONFIG_CPU_SUBTYPE_SH7300 is not set
148CONFIG_CPU_SUBTYPE_SH7705=y 124CONFIG_CPU_SUBTYPE_SH7705=y
149# CONFIG_CPU_SUBTYPE_SH7706 is not set 125# CONFIG_CPU_SUBTYPE_SH7706 is not set
150# CONFIG_CPU_SUBTYPE_SH7707 is not set 126# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -152,10 +128,8 @@ CONFIG_CPU_SUBTYPE_SH7705=y
152# CONFIG_CPU_SUBTYPE_SH7709 is not set 128# CONFIG_CPU_SUBTYPE_SH7709 is not set
153# CONFIG_CPU_SUBTYPE_SH7710 is not set 129# CONFIG_CPU_SUBTYPE_SH7710 is not set
154# CONFIG_CPU_SUBTYPE_SH7712 is not set 130# CONFIG_CPU_SUBTYPE_SH7712 is not set
155 131# CONFIG_CPU_SUBTYPE_SH7720 is not set
156# 132# CONFIG_CPU_SUBTYPE_SH7721 is not set
157# SH-4 Processor Support
158#
159# CONFIG_CPU_SUBTYPE_SH7750 is not set 133# CONFIG_CPU_SUBTYPE_SH7750 is not set
160# CONFIG_CPU_SUBTYPE_SH7091 is not set 134# CONFIG_CPU_SUBTYPE_SH7091 is not set
161# CONFIG_CPU_SUBTYPE_SH7750R is not set 135# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -164,63 +138,62 @@ CONFIG_CPU_SUBTYPE_SH7705=y
164# CONFIG_CPU_SUBTYPE_SH7751R is not set 138# CONFIG_CPU_SUBTYPE_SH7751R is not set
165# CONFIG_CPU_SUBTYPE_SH7760 is not set 139# CONFIG_CPU_SUBTYPE_SH7760 is not set
166# CONFIG_CPU_SUBTYPE_SH4_202 is not set 140# CONFIG_CPU_SUBTYPE_SH4_202 is not set
167 141# CONFIG_CPU_SUBTYPE_SH7723 is not set
168# 142# CONFIG_CPU_SUBTYPE_SH7763 is not set
169# ST40 Processor Support
170#
171# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
172# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
173
174#
175# SH-4A Processor Support
176#
177# CONFIG_CPU_SUBTYPE_SH7770 is not set 143# CONFIG_CPU_SUBTYPE_SH7770 is not set
178# CONFIG_CPU_SUBTYPE_SH7780 is not set 144# CONFIG_CPU_SUBTYPE_SH7780 is not set
179# CONFIG_CPU_SUBTYPE_SH7785 is not set 145# CONFIG_CPU_SUBTYPE_SH7785 is not set
180 146# CONFIG_CPU_SUBTYPE_SHX3 is not set
181#
182# SH4AL-DSP Processor Support
183#
184# CONFIG_CPU_SUBTYPE_SH73180 is not set
185# CONFIG_CPU_SUBTYPE_SH7343 is not set 147# CONFIG_CPU_SUBTYPE_SH7343 is not set
186# CONFIG_CPU_SUBTYPE_SH7722 is not set 148# CONFIG_CPU_SUBTYPE_SH7722 is not set
149# CONFIG_CPU_SUBTYPE_SH7366 is not set
150# CONFIG_CPU_SUBTYPE_SH5_101 is not set
151# CONFIG_CPU_SUBTYPE_SH5_103 is not set
187 152
188# 153#
189# Memory management options 154# Memory management options
190# 155#
156CONFIG_QUICKLIST=y
191CONFIG_MMU=y 157CONFIG_MMU=y
192CONFIG_PAGE_OFFSET=0x80000000 158CONFIG_PAGE_OFFSET=0x80000000
193CONFIG_MEMORY_START=0x0c000000 159CONFIG_MEMORY_START=0x0c000000
194CONFIG_MEMORY_SIZE=0x02000000 160CONFIG_MEMORY_SIZE=0x02000000
161CONFIG_29BIT=y
195CONFIG_VSYSCALL=y 162CONFIG_VSYSCALL=y
196CONFIG_ARCH_FLATMEM_ENABLE=y 163CONFIG_ARCH_FLATMEM_ENABLE=y
164CONFIG_ARCH_SPARSEMEM_ENABLE=y
165CONFIG_ARCH_SPARSEMEM_DEFAULT=y
166CONFIG_MAX_ACTIVE_REGIONS=1
197CONFIG_ARCH_POPULATES_NODE_MAP=y 167CONFIG_ARCH_POPULATES_NODE_MAP=y
168CONFIG_ARCH_SELECT_MEMORY_MODEL=y
198CONFIG_PAGE_SIZE_4KB=y 169CONFIG_PAGE_SIZE_4KB=y
199# CONFIG_PAGE_SIZE_8KB is not set 170# CONFIG_PAGE_SIZE_8KB is not set
171# CONFIG_PAGE_SIZE_16KB is not set
200# CONFIG_PAGE_SIZE_64KB is not set 172# CONFIG_PAGE_SIZE_64KB is not set
173CONFIG_ENTRY_OFFSET=0x00001000
201CONFIG_SELECT_MEMORY_MODEL=y 174CONFIG_SELECT_MEMORY_MODEL=y
202CONFIG_FLATMEM_MANUAL=y 175CONFIG_FLATMEM_MANUAL=y
203# CONFIG_DISCONTIGMEM_MANUAL is not set 176# CONFIG_DISCONTIGMEM_MANUAL is not set
204# CONFIG_SPARSEMEM_MANUAL is not set 177# CONFIG_SPARSEMEM_MANUAL is not set
205CONFIG_FLATMEM=y 178CONFIG_FLATMEM=y
206CONFIG_FLAT_NODE_MEM_MAP=y 179CONFIG_FLAT_NODE_MEM_MAP=y
207# CONFIG_SPARSEMEM_STATIC is not set 180CONFIG_SPARSEMEM_STATIC=y
181CONFIG_PAGEFLAGS_EXTENDED=y
208CONFIG_SPLIT_PTLOCK_CPUS=4 182CONFIG_SPLIT_PTLOCK_CPUS=4
209# CONFIG_RESOURCES_64BIT is not set 183# CONFIG_RESOURCES_64BIT is not set
184# CONFIG_PHYS_ADDR_T_64BIT is not set
210CONFIG_ZONE_DMA_FLAG=0 185CONFIG_ZONE_DMA_FLAG=0
186CONFIG_NR_QUICK=2
187CONFIG_UNEVICTABLE_LRU=y
211 188
212# 189#
213# Cache configuration 190# Cache configuration
214# 191#
215CONFIG_SH7705_CACHE_32KB=y 192CONFIG_SH7705_CACHE_32KB=y
216# CONFIG_SH_DIRECT_MAPPED is not set 193# CONFIG_SH_DIRECT_MAPPED is not set
217# CONFIG_SH_WRITETHROUGH is not set 194CONFIG_CACHE_WRITEBACK=y
218# CONFIG_SH_OCRAM is not set 195# CONFIG_CACHE_WRITETHROUGH is not set
219CONFIG_CF_ENABLER=y 196# CONFIG_CACHE_OFF is not set
220# CONFIG_CF_AREA5 is not set
221CONFIG_CF_AREA6=y
222# CONFIG_CF_AREA4 is not set
223CONFIG_CF_BASE_ADDR=0xb8000000
224 197
225# 198#
226# Processor features 199# Processor features
@@ -228,18 +201,27 @@ CONFIG_CF_BASE_ADDR=0xb8000000
228CONFIG_CPU_LITTLE_ENDIAN=y 201CONFIG_CPU_LITTLE_ENDIAN=y
229# CONFIG_CPU_BIG_ENDIAN is not set 202# CONFIG_CPU_BIG_ENDIAN is not set
230# CONFIG_SH_FPU_EMU is not set 203# CONFIG_SH_FPU_EMU is not set
231# CONFIG_SH_DSP is not set
232# CONFIG_SH_ADC is not set 204# CONFIG_SH_ADC is not set
233CONFIG_CPU_HAS_INTEVT=y 205CONFIG_CPU_HAS_INTEVT=y
234CONFIG_CPU_HAS_IPR_IRQ=y 206CONFIG_CPU_HAS_IPR_IRQ=y
235CONFIG_CPU_HAS_SR_RB=y 207CONFIG_CPU_HAS_SR_RB=y
236 208
237# 209#
210# Board support
211#
212CONFIG_SOLUTION_ENGINE=y
213CONFIG_SH_SOLUTION_ENGINE=y
214# CONFIG_SH_EDOSK7705 is not set
215
216#
238# Timer and clock configuration 217# Timer and clock configuration
239# 218#
240CONFIG_SH_TMU=y 219CONFIG_SH_TMU=y
241CONFIG_SH_TIMER_IRQ=16 220CONFIG_SH_TIMER_IRQ=16
242CONFIG_SH_PCLK_FREQ=33333333 221CONFIG_SH_PCLK_FREQ=33333333
222# CONFIG_NO_HZ is not set
223# CONFIG_HIGH_RES_TIMERS is not set
224CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
243 225
244# 226#
245# CPU Frequency scaling 227# CPU Frequency scaling
@@ -254,7 +236,6 @@ CONFIG_SH_PCLK_FREQ=33333333
254# 236#
255# Companion Chips 237# Companion Chips
256# 238#
257# CONFIG_HD6446X_SERIES is not set
258 239
259# 240#
260# Additional SuperH Device Drivers 241# Additional SuperH Device Drivers
@@ -270,55 +251,45 @@ CONFIG_HZ_250=y
270# CONFIG_HZ_300 is not set 251# CONFIG_HZ_300 is not set
271# CONFIG_HZ_1000 is not set 252# CONFIG_HZ_1000 is not set
272CONFIG_HZ=250 253CONFIG_HZ=250
254# CONFIG_SCHED_HRTICK is not set
273# CONFIG_KEXEC is not set 255# CONFIG_KEXEC is not set
274# CONFIG_SMP is not set 256# CONFIG_CRASH_DUMP is not set
257# CONFIG_SECCOMP is not set
275# CONFIG_PREEMPT_NONE is not set 258# CONFIG_PREEMPT_NONE is not set
276# CONFIG_PREEMPT_VOLUNTARY is not set 259# CONFIG_PREEMPT_VOLUNTARY is not set
277CONFIG_PREEMPT=y 260CONFIG_PREEMPT=y
278CONFIG_PREEMPT_BKL=y 261# CONFIG_PREEMPT_RCU is not set
262CONFIG_GUSA=y
263# CONFIG_GUSA_RB is not set
279 264
280# 265#
281# Boot options 266# Boot options
282# 267#
283CONFIG_ZERO_PAGE_OFFSET=0x00001000 268CONFIG_ZERO_PAGE_OFFSET=0x00001000
284CONFIG_BOOT_LINK_OFFSET=0x00800000 269CONFIG_BOOT_LINK_OFFSET=0x00800000
285# CONFIG_UBC_WAKEUP is not set
286# CONFIG_CMDLINE_BOOL is not set 270# CONFIG_CMDLINE_BOOL is not set
287 271
288# 272#
289# Bus options 273# Bus options
290# 274#
291# CONFIG_PCI is not set 275CONFIG_CF_ENABLER=y
292 276# CONFIG_CF_AREA5 is not set
293# 277CONFIG_CF_AREA6=y
294# PCCARD (PCMCIA/CardBus) support 278CONFIG_CF_BASE_ADDR=0xb8000000
295# 279# CONFIG_ARCH_SUPPORTS_MSI is not set
296
297#
298# PCI Hotplug Support
299#
300 280
301# 281#
302# Executable file formats 282# Executable file formats
303# 283#
304CONFIG_BINFMT_ELF=y 284CONFIG_BINFMT_ELF=y
305# CONFIG_BINFMT_FLAT is not set 285# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
286# CONFIG_HAVE_AOUT is not set
306# CONFIG_BINFMT_MISC is not set 287# CONFIG_BINFMT_MISC is not set
307
308#
309# Power management options (EXPERIMENTAL)
310#
311# CONFIG_PM is not set
312
313#
314# Networking
315#
316CONFIG_NET=y 288CONFIG_NET=y
317 289
318# 290#
319# Networking options 291# Networking options
320# 292#
321# CONFIG_NETDEBUG is not set
322CONFIG_PACKET=y 293CONFIG_PACKET=y
323# CONFIG_PACKET_MMAP is not set 294# CONFIG_PACKET_MMAP is not set
324CONFIG_UNIX=y 295CONFIG_UNIX=y
@@ -326,6 +297,7 @@ CONFIG_XFRM=y
326# CONFIG_XFRM_USER is not set 297# CONFIG_XFRM_USER is not set
327# CONFIG_XFRM_SUB_POLICY is not set 298# CONFIG_XFRM_SUB_POLICY is not set
328# CONFIG_XFRM_MIGRATE is not set 299# CONFIG_XFRM_MIGRATE is not set
300# CONFIG_XFRM_STATISTICS is not set
329# CONFIG_NET_KEY is not set 301# CONFIG_NET_KEY is not set
330CONFIG_INET=y 302CONFIG_INET=y
331# CONFIG_IP_MULTICAST is not set 303# CONFIG_IP_MULTICAST is not set
@@ -347,6 +319,7 @@ CONFIG_IP_PNP_RARP=y
347CONFIG_INET_XFRM_MODE_TRANSPORT=y 319CONFIG_INET_XFRM_MODE_TRANSPORT=y
348CONFIG_INET_XFRM_MODE_TUNNEL=y 320CONFIG_INET_XFRM_MODE_TUNNEL=y
349CONFIG_INET_XFRM_MODE_BEET=y 321CONFIG_INET_XFRM_MODE_BEET=y
322# CONFIG_INET_LRO is not set
350CONFIG_INET_DIAG=y 323CONFIG_INET_DIAG=y
351CONFIG_INET_TCP_DIAG=y 324CONFIG_INET_TCP_DIAG=y
352# CONFIG_TCP_CONG_ADVANCED is not set 325# CONFIG_TCP_CONG_ADVANCED is not set
@@ -354,27 +327,14 @@ CONFIG_TCP_CONG_CUBIC=y
354CONFIG_DEFAULT_TCP_CONG="cubic" 327CONFIG_DEFAULT_TCP_CONG="cubic"
355# CONFIG_TCP_MD5SIG is not set 328# CONFIG_TCP_MD5SIG is not set
356# CONFIG_IPV6 is not set 329# CONFIG_IPV6 is not set
357# CONFIG_INET6_XFRM_TUNNEL is not set
358# CONFIG_INET6_TUNNEL is not set
359# CONFIG_NETWORK_SECMARK is not set 330# CONFIG_NETWORK_SECMARK is not set
360# CONFIG_NETFILTER is not set 331# CONFIG_NETFILTER is not set
361
362#
363# DCCP Configuration (EXPERIMENTAL)
364#
365# CONFIG_IP_DCCP is not set 332# CONFIG_IP_DCCP is not set
366
367#
368# SCTP Configuration (EXPERIMENTAL)
369#
370# CONFIG_IP_SCTP is not set 333# CONFIG_IP_SCTP is not set
371
372#
373# TIPC Configuration (EXPERIMENTAL)
374#
375# CONFIG_TIPC is not set 334# CONFIG_TIPC is not set
376# CONFIG_ATM is not set 335# CONFIG_ATM is not set
377# CONFIG_BRIDGE is not set 336# CONFIG_BRIDGE is not set
337# CONFIG_NET_DSA is not set
378# CONFIG_VLAN_8021Q is not set 338# CONFIG_VLAN_8021Q is not set
379# CONFIG_DECNET is not set 339# CONFIG_DECNET is not set
380# CONFIG_LLC2 is not set 340# CONFIG_LLC2 is not set
@@ -384,10 +344,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
384# CONFIG_LAPB is not set 344# CONFIG_LAPB is not set
385# CONFIG_ECONET is not set 345# CONFIG_ECONET is not set
386# CONFIG_WAN_ROUTER is not set 346# CONFIG_WAN_ROUTER is not set
387
388#
389# QoS and/or fair queueing
390#
391# CONFIG_NET_SCHED is not set 347# CONFIG_NET_SCHED is not set
392 348
393# 349#
@@ -395,9 +351,19 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
395# 351#
396# CONFIG_NET_PKTGEN is not set 352# CONFIG_NET_PKTGEN is not set
397# CONFIG_HAMRADIO is not set 353# CONFIG_HAMRADIO is not set
354# CONFIG_CAN is not set
398# CONFIG_IRDA is not set 355# CONFIG_IRDA is not set
399# CONFIG_BT is not set 356# CONFIG_BT is not set
357# CONFIG_AF_RXRPC is not set
358# CONFIG_PHONET is not set
359CONFIG_WIRELESS=y
360# CONFIG_CFG80211 is not set
361# CONFIG_WIRELESS_OLD_REGULATORY is not set
362# CONFIG_WIRELESS_EXT is not set
363# CONFIG_MAC80211 is not set
400# CONFIG_IEEE80211 is not set 364# CONFIG_IEEE80211 is not set
365# CONFIG_RFKILL is not set
366# CONFIG_NET_9P is not set
401 367
402# 368#
403# Device Drivers 369# Device Drivers
@@ -409,21 +375,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
409CONFIG_STANDALONE=y 375CONFIG_STANDALONE=y
410CONFIG_PREVENT_FIRMWARE_BUILD=y 376CONFIG_PREVENT_FIRMWARE_BUILD=y
411# CONFIG_SYS_HYPERVISOR is not set 377# CONFIG_SYS_HYPERVISOR is not set
412
413#
414# Connector - unified userspace <-> kernelspace linker
415#
416# CONFIG_CONNECTOR is not set 378# CONFIG_CONNECTOR is not set
417
418#
419# Memory Technology Devices (MTD)
420#
421CONFIG_MTD=y 379CONFIG_MTD=y
422# CONFIG_MTD_DEBUG is not set 380# CONFIG_MTD_DEBUG is not set
423# CONFIG_MTD_CONCAT is not set 381# CONFIG_MTD_CONCAT is not set
424CONFIG_MTD_PARTITIONS=y 382CONFIG_MTD_PARTITIONS=y
425# CONFIG_MTD_REDBOOT_PARTS is not set 383# CONFIG_MTD_REDBOOT_PARTS is not set
426# CONFIG_MTD_CMDLINE_PARTS is not set 384# CONFIG_MTD_CMDLINE_PARTS is not set
385# CONFIG_MTD_AR7_PARTS is not set
427 386
428# 387#
429# User Modules And Translation Layers 388# User Modules And Translation Layers
@@ -436,6 +395,7 @@ CONFIG_MTD_BLOCK=y
436# CONFIG_INFTL is not set 395# CONFIG_INFTL is not set
437# CONFIG_RFD_FTL is not set 396# CONFIG_RFD_FTL is not set
438# CONFIG_SSFDC is not set 397# CONFIG_SSFDC is not set
398# CONFIG_MTD_OOPS is not set
439 399
440# 400#
441# RAM/ROM/Flash chip drivers 401# RAM/ROM/Flash chip drivers
@@ -461,7 +421,6 @@ CONFIG_MTD_CFI_UTIL=y
461# CONFIG_MTD_RAM is not set 421# CONFIG_MTD_RAM is not set
462# CONFIG_MTD_ROM is not set 422# CONFIG_MTD_ROM is not set
463# CONFIG_MTD_ABSENT is not set 423# CONFIG_MTD_ABSENT is not set
464# CONFIG_MTD_OBSOLETE_CHIPS is not set
465 424
466# 425#
467# Mapping drivers for chip access 426# Mapping drivers for chip access
@@ -484,47 +443,29 @@ CONFIG_MTD_CFI_UTIL=y
484# CONFIG_MTD_DOC2000 is not set 443# CONFIG_MTD_DOC2000 is not set
485# CONFIG_MTD_DOC2001 is not set 444# CONFIG_MTD_DOC2001 is not set
486# CONFIG_MTD_DOC2001PLUS is not set 445# CONFIG_MTD_DOC2001PLUS is not set
487
488#
489# NAND Flash Device Drivers
490#
491# CONFIG_MTD_NAND is not set 446# CONFIG_MTD_NAND is not set
492
493#
494# OneNAND Flash Device Drivers
495#
496# CONFIG_MTD_ONENAND is not set 447# CONFIG_MTD_ONENAND is not set
497 448
498# 449#
499# Parallel port support 450# UBI - Unsorted block images
500# 451#
452# CONFIG_MTD_UBI is not set
501# CONFIG_PARPORT is not set 453# CONFIG_PARPORT is not set
502 454CONFIG_BLK_DEV=y
503#
504# Plug and Play support
505#
506# CONFIG_PNPACPI is not set
507
508#
509# Block devices
510#
511# CONFIG_BLK_DEV_COW_COMMON is not set 455# CONFIG_BLK_DEV_COW_COMMON is not set
512# CONFIG_BLK_DEV_LOOP is not set 456# CONFIG_BLK_DEV_LOOP is not set
513# CONFIG_BLK_DEV_NBD is not set 457# CONFIG_BLK_DEV_NBD is not set
514CONFIG_BLK_DEV_RAM=y 458CONFIG_BLK_DEV_RAM=y
515CONFIG_BLK_DEV_RAM_COUNT=16 459CONFIG_BLK_DEV_RAM_COUNT=16
516CONFIG_BLK_DEV_RAM_SIZE=8192 460CONFIG_BLK_DEV_RAM_SIZE=8192
517CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 461# CONFIG_BLK_DEV_XIP is not set
518# CONFIG_CDROM_PKTCDVD is not set 462# CONFIG_CDROM_PKTCDVD is not set
519# CONFIG_ATA_OVER_ETH is not set 463# CONFIG_ATA_OVER_ETH is not set
520 464# CONFIG_BLK_DEV_HD is not set
521# 465CONFIG_MISC_DEVICES=y
522# Misc devices 466# CONFIG_EEPROM_93CX6 is not set
523# 467# CONFIG_ENCLOSURE_SERVICES is not set
524 468CONFIG_HAVE_IDE=y
525#
526# ATA/ATAPI/MFM/RLL support
527#
528# CONFIG_IDE is not set 469# CONFIG_IDE is not set
529 470
530# 471#
@@ -532,73 +473,41 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
532# 473#
533# CONFIG_RAID_ATTRS is not set 474# CONFIG_RAID_ATTRS is not set
534# CONFIG_SCSI is not set 475# CONFIG_SCSI is not set
476# CONFIG_SCSI_DMA is not set
535# CONFIG_SCSI_NETLINK is not set 477# CONFIG_SCSI_NETLINK is not set
536
537#
538# Serial ATA (prod) and Parallel ATA (experimental) drivers
539#
540# CONFIG_ATA is not set 478# CONFIG_ATA is not set
541
542#
543# Multi-device support (RAID and LVM)
544#
545# CONFIG_MD is not set 479# CONFIG_MD is not set
546
547#
548# Fusion MPT device support
549#
550# CONFIG_FUSION is not set
551
552#
553# IEEE 1394 (FireWire) support
554#
555
556#
557# I2O device support
558#
559
560#
561# Network device support
562#
563CONFIG_NETDEVICES=y 480CONFIG_NETDEVICES=y
564# CONFIG_DUMMY is not set 481# CONFIG_DUMMY is not set
565# CONFIG_BONDING is not set 482# CONFIG_BONDING is not set
483# CONFIG_MACVLAN is not set
566# CONFIG_EQUALIZER is not set 484# CONFIG_EQUALIZER is not set
567# CONFIG_TUN is not set 485# CONFIG_TUN is not set
568 486# CONFIG_VETH is not set
569#
570# PHY device support
571#
572# CONFIG_PHYLIB is not set 487# CONFIG_PHYLIB is not set
573
574#
575# Ethernet (10 or 100Mbit)
576#
577CONFIG_NET_ETHERNET=y 488CONFIG_NET_ETHERNET=y
578# CONFIG_MII is not set 489# CONFIG_MII is not set
490# CONFIG_AX88796 is not set
579CONFIG_STNIC=y 491CONFIG_STNIC=y
580# CONFIG_SMC91X is not set 492# CONFIG_SMC91X is not set
581 493# CONFIG_SMC911X is not set
582# 494# CONFIG_IBM_NEW_EMAC_ZMII is not set
583# Ethernet (1000 Mbit) 495# CONFIG_IBM_NEW_EMAC_RGMII is not set
584# 496# CONFIG_IBM_NEW_EMAC_TAH is not set
585 497# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
586# 498# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
587# Ethernet (10000 Mbit) 499# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
588# 500# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
589 501# CONFIG_B44 is not set
590# 502CONFIG_NETDEV_1000=y
591# Token Ring devices 503CONFIG_NETDEV_10000=y
592# 504
593 505#
594# 506# Wireless LAN
595# Wireless LAN (non-hamradio) 507#
596# 508# CONFIG_WLAN_PRE80211 is not set
597# CONFIG_NET_RADIO is not set 509# CONFIG_WLAN_80211 is not set
598 510# CONFIG_IWLWIFI_LEDS is not set
599#
600# Wan interfaces
601#
602# CONFIG_WAN is not set 511# CONFIG_WAN is not set
603CONFIG_PPP=y 512CONFIG_PPP=y
604# CONFIG_PPP_MULTILINK is not set 513# CONFIG_PPP_MULTILINK is not set
@@ -609,21 +518,13 @@ CONFIG_PPP_DEFLATE=y
609# CONFIG_PPP_BSDCOMP is not set 518# CONFIG_PPP_BSDCOMP is not set
610# CONFIG_PPP_MPPE is not set 519# CONFIG_PPP_MPPE is not set
611# CONFIG_PPPOE is not set 520# CONFIG_PPPOE is not set
521# CONFIG_PPPOL2TP is not set
612# CONFIG_SLIP is not set 522# CONFIG_SLIP is not set
613CONFIG_SLHC=y 523CONFIG_SLHC=y
614# CONFIG_SHAPER is not set
615# CONFIG_NETCONSOLE is not set 524# CONFIG_NETCONSOLE is not set
616# CONFIG_NETPOLL is not set 525# CONFIG_NETPOLL is not set
617# CONFIG_NET_POLL_CONTROLLER is not set 526# CONFIG_NET_POLL_CONTROLLER is not set
618
619#
620# ISDN subsystem
621#
622# CONFIG_ISDN is not set 527# CONFIG_ISDN is not set
623
624#
625# Telephony Support
626#
627# CONFIG_PHONE is not set 528# CONFIG_PHONE is not set
628 529
629# 530#
@@ -631,13 +532,13 @@ CONFIG_SLHC=y
631# 532#
632CONFIG_INPUT=y 533CONFIG_INPUT=y
633# CONFIG_INPUT_FF_MEMLESS is not set 534# CONFIG_INPUT_FF_MEMLESS is not set
535# CONFIG_INPUT_POLLDEV is not set
634 536
635# 537#
636# Userland interfaces 538# Userland interfaces
637# 539#
638# CONFIG_INPUT_MOUSEDEV is not set 540# CONFIG_INPUT_MOUSEDEV is not set
639# CONFIG_INPUT_JOYDEV is not set 541# CONFIG_INPUT_JOYDEV is not set
640# CONFIG_INPUT_TSDEV is not set
641# CONFIG_INPUT_EVDEV is not set 542# CONFIG_INPUT_EVDEV is not set
642# CONFIG_INPUT_EVBUG is not set 543# CONFIG_INPUT_EVBUG is not set
643 544
@@ -647,6 +548,7 @@ CONFIG_INPUT=y
647# CONFIG_INPUT_KEYBOARD is not set 548# CONFIG_INPUT_KEYBOARD is not set
648# CONFIG_INPUT_MOUSE is not set 549# CONFIG_INPUT_MOUSE is not set
649# CONFIG_INPUT_JOYSTICK is not set 550# CONFIG_INPUT_JOYSTICK is not set
551# CONFIG_INPUT_TABLET is not set
650# CONFIG_INPUT_TOUCHSCREEN is not set 552# CONFIG_INPUT_TOUCHSCREEN is not set
651# CONFIG_INPUT_MISC is not set 553# CONFIG_INPUT_MISC is not set
652 554
@@ -664,6 +566,7 @@ CONFIG_SERIO=y
664# Character devices 566# Character devices
665# 567#
666# CONFIG_VT is not set 568# CONFIG_VT is not set
569CONFIG_DEVKMEM=y
667# CONFIG_SERIAL_NONSTANDARD is not set 570# CONFIG_SERIAL_NONSTANDARD is not set
668 571
669# 572#
@@ -681,153 +584,110 @@ CONFIG_SERIAL_CORE=y
681CONFIG_SERIAL_CORE_CONSOLE=y 584CONFIG_SERIAL_CORE_CONSOLE=y
682CONFIG_UNIX98_PTYS=y 585CONFIG_UNIX98_PTYS=y
683# CONFIG_LEGACY_PTYS is not set 586# CONFIG_LEGACY_PTYS is not set
684
685#
686# IPMI
687#
688# CONFIG_IPMI_HANDLER is not set 587# CONFIG_IPMI_HANDLER is not set
689
690#
691# Watchdog Cards
692#
693# CONFIG_WATCHDOG is not set
694CONFIG_HW_RANDOM=y 588CONFIG_HW_RANDOM=y
695# CONFIG_GEN_RTC is not set
696# CONFIG_DTLK is not set
697# CONFIG_R3964 is not set 589# CONFIG_R3964 is not set
698# CONFIG_RAW_DRIVER is not set 590# CONFIG_RAW_DRIVER is not set
699
700#
701# TPM devices
702#
703# CONFIG_TCG_TPM is not set 591# CONFIG_TCG_TPM is not set
704
705#
706# I2C support
707#
708# CONFIG_I2C is not set 592# CONFIG_I2C is not set
709
710#
711# SPI support
712#
713# CONFIG_SPI is not set 593# CONFIG_SPI is not set
714# CONFIG_SPI_MASTER is not set
715
716#
717# Dallas's 1-wire bus
718#
719# CONFIG_W1 is not set 594# CONFIG_W1 is not set
720 595# CONFIG_POWER_SUPPLY is not set
721#
722# Hardware Monitoring support
723#
724CONFIG_HWMON=y 596CONFIG_HWMON=y
725# CONFIG_HWMON_VID is not set 597# CONFIG_HWMON_VID is not set
726# CONFIG_SENSORS_ABITUGURU is not set
727# CONFIG_SENSORS_F71805F is not set 598# CONFIG_SENSORS_F71805F is not set
599# CONFIG_SENSORS_F71882FG is not set
600# CONFIG_SENSORS_IT87 is not set
601# CONFIG_SENSORS_PC87360 is not set
728# CONFIG_SENSORS_PC87427 is not set 602# CONFIG_SENSORS_PC87427 is not set
603# CONFIG_SENSORS_SMSC47M1 is not set
604# CONFIG_SENSORS_SMSC47B397 is not set
729# CONFIG_SENSORS_VT1211 is not set 605# CONFIG_SENSORS_VT1211 is not set
606# CONFIG_SENSORS_W83627HF is not set
607# CONFIG_SENSORS_W83627EHF is not set
730# CONFIG_HWMON_DEBUG_CHIP is not set 608# CONFIG_HWMON_DEBUG_CHIP is not set
609# CONFIG_THERMAL is not set
610# CONFIG_THERMAL_HWMON is not set
611# CONFIG_WATCHDOG is not set
612
613#
614# Sonics Silicon Backplane
615#
616CONFIG_SSB_POSSIBLE=y
617# CONFIG_SSB is not set
731 618
732# 619#
733# Multifunction device drivers 620# Multifunction device drivers
734# 621#
622# CONFIG_MFD_CORE is not set
735# CONFIG_MFD_SM501 is not set 623# CONFIG_MFD_SM501 is not set
624# CONFIG_HTC_PASIC3 is not set
625# CONFIG_MFD_TMIO is not set
626# CONFIG_MFD_WM8400 is not set
736 627
737# 628#
738# Multimedia devices 629# Multimedia devices
739# 630#
631
632#
633# Multimedia core support
634#
740# CONFIG_VIDEO_DEV is not set 635# CONFIG_VIDEO_DEV is not set
636# CONFIG_DVB_CORE is not set
637# CONFIG_VIDEO_MEDIA is not set
741 638
742# 639#
743# Digital Video Broadcasting Devices 640# Multimedia drivers
744# 641#
745# CONFIG_DVB is not set 642# CONFIG_DAB is not set
746 643
747# 644#
748# Graphics support 645# Graphics support
749# 646#
750# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 647# CONFIG_VGASTATE is not set
648# CONFIG_VIDEO_OUTPUT_CONTROL is not set
751# CONFIG_FB is not set 649# CONFIG_FB is not set
650# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
752 651
753# 652#
754# Sound 653# Display device support
755# 654#
655# CONFIG_DISPLAY_SUPPORT is not set
756# CONFIG_SOUND is not set 656# CONFIG_SOUND is not set
757 657CONFIG_HID_SUPPORT=y
758#
759# HID Devices
760#
761CONFIG_HID=y 658CONFIG_HID=y
762# CONFIG_HID_DEBUG is not set 659# CONFIG_HID_DEBUG is not set
660# CONFIG_HIDRAW is not set
661# CONFIG_HID_PID is not set
763 662
764# 663#
765# USB support 664# Special HID drivers
766# 665#
767# CONFIG_USB_ARCH_HAS_HCD is not set 666CONFIG_HID_COMPAT=y
667CONFIG_USB_SUPPORT=y
668CONFIG_USB_ARCH_HAS_HCD=y
768# CONFIG_USB_ARCH_HAS_OHCI is not set 669# CONFIG_USB_ARCH_HAS_OHCI is not set
769# CONFIG_USB_ARCH_HAS_EHCI is not set 670# CONFIG_USB_ARCH_HAS_EHCI is not set
671# CONFIG_USB is not set
672# CONFIG_USB_OTG_WHITELIST is not set
673# CONFIG_USB_OTG_BLACKLIST_HUB is not set
770 674
771# 675#
772# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 676# Enable Host or Gadget support to see Inventra options
773# 677#
774 678
775# 679#
776# USB Gadget Support 680# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
777# 681#
778# CONFIG_USB_GADGET is not set 682# CONFIG_USB_GADGET is not set
779
780#
781# MMC/SD Card support
782#
783# CONFIG_MMC is not set 683# CONFIG_MMC is not set
784 684# CONFIG_MEMSTICK is not set
785#
786# LED devices
787#
788# CONFIG_NEW_LEDS is not set 685# CONFIG_NEW_LEDS is not set
789 686# CONFIG_ACCESSIBILITY is not set
790#
791# LED drivers
792#
793
794#
795# LED Triggers
796#
797
798#
799# InfiniBand support
800#
801
802#
803# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
804#
805
806#
807# Real Time Clock
808#
809# CONFIG_RTC_CLASS is not set 687# CONFIG_RTC_CLASS is not set
810 688# CONFIG_DMADEVICES is not set
811# 689# CONFIG_UIO is not set
812# DMA Engine support 690# CONFIG_STAGING is not set
813#
814# CONFIG_DMA_ENGINE is not set
815
816#
817# DMA Clients
818#
819
820#
821# DMA Devices
822#
823
824#
825# Auxiliary Display support
826#
827
828#
829# Virtualization
830#
831 691
832# 692#
833# File systems 693# File systems
@@ -836,18 +696,16 @@ CONFIG_EXT2_FS=y
836# CONFIG_EXT2_FS_XATTR is not set 696# CONFIG_EXT2_FS_XATTR is not set
837# CONFIG_EXT2_FS_XIP is not set 697# CONFIG_EXT2_FS_XIP is not set
838# CONFIG_EXT3_FS is not set 698# CONFIG_EXT3_FS is not set
839# CONFIG_EXT4DEV_FS is not set 699# CONFIG_EXT4_FS is not set
840# CONFIG_REISERFS_FS is not set 700# CONFIG_REISERFS_FS is not set
841# CONFIG_JFS_FS is not set 701# CONFIG_JFS_FS is not set
842# CONFIG_FS_POSIX_ACL is not set 702# CONFIG_FS_POSIX_ACL is not set
703CONFIG_FILE_LOCKING=y
843# CONFIG_XFS_FS is not set 704# CONFIG_XFS_FS is not set
844# CONFIG_GFS2_FS is not set 705CONFIG_DNOTIFY=y
845# CONFIG_MINIX_FS is not set
846# CONFIG_ROMFS_FS is not set
847CONFIG_INOTIFY=y 706CONFIG_INOTIFY=y
848CONFIG_INOTIFY_USER=y 707CONFIG_INOTIFY_USER=y
849# CONFIG_QUOTA is not set 708# CONFIG_QUOTA is not set
850CONFIG_DNOTIFY=y
851# CONFIG_AUTOFS_FS is not set 709# CONFIG_AUTOFS_FS is not set
852# CONFIG_AUTOFS4_FS is not set 710# CONFIG_AUTOFS4_FS is not set
853# CONFIG_FUSE_FS is not set 711# CONFIG_FUSE_FS is not set
@@ -871,11 +729,11 @@ CONFIG_DNOTIFY=y
871CONFIG_PROC_FS=y 729CONFIG_PROC_FS=y
872CONFIG_PROC_KCORE=y 730CONFIG_PROC_KCORE=y
873CONFIG_PROC_SYSCTL=y 731CONFIG_PROC_SYSCTL=y
732CONFIG_PROC_PAGE_MONITOR=y
874# CONFIG_SYSFS is not set 733# CONFIG_SYSFS is not set
875# CONFIG_TMPFS is not set 734# CONFIG_TMPFS is not set
876# CONFIG_HUGETLBFS is not set 735# CONFIG_HUGETLBFS is not set
877# CONFIG_HUGETLB_PAGE is not set 736# CONFIG_HUGETLB_PAGE is not set
878CONFIG_RAMFS=y
879 737
880# 738#
881# Miscellaneous filesystems 739# Miscellaneous filesystems
@@ -890,31 +748,33 @@ CONFIG_RAMFS=y
890CONFIG_JFFS2_FS=y 748CONFIG_JFFS2_FS=y
891CONFIG_JFFS2_FS_DEBUG=0 749CONFIG_JFFS2_FS_DEBUG=0
892CONFIG_JFFS2_FS_WRITEBUFFER=y 750CONFIG_JFFS2_FS_WRITEBUFFER=y
751# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
893# CONFIG_JFFS2_SUMMARY is not set 752# CONFIG_JFFS2_SUMMARY is not set
894# CONFIG_JFFS2_FS_XATTR is not set 753# CONFIG_JFFS2_FS_XATTR is not set
895# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 754# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
896CONFIG_JFFS2_ZLIB=y 755CONFIG_JFFS2_ZLIB=y
756# CONFIG_JFFS2_LZO is not set
897CONFIG_JFFS2_RTIME=y 757CONFIG_JFFS2_RTIME=y
898# CONFIG_JFFS2_RUBIN is not set 758# CONFIG_JFFS2_RUBIN is not set
899# CONFIG_CRAMFS is not set 759# CONFIG_CRAMFS is not set
900# CONFIG_VXFS_FS is not set 760# CONFIG_VXFS_FS is not set
761# CONFIG_MINIX_FS is not set
762# CONFIG_OMFS_FS is not set
901# CONFIG_HPFS_FS is not set 763# CONFIG_HPFS_FS is not set
902# CONFIG_QNX4FS_FS is not set 764# CONFIG_QNX4FS_FS is not set
765# CONFIG_ROMFS_FS is not set
903# CONFIG_SYSV_FS is not set 766# CONFIG_SYSV_FS is not set
904# CONFIG_UFS_FS is not set 767# CONFIG_UFS_FS is not set
905 768CONFIG_NETWORK_FILESYSTEMS=y
906#
907# Network File Systems
908#
909CONFIG_NFS_FS=y 769CONFIG_NFS_FS=y
910# CONFIG_NFS_V3 is not set 770# CONFIG_NFS_V3 is not set
911# CONFIG_NFS_V4 is not set 771# CONFIG_NFS_V4 is not set
912# CONFIG_NFS_DIRECTIO is not set
913# CONFIG_NFSD is not set
914CONFIG_ROOT_NFS=y 772CONFIG_ROOT_NFS=y
773# CONFIG_NFSD is not set
915CONFIG_LOCKD=y 774CONFIG_LOCKD=y
916CONFIG_NFS_COMMON=y 775CONFIG_NFS_COMMON=y
917CONFIG_SUNRPC=y 776CONFIG_SUNRPC=y
777# CONFIG_SUNRPC_REGISTER_V4 is not set
918# CONFIG_RPCSEC_GSS_KRB5 is not set 778# CONFIG_RPCSEC_GSS_KRB5 is not set
919# CONFIG_RPCSEC_GSS_SPKM3 is not set 779# CONFIG_RPCSEC_GSS_SPKM3 is not set
920# CONFIG_SMB_FS is not set 780# CONFIG_SMB_FS is not set
@@ -922,40 +782,34 @@ CONFIG_SUNRPC=y
922# CONFIG_NCP_FS is not set 782# CONFIG_NCP_FS is not set
923# CONFIG_CODA_FS is not set 783# CONFIG_CODA_FS is not set
924# CONFIG_AFS_FS is not set 784# CONFIG_AFS_FS is not set
925# CONFIG_9P_FS is not set
926 785
927# 786#
928# Partition Types 787# Partition Types
929# 788#
930# CONFIG_PARTITION_ADVANCED is not set 789# CONFIG_PARTITION_ADVANCED is not set
931CONFIG_MSDOS_PARTITION=y 790CONFIG_MSDOS_PARTITION=y
932
933#
934# Native Language Support
935#
936# CONFIG_NLS is not set 791# CONFIG_NLS is not set
937 792
938# 793#
939# Distributed Lock Manager
940#
941
942#
943# Profiling support
944#
945# CONFIG_PROFILING is not set
946
947#
948# Kernel hacking 794# Kernel hacking
949# 795#
950CONFIG_TRACE_IRQFLAGS_SUPPORT=y 796CONFIG_TRACE_IRQFLAGS_SUPPORT=y
951# CONFIG_PRINTK_TIME is not set 797# CONFIG_PRINTK_TIME is not set
798CONFIG_ENABLE_WARN_DEPRECATED=y
952CONFIG_ENABLE_MUST_CHECK=y 799CONFIG_ENABLE_MUST_CHECK=y
800CONFIG_FRAME_WARN=1024
953# CONFIG_MAGIC_SYSRQ is not set 801# CONFIG_MAGIC_SYSRQ is not set
954# CONFIG_UNUSED_SYMBOLS is not set 802# CONFIG_UNUSED_SYMBOLS is not set
955# CONFIG_HEADERS_CHECK is not set 803# CONFIG_HEADERS_CHECK is not set
956# CONFIG_DEBUG_KERNEL is not set 804# CONFIG_DEBUG_KERNEL is not set
957CONFIG_LOG_BUF_SHIFT=14
958# CONFIG_DEBUG_BUGVERBOSE is not set 805# CONFIG_DEBUG_BUGVERBOSE is not set
806# CONFIG_DEBUG_MEMORY_INIT is not set
807# CONFIG_RCU_CPU_STALL_DETECTOR is not set
808# CONFIG_LATENCYTOP is not set
809CONFIG_NOP_TRACER=y
810CONFIG_HAVE_FTRACE=y
811# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
812# CONFIG_SAMPLES is not set
959# CONFIG_SH_STANDARD_BIOS is not set 813# CONFIG_SH_STANDARD_BIOS is not set
960# CONFIG_EARLY_SCIF_CONSOLE is not set 814# CONFIG_EARLY_SCIF_CONSOLE is not set
961# CONFIG_SH_KGDB is not set 815# CONFIG_SH_KGDB is not set
@@ -964,11 +818,92 @@ CONFIG_LOG_BUF_SHIFT=14
964# Security options 818# Security options
965# 819#
966# CONFIG_KEYS is not set 820# CONFIG_KEYS is not set
821# CONFIG_SECURITYFS is not set
822# CONFIG_SECURITY_FILE_CAPABILITIES is not set
823CONFIG_CRYPTO=y
824
825#
826# Crypto core or helper
827#
828# CONFIG_CRYPTO_FIPS is not set
829# CONFIG_CRYPTO_MANAGER is not set
830# CONFIG_CRYPTO_GF128MUL is not set
831# CONFIG_CRYPTO_NULL is not set
832# CONFIG_CRYPTO_CRYPTD is not set
833# CONFIG_CRYPTO_AUTHENC is not set
834# CONFIG_CRYPTO_TEST is not set
835
836#
837# Authenticated Encryption with Associated Data
838#
839# CONFIG_CRYPTO_CCM is not set
840# CONFIG_CRYPTO_GCM is not set
841# CONFIG_CRYPTO_SEQIV is not set
842
843#
844# Block modes
845#
846# CONFIG_CRYPTO_CBC is not set
847# CONFIG_CRYPTO_CTR is not set
848# CONFIG_CRYPTO_CTS is not set
849# CONFIG_CRYPTO_ECB is not set
850# CONFIG_CRYPTO_LRW is not set
851# CONFIG_CRYPTO_PCBC is not set
852# CONFIG_CRYPTO_XTS is not set
853
854#
855# Hash modes
856#
857# CONFIG_CRYPTO_HMAC is not set
858# CONFIG_CRYPTO_XCBC is not set
859
860#
861# Digest
862#
863# CONFIG_CRYPTO_CRC32C is not set
864# CONFIG_CRYPTO_MD4 is not set
865# CONFIG_CRYPTO_MD5 is not set
866# CONFIG_CRYPTO_MICHAEL_MIC is not set
867# CONFIG_CRYPTO_RMD128 is not set
868# CONFIG_CRYPTO_RMD160 is not set
869# CONFIG_CRYPTO_RMD256 is not set
870# CONFIG_CRYPTO_RMD320 is not set
871# CONFIG_CRYPTO_SHA1 is not set
872# CONFIG_CRYPTO_SHA256 is not set
873# CONFIG_CRYPTO_SHA512 is not set
874# CONFIG_CRYPTO_TGR192 is not set
875# CONFIG_CRYPTO_WP512 is not set
876
877#
878# Ciphers
879#
880# CONFIG_CRYPTO_AES is not set
881# CONFIG_CRYPTO_ANUBIS is not set
882# CONFIG_CRYPTO_ARC4 is not set
883# CONFIG_CRYPTO_BLOWFISH is not set
884# CONFIG_CRYPTO_CAMELLIA is not set
885# CONFIG_CRYPTO_CAST5 is not set
886# CONFIG_CRYPTO_CAST6 is not set
887# CONFIG_CRYPTO_DES is not set
888# CONFIG_CRYPTO_FCRYPT is not set
889# CONFIG_CRYPTO_KHAZAD is not set
890# CONFIG_CRYPTO_SALSA20 is not set
891# CONFIG_CRYPTO_SEED is not set
892# CONFIG_CRYPTO_SERPENT is not set
893# CONFIG_CRYPTO_TEA is not set
894# CONFIG_CRYPTO_TWOFISH is not set
895
896#
897# Compression
898#
899# CONFIG_CRYPTO_DEFLATE is not set
900# CONFIG_CRYPTO_LZO is not set
967 901
968# 902#
969# Cryptographic options 903# Random Number Generation
970# 904#
971# CONFIG_CRYPTO is not set 905# CONFIG_CRYPTO_ANSI_CPRNG is not set
906CONFIG_CRYPTO_HW=y
972 907
973# 908#
974# Library routines 909# Library routines
@@ -976,10 +911,14 @@ CONFIG_LOG_BUF_SHIFT=14
976CONFIG_BITREVERSE=y 911CONFIG_BITREVERSE=y
977CONFIG_CRC_CCITT=y 912CONFIG_CRC_CCITT=y
978# CONFIG_CRC16 is not set 913# CONFIG_CRC16 is not set
914# CONFIG_CRC_T10DIF is not set
915# CONFIG_CRC_ITU_T is not set
979CONFIG_CRC32=y 916CONFIG_CRC32=y
917# CONFIG_CRC7 is not set
980# CONFIG_LIBCRC32C is not set 918# CONFIG_LIBCRC32C is not set
981CONFIG_ZLIB_INFLATE=y 919CONFIG_ZLIB_INFLATE=y
982CONFIG_ZLIB_DEFLATE=y 920CONFIG_ZLIB_DEFLATE=y
983CONFIG_PLIST=y 921CONFIG_PLIST=y
984CONFIG_HAS_IOMEM=y 922CONFIG_HAS_IOMEM=y
985CONFIG_HAS_IOPORT=y 923CONFIG_HAS_IOPORT=y
924CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/se7712_defconfig b/arch/sh/configs/se7712_defconfig
index 7be79cd04eb0..869ab1737deb 100644
--- a/arch/sh/configs/se7712_defconfig
+++ b/arch/sh/configs/se7712_defconfig
@@ -1,24 +1,26 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc6 3# Linux kernel version: 2.6.27
4# Wed Jun 18 16:36:08 2008 4# Wed Oct 22 19:08:12 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y 11CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
13CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
12CONFIG_GENERIC_IRQ_PROBE=y 14CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 15# CONFIG_GENERIC_GPIO is not set
14CONFIG_GENERIC_TIME=y 16CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y 17CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_STACKTRACE_SUPPORT=y 18CONFIG_STACKTRACE_SUPPORT=y
17CONFIG_LOCKDEP_SUPPORT=y 19CONFIG_LOCKDEP_SUPPORT=y
20CONFIG_HAVE_LATENCYTOP_SUPPORT=y
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set 21# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set 22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_ARCH_NO_VIRT_TO_BUS=y 23CONFIG_ARCH_NO_VIRT_TO_BUS=y
21CONFIG_ARCH_SUPPORTS_AOUT=y
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23 25
24# 26#
@@ -51,7 +53,6 @@ CONFIG_SYSCTL=y
51CONFIG_EMBEDDED=y 53CONFIG_EMBEDDED=y
52CONFIG_UID16=y 54CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y 55CONFIG_SYSCTL_SYSCALL=y
54CONFIG_SYSCTL_SYSCALL_CHECK=y
55CONFIG_KALLSYMS=y 56CONFIG_KALLSYMS=y
56CONFIG_KALLSYMS_ALL=y 57CONFIG_KALLSYMS_ALL=y
57# CONFIG_KALLSYMS_EXTRA_PASS is not set 58# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -68,17 +69,22 @@ CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y 69CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y 70CONFIG_EVENTFD=y
70# CONFIG_SHMEM is not set 71# CONFIG_SHMEM is not set
72CONFIG_AIO=y
71CONFIG_VM_EVENT_COUNTERS=y 73CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y 75CONFIG_SLAB=y
73# CONFIG_SLUB is not set 76# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 77# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set 78# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set 79# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y 80CONFIG_HAVE_OPROFILE=y
78# CONFIG_HAVE_KPROBES is not set 81# CONFIG_KPROBES is not set
79# CONFIG_HAVE_KRETPROBES is not set 82CONFIG_HAVE_IOREMAP_PROT=y
80# CONFIG_HAVE_DMA_ATTRS is not set 83CONFIG_HAVE_KPROBES=y
81CONFIG_PROC_PAGE_MONITOR=y 84CONFIG_HAVE_KRETPROBES=y
85CONFIG_HAVE_ARCH_TRACEHOOK=y
86CONFIG_HAVE_CLK=y
87CONFIG_HAVE_GENERIC_DMA_COHERENT=y
82CONFIG_SLABINFO=y 88CONFIG_SLABINFO=y
83CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
84CONFIG_TINY_SHMEM=y 90CONFIG_TINY_SHMEM=y
@@ -88,12 +94,13 @@ CONFIG_MODULES=y
88# CONFIG_MODULE_UNLOAD is not set 94# CONFIG_MODULE_UNLOAD is not set
89# CONFIG_MODVERSIONS is not set 95# CONFIG_MODVERSIONS is not set
90# CONFIG_MODULE_SRCVERSION_ALL is not set 96# CONFIG_MODULE_SRCVERSION_ALL is not set
91# CONFIG_KMOD is not set 97CONFIG_KMOD=y
92CONFIG_BLOCK=y 98CONFIG_BLOCK=y
93# CONFIG_LBD is not set 99# CONFIG_LBD is not set
94# CONFIG_BLK_DEV_IO_TRACE is not set 100# CONFIG_BLK_DEV_IO_TRACE is not set
95# CONFIG_LSF is not set 101# CONFIG_LSF is not set
96# CONFIG_BLK_DEV_BSG is not set 102# CONFIG_BLK_DEV_BSG is not set
103# CONFIG_BLK_DEV_INTEGRITY is not set
97 104
98# 105#
99# IO Schedulers 106# IO Schedulers
@@ -108,6 +115,7 @@ CONFIG_IOSCHED_NOOP=y
108CONFIG_DEFAULT_NOOP=y 115CONFIG_DEFAULT_NOOP=y
109CONFIG_DEFAULT_IOSCHED="noop" 116CONFIG_DEFAULT_IOSCHED="noop"
110CONFIG_CLASSIC_RCU=y 117CONFIG_CLASSIC_RCU=y
118# CONFIG_FREEZER is not set
111 119
112# 120#
113# System type 121# System type
@@ -167,6 +175,7 @@ CONFIG_PAGE_SIZE_4KB=y
167# CONFIG_PAGE_SIZE_8KB is not set 175# CONFIG_PAGE_SIZE_8KB is not set
168# CONFIG_PAGE_SIZE_16KB is not set 176# CONFIG_PAGE_SIZE_16KB is not set
169# CONFIG_PAGE_SIZE_64KB is not set 177# CONFIG_PAGE_SIZE_64KB is not set
178CONFIG_ENTRY_OFFSET=0x00001000
170CONFIG_SELECT_MEMORY_MODEL=y 179CONFIG_SELECT_MEMORY_MODEL=y
171CONFIG_FLATMEM_MANUAL=y 180CONFIG_FLATMEM_MANUAL=y
172# CONFIG_DISCONTIGMEM_MANUAL is not set 181# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -174,12 +183,13 @@ CONFIG_FLATMEM_MANUAL=y
174CONFIG_FLATMEM=y 183CONFIG_FLATMEM=y
175CONFIG_FLAT_NODE_MEM_MAP=y 184CONFIG_FLAT_NODE_MEM_MAP=y
176CONFIG_SPARSEMEM_STATIC=y 185CONFIG_SPARSEMEM_STATIC=y
177# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
178CONFIG_PAGEFLAGS_EXTENDED=y 186CONFIG_PAGEFLAGS_EXTENDED=y
179CONFIG_SPLIT_PTLOCK_CPUS=4 187CONFIG_SPLIT_PTLOCK_CPUS=4
180# CONFIG_RESOURCES_64BIT is not set 188# CONFIG_RESOURCES_64BIT is not set
189# CONFIG_PHYS_ADDR_T_64BIT is not set
181CONFIG_ZONE_DMA_FLAG=0 190CONFIG_ZONE_DMA_FLAG=0
182CONFIG_NR_QUICK=2 191CONFIG_NR_QUICK=2
192CONFIG_UNEVICTABLE_LRU=y
183 193
184# 194#
185# Cache configuration 195# Cache configuration
@@ -207,7 +217,6 @@ CONFIG_CPU_HAS_DSP=y
207# 217#
208CONFIG_SOLUTION_ENGINE=y 218CONFIG_SOLUTION_ENGINE=y
209CONFIG_SH_SOLUTION_ENGINE=y 219CONFIG_SH_SOLUTION_ENGINE=y
210# CONFIG_SH_AP325RXA is not set
211 220
212# 221#
213# Timer and clock configuration 222# Timer and clock configuration
@@ -215,7 +224,6 @@ CONFIG_SH_SOLUTION_ENGINE=y
215CONFIG_SH_TMU=y 224CONFIG_SH_TMU=y
216CONFIG_SH_TIMER_IRQ=16 225CONFIG_SH_TIMER_IRQ=16
217CONFIG_SH_PCLK_FREQ=66666666 226CONFIG_SH_PCLK_FREQ=66666666
218# CONFIG_TICK_ONESHOT is not set
219# CONFIG_NO_HZ is not set 227# CONFIG_NO_HZ is not set
220# CONFIG_HIGH_RES_TIMERS is not set 228# CONFIG_HIGH_RES_TIMERS is not set
221CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 229CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -251,6 +259,7 @@ CONFIG_HZ=250
251# CONFIG_SCHED_HRTICK is not set 259# CONFIG_SCHED_HRTICK is not set
252# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
253# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262# CONFIG_SECCOMP is not set
254# CONFIG_PREEMPT_NONE is not set 263# CONFIG_PREEMPT_NONE is not set
255CONFIG_PREEMPT_VOLUNTARY=y 264CONFIG_PREEMPT_VOLUNTARY=y
256# CONFIG_PREEMPT is not set 265# CONFIG_PREEMPT is not set
@@ -279,11 +288,9 @@ CONFIG_CF_BASE_ADDR=0xb8000000
279# Executable file formats 288# Executable file formats
280# 289#
281CONFIG_BINFMT_ELF=y 290CONFIG_BINFMT_ELF=y
291# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
292# CONFIG_HAVE_AOUT is not set
282# CONFIG_BINFMT_MISC is not set 293# CONFIG_BINFMT_MISC is not set
283
284#
285# Networking
286#
287CONFIG_NET=y 294CONFIG_NET=y
288 295
289# 296#
@@ -297,6 +304,7 @@ CONFIG_XFRM=y
297# CONFIG_XFRM_SUB_POLICY is not set 304# CONFIG_XFRM_SUB_POLICY is not set
298# CONFIG_XFRM_MIGRATE is not set 305# CONFIG_XFRM_MIGRATE is not set
299# CONFIG_XFRM_STATISTICS is not set 306# CONFIG_XFRM_STATISTICS is not set
307CONFIG_XFRM_IPCOMP=y
300CONFIG_NET_KEY=y 308CONFIG_NET_KEY=y
301# CONFIG_NET_KEY_MIGRATE is not set 309# CONFIG_NET_KEY_MIGRATE is not set
302CONFIG_INET=y 310CONFIG_INET=y
@@ -341,6 +349,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
341# CONFIG_TIPC is not set 349# CONFIG_TIPC is not set
342# CONFIG_ATM is not set 350# CONFIG_ATM is not set
343# CONFIG_BRIDGE is not set 351# CONFIG_BRIDGE is not set
352# CONFIG_NET_DSA is not set
344# CONFIG_VLAN_8021Q is not set 353# CONFIG_VLAN_8021Q is not set
345# CONFIG_DECNET is not set 354# CONFIG_DECNET is not set
346# CONFIG_LLC2 is not set 355# CONFIG_LLC2 is not set
@@ -359,7 +368,7 @@ CONFIG_NET_SCH_CBQ=y
359CONFIG_NET_SCH_HTB=y 368CONFIG_NET_SCH_HTB=y
360CONFIG_NET_SCH_HFSC=y 369CONFIG_NET_SCH_HFSC=y
361CONFIG_NET_SCH_PRIO=y 370CONFIG_NET_SCH_PRIO=y
362# CONFIG_NET_SCH_RR is not set 371# CONFIG_NET_SCH_MULTIQ is not set
363CONFIG_NET_SCH_RED=y 372CONFIG_NET_SCH_RED=y
364CONFIG_NET_SCH_SFQ=y 373CONFIG_NET_SCH_SFQ=y
365CONFIG_NET_SCH_TEQL=y 374CONFIG_NET_SCH_TEQL=y
@@ -395,12 +404,11 @@ CONFIG_NET_SCH_FIFO=y
395# CONFIG_IRDA is not set 404# CONFIG_IRDA is not set
396# CONFIG_BT is not set 405# CONFIG_BT is not set
397# CONFIG_AF_RXRPC is not set 406# CONFIG_AF_RXRPC is not set
407# CONFIG_PHONET is not set
398CONFIG_FIB_RULES=y 408CONFIG_FIB_RULES=y
399 409CONFIG_WIRELESS=y
400#
401# Wireless
402#
403# CONFIG_CFG80211 is not set 410# CONFIG_CFG80211 is not set
411# CONFIG_WIRELESS_OLD_REGULATORY is not set
404# CONFIG_WIRELESS_EXT is not set 412# CONFIG_WIRELESS_EXT is not set
405# CONFIG_MAC80211 is not set 413# CONFIG_MAC80211 is not set
406# CONFIG_IEEE80211 is not set 414# CONFIG_IEEE80211 is not set
@@ -418,6 +426,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
418CONFIG_STANDALONE=y 426CONFIG_STANDALONE=y
419CONFIG_PREVENT_FIRMWARE_BUILD=y 427CONFIG_PREVENT_FIRMWARE_BUILD=y
420CONFIG_FW_LOADER=y 428CONFIG_FW_LOADER=y
429CONFIG_FIRMWARE_IN_KERNEL=y
430CONFIG_EXTRA_FIRMWARE=""
421# CONFIG_DEBUG_DRIVER is not set 431# CONFIG_DEBUG_DRIVER is not set
422# CONFIG_DEBUG_DEVRES is not set 432# CONFIG_DEBUG_DEVRES is not set
423# CONFIG_SYS_HYPERVISOR is not set 433# CONFIG_SYS_HYPERVISOR is not set
@@ -504,6 +514,7 @@ CONFIG_BLK_DEV=y
504# CONFIG_BLK_DEV_RAM is not set 514# CONFIG_BLK_DEV_RAM is not set
505# CONFIG_CDROM_PKTCDVD is not set 515# CONFIG_CDROM_PKTCDVD is not set
506# CONFIG_ATA_OVER_ETH is not set 516# CONFIG_ATA_OVER_ETH is not set
517# CONFIG_BLK_DEV_HD is not set
507CONFIG_MISC_DEVICES=y 518CONFIG_MISC_DEVICES=y
508# CONFIG_EEPROM_93CX6 is not set 519# CONFIG_EEPROM_93CX6 is not set
509# CONFIG_ENCLOSURE_SERVICES is not set 520# CONFIG_ENCLOSURE_SERVICES is not set
@@ -550,6 +561,7 @@ CONFIG_SCSI_WAIT_SCAN=m
550CONFIG_SCSI_LOWLEVEL=y 561CONFIG_SCSI_LOWLEVEL=y
551# CONFIG_ISCSI_TCP is not set 562# CONFIG_ISCSI_TCP is not set
552# CONFIG_SCSI_DEBUG is not set 563# CONFIG_SCSI_DEBUG is not set
564# CONFIG_SCSI_DH is not set
553CONFIG_ATA=y 565CONFIG_ATA=y
554# CONFIG_ATA_NONSTANDARD is not set 566# CONFIG_ATA_NONSTANDARD is not set
555CONFIG_SATA_PMP=y 567CONFIG_SATA_PMP=y
@@ -558,7 +570,6 @@ CONFIG_ATA_SFF=y
558CONFIG_PATA_PLATFORM=y 570CONFIG_PATA_PLATFORM=y
559# CONFIG_MD is not set 571# CONFIG_MD is not set
560CONFIG_NETDEVICES=y 572CONFIG_NETDEVICES=y
561# CONFIG_NETDEVICES_MULTIQUEUE is not set
562# CONFIG_DUMMY is not set 573# CONFIG_DUMMY is not set
563# CONFIG_BONDING is not set 574# CONFIG_BONDING is not set
564# CONFIG_MACVLAN is not set 575# CONFIG_MACVLAN is not set
@@ -593,9 +604,11 @@ CONFIG_SH_ETH=y
593# CONFIG_IBM_NEW_EMAC_RGMII is not set 604# CONFIG_IBM_NEW_EMAC_RGMII is not set
594# CONFIG_IBM_NEW_EMAC_TAH is not set 605# CONFIG_IBM_NEW_EMAC_TAH is not set
595# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 606# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
607# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
608# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
609# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
596# CONFIG_B44 is not set 610# CONFIG_B44 is not set
597CONFIG_NETDEV_1000=y 611CONFIG_NETDEV_1000=y
598# CONFIG_E1000E_ENABLED is not set
599CONFIG_NETDEV_10000=y 612CONFIG_NETDEV_10000=y
600 613
601# 614#
@@ -657,6 +670,7 @@ CONFIG_HW_RANDOM=m
657# CONFIG_POWER_SUPPLY is not set 670# CONFIG_POWER_SUPPLY is not set
658# CONFIG_HWMON is not set 671# CONFIG_HWMON is not set
659# CONFIG_THERMAL is not set 672# CONFIG_THERMAL is not set
673# CONFIG_THERMAL_HWMON is not set
660# CONFIG_WATCHDOG is not set 674# CONFIG_WATCHDOG is not set
661 675
662# 676#
@@ -668,8 +682,11 @@ CONFIG_SSB_POSSIBLE=y
668# 682#
669# Multifunction device drivers 683# Multifunction device drivers
670# 684#
685# CONFIG_MFD_CORE is not set
671# CONFIG_MFD_SM501 is not set 686# CONFIG_MFD_SM501 is not set
672# CONFIG_HTC_PASIC3 is not set 687# CONFIG_HTC_PASIC3 is not set
688# CONFIG_MFD_TMIO is not set
689# CONFIG_MFD_WM8400 is not set
673 690
674# 691#
675# Multimedia devices 692# Multimedia devices
@@ -699,10 +716,6 @@ CONFIG_SSB_POSSIBLE=y
699# Display device support 716# Display device support
700# 717#
701# CONFIG_DISPLAY_SUPPORT is not set 718# CONFIG_DISPLAY_SUPPORT is not set
702
703#
704# Sound
705#
706# CONFIG_SOUND is not set 719# CONFIG_SOUND is not set
707CONFIG_USB_SUPPORT=y 720CONFIG_USB_SUPPORT=y
708CONFIG_USB_ARCH_HAS_HCD=y 721CONFIG_USB_ARCH_HAS_HCD=y
@@ -713,6 +726,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
713# CONFIG_USB_OTG_BLACKLIST_HUB is not set 726# CONFIG_USB_OTG_BLACKLIST_HUB is not set
714 727
715# 728#
729# Enable Host or Gadget support to see Inventra options
730#
731
732#
716# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 733# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
717# 734#
718# CONFIG_USB_GADGET is not set 735# CONFIG_USB_GADGET is not set
@@ -734,7 +751,9 @@ CONFIG_LEDS_TRIGGERS=y
734# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 751# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
735# CONFIG_ACCESSIBILITY is not set 752# CONFIG_ACCESSIBILITY is not set
736# CONFIG_RTC_CLASS is not set 753# CONFIG_RTC_CLASS is not set
754# CONFIG_DMADEVICES is not set
737# CONFIG_UIO is not set 755# CONFIG_UIO is not set
756# CONFIG_STAGING is not set
738 757
739# 758#
740# File systems 759# File systems
@@ -748,12 +767,13 @@ CONFIG_EXT3_FS=y
748CONFIG_EXT3_FS_XATTR=y 767CONFIG_EXT3_FS_XATTR=y
749# CONFIG_EXT3_FS_POSIX_ACL is not set 768# CONFIG_EXT3_FS_POSIX_ACL is not set
750# CONFIG_EXT3_FS_SECURITY is not set 769# CONFIG_EXT3_FS_SECURITY is not set
751# CONFIG_EXT4DEV_FS is not set 770# CONFIG_EXT4_FS is not set
752CONFIG_JBD=y 771CONFIG_JBD=y
753CONFIG_FS_MBCACHE=y 772CONFIG_FS_MBCACHE=y
754# CONFIG_REISERFS_FS is not set 773# CONFIG_REISERFS_FS is not set
755# CONFIG_JFS_FS is not set 774# CONFIG_JFS_FS is not set
756CONFIG_FS_POSIX_ACL=y 775CONFIG_FS_POSIX_ACL=y
776CONFIG_FILE_LOCKING=y
757# CONFIG_XFS_FS is not set 777# CONFIG_XFS_FS is not set
758# CONFIG_OCFS2_FS is not set 778# CONFIG_OCFS2_FS is not set
759# CONFIG_DNOTIFY is not set 779# CONFIG_DNOTIFY is not set
@@ -782,6 +802,7 @@ CONFIG_FS_POSIX_ACL=y
782CONFIG_PROC_FS=y 802CONFIG_PROC_FS=y
783# CONFIG_PROC_KCORE is not set 803# CONFIG_PROC_KCORE is not set
784CONFIG_PROC_SYSCTL=y 804CONFIG_PROC_SYSCTL=y
805CONFIG_PROC_PAGE_MONITOR=y
785CONFIG_SYSFS=y 806CONFIG_SYSFS=y
786CONFIG_TMPFS=y 807CONFIG_TMPFS=y
787# CONFIG_TMPFS_POSIX_ACL is not set 808# CONFIG_TMPFS_POSIX_ACL is not set
@@ -813,6 +834,7 @@ CONFIG_JFFS2_RTIME=y
813CONFIG_CRAMFS=y 834CONFIG_CRAMFS=y
814# CONFIG_VXFS_FS is not set 835# CONFIG_VXFS_FS is not set
815# CONFIG_MINIX_FS is not set 836# CONFIG_MINIX_FS is not set
837# CONFIG_OMFS_FS is not set
816# CONFIG_HPFS_FS is not set 838# CONFIG_HPFS_FS is not set
817# CONFIG_QNX4FS_FS is not set 839# CONFIG_QNX4FS_FS is not set
818# CONFIG_ROMFS_FS is not set 840# CONFIG_ROMFS_FS is not set
@@ -822,12 +844,12 @@ CONFIG_NETWORK_FILESYSTEMS=y
822CONFIG_NFS_FS=y 844CONFIG_NFS_FS=y
823# CONFIG_NFS_V3 is not set 845# CONFIG_NFS_V3 is not set
824# CONFIG_NFS_V4 is not set 846# CONFIG_NFS_V4 is not set
825# CONFIG_NFSD is not set
826CONFIG_ROOT_NFS=y 847CONFIG_ROOT_NFS=y
848# CONFIG_NFSD is not set
827CONFIG_LOCKD=y 849CONFIG_LOCKD=y
828CONFIG_NFS_COMMON=y 850CONFIG_NFS_COMMON=y
829CONFIG_SUNRPC=y 851CONFIG_SUNRPC=y
830# CONFIG_SUNRPC_BIND34 is not set 852# CONFIG_SUNRPC_REGISTER_V4 is not set
831# CONFIG_RPCSEC_GSS_KRB5 is not set 853# CONFIG_RPCSEC_GSS_KRB5 is not set
832# CONFIG_RPCSEC_GSS_SPKM3 is not set 854# CONFIG_RPCSEC_GSS_SPKM3 is not set
833# CONFIG_SMB_FS is not set 855# CONFIG_SMB_FS is not set
@@ -877,13 +899,26 @@ CONFIG_SCHED_DEBUG=y
877CONFIG_DEBUG_INFO=y 899CONFIG_DEBUG_INFO=y
878# CONFIG_DEBUG_VM is not set 900# CONFIG_DEBUG_VM is not set
879# CONFIG_DEBUG_WRITECOUNT is not set 901# CONFIG_DEBUG_WRITECOUNT is not set
902# CONFIG_DEBUG_MEMORY_INIT is not set
880# CONFIG_DEBUG_LIST is not set 903# CONFIG_DEBUG_LIST is not set
881# CONFIG_DEBUG_SG is not set 904# CONFIG_DEBUG_SG is not set
882CONFIG_FRAME_POINTER=y 905CONFIG_FRAME_POINTER=y
883# CONFIG_BOOT_PRINTK_DELAY is not set
884# CONFIG_RCU_TORTURE_TEST is not set 906# CONFIG_RCU_TORTURE_TEST is not set
907# CONFIG_RCU_CPU_STALL_DETECTOR is not set
885# CONFIG_BACKTRACE_SELF_TEST is not set 908# CONFIG_BACKTRACE_SELF_TEST is not set
909# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
886# CONFIG_FAULT_INJECTION is not set 910# CONFIG_FAULT_INJECTION is not set
911# CONFIG_LATENCYTOP is not set
912CONFIG_SYSCTL_SYSCALL_CHECK=y
913CONFIG_NOP_TRACER=y
914CONFIG_HAVE_FTRACE=y
915# CONFIG_FTRACE is not set
916# CONFIG_IRQSOFF_TRACER is not set
917# CONFIG_SCHED_TRACER is not set
918# CONFIG_CONTEXT_SWITCH_TRACER is not set
919# CONFIG_BOOT_TRACER is not set
920# CONFIG_STACK_TRACER is not set
921# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
887# CONFIG_SAMPLES is not set 922# CONFIG_SAMPLES is not set
888# CONFIG_SH_STANDARD_BIOS is not set 923# CONFIG_SH_STANDARD_BIOS is not set
889# CONFIG_EARLY_SCIF_CONSOLE is not set 924# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -899,16 +934,19 @@ CONFIG_FRAME_POINTER=y
899# 934#
900# CONFIG_KEYS is not set 935# CONFIG_KEYS is not set
901# CONFIG_SECURITY is not set 936# CONFIG_SECURITY is not set
937# CONFIG_SECURITYFS is not set
902# CONFIG_SECURITY_FILE_CAPABILITIES is not set 938# CONFIG_SECURITY_FILE_CAPABILITIES is not set
903CONFIG_CRYPTO=y 939CONFIG_CRYPTO=y
904 940
905# 941#
906# Crypto core or helper 942# Crypto core or helper
907# 943#
944# CONFIG_CRYPTO_FIPS is not set
908CONFIG_CRYPTO_ALGAPI=y 945CONFIG_CRYPTO_ALGAPI=y
909CONFIG_CRYPTO_AEAD=y 946CONFIG_CRYPTO_AEAD=y
910CONFIG_CRYPTO_BLKCIPHER=y 947CONFIG_CRYPTO_BLKCIPHER=y
911CONFIG_CRYPTO_HASH=y 948CONFIG_CRYPTO_HASH=y
949CONFIG_CRYPTO_RNG=y
912CONFIG_CRYPTO_MANAGER=y 950CONFIG_CRYPTO_MANAGER=y
913# CONFIG_CRYPTO_GF128MUL is not set 951# CONFIG_CRYPTO_GF128MUL is not set
914# CONFIG_CRYPTO_NULL is not set 952# CONFIG_CRYPTO_NULL is not set
@@ -947,6 +985,10 @@ CONFIG_CRYPTO_HMAC=y
947# CONFIG_CRYPTO_MD4 is not set 985# CONFIG_CRYPTO_MD4 is not set
948CONFIG_CRYPTO_MD5=y 986CONFIG_CRYPTO_MD5=y
949# CONFIG_CRYPTO_MICHAEL_MIC is not set 987# CONFIG_CRYPTO_MICHAEL_MIC is not set
988# CONFIG_CRYPTO_RMD128 is not set
989# CONFIG_CRYPTO_RMD160 is not set
990# CONFIG_CRYPTO_RMD256 is not set
991# CONFIG_CRYPTO_RMD320 is not set
950CONFIG_CRYPTO_SHA1=y 992CONFIG_CRYPTO_SHA1=y
951# CONFIG_CRYPTO_SHA256 is not set 993# CONFIG_CRYPTO_SHA256 is not set
952# CONFIG_CRYPTO_SHA512 is not set 994# CONFIG_CRYPTO_SHA512 is not set
@@ -977,15 +1019,20 @@ CONFIG_CRYPTO_DES=y
977# 1019#
978CONFIG_CRYPTO_DEFLATE=y 1020CONFIG_CRYPTO_DEFLATE=y
979# CONFIG_CRYPTO_LZO is not set 1021# CONFIG_CRYPTO_LZO is not set
1022
1023#
1024# Random Number Generation
1025#
1026# CONFIG_CRYPTO_ANSI_CPRNG is not set
980CONFIG_CRYPTO_HW=y 1027CONFIG_CRYPTO_HW=y
981 1028
982# 1029#
983# Library routines 1030# Library routines
984# 1031#
985CONFIG_BITREVERSE=y 1032CONFIG_BITREVERSE=y
986# CONFIG_GENERIC_FIND_FIRST_BIT is not set
987CONFIG_CRC_CCITT=y 1033CONFIG_CRC_CCITT=y
988# CONFIG_CRC16 is not set 1034# CONFIG_CRC16 is not set
1035# CONFIG_CRC_T10DIF is not set
989# CONFIG_CRC_ITU_T is not set 1036# CONFIG_CRC_ITU_T is not set
990CONFIG_CRC32=y 1037CONFIG_CRC32=y
991# CONFIG_CRC7 is not set 1038# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/se7721_defconfig b/arch/sh/configs/se7721_defconfig
index f3d4ca0caa46..b52be14074d8 100644
--- a/arch/sh/configs/se7721_defconfig
+++ b/arch/sh/configs/se7721_defconfig
@@ -1,24 +1,26 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc5 3# Linux kernel version: 2.6.27
4# Fri Mar 21 12:05:31 2008 4# Wed Oct 22 19:12:06 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y 11CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
13CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
12CONFIG_GENERIC_IRQ_PROBE=y 14CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 15# CONFIG_GENERIC_GPIO is not set
14CONFIG_GENERIC_TIME=y 16CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y 17CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_STACKTRACE_SUPPORT=y 18CONFIG_STACKTRACE_SUPPORT=y
17CONFIG_LOCKDEP_SUPPORT=y 19CONFIG_LOCKDEP_SUPPORT=y
20CONFIG_HAVE_LATENCYTOP_SUPPORT=y
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set 21# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set 22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_ARCH_NO_VIRT_TO_BUS=y 23CONFIG_ARCH_NO_VIRT_TO_BUS=y
21CONFIG_ARCH_SUPPORTS_AOUT=y
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23 25
24# 26#
@@ -71,30 +73,38 @@ CONFIG_SIGNALFD=y
71CONFIG_TIMERFD=y 73CONFIG_TIMERFD=y
72CONFIG_EVENTFD=y 74CONFIG_EVENTFD=y
73# CONFIG_SHMEM is not set 75# CONFIG_SHMEM is not set
76CONFIG_AIO=y
74CONFIG_VM_EVENT_COUNTERS=y 77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
75CONFIG_SLAB=y 79CONFIG_SLAB=y
76# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
77# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
78# CONFIG_PROFILING is not set 82# CONFIG_PROFILING is not set
79# CONFIG_MARKERS is not set 83# CONFIG_MARKERS is not set
80CONFIG_HAVE_OPROFILE=y 84CONFIG_HAVE_OPROFILE=y
81# CONFIG_HAVE_KPROBES is not set 85# CONFIG_KPROBES is not set
82# CONFIG_HAVE_KRETPROBES is not set 86CONFIG_HAVE_IOREMAP_PROT=y
83CONFIG_PROC_PAGE_MONITOR=y 87CONFIG_HAVE_KPROBES=y
88CONFIG_HAVE_KRETPROBES=y
89CONFIG_HAVE_ARCH_TRACEHOOK=y
90CONFIG_HAVE_CLK=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
84CONFIG_SLABINFO=y 92CONFIG_SLABINFO=y
85CONFIG_RT_MUTEXES=y 93CONFIG_RT_MUTEXES=y
86CONFIG_TINY_SHMEM=y 94CONFIG_TINY_SHMEM=y
87CONFIG_BASE_SMALL=1 95CONFIG_BASE_SMALL=1
88CONFIG_MODULES=y 96CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set
89# CONFIG_MODULE_UNLOAD is not set 98# CONFIG_MODULE_UNLOAD is not set
90# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
91# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
92# CONFIG_KMOD is not set 101CONFIG_KMOD=y
93CONFIG_BLOCK=y 102CONFIG_BLOCK=y
94# CONFIG_LBD is not set 103# CONFIG_LBD is not set
95# CONFIG_BLK_DEV_IO_TRACE is not set 104# CONFIG_BLK_DEV_IO_TRACE is not set
96# CONFIG_LSF is not set 105# CONFIG_LSF is not set
97# CONFIG_BLK_DEV_BSG is not set 106# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set
98 108
99# 109#
100# IO Schedulers 110# IO Schedulers
@@ -109,6 +119,7 @@ CONFIG_IOSCHED_NOOP=y
109CONFIG_DEFAULT_NOOP=y 119CONFIG_DEFAULT_NOOP=y
110CONFIG_DEFAULT_IOSCHED="noop" 120CONFIG_DEFAULT_IOSCHED="noop"
111CONFIG_CLASSIC_RCU=y 121CONFIG_CLASSIC_RCU=y
122# CONFIG_FREEZER is not set
112 123
113# 124#
114# System type 125# System type
@@ -136,6 +147,7 @@ CONFIG_CPU_SUBTYPE_SH7721=y
136# CONFIG_CPU_SUBTYPE_SH7751R is not set 147# CONFIG_CPU_SUBTYPE_SH7751R is not set
137# CONFIG_CPU_SUBTYPE_SH7760 is not set 148# CONFIG_CPU_SUBTYPE_SH7760 is not set
138# CONFIG_CPU_SUBTYPE_SH4_202 is not set 149# CONFIG_CPU_SUBTYPE_SH4_202 is not set
150# CONFIG_CPU_SUBTYPE_SH7723 is not set
139# CONFIG_CPU_SUBTYPE_SH7763 is not set 151# CONFIG_CPU_SUBTYPE_SH7763 is not set
140# CONFIG_CPU_SUBTYPE_SH7770 is not set 152# CONFIG_CPU_SUBTYPE_SH7770 is not set
141# CONFIG_CPU_SUBTYPE_SH7780 is not set 153# CONFIG_CPU_SUBTYPE_SH7780 is not set
@@ -165,7 +177,9 @@ CONFIG_ARCH_POPULATES_NODE_MAP=y
165CONFIG_ARCH_SELECT_MEMORY_MODEL=y 177CONFIG_ARCH_SELECT_MEMORY_MODEL=y
166CONFIG_PAGE_SIZE_4KB=y 178CONFIG_PAGE_SIZE_4KB=y
167# CONFIG_PAGE_SIZE_8KB is not set 179# CONFIG_PAGE_SIZE_8KB is not set
180# CONFIG_PAGE_SIZE_16KB is not set
168# CONFIG_PAGE_SIZE_64KB is not set 181# CONFIG_PAGE_SIZE_64KB is not set
182CONFIG_ENTRY_OFFSET=0x00001000
169CONFIG_SELECT_MEMORY_MODEL=y 183CONFIG_SELECT_MEMORY_MODEL=y
170CONFIG_FLATMEM_MANUAL=y 184CONFIG_FLATMEM_MANUAL=y
171# CONFIG_DISCONTIGMEM_MANUAL is not set 185# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -173,11 +187,13 @@ CONFIG_FLATMEM_MANUAL=y
173CONFIG_FLATMEM=y 187CONFIG_FLATMEM=y
174CONFIG_FLAT_NODE_MEM_MAP=y 188CONFIG_FLAT_NODE_MEM_MAP=y
175CONFIG_SPARSEMEM_STATIC=y 189CONFIG_SPARSEMEM_STATIC=y
176# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 190CONFIG_PAGEFLAGS_EXTENDED=y
177CONFIG_SPLIT_PTLOCK_CPUS=4 191CONFIG_SPLIT_PTLOCK_CPUS=4
178# CONFIG_RESOURCES_64BIT is not set 192# CONFIG_RESOURCES_64BIT is not set
193# CONFIG_PHYS_ADDR_T_64BIT is not set
179CONFIG_ZONE_DMA_FLAG=0 194CONFIG_ZONE_DMA_FLAG=0
180CONFIG_NR_QUICK=2 195CONFIG_NR_QUICK=2
196CONFIG_UNEVICTABLE_LRU=y
181 197
182# 198#
183# Cache configuration 199# Cache configuration
@@ -211,7 +227,6 @@ CONFIG_SH_7721_SOLUTION_ENGINE=y
211CONFIG_SH_TMU=y 227CONFIG_SH_TMU=y
212CONFIG_SH_TIMER_IRQ=16 228CONFIG_SH_TIMER_IRQ=16
213CONFIG_SH_PCLK_FREQ=33333333 229CONFIG_SH_PCLK_FREQ=33333333
214# CONFIG_TICK_ONESHOT is not set
215# CONFIG_NO_HZ is not set 230# CONFIG_NO_HZ is not set
216# CONFIG_HIGH_RES_TIMERS is not set 231# CONFIG_HIGH_RES_TIMERS is not set
217CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 232CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -247,6 +262,7 @@ CONFIG_HZ=250
247# CONFIG_SCHED_HRTICK is not set 262# CONFIG_SCHED_HRTICK is not set
248# CONFIG_KEXEC is not set 263# CONFIG_KEXEC is not set
249# CONFIG_CRASH_DUMP is not set 264# CONFIG_CRASH_DUMP is not set
265# CONFIG_SECCOMP is not set
250# CONFIG_PREEMPT_NONE is not set 266# CONFIG_PREEMPT_NONE is not set
251CONFIG_PREEMPT_VOLUNTARY=y 267CONFIG_PREEMPT_VOLUNTARY=y
252# CONFIG_PREEMPT is not set 268# CONFIG_PREEMPT is not set
@@ -275,11 +291,9 @@ CONFIG_CF_BASE_ADDR=0xb8000000
275# Executable file formats 291# Executable file formats
276# 292#
277CONFIG_BINFMT_ELF=y 293CONFIG_BINFMT_ELF=y
294# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
295# CONFIG_HAVE_AOUT is not set
278# CONFIG_BINFMT_MISC is not set 296# CONFIG_BINFMT_MISC is not set
279
280#
281# Networking
282#
283CONFIG_NET=y 297CONFIG_NET=y
284 298
285# 299#
@@ -293,6 +307,7 @@ CONFIG_XFRM=y
293# CONFIG_XFRM_SUB_POLICY is not set 307# CONFIG_XFRM_SUB_POLICY is not set
294# CONFIG_XFRM_MIGRATE is not set 308# CONFIG_XFRM_MIGRATE is not set
295# CONFIG_XFRM_STATISTICS is not set 309# CONFIG_XFRM_STATISTICS is not set
310CONFIG_XFRM_IPCOMP=y
296CONFIG_NET_KEY=y 311CONFIG_NET_KEY=y
297# CONFIG_NET_KEY_MIGRATE is not set 312# CONFIG_NET_KEY_MIGRATE is not set
298CONFIG_INET=y 313CONFIG_INET=y
@@ -330,8 +345,6 @@ CONFIG_TCP_CONG_CUBIC=y
330CONFIG_DEFAULT_TCP_CONG="cubic" 345CONFIG_DEFAULT_TCP_CONG="cubic"
331# CONFIG_TCP_MD5SIG is not set 346# CONFIG_TCP_MD5SIG is not set
332# CONFIG_IPV6 is not set 347# CONFIG_IPV6 is not set
333# CONFIG_INET6_XFRM_TUNNEL is not set
334# CONFIG_INET6_TUNNEL is not set
335# CONFIG_NETWORK_SECMARK is not set 348# CONFIG_NETWORK_SECMARK is not set
336# CONFIG_NETFILTER is not set 349# CONFIG_NETFILTER is not set
337# CONFIG_IP_DCCP is not set 350# CONFIG_IP_DCCP is not set
@@ -339,6 +352,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
339# CONFIG_TIPC is not set 352# CONFIG_TIPC is not set
340# CONFIG_ATM is not set 353# CONFIG_ATM is not set
341# CONFIG_BRIDGE is not set 354# CONFIG_BRIDGE is not set
355# CONFIG_NET_DSA is not set
342# CONFIG_VLAN_8021Q is not set 356# CONFIG_VLAN_8021Q is not set
343# CONFIG_DECNET is not set 357# CONFIG_DECNET is not set
344# CONFIG_LLC2 is not set 358# CONFIG_LLC2 is not set
@@ -357,7 +371,7 @@ CONFIG_NET_SCH_CBQ=y
357CONFIG_NET_SCH_HTB=y 371CONFIG_NET_SCH_HTB=y
358CONFIG_NET_SCH_HFSC=y 372CONFIG_NET_SCH_HFSC=y
359CONFIG_NET_SCH_PRIO=y 373CONFIG_NET_SCH_PRIO=y
360# CONFIG_NET_SCH_RR is not set 374# CONFIG_NET_SCH_MULTIQ is not set
361CONFIG_NET_SCH_RED=y 375CONFIG_NET_SCH_RED=y
362CONFIG_NET_SCH_SFQ=y 376CONFIG_NET_SCH_SFQ=y
363CONFIG_NET_SCH_TEQL=y 377CONFIG_NET_SCH_TEQL=y
@@ -393,12 +407,11 @@ CONFIG_NET_SCH_FIFO=y
393# CONFIG_IRDA is not set 407# CONFIG_IRDA is not set
394# CONFIG_BT is not set 408# CONFIG_BT is not set
395# CONFIG_AF_RXRPC is not set 409# CONFIG_AF_RXRPC is not set
410# CONFIG_PHONET is not set
396CONFIG_FIB_RULES=y 411CONFIG_FIB_RULES=y
397 412CONFIG_WIRELESS=y
398#
399# Wireless
400#
401# CONFIG_CFG80211 is not set 413# CONFIG_CFG80211 is not set
414# CONFIG_WIRELESS_OLD_REGULATORY is not set
402# CONFIG_WIRELESS_EXT is not set 415# CONFIG_WIRELESS_EXT is not set
403# CONFIG_MAC80211 is not set 416# CONFIG_MAC80211 is not set
404# CONFIG_IEEE80211 is not set 417# CONFIG_IEEE80211 is not set
@@ -416,6 +429,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
416CONFIG_STANDALONE=y 429CONFIG_STANDALONE=y
417CONFIG_PREVENT_FIRMWARE_BUILD=y 430CONFIG_PREVENT_FIRMWARE_BUILD=y
418CONFIG_FW_LOADER=y 431CONFIG_FW_LOADER=y
432CONFIG_FIRMWARE_IN_KERNEL=y
433CONFIG_EXTRA_FIRMWARE=""
419# CONFIG_DEBUG_DRIVER is not set 434# CONFIG_DEBUG_DRIVER is not set
420# CONFIG_DEBUG_DEVRES is not set 435# CONFIG_DEBUG_DEVRES is not set
421# CONFIG_SYS_HYPERVISOR is not set 436# CONFIG_SYS_HYPERVISOR is not set
@@ -426,6 +441,7 @@ CONFIG_MTD_CONCAT=y
426CONFIG_MTD_PARTITIONS=y 441CONFIG_MTD_PARTITIONS=y
427# CONFIG_MTD_REDBOOT_PARTS is not set 442# CONFIG_MTD_REDBOOT_PARTS is not set
428# CONFIG_MTD_CMDLINE_PARTS is not set 443# CONFIG_MTD_CMDLINE_PARTS is not set
444# CONFIG_MTD_AR7_PARTS is not set
429 445
430# 446#
431# User Modules And Translation Layers 447# User Modules And Translation Layers
@@ -502,6 +518,7 @@ CONFIG_BLK_DEV=y
502# CONFIG_BLK_DEV_RAM is not set 518# CONFIG_BLK_DEV_RAM is not set
503# CONFIG_CDROM_PKTCDVD is not set 519# CONFIG_CDROM_PKTCDVD is not set
504# CONFIG_ATA_OVER_ETH is not set 520# CONFIG_ATA_OVER_ETH is not set
521# CONFIG_BLK_DEV_HD is not set
505CONFIG_MISC_DEVICES=y 522CONFIG_MISC_DEVICES=y
506# CONFIG_EEPROM_93CX6 is not set 523# CONFIG_EEPROM_93CX6 is not set
507# CONFIG_ENCLOSURE_SERVICES is not set 524# CONFIG_ENCLOSURE_SERVICES is not set
@@ -546,13 +563,15 @@ CONFIG_SCSI_WAIT_SCAN=m
546# CONFIG_SCSI_SAS_LIBSAS is not set 563# CONFIG_SCSI_SAS_LIBSAS is not set
547# CONFIG_SCSI_SRP_ATTRS is not set 564# CONFIG_SCSI_SRP_ATTRS is not set
548# CONFIG_SCSI_LOWLEVEL is not set 565# CONFIG_SCSI_LOWLEVEL is not set
566# CONFIG_SCSI_DH is not set
549CONFIG_ATA=y 567CONFIG_ATA=y
550# CONFIG_ATA_NONSTANDARD is not set 568# CONFIG_ATA_NONSTANDARD is not set
569CONFIG_SATA_PMP=y
570CONFIG_ATA_SFF=y
551# CONFIG_SATA_MV is not set 571# CONFIG_SATA_MV is not set
552CONFIG_PATA_PLATFORM=y 572CONFIG_PATA_PLATFORM=y
553# CONFIG_MD is not set 573# CONFIG_MD is not set
554CONFIG_NETDEVICES=y 574CONFIG_NETDEVICES=y
555# CONFIG_NETDEVICES_MULTIQUEUE is not set
556# CONFIG_DUMMY is not set 575# CONFIG_DUMMY is not set
557# CONFIG_BONDING is not set 576# CONFIG_BONDING is not set
558# CONFIG_MACVLAN is not set 577# CONFIG_MACVLAN is not set
@@ -561,7 +580,6 @@ CONFIG_NETDEVICES=y
561# CONFIG_VETH is not set 580# CONFIG_VETH is not set
562# CONFIG_NET_ETHERNET is not set 581# CONFIG_NET_ETHERNET is not set
563CONFIG_NETDEV_1000=y 582CONFIG_NETDEV_1000=y
564# CONFIG_E1000E_ENABLED is not set
565CONFIG_NETDEV_10000=y 583CONFIG_NETDEV_10000=y
566 584
567# 585#
@@ -569,6 +587,7 @@ CONFIG_NETDEV_10000=y
569# 587#
570# CONFIG_WLAN_PRE80211 is not set 588# CONFIG_WLAN_PRE80211 is not set
571# CONFIG_WLAN_80211 is not set 589# CONFIG_WLAN_80211 is not set
590# CONFIG_IWLWIFI_LEDS is not set
572 591
573# 592#
574# USB Network Adapters 593# USB Network Adapters
@@ -591,7 +610,7 @@ CONFIG_NETDEV_10000=y
591# Input device support 610# Input device support
592# 611#
593CONFIG_INPUT=y 612CONFIG_INPUT=y
594# CONFIG_INPUT_FF_MEMLESS is not set 613CONFIG_INPUT_FF_MEMLESS=m
595# CONFIG_INPUT_POLLDEV is not set 614# CONFIG_INPUT_POLLDEV is not set
596 615
597# 616#
@@ -620,6 +639,7 @@ CONFIG_INPUT_MOUSE=y
620# CONFIG_MOUSE_PS2 is not set 639# CONFIG_MOUSE_PS2 is not set
621# CONFIG_MOUSE_SERIAL is not set 640# CONFIG_MOUSE_SERIAL is not set
622# CONFIG_MOUSE_APPLETOUCH is not set 641# CONFIG_MOUSE_APPLETOUCH is not set
642# CONFIG_MOUSE_BCM5974 is not set
623# CONFIG_MOUSE_VSXXXAA is not set 643# CONFIG_MOUSE_VSXXXAA is not set
624# CONFIG_INPUT_JOYSTICK is not set 644# CONFIG_INPUT_JOYSTICK is not set
625# CONFIG_INPUT_TABLET is not set 645# CONFIG_INPUT_TABLET is not set
@@ -636,6 +656,7 @@ CONFIG_INPUT_MOUSE=y
636# Character devices 656# Character devices
637# 657#
638# CONFIG_VT is not set 658# CONFIG_VT is not set
659CONFIG_DEVKMEM=y
639# CONFIG_SERIAL_NONSTANDARD is not set 660# CONFIG_SERIAL_NONSTANDARD is not set
640 661
641# 662#
@@ -659,12 +680,7 @@ CONFIG_UNIX98_PTYS=y
659# CONFIG_RAW_DRIVER is not set 680# CONFIG_RAW_DRIVER is not set
660# CONFIG_TCG_TPM is not set 681# CONFIG_TCG_TPM is not set
661# CONFIG_I2C is not set 682# CONFIG_I2C is not set
662
663#
664# SPI support
665#
666# CONFIG_SPI is not set 683# CONFIG_SPI is not set
667# CONFIG_SPI_MASTER is not set
668# CONFIG_W1 is not set 684# CONFIG_W1 is not set
669# CONFIG_POWER_SUPPLY is not set 685# CONFIG_POWER_SUPPLY is not set
670# CONFIG_HWMON is not set 686# CONFIG_HWMON is not set
@@ -680,13 +696,26 @@ CONFIG_SSB_POSSIBLE=y
680# 696#
681# Multifunction device drivers 697# Multifunction device drivers
682# 698#
699# CONFIG_MFD_CORE is not set
683# CONFIG_MFD_SM501 is not set 700# CONFIG_MFD_SM501 is not set
701# CONFIG_HTC_PASIC3 is not set
702# CONFIG_MFD_TMIO is not set
703# CONFIG_MFD_WM8400 is not set
684 704
685# 705#
686# Multimedia devices 706# Multimedia devices
687# 707#
708
709#
710# Multimedia core support
711#
688# CONFIG_VIDEO_DEV is not set 712# CONFIG_VIDEO_DEV is not set
689# CONFIG_DVB_CORE is not set 713# CONFIG_DVB_CORE is not set
714# CONFIG_VIDEO_MEDIA is not set
715
716#
717# Multimedia drivers
718#
690# CONFIG_DAB is not set 719# CONFIG_DAB is not set
691 720
692# 721#
@@ -701,10 +730,6 @@ CONFIG_SSB_POSSIBLE=y
701# Display device support 730# Display device support
702# 731#
703# CONFIG_DISPLAY_SUPPORT is not set 732# CONFIG_DISPLAY_SUPPORT is not set
704
705#
706# Sound
707#
708# CONFIG_SOUND is not set 733# CONFIG_SOUND is not set
709CONFIG_HID_SUPPORT=y 734CONFIG_HID_SUPPORT=y
710CONFIG_HID=y 735CONFIG_HID=y
@@ -715,9 +740,36 @@ CONFIG_HID=y
715# USB Input Devices 740# USB Input Devices
716# 741#
717CONFIG_USB_HID=y 742CONFIG_USB_HID=y
718# CONFIG_USB_HIDINPUT_POWERBOOK is not set 743# CONFIG_HID_PID is not set
719# CONFIG_HID_FF is not set
720# CONFIG_USB_HIDDEV is not set 744# CONFIG_USB_HIDDEV is not set
745
746#
747# Special HID drivers
748#
749CONFIG_HID_COMPAT=y
750CONFIG_HID_A4TECH=y
751CONFIG_HID_APPLE=y
752CONFIG_HID_BELKIN=y
753CONFIG_HID_BRIGHT=y
754CONFIG_HID_CHERRY=y
755CONFIG_HID_CHICONY=y
756CONFIG_HID_CYPRESS=y
757CONFIG_HID_DELL=y
758CONFIG_HID_EZKEY=y
759CONFIG_HID_GYRATION=y
760CONFIG_HID_LOGITECH=y
761# CONFIG_LOGITECH_FF is not set
762# CONFIG_LOGIRUMBLEPAD2_FF is not set
763CONFIG_HID_MICROSOFT=y
764CONFIG_HID_MONTEREY=y
765CONFIG_HID_PANTHERLORD=y
766# CONFIG_PANTHERLORD_FF is not set
767CONFIG_HID_PETALYNX=y
768CONFIG_HID_SAMSUNG=y
769CONFIG_HID_SONY=y
770CONFIG_HID_SUNPLUS=y
771CONFIG_THRUSTMASTER_FF=m
772CONFIG_ZEROPLUS_FF=m
721CONFIG_USB_SUPPORT=y 773CONFIG_USB_SUPPORT=y
722CONFIG_USB_ARCH_HAS_HCD=y 774CONFIG_USB_ARCH_HAS_HCD=y
723CONFIG_USB_ARCH_HAS_OHCI=y 775CONFIG_USB_ARCH_HAS_OHCI=y
@@ -733,11 +785,16 @@ CONFIG_USB=y
733CONFIG_USB_DEVICE_CLASS=y 785CONFIG_USB_DEVICE_CLASS=y
734# CONFIG_USB_DYNAMIC_MINORS is not set 786# CONFIG_USB_DYNAMIC_MINORS is not set
735# CONFIG_USB_OTG is not set 787# CONFIG_USB_OTG is not set
788# CONFIG_USB_OTG_WHITELIST is not set
789# CONFIG_USB_OTG_BLACKLIST_HUB is not set
790CONFIG_USB_MON=y
736 791
737# 792#
738# USB Host Controller Drivers 793# USB Host Controller Drivers
739# 794#
795# CONFIG_USB_C67X00_HCD is not set
740# CONFIG_USB_ISP116X_HCD is not set 796# CONFIG_USB_ISP116X_HCD is not set
797# CONFIG_USB_ISP1760_HCD is not set
741CONFIG_USB_OHCI_HCD=y 798CONFIG_USB_OHCI_HCD=y
742# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 799# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
743# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 800# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -750,6 +807,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
750# 807#
751# CONFIG_USB_ACM is not set 808# CONFIG_USB_ACM is not set
752# CONFIG_USB_PRINTER is not set 809# CONFIG_USB_PRINTER is not set
810# CONFIG_USB_WDM is not set
811# CONFIG_USB_TMC is not set
753 812
754# 813#
755# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 814# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -771,6 +830,7 @@ CONFIG_USB_STORAGE=y
771# CONFIG_USB_STORAGE_ALAUDA is not set 830# CONFIG_USB_STORAGE_ALAUDA is not set
772# CONFIG_USB_STORAGE_ONETOUCH is not set 831# CONFIG_USB_STORAGE_ONETOUCH is not set
773# CONFIG_USB_STORAGE_KARMA is not set 832# CONFIG_USB_STORAGE_KARMA is not set
833# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
774# CONFIG_USB_LIBUSUAL is not set 834# CONFIG_USB_LIBUSUAL is not set
775 835
776# 836#
@@ -778,7 +838,6 @@ CONFIG_USB_STORAGE=y
778# 838#
779# CONFIG_USB_MDC800 is not set 839# CONFIG_USB_MDC800 is not set
780# CONFIG_USB_MICROTEK is not set 840# CONFIG_USB_MICROTEK is not set
781CONFIG_USB_MON=y
782 841
783# 842#
784# USB port drivers 843# USB port drivers
@@ -791,7 +850,7 @@ CONFIG_USB_MON=y
791# CONFIG_USB_EMI62 is not set 850# CONFIG_USB_EMI62 is not set
792# CONFIG_USB_EMI26 is not set 851# CONFIG_USB_EMI26 is not set
793# CONFIG_USB_ADUTUX is not set 852# CONFIG_USB_ADUTUX is not set
794# CONFIG_USB_AUERSWALD is not set 853# CONFIG_USB_SEVSEG is not set
795# CONFIG_USB_RIO500 is not set 854# CONFIG_USB_RIO500 is not set
796# CONFIG_USB_LEGOTOWER is not set 855# CONFIG_USB_LEGOTOWER is not set
797# CONFIG_USB_LCD is not set 856# CONFIG_USB_LCD is not set
@@ -806,6 +865,8 @@ CONFIG_USB_MON=y
806# CONFIG_USB_LD is not set 865# CONFIG_USB_LD is not set
807# CONFIG_USB_TRANCEVIBRATOR is not set 866# CONFIG_USB_TRANCEVIBRATOR is not set
808# CONFIG_USB_IOWARRIOR is not set 867# CONFIG_USB_IOWARRIOR is not set
868# CONFIG_USB_ISIGHTFW is not set
869# CONFIG_USB_VST is not set
809# CONFIG_USB_GADGET is not set 870# CONFIG_USB_GADGET is not set
810# CONFIG_MMC is not set 871# CONFIG_MMC is not set
811# CONFIG_MEMSTICK is not set 872# CONFIG_MEMSTICK is not set
@@ -822,12 +883,12 @@ CONFIG_LEDS_CLASS=y
822CONFIG_LEDS_TRIGGERS=y 883CONFIG_LEDS_TRIGGERS=y
823# CONFIG_LEDS_TRIGGER_TIMER is not set 884# CONFIG_LEDS_TRIGGER_TIMER is not set
824# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set 885# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
886# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
887# CONFIG_ACCESSIBILITY is not set
825# CONFIG_RTC_CLASS is not set 888# CONFIG_RTC_CLASS is not set
826 889# CONFIG_DMADEVICES is not set
827#
828# Userspace I/O
829#
830# CONFIG_UIO is not set 890# CONFIG_UIO is not set
891# CONFIG_STAGING is not set
831 892
832# 893#
833# File systems 894# File systems
@@ -841,14 +902,14 @@ CONFIG_EXT3_FS=y
841CONFIG_EXT3_FS_XATTR=y 902CONFIG_EXT3_FS_XATTR=y
842# CONFIG_EXT3_FS_POSIX_ACL is not set 903# CONFIG_EXT3_FS_POSIX_ACL is not set
843# CONFIG_EXT3_FS_SECURITY is not set 904# CONFIG_EXT3_FS_SECURITY is not set
844# CONFIG_EXT4DEV_FS is not set 905# CONFIG_EXT4_FS is not set
845CONFIG_JBD=y 906CONFIG_JBD=y
846CONFIG_FS_MBCACHE=y 907CONFIG_FS_MBCACHE=y
847# CONFIG_REISERFS_FS is not set 908# CONFIG_REISERFS_FS is not set
848# CONFIG_JFS_FS is not set 909# CONFIG_JFS_FS is not set
849CONFIG_FS_POSIX_ACL=y 910CONFIG_FS_POSIX_ACL=y
911CONFIG_FILE_LOCKING=y
850# CONFIG_XFS_FS is not set 912# CONFIG_XFS_FS is not set
851# CONFIG_GFS2_FS is not set
852# CONFIG_OCFS2_FS is not set 913# CONFIG_OCFS2_FS is not set
853# CONFIG_DNOTIFY is not set 914# CONFIG_DNOTIFY is not set
854# CONFIG_INOTIFY is not set 915# CONFIG_INOTIFY is not set
@@ -879,6 +940,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
879CONFIG_PROC_FS=y 940CONFIG_PROC_FS=y
880# CONFIG_PROC_KCORE is not set 941# CONFIG_PROC_KCORE is not set
881CONFIG_PROC_SYSCTL=y 942CONFIG_PROC_SYSCTL=y
943CONFIG_PROC_PAGE_MONITOR=y
882CONFIG_SYSFS=y 944CONFIG_SYSFS=y
883CONFIG_TMPFS=y 945CONFIG_TMPFS=y
884# CONFIG_TMPFS_POSIX_ACL is not set 946# CONFIG_TMPFS_POSIX_ACL is not set
@@ -910,6 +972,7 @@ CONFIG_JFFS2_RTIME=y
910CONFIG_CRAMFS=y 972CONFIG_CRAMFS=y
911# CONFIG_VXFS_FS is not set 973# CONFIG_VXFS_FS is not set
912# CONFIG_MINIX_FS is not set 974# CONFIG_MINIX_FS is not set
975# CONFIG_OMFS_FS is not set
913# CONFIG_HPFS_FS is not set 976# CONFIG_HPFS_FS is not set
914# CONFIG_QNX4FS_FS is not set 977# CONFIG_QNX4FS_FS is not set
915# CONFIG_ROMFS_FS is not set 978# CONFIG_ROMFS_FS is not set
@@ -971,6 +1034,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
971# CONFIG_PRINTK_TIME is not set 1034# CONFIG_PRINTK_TIME is not set
972CONFIG_ENABLE_WARN_DEPRECATED=y 1035CONFIG_ENABLE_WARN_DEPRECATED=y
973CONFIG_ENABLE_MUST_CHECK=y 1036CONFIG_ENABLE_MUST_CHECK=y
1037CONFIG_FRAME_WARN=1024
974# CONFIG_MAGIC_SYSRQ is not set 1038# CONFIG_MAGIC_SYSRQ is not set
975# CONFIG_UNUSED_SYMBOLS is not set 1039# CONFIG_UNUSED_SYMBOLS is not set
976# CONFIG_DEBUG_FS is not set 1040# CONFIG_DEBUG_FS is not set
@@ -981,6 +1045,7 @@ CONFIG_DEBUG_KERNEL=y
981CONFIG_SCHED_DEBUG=y 1045CONFIG_SCHED_DEBUG=y
982# CONFIG_SCHEDSTATS is not set 1046# CONFIG_SCHEDSTATS is not set
983# CONFIG_TIMER_STATS is not set 1047# CONFIG_TIMER_STATS is not set
1048# CONFIG_DEBUG_OBJECTS is not set
984# CONFIG_DEBUG_SLAB is not set 1049# CONFIG_DEBUG_SLAB is not set
985# CONFIG_DEBUG_RT_MUTEXES is not set 1050# CONFIG_DEBUG_RT_MUTEXES is not set
986# CONFIG_RT_MUTEX_TESTER is not set 1051# CONFIG_RT_MUTEX_TESTER is not set
@@ -994,13 +1059,27 @@ CONFIG_SCHED_DEBUG=y
994# CONFIG_DEBUG_KOBJECT is not set 1059# CONFIG_DEBUG_KOBJECT is not set
995CONFIG_DEBUG_INFO=y 1060CONFIG_DEBUG_INFO=y
996# CONFIG_DEBUG_VM is not set 1061# CONFIG_DEBUG_VM is not set
1062# CONFIG_DEBUG_WRITECOUNT is not set
1063# CONFIG_DEBUG_MEMORY_INIT is not set
997# CONFIG_DEBUG_LIST is not set 1064# CONFIG_DEBUG_LIST is not set
998# CONFIG_DEBUG_SG is not set 1065# CONFIG_DEBUG_SG is not set
999CONFIG_FRAME_POINTER=y 1066CONFIG_FRAME_POINTER=y
1000# CONFIG_BOOT_PRINTK_DELAY is not set
1001# CONFIG_RCU_TORTURE_TEST is not set 1067# CONFIG_RCU_TORTURE_TEST is not set
1068# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1002# CONFIG_BACKTRACE_SELF_TEST is not set 1069# CONFIG_BACKTRACE_SELF_TEST is not set
1070# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1003# CONFIG_FAULT_INJECTION is not set 1071# CONFIG_FAULT_INJECTION is not set
1072# CONFIG_LATENCYTOP is not set
1073# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1074CONFIG_NOP_TRACER=y
1075CONFIG_HAVE_FTRACE=y
1076# CONFIG_FTRACE is not set
1077# CONFIG_IRQSOFF_TRACER is not set
1078# CONFIG_SCHED_TRACER is not set
1079# CONFIG_CONTEXT_SWITCH_TRACER is not set
1080# CONFIG_BOOT_TRACER is not set
1081# CONFIG_STACK_TRACER is not set
1082# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1004# CONFIG_SAMPLES is not set 1083# CONFIG_SAMPLES is not set
1005# CONFIG_SH_STANDARD_BIOS is not set 1084# CONFIG_SH_STANDARD_BIOS is not set
1006# CONFIG_EARLY_SCIF_CONSOLE is not set 1085# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1016,55 +1095,96 @@ CONFIG_FRAME_POINTER=y
1016# 1095#
1017# CONFIG_KEYS is not set 1096# CONFIG_KEYS is not set
1018# CONFIG_SECURITY is not set 1097# CONFIG_SECURITY is not set
1098# CONFIG_SECURITYFS is not set
1019# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1099# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1020CONFIG_CRYPTO=y 1100CONFIG_CRYPTO=y
1101
1102#
1103# Crypto core or helper
1104#
1105# CONFIG_CRYPTO_FIPS is not set
1021CONFIG_CRYPTO_ALGAPI=y 1106CONFIG_CRYPTO_ALGAPI=y
1022CONFIG_CRYPTO_AEAD=y 1107CONFIG_CRYPTO_AEAD=y
1023CONFIG_CRYPTO_BLKCIPHER=y 1108CONFIG_CRYPTO_BLKCIPHER=y
1024# CONFIG_CRYPTO_SEQIV is not set
1025CONFIG_CRYPTO_HASH=y 1109CONFIG_CRYPTO_HASH=y
1110CONFIG_CRYPTO_RNG=y
1026CONFIG_CRYPTO_MANAGER=y 1111CONFIG_CRYPTO_MANAGER=y
1112# CONFIG_CRYPTO_GF128MUL is not set
1113# CONFIG_CRYPTO_NULL is not set
1114# CONFIG_CRYPTO_CRYPTD is not set
1115CONFIG_CRYPTO_AUTHENC=y
1116# CONFIG_CRYPTO_TEST is not set
1117
1118#
1119# Authenticated Encryption with Associated Data
1120#
1121# CONFIG_CRYPTO_CCM is not set
1122# CONFIG_CRYPTO_GCM is not set
1123# CONFIG_CRYPTO_SEQIV is not set
1124
1125#
1126# Block modes
1127#
1128CONFIG_CRYPTO_CBC=y
1129# CONFIG_CRYPTO_CTR is not set
1130# CONFIG_CRYPTO_CTS is not set
1131# CONFIG_CRYPTO_ECB is not set
1132# CONFIG_CRYPTO_LRW is not set
1133# CONFIG_CRYPTO_PCBC is not set
1134# CONFIG_CRYPTO_XTS is not set
1135
1136#
1137# Hash modes
1138#
1027CONFIG_CRYPTO_HMAC=y 1139CONFIG_CRYPTO_HMAC=y
1028# CONFIG_CRYPTO_XCBC is not set 1140# CONFIG_CRYPTO_XCBC is not set
1029# CONFIG_CRYPTO_NULL is not set 1141
1142#
1143# Digest
1144#
1145# CONFIG_CRYPTO_CRC32C is not set
1030# CONFIG_CRYPTO_MD4 is not set 1146# CONFIG_CRYPTO_MD4 is not set
1031CONFIG_CRYPTO_MD5=y 1147CONFIG_CRYPTO_MD5=y
1148# CONFIG_CRYPTO_MICHAEL_MIC is not set
1149# CONFIG_CRYPTO_RMD128 is not set
1150# CONFIG_CRYPTO_RMD160 is not set
1151# CONFIG_CRYPTO_RMD256 is not set
1152# CONFIG_CRYPTO_RMD320 is not set
1032CONFIG_CRYPTO_SHA1=y 1153CONFIG_CRYPTO_SHA1=y
1033# CONFIG_CRYPTO_SHA256 is not set 1154# CONFIG_CRYPTO_SHA256 is not set
1034# CONFIG_CRYPTO_SHA512 is not set 1155# CONFIG_CRYPTO_SHA512 is not set
1035# CONFIG_CRYPTO_WP512 is not set
1036# CONFIG_CRYPTO_TGR192 is not set 1156# CONFIG_CRYPTO_TGR192 is not set
1037# CONFIG_CRYPTO_GF128MUL is not set 1157# CONFIG_CRYPTO_WP512 is not set
1038# CONFIG_CRYPTO_ECB is not set 1158
1039CONFIG_CRYPTO_CBC=y 1159#
1040# CONFIG_CRYPTO_PCBC is not set 1160# Ciphers
1041# CONFIG_CRYPTO_LRW is not set 1161#
1042# CONFIG_CRYPTO_XTS is not set
1043# CONFIG_CRYPTO_CTR is not set
1044# CONFIG_CRYPTO_GCM is not set
1045# CONFIG_CRYPTO_CCM is not set
1046# CONFIG_CRYPTO_CRYPTD is not set
1047CONFIG_CRYPTO_DES=y
1048# CONFIG_CRYPTO_FCRYPT is not set
1049# CONFIG_CRYPTO_BLOWFISH is not set
1050# CONFIG_CRYPTO_TWOFISH is not set
1051# CONFIG_CRYPTO_SERPENT is not set
1052# CONFIG_CRYPTO_AES is not set 1162# CONFIG_CRYPTO_AES is not set
1163# CONFIG_CRYPTO_ANUBIS is not set
1164# CONFIG_CRYPTO_ARC4 is not set
1165# CONFIG_CRYPTO_BLOWFISH is not set
1166# CONFIG_CRYPTO_CAMELLIA is not set
1053# CONFIG_CRYPTO_CAST5 is not set 1167# CONFIG_CRYPTO_CAST5 is not set
1054# CONFIG_CRYPTO_CAST6 is not set 1168# CONFIG_CRYPTO_CAST6 is not set
1055# CONFIG_CRYPTO_TEA is not set 1169CONFIG_CRYPTO_DES=y
1056# CONFIG_CRYPTO_ARC4 is not set 1170# CONFIG_CRYPTO_FCRYPT is not set
1057# CONFIG_CRYPTO_KHAZAD is not set 1171# CONFIG_CRYPTO_KHAZAD is not set
1058# CONFIG_CRYPTO_ANUBIS is not set
1059# CONFIG_CRYPTO_SEED is not set
1060# CONFIG_CRYPTO_SALSA20 is not set 1172# CONFIG_CRYPTO_SALSA20 is not set
1173# CONFIG_CRYPTO_SEED is not set
1174# CONFIG_CRYPTO_SERPENT is not set
1175# CONFIG_CRYPTO_TEA is not set
1176# CONFIG_CRYPTO_TWOFISH is not set
1177
1178#
1179# Compression
1180#
1061CONFIG_CRYPTO_DEFLATE=y 1181CONFIG_CRYPTO_DEFLATE=y
1062# CONFIG_CRYPTO_MICHAEL_MIC is not set
1063# CONFIG_CRYPTO_CRC32C is not set
1064# CONFIG_CRYPTO_CAMELLIA is not set
1065# CONFIG_CRYPTO_TEST is not set
1066CONFIG_CRYPTO_AUTHENC=y
1067# CONFIG_CRYPTO_LZO is not set 1182# CONFIG_CRYPTO_LZO is not set
1183
1184#
1185# Random Number Generation
1186#
1187# CONFIG_CRYPTO_ANSI_CPRNG is not set
1068CONFIG_CRYPTO_HW=y 1188CONFIG_CRYPTO_HW=y
1069 1189
1070# 1190#
@@ -1073,6 +1193,7 @@ CONFIG_CRYPTO_HW=y
1073CONFIG_BITREVERSE=y 1193CONFIG_BITREVERSE=y
1074CONFIG_CRC_CCITT=y 1194CONFIG_CRC_CCITT=y
1075# CONFIG_CRC16 is not set 1195# CONFIG_CRC16 is not set
1196# CONFIG_CRC_T10DIF is not set
1076# CONFIG_CRC_ITU_T is not set 1197# CONFIG_CRC_ITU_T is not set
1077CONFIG_CRC32=y 1198CONFIG_CRC32=y
1078# CONFIG_CRC7 is not set 1199# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/se7722_defconfig b/arch/sh/configs/se7722_defconfig
index 8e6a6baf5d27..e6df51f098f0 100644
--- a/arch/sh/configs/se7722_defconfig
+++ b/arch/sh/configs/se7722_defconfig
@@ -1,53 +1,56 @@
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-rc4 3# Linux kernel version: 2.6.27
4# Wed Jun 20 18:08:04 2007 4# Wed Oct 22 19:15:10 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
12CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
14CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_SYS_SUPPORTS_NUMA=y 19CONFIG_SYS_SUPPORTS_NUMA=y
17CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
25CONFIG_ARCH_NO_VIRT_TO_BUS=y
21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
22 27
23# 28#
24# Code maturity level options 29# General setup
25# 30#
26CONFIG_EXPERIMENTAL=y 31CONFIG_EXPERIMENTAL=y
27CONFIG_BROKEN_ON_SMP=y 32CONFIG_BROKEN_ON_SMP=y
28CONFIG_LOCK_KERNEL=y 33CONFIG_LOCK_KERNEL=y
29CONFIG_INIT_ENV_ARG_LIMIT=32 34CONFIG_INIT_ENV_ARG_LIMIT=32
30
31#
32# General setup
33#
34CONFIG_LOCALVERSION="" 35CONFIG_LOCALVERSION=""
35CONFIG_LOCALVERSION_AUTO=y 36CONFIG_LOCALVERSION_AUTO=y
36CONFIG_SWAP=y 37CONFIG_SWAP=y
37CONFIG_SYSVIPC=y 38CONFIG_SYSVIPC=y
38# CONFIG_IPC_NS is not set
39CONFIG_SYSVIPC_SYSCTL=y 39CONFIG_SYSVIPC_SYSCTL=y
40# CONFIG_POSIX_MQUEUE is not set 40# CONFIG_POSIX_MQUEUE is not set
41CONFIG_BSD_PROCESS_ACCT=y 41CONFIG_BSD_PROCESS_ACCT=y
42# CONFIG_BSD_PROCESS_ACCT_V3 is not set 42# CONFIG_BSD_PROCESS_ACCT_V3 is not set
43# CONFIG_TASKSTATS is not set 43# CONFIG_TASKSTATS is not set
44# CONFIG_UTS_NS is not set
45# CONFIG_AUDIT is not set 44# CONFIG_AUDIT is not set
46CONFIG_IKCONFIG=y 45CONFIG_IKCONFIG=y
47CONFIG_IKCONFIG_PROC=y 46CONFIG_IKCONFIG_PROC=y
48CONFIG_LOG_BUF_SHIFT=14 47CONFIG_LOG_BUF_SHIFT=14
49# CONFIG_SYSFS_DEPRECATED is not set 48# CONFIG_CGROUPS is not set
49# CONFIG_GROUP_SCHED is not set
50CONFIG_SYSFS_DEPRECATED=y
51CONFIG_SYSFS_DEPRECATED_V2=y
50# CONFIG_RELAY is not set 52# CONFIG_RELAY is not set
53# CONFIG_NAMESPACES is not set
51CONFIG_BLK_DEV_INITRD=y 54CONFIG_BLK_DEV_INITRD=y
52CONFIG_INITRAMFS_SOURCE="" 55CONFIG_INITRAMFS_SOURCE=""
53CONFIG_CC_OPTIMIZE_FOR_SIZE=y 56CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -61,6 +64,7 @@ CONFIG_HOTPLUG=y
61CONFIG_PRINTK=y 64CONFIG_PRINTK=y
62CONFIG_BUG=y 65CONFIG_BUG=y
63CONFIG_ELF_CORE=y 66CONFIG_ELF_CORE=y
67CONFIG_COMPAT_BRK=y
64CONFIG_BASE_FULL=y 68CONFIG_BASE_FULL=y
65CONFIG_FUTEX=y 69CONFIG_FUTEX=y
66CONFIG_ANON_INODES=y 70CONFIG_ANON_INODES=y
@@ -69,32 +73,41 @@ CONFIG_SIGNALFD=y
69CONFIG_TIMERFD=y 73CONFIG_TIMERFD=y
70CONFIG_EVENTFD=y 74CONFIG_EVENTFD=y
71CONFIG_SHMEM=y 75CONFIG_SHMEM=y
76CONFIG_AIO=y
72CONFIG_VM_EVENT_COUNTERS=y 77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
73CONFIG_SLUB_DEBUG=y 79CONFIG_SLUB_DEBUG=y
74# CONFIG_SLAB is not set 80# CONFIG_SLAB is not set
75CONFIG_SLUB=y 81CONFIG_SLUB=y
76# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
83CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85# CONFIG_OPROFILE is not set
86CONFIG_HAVE_OPROFILE=y
87# CONFIG_KPROBES is not set
88CONFIG_HAVE_IOREMAP_PROT=y
89CONFIG_HAVE_KPROBES=y
90CONFIG_HAVE_KRETPROBES=y
91CONFIG_HAVE_ARCH_TRACEHOOK=y
92CONFIG_HAVE_CLK=y
93CONFIG_HAVE_GENERIC_DMA_COHERENT=y
94CONFIG_SLABINFO=y
77CONFIG_RT_MUTEXES=y 95CONFIG_RT_MUTEXES=y
78# CONFIG_TINY_SHMEM is not set 96# CONFIG_TINY_SHMEM is not set
79CONFIG_BASE_SMALL=0 97CONFIG_BASE_SMALL=0
80
81#
82# Loadable module support
83#
84CONFIG_MODULES=y 98CONFIG_MODULES=y
99# CONFIG_MODULE_FORCE_LOAD is not set
85CONFIG_MODULE_UNLOAD=y 100CONFIG_MODULE_UNLOAD=y
86# CONFIG_MODULE_FORCE_UNLOAD is not set 101# CONFIG_MODULE_FORCE_UNLOAD is not set
87# CONFIG_MODVERSIONS is not set 102# CONFIG_MODVERSIONS is not set
88# CONFIG_MODULE_SRCVERSION_ALL is not set 103# CONFIG_MODULE_SRCVERSION_ALL is not set
89CONFIG_KMOD=y 104CONFIG_KMOD=y
90
91#
92# Block layer
93#
94CONFIG_BLOCK=y 105CONFIG_BLOCK=y
95# CONFIG_LBD is not set 106# CONFIG_LBD is not set
96# CONFIG_BLK_DEV_IO_TRACE is not set 107# CONFIG_BLK_DEV_IO_TRACE is not set
97# CONFIG_LSF is not set 108# CONFIG_LSF is not set
109# CONFIG_BLK_DEV_BSG is not set
110# CONFIG_BLK_DEV_INTEGRITY is not set
98 111
99# 112#
100# IO Schedulers 113# IO Schedulers
@@ -108,6 +121,8 @@ CONFIG_IOSCHED_NOOP=y
108# CONFIG_DEFAULT_CFQ is not set 121# CONFIG_DEFAULT_CFQ is not set
109CONFIG_DEFAULT_NOOP=y 122CONFIG_DEFAULT_NOOP=y
110CONFIG_DEFAULT_IOSCHED="noop" 123CONFIG_DEFAULT_IOSCHED="noop"
124CONFIG_CLASSIC_RCU=y
125# CONFIG_FREEZER is not set
111 126
112# 127#
113# System type 128# System type
@@ -117,8 +132,10 @@ CONFIG_CPU_SH4A=y
117CONFIG_CPU_SH4AL_DSP=y 132CONFIG_CPU_SH4AL_DSP=y
118CONFIG_CPU_SHX2=y 133CONFIG_CPU_SHX2=y
119# CONFIG_CPU_SUBTYPE_SH7619 is not set 134# CONFIG_CPU_SUBTYPE_SH7619 is not set
135# CONFIG_CPU_SUBTYPE_SH7203 is not set
120# CONFIG_CPU_SUBTYPE_SH7206 is not set 136# CONFIG_CPU_SUBTYPE_SH7206 is not set
121# CONFIG_CPU_SUBTYPE_SH7300 is not set 137# CONFIG_CPU_SUBTYPE_SH7263 is not set
138# CONFIG_CPU_SUBTYPE_MXG is not set
122# CONFIG_CPU_SUBTYPE_SH7705 is not set 139# CONFIG_CPU_SUBTYPE_SH7705 is not set
123# CONFIG_CPU_SUBTYPE_SH7706 is not set 140# CONFIG_CPU_SUBTYPE_SH7706 is not set
124# CONFIG_CPU_SUBTYPE_SH7707 is not set 141# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -126,6 +143,8 @@ CONFIG_CPU_SHX2=y
126# CONFIG_CPU_SUBTYPE_SH7709 is not set 143# CONFIG_CPU_SUBTYPE_SH7709 is not set
127# CONFIG_CPU_SUBTYPE_SH7710 is not set 144# CONFIG_CPU_SUBTYPE_SH7710 is not set
128# CONFIG_CPU_SUBTYPE_SH7712 is not set 145# CONFIG_CPU_SUBTYPE_SH7712 is not set
146# CONFIG_CPU_SUBTYPE_SH7720 is not set
147# CONFIG_CPU_SUBTYPE_SH7721 is not set
129# CONFIG_CPU_SUBTYPE_SH7750 is not set 148# CONFIG_CPU_SUBTYPE_SH7750 is not set
130# CONFIG_CPU_SUBTYPE_SH7091 is not set 149# CONFIG_CPU_SUBTYPE_SH7091 is not set
131# CONFIG_CPU_SUBTYPE_SH7750R is not set 150# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -134,14 +153,17 @@ CONFIG_CPU_SHX2=y
134# CONFIG_CPU_SUBTYPE_SH7751R is not set 153# CONFIG_CPU_SUBTYPE_SH7751R is not set
135# CONFIG_CPU_SUBTYPE_SH7760 is not set 154# CONFIG_CPU_SUBTYPE_SH7760 is not set
136# CONFIG_CPU_SUBTYPE_SH4_202 is not set 155# CONFIG_CPU_SUBTYPE_SH4_202 is not set
137# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 156# CONFIG_CPU_SUBTYPE_SH7723 is not set
138# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 157# CONFIG_CPU_SUBTYPE_SH7763 is not set
139# CONFIG_CPU_SUBTYPE_SH7770 is not set 158# CONFIG_CPU_SUBTYPE_SH7770 is not set
140# CONFIG_CPU_SUBTYPE_SH7780 is not set 159# CONFIG_CPU_SUBTYPE_SH7780 is not set
141# CONFIG_CPU_SUBTYPE_SH7785 is not set 160# CONFIG_CPU_SUBTYPE_SH7785 is not set
142# CONFIG_CPU_SUBTYPE_SH73180 is not set 161# CONFIG_CPU_SUBTYPE_SHX3 is not set
143# CONFIG_CPU_SUBTYPE_SH7343 is not set 162# CONFIG_CPU_SUBTYPE_SH7343 is not set
144CONFIG_CPU_SUBTYPE_SH7722=y 163CONFIG_CPU_SUBTYPE_SH7722=y
164# CONFIG_CPU_SUBTYPE_SH7366 is not set
165# CONFIG_CPU_SUBTYPE_SH5_101 is not set
166# CONFIG_CPU_SUBTYPE_SH5_103 is not set
145 167
146# 168#
147# Memory management options 169# Memory management options
@@ -151,6 +173,7 @@ CONFIG_MMU=y
151CONFIG_PAGE_OFFSET=0x80000000 173CONFIG_PAGE_OFFSET=0x80000000
152CONFIG_MEMORY_START=0x0c000000 174CONFIG_MEMORY_START=0x0c000000
153CONFIG_MEMORY_SIZE=0x04000000 175CONFIG_MEMORY_SIZE=0x04000000
176CONFIG_29BIT=y
154# CONFIG_X2TLB is not set 177# CONFIG_X2TLB is not set
155CONFIG_VSYSCALL=y 178CONFIG_VSYSCALL=y
156CONFIG_NUMA=y 179CONFIG_NUMA=y
@@ -161,14 +184,18 @@ CONFIG_MAX_ACTIVE_REGIONS=2
161CONFIG_ARCH_POPULATES_NODE_MAP=y 184CONFIG_ARCH_POPULATES_NODE_MAP=y
162CONFIG_ARCH_SELECT_MEMORY_MODEL=y 185CONFIG_ARCH_SELECT_MEMORY_MODEL=y
163CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 186CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
187CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
164CONFIG_PAGE_SIZE_4KB=y 188CONFIG_PAGE_SIZE_4KB=y
165# CONFIG_PAGE_SIZE_8KB is not set 189# CONFIG_PAGE_SIZE_8KB is not set
190# CONFIG_PAGE_SIZE_16KB is not set
166# CONFIG_PAGE_SIZE_64KB is not set 191# CONFIG_PAGE_SIZE_64KB is not set
192CONFIG_ENTRY_OFFSET=0x00001000
167CONFIG_HUGETLB_PAGE_SIZE_64K=y 193CONFIG_HUGETLB_PAGE_SIZE_64K=y
168# CONFIG_HUGETLB_PAGE_SIZE_256K is not set 194# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
169# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set 195# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
170# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set 196# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
171# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set 197# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
198# CONFIG_HUGETLB_PAGE_SIZE_512MB is not set
172CONFIG_SELECT_MEMORY_MODEL=y 199CONFIG_SELECT_MEMORY_MODEL=y
173# CONFIG_FLATMEM_MANUAL is not set 200# CONFIG_FLATMEM_MANUAL is not set
174# CONFIG_DISCONTIGMEM_MANUAL is not set 201# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -181,34 +208,38 @@ CONFIG_SPARSEMEM_STATIC=y
181CONFIG_SPLIT_PTLOCK_CPUS=4 208CONFIG_SPLIT_PTLOCK_CPUS=4
182CONFIG_MIGRATION=y 209CONFIG_MIGRATION=y
183# CONFIG_RESOURCES_64BIT is not set 210# CONFIG_RESOURCES_64BIT is not set
211# CONFIG_PHYS_ADDR_T_64BIT is not set
184CONFIG_ZONE_DMA_FLAG=0 212CONFIG_ZONE_DMA_FLAG=0
185CONFIG_NR_QUICK=2 213CONFIG_NR_QUICK=2
214CONFIG_UNEVICTABLE_LRU=y
186 215
187# 216#
188# Cache configuration 217# Cache configuration
189# 218#
190# CONFIG_SH_DIRECT_MAPPED is not set 219# CONFIG_SH_DIRECT_MAPPED is not set
191# CONFIG_SH_WRITETHROUGH is not set 220CONFIG_CACHE_WRITEBACK=y
221# CONFIG_CACHE_WRITETHROUGH is not set
222# CONFIG_CACHE_OFF is not set
192 223
193# 224#
194# Processor features 225# Processor features
195# 226#
196CONFIG_CPU_LITTLE_ENDIAN=y 227CONFIG_CPU_LITTLE_ENDIAN=y
197# CONFIG_CPU_BIG_ENDIAN is not set 228# CONFIG_CPU_BIG_ENDIAN is not set
198# CONFIG_SH_FPU is not set
199# CONFIG_SH_FPU_EMU is not set 229# CONFIG_SH_FPU_EMU is not set
200CONFIG_SH_DSP=y 230CONFIG_SH_DSP=y
201CONFIG_SH_STORE_QUEUES=y 231CONFIG_SH_STORE_QUEUES=y
202CONFIG_CPU_HAS_INTEVT=y 232CONFIG_CPU_HAS_INTEVT=y
203CONFIG_CPU_HAS_INTC_IRQ=y
204CONFIG_CPU_HAS_SR_RB=y 233CONFIG_CPU_HAS_SR_RB=y
205CONFIG_CPU_HAS_PTEA=y 234CONFIG_CPU_HAS_PTEA=y
235CONFIG_CPU_HAS_DSP=y
206 236
207# 237#
208# Board support 238# Board support
209# 239#
210CONFIG_SOLUTION_ENGINE=y 240CONFIG_SOLUTION_ENGINE=y
211CONFIG_SH_7722_SOLUTION_ENGINE=y 241CONFIG_SH_7722_SOLUTION_ENGINE=y
242# CONFIG_SH_MIGOR is not set
212 243
213# 244#
214# Timer and clock configuration 245# Timer and clock configuration
@@ -219,6 +250,7 @@ CONFIG_SH_PCLK_FREQ=33333333
219CONFIG_TICK_ONESHOT=y 250CONFIG_TICK_ONESHOT=y
220CONFIG_NO_HZ=y 251CONFIG_NO_HZ=y
221CONFIG_HIGH_RES_TIMERS=y 252CONFIG_HIGH_RES_TIMERS=y
253CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
222 254
223# 255#
224# CPU Frequency scaling 256# CPU Frequency scaling
@@ -248,19 +280,21 @@ CONFIG_HZ_250=y
248# CONFIG_HZ_300 is not set 280# CONFIG_HZ_300 is not set
249# CONFIG_HZ_1000 is not set 281# CONFIG_HZ_1000 is not set
250CONFIG_HZ=250 282CONFIG_HZ=250
283CONFIG_SCHED_HRTICK=y
251CONFIG_KEXEC=y 284CONFIG_KEXEC=y
252# CONFIG_CRASH_DUMP is not set 285# CONFIG_CRASH_DUMP is not set
286# CONFIG_SECCOMP is not set
253# CONFIG_PREEMPT_NONE is not set 287# CONFIG_PREEMPT_NONE is not set
254# CONFIG_PREEMPT_VOLUNTARY is not set 288# CONFIG_PREEMPT_VOLUNTARY is not set
255CONFIG_PREEMPT=y 289CONFIG_PREEMPT=y
256CONFIG_PREEMPT_BKL=y 290# CONFIG_PREEMPT_RCU is not set
291CONFIG_GUSA=y
257 292
258# 293#
259# Boot options 294# Boot options
260# 295#
261CONFIG_ZERO_PAGE_OFFSET=0x00001000 296CONFIG_ZERO_PAGE_OFFSET=0x00001000
262CONFIG_BOOT_LINK_OFFSET=0x00800000 297CONFIG_BOOT_LINK_OFFSET=0x00800000
263# CONFIG_UBC_WAKEUP is not set
264# CONFIG_CMDLINE_BOOL is not set 298# CONFIG_CMDLINE_BOOL is not set
265 299
266# 300#
@@ -271,21 +305,15 @@ CONFIG_CF_ENABLER=y
271CONFIG_CF_AREA6=y 305CONFIG_CF_AREA6=y
272CONFIG_CF_BASE_ADDR=0xb8000000 306CONFIG_CF_BASE_ADDR=0xb8000000
273# CONFIG_ARCH_SUPPORTS_MSI is not set 307# CONFIG_ARCH_SUPPORTS_MSI is not set
274
275#
276# PCCARD (PCMCIA/CardBus) support
277#
278# CONFIG_PCCARD is not set 308# CONFIG_PCCARD is not set
279 309
280# 310#
281# Executable file formats 311# Executable file formats
282# 312#
283CONFIG_BINFMT_ELF=y 313CONFIG_BINFMT_ELF=y
314# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
315# CONFIG_HAVE_AOUT is not set
284# CONFIG_BINFMT_MISC is not set 316# CONFIG_BINFMT_MISC is not set
285
286#
287# Networking
288#
289CONFIG_NET=y 317CONFIG_NET=y
290 318
291# 319#
@@ -298,6 +326,7 @@ CONFIG_XFRM=y
298# CONFIG_XFRM_USER is not set 326# CONFIG_XFRM_USER is not set
299# CONFIG_XFRM_SUB_POLICY is not set 327# CONFIG_XFRM_SUB_POLICY is not set
300# CONFIG_XFRM_MIGRATE is not set 328# CONFIG_XFRM_MIGRATE is not set
329# CONFIG_XFRM_STATISTICS is not set
301# CONFIG_NET_KEY is not set 330# CONFIG_NET_KEY is not set
302CONFIG_INET=y 331CONFIG_INET=y
303# CONFIG_IP_MULTICAST is not set 332# CONFIG_IP_MULTICAST is not set
@@ -316,6 +345,7 @@ CONFIG_IP_FIB_HASH=y
316CONFIG_INET_XFRM_MODE_TRANSPORT=y 345CONFIG_INET_XFRM_MODE_TRANSPORT=y
317CONFIG_INET_XFRM_MODE_TUNNEL=y 346CONFIG_INET_XFRM_MODE_TUNNEL=y
318CONFIG_INET_XFRM_MODE_BEET=y 347CONFIG_INET_XFRM_MODE_BEET=y
348# CONFIG_INET_LRO is not set
319CONFIG_INET_DIAG=y 349CONFIG_INET_DIAG=y
320CONFIG_INET_TCP_DIAG=y 350CONFIG_INET_TCP_DIAG=y
321# CONFIG_TCP_CONG_ADVANCED is not set 351# CONFIG_TCP_CONG_ADVANCED is not set
@@ -323,8 +353,6 @@ CONFIG_TCP_CONG_CUBIC=y
323CONFIG_DEFAULT_TCP_CONG="cubic" 353CONFIG_DEFAULT_TCP_CONG="cubic"
324# CONFIG_TCP_MD5SIG is not set 354# CONFIG_TCP_MD5SIG is not set
325# CONFIG_IPV6 is not set 355# CONFIG_IPV6 is not set
326# CONFIG_INET6_XFRM_TUNNEL is not set
327# CONFIG_INET6_TUNNEL is not set
328# CONFIG_NETWORK_SECMARK is not set 356# CONFIG_NETWORK_SECMARK is not set
329# CONFIG_NETFILTER is not set 357# CONFIG_NETFILTER is not set
330# CONFIG_IP_DCCP is not set 358# CONFIG_IP_DCCP is not set
@@ -332,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
332# CONFIG_TIPC is not set 360# CONFIG_TIPC is not set
333# CONFIG_ATM is not set 361# CONFIG_ATM is not set
334# CONFIG_BRIDGE is not set 362# CONFIG_BRIDGE is not set
363# CONFIG_NET_DSA is not set
335# CONFIG_VLAN_8021Q is not set 364# CONFIG_VLAN_8021Q is not set
336# CONFIG_DECNET is not set 365# CONFIG_DECNET is not set
337# CONFIG_LLC2 is not set 366# CONFIG_LLC2 is not set
@@ -341,10 +370,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
341# CONFIG_LAPB is not set 370# CONFIG_LAPB is not set
342# CONFIG_ECONET is not set 371# CONFIG_ECONET is not set
343# CONFIG_WAN_ROUTER is not set 372# CONFIG_WAN_ROUTER is not set
344
345#
346# QoS and/or fair queueing
347#
348# CONFIG_NET_SCHED is not set 373# CONFIG_NET_SCHED is not set
349 374
350# 375#
@@ -352,18 +377,19 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# 377#
353# CONFIG_NET_PKTGEN is not set 378# CONFIG_NET_PKTGEN is not set
354# CONFIG_HAMRADIO is not set 379# CONFIG_HAMRADIO is not set
380# CONFIG_CAN is not set
355# CONFIG_IRDA is not set 381# CONFIG_IRDA is not set
356# CONFIG_BT is not set 382# CONFIG_BT is not set
357# CONFIG_AF_RXRPC is not set 383# CONFIG_AF_RXRPC is not set
358 384# CONFIG_PHONET is not set
359# 385CONFIG_WIRELESS=y
360# Wireless
361#
362# CONFIG_CFG80211 is not set 386# CONFIG_CFG80211 is not set
387# CONFIG_WIRELESS_OLD_REGULATORY is not set
363# CONFIG_WIRELESS_EXT is not set 388# CONFIG_WIRELESS_EXT is not set
364# CONFIG_MAC80211 is not set 389# CONFIG_MAC80211 is not set
365# CONFIG_IEEE80211 is not set 390# CONFIG_IEEE80211 is not set
366# CONFIG_RFKILL is not set 391# CONFIG_RFKILL is not set
392# CONFIG_NET_9P is not set
367 393
368# 394#
369# Device Drivers 395# Device Drivers
@@ -372,44 +398,29 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
372# 398#
373# Generic Driver Options 399# Generic Driver Options
374# 400#
401CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
375CONFIG_STANDALONE=y 402CONFIG_STANDALONE=y
376CONFIG_PREVENT_FIRMWARE_BUILD=y 403CONFIG_PREVENT_FIRMWARE_BUILD=y
377# CONFIG_FW_LOADER is not set 404# CONFIG_FW_LOADER is not set
378# CONFIG_SYS_HYPERVISOR is not set 405# CONFIG_SYS_HYPERVISOR is not set
379
380#
381# Connector - unified userspace <-> kernelspace linker
382#
383# CONFIG_CONNECTOR is not set 406# CONFIG_CONNECTOR is not set
384# CONFIG_MTD is not set 407# CONFIG_MTD is not set
385
386#
387# Parallel port support
388#
389# CONFIG_PARPORT is not set 408# CONFIG_PARPORT is not set
390 409CONFIG_BLK_DEV=y
391#
392# Plug and Play support
393#
394# CONFIG_PNPACPI is not set
395
396#
397# Block devices
398#
399# CONFIG_BLK_DEV_COW_COMMON is not set 410# CONFIG_BLK_DEV_COW_COMMON is not set
400# CONFIG_BLK_DEV_LOOP is not set 411# CONFIG_BLK_DEV_LOOP is not set
401# CONFIG_BLK_DEV_NBD is not set 412# CONFIG_BLK_DEV_NBD is not set
402CONFIG_BLK_DEV_RAM=y 413CONFIG_BLK_DEV_RAM=y
403CONFIG_BLK_DEV_RAM_COUNT=16 414CONFIG_BLK_DEV_RAM_COUNT=16
404CONFIG_BLK_DEV_RAM_SIZE=4096 415CONFIG_BLK_DEV_RAM_SIZE=4096
405CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 416# CONFIG_BLK_DEV_XIP is not set
406# CONFIG_CDROM_PKTCDVD is not set 417# CONFIG_CDROM_PKTCDVD is not set
407# CONFIG_ATA_OVER_ETH is not set 418# CONFIG_ATA_OVER_ETH is not set
408 419# CONFIG_BLK_DEV_HD is not set
409# 420CONFIG_MISC_DEVICES=y
410# Misc devices 421# CONFIG_EEPROM_93CX6 is not set
411# 422# CONFIG_ENCLOSURE_SERVICES is not set
412# CONFIG_BLINK is not set 423CONFIG_HAVE_IDE=y
413# CONFIG_IDE is not set 424# CONFIG_IDE is not set
414 425
415# 426#
@@ -417,6 +428,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
417# 428#
418# CONFIG_RAID_ATTRS is not set 429# CONFIG_RAID_ATTRS is not set
419CONFIG_SCSI=y 430CONFIG_SCSI=y
431CONFIG_SCSI_DMA=y
420# CONFIG_SCSI_TGT is not set 432# CONFIG_SCSI_TGT is not set
421# CONFIG_SCSI_NETLINK is not set 433# CONFIG_SCSI_NETLINK is not set
422CONFIG_SCSI_PROC_FS=y 434CONFIG_SCSI_PROC_FS=y
@@ -446,40 +458,41 @@ CONFIG_SCSI_WAIT_SCAN=m
446# CONFIG_SCSI_SPI_ATTRS is not set 458# CONFIG_SCSI_SPI_ATTRS is not set
447# CONFIG_SCSI_FC_ATTRS is not set 459# CONFIG_SCSI_FC_ATTRS is not set
448# CONFIG_SCSI_ISCSI_ATTRS is not set 460# CONFIG_SCSI_ISCSI_ATTRS is not set
449# CONFIG_SCSI_SAS_ATTRS is not set
450# CONFIG_SCSI_SAS_LIBSAS is not set 461# CONFIG_SCSI_SAS_LIBSAS is not set
451 462# CONFIG_SCSI_SRP_ATTRS is not set
452# 463CONFIG_SCSI_LOWLEVEL=y
453# SCSI low-level drivers
454#
455# CONFIG_ISCSI_TCP is not set 464# CONFIG_ISCSI_TCP is not set
456# CONFIG_SCSI_DEBUG is not set 465# CONFIG_SCSI_DEBUG is not set
466# CONFIG_SCSI_DH is not set
457CONFIG_ATA=y 467CONFIG_ATA=y
458# CONFIG_ATA_NONSTANDARD is not set 468# CONFIG_ATA_NONSTANDARD is not set
469CONFIG_SATA_PMP=y
470CONFIG_ATA_SFF=y
471# CONFIG_SATA_MV is not set
459CONFIG_PATA_PLATFORM=y 472CONFIG_PATA_PLATFORM=y
460
461#
462# Multi-device support (RAID and LVM)
463#
464# CONFIG_MD is not set 473# CONFIG_MD is not set
465
466#
467# Network device support
468#
469CONFIG_NETDEVICES=y 474CONFIG_NETDEVICES=y
470# CONFIG_DUMMY is not set 475# CONFIG_DUMMY is not set
471# CONFIG_BONDING is not set 476# CONFIG_BONDING is not set
477# CONFIG_MACVLAN is not set
472# CONFIG_EQUALIZER is not set 478# CONFIG_EQUALIZER is not set
473# CONFIG_TUN is not set 479# CONFIG_TUN is not set
480# CONFIG_VETH is not set
474# CONFIG_PHYLIB is not set 481# CONFIG_PHYLIB is not set
475
476#
477# Ethernet (10 or 100Mbit)
478#
479CONFIG_NET_ETHERNET=y 482CONFIG_NET_ETHERNET=y
480CONFIG_MII=y 483CONFIG_MII=y
484# CONFIG_AX88796 is not set
481# CONFIG_STNIC is not set 485# CONFIG_STNIC is not set
482CONFIG_SMC91X=y 486CONFIG_SMC91X=y
487# CONFIG_SMC911X is not set
488# CONFIG_IBM_NEW_EMAC_ZMII is not set
489# CONFIG_IBM_NEW_EMAC_RGMII is not set
490# CONFIG_IBM_NEW_EMAC_TAH is not set
491# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
492# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
493# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
494# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
495# CONFIG_B44 is not set
483CONFIG_NETDEV_1000=y 496CONFIG_NETDEV_1000=y
484CONFIG_NETDEV_10000=y 497CONFIG_NETDEV_10000=y
485 498
@@ -488,22 +501,14 @@ CONFIG_NETDEV_10000=y
488# 501#
489# CONFIG_WLAN_PRE80211 is not set 502# CONFIG_WLAN_PRE80211 is not set
490# CONFIG_WLAN_80211 is not set 503# CONFIG_WLAN_80211 is not set
504# CONFIG_IWLWIFI_LEDS is not set
491# CONFIG_WAN is not set 505# CONFIG_WAN is not set
492# CONFIG_PPP is not set 506# CONFIG_PPP is not set
493# CONFIG_SLIP is not set 507# CONFIG_SLIP is not set
494# CONFIG_SHAPER is not set
495# CONFIG_NETCONSOLE is not set 508# CONFIG_NETCONSOLE is not set
496# CONFIG_NETPOLL is not set 509# CONFIG_NETPOLL is not set
497# CONFIG_NET_POLL_CONTROLLER is not set 510# CONFIG_NET_POLL_CONTROLLER is not set
498
499#
500# ISDN subsystem
501#
502# CONFIG_ISDN is not set 511# CONFIG_ISDN is not set
503
504#
505# Telephony Support
506#
507# CONFIG_PHONE is not set 512# CONFIG_PHONE is not set
508 513
509# 514#
@@ -511,6 +516,7 @@ CONFIG_NETDEV_10000=y
511# 516#
512CONFIG_INPUT=y 517CONFIG_INPUT=y
513# CONFIG_INPUT_FF_MEMLESS is not set 518# CONFIG_INPUT_FF_MEMLESS is not set
519# CONFIG_INPUT_POLLDEV is not set
514 520
515# 521#
516# Userland interfaces 522# Userland interfaces
@@ -520,7 +526,6 @@ CONFIG_INPUT_MOUSEDEV=y
520CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 526CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
521CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 527CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
522# CONFIG_INPUT_JOYDEV is not set 528# CONFIG_INPUT_JOYDEV is not set
523# CONFIG_INPUT_TSDEV is not set
524# CONFIG_INPUT_EVDEV is not set 529# CONFIG_INPUT_EVDEV is not set
525# CONFIG_INPUT_EVBUG is not set 530# CONFIG_INPUT_EVBUG is not set
526 531
@@ -534,6 +539,7 @@ CONFIG_KEYBOARD_ATKBD=y
534# CONFIG_KEYBOARD_XTKBD is not set 539# CONFIG_KEYBOARD_XTKBD is not set
535# CONFIG_KEYBOARD_NEWTON is not set 540# CONFIG_KEYBOARD_NEWTON is not set
536# CONFIG_KEYBOARD_STOWAWAY is not set 541# CONFIG_KEYBOARD_STOWAWAY is not set
542# CONFIG_KEYBOARD_SH_KEYSC is not set
537# CONFIG_INPUT_MOUSE is not set 543# CONFIG_INPUT_MOUSE is not set
538# CONFIG_INPUT_JOYSTICK is not set 544# CONFIG_INPUT_JOYSTICK is not set
539# CONFIG_INPUT_TABLET is not set 545# CONFIG_INPUT_TABLET is not set
@@ -554,6 +560,7 @@ CONFIG_SERIO_LIBPS2=y
554# Character devices 560# Character devices
555# 561#
556# CONFIG_VT is not set 562# CONFIG_VT is not set
563CONFIG_DEVKMEM=y
557# CONFIG_SERIAL_NONSTANDARD is not set 564# CONFIG_SERIAL_NONSTANDARD is not set
558 565
559# 566#
@@ -572,119 +579,106 @@ CONFIG_SERIAL_CORE_CONSOLE=y
572CONFIG_UNIX98_PTYS=y 579CONFIG_UNIX98_PTYS=y
573CONFIG_LEGACY_PTYS=y 580CONFIG_LEGACY_PTYS=y
574CONFIG_LEGACY_PTY_COUNT=256 581CONFIG_LEGACY_PTY_COUNT=256
575
576#
577# IPMI
578#
579# CONFIG_IPMI_HANDLER is not set 582# CONFIG_IPMI_HANDLER is not set
580# CONFIG_WATCHDOG is not set
581CONFIG_HW_RANDOM=y 583CONFIG_HW_RANDOM=y
582# CONFIG_R3964 is not set 584# CONFIG_R3964 is not set
583# CONFIG_RAW_DRIVER is not set 585# CONFIG_RAW_DRIVER is not set
584
585#
586# TPM devices
587#
588# CONFIG_TCG_TPM is not set 586# CONFIG_TCG_TPM is not set
589# CONFIG_I2C is not set 587# CONFIG_I2C is not set
590
591#
592# SPI support
593#
594# CONFIG_SPI is not set 588# CONFIG_SPI is not set
595# CONFIG_SPI_MASTER is not set
596
597#
598# Dallas's 1-wire bus
599#
600# CONFIG_W1 is not set 589# CONFIG_W1 is not set
590# CONFIG_POWER_SUPPLY is not set
601CONFIG_HWMON=y 591CONFIG_HWMON=y
602# CONFIG_HWMON_VID is not set 592# CONFIG_HWMON_VID is not set
603# CONFIG_SENSORS_ABITUGURU is not set
604# CONFIG_SENSORS_F71805F is not set 593# CONFIG_SENSORS_F71805F is not set
594# CONFIG_SENSORS_F71882FG is not set
595# CONFIG_SENSORS_IT87 is not set
596# CONFIG_SENSORS_PC87360 is not set
605# CONFIG_SENSORS_PC87427 is not set 597# CONFIG_SENSORS_PC87427 is not set
606# CONFIG_SENSORS_SMSC47M1 is not set 598# CONFIG_SENSORS_SMSC47M1 is not set
607# CONFIG_SENSORS_SMSC47B397 is not set 599# CONFIG_SENSORS_SMSC47B397 is not set
608# CONFIG_SENSORS_VT1211 is not set 600# CONFIG_SENSORS_VT1211 is not set
609# CONFIG_SENSORS_W83627HF is not set 601# CONFIG_SENSORS_W83627HF is not set
602# CONFIG_SENSORS_W83627EHF is not set
610# CONFIG_HWMON_DEBUG_CHIP is not set 603# CONFIG_HWMON_DEBUG_CHIP is not set
604# CONFIG_THERMAL is not set
605# CONFIG_THERMAL_HWMON is not set
606# CONFIG_WATCHDOG is not set
607
608#
609# Sonics Silicon Backplane
610#
611CONFIG_SSB_POSSIBLE=y
612# CONFIG_SSB is not set
611 613
612# 614#
613# Multifunction device drivers 615# Multifunction device drivers
614# 616#
617# CONFIG_MFD_CORE is not set
615# CONFIG_MFD_SM501 is not set 618# CONFIG_MFD_SM501 is not set
619# CONFIG_HTC_PASIC3 is not set
620# CONFIG_MFD_TMIO is not set
621# CONFIG_MFD_WM8400 is not set
616 622
617# 623#
618# Multimedia devices 624# Multimedia devices
619# 625#
626
627#
628# Multimedia core support
629#
620# CONFIG_VIDEO_DEV is not set 630# CONFIG_VIDEO_DEV is not set
621# CONFIG_DVB_CORE is not set 631# CONFIG_DVB_CORE is not set
622CONFIG_DAB=y 632# CONFIG_VIDEO_MEDIA is not set
623 633
624# 634#
625# Graphics support 635# Multimedia drivers
626# 636#
627# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 637CONFIG_DAB=y
628 638
629# 639#
630# Display device support 640# Graphics support
631# 641#
632# CONFIG_DISPLAY_SUPPORT is not set
633# CONFIG_VGASTATE is not set 642# CONFIG_VGASTATE is not set
643# CONFIG_VIDEO_OUTPUT_CONTROL is not set
634# CONFIG_FB is not set 644# CONFIG_FB is not set
645# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
635 646
636# 647#
637# Sound 648# Display device support
638# 649#
650# CONFIG_DISPLAY_SUPPORT is not set
639# CONFIG_SOUND is not set 651# CONFIG_SOUND is not set
640 652CONFIG_HID_SUPPORT=y
641#
642# HID Devices
643#
644CONFIG_HID=y 653CONFIG_HID=y
645# CONFIG_HID_DEBUG is not set 654# CONFIG_HID_DEBUG is not set
655# CONFIG_HIDRAW is not set
656# CONFIG_HID_PID is not set
646 657
647# 658#
648# USB support 659# Special HID drivers
649# 660#
650# CONFIG_USB_ARCH_HAS_HCD is not set 661CONFIG_HID_COMPAT=y
662CONFIG_USB_SUPPORT=y
663CONFIG_USB_ARCH_HAS_HCD=y
651# CONFIG_USB_ARCH_HAS_OHCI is not set 664# CONFIG_USB_ARCH_HAS_OHCI is not set
652# CONFIG_USB_ARCH_HAS_EHCI is not set 665# CONFIG_USB_ARCH_HAS_EHCI is not set
666# CONFIG_USB is not set
667# CONFIG_USB_OTG_WHITELIST is not set
668# CONFIG_USB_OTG_BLACKLIST_HUB is not set
653 669
654# 670#
655# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 671# Enable Host or Gadget support to see Inventra options
656# 672#
657 673
658# 674#
659# USB Gadget Support 675# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
660# 676#
661# CONFIG_USB_GADGET is not set 677# CONFIG_USB_GADGET is not set
662# CONFIG_MMC is not set 678# CONFIG_MMC is not set
663 679# CONFIG_MEMSTICK is not set
664#
665# LED devices
666#
667# CONFIG_NEW_LEDS is not set 680# CONFIG_NEW_LEDS is not set
668 681# CONFIG_ACCESSIBILITY is not set
669#
670# LED drivers
671#
672
673#
674# LED Triggers
675#
676
677#
678# InfiniBand support
679#
680
681#
682# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
683#
684
685#
686# Real Time Clock
687#
688CONFIG_RTC_LIB=y 682CONFIG_RTC_LIB=y
689CONFIG_RTC_CLASS=y 683CONFIG_RTC_CLASS=y
690CONFIG_RTC_HCTOSYS=y 684CONFIG_RTC_HCTOSYS=y
@@ -701,38 +695,30 @@ CONFIG_RTC_INTF_DEV=y
701# CONFIG_RTC_DRV_TEST is not set 695# CONFIG_RTC_DRV_TEST is not set
702 696
703# 697#
704# I2C RTC drivers
705#
706
707#
708# SPI RTC drivers 698# SPI RTC drivers
709# 699#
710 700
711# 701#
712# Platform RTC drivers 702# Platform RTC drivers
713# 703#
704# CONFIG_RTC_DRV_DS1286 is not set
705# CONFIG_RTC_DRV_DS1511 is not set
714# CONFIG_RTC_DRV_DS1553 is not set 706# CONFIG_RTC_DRV_DS1553 is not set
715# CONFIG_RTC_DRV_DS1742 is not set 707# CONFIG_RTC_DRV_DS1742 is not set
708# CONFIG_RTC_DRV_STK17TA8 is not set
716# CONFIG_RTC_DRV_M48T86 is not set 709# CONFIG_RTC_DRV_M48T86 is not set
710# CONFIG_RTC_DRV_M48T35 is not set
711# CONFIG_RTC_DRV_M48T59 is not set
712# CONFIG_RTC_DRV_BQ4802 is not set
717# CONFIG_RTC_DRV_V3020 is not set 713# CONFIG_RTC_DRV_V3020 is not set
718 714
719# 715#
720# on-CPU RTC drivers 716# on-CPU RTC drivers
721# 717#
722CONFIG_RTC_DRV_SH=y 718CONFIG_RTC_DRV_SH=y
723 719# CONFIG_DMADEVICES is not set
724# 720# CONFIG_UIO is not set
725# DMA Engine support 721# CONFIG_STAGING is not set
726#
727# CONFIG_DMA_ENGINE is not set
728
729#
730# DMA Clients
731#
732
733#
734# DMA Devices
735#
736 722
737# 723#
738# File systems 724# File systems
@@ -744,22 +730,20 @@ CONFIG_EXT3_FS=y
744CONFIG_EXT3_FS_XATTR=y 730CONFIG_EXT3_FS_XATTR=y
745# CONFIG_EXT3_FS_POSIX_ACL is not set 731# CONFIG_EXT3_FS_POSIX_ACL is not set
746# CONFIG_EXT3_FS_SECURITY is not set 732# CONFIG_EXT3_FS_SECURITY is not set
747# CONFIG_EXT4DEV_FS is not set 733# CONFIG_EXT4_FS is not set
748CONFIG_JBD=y 734CONFIG_JBD=y
749# CONFIG_JBD_DEBUG is not set 735# CONFIG_JBD_DEBUG is not set
750CONFIG_FS_MBCACHE=y 736CONFIG_FS_MBCACHE=y
751# CONFIG_REISERFS_FS is not set 737# CONFIG_REISERFS_FS is not set
752# CONFIG_JFS_FS is not set 738# CONFIG_JFS_FS is not set
753# CONFIG_FS_POSIX_ACL is not set 739# CONFIG_FS_POSIX_ACL is not set
740CONFIG_FILE_LOCKING=y
754# CONFIG_XFS_FS is not set 741# CONFIG_XFS_FS is not set
755# CONFIG_GFS2_FS is not set
756# CONFIG_OCFS2_FS is not set 742# CONFIG_OCFS2_FS is not set
757# CONFIG_MINIX_FS is not set 743CONFIG_DNOTIFY=y
758# CONFIG_ROMFS_FS is not set
759CONFIG_INOTIFY=y 744CONFIG_INOTIFY=y
760CONFIG_INOTIFY_USER=y 745CONFIG_INOTIFY_USER=y
761# CONFIG_QUOTA is not set 746# CONFIG_QUOTA is not set
762CONFIG_DNOTIFY=y
763# CONFIG_AUTOFS_FS is not set 747# CONFIG_AUTOFS_FS is not set
764# CONFIG_AUTOFS4_FS is not set 748# CONFIG_AUTOFS4_FS is not set
765# CONFIG_FUSE_FS is not set 749# CONFIG_FUSE_FS is not set
@@ -783,12 +767,12 @@ CONFIG_DNOTIFY=y
783CONFIG_PROC_FS=y 767CONFIG_PROC_FS=y
784CONFIG_PROC_KCORE=y 768CONFIG_PROC_KCORE=y
785CONFIG_PROC_SYSCTL=y 769CONFIG_PROC_SYSCTL=y
770CONFIG_PROC_PAGE_MONITOR=y
786CONFIG_SYSFS=y 771CONFIG_SYSFS=y
787CONFIG_TMPFS=y 772CONFIG_TMPFS=y
788# CONFIG_TMPFS_POSIX_ACL is not set 773# CONFIG_TMPFS_POSIX_ACL is not set
789CONFIG_HUGETLBFS=y 774CONFIG_HUGETLBFS=y
790CONFIG_HUGETLB_PAGE=y 775CONFIG_HUGETLB_PAGE=y
791CONFIG_RAMFS=y
792# CONFIG_CONFIGFS_FS is not set 776# CONFIG_CONFIGFS_FS is not set
793 777
794# 778#
@@ -803,14 +787,14 @@ CONFIG_RAMFS=y
803# CONFIG_EFS_FS is not set 787# CONFIG_EFS_FS is not set
804# CONFIG_CRAMFS is not set 788# CONFIG_CRAMFS is not set
805# CONFIG_VXFS_FS is not set 789# CONFIG_VXFS_FS is not set
790# CONFIG_MINIX_FS is not set
791# CONFIG_OMFS_FS is not set
806# CONFIG_HPFS_FS is not set 792# CONFIG_HPFS_FS is not set
807# CONFIG_QNX4FS_FS is not set 793# CONFIG_QNX4FS_FS is not set
794# CONFIG_ROMFS_FS is not set
808# CONFIG_SYSV_FS is not set 795# CONFIG_SYSV_FS is not set
809# CONFIG_UFS_FS is not set 796# CONFIG_UFS_FS is not set
810 797CONFIG_NETWORK_FILESYSTEMS=y
811#
812# Network File Systems
813#
814# CONFIG_NFS_FS is not set 798# CONFIG_NFS_FS is not set
815# CONFIG_NFSD is not set 799# CONFIG_NFSD is not set
816# CONFIG_SMB_FS is not set 800# CONFIG_SMB_FS is not set
@@ -818,42 +802,39 @@ CONFIG_RAMFS=y
818# CONFIG_NCP_FS is not set 802# CONFIG_NCP_FS is not set
819# CONFIG_CODA_FS is not set 803# CONFIG_CODA_FS is not set
820# CONFIG_AFS_FS is not set 804# CONFIG_AFS_FS is not set
821# CONFIG_9P_FS is not set
822 805
823# 806#
824# Partition Types 807# Partition Types
825# 808#
826# CONFIG_PARTITION_ADVANCED is not set 809# CONFIG_PARTITION_ADVANCED is not set
827CONFIG_MSDOS_PARTITION=y 810CONFIG_MSDOS_PARTITION=y
828
829#
830# Native Language Support
831#
832# CONFIG_NLS is not set 811# CONFIG_NLS is not set
833
834#
835# Distributed Lock Manager
836#
837# CONFIG_DLM is not set 812# CONFIG_DLM is not set
838 813
839# 814#
840# Profiling support
841#
842CONFIG_PROFILING=y
843# CONFIG_OPROFILE is not set
844
845#
846# Kernel hacking 815# Kernel hacking
847# 816#
848CONFIG_TRACE_IRQFLAGS_SUPPORT=y 817CONFIG_TRACE_IRQFLAGS_SUPPORT=y
849CONFIG_PRINTK_TIME=y 818CONFIG_PRINTK_TIME=y
819CONFIG_ENABLE_WARN_DEPRECATED=y
850# CONFIG_ENABLE_MUST_CHECK is not set 820# CONFIG_ENABLE_MUST_CHECK is not set
821CONFIG_FRAME_WARN=1024
851CONFIG_MAGIC_SYSRQ=y 822CONFIG_MAGIC_SYSRQ=y
852# CONFIG_UNUSED_SYMBOLS is not set 823# CONFIG_UNUSED_SYMBOLS is not set
853CONFIG_DEBUG_FS=y 824CONFIG_DEBUG_FS=y
854# CONFIG_HEADERS_CHECK is not set 825# CONFIG_HEADERS_CHECK is not set
855# CONFIG_DEBUG_KERNEL is not set 826# CONFIG_DEBUG_KERNEL is not set
827# CONFIG_SLUB_DEBUG_ON is not set
828# CONFIG_SLUB_STATS is not set
856# CONFIG_DEBUG_BUGVERBOSE is not set 829# CONFIG_DEBUG_BUGVERBOSE is not set
830# CONFIG_DEBUG_MEMORY_INIT is not set
831# CONFIG_RCU_CPU_STALL_DETECTOR is not set
832# CONFIG_LATENCYTOP is not set
833# CONFIG_SYSCTL_SYSCALL_CHECK is not set
834CONFIG_NOP_TRACER=y
835CONFIG_HAVE_FTRACE=y
836# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
837# CONFIG_SAMPLES is not set
857CONFIG_SH_STANDARD_BIOS=y 838CONFIG_SH_STANDARD_BIOS=y
858# CONFIG_EARLY_SCIF_CONSOLE is not set 839# CONFIG_EARLY_SCIF_CONSOLE is not set
859# CONFIG_EARLY_PRINTK is not set 840# CONFIG_EARLY_PRINTK is not set
@@ -864,11 +845,92 @@ CONFIG_SH_STANDARD_BIOS=y
864# 845#
865# CONFIG_KEYS is not set 846# CONFIG_KEYS is not set
866# CONFIG_SECURITY is not set 847# CONFIG_SECURITY is not set
848# CONFIG_SECURITYFS is not set
849# CONFIG_SECURITY_FILE_CAPABILITIES is not set
850CONFIG_CRYPTO=y
851
852#
853# Crypto core or helper
854#
855# CONFIG_CRYPTO_FIPS is not set
856# CONFIG_CRYPTO_MANAGER is not set
857# CONFIG_CRYPTO_GF128MUL is not set
858# CONFIG_CRYPTO_NULL is not set
859# CONFIG_CRYPTO_CRYPTD is not set
860# CONFIG_CRYPTO_AUTHENC is not set
861# CONFIG_CRYPTO_TEST is not set
862
863#
864# Authenticated Encryption with Associated Data
865#
866# CONFIG_CRYPTO_CCM is not set
867# CONFIG_CRYPTO_GCM is not set
868# CONFIG_CRYPTO_SEQIV is not set
869
870#
871# Block modes
872#
873# CONFIG_CRYPTO_CBC is not set
874# CONFIG_CRYPTO_CTR is not set
875# CONFIG_CRYPTO_CTS is not set
876# CONFIG_CRYPTO_ECB is not set
877# CONFIG_CRYPTO_LRW is not set
878# CONFIG_CRYPTO_PCBC is not set
879# CONFIG_CRYPTO_XTS is not set
880
881#
882# Hash modes
883#
884# CONFIG_CRYPTO_HMAC is not set
885# CONFIG_CRYPTO_XCBC is not set
886
887#
888# Digest
889#
890# CONFIG_CRYPTO_CRC32C is not set
891# CONFIG_CRYPTO_MD4 is not set
892# CONFIG_CRYPTO_MD5 is not set
893# CONFIG_CRYPTO_MICHAEL_MIC is not set
894# CONFIG_CRYPTO_RMD128 is not set
895# CONFIG_CRYPTO_RMD160 is not set
896# CONFIG_CRYPTO_RMD256 is not set
897# CONFIG_CRYPTO_RMD320 is not set
898# CONFIG_CRYPTO_SHA1 is not set
899# CONFIG_CRYPTO_SHA256 is not set
900# CONFIG_CRYPTO_SHA512 is not set
901# CONFIG_CRYPTO_TGR192 is not set
902# CONFIG_CRYPTO_WP512 is not set
903
904#
905# Ciphers
906#
907# CONFIG_CRYPTO_AES is not set
908# CONFIG_CRYPTO_ANUBIS is not set
909# CONFIG_CRYPTO_ARC4 is not set
910# CONFIG_CRYPTO_BLOWFISH is not set
911# CONFIG_CRYPTO_CAMELLIA is not set
912# CONFIG_CRYPTO_CAST5 is not set
913# CONFIG_CRYPTO_CAST6 is not set
914# CONFIG_CRYPTO_DES is not set
915# CONFIG_CRYPTO_FCRYPT is not set
916# CONFIG_CRYPTO_KHAZAD is not set
917# CONFIG_CRYPTO_SALSA20 is not set
918# CONFIG_CRYPTO_SEED is not set
919# CONFIG_CRYPTO_SERPENT is not set
920# CONFIG_CRYPTO_TEA is not set
921# CONFIG_CRYPTO_TWOFISH is not set
922
923#
924# Compression
925#
926# CONFIG_CRYPTO_DEFLATE is not set
927# CONFIG_CRYPTO_LZO is not set
867 928
868# 929#
869# Cryptographic options 930# Random Number Generation
870# 931#
871# CONFIG_CRYPTO is not set 932# CONFIG_CRYPTO_ANSI_CPRNG is not set
933CONFIG_CRYPTO_HW=y
872 934
873# 935#
874# Library routines 936# Library routines
@@ -876,8 +938,10 @@ CONFIG_SH_STANDARD_BIOS=y
876CONFIG_BITREVERSE=y 938CONFIG_BITREVERSE=y
877# CONFIG_CRC_CCITT is not set 939# CONFIG_CRC_CCITT is not set
878# CONFIG_CRC16 is not set 940# CONFIG_CRC16 is not set
941# CONFIG_CRC_T10DIF is not set
879# CONFIG_CRC_ITU_T is not set 942# CONFIG_CRC_ITU_T is not set
880CONFIG_CRC32=y 943CONFIG_CRC32=y
944# CONFIG_CRC7 is not set
881# CONFIG_LIBCRC32C is not set 945# CONFIG_LIBCRC32C is not set
882CONFIG_PLIST=y 946CONFIG_PLIST=y
883CONFIG_HAS_IOMEM=y 947CONFIG_HAS_IOMEM=y
diff --git a/arch/sh/configs/se7750_defconfig b/arch/sh/configs/se7750_defconfig
index 167786f9a9bd..a577099c3247 100644
--- a/arch/sh/configs/se7750_defconfig
+++ b/arch/sh/configs/se7750_defconfig
@@ -1,48 +1,55 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20-rc2 3# Linux kernel version: 2.6.27
4# Thu Dec 28 23:15:49 2006 4# Wed Oct 22 19:17:29 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
11CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
13# CONFIG_GENERIC_TIME is not set 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y
14CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
16# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
17# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y
18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
19 26
20# 27#
21# Code maturity level options 28# General setup
22# 29#
23CONFIG_EXPERIMENTAL=y 30CONFIG_EXPERIMENTAL=y
24CONFIG_BROKEN_ON_SMP=y 31CONFIG_BROKEN_ON_SMP=y
25CONFIG_INIT_ENV_ARG_LIMIT=32 32CONFIG_INIT_ENV_ARG_LIMIT=32
26
27#
28# General setup
29#
30CONFIG_LOCALVERSION="" 33CONFIG_LOCALVERSION=""
31CONFIG_LOCALVERSION_AUTO=y 34CONFIG_LOCALVERSION_AUTO=y
32# CONFIG_SWAP is not set 35# CONFIG_SWAP is not set
33CONFIG_SYSVIPC=y 36CONFIG_SYSVIPC=y
34# CONFIG_IPC_NS is not set 37CONFIG_SYSVIPC_SYSCTL=y
35# CONFIG_POSIX_MQUEUE is not set 38# CONFIG_POSIX_MQUEUE is not set
36CONFIG_BSD_PROCESS_ACCT=y 39CONFIG_BSD_PROCESS_ACCT=y
37# CONFIG_BSD_PROCESS_ACCT_V3 is not set 40# CONFIG_BSD_PROCESS_ACCT_V3 is not set
38# CONFIG_TASKSTATS is not set 41# CONFIG_TASKSTATS is not set
39# CONFIG_UTS_NS is not set
40# CONFIG_AUDIT is not set 42# CONFIG_AUDIT is not set
41CONFIG_IKCONFIG=y 43CONFIG_IKCONFIG=y
42CONFIG_IKCONFIG_PROC=y 44CONFIG_IKCONFIG_PROC=y
45CONFIG_LOG_BUF_SHIFT=14
46# CONFIG_CGROUPS is not set
47# CONFIG_GROUP_SCHED is not set
43CONFIG_SYSFS_DEPRECATED=y 48CONFIG_SYSFS_DEPRECATED=y
49CONFIG_SYSFS_DEPRECATED_V2=y
44# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
45CONFIG_INITRAMFS_SOURCE="" 51# CONFIG_NAMESPACES is not set
52# CONFIG_BLK_DEV_INITRD is not set
46# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 53# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
47CONFIG_SYSCTL=y 54CONFIG_SYSCTL=y
48CONFIG_EMBEDDED=y 55CONFIG_EMBEDDED=y
@@ -54,33 +61,47 @@ CONFIG_KALLSYMS=y
54CONFIG_PRINTK=y 61CONFIG_PRINTK=y
55CONFIG_BUG=y 62CONFIG_BUG=y
56CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
64CONFIG_COMPAT_BRK=y
57CONFIG_BASE_FULL=y 65CONFIG_BASE_FULL=y
58CONFIG_FUTEX=y 66CONFIG_FUTEX=y
67CONFIG_ANON_INODES=y
59CONFIG_EPOLL=y 68CONFIG_EPOLL=y
69CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y
60CONFIG_SHMEM=y 72CONFIG_SHMEM=y
61CONFIG_SLAB=y 73CONFIG_AIO=y
62CONFIG_VM_EVENT_COUNTERS=y 74CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
76CONFIG_SLAB=y
77# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y
82# CONFIG_KPROBES is not set
83CONFIG_HAVE_IOREMAP_PROT=y
84CONFIG_HAVE_KPROBES=y
85CONFIG_HAVE_KRETPROBES=y
86CONFIG_HAVE_ARCH_TRACEHOOK=y
87CONFIG_HAVE_CLK=y
88CONFIG_HAVE_GENERIC_DMA_COHERENT=y
89CONFIG_SLABINFO=y
63CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
64# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
65CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
66# CONFIG_SLOB is not set
67
68#
69# Loadable module support
70#
71CONFIG_MODULES=y 93CONFIG_MODULES=y
94# CONFIG_MODULE_FORCE_LOAD is not set
72# CONFIG_MODULE_UNLOAD is not set 95# CONFIG_MODULE_UNLOAD is not set
73# CONFIG_MODVERSIONS is not set 96# CONFIG_MODVERSIONS is not set
74# CONFIG_MODULE_SRCVERSION_ALL is not set 97# CONFIG_MODULE_SRCVERSION_ALL is not set
75CONFIG_KMOD=y 98CONFIG_KMOD=y
76
77#
78# Block layer
79#
80CONFIG_BLOCK=y 99CONFIG_BLOCK=y
81# CONFIG_LBD is not set 100# CONFIG_LBD is not set
82# CONFIG_BLK_DEV_IO_TRACE is not set 101# CONFIG_BLK_DEV_IO_TRACE is not set
83# CONFIG_LSF is not set 102# CONFIG_LSF is not set
103# CONFIG_BLK_DEV_BSG is not set
104# CONFIG_BLK_DEV_INTEGRITY is not set
84 105
85# 106#
86# IO Schedulers 107# IO Schedulers
@@ -94,68 +115,27 @@ CONFIG_DEFAULT_AS=y
94# CONFIG_DEFAULT_CFQ is not set 115# CONFIG_DEFAULT_CFQ is not set
95# CONFIG_DEFAULT_NOOP is not set 116# CONFIG_DEFAULT_NOOP is not set
96CONFIG_DEFAULT_IOSCHED="anticipatory" 117CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y
119# CONFIG_FREEZER is not set
97 120
98# 121#
99# System type 122# System type
100# 123#
101CONFIG_SOLUTION_ENGINE=y
102CONFIG_SH_SOLUTION_ENGINE=y
103# CONFIG_SH_7751_SOLUTION_ENGINE is not set
104# CONFIG_SH_7300_SOLUTION_ENGINE is not set
105# CONFIG_SH_7343_SOLUTION_ENGINE is not set
106# CONFIG_SH_73180_SOLUTION_ENGINE is not set
107# CONFIG_SH_7751_SYSTEMH is not set
108# CONFIG_SH_HP6XX is not set
109# CONFIG_SH_EC3104 is not set
110# CONFIG_SH_SATURN is not set
111# CONFIG_SH_DREAMCAST is not set
112# CONFIG_SH_BIGSUR is not set
113# CONFIG_SH_MPC1211 is not set
114# CONFIG_SH_SH03 is not set
115# CONFIG_SH_SECUREEDGE5410 is not set
116# CONFIG_SH_HS7751RVOIP is not set
117# CONFIG_SH_7710VOIPGW is not set
118# CONFIG_SH_RTS7751R2D is not set
119# CONFIG_SH_R7780RP is not set
120# CONFIG_SH_EDOSK7705 is not set
121# CONFIG_SH_SH4202_MICRODEV is not set
122# CONFIG_SH_LANDISK is not set
123# CONFIG_SH_TITAN is not set
124# CONFIG_SH_SHMIN is not set
125# CONFIG_SH_7206_SOLUTION_ENGINE is not set
126# CONFIG_SH_7619_SOLUTION_ENGINE is not set
127# CONFIG_SH_UNKNOWN is not set
128
129#
130# Processor selection
131#
132CONFIG_CPU_SH4=y 124CONFIG_CPU_SH4=y
133
134#
135# SH-2 Processor Support
136#
137# CONFIG_CPU_SUBTYPE_SH7604 is not set
138# CONFIG_CPU_SUBTYPE_SH7619 is not set 125# CONFIG_CPU_SUBTYPE_SH7619 is not set
139 126# CONFIG_CPU_SUBTYPE_SH7203 is not set
140#
141# SH-2A Processor Support
142#
143# CONFIG_CPU_SUBTYPE_SH7206 is not set 127# CONFIG_CPU_SUBTYPE_SH7206 is not set
144 128# CONFIG_CPU_SUBTYPE_SH7263 is not set
145# 129# CONFIG_CPU_SUBTYPE_MXG is not set
146# SH-3 Processor Support
147#
148# CONFIG_CPU_SUBTYPE_SH7300 is not set
149# CONFIG_CPU_SUBTYPE_SH7705 is not set 130# CONFIG_CPU_SUBTYPE_SH7705 is not set
150# CONFIG_CPU_SUBTYPE_SH7706 is not set 131# CONFIG_CPU_SUBTYPE_SH7706 is not set
151# CONFIG_CPU_SUBTYPE_SH7707 is not set 132# CONFIG_CPU_SUBTYPE_SH7707 is not set
152# CONFIG_CPU_SUBTYPE_SH7708 is not set 133# CONFIG_CPU_SUBTYPE_SH7708 is not set
153# CONFIG_CPU_SUBTYPE_SH7709 is not set 134# CONFIG_CPU_SUBTYPE_SH7709 is not set
154# CONFIG_CPU_SUBTYPE_SH7710 is not set 135# CONFIG_CPU_SUBTYPE_SH7710 is not set
155 136# CONFIG_CPU_SUBTYPE_SH7712 is not set
156# 137# CONFIG_CPU_SUBTYPE_SH7720 is not set
157# SH-4 Processor Support 138# CONFIG_CPU_SUBTYPE_SH7721 is not set
158#
159CONFIG_CPU_SUBTYPE_SH7750=y 139CONFIG_CPU_SUBTYPE_SH7750=y
160# CONFIG_CPU_SUBTYPE_SH7091 is not set 140# CONFIG_CPU_SUBTYPE_SH7091 is not set
161# CONFIG_CPU_SUBTYPE_SH7750R is not set 141# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -164,58 +144,61 @@ CONFIG_CPU_SUBTYPE_SH7750=y
164# CONFIG_CPU_SUBTYPE_SH7751R is not set 144# CONFIG_CPU_SUBTYPE_SH7751R is not set
165# CONFIG_CPU_SUBTYPE_SH7760 is not set 145# CONFIG_CPU_SUBTYPE_SH7760 is not set
166# CONFIG_CPU_SUBTYPE_SH4_202 is not set 146# CONFIG_CPU_SUBTYPE_SH4_202 is not set
167 147# CONFIG_CPU_SUBTYPE_SH7723 is not set
168# 148# CONFIG_CPU_SUBTYPE_SH7763 is not set
169# ST40 Processor Support
170#
171# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
172# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
173
174#
175# SH-4A Processor Support
176#
177# CONFIG_CPU_SUBTYPE_SH7770 is not set 149# CONFIG_CPU_SUBTYPE_SH7770 is not set
178# CONFIG_CPU_SUBTYPE_SH7780 is not set 150# CONFIG_CPU_SUBTYPE_SH7780 is not set
179# CONFIG_CPU_SUBTYPE_SH7785 is not set 151# CONFIG_CPU_SUBTYPE_SH7785 is not set
180 152# CONFIG_CPU_SUBTYPE_SHX3 is not set
181#
182# SH4AL-DSP Processor Support
183#
184# CONFIG_CPU_SUBTYPE_SH73180 is not set
185# CONFIG_CPU_SUBTYPE_SH7343 is not set 153# CONFIG_CPU_SUBTYPE_SH7343 is not set
186# CONFIG_CPU_SUBTYPE_SH7722 is not set 154# CONFIG_CPU_SUBTYPE_SH7722 is not set
155# CONFIG_CPU_SUBTYPE_SH7366 is not set
156# CONFIG_CPU_SUBTYPE_SH5_101 is not set
157# CONFIG_CPU_SUBTYPE_SH5_103 is not set
187 158
188# 159#
189# Memory management options 160# Memory management options
190# 161#
162CONFIG_QUICKLIST=y
191CONFIG_MMU=y 163CONFIG_MMU=y
192CONFIG_PAGE_OFFSET=0x80000000 164CONFIG_PAGE_OFFSET=0x80000000
193CONFIG_MEMORY_START=0x0c000000 165CONFIG_MEMORY_START=0x0c000000
194CONFIG_MEMORY_SIZE=0x02000000 166CONFIG_MEMORY_SIZE=0x02000000
167CONFIG_29BIT=y
195CONFIG_VSYSCALL=y 168CONFIG_VSYSCALL=y
169CONFIG_ARCH_FLATMEM_ENABLE=y
170CONFIG_ARCH_SPARSEMEM_ENABLE=y
171CONFIG_ARCH_SPARSEMEM_DEFAULT=y
172CONFIG_MAX_ACTIVE_REGIONS=1
173CONFIG_ARCH_POPULATES_NODE_MAP=y
174CONFIG_ARCH_SELECT_MEMORY_MODEL=y
196CONFIG_PAGE_SIZE_4KB=y 175CONFIG_PAGE_SIZE_4KB=y
197# CONFIG_PAGE_SIZE_8KB is not set 176# CONFIG_PAGE_SIZE_8KB is not set
177# CONFIG_PAGE_SIZE_16KB is not set
198# CONFIG_PAGE_SIZE_64KB is not set 178# CONFIG_PAGE_SIZE_64KB is not set
179CONFIG_ENTRY_OFFSET=0x00001000
199CONFIG_SELECT_MEMORY_MODEL=y 180CONFIG_SELECT_MEMORY_MODEL=y
200CONFIG_FLATMEM_MANUAL=y 181CONFIG_FLATMEM_MANUAL=y
201# CONFIG_DISCONTIGMEM_MANUAL is not set 182# CONFIG_DISCONTIGMEM_MANUAL is not set
202# CONFIG_SPARSEMEM_MANUAL is not set 183# CONFIG_SPARSEMEM_MANUAL is not set
203CONFIG_FLATMEM=y 184CONFIG_FLATMEM=y
204CONFIG_FLAT_NODE_MEM_MAP=y 185CONFIG_FLAT_NODE_MEM_MAP=y
205# CONFIG_SPARSEMEM_STATIC is not set 186CONFIG_SPARSEMEM_STATIC=y
187CONFIG_PAGEFLAGS_EXTENDED=y
206CONFIG_SPLIT_PTLOCK_CPUS=4 188CONFIG_SPLIT_PTLOCK_CPUS=4
207# CONFIG_RESOURCES_64BIT is not set 189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0
192CONFIG_NR_QUICK=2
193CONFIG_UNEVICTABLE_LRU=y
208 194
209# 195#
210# Cache configuration 196# Cache configuration
211# 197#
212# CONFIG_SH_DIRECT_MAPPED is not set 198# CONFIG_SH_DIRECT_MAPPED is not set
213# CONFIG_SH_WRITETHROUGH is not set 199CONFIG_CACHE_WRITEBACK=y
214# CONFIG_SH_OCRAM is not set 200# CONFIG_CACHE_WRITETHROUGH is not set
215CONFIG_CF_ENABLER=y 201# CONFIG_CACHE_OFF is not set
216# CONFIG_CF_AREA5 is not set
217CONFIG_CF_AREA6=y
218CONFIG_CF_BASE_ADDR=0xb8000000
219 202
220# 203#
221# Processor features 204# Processor features
@@ -223,19 +206,28 @@ CONFIG_CF_BASE_ADDR=0xb8000000
223CONFIG_CPU_LITTLE_ENDIAN=y 206CONFIG_CPU_LITTLE_ENDIAN=y
224# CONFIG_CPU_BIG_ENDIAN is not set 207# CONFIG_CPU_BIG_ENDIAN is not set
225CONFIG_SH_FPU=y 208CONFIG_SH_FPU=y
226# CONFIG_SH_DSP is not set
227# CONFIG_SH_STORE_QUEUES is not set 209# CONFIG_SH_STORE_QUEUES is not set
228CONFIG_CPU_HAS_INTEVT=y 210CONFIG_CPU_HAS_INTEVT=y
229CONFIG_CPU_HAS_INTC_IRQ=y 211CONFIG_CPU_HAS_IPR_IRQ=y
230CONFIG_CPU_HAS_SR_RB=y 212CONFIG_CPU_HAS_SR_RB=y
231CONFIG_CPU_HAS_PTEA=y 213CONFIG_CPU_HAS_PTEA=y
214CONFIG_CPU_HAS_FPU=y
232 215
233# 216#
234# Timer support 217# Board support
218#
219CONFIG_SOLUTION_ENGINE=y
220CONFIG_SH_SOLUTION_ENGINE=y
221
222#
223# Timer and clock configuration
235# 224#
236CONFIG_SH_TMU=y 225CONFIG_SH_TMU=y
237CONFIG_SH_TIMER_IRQ=16 226CONFIG_SH_TIMER_IRQ=16
238CONFIG_SH_PCLK_FREQ=33333333 227CONFIG_SH_PCLK_FREQ=33333333
228# CONFIG_NO_HZ is not set
229# CONFIG_HIGH_RES_TIMERS is not set
230CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
239 231
240# 232#
241# CPU Frequency scaling 233# CPU Frequency scaling
@@ -250,12 +242,11 @@ CONFIG_SH_PCLK_FREQ=33333333
250# 242#
251# Companion Chips 243# Companion Chips
252# 244#
253# CONFIG_HD6446X_SERIES is not set
254CONFIG_HEARTBEAT=y
255 245
256# 246#
257# Additional SuperH Device Drivers 247# Additional SuperH Device Drivers
258# 248#
249CONFIG_HEARTBEAT=y
259# CONFIG_PUSH_SWITCH is not set 250# CONFIG_PUSH_SWITCH is not set
260 251
261# 252#
@@ -266,11 +257,15 @@ CONFIG_HZ_250=y
266# CONFIG_HZ_300 is not set 257# CONFIG_HZ_300 is not set
267# CONFIG_HZ_1000 is not set 258# CONFIG_HZ_1000 is not set
268CONFIG_HZ=250 259CONFIG_HZ=250
260# CONFIG_SCHED_HRTICK is not set
269# CONFIG_KEXEC is not set 261# CONFIG_KEXEC is not set
270# CONFIG_SMP is not set 262# CONFIG_CRASH_DUMP is not set
263# CONFIG_SECCOMP is not set
271CONFIG_PREEMPT_NONE=y 264CONFIG_PREEMPT_NONE=y
272# CONFIG_PREEMPT_VOLUNTARY is not set 265# CONFIG_PREEMPT_VOLUNTARY is not set
273# CONFIG_PREEMPT is not set 266# CONFIG_PREEMPT is not set
267CONFIG_GUSA=y
268# CONFIG_GUSA_RB is not set
274 269
275# 270#
276# Boot options 271# Boot options
@@ -283,43 +278,32 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
283# 278#
284# Bus options 279# Bus options
285# 280#
286# CONFIG_PCI is not set 281CONFIG_CF_ENABLER=y
287 282# CONFIG_CF_AREA5 is not set
288# 283CONFIG_CF_AREA6=y
289# PCCARD (PCMCIA/CardBus) support 284CONFIG_CF_BASE_ADDR=0xb8000000
290# 285# CONFIG_ARCH_SUPPORTS_MSI is not set
291
292#
293# PCI Hotplug Support
294#
295 286
296# 287#
297# Executable file formats 288# Executable file formats
298# 289#
299CONFIG_BINFMT_ELF=y 290CONFIG_BINFMT_ELF=y
300# CONFIG_BINFMT_FLAT is not set 291# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
292# CONFIG_HAVE_AOUT is not set
301# CONFIG_BINFMT_MISC is not set 293# CONFIG_BINFMT_MISC is not set
302
303#
304# Power management options (EXPERIMENTAL)
305#
306# CONFIG_PM is not set
307
308#
309# Networking
310#
311CONFIG_NET=y 294CONFIG_NET=y
312 295
313# 296#
314# Networking options 297# Networking options
315# 298#
316# CONFIG_NETDEBUG is not set
317CONFIG_PACKET=y 299CONFIG_PACKET=y
318# CONFIG_PACKET_MMAP is not set 300# CONFIG_PACKET_MMAP is not set
319CONFIG_UNIX=y 301CONFIG_UNIX=y
320CONFIG_XFRM=y 302CONFIG_XFRM=y
321# CONFIG_XFRM_USER is not set 303# CONFIG_XFRM_USER is not set
322# CONFIG_XFRM_SUB_POLICY is not set 304# CONFIG_XFRM_SUB_POLICY is not set
305# CONFIG_XFRM_MIGRATE is not set
306# CONFIG_XFRM_STATISTICS is not set
323# CONFIG_NET_KEY is not set 307# CONFIG_NET_KEY is not set
324CONFIG_INET=y 308CONFIG_INET=y
325CONFIG_IP_MULTICAST=y 309CONFIG_IP_MULTICAST=y
@@ -342,6 +326,7 @@ CONFIG_IP_PNP_BOOTP=y
342CONFIG_INET_XFRM_MODE_TRANSPORT=y 326CONFIG_INET_XFRM_MODE_TRANSPORT=y
343CONFIG_INET_XFRM_MODE_TUNNEL=y 327CONFIG_INET_XFRM_MODE_TUNNEL=y
344CONFIG_INET_XFRM_MODE_BEET=y 328CONFIG_INET_XFRM_MODE_BEET=y
329# CONFIG_INET_LRO is not set
345CONFIG_INET_DIAG=y 330CONFIG_INET_DIAG=y
346CONFIG_INET_TCP_DIAG=y 331CONFIG_INET_TCP_DIAG=y
347# CONFIG_TCP_CONG_ADVANCED is not set 332# CONFIG_TCP_CONG_ADVANCED is not set
@@ -349,27 +334,14 @@ CONFIG_TCP_CONG_CUBIC=y
349CONFIG_DEFAULT_TCP_CONG="cubic" 334CONFIG_DEFAULT_TCP_CONG="cubic"
350# CONFIG_TCP_MD5SIG is not set 335# CONFIG_TCP_MD5SIG is not set
351# CONFIG_IPV6 is not set 336# CONFIG_IPV6 is not set
352# CONFIG_INET6_XFRM_TUNNEL is not set
353# CONFIG_INET6_TUNNEL is not set
354# CONFIG_NETWORK_SECMARK is not set 337# CONFIG_NETWORK_SECMARK is not set
355# CONFIG_NETFILTER is not set 338# CONFIG_NETFILTER is not set
356
357#
358# DCCP Configuration (EXPERIMENTAL)
359#
360# CONFIG_IP_DCCP is not set 339# CONFIG_IP_DCCP is not set
361
362#
363# SCTP Configuration (EXPERIMENTAL)
364#
365# CONFIG_IP_SCTP is not set 340# CONFIG_IP_SCTP is not set
366
367#
368# TIPC Configuration (EXPERIMENTAL)
369#
370# CONFIG_TIPC is not set 341# CONFIG_TIPC is not set
371# CONFIG_ATM is not set 342# CONFIG_ATM is not set
372# CONFIG_BRIDGE is not set 343# CONFIG_BRIDGE is not set
344# CONFIG_NET_DSA is not set
373# CONFIG_VLAN_8021Q is not set 345# CONFIG_VLAN_8021Q is not set
374# CONFIG_DECNET is not set 346# CONFIG_DECNET is not set
375# CONFIG_LLC2 is not set 347# CONFIG_LLC2 is not set
@@ -379,10 +351,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_LAPB is not set 351# CONFIG_LAPB is not set
380# CONFIG_ECONET is not set 352# CONFIG_ECONET is not set
381# CONFIG_WAN_ROUTER is not set 353# CONFIG_WAN_ROUTER is not set
382
383#
384# QoS and/or fair queueing
385#
386# CONFIG_NET_SCHED is not set 354# CONFIG_NET_SCHED is not set
387 355
388# 356#
@@ -390,9 +358,19 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
390# 358#
391# CONFIG_NET_PKTGEN is not set 359# CONFIG_NET_PKTGEN is not set
392# CONFIG_HAMRADIO is not set 360# CONFIG_HAMRADIO is not set
361# CONFIG_CAN is not set
393# CONFIG_IRDA is not set 362# CONFIG_IRDA is not set
394# CONFIG_BT is not set 363# CONFIG_BT is not set
364# CONFIG_AF_RXRPC is not set
365# CONFIG_PHONET is not set
366CONFIG_WIRELESS=y
367# CONFIG_CFG80211 is not set
368# CONFIG_WIRELESS_OLD_REGULATORY is not set
369# CONFIG_WIRELESS_EXT is not set
370# CONFIG_MAC80211 is not set
395# CONFIG_IEEE80211 is not set 371# CONFIG_IEEE80211 is not set
372# CONFIG_RFKILL is not set
373# CONFIG_NET_9P is not set
396 374
397# 375#
398# Device Drivers 376# Device Drivers
@@ -404,32 +382,27 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
404CONFIG_STANDALONE=y 382CONFIG_STANDALONE=y
405CONFIG_PREVENT_FIRMWARE_BUILD=y 383CONFIG_PREVENT_FIRMWARE_BUILD=y
406# CONFIG_SYS_HYPERVISOR is not set 384# CONFIG_SYS_HYPERVISOR is not set
407
408#
409# Connector - unified userspace <-> kernelspace linker
410#
411# CONFIG_CONNECTOR is not set 385# CONFIG_CONNECTOR is not set
412
413#
414# Memory Technology Devices (MTD)
415#
416CONFIG_MTD=y 386CONFIG_MTD=y
417# CONFIG_MTD_DEBUG is not set 387# CONFIG_MTD_DEBUG is not set
418# CONFIG_MTD_CONCAT is not set 388# CONFIG_MTD_CONCAT is not set
419CONFIG_MTD_PARTITIONS=y 389CONFIG_MTD_PARTITIONS=y
420# CONFIG_MTD_REDBOOT_PARTS is not set 390# CONFIG_MTD_REDBOOT_PARTS is not set
421# CONFIG_MTD_CMDLINE_PARTS is not set 391# CONFIG_MTD_CMDLINE_PARTS is not set
392# CONFIG_MTD_AR7_PARTS is not set
422 393
423# 394#
424# User Modules And Translation Layers 395# User Modules And Translation Layers
425# 396#
426CONFIG_MTD_CHAR=y 397CONFIG_MTD_CHAR=y
398CONFIG_MTD_BLKDEVS=y
427CONFIG_MTD_BLOCK=y 399CONFIG_MTD_BLOCK=y
428# CONFIG_FTL is not set 400# CONFIG_FTL is not set
429# CONFIG_NFTL is not set 401# CONFIG_NFTL is not set
430# CONFIG_INFTL is not set 402# CONFIG_INFTL is not set
431# CONFIG_RFD_FTL is not set 403# CONFIG_RFD_FTL is not set
432# CONFIG_SSFDC is not set 404# CONFIG_SSFDC is not set
405# CONFIG_MTD_OOPS is not set
433 406
434# 407#
435# RAM/ROM/Flash chip drivers 408# RAM/ROM/Flash chip drivers
@@ -455,7 +428,6 @@ CONFIG_MTD_CFI_UTIL=y
455# CONFIG_MTD_RAM is not set 428# CONFIG_MTD_RAM is not set
456CONFIG_MTD_ROM=y 429CONFIG_MTD_ROM=y
457# CONFIG_MTD_ABSENT is not set 430# CONFIG_MTD_ABSENT is not set
458# CONFIG_MTD_OBSOLETE_CHIPS is not set
459 431
460# 432#
461# Mapping drivers for chip access 433# Mapping drivers for chip access
@@ -478,75 +450,53 @@ CONFIG_MTD_ROM=y
478# CONFIG_MTD_DOC2000 is not set 450# CONFIG_MTD_DOC2000 is not set
479# CONFIG_MTD_DOC2001 is not set 451# CONFIG_MTD_DOC2001 is not set
480# CONFIG_MTD_DOC2001PLUS is not set 452# CONFIG_MTD_DOC2001PLUS is not set
481
482#
483# NAND Flash Device Drivers
484#
485# CONFIG_MTD_NAND is not set 453# CONFIG_MTD_NAND is not set
486
487#
488# OneNAND Flash Device Drivers
489#
490# CONFIG_MTD_ONENAND is not set 454# CONFIG_MTD_ONENAND is not set
491 455
492# 456#
493# Parallel port support 457# UBI - Unsorted block images
494# 458#
459# CONFIG_MTD_UBI is not set
495# CONFIG_PARPORT is not set 460# CONFIG_PARPORT is not set
496 461CONFIG_BLK_DEV=y
497#
498# Plug and Play support
499#
500
501#
502# Block devices
503#
504# CONFIG_BLK_DEV_COW_COMMON is not set 462# CONFIG_BLK_DEV_COW_COMMON is not set
505# CONFIG_BLK_DEV_LOOP is not set 463# CONFIG_BLK_DEV_LOOP is not set
506# CONFIG_BLK_DEV_NBD is not set 464# CONFIG_BLK_DEV_NBD is not set
507# CONFIG_BLK_DEV_RAM is not set 465# CONFIG_BLK_DEV_RAM is not set
508# CONFIG_BLK_DEV_INITRD is not set
509# CONFIG_CDROM_PKTCDVD is not set 466# CONFIG_CDROM_PKTCDVD is not set
510# CONFIG_ATA_OVER_ETH is not set 467# CONFIG_ATA_OVER_ETH is not set
511 468# CONFIG_BLK_DEV_HD is not set
512# 469CONFIG_MISC_DEVICES=y
513# Misc devices 470# CONFIG_EEPROM_93CX6 is not set
514# 471# CONFIG_ENCLOSURE_SERVICES is not set
515# CONFIG_TIFM_CORE is not set 472CONFIG_HAVE_IDE=y
516
517#
518# ATA/ATAPI/MFM/RLL support
519#
520CONFIG_IDE=y 473CONFIG_IDE=y
521CONFIG_IDE_MAX_HWIFS=4
522CONFIG_BLK_DEV_IDE=y
523 474
524# 475#
525# Please see Documentation/ide.txt for help/info on IDE drives 476# Please see Documentation/ide/ide.txt for help/info on IDE drives
526# 477#
527# CONFIG_BLK_DEV_IDE_SATA is not set 478# CONFIG_BLK_DEV_IDE_SATA is not set
528CONFIG_BLK_DEV_IDEDISK=y 479CONFIG_IDE_GD=y
529# CONFIG_IDEDISK_MULTI_MODE is not set 480CONFIG_IDE_GD_ATA=y
481# CONFIG_IDE_GD_ATAPI is not set
530# CONFIG_BLK_DEV_IDECD is not set 482# CONFIG_BLK_DEV_IDECD is not set
531# CONFIG_BLK_DEV_IDETAPE is not set 483# CONFIG_BLK_DEV_IDETAPE is not set
532# CONFIG_BLK_DEV_IDEFLOPPY is not set
533# CONFIG_BLK_DEV_IDESCSI is not set 484# CONFIG_BLK_DEV_IDESCSI is not set
534# CONFIG_IDE_TASK_IOCTL is not set 485# CONFIG_IDE_TASK_IOCTL is not set
486CONFIG_IDE_PROC_FS=y
535 487
536# 488#
537# IDE chipset support/bugfixes 489# IDE chipset support/bugfixes
538# 490#
539# CONFIG_IDE_GENERIC is not set 491# CONFIG_BLK_DEV_PLATFORM is not set
540# CONFIG_IDE_ARM is not set
541# CONFIG_BLK_DEV_IDEDMA is not set 492# CONFIG_BLK_DEV_IDEDMA is not set
542# CONFIG_IDEDMA_AUTO is not set
543# CONFIG_BLK_DEV_HD is not set
544 493
545# 494#
546# SCSI device support 495# SCSI device support
547# 496#
548# CONFIG_RAID_ATTRS is not set 497# CONFIG_RAID_ATTRS is not set
549CONFIG_SCSI=y 498CONFIG_SCSI=y
499CONFIG_SCSI_DMA=y
550# CONFIG_SCSI_TGT is not set 500# CONFIG_SCSI_TGT is not set
551# CONFIG_SCSI_NETLINK is not set 501# CONFIG_SCSI_NETLINK is not set
552CONFIG_SCSI_PROC_FS=y 502CONFIG_SCSI_PROC_FS=y
@@ -568,6 +518,7 @@ CONFIG_SCSI_PROC_FS=y
568# CONFIG_SCSI_CONSTANTS is not set 518# CONFIG_SCSI_CONSTANTS is not set
569# CONFIG_SCSI_LOGGING is not set 519# CONFIG_SCSI_LOGGING is not set
570# CONFIG_SCSI_SCAN_ASYNC is not set 520# CONFIG_SCSI_SCAN_ASYNC is not set
521CONFIG_SCSI_WAIT_SCAN=m
571 522
572# 523#
573# SCSI Transports 524# SCSI Transports
@@ -575,96 +526,52 @@ CONFIG_SCSI_PROC_FS=y
575# CONFIG_SCSI_SPI_ATTRS is not set 526# CONFIG_SCSI_SPI_ATTRS is not set
576# CONFIG_SCSI_FC_ATTRS is not set 527# CONFIG_SCSI_FC_ATTRS is not set
577# CONFIG_SCSI_ISCSI_ATTRS is not set 528# CONFIG_SCSI_ISCSI_ATTRS is not set
578# CONFIG_SCSI_SAS_ATTRS is not set
579# CONFIG_SCSI_SAS_LIBSAS is not set 529# CONFIG_SCSI_SAS_LIBSAS is not set
580 530# CONFIG_SCSI_SRP_ATTRS is not set
581# 531CONFIG_SCSI_LOWLEVEL=y
582# SCSI low-level drivers
583#
584# CONFIG_ISCSI_TCP is not set 532# CONFIG_ISCSI_TCP is not set
585# CONFIG_SCSI_DEBUG is not set 533# CONFIG_SCSI_DEBUG is not set
586 534# CONFIG_SCSI_DH is not set
587#
588# Serial ATA (prod) and Parallel ATA (experimental) drivers
589#
590# CONFIG_ATA is not set 535# CONFIG_ATA is not set
591
592#
593# Multi-device support (RAID and LVM)
594#
595# CONFIG_MD is not set 536# CONFIG_MD is not set
596
597#
598# Fusion MPT device support
599#
600# CONFIG_FUSION is not set
601
602#
603# IEEE 1394 (FireWire) support
604#
605
606#
607# I2O device support
608#
609
610#
611# Network device support
612#
613CONFIG_NETDEVICES=y 537CONFIG_NETDEVICES=y
614# CONFIG_DUMMY is not set 538# CONFIG_DUMMY is not set
615# CONFIG_BONDING is not set 539# CONFIG_BONDING is not set
540# CONFIG_MACVLAN is not set
616# CONFIG_EQUALIZER is not set 541# CONFIG_EQUALIZER is not set
617# CONFIG_TUN is not set 542# CONFIG_TUN is not set
618 543# CONFIG_VETH is not set
619#
620# PHY device support
621#
622# CONFIG_PHYLIB is not set 544# CONFIG_PHYLIB is not set
623
624#
625# Ethernet (10 or 100Mbit)
626#
627CONFIG_NET_ETHERNET=y 545CONFIG_NET_ETHERNET=y
628# CONFIG_MII is not set 546# CONFIG_MII is not set
547# CONFIG_AX88796 is not set
629CONFIG_STNIC=y 548CONFIG_STNIC=y
630# CONFIG_SMC91X is not set 549# CONFIG_SMC91X is not set
631 550# CONFIG_SMC911X is not set
632# 551# CONFIG_IBM_NEW_EMAC_ZMII is not set
633# Ethernet (1000 Mbit) 552# CONFIG_IBM_NEW_EMAC_RGMII is not set
634# 553# CONFIG_IBM_NEW_EMAC_TAH is not set
635 554# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
636# 555# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
637# Ethernet (10000 Mbit) 556# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
638# 557# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
639 558# CONFIG_B44 is not set
640# 559CONFIG_NETDEV_1000=y
641# Token Ring devices 560CONFIG_NETDEV_10000=y
642# 561
643 562#
644# 563# Wireless LAN
645# Wireless LAN (non-hamradio) 564#
646# 565# CONFIG_WLAN_PRE80211 is not set
647# CONFIG_NET_RADIO is not set 566# CONFIG_WLAN_80211 is not set
648 567# CONFIG_IWLWIFI_LEDS is not set
649#
650# Wan interfaces
651#
652# CONFIG_WAN is not set 568# CONFIG_WAN is not set
653# CONFIG_PPP is not set 569# CONFIG_PPP is not set
654# CONFIG_SLIP is not set 570# CONFIG_SLIP is not set
655# CONFIG_SHAPER is not set
656# CONFIG_NETCONSOLE is not set 571# CONFIG_NETCONSOLE is not set
657# CONFIG_NETPOLL is not set 572# CONFIG_NETPOLL is not set
658# CONFIG_NET_POLL_CONTROLLER is not set 573# CONFIG_NET_POLL_CONTROLLER is not set
659
660#
661# ISDN subsystem
662#
663# CONFIG_ISDN is not set 574# CONFIG_ISDN is not set
664
665#
666# Telephony Support
667#
668# CONFIG_PHONE is not set 575# CONFIG_PHONE is not set
669 576
670# 577#
@@ -682,6 +589,7 @@ CONFIG_STNIC=y
682# Character devices 589# Character devices
683# 590#
684# CONFIG_VT is not set 591# CONFIG_VT is not set
592CONFIG_DEVKMEM=y
685# CONFIG_SERIAL_NONSTANDARD is not set 593# CONFIG_SERIAL_NONSTANDARD is not set
686 594
687# 595#
@@ -704,15 +612,30 @@ CONFIG_SERIAL_CORE_CONSOLE=y
704CONFIG_UNIX98_PTYS=y 612CONFIG_UNIX98_PTYS=y
705CONFIG_LEGACY_PTYS=y 613CONFIG_LEGACY_PTYS=y
706CONFIG_LEGACY_PTY_COUNT=256 614CONFIG_LEGACY_PTY_COUNT=256
707
708#
709# IPMI
710#
711# CONFIG_IPMI_HANDLER is not set 615# CONFIG_IPMI_HANDLER is not set
712 616CONFIG_HW_RANDOM=y
713# 617# CONFIG_R3964 is not set
714# Watchdog Cards 618# CONFIG_RAW_DRIVER is not set
715# 619# CONFIG_TCG_TPM is not set
620# CONFIG_I2C is not set
621# CONFIG_SPI is not set
622# CONFIG_W1 is not set
623# CONFIG_POWER_SUPPLY is not set
624CONFIG_HWMON=y
625# CONFIG_HWMON_VID is not set
626# CONFIG_SENSORS_F71805F is not set
627# CONFIG_SENSORS_F71882FG is not set
628# CONFIG_SENSORS_IT87 is not set
629# CONFIG_SENSORS_PC87360 is not set
630# CONFIG_SENSORS_PC87427 is not set
631# CONFIG_SENSORS_SMSC47M1 is not set
632# CONFIG_SENSORS_SMSC47B397 is not set
633# CONFIG_SENSORS_VT1211 is not set
634# CONFIG_SENSORS_W83627HF is not set
635# CONFIG_SENSORS_W83627EHF is not set
636# CONFIG_HWMON_DEBUG_CHIP is not set
637# CONFIG_THERMAL is not set
638# CONFIG_THERMAL_HWMON is not set
716CONFIG_WATCHDOG=y 639CONFIG_WATCHDOG=y
717# CONFIG_WATCHDOG_NOWAYOUT is not set 640# CONFIG_WATCHDOG_NOWAYOUT is not set
718 641
@@ -722,148 +645,92 @@ CONFIG_WATCHDOG=y
722# CONFIG_SOFT_WATCHDOG is not set 645# CONFIG_SOFT_WATCHDOG is not set
723CONFIG_SH_WDT=y 646CONFIG_SH_WDT=y
724# CONFIG_SH_WDT_MMAP is not set 647# CONFIG_SH_WDT_MMAP is not set
725CONFIG_HW_RANDOM=y
726# CONFIG_GEN_RTC is not set
727# CONFIG_DTLK is not set
728# CONFIG_R3964 is not set
729# CONFIG_RAW_DRIVER is not set
730 648
731# 649#
732# TPM devices 650# Sonics Silicon Backplane
733# 651#
734# CONFIG_TCG_TPM is not set 652CONFIG_SSB_POSSIBLE=y
653# CONFIG_SSB is not set
735 654
736# 655#
737# I2C support 656# Multifunction device drivers
738# 657#
739# CONFIG_I2C is not set 658# CONFIG_MFD_CORE is not set
659# CONFIG_MFD_SM501 is not set
660# CONFIG_HTC_PASIC3 is not set
661# CONFIG_MFD_TMIO is not set
662# CONFIG_MFD_WM8400 is not set
740 663
741# 664#
742# SPI support 665# Multimedia devices
743#
744# CONFIG_SPI is not set
745# CONFIG_SPI_MASTER is not set
746
747#
748# Dallas's 1-wire bus
749#
750# CONFIG_W1 is not set
751
752#
753# Hardware Monitoring support
754# 666#
755CONFIG_HWMON=y
756# CONFIG_HWMON_VID is not set
757# CONFIG_SENSORS_ABITUGURU is not set
758# CONFIG_SENSORS_F71805F is not set
759# CONFIG_SENSORS_PC87427 is not set
760# CONFIG_SENSORS_VT1211 is not set
761# CONFIG_HWMON_DEBUG_CHIP is not set
762 667
763# 668#
764# Multimedia devices 669# Multimedia core support
765# 670#
766# CONFIG_VIDEO_DEV is not set 671# CONFIG_VIDEO_DEV is not set
672# CONFIG_DVB_CORE is not set
673# CONFIG_VIDEO_MEDIA is not set
767 674
768# 675#
769# Digital Video Broadcasting Devices 676# Multimedia drivers
770# 677#
771# CONFIG_DVB is not set 678# CONFIG_DAB is not set
772 679
773# 680#
774# Graphics support 681# Graphics support
775# 682#
776CONFIG_FIRMWARE_EDID=y 683# CONFIG_VGASTATE is not set
684# CONFIG_VIDEO_OUTPUT_CONTROL is not set
777# CONFIG_FB is not set 685# CONFIG_FB is not set
778# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 686# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
779 687
780# 688#
781# Sound 689# Display device support
782# 690#
691# CONFIG_DISPLAY_SUPPORT is not set
783# CONFIG_SOUND is not set 692# CONFIG_SOUND is not set
784 693CONFIG_USB_SUPPORT=y
785# 694CONFIG_USB_ARCH_HAS_HCD=y
786# USB support
787#
788# CONFIG_USB_ARCH_HAS_HCD is not set
789# CONFIG_USB_ARCH_HAS_OHCI is not set 695# CONFIG_USB_ARCH_HAS_OHCI is not set
790# CONFIG_USB_ARCH_HAS_EHCI is not set 696# CONFIG_USB_ARCH_HAS_EHCI is not set
697# CONFIG_USB is not set
698# CONFIG_USB_OTG_WHITELIST is not set
699# CONFIG_USB_OTG_BLACKLIST_HUB is not set
791 700
792# 701#
793# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 702# Enable Host or Gadget support to see Inventra options
794# 703#
795 704
796# 705#
797# USB Gadget Support 706# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
798# 707#
799# CONFIG_USB_GADGET is not set 708# CONFIG_USB_GADGET is not set
800
801#
802# MMC/SD Card support
803#
804# CONFIG_MMC is not set 709# CONFIG_MMC is not set
805 710# CONFIG_MEMSTICK is not set
806#
807# LED devices
808#
809# CONFIG_NEW_LEDS is not set 711# CONFIG_NEW_LEDS is not set
810 712# CONFIG_ACCESSIBILITY is not set
811#
812# LED drivers
813#
814
815#
816# LED Triggers
817#
818
819#
820# InfiniBand support
821#
822
823#
824# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
825#
826
827#
828# Real Time Clock
829#
830# CONFIG_RTC_CLASS is not set 713# CONFIG_RTC_CLASS is not set
831 714# CONFIG_DMADEVICES is not set
832# 715# CONFIG_UIO is not set
833# DMA Engine support 716# CONFIG_STAGING is not set
834#
835# CONFIG_DMA_ENGINE is not set
836
837#
838# DMA Clients
839#
840
841#
842# DMA Devices
843#
844
845#
846# Virtualization
847#
848 717
849# 718#
850# File systems 719# File systems
851# 720#
852# CONFIG_EXT2_FS is not set 721# CONFIG_EXT2_FS is not set
853# CONFIG_EXT3_FS is not set 722# CONFIG_EXT3_FS is not set
854# CONFIG_EXT4DEV_FS is not set 723# CONFIG_EXT4_FS is not set
855# CONFIG_REISERFS_FS is not set 724# CONFIG_REISERFS_FS is not set
856# CONFIG_JFS_FS is not set 725# CONFIG_JFS_FS is not set
857# CONFIG_FS_POSIX_ACL is not set 726# CONFIG_FS_POSIX_ACL is not set
727CONFIG_FILE_LOCKING=y
858# CONFIG_XFS_FS is not set 728# CONFIG_XFS_FS is not set
859# CONFIG_GFS2_FS is not set
860# CONFIG_OCFS2_FS is not set 729# CONFIG_OCFS2_FS is not set
861# CONFIG_MINIX_FS is not set 730CONFIG_DNOTIFY=y
862# CONFIG_ROMFS_FS is not set
863CONFIG_INOTIFY=y 731CONFIG_INOTIFY=y
864CONFIG_INOTIFY_USER=y 732CONFIG_INOTIFY_USER=y
865# CONFIG_QUOTA is not set 733# CONFIG_QUOTA is not set
866CONFIG_DNOTIFY=y
867# CONFIG_AUTOFS_FS is not set 734# CONFIG_AUTOFS_FS is not set
868# CONFIG_AUTOFS4_FS is not set 735# CONFIG_AUTOFS4_FS is not set
869# CONFIG_FUSE_FS is not set 736# CONFIG_FUSE_FS is not set
@@ -887,12 +754,12 @@ CONFIG_DNOTIFY=y
887CONFIG_PROC_FS=y 754CONFIG_PROC_FS=y
888CONFIG_PROC_KCORE=y 755CONFIG_PROC_KCORE=y
889CONFIG_PROC_SYSCTL=y 756CONFIG_PROC_SYSCTL=y
757CONFIG_PROC_PAGE_MONITOR=y
890CONFIG_SYSFS=y 758CONFIG_SYSFS=y
891CONFIG_TMPFS=y 759CONFIG_TMPFS=y
892# CONFIG_TMPFS_POSIX_ACL is not set 760# CONFIG_TMPFS_POSIX_ACL is not set
893# CONFIG_HUGETLBFS is not set 761# CONFIG_HUGETLBFS is not set
894# CONFIG_HUGETLB_PAGE is not set 762# CONFIG_HUGETLB_PAGE is not set
895CONFIG_RAMFS=y
896# CONFIG_CONFIGFS_FS is not set 763# CONFIG_CONFIGFS_FS is not set
897 764
898# 765#
@@ -908,31 +775,33 @@ CONFIG_RAMFS=y
908CONFIG_JFFS2_FS=y 775CONFIG_JFFS2_FS=y
909CONFIG_JFFS2_FS_DEBUG=0 776CONFIG_JFFS2_FS_DEBUG=0
910CONFIG_JFFS2_FS_WRITEBUFFER=y 777CONFIG_JFFS2_FS_WRITEBUFFER=y
778# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
911# CONFIG_JFFS2_SUMMARY is not set 779# CONFIG_JFFS2_SUMMARY is not set
912# CONFIG_JFFS2_FS_XATTR is not set 780# CONFIG_JFFS2_FS_XATTR is not set
913# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 781# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
914CONFIG_JFFS2_ZLIB=y 782CONFIG_JFFS2_ZLIB=y
783# CONFIG_JFFS2_LZO is not set
915CONFIG_JFFS2_RTIME=y 784CONFIG_JFFS2_RTIME=y
916# CONFIG_JFFS2_RUBIN is not set 785# CONFIG_JFFS2_RUBIN is not set
917# CONFIG_CRAMFS is not set 786# CONFIG_CRAMFS is not set
918# CONFIG_VXFS_FS is not set 787# CONFIG_VXFS_FS is not set
788# CONFIG_MINIX_FS is not set
789# CONFIG_OMFS_FS is not set
919# CONFIG_HPFS_FS is not set 790# CONFIG_HPFS_FS is not set
920# CONFIG_QNX4FS_FS is not set 791# CONFIG_QNX4FS_FS is not set
792# CONFIG_ROMFS_FS is not set
921# CONFIG_SYSV_FS is not set 793# CONFIG_SYSV_FS is not set
922# CONFIG_UFS_FS is not set 794# CONFIG_UFS_FS is not set
923 795CONFIG_NETWORK_FILESYSTEMS=y
924#
925# Network File Systems
926#
927CONFIG_NFS_FS=y 796CONFIG_NFS_FS=y
928# CONFIG_NFS_V3 is not set 797# CONFIG_NFS_V3 is not set
929# CONFIG_NFS_V4 is not set 798# CONFIG_NFS_V4 is not set
930# CONFIG_NFS_DIRECTIO is not set
931# CONFIG_NFSD is not set
932CONFIG_ROOT_NFS=y 799CONFIG_ROOT_NFS=y
800# CONFIG_NFSD is not set
933CONFIG_LOCKD=y 801CONFIG_LOCKD=y
934CONFIG_NFS_COMMON=y 802CONFIG_NFS_COMMON=y
935CONFIG_SUNRPC=y 803CONFIG_SUNRPC=y
804# CONFIG_SUNRPC_REGISTER_V4 is not set
936# CONFIG_RPCSEC_GSS_KRB5 is not set 805# CONFIG_RPCSEC_GSS_KRB5 is not set
937# CONFIG_RPCSEC_GSS_SPKM3 is not set 806# CONFIG_RPCSEC_GSS_SPKM3 is not set
938# CONFIG_SMB_FS is not set 807# CONFIG_SMB_FS is not set
@@ -940,7 +809,6 @@ CONFIG_SUNRPC=y
940# CONFIG_NCP_FS is not set 809# CONFIG_NCP_FS is not set
941# CONFIG_CODA_FS is not set 810# CONFIG_CODA_FS is not set
942# CONFIG_AFS_FS is not set 811# CONFIG_AFS_FS is not set
943# CONFIG_9P_FS is not set
944 812
945# 813#
946# Partition Types 814# Partition Types
@@ -958,49 +826,126 @@ CONFIG_PARTITION_ADVANCED=y
958# CONFIG_SUN_PARTITION is not set 826# CONFIG_SUN_PARTITION is not set
959# CONFIG_KARMA_PARTITION is not set 827# CONFIG_KARMA_PARTITION is not set
960# CONFIG_EFI_PARTITION is not set 828# CONFIG_EFI_PARTITION is not set
961 829# CONFIG_SYSV68_PARTITION is not set
962#
963# Native Language Support
964#
965# CONFIG_NLS is not set 830# CONFIG_NLS is not set
966
967#
968# Distributed Lock Manager
969#
970# CONFIG_DLM is not set 831# CONFIG_DLM is not set
971 832
972# 833#
973# Profiling support
974#
975# CONFIG_PROFILING is not set
976
977#
978# Kernel hacking 834# Kernel hacking
979# 835#
980CONFIG_TRACE_IRQFLAGS_SUPPORT=y 836CONFIG_TRACE_IRQFLAGS_SUPPORT=y
981# CONFIG_PRINTK_TIME is not set 837# CONFIG_PRINTK_TIME is not set
838CONFIG_ENABLE_WARN_DEPRECATED=y
982# CONFIG_ENABLE_MUST_CHECK is not set 839# CONFIG_ENABLE_MUST_CHECK is not set
840CONFIG_FRAME_WARN=1024
983# CONFIG_MAGIC_SYSRQ is not set 841# CONFIG_MAGIC_SYSRQ is not set
984# CONFIG_UNUSED_SYMBOLS is not set 842# CONFIG_UNUSED_SYMBOLS is not set
985# CONFIG_DEBUG_FS is not set 843# CONFIG_DEBUG_FS is not set
986# CONFIG_HEADERS_CHECK is not set 844# CONFIG_HEADERS_CHECK is not set
987# CONFIG_DEBUG_KERNEL is not set 845# CONFIG_DEBUG_KERNEL is not set
988CONFIG_LOG_BUF_SHIFT=14
989# CONFIG_DEBUG_BUGVERBOSE is not set 846# CONFIG_DEBUG_BUGVERBOSE is not set
847# CONFIG_DEBUG_MEMORY_INIT is not set
848# CONFIG_RCU_CPU_STALL_DETECTOR is not set
849# CONFIG_LATENCYTOP is not set
850CONFIG_NOP_TRACER=y
851CONFIG_HAVE_FTRACE=y
852# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
853# CONFIG_SAMPLES is not set
990# CONFIG_SH_STANDARD_BIOS is not set 854# CONFIG_SH_STANDARD_BIOS is not set
991# CONFIG_EARLY_SCIF_CONSOLE is not set 855# CONFIG_EARLY_SCIF_CONSOLE is not set
992# CONFIG_KGDB is not set 856# CONFIG_SH_KGDB is not set
993 857
994# 858#
995# Security options 859# Security options
996# 860#
997# CONFIG_KEYS is not set 861# CONFIG_KEYS is not set
998# CONFIG_SECURITY is not set 862# CONFIG_SECURITY is not set
863# CONFIG_SECURITYFS is not set
864# CONFIG_SECURITY_FILE_CAPABILITIES is not set
865CONFIG_CRYPTO=y
866
867#
868# Crypto core or helper
869#
870# CONFIG_CRYPTO_FIPS is not set
871# CONFIG_CRYPTO_MANAGER is not set
872# CONFIG_CRYPTO_GF128MUL is not set
873# CONFIG_CRYPTO_NULL is not set
874# CONFIG_CRYPTO_CRYPTD is not set
875# CONFIG_CRYPTO_AUTHENC is not set
876# CONFIG_CRYPTO_TEST is not set
877
878#
879# Authenticated Encryption with Associated Data
880#
881# CONFIG_CRYPTO_CCM is not set
882# CONFIG_CRYPTO_GCM is not set
883# CONFIG_CRYPTO_SEQIV is not set
884
885#
886# Block modes
887#
888# CONFIG_CRYPTO_CBC is not set
889# CONFIG_CRYPTO_CTR is not set
890# CONFIG_CRYPTO_CTS is not set
891# CONFIG_CRYPTO_ECB is not set
892# CONFIG_CRYPTO_LRW is not set
893# CONFIG_CRYPTO_PCBC is not set
894# CONFIG_CRYPTO_XTS is not set
895
896#
897# Hash modes
898#
899# CONFIG_CRYPTO_HMAC is not set
900# CONFIG_CRYPTO_XCBC is not set
901
902#
903# Digest
904#
905# CONFIG_CRYPTO_CRC32C is not set
906# CONFIG_CRYPTO_MD4 is not set
907# CONFIG_CRYPTO_MD5 is not set
908# CONFIG_CRYPTO_MICHAEL_MIC is not set
909# CONFIG_CRYPTO_RMD128 is not set
910# CONFIG_CRYPTO_RMD160 is not set
911# CONFIG_CRYPTO_RMD256 is not set
912# CONFIG_CRYPTO_RMD320 is not set
913# CONFIG_CRYPTO_SHA1 is not set
914# CONFIG_CRYPTO_SHA256 is not set
915# CONFIG_CRYPTO_SHA512 is not set
916# CONFIG_CRYPTO_TGR192 is not set
917# CONFIG_CRYPTO_WP512 is not set
918
919#
920# Ciphers
921#
922# CONFIG_CRYPTO_AES is not set
923# CONFIG_CRYPTO_ANUBIS is not set
924# CONFIG_CRYPTO_ARC4 is not set
925# CONFIG_CRYPTO_BLOWFISH is not set
926# CONFIG_CRYPTO_CAMELLIA is not set
927# CONFIG_CRYPTO_CAST5 is not set
928# CONFIG_CRYPTO_CAST6 is not set
929# CONFIG_CRYPTO_DES is not set
930# CONFIG_CRYPTO_FCRYPT is not set
931# CONFIG_CRYPTO_KHAZAD is not set
932# CONFIG_CRYPTO_SALSA20 is not set
933# CONFIG_CRYPTO_SEED is not set
934# CONFIG_CRYPTO_SERPENT is not set
935# CONFIG_CRYPTO_TEA is not set
936# CONFIG_CRYPTO_TWOFISH is not set
937
938#
939# Compression
940#
941# CONFIG_CRYPTO_DEFLATE is not set
942# CONFIG_CRYPTO_LZO is not set
999 943
1000# 944#
1001# Cryptographic options 945# Random Number Generation
1002# 946#
1003# CONFIG_CRYPTO is not set 947# CONFIG_CRYPTO_ANSI_CPRNG is not set
948CONFIG_CRYPTO_HW=y
1004 949
1005# 950#
1006# Library routines 951# Library routines
@@ -1008,9 +953,14 @@ CONFIG_LOG_BUF_SHIFT=14
1008CONFIG_BITREVERSE=y 953CONFIG_BITREVERSE=y
1009# CONFIG_CRC_CCITT is not set 954# CONFIG_CRC_CCITT is not set
1010# CONFIG_CRC16 is not set 955# CONFIG_CRC16 is not set
956# CONFIG_CRC_T10DIF is not set
957# CONFIG_CRC_ITU_T is not set
1011CONFIG_CRC32=y 958CONFIG_CRC32=y
959# CONFIG_CRC7 is not set
1012# CONFIG_LIBCRC32C is not set 960# CONFIG_LIBCRC32C is not set
1013CONFIG_ZLIB_INFLATE=y 961CONFIG_ZLIB_INFLATE=y
1014CONFIG_ZLIB_DEFLATE=y 962CONFIG_ZLIB_DEFLATE=y
1015CONFIG_PLIST=y 963CONFIG_PLIST=y
1016CONFIG_IOMAP_COPY=y 964CONFIG_HAS_IOMEM=y
965CONFIG_HAS_IOPORT=y
966CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/se7751_defconfig b/arch/sh/configs/se7751_defconfig
index a9095593f8f3..d99a6bdf410f 100644
--- a/arch/sh/configs/se7751_defconfig
+++ b/arch/sh/configs/se7751_defconfig
@@ -1,40 +1,54 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.27
4# Tue Oct 3 12:10:12 2006 4# Wed Oct 22 19:21:12 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
11CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 26
15# 27#
16# Code maturity level options 28# General setup
17# 29#
18CONFIG_EXPERIMENTAL=y 30CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y 31CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 32CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION="" 33CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y 34CONFIG_LOCALVERSION_AUTO=y
27CONFIG_SWAP=y 35CONFIG_SWAP=y
28CONFIG_SYSVIPC=y 36CONFIG_SYSVIPC=y
29# CONFIG_IPC_NS is not set 37CONFIG_SYSVIPC_SYSCTL=y
30# CONFIG_POSIX_MQUEUE is not set 38# CONFIG_POSIX_MQUEUE is not set
31CONFIG_BSD_PROCESS_ACCT=y 39CONFIG_BSD_PROCESS_ACCT=y
32# CONFIG_BSD_PROCESS_ACCT_V3 is not set 40# CONFIG_BSD_PROCESS_ACCT_V3 is not set
33# CONFIG_TASKSTATS is not set 41# CONFIG_TASKSTATS is not set
34# CONFIG_UTS_NS is not set
35# CONFIG_AUDIT is not set 42# CONFIG_AUDIT is not set
36# CONFIG_IKCONFIG is not set 43# CONFIG_IKCONFIG is not set
44CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_CGROUPS is not set
46# CONFIG_GROUP_SCHED is not set
47CONFIG_SYSFS_DEPRECATED=y
48CONFIG_SYSFS_DEPRECATED_V2=y
37# CONFIG_RELAY is not set 49# CONFIG_RELAY is not set
50# CONFIG_NAMESPACES is not set
51CONFIG_BLK_DEV_INITRD=y
38CONFIG_INITRAMFS_SOURCE="" 52CONFIG_INITRAMFS_SOURCE=""
39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 53# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
40CONFIG_SYSCTL=y 54CONFIG_SYSCTL=y
@@ -47,33 +61,47 @@ CONFIG_KALLSYMS=y
47CONFIG_PRINTK=y 61CONFIG_PRINTK=y
48CONFIG_BUG=y 62CONFIG_BUG=y
49CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
64CONFIG_COMPAT_BRK=y
50CONFIG_BASE_FULL=y 65CONFIG_BASE_FULL=y
51CONFIG_FUTEX=y 66CONFIG_FUTEX=y
67CONFIG_ANON_INODES=y
52CONFIG_EPOLL=y 68CONFIG_EPOLL=y
69CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y
53CONFIG_SHMEM=y 72CONFIG_SHMEM=y
54CONFIG_SLAB=y 73CONFIG_AIO=y
55CONFIG_VM_EVENT_COUNTERS=y 74CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
76CONFIG_SLAB=y
77# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y
82# CONFIG_KPROBES is not set
83CONFIG_HAVE_IOREMAP_PROT=y
84CONFIG_HAVE_KPROBES=y
85CONFIG_HAVE_KRETPROBES=y
86CONFIG_HAVE_ARCH_TRACEHOOK=y
87CONFIG_HAVE_CLK=y
88CONFIG_HAVE_GENERIC_DMA_COHERENT=y
89CONFIG_SLABINFO=y
56CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
57# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
58CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
59# CONFIG_SLOB is not set
60
61#
62# Loadable module support
63#
64CONFIG_MODULES=y 93CONFIG_MODULES=y
94# CONFIG_MODULE_FORCE_LOAD is not set
65# CONFIG_MODULE_UNLOAD is not set 95# CONFIG_MODULE_UNLOAD is not set
66# CONFIG_MODVERSIONS is not set 96# CONFIG_MODVERSIONS is not set
67# CONFIG_MODULE_SRCVERSION_ALL is not set 97# CONFIG_MODULE_SRCVERSION_ALL is not set
68# CONFIG_KMOD is not set 98CONFIG_KMOD=y
69
70#
71# Block layer
72#
73CONFIG_BLOCK=y 99CONFIG_BLOCK=y
74# CONFIG_LBD is not set 100# CONFIG_LBD is not set
75# CONFIG_BLK_DEV_IO_TRACE is not set 101# CONFIG_BLK_DEV_IO_TRACE is not set
76# CONFIG_LSF is not set 102# CONFIG_LSF is not set
103# CONFIG_BLK_DEV_BSG is not set
104# CONFIG_BLK_DEV_INTEGRITY is not set
77 105
78# 106#
79# IO Schedulers 107# IO Schedulers
@@ -87,60 +115,27 @@ CONFIG_DEFAULT_AS=y
87# CONFIG_DEFAULT_CFQ is not set 115# CONFIG_DEFAULT_CFQ is not set
88# CONFIG_DEFAULT_NOOP is not set 116# CONFIG_DEFAULT_NOOP is not set
89CONFIG_DEFAULT_IOSCHED="anticipatory" 117CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y
119# CONFIG_FREEZER is not set
90 120
91# 121#
92# System type 122# System type
93# 123#
94CONFIG_SOLUTION_ENGINE=y
95# CONFIG_SH_SOLUTION_ENGINE is not set
96CONFIG_SH_7751_SOLUTION_ENGINE=y
97# CONFIG_SH_7300_SOLUTION_ENGINE is not set
98# CONFIG_SH_7343_SOLUTION_ENGINE is not set
99# CONFIG_SH_73180_SOLUTION_ENGINE is not set
100# CONFIG_SH_7751_SYSTEMH is not set
101# CONFIG_SH_HP6XX is not set
102# CONFIG_SH_EC3104 is not set
103# CONFIG_SH_SATURN is not set
104# CONFIG_SH_DREAMCAST is not set
105# CONFIG_SH_BIGSUR is not set
106# CONFIG_SH_MPC1211 is not set
107# CONFIG_SH_SH03 is not set
108# CONFIG_SH_SECUREEDGE5410 is not set
109# CONFIG_SH_HS7751RVOIP is not set
110# CONFIG_SH_7710VOIPGW is not set
111# CONFIG_SH_RTS7751R2D is not set
112# CONFIG_SH_R7780RP is not set
113# CONFIG_SH_EDOSK7705 is not set
114# CONFIG_SH_SH4202_MICRODEV is not set
115# CONFIG_SH_LANDISK is not set
116# CONFIG_SH_TITAN is not set
117# CONFIG_SH_SHMIN is not set
118# CONFIG_SH_UNKNOWN is not set
119
120#
121# Processor selection
122#
123CONFIG_CPU_SH4=y 124CONFIG_CPU_SH4=y
124 125# CONFIG_CPU_SUBTYPE_SH7619 is not set
125# 126# CONFIG_CPU_SUBTYPE_SH7203 is not set
126# SH-2 Processor Support 127# CONFIG_CPU_SUBTYPE_SH7206 is not set
127# 128# CONFIG_CPU_SUBTYPE_SH7263 is not set
128# CONFIG_CPU_SUBTYPE_SH7604 is not set 129# CONFIG_CPU_SUBTYPE_MXG is not set
129
130#
131# SH-3 Processor Support
132#
133# CONFIG_CPU_SUBTYPE_SH7300 is not set
134# CONFIG_CPU_SUBTYPE_SH7705 is not set 130# CONFIG_CPU_SUBTYPE_SH7705 is not set
135# CONFIG_CPU_SUBTYPE_SH7706 is not set 131# CONFIG_CPU_SUBTYPE_SH7706 is not set
136# CONFIG_CPU_SUBTYPE_SH7707 is not set 132# CONFIG_CPU_SUBTYPE_SH7707 is not set
137# CONFIG_CPU_SUBTYPE_SH7708 is not set 133# CONFIG_CPU_SUBTYPE_SH7708 is not set
138# CONFIG_CPU_SUBTYPE_SH7709 is not set 134# CONFIG_CPU_SUBTYPE_SH7709 is not set
139# CONFIG_CPU_SUBTYPE_SH7710 is not set 135# CONFIG_CPU_SUBTYPE_SH7710 is not set
140 136# CONFIG_CPU_SUBTYPE_SH7712 is not set
141# 137# CONFIG_CPU_SUBTYPE_SH7720 is not set
142# SH-4 Processor Support 138# CONFIG_CPU_SUBTYPE_SH7721 is not set
143#
144# CONFIG_CPU_SUBTYPE_SH7750 is not set 139# CONFIG_CPU_SUBTYPE_SH7750 is not set
145# CONFIG_CPU_SUBTYPE_SH7091 is not set 140# CONFIG_CPU_SUBTYPE_SH7091 is not set
146# CONFIG_CPU_SUBTYPE_SH7750R is not set 141# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -149,65 +144,91 @@ CONFIG_CPU_SUBTYPE_SH7751=y
149# CONFIG_CPU_SUBTYPE_SH7751R is not set 144# CONFIG_CPU_SUBTYPE_SH7751R is not set
150# CONFIG_CPU_SUBTYPE_SH7760 is not set 145# CONFIG_CPU_SUBTYPE_SH7760 is not set
151# CONFIG_CPU_SUBTYPE_SH4_202 is not set 146# CONFIG_CPU_SUBTYPE_SH4_202 is not set
152 147# CONFIG_CPU_SUBTYPE_SH7723 is not set
153# 148# CONFIG_CPU_SUBTYPE_SH7763 is not set
154# ST40 Processor Support
155#
156# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
157# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
158
159#
160# SH-4A Processor Support
161#
162# CONFIG_CPU_SUBTYPE_SH7770 is not set 149# CONFIG_CPU_SUBTYPE_SH7770 is not set
163# CONFIG_CPU_SUBTYPE_SH7780 is not set 150# CONFIG_CPU_SUBTYPE_SH7780 is not set
164 151# CONFIG_CPU_SUBTYPE_SH7785 is not set
165# 152# CONFIG_CPU_SUBTYPE_SHX3 is not set
166# SH4AL-DSP Processor Support
167#
168# CONFIG_CPU_SUBTYPE_SH73180 is not set
169# CONFIG_CPU_SUBTYPE_SH7343 is not set 153# CONFIG_CPU_SUBTYPE_SH7343 is not set
154# CONFIG_CPU_SUBTYPE_SH7722 is not set
155# CONFIG_CPU_SUBTYPE_SH7366 is not set
156# CONFIG_CPU_SUBTYPE_SH5_101 is not set
157# CONFIG_CPU_SUBTYPE_SH5_103 is not set
170 158
171# 159#
172# Memory management options 160# Memory management options
173# 161#
162CONFIG_QUICKLIST=y
174CONFIG_MMU=y 163CONFIG_MMU=y
175CONFIG_PAGE_OFFSET=0x80000000 164CONFIG_PAGE_OFFSET=0x80000000
176CONFIG_MEMORY_START=0x0c000000 165CONFIG_MEMORY_START=0x0c000000
177CONFIG_MEMORY_SIZE=0x04000000 166CONFIG_MEMORY_SIZE=0x04000000
167CONFIG_29BIT=y
178CONFIG_VSYSCALL=y 168CONFIG_VSYSCALL=y
169CONFIG_ARCH_FLATMEM_ENABLE=y
170CONFIG_ARCH_SPARSEMEM_ENABLE=y
171CONFIG_ARCH_SPARSEMEM_DEFAULT=y
172CONFIG_MAX_ACTIVE_REGIONS=1
173CONFIG_ARCH_POPULATES_NODE_MAP=y
174CONFIG_ARCH_SELECT_MEMORY_MODEL=y
175CONFIG_PAGE_SIZE_4KB=y
176# CONFIG_PAGE_SIZE_8KB is not set
177# CONFIG_PAGE_SIZE_16KB is not set
178# CONFIG_PAGE_SIZE_64KB is not set
179CONFIG_ENTRY_OFFSET=0x00001000
179CONFIG_SELECT_MEMORY_MODEL=y 180CONFIG_SELECT_MEMORY_MODEL=y
180CONFIG_FLATMEM_MANUAL=y 181CONFIG_FLATMEM_MANUAL=y
181# CONFIG_DISCONTIGMEM_MANUAL is not set 182# CONFIG_DISCONTIGMEM_MANUAL is not set
182# CONFIG_SPARSEMEM_MANUAL is not set 183# CONFIG_SPARSEMEM_MANUAL is not set
183CONFIG_FLATMEM=y 184CONFIG_FLATMEM=y
184CONFIG_FLAT_NODE_MEM_MAP=y 185CONFIG_FLAT_NODE_MEM_MAP=y
185# CONFIG_SPARSEMEM_STATIC is not set 186CONFIG_SPARSEMEM_STATIC=y
187CONFIG_PAGEFLAGS_EXTENDED=y
186CONFIG_SPLIT_PTLOCK_CPUS=4 188CONFIG_SPLIT_PTLOCK_CPUS=4
187# CONFIG_RESOURCES_64BIT is not set 189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0
192CONFIG_NR_QUICK=2
193CONFIG_UNEVICTABLE_LRU=y
188 194
189# 195#
190# Cache configuration 196# Cache configuration
191# 197#
192# CONFIG_SH_DIRECT_MAPPED is not set 198# CONFIG_SH_DIRECT_MAPPED is not set
193# CONFIG_SH_WRITETHROUGH is not set 199CONFIG_CACHE_WRITEBACK=y
194# CONFIG_SH_OCRAM is not set 200# CONFIG_CACHE_WRITETHROUGH is not set
201# CONFIG_CACHE_OFF is not set
195 202
196# 203#
197# Processor features 204# Processor features
198# 205#
199CONFIG_CPU_LITTLE_ENDIAN=y 206CONFIG_CPU_LITTLE_ENDIAN=y
207# CONFIG_CPU_BIG_ENDIAN is not set
200CONFIG_SH_FPU=y 208CONFIG_SH_FPU=y
201# CONFIG_SH_DSP is not set
202# CONFIG_SH_STORE_QUEUES is not set 209# CONFIG_SH_STORE_QUEUES is not set
203CONFIG_CPU_HAS_INTEVT=y 210CONFIG_CPU_HAS_INTEVT=y
211CONFIG_CPU_HAS_IPR_IRQ=y
204CONFIG_CPU_HAS_SR_RB=y 212CONFIG_CPU_HAS_SR_RB=y
213CONFIG_CPU_HAS_PTEA=y
214CONFIG_CPU_HAS_FPU=y
205 215
206# 216#
207# Timer support 217# Board support
218#
219CONFIG_SOLUTION_ENGINE=y
220CONFIG_SH_7751_SOLUTION_ENGINE=y
221# CONFIG_SH_SH03 is not set
222
223#
224# Timer and clock configuration
208# 225#
209CONFIG_SH_TMU=y 226CONFIG_SH_TMU=y
227CONFIG_SH_TIMER_IRQ=16
210CONFIG_SH_PCLK_FREQ=60000000 228CONFIG_SH_PCLK_FREQ=60000000
229# CONFIG_NO_HZ is not set
230# CONFIG_HIGH_RES_TIMERS is not set
231CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
211 232
212# 233#
213# CPU Frequency scaling 234# CPU Frequency scaling
@@ -222,21 +243,30 @@ CONFIG_SH_PCLK_FREQ=60000000
222# 243#
223# Companion Chips 244# Companion Chips
224# 245#
225# CONFIG_HD6446X_SERIES is not set 246
247#
248# Additional SuperH Device Drivers
249#
226CONFIG_HEARTBEAT=y 250CONFIG_HEARTBEAT=y
251# CONFIG_PUSH_SWITCH is not set
227 252
228# 253#
229# Kernel features 254# Kernel features
230# 255#
231# CONFIG_HZ_100 is not set 256# CONFIG_HZ_100 is not set
232CONFIG_HZ_250=y 257CONFIG_HZ_250=y
258# CONFIG_HZ_300 is not set
233# CONFIG_HZ_1000 is not set 259# CONFIG_HZ_1000 is not set
234CONFIG_HZ=250 260CONFIG_HZ=250
261# CONFIG_SCHED_HRTICK is not set
235# CONFIG_KEXEC is not set 262# CONFIG_KEXEC is not set
236# CONFIG_SMP is not set 263# CONFIG_CRASH_DUMP is not set
264# CONFIG_SECCOMP is not set
237CONFIG_PREEMPT_NONE=y 265CONFIG_PREEMPT_NONE=y
238# CONFIG_PREEMPT_VOLUNTARY is not set 266# CONFIG_PREEMPT_VOLUNTARY is not set
239# CONFIG_PREEMPT is not set 267# CONFIG_PREEMPT is not set
268CONFIG_GUSA=y
269# CONFIG_GUSA_RB is not set
240 270
241# 271#
242# Boot options 272# Boot options
@@ -250,43 +280,29 @@ CONFIG_CMDLINE="console=ttySC1,38400"
250# 280#
251# Bus options 281# Bus options
252# 282#
253# CONFIG_PCI is not set 283# CONFIG_CF_ENABLER is not set
254 284# CONFIG_ARCH_SUPPORTS_MSI is not set
255#
256# PCCARD (PCMCIA/CardBus) support
257#
258
259#
260# PCI Hotplug Support
261#
262 285
263# 286#
264# Executable file formats 287# Executable file formats
265# 288#
266CONFIG_BINFMT_ELF=y 289CONFIG_BINFMT_ELF=y
267# CONFIG_BINFMT_FLAT is not set 290# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
291# CONFIG_HAVE_AOUT is not set
268# CONFIG_BINFMT_MISC is not set 292# CONFIG_BINFMT_MISC is not set
269
270#
271# Power management options (EXPERIMENTAL)
272#
273# CONFIG_PM is not set
274
275#
276# Networking
277#
278CONFIG_NET=y 293CONFIG_NET=y
279 294
280# 295#
281# Networking options 296# Networking options
282# 297#
283# CONFIG_NETDEBUG is not set
284CONFIG_PACKET=y 298CONFIG_PACKET=y
285# CONFIG_PACKET_MMAP is not set 299# CONFIG_PACKET_MMAP is not set
286CONFIG_UNIX=y 300CONFIG_UNIX=y
287CONFIG_XFRM=y 301CONFIG_XFRM=y
288# CONFIG_XFRM_USER is not set 302# CONFIG_XFRM_USER is not set
289# CONFIG_XFRM_SUB_POLICY is not set 303# CONFIG_XFRM_SUB_POLICY is not set
304# CONFIG_XFRM_MIGRATE is not set
305# CONFIG_XFRM_STATISTICS is not set
290# CONFIG_NET_KEY is not set 306# CONFIG_NET_KEY is not set
291CONFIG_INET=y 307CONFIG_INET=y
292CONFIG_IP_MULTICAST=y 308CONFIG_IP_MULTICAST=y
@@ -308,52 +324,42 @@ CONFIG_IP_PNP_RARP=y
308# CONFIG_INET_TUNNEL is not set 324# CONFIG_INET_TUNNEL is not set
309CONFIG_INET_XFRM_MODE_TRANSPORT=y 325CONFIG_INET_XFRM_MODE_TRANSPORT=y
310CONFIG_INET_XFRM_MODE_TUNNEL=y 326CONFIG_INET_XFRM_MODE_TUNNEL=y
327CONFIG_INET_XFRM_MODE_BEET=y
328# CONFIG_INET_LRO is not set
311CONFIG_INET_DIAG=y 329CONFIG_INET_DIAG=y
312CONFIG_INET_TCP_DIAG=y 330CONFIG_INET_TCP_DIAG=y
313# CONFIG_TCP_CONG_ADVANCED is not set 331# CONFIG_TCP_CONG_ADVANCED is not set
314CONFIG_TCP_CONG_CUBIC=y 332CONFIG_TCP_CONG_CUBIC=y
315CONFIG_DEFAULT_TCP_CONG="cubic" 333CONFIG_DEFAULT_TCP_CONG="cubic"
316 334# CONFIG_TCP_MD5SIG is not set
317#
318# IP: Virtual Server Configuration
319#
320# CONFIG_IP_VS is not set
321# CONFIG_IPV6 is not set 335# CONFIG_IPV6 is not set
322# CONFIG_INET6_XFRM_TUNNEL is not set
323# CONFIG_INET6_TUNNEL is not set
324# CONFIG_NETWORK_SECMARK is not set 336# CONFIG_NETWORK_SECMARK is not set
325CONFIG_NETFILTER=y 337CONFIG_NETFILTER=y
326CONFIG_NETFILTER_DEBUG=y 338CONFIG_NETFILTER_DEBUG=y
339CONFIG_NETFILTER_ADVANCED=y
327 340
328# 341#
329# Core Netfilter Configuration 342# Core Netfilter Configuration
330# 343#
331# CONFIG_NETFILTER_NETLINK is not set 344# CONFIG_NETFILTER_NETLINK_QUEUE is not set
345# CONFIG_NETFILTER_NETLINK_LOG is not set
332# CONFIG_NF_CONNTRACK is not set 346# CONFIG_NF_CONNTRACK is not set
333# CONFIG_NETFILTER_XTABLES is not set 347# CONFIG_NETFILTER_XTABLES is not set
348# CONFIG_IP_VS is not set
334 349
335# 350#
336# IP: Netfilter Configuration 351# IP: Netfilter Configuration
337# 352#
338# CONFIG_IP_NF_CONNTRACK is not set 353# CONFIG_NF_DEFRAG_IPV4 is not set
339CONFIG_IP_NF_QUEUE=y 354CONFIG_IP_NF_QUEUE=y
340 355# CONFIG_IP_NF_IPTABLES is not set
341# 356# CONFIG_IP_NF_ARPTABLES is not set
342# DCCP Configuration (EXPERIMENTAL)
343#
344# CONFIG_IP_DCCP is not set 357# CONFIG_IP_DCCP is not set
345
346#
347# SCTP Configuration (EXPERIMENTAL)
348#
349# CONFIG_IP_SCTP is not set 358# CONFIG_IP_SCTP is not set
350
351#
352# TIPC Configuration (EXPERIMENTAL)
353#
354# CONFIG_TIPC is not set 359# CONFIG_TIPC is not set
355# CONFIG_ATM is not set 360# CONFIG_ATM is not set
356# CONFIG_BRIDGE is not set 361# CONFIG_BRIDGE is not set
362# CONFIG_NET_DSA is not set
357# CONFIG_VLAN_8021Q is not set 363# CONFIG_VLAN_8021Q is not set
358# CONFIG_DECNET is not set 364# CONFIG_DECNET is not set
359# CONFIG_LLC2 is not set 365# CONFIG_LLC2 is not set
@@ -363,10 +369,6 @@ CONFIG_IP_NF_QUEUE=y
363# CONFIG_LAPB is not set 369# CONFIG_LAPB is not set
364# CONFIG_ECONET is not set 370# CONFIG_ECONET is not set
365# CONFIG_WAN_ROUTER is not set 371# CONFIG_WAN_ROUTER is not set
366
367#
368# QoS and/or fair queueing
369#
370# CONFIG_NET_SCHED is not set 372# CONFIG_NET_SCHED is not set
371 373
372# 374#
@@ -374,9 +376,19 @@ CONFIG_IP_NF_QUEUE=y
374# 376#
375# CONFIG_NET_PKTGEN is not set 377# CONFIG_NET_PKTGEN is not set
376# CONFIG_HAMRADIO is not set 378# CONFIG_HAMRADIO is not set
379# CONFIG_CAN is not set
377# CONFIG_IRDA is not set 380# CONFIG_IRDA is not set
378# CONFIG_BT is not set 381# CONFIG_BT is not set
382# CONFIG_AF_RXRPC is not set
383# CONFIG_PHONET is not set
384CONFIG_WIRELESS=y
385# CONFIG_CFG80211 is not set
386# CONFIG_WIRELESS_OLD_REGULATORY is not set
387# CONFIG_WIRELESS_EXT is not set
388# CONFIG_MAC80211 is not set
379# CONFIG_IEEE80211 is not set 389# CONFIG_IEEE80211 is not set
390# CONFIG_RFKILL is not set
391# CONFIG_NET_9P is not set
380 392
381# 393#
382# Device Drivers 394# Device Drivers
@@ -388,32 +400,27 @@ CONFIG_IP_NF_QUEUE=y
388CONFIG_STANDALONE=y 400CONFIG_STANDALONE=y
389CONFIG_PREVENT_FIRMWARE_BUILD=y 401CONFIG_PREVENT_FIRMWARE_BUILD=y
390# CONFIG_SYS_HYPERVISOR is not set 402# CONFIG_SYS_HYPERVISOR is not set
391
392#
393# Connector - unified userspace <-> kernelspace linker
394#
395# CONFIG_CONNECTOR is not set 403# CONFIG_CONNECTOR is not set
396
397#
398# Memory Technology Devices (MTD)
399#
400CONFIG_MTD=y 404CONFIG_MTD=y
401# CONFIG_MTD_DEBUG is not set 405# CONFIG_MTD_DEBUG is not set
402# CONFIG_MTD_CONCAT is not set 406# CONFIG_MTD_CONCAT is not set
403CONFIG_MTD_PARTITIONS=y 407CONFIG_MTD_PARTITIONS=y
404# CONFIG_MTD_REDBOOT_PARTS is not set 408# CONFIG_MTD_REDBOOT_PARTS is not set
405# CONFIG_MTD_CMDLINE_PARTS is not set 409# CONFIG_MTD_CMDLINE_PARTS is not set
410# CONFIG_MTD_AR7_PARTS is not set
406 411
407# 412#
408# User Modules And Translation Layers 413# User Modules And Translation Layers
409# 414#
410# CONFIG_MTD_CHAR is not set 415# CONFIG_MTD_CHAR is not set
416CONFIG_MTD_BLKDEVS=y
411CONFIG_MTD_BLOCK=y 417CONFIG_MTD_BLOCK=y
412# CONFIG_FTL is not set 418# CONFIG_FTL is not set
413# CONFIG_NFTL is not set 419# CONFIG_NFTL is not set
414# CONFIG_INFTL is not set 420# CONFIG_INFTL is not set
415# CONFIG_RFD_FTL is not set 421# CONFIG_RFD_FTL is not set
416# CONFIG_SSFDC is not set 422# CONFIG_SSFDC is not set
423# CONFIG_MTD_OOPS is not set
417 424
418# 425#
419# RAM/ROM/Flash chip drivers 426# RAM/ROM/Flash chip drivers
@@ -439,7 +446,6 @@ CONFIG_MTD_CFI_UTIL=y
439CONFIG_MTD_RAM=y 446CONFIG_MTD_RAM=y
440# CONFIG_MTD_ROM is not set 447# CONFIG_MTD_ROM is not set
441# CONFIG_MTD_ABSENT is not set 448# CONFIG_MTD_ABSENT is not set
442# CONFIG_MTD_OBSOLETE_CHIPS is not set
443 449
444# 450#
445# Mapping drivers for chip access 451# Mapping drivers for chip access
@@ -462,43 +468,29 @@ CONFIG_MTD_RAM=y
462# CONFIG_MTD_DOC2000 is not set 468# CONFIG_MTD_DOC2000 is not set
463# CONFIG_MTD_DOC2001 is not set 469# CONFIG_MTD_DOC2001 is not set
464# CONFIG_MTD_DOC2001PLUS is not set 470# CONFIG_MTD_DOC2001PLUS is not set
465
466#
467# NAND Flash Device Drivers
468#
469# CONFIG_MTD_NAND is not set 471# CONFIG_MTD_NAND is not set
470
471#
472# OneNAND Flash Device Drivers
473#
474# CONFIG_MTD_ONENAND is not set 472# CONFIG_MTD_ONENAND is not set
475 473
476# 474#
477# Parallel port support 475# UBI - Unsorted block images
478# 476#
477# CONFIG_MTD_UBI is not set
479# CONFIG_PARPORT is not set 478# CONFIG_PARPORT is not set
480 479CONFIG_BLK_DEV=y
481#
482# Plug and Play support
483#
484
485#
486# Block devices
487#
488# CONFIG_BLK_DEV_COW_COMMON is not set 480# CONFIG_BLK_DEV_COW_COMMON is not set
489# CONFIG_BLK_DEV_LOOP is not set 481# CONFIG_BLK_DEV_LOOP is not set
490# CONFIG_BLK_DEV_NBD is not set 482# CONFIG_BLK_DEV_NBD is not set
491CONFIG_BLK_DEV_RAM=y 483CONFIG_BLK_DEV_RAM=y
492CONFIG_BLK_DEV_RAM_COUNT=16 484CONFIG_BLK_DEV_RAM_COUNT=16
493CONFIG_BLK_DEV_RAM_SIZE=4096 485CONFIG_BLK_DEV_RAM_SIZE=4096
494CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 486# CONFIG_BLK_DEV_XIP is not set
495CONFIG_BLK_DEV_INITRD=y
496# CONFIG_CDROM_PKTCDVD is not set 487# CONFIG_CDROM_PKTCDVD is not set
497# CONFIG_ATA_OVER_ETH is not set 488# CONFIG_ATA_OVER_ETH is not set
498 489# CONFIG_BLK_DEV_HD is not set
499# 490CONFIG_MISC_DEVICES=y
500# ATA/ATAPI/MFM/RLL support 491# CONFIG_EEPROM_93CX6 is not set
501# 492# CONFIG_ENCLOSURE_SERVICES is not set
493CONFIG_HAVE_IDE=y
502# CONFIG_IDE is not set 494# CONFIG_IDE is not set
503 495
504# 496#
@@ -506,89 +498,48 @@ CONFIG_BLK_DEV_INITRD=y
506# 498#
507# CONFIG_RAID_ATTRS is not set 499# CONFIG_RAID_ATTRS is not set
508# CONFIG_SCSI is not set 500# CONFIG_SCSI is not set
501# CONFIG_SCSI_DMA is not set
509# CONFIG_SCSI_NETLINK is not set 502# CONFIG_SCSI_NETLINK is not set
510
511#
512# Serial ATA (prod) and Parallel ATA (experimental) drivers
513#
514# CONFIG_ATA is not set 503# CONFIG_ATA is not set
515
516#
517# Multi-device support (RAID and LVM)
518#
519# CONFIG_MD is not set 504# CONFIG_MD is not set
520
521#
522# Fusion MPT device support
523#
524# CONFIG_FUSION is not set
525
526#
527# IEEE 1394 (FireWire) support
528#
529
530#
531# I2O device support
532#
533
534#
535# Network device support
536#
537CONFIG_NETDEVICES=y 505CONFIG_NETDEVICES=y
538# CONFIG_DUMMY is not set 506# CONFIG_DUMMY is not set
539# CONFIG_BONDING is not set 507# CONFIG_BONDING is not set
508# CONFIG_MACVLAN is not set
540# CONFIG_EQUALIZER is not set 509# CONFIG_EQUALIZER is not set
541# CONFIG_TUN is not set 510# CONFIG_TUN is not set
542 511# CONFIG_VETH is not set
543#
544# PHY device support
545#
546# CONFIG_PHYLIB is not set 512# CONFIG_PHYLIB is not set
547
548#
549# Ethernet (10 or 100Mbit)
550#
551CONFIG_NET_ETHERNET=y 513CONFIG_NET_ETHERNET=y
552CONFIG_MII=y 514CONFIG_MII=y
515# CONFIG_AX88796 is not set
553# CONFIG_STNIC is not set 516# CONFIG_STNIC is not set
554# CONFIG_SMC91X is not set 517# CONFIG_SMC91X is not set
555 518# CONFIG_SMC911X is not set
556# 519# CONFIG_IBM_NEW_EMAC_ZMII is not set
557# Ethernet (1000 Mbit) 520# CONFIG_IBM_NEW_EMAC_RGMII is not set
558# 521# CONFIG_IBM_NEW_EMAC_TAH is not set
559 522# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
560# 523# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
561# Ethernet (10000 Mbit) 524# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
562# 525# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
563 526# CONFIG_B44 is not set
564# 527CONFIG_NETDEV_1000=y
565# Token Ring devices 528CONFIG_NETDEV_10000=y
566# 529
567 530#
568# 531# Wireless LAN
569# Wireless LAN (non-hamradio) 532#
570# 533# CONFIG_WLAN_PRE80211 is not set
571# CONFIG_NET_RADIO is not set 534# CONFIG_WLAN_80211 is not set
572 535# CONFIG_IWLWIFI_LEDS is not set
573#
574# Wan interfaces
575#
576# CONFIG_WAN is not set 536# CONFIG_WAN is not set
577# CONFIG_PPP is not set 537# CONFIG_PPP is not set
578# CONFIG_SLIP is not set 538# CONFIG_SLIP is not set
579# CONFIG_SHAPER is not set
580# CONFIG_NETCONSOLE is not set 539# CONFIG_NETCONSOLE is not set
581# CONFIG_NETPOLL is not set 540# CONFIG_NETPOLL is not set
582# CONFIG_NET_POLL_CONTROLLER is not set 541# CONFIG_NET_POLL_CONTROLLER is not set
583
584#
585# ISDN subsystem
586#
587# CONFIG_ISDN is not set 542# CONFIG_ISDN is not set
588
589#
590# Telephony Support
591#
592# CONFIG_PHONE is not set 543# CONFIG_PHONE is not set
593 544
594# 545#
@@ -606,6 +557,7 @@ CONFIG_MII=y
606# Character devices 557# Character devices
607# 558#
608# CONFIG_VT is not set 559# CONFIG_VT is not set
560CONFIG_DEVKMEM=y
609# CONFIG_SERIAL_NONSTANDARD is not set 561# CONFIG_SERIAL_NONSTANDARD is not set
610 562
611# 563#
@@ -620,150 +572,107 @@ CONFIG_MII=y
620CONFIG_UNIX98_PTYS=y 572CONFIG_UNIX98_PTYS=y
621CONFIG_LEGACY_PTYS=y 573CONFIG_LEGACY_PTYS=y
622CONFIG_LEGACY_PTY_COUNT=256 574CONFIG_LEGACY_PTY_COUNT=256
623
624#
625# IPMI
626#
627# CONFIG_IPMI_HANDLER is not set 575# CONFIG_IPMI_HANDLER is not set
628
629#
630# Watchdog Cards
631#
632CONFIG_WATCHDOG=y
633# CONFIG_WATCHDOG_NOWAYOUT is not set
634
635#
636# Watchdog Device Drivers
637#
638# CONFIG_SOFT_WATCHDOG is not set
639# CONFIG_SH_WDT is not set
640CONFIG_HW_RANDOM=y 576CONFIG_HW_RANDOM=y
641# CONFIG_GEN_RTC is not set
642# CONFIG_DTLK is not set
643# CONFIG_R3964 is not set 577# CONFIG_R3964 is not set
644
645#
646# Ftape, the floppy tape device driver
647#
648# CONFIG_RAW_DRIVER is not set 578# CONFIG_RAW_DRIVER is not set
649
650#
651# TPM devices
652#
653# CONFIG_TCG_TPM is not set 579# CONFIG_TCG_TPM is not set
654# CONFIG_TELCLOCK is not set
655
656#
657# I2C support
658#
659# CONFIG_I2C is not set 580# CONFIG_I2C is not set
581# CONFIG_SPI is not set
582# CONFIG_W1 is not set
583# CONFIG_POWER_SUPPLY is not set
584CONFIG_HWMON=y
585# CONFIG_HWMON_VID is not set
586# CONFIG_SENSORS_F71805F is not set
587# CONFIG_SENSORS_F71882FG is not set
588# CONFIG_SENSORS_IT87 is not set
589# CONFIG_SENSORS_PC87360 is not set
590# CONFIG_SENSORS_PC87427 is not set
591# CONFIG_SENSORS_SMSC47M1 is not set
592# CONFIG_SENSORS_SMSC47B397 is not set
593# CONFIG_SENSORS_VT1211 is not set
594# CONFIG_SENSORS_W83627HF is not set
595# CONFIG_SENSORS_W83627EHF is not set
596# CONFIG_HWMON_DEBUG_CHIP is not set
597# CONFIG_THERMAL is not set
598# CONFIG_THERMAL_HWMON is not set
599CONFIG_WATCHDOG=y
600# CONFIG_WATCHDOG_NOWAYOUT is not set
660 601
661# 602#
662# SPI support 603# Watchdog Device Drivers
663# 604#
664# CONFIG_SPI is not set 605# CONFIG_SOFT_WATCHDOG is not set
665# CONFIG_SPI_MASTER is not set 606# CONFIG_SH_WDT is not set
666 607
667# 608#
668# Dallas's 1-wire bus 609# Sonics Silicon Backplane
669# 610#
611CONFIG_SSB_POSSIBLE=y
612# CONFIG_SSB is not set
670 613
671# 614#
672# Hardware Monitoring support 615# Multifunction device drivers
673# 616#
674CONFIG_HWMON=y 617# CONFIG_MFD_CORE is not set
675# CONFIG_HWMON_VID is not set 618# CONFIG_MFD_SM501 is not set
676# CONFIG_SENSORS_ABITUGURU is not set 619# CONFIG_HTC_PASIC3 is not set
677# CONFIG_SENSORS_F71805F is not set 620# CONFIG_MFD_TMIO is not set
678# CONFIG_SENSORS_VT1211 is not set 621# CONFIG_MFD_WM8400 is not set
679# CONFIG_HWMON_DEBUG_CHIP is not set
680 622
681# 623#
682# Misc devices 624# Multimedia devices
683# 625#
684 626
685# 627#
686# Multimedia devices 628# Multimedia core support
687# 629#
688# CONFIG_VIDEO_DEV is not set 630# CONFIG_VIDEO_DEV is not set
689CONFIG_VIDEO_V4L2=y 631# CONFIG_DVB_CORE is not set
632# CONFIG_VIDEO_MEDIA is not set
690 633
691# 634#
692# Digital Video Broadcasting Devices 635# Multimedia drivers
693# 636#
694# CONFIG_DVB is not set 637# CONFIG_DAB is not set
695 638
696# 639#
697# Graphics support 640# Graphics support
698# 641#
699CONFIG_FIRMWARE_EDID=y 642# CONFIG_VGASTATE is not set
643# CONFIG_VIDEO_OUTPUT_CONTROL is not set
700# CONFIG_FB is not set 644# CONFIG_FB is not set
701# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 645# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
702 646
703# 647#
704# Sound 648# Display device support
705# 649#
650# CONFIG_DISPLAY_SUPPORT is not set
706# CONFIG_SOUND is not set 651# CONFIG_SOUND is not set
707 652CONFIG_USB_SUPPORT=y
708# 653CONFIG_USB_ARCH_HAS_HCD=y
709# USB support
710#
711# CONFIG_USB_ARCH_HAS_HCD is not set
712# CONFIG_USB_ARCH_HAS_OHCI is not set 654# CONFIG_USB_ARCH_HAS_OHCI is not set
713# CONFIG_USB_ARCH_HAS_EHCI is not set 655# CONFIG_USB_ARCH_HAS_EHCI is not set
656# CONFIG_USB is not set
657# CONFIG_USB_OTG_WHITELIST is not set
658# CONFIG_USB_OTG_BLACKLIST_HUB is not set
714 659
715# 660#
716# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 661# Enable Host or Gadget support to see Inventra options
717# 662#
718 663
719# 664#
720# USB Gadget Support 665# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
721# 666#
722# CONFIG_USB_GADGET is not set 667# CONFIG_USB_GADGET is not set
723
724#
725# MMC/SD Card support
726#
727# CONFIG_MMC is not set 668# CONFIG_MMC is not set
728 669# CONFIG_MEMSTICK is not set
729#
730# LED devices
731#
732# CONFIG_NEW_LEDS is not set 670# CONFIG_NEW_LEDS is not set
733 671# CONFIG_ACCESSIBILITY is not set
734#
735# LED drivers
736#
737
738#
739# LED Triggers
740#
741
742#
743# InfiniBand support
744#
745
746#
747# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
748#
749
750#
751# Real Time Clock
752#
753# CONFIG_RTC_CLASS is not set 672# CONFIG_RTC_CLASS is not set
754 673# CONFIG_DMADEVICES is not set
755# 674# CONFIG_UIO is not set
756# DMA Engine support 675# CONFIG_STAGING is not set
757#
758# CONFIG_DMA_ENGINE is not set
759
760#
761# DMA Clients
762#
763
764#
765# DMA Devices
766#
767 676
768# 677#
769# File systems 678# File systems
@@ -772,17 +681,17 @@ CONFIG_EXT2_FS=y
772# CONFIG_EXT2_FS_XATTR is not set 681# CONFIG_EXT2_FS_XATTR is not set
773# CONFIG_EXT2_FS_XIP is not set 682# CONFIG_EXT2_FS_XIP is not set
774# CONFIG_EXT3_FS is not set 683# CONFIG_EXT3_FS is not set
684# CONFIG_EXT4_FS is not set
775# CONFIG_REISERFS_FS is not set 685# CONFIG_REISERFS_FS is not set
776# CONFIG_JFS_FS is not set 686# CONFIG_JFS_FS is not set
777# CONFIG_FS_POSIX_ACL is not set 687# CONFIG_FS_POSIX_ACL is not set
688CONFIG_FILE_LOCKING=y
778# CONFIG_XFS_FS is not set 689# CONFIG_XFS_FS is not set
779# CONFIG_OCFS2_FS is not set 690# CONFIG_OCFS2_FS is not set
780# CONFIG_MINIX_FS is not set 691CONFIG_DNOTIFY=y
781# CONFIG_ROMFS_FS is not set
782CONFIG_INOTIFY=y 692CONFIG_INOTIFY=y
783CONFIG_INOTIFY_USER=y 693CONFIG_INOTIFY_USER=y
784# CONFIG_QUOTA is not set 694# CONFIG_QUOTA is not set
785CONFIG_DNOTIFY=y
786# CONFIG_AUTOFS_FS is not set 695# CONFIG_AUTOFS_FS is not set
787# CONFIG_AUTOFS4_FS is not set 696# CONFIG_AUTOFS4_FS is not set
788# CONFIG_FUSE_FS is not set 697# CONFIG_FUSE_FS is not set
@@ -806,12 +715,12 @@ CONFIG_DNOTIFY=y
806CONFIG_PROC_FS=y 715CONFIG_PROC_FS=y
807CONFIG_PROC_KCORE=y 716CONFIG_PROC_KCORE=y
808CONFIG_PROC_SYSCTL=y 717CONFIG_PROC_SYSCTL=y
718CONFIG_PROC_PAGE_MONITOR=y
809CONFIG_SYSFS=y 719CONFIG_SYSFS=y
810CONFIG_TMPFS=y 720CONFIG_TMPFS=y
811# CONFIG_TMPFS_POSIX_ACL is not set 721# CONFIG_TMPFS_POSIX_ACL is not set
812# CONFIG_HUGETLBFS is not set 722# CONFIG_HUGETLBFS is not set
813# CONFIG_HUGETLB_PAGE is not set 723# CONFIG_HUGETLB_PAGE is not set
814CONFIG_RAMFS=y
815# CONFIG_CONFIGFS_FS is not set 724# CONFIG_CONFIGFS_FS is not set
816 725
817# 726#
@@ -824,26 +733,27 @@ CONFIG_RAMFS=y
824# CONFIG_BEFS_FS is not set 733# CONFIG_BEFS_FS is not set
825# CONFIG_BFS_FS is not set 734# CONFIG_BFS_FS is not set
826# CONFIG_EFS_FS is not set 735# CONFIG_EFS_FS is not set
827# CONFIG_JFFS_FS is not set
828CONFIG_JFFS2_FS=y 736CONFIG_JFFS2_FS=y
829CONFIG_JFFS2_FS_DEBUG=0 737CONFIG_JFFS2_FS_DEBUG=0
830CONFIG_JFFS2_FS_WRITEBUFFER=y 738CONFIG_JFFS2_FS_WRITEBUFFER=y
739# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
831# CONFIG_JFFS2_SUMMARY is not set 740# CONFIG_JFFS2_SUMMARY is not set
832# CONFIG_JFFS2_FS_XATTR is not set 741# CONFIG_JFFS2_FS_XATTR is not set
833# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 742# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
834CONFIG_JFFS2_ZLIB=y 743CONFIG_JFFS2_ZLIB=y
744# CONFIG_JFFS2_LZO is not set
835CONFIG_JFFS2_RTIME=y 745CONFIG_JFFS2_RTIME=y
836# CONFIG_JFFS2_RUBIN is not set 746# CONFIG_JFFS2_RUBIN is not set
837# CONFIG_CRAMFS is not set 747# CONFIG_CRAMFS is not set
838# CONFIG_VXFS_FS is not set 748# CONFIG_VXFS_FS is not set
749# CONFIG_MINIX_FS is not set
750# CONFIG_OMFS_FS is not set
839# CONFIG_HPFS_FS is not set 751# CONFIG_HPFS_FS is not set
840# CONFIG_QNX4FS_FS is not set 752# CONFIG_QNX4FS_FS is not set
753# CONFIG_ROMFS_FS is not set
841# CONFIG_SYSV_FS is not set 754# CONFIG_SYSV_FS is not set
842# CONFIG_UFS_FS is not set 755# CONFIG_UFS_FS is not set
843 756CONFIG_NETWORK_FILESYSTEMS=y
844#
845# Network File Systems
846#
847# CONFIG_NFS_FS is not set 757# CONFIG_NFS_FS is not set
848# CONFIG_NFSD is not set 758# CONFIG_NFSD is not set
849# CONFIG_SMB_FS is not set 759# CONFIG_SMB_FS is not set
@@ -851,57 +761,146 @@ CONFIG_JFFS2_RTIME=y
851# CONFIG_NCP_FS is not set 761# CONFIG_NCP_FS is not set
852# CONFIG_CODA_FS is not set 762# CONFIG_CODA_FS is not set
853# CONFIG_AFS_FS is not set 763# CONFIG_AFS_FS is not set
854# CONFIG_9P_FS is not set
855 764
856# 765#
857# Partition Types 766# Partition Types
858# 767#
859# CONFIG_PARTITION_ADVANCED is not set 768# CONFIG_PARTITION_ADVANCED is not set
860CONFIG_MSDOS_PARTITION=y 769CONFIG_MSDOS_PARTITION=y
861
862#
863# Native Language Support
864#
865# CONFIG_NLS is not set 770# CONFIG_NLS is not set
866 771# CONFIG_DLM is not set
867#
868# Profiling support
869#
870# CONFIG_PROFILING is not set
871 772
872# 773#
873# Kernel hacking 774# Kernel hacking
874# 775#
776CONFIG_TRACE_IRQFLAGS_SUPPORT=y
875# CONFIG_PRINTK_TIME is not set 777# CONFIG_PRINTK_TIME is not set
778CONFIG_ENABLE_WARN_DEPRECATED=y
876CONFIG_ENABLE_MUST_CHECK=y 779CONFIG_ENABLE_MUST_CHECK=y
780CONFIG_FRAME_WARN=1024
877# CONFIG_MAGIC_SYSRQ is not set 781# CONFIG_MAGIC_SYSRQ is not set
878# CONFIG_UNUSED_SYMBOLS is not set 782# CONFIG_UNUSED_SYMBOLS is not set
783# CONFIG_DEBUG_FS is not set
784# CONFIG_HEADERS_CHECK is not set
879# CONFIG_DEBUG_KERNEL is not set 785# CONFIG_DEBUG_KERNEL is not set
880CONFIG_LOG_BUF_SHIFT=14
881# CONFIG_DEBUG_BUGVERBOSE is not set 786# CONFIG_DEBUG_BUGVERBOSE is not set
882# CONFIG_DEBUG_FS is not set 787# CONFIG_DEBUG_MEMORY_INIT is not set
788# CONFIG_RCU_CPU_STALL_DETECTOR is not set
789# CONFIG_LATENCYTOP is not set
790CONFIG_NOP_TRACER=y
791CONFIG_HAVE_FTRACE=y
792# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
793# CONFIG_SAMPLES is not set
883# CONFIG_SH_STANDARD_BIOS is not set 794# CONFIG_SH_STANDARD_BIOS is not set
884# CONFIG_EARLY_SCIF_CONSOLE is not set 795# CONFIG_EARLY_SCIF_CONSOLE is not set
885# CONFIG_KGDB is not set 796# CONFIG_SH_KGDB is not set
886 797
887# 798#
888# Security options 799# Security options
889# 800#
890# CONFIG_KEYS is not set 801# CONFIG_KEYS is not set
891# CONFIG_SECURITY is not set 802# CONFIG_SECURITY is not set
803# CONFIG_SECURITYFS is not set
804# CONFIG_SECURITY_FILE_CAPABILITIES is not set
805CONFIG_CRYPTO=y
806
807#
808# Crypto core or helper
809#
810# CONFIG_CRYPTO_FIPS is not set
811# CONFIG_CRYPTO_MANAGER is not set
812# CONFIG_CRYPTO_GF128MUL is not set
813# CONFIG_CRYPTO_NULL is not set
814# CONFIG_CRYPTO_CRYPTD is not set
815# CONFIG_CRYPTO_AUTHENC is not set
816# CONFIG_CRYPTO_TEST is not set
817
818#
819# Authenticated Encryption with Associated Data
820#
821# CONFIG_CRYPTO_CCM is not set
822# CONFIG_CRYPTO_GCM is not set
823# CONFIG_CRYPTO_SEQIV is not set
824
825#
826# Block modes
827#
828# CONFIG_CRYPTO_CBC is not set
829# CONFIG_CRYPTO_CTR is not set
830# CONFIG_CRYPTO_CTS is not set
831# CONFIG_CRYPTO_ECB is not set
832# CONFIG_CRYPTO_LRW is not set
833# CONFIG_CRYPTO_PCBC is not set
834# CONFIG_CRYPTO_XTS is not set
835
836#
837# Hash modes
838#
839# CONFIG_CRYPTO_HMAC is not set
840# CONFIG_CRYPTO_XCBC is not set
841
842#
843# Digest
844#
845# CONFIG_CRYPTO_CRC32C is not set
846# CONFIG_CRYPTO_MD4 is not set
847# CONFIG_CRYPTO_MD5 is not set
848# CONFIG_CRYPTO_MICHAEL_MIC is not set
849# CONFIG_CRYPTO_RMD128 is not set
850# CONFIG_CRYPTO_RMD160 is not set
851# CONFIG_CRYPTO_RMD256 is not set
852# CONFIG_CRYPTO_RMD320 is not set
853# CONFIG_CRYPTO_SHA1 is not set
854# CONFIG_CRYPTO_SHA256 is not set
855# CONFIG_CRYPTO_SHA512 is not set
856# CONFIG_CRYPTO_TGR192 is not set
857# CONFIG_CRYPTO_WP512 is not set
858
859#
860# Ciphers
861#
862# CONFIG_CRYPTO_AES is not set
863# CONFIG_CRYPTO_ANUBIS is not set
864# CONFIG_CRYPTO_ARC4 is not set
865# CONFIG_CRYPTO_BLOWFISH is not set
866# CONFIG_CRYPTO_CAMELLIA is not set
867# CONFIG_CRYPTO_CAST5 is not set
868# CONFIG_CRYPTO_CAST6 is not set
869# CONFIG_CRYPTO_DES is not set
870# CONFIG_CRYPTO_FCRYPT is not set
871# CONFIG_CRYPTO_KHAZAD is not set
872# CONFIG_CRYPTO_SALSA20 is not set
873# CONFIG_CRYPTO_SEED is not set
874# CONFIG_CRYPTO_SERPENT is not set
875# CONFIG_CRYPTO_TEA is not set
876# CONFIG_CRYPTO_TWOFISH is not set
877
878#
879# Compression
880#
881# CONFIG_CRYPTO_DEFLATE is not set
882# CONFIG_CRYPTO_LZO is not set
892 883
893# 884#
894# Cryptographic options 885# Random Number Generation
895# 886#
896# CONFIG_CRYPTO is not set 887# CONFIG_CRYPTO_ANSI_CPRNG is not set
888CONFIG_CRYPTO_HW=y
897 889
898# 890#
899# Library routines 891# Library routines
900# 892#
893CONFIG_BITREVERSE=y
901# CONFIG_CRC_CCITT is not set 894# CONFIG_CRC_CCITT is not set
902# CONFIG_CRC16 is not set 895# CONFIG_CRC16 is not set
896# CONFIG_CRC_T10DIF is not set
897# CONFIG_CRC_ITU_T is not set
903CONFIG_CRC32=y 898CONFIG_CRC32=y
899# CONFIG_CRC7 is not set
904# CONFIG_LIBCRC32C is not set 900# CONFIG_LIBCRC32C is not set
905CONFIG_ZLIB_INFLATE=y 901CONFIG_ZLIB_INFLATE=y
906CONFIG_ZLIB_DEFLATE=y 902CONFIG_ZLIB_DEFLATE=y
907CONFIG_PLIST=y 903CONFIG_PLIST=y
904CONFIG_HAS_IOMEM=y
905CONFIG_HAS_IOPORT=y
906CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
index 30f5ee40c312..ad95b80bb198 100644
--- a/arch/sh/configs/se7780_defconfig
+++ b/arch/sh/configs/se7780_defconfig
@@ -1,26 +1,28 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc3 3# Linux kernel version: 2.6.27
4# Thu Feb 28 10:18:04 2008 4# Wed Oct 22 19:27:30 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
10CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
11CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
13CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
15CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
18CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25 27
26# 28#
@@ -41,11 +43,8 @@ CONFIG_IKCONFIG=y
41CONFIG_IKCONFIG_PROC=y 43CONFIG_IKCONFIG_PROC=y
42CONFIG_LOG_BUF_SHIFT=14 44CONFIG_LOG_BUF_SHIFT=14
43# CONFIG_CGROUPS is not set 45# CONFIG_CGROUPS is not set
44CONFIG_GROUP_SCHED=y
45CONFIG_FAIR_GROUP_SCHED=y
46CONFIG_USER_SCHED=y
47# CONFIG_CGROUP_SCHED is not set
48CONFIG_SYSFS_DEPRECATED=y 46CONFIG_SYSFS_DEPRECATED=y
47CONFIG_SYSFS_DEPRECATED_V2=y
49# CONFIG_RELAY is not set 48# CONFIG_RELAY is not set
50# CONFIG_NAMESPACES is not set 49# CONFIG_NAMESPACES is not set
51# CONFIG_BLK_DEV_INITRD is not set 50# CONFIG_BLK_DEV_INITRD is not set
@@ -68,20 +67,27 @@ CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y 67CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y 68CONFIG_EVENTFD=y
70CONFIG_SHMEM=y 69CONFIG_SHMEM=y
70CONFIG_AIO=y
71CONFIG_VM_EVENT_COUNTERS=y 71CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y 73CONFIG_SLAB=y
73# CONFIG_SLUB is not set 74# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 75# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set 76# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set 77# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y 78CONFIG_HAVE_OPROFILE=y
78# CONFIG_HAVE_KPROBES is not set 79CONFIG_HAVE_IOREMAP_PROT=y
79CONFIG_PROC_PAGE_MONITOR=y 80CONFIG_HAVE_KPROBES=y
81CONFIG_HAVE_KRETPROBES=y
82CONFIG_HAVE_ARCH_TRACEHOOK=y
83CONFIG_HAVE_CLK=y
84CONFIG_HAVE_GENERIC_DMA_COHERENT=y
80CONFIG_SLABINFO=y 85CONFIG_SLABINFO=y
81CONFIG_RT_MUTEXES=y 86CONFIG_RT_MUTEXES=y
82# CONFIG_TINY_SHMEM is not set 87# CONFIG_TINY_SHMEM is not set
83CONFIG_BASE_SMALL=0 88CONFIG_BASE_SMALL=0
84CONFIG_MODULES=y 89CONFIG_MODULES=y
90# CONFIG_MODULE_FORCE_LOAD is not set
85CONFIG_MODULE_UNLOAD=y 91CONFIG_MODULE_UNLOAD=y
86# CONFIG_MODVERSIONS is not set 92# CONFIG_MODVERSIONS is not set
87# CONFIG_MODULE_SRCVERSION_ALL is not set 93# CONFIG_MODULE_SRCVERSION_ALL is not set
@@ -90,6 +96,7 @@ CONFIG_BLOCK=y
90# CONFIG_LBD is not set 96# CONFIG_LBD is not set
91# CONFIG_BLK_DEV_IO_TRACE is not set 97# CONFIG_BLK_DEV_IO_TRACE is not set
92# CONFIG_LSF is not set 98# CONFIG_LSF is not set
99# CONFIG_BLK_DEV_INTEGRITY is not set
93 100
94# 101#
95# IO Schedulers 102# IO Schedulers
@@ -104,7 +111,7 @@ CONFIG_DEFAULT_DEADLINE=y
104# CONFIG_DEFAULT_NOOP is not set 111# CONFIG_DEFAULT_NOOP is not set
105CONFIG_DEFAULT_IOSCHED="deadline" 112CONFIG_DEFAULT_IOSCHED="deadline"
106CONFIG_CLASSIC_RCU=y 113CONFIG_CLASSIC_RCU=y
107# CONFIG_PREEMPT_RCU is not set 114# CONFIG_FREEZER is not set
108 115
109# 116#
110# System type 117# System type
@@ -115,6 +122,7 @@ CONFIG_CPU_SH4A=y
115# CONFIG_CPU_SUBTYPE_SH7203 is not set 122# CONFIG_CPU_SUBTYPE_SH7203 is not set
116# CONFIG_CPU_SUBTYPE_SH7206 is not set 123# CONFIG_CPU_SUBTYPE_SH7206 is not set
117# CONFIG_CPU_SUBTYPE_SH7263 is not set 124# CONFIG_CPU_SUBTYPE_SH7263 is not set
125# CONFIG_CPU_SUBTYPE_MXG is not set
118# CONFIG_CPU_SUBTYPE_SH7705 is not set 126# CONFIG_CPU_SUBTYPE_SH7705 is not set
119# CONFIG_CPU_SUBTYPE_SH7706 is not set 127# CONFIG_CPU_SUBTYPE_SH7706 is not set
120# CONFIG_CPU_SUBTYPE_SH7707 is not set 128# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -132,6 +140,7 @@ CONFIG_CPU_SH4A=y
132# CONFIG_CPU_SUBTYPE_SH7751R is not set 140# CONFIG_CPU_SUBTYPE_SH7751R is not set
133# CONFIG_CPU_SUBTYPE_SH7760 is not set 141# CONFIG_CPU_SUBTYPE_SH7760 is not set
134# CONFIG_CPU_SUBTYPE_SH4_202 is not set 142# CONFIG_CPU_SUBTYPE_SH4_202 is not set
143# CONFIG_CPU_SUBTYPE_SH7723 is not set
135# CONFIG_CPU_SUBTYPE_SH7763 is not set 144# CONFIG_CPU_SUBTYPE_SH7763 is not set
136# CONFIG_CPU_SUBTYPE_SH7770 is not set 145# CONFIG_CPU_SUBTYPE_SH7770 is not set
137CONFIG_CPU_SUBTYPE_SH7780=y 146CONFIG_CPU_SUBTYPE_SH7780=y
@@ -152,7 +161,6 @@ CONFIG_PAGE_OFFSET=0x80000000
152CONFIG_MEMORY_START=0x08000000 161CONFIG_MEMORY_START=0x08000000
153CONFIG_MEMORY_SIZE=0x08000000 162CONFIG_MEMORY_SIZE=0x08000000
154CONFIG_29BIT=y 163CONFIG_29BIT=y
155# CONFIG_PMB is not set
156CONFIG_VSYSCALL=y 164CONFIG_VSYSCALL=y
157CONFIG_ARCH_FLATMEM_ENABLE=y 165CONFIG_ARCH_FLATMEM_ENABLE=y
158CONFIG_ARCH_SPARSEMEM_ENABLE=y 166CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -161,9 +169,12 @@ CONFIG_MAX_ACTIVE_REGIONS=1
161CONFIG_ARCH_POPULATES_NODE_MAP=y 169CONFIG_ARCH_POPULATES_NODE_MAP=y
162CONFIG_ARCH_SELECT_MEMORY_MODEL=y 170CONFIG_ARCH_SELECT_MEMORY_MODEL=y
163CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 171CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
172CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
164CONFIG_PAGE_SIZE_4KB=y 173CONFIG_PAGE_SIZE_4KB=y
165# CONFIG_PAGE_SIZE_8KB is not set 174# CONFIG_PAGE_SIZE_8KB is not set
175# CONFIG_PAGE_SIZE_16KB is not set
166# CONFIG_PAGE_SIZE_64KB is not set 176# CONFIG_PAGE_SIZE_64KB is not set
177CONFIG_ENTRY_OFFSET=0x00001000
167CONFIG_SELECT_MEMORY_MODEL=y 178CONFIG_SELECT_MEMORY_MODEL=y
168# CONFIG_FLATMEM_MANUAL is not set 179# CONFIG_FLATMEM_MANUAL is not set
169# CONFIG_DISCONTIGMEM_MANUAL is not set 180# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -171,11 +182,14 @@ CONFIG_SPARSEMEM_MANUAL=y
171CONFIG_SPARSEMEM=y 182CONFIG_SPARSEMEM=y
172CONFIG_HAVE_MEMORY_PRESENT=y 183CONFIG_HAVE_MEMORY_PRESENT=y
173CONFIG_SPARSEMEM_STATIC=y 184CONFIG_SPARSEMEM_STATIC=y
174# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 185CONFIG_PAGEFLAGS_EXTENDED=y
175CONFIG_SPLIT_PTLOCK_CPUS=4 186CONFIG_SPLIT_PTLOCK_CPUS=4
187CONFIG_MIGRATION=y
176# CONFIG_RESOURCES_64BIT is not set 188# CONFIG_RESOURCES_64BIT is not set
189# CONFIG_PHYS_ADDR_T_64BIT is not set
177CONFIG_ZONE_DMA_FLAG=0 190CONFIG_ZONE_DMA_FLAG=0
178CONFIG_NR_QUICK=2 191CONFIG_NR_QUICK=2
192CONFIG_UNEVICTABLE_LRU=y
179 193
180# 194#
181# Cache configuration 195# Cache configuration
@@ -210,7 +224,6 @@ CONFIG_SH_7780_SOLUTION_ENGINE=y
210CONFIG_SH_TMU=y 224CONFIG_SH_TMU=y
211CONFIG_SH_TIMER_IRQ=28 225CONFIG_SH_TIMER_IRQ=28
212CONFIG_SH_PCLK_FREQ=33333333 226CONFIG_SH_PCLK_FREQ=33333333
213# CONFIG_TICK_ONESHOT is not set
214# CONFIG_NO_HZ is not set 227# CONFIG_NO_HZ is not set
215# CONFIG_HIGH_RES_TIMERS is not set 228# CONFIG_HIGH_RES_TIMERS is not set
216CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 229CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -244,10 +257,10 @@ CONFIG_HZ_250=y
244# CONFIG_HZ_1000 is not set 257# CONFIG_HZ_1000 is not set
245CONFIG_HZ=250 258CONFIG_HZ=250
246# CONFIG_SCHED_HRTICK is not set 259# CONFIG_SCHED_HRTICK is not set
260# CONFIG_SECCOMP is not set
247CONFIG_PREEMPT_NONE=y 261CONFIG_PREEMPT_NONE=y
248# CONFIG_PREEMPT_VOLUNTARY is not set 262# CONFIG_PREEMPT_VOLUNTARY is not set
249# CONFIG_PREEMPT is not set 263# CONFIG_PREEMPT is not set
250CONFIG_RCU_TRACE=y
251CONFIG_GUSA=y 264CONFIG_GUSA=y
252 265
253# 266#
@@ -273,11 +286,9 @@ CONFIG_PCI_LEGACY=y
273# Executable file formats 286# Executable file formats
274# 287#
275CONFIG_BINFMT_ELF=y 288CONFIG_BINFMT_ELF=y
289# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
290# CONFIG_HAVE_AOUT is not set
276# CONFIG_BINFMT_MISC is not set 291# CONFIG_BINFMT_MISC is not set
277
278#
279# Networking
280#
281CONFIG_NET=y 292CONFIG_NET=y
282 293
283# 294#
@@ -347,11 +358,10 @@ CONFIG_IPV6=y
347# CONFIG_CAN is not set 358# CONFIG_CAN is not set
348# CONFIG_IRDA is not set 359# CONFIG_IRDA is not set
349# CONFIG_BT is not set 360# CONFIG_BT is not set
350 361# CONFIG_PHONET is not set
351# 362CONFIG_WIRELESS=y
352# Wireless
353#
354# CONFIG_CFG80211 is not set 363# CONFIG_CFG80211 is not set
364# CONFIG_WIRELESS_OLD_REGULATORY is not set
355# CONFIG_WIRELESS_EXT is not set 365# CONFIG_WIRELESS_EXT is not set
356# CONFIG_MAC80211 is not set 366# CONFIG_MAC80211 is not set
357# CONFIG_IEEE80211 is not set 367# CONFIG_IEEE80211 is not set
@@ -374,6 +384,7 @@ CONFIG_MTD=y
374CONFIG_MTD_PARTITIONS=y 384CONFIG_MTD_PARTITIONS=y
375# CONFIG_MTD_REDBOOT_PARTS is not set 385# CONFIG_MTD_REDBOOT_PARTS is not set
376# CONFIG_MTD_CMDLINE_PARTS is not set 386# CONFIG_MTD_CMDLINE_PARTS is not set
387# CONFIG_MTD_AR7_PARTS is not set
377 388
378# 389#
379# User Modules And Translation Layers 390# User Modules And Translation Layers
@@ -461,11 +472,13 @@ CONFIG_BLK_DEV_LOOP=y
461# CONFIG_BLK_DEV_RAM is not set 472# CONFIG_BLK_DEV_RAM is not set
462# CONFIG_CDROM_PKTCDVD is not set 473# CONFIG_CDROM_PKTCDVD is not set
463# CONFIG_ATA_OVER_ETH is not set 474# CONFIG_ATA_OVER_ETH is not set
475# CONFIG_BLK_DEV_HD is not set
464CONFIG_MISC_DEVICES=y 476CONFIG_MISC_DEVICES=y
465# CONFIG_PHANTOM is not set 477# CONFIG_PHANTOM is not set
466# CONFIG_EEPROM_93CX6 is not set 478# CONFIG_EEPROM_93CX6 is not set
467# CONFIG_SGI_IOC4 is not set 479# CONFIG_SGI_IOC4 is not set
468# CONFIG_ENCLOSURE_SERVICES is not set 480# CONFIG_ENCLOSURE_SERVICES is not set
481# CONFIG_HP_ILO is not set
469CONFIG_HAVE_IDE=y 482CONFIG_HAVE_IDE=y
470# CONFIG_IDE is not set 483# CONFIG_IDE is not set
471 484
@@ -537,9 +550,13 @@ CONFIG_SCSI_LOWLEVEL=y
537# CONFIG_SCSI_NSP32 is not set 550# CONFIG_SCSI_NSP32 is not set
538# CONFIG_SCSI_DEBUG is not set 551# CONFIG_SCSI_DEBUG is not set
539# CONFIG_SCSI_SRP is not set 552# CONFIG_SCSI_SRP is not set
553# CONFIG_SCSI_DH is not set
540CONFIG_ATA=y 554CONFIG_ATA=y
541# CONFIG_ATA_NONSTANDARD is not set 555# CONFIG_ATA_NONSTANDARD is not set
556CONFIG_SATA_PMP=y
542# CONFIG_SATA_AHCI is not set 557# CONFIG_SATA_AHCI is not set
558# CONFIG_SATA_SIL24 is not set
559CONFIG_ATA_SFF=y
543# CONFIG_SATA_SVW is not set 560# CONFIG_SATA_SVW is not set
544# CONFIG_ATA_PIIX is not set 561# CONFIG_ATA_PIIX is not set
545# CONFIG_SATA_NV is not set 562# CONFIG_SATA_NV is not set
@@ -547,11 +564,11 @@ CONFIG_ATA=y
547# CONFIG_SATA_QSTOR is not set 564# CONFIG_SATA_QSTOR is not set
548# CONFIG_SATA_PROMISE is not set 565# CONFIG_SATA_PROMISE is not set
549CONFIG_SATA_SIL=y 566CONFIG_SATA_SIL=y
550# CONFIG_SATA_SIL24 is not set
551# CONFIG_SATA_SIS is not set 567# CONFIG_SATA_SIS is not set
552# CONFIG_SATA_ULI is not set 568# CONFIG_SATA_ULI is not set
553# CONFIG_SATA_VIA is not set 569# CONFIG_SATA_VIA is not set
554# CONFIG_SATA_VITESSE is not set 570# CONFIG_SATA_VITESSE is not set
571# CONFIG_SATA_INIC162X is not set
555# CONFIG_PATA_AMD is not set 572# CONFIG_PATA_AMD is not set
556# CONFIG_PATA_ARTOP is not set 573# CONFIG_PATA_ARTOP is not set
557# CONFIG_PATA_ATIIXP is not set 574# CONFIG_PATA_ATIIXP is not set
@@ -575,6 +592,7 @@ CONFIG_SATA_SIL=y
575# CONFIG_PATA_VIA is not set 592# CONFIG_PATA_VIA is not set
576# CONFIG_PATA_WINBOND is not set 593# CONFIG_PATA_WINBOND is not set
577# CONFIG_PATA_PLATFORM is not set 594# CONFIG_PATA_PLATFORM is not set
595# CONFIG_PATA_SCH is not set
578# CONFIG_MD is not set 596# CONFIG_MD is not set
579# CONFIG_FUSION is not set 597# CONFIG_FUSION is not set
580 598
@@ -583,12 +601,11 @@ CONFIG_SATA_SIL=y
583# 601#
584 602
585# 603#
586# An alternative FireWire stack is available with EXPERIMENTAL=y 604# A new alternative FireWire stack is available with EXPERIMENTAL=y
587# 605#
588# CONFIG_IEEE1394 is not set 606# CONFIG_IEEE1394 is not set
589# CONFIG_I2O is not set 607# CONFIG_I2O is not set
590CONFIG_NETDEVICES=y 608CONFIG_NETDEVICES=y
591# CONFIG_NETDEVICES_MULTIQUEUE is not set
592# CONFIG_DUMMY is not set 609# CONFIG_DUMMY is not set
593# CONFIG_BONDING is not set 610# CONFIG_BONDING is not set
594# CONFIG_EQUALIZER is not set 611# CONFIG_EQUALIZER is not set
@@ -621,12 +638,16 @@ CONFIG_MII=y
621# CONFIG_CASSINI is not set 638# CONFIG_CASSINI is not set
622# CONFIG_NET_VENDOR_3COM is not set 639# CONFIG_NET_VENDOR_3COM is not set
623CONFIG_SMC91X=y 640CONFIG_SMC91X=y
641# CONFIG_SMC911X is not set
624# CONFIG_NET_TULIP is not set 642# CONFIG_NET_TULIP is not set
625# CONFIG_HP100 is not set 643# CONFIG_HP100 is not set
626# CONFIG_IBM_NEW_EMAC_ZMII is not set 644# CONFIG_IBM_NEW_EMAC_ZMII is not set
627# CONFIG_IBM_NEW_EMAC_RGMII is not set 645# CONFIG_IBM_NEW_EMAC_RGMII is not set
628# CONFIG_IBM_NEW_EMAC_TAH is not set 646# CONFIG_IBM_NEW_EMAC_TAH is not set
629# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 647# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
648# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
649# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
650# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
630CONFIG_NET_PCI=y 651CONFIG_NET_PCI=y
631# CONFIG_PCNET32 is not set 652# CONFIG_PCNET32 is not set
632# CONFIG_AMD8111_ETH is not set 653# CONFIG_AMD8111_ETH is not set
@@ -645,6 +666,7 @@ CONFIG_NET_PCI=y
645# CONFIG_SUNDANCE is not set 666# CONFIG_SUNDANCE is not set
646# CONFIG_TLAN is not set 667# CONFIG_TLAN is not set
647# CONFIG_VIA_RHINE is not set 668# CONFIG_VIA_RHINE is not set
669# CONFIG_ATL2 is not set
648# CONFIG_NETDEV_1000 is not set 670# CONFIG_NETDEV_1000 is not set
649# CONFIG_NETDEV_10000 is not set 671# CONFIG_NETDEV_10000 is not set
650# CONFIG_TR is not set 672# CONFIG_TR is not set
@@ -654,6 +676,7 @@ CONFIG_NET_PCI=y
654# 676#
655# CONFIG_WLAN_PRE80211 is not set 677# CONFIG_WLAN_PRE80211 is not set
656# CONFIG_WLAN_80211 is not set 678# CONFIG_WLAN_80211 is not set
679# CONFIG_IWLWIFI_LEDS is not set
657 680
658# 681#
659# USB Network Adapters 682# USB Network Adapters
@@ -675,7 +698,7 @@ CONFIG_NET_PCI=y
675# Input device support 698# Input device support
676# 699#
677CONFIG_INPUT=y 700CONFIG_INPUT=y
678# CONFIG_INPUT_FF_MEMLESS is not set 701CONFIG_INPUT_FF_MEMLESS=m
679# CONFIG_INPUT_POLLDEV is not set 702# CONFIG_INPUT_POLLDEV is not set
680 703
681# 704#
@@ -709,9 +732,11 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
709# Character devices 732# Character devices
710# 733#
711CONFIG_VT=y 734CONFIG_VT=y
735CONFIG_CONSOLE_TRANSLATIONS=y
712CONFIG_VT_CONSOLE=y 736CONFIG_VT_CONSOLE=y
713CONFIG_HW_CONSOLE=y 737CONFIG_HW_CONSOLE=y
714# CONFIG_VT_HW_CONSOLE_BINDING is not set 738# CONFIG_VT_HW_CONSOLE_BINDING is not set
739CONFIG_DEVKMEM=y
715# CONFIG_SERIAL_NONSTANDARD is not set 740# CONFIG_SERIAL_NONSTANDARD is not set
716 741
717# 742#
@@ -737,12 +762,7 @@ CONFIG_UNIX98_PTYS=y
737# CONFIG_RAW_DRIVER is not set 762# CONFIG_RAW_DRIVER is not set
738CONFIG_DEVPORT=y 763CONFIG_DEVPORT=y
739# CONFIG_I2C is not set 764# CONFIG_I2C is not set
740
741#
742# SPI support
743#
744# CONFIG_SPI is not set 765# CONFIG_SPI is not set
745# CONFIG_SPI_MASTER is not set
746# CONFIG_W1 is not set 766# CONFIG_W1 is not set
747# CONFIG_POWER_SUPPLY is not set 767# CONFIG_POWER_SUPPLY is not set
748CONFIG_HWMON=y 768CONFIG_HWMON=y
@@ -757,6 +777,7 @@ CONFIG_HWMON=y
757# CONFIG_SENSORS_W83627EHF is not set 777# CONFIG_SENSORS_W83627EHF is not set
758# CONFIG_HWMON_DEBUG_CHIP is not set 778# CONFIG_HWMON_DEBUG_CHIP is not set
759CONFIG_THERMAL=y 779CONFIG_THERMAL=y
780# CONFIG_THERMAL_HWMON is not set
760# CONFIG_WATCHDOG is not set 781# CONFIG_WATCHDOG is not set
761 782
762# 783#
@@ -768,13 +789,26 @@ CONFIG_SSB_POSSIBLE=y
768# 789#
769# Multifunction device drivers 790# Multifunction device drivers
770# 791#
792# CONFIG_MFD_CORE is not set
771# CONFIG_MFD_SM501 is not set 793# CONFIG_MFD_SM501 is not set
794# CONFIG_HTC_PASIC3 is not set
795# CONFIG_MFD_TMIO is not set
796# CONFIG_MFD_WM8400 is not set
772 797
773# 798#
774# Multimedia devices 799# Multimedia devices
775# 800#
801
802#
803# Multimedia core support
804#
776# CONFIG_VIDEO_DEV is not set 805# CONFIG_VIDEO_DEV is not set
777# CONFIG_DVB_CORE is not set 806# CONFIG_DVB_CORE is not set
807# CONFIG_VIDEO_MEDIA is not set
808
809#
810# Multimedia drivers
811#
778# CONFIG_DAB is not set 812# CONFIG_DAB is not set
779 813
780# 814#
@@ -786,15 +820,16 @@ CONFIG_SSB_POSSIBLE=y
786CONFIG_FB=y 820CONFIG_FB=y
787CONFIG_FIRMWARE_EDID=y 821CONFIG_FIRMWARE_EDID=y
788# CONFIG_FB_DDC is not set 822# CONFIG_FB_DDC is not set
789# CONFIG_FB_CFB_FILLRECT is not set 823# CONFIG_FB_BOOT_VESA_SUPPORT is not set
790# CONFIG_FB_CFB_COPYAREA is not set 824CONFIG_FB_CFB_FILLRECT=m
791# CONFIG_FB_CFB_IMAGEBLIT is not set 825CONFIG_FB_CFB_COPYAREA=m
826CONFIG_FB_CFB_IMAGEBLIT=m
792# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 827# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
793# CONFIG_FB_SYS_FILLRECT is not set 828# CONFIG_FB_SYS_FILLRECT is not set
794# CONFIG_FB_SYS_COPYAREA is not set 829# CONFIG_FB_SYS_COPYAREA is not set
795# CONFIG_FB_SYS_IMAGEBLIT is not set 830# CONFIG_FB_SYS_IMAGEBLIT is not set
831# CONFIG_FB_FOREIGN_ENDIAN is not set
796# CONFIG_FB_SYS_FOPS is not set 832# CONFIG_FB_SYS_FOPS is not set
797CONFIG_FB_DEFERRED_IO=y
798# CONFIG_FB_SVGALIB is not set 833# CONFIG_FB_SVGALIB is not set
799# CONFIG_FB_MACMODES is not set 834# CONFIG_FB_MACMODES is not set
800# CONFIG_FB_BACKLIGHT is not set 835# CONFIG_FB_BACKLIGHT is not set
@@ -818,6 +853,7 @@ CONFIG_FB_DEFERRED_IO=y
818# CONFIG_FB_ATY is not set 853# CONFIG_FB_ATY is not set
819# CONFIG_FB_S3 is not set 854# CONFIG_FB_S3 is not set
820# CONFIG_FB_SIS is not set 855# CONFIG_FB_SIS is not set
856# CONFIG_FB_VIA is not set
821# CONFIG_FB_NEOMAGIC is not set 857# CONFIG_FB_NEOMAGIC is not set
822# CONFIG_FB_KYRO is not set 858# CONFIG_FB_KYRO is not set
823# CONFIG_FB_3DFX is not set 859# CONFIG_FB_3DFX is not set
@@ -825,7 +861,10 @@ CONFIG_FB_DEFERRED_IO=y
825# CONFIG_FB_VT8623 is not set 861# CONFIG_FB_VT8623 is not set
826# CONFIG_FB_TRIDENT is not set 862# CONFIG_FB_TRIDENT is not set
827# CONFIG_FB_ARK is not set 863# CONFIG_FB_ARK is not set
864# CONFIG_FB_CARMINE is not set
865CONFIG_FB_SH_MOBILE_LCDC=m
828# CONFIG_FB_VIRTUAL is not set 866# CONFIG_FB_VIRTUAL is not set
867# CONFIG_FB_METRONOME is not set
829# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 868# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
830 869
831# 870#
@@ -850,24 +889,10 @@ CONFIG_LOGO_LINUX_CLUT224=y
850# CONFIG_LOGO_SUPERH_MONO is not set 889# CONFIG_LOGO_SUPERH_MONO is not set
851# CONFIG_LOGO_SUPERH_VGA16 is not set 890# CONFIG_LOGO_SUPERH_VGA16 is not set
852CONFIG_LOGO_SUPERH_CLUT224=y 891CONFIG_LOGO_SUPERH_CLUT224=y
853
854#
855# Sound
856#
857CONFIG_SOUND=y 892CONFIG_SOUND=y
858 893CONFIG_SOUND_OSS_CORE=y
859#
860# Advanced Linux Sound Architecture
861#
862# CONFIG_SND is not set 894# CONFIG_SND is not set
863
864#
865# Open Sound System
866#
867CONFIG_SOUND_PRIME=y 895CONFIG_SOUND_PRIME=y
868# CONFIG_SOUND_TRIDENT is not set
869# CONFIG_SOUND_MSNDCLAS is not set
870# CONFIG_SOUND_MSNDPIN is not set
871CONFIG_HID_SUPPORT=y 896CONFIG_HID_SUPPORT=y
872CONFIG_HID=y 897CONFIG_HID=y
873# CONFIG_HID_DEBUG is not set 898# CONFIG_HID_DEBUG is not set
@@ -877,8 +902,36 @@ CONFIG_HID=y
877# USB Input Devices 902# USB Input Devices
878# 903#
879CONFIG_USB_HID=y 904CONFIG_USB_HID=y
880# CONFIG_USB_HIDINPUT_POWERBOOK is not set 905# CONFIG_HID_PID is not set
881# CONFIG_USB_HIDDEV is not set 906# CONFIG_USB_HIDDEV is not set
907
908#
909# Special HID drivers
910#
911CONFIG_HID_COMPAT=y
912CONFIG_HID_A4TECH=y
913CONFIG_HID_APPLE=y
914CONFIG_HID_BELKIN=y
915CONFIG_HID_BRIGHT=y
916CONFIG_HID_CHERRY=y
917CONFIG_HID_CHICONY=y
918CONFIG_HID_CYPRESS=y
919CONFIG_HID_DELL=y
920CONFIG_HID_EZKEY=y
921CONFIG_HID_GYRATION=y
922CONFIG_HID_LOGITECH=y
923# CONFIG_LOGITECH_FF is not set
924# CONFIG_LOGIRUMBLEPAD2_FF is not set
925CONFIG_HID_MICROSOFT=y
926CONFIG_HID_MONTEREY=y
927CONFIG_HID_PANTHERLORD=y
928# CONFIG_PANTHERLORD_FF is not set
929CONFIG_HID_PETALYNX=y
930CONFIG_HID_SAMSUNG=y
931CONFIG_HID_SONY=y
932CONFIG_HID_SUNPLUS=y
933CONFIG_THRUSTMASTER_FF=m
934CONFIG_ZEROPLUS_FF=m
882CONFIG_USB_SUPPORT=y 935CONFIG_USB_SUPPORT=y
883CONFIG_USB_ARCH_HAS_HCD=y 936CONFIG_USB_ARCH_HAS_HCD=y
884CONFIG_USB_ARCH_HAS_OHCI=y 937CONFIG_USB_ARCH_HAS_OHCI=y
@@ -892,11 +945,17 @@ CONFIG_USB=y
892# 945#
893CONFIG_USB_DEVICEFS=y 946CONFIG_USB_DEVICEFS=y
894# CONFIG_USB_DEVICE_CLASS is not set 947# CONFIG_USB_DEVICE_CLASS is not set
948# CONFIG_USB_DYNAMIC_MINORS is not set
949# CONFIG_USB_OTG_WHITELIST is not set
950# CONFIG_USB_OTG_BLACKLIST_HUB is not set
951CONFIG_USB_MON=y
895 952
896# 953#
897# USB Host Controller Drivers 954# USB Host Controller Drivers
898# 955#
956# CONFIG_USB_C67X00_HCD is not set
899CONFIG_USB_EHCI_HCD=y 957CONFIG_USB_EHCI_HCD=y
958# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
900# CONFIG_USB_ISP116X_HCD is not set 959# CONFIG_USB_ISP116X_HCD is not set
901CONFIG_USB_OHCI_HCD=y 960CONFIG_USB_OHCI_HCD=y
902# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 961# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -911,6 +970,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
911# 970#
912# CONFIG_USB_ACM is not set 971# CONFIG_USB_ACM is not set
913# CONFIG_USB_PRINTER is not set 972# CONFIG_USB_PRINTER is not set
973# CONFIG_USB_WDM is not set
974# CONFIG_USB_TMC is not set
914 975
915# 976#
916# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 977# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -921,17 +982,25 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
921# 982#
922CONFIG_USB_STORAGE=y 983CONFIG_USB_STORAGE=y
923# CONFIG_USB_STORAGE_DEBUG is not set 984# CONFIG_USB_STORAGE_DEBUG is not set
985# CONFIG_USB_STORAGE_DATAFAB is not set
924# CONFIG_USB_STORAGE_FREECOM is not set 986# CONFIG_USB_STORAGE_FREECOM is not set
925# CONFIG_USB_STORAGE_ISD200 is not set 987# CONFIG_USB_STORAGE_ISD200 is not set
926# CONFIG_USB_STORAGE_DPCM is not set 988# CONFIG_USB_STORAGE_DPCM is not set
989# CONFIG_USB_STORAGE_USBAT is not set
990# CONFIG_USB_STORAGE_SDDR09 is not set
991# CONFIG_USB_STORAGE_SDDR55 is not set
992# CONFIG_USB_STORAGE_JUMPSHOT is not set
993# CONFIG_USB_STORAGE_ALAUDA is not set
994# CONFIG_USB_STORAGE_ONETOUCH is not set
927# CONFIG_USB_STORAGE_KARMA is not set 995# CONFIG_USB_STORAGE_KARMA is not set
996# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
928# CONFIG_USB_LIBUSUAL is not set 997# CONFIG_USB_LIBUSUAL is not set
929 998
930# 999#
931# USB Imaging devices 1000# USB Imaging devices
932# 1001#
1002# CONFIG_USB_MDC800 is not set
933# CONFIG_USB_MICROTEK is not set 1003# CONFIG_USB_MICROTEK is not set
934CONFIG_USB_MON=y
935 1004
936# 1005#
937# USB port drivers 1006# USB port drivers
@@ -943,6 +1012,10 @@ CONFIG_USB_MON=y
943# 1012#
944# CONFIG_USB_EMI62 is not set 1013# CONFIG_USB_EMI62 is not set
945# CONFIG_USB_EMI26 is not set 1014# CONFIG_USB_EMI26 is not set
1015# CONFIG_USB_ADUTUX is not set
1016# CONFIG_USB_SEVSEG is not set
1017# CONFIG_USB_RIO500 is not set
1018# CONFIG_USB_LEGOTOWER is not set
946# CONFIG_USB_LCD is not set 1019# CONFIG_USB_LCD is not set
947# CONFIG_USB_BERRY_CHARGE is not set 1020# CONFIG_USB_BERRY_CHARGE is not set
948# CONFIG_USB_LED is not set 1021# CONFIG_USB_LED is not set
@@ -956,17 +1029,19 @@ CONFIG_USB_MON=y
956# CONFIG_USB_LD is not set 1029# CONFIG_USB_LD is not set
957# CONFIG_USB_TRANCEVIBRATOR is not set 1030# CONFIG_USB_TRANCEVIBRATOR is not set
958# CONFIG_USB_IOWARRIOR is not set 1031# CONFIG_USB_IOWARRIOR is not set
1032# CONFIG_USB_TEST is not set
1033# CONFIG_USB_ISIGHTFW is not set
1034# CONFIG_USB_VST is not set
959# CONFIG_USB_GADGET is not set 1035# CONFIG_USB_GADGET is not set
960# CONFIG_MMC is not set 1036# CONFIG_MMC is not set
961# CONFIG_MEMSTICK is not set 1037# CONFIG_MEMSTICK is not set
962# CONFIG_NEW_LEDS is not set 1038# CONFIG_NEW_LEDS is not set
1039# CONFIG_ACCESSIBILITY is not set
963# CONFIG_INFINIBAND is not set 1040# CONFIG_INFINIBAND is not set
964# CONFIG_RTC_CLASS is not set 1041# CONFIG_RTC_CLASS is not set
965 1042# CONFIG_DMADEVICES is not set
966#
967# Userspace I/O
968#
969# CONFIG_UIO is not set 1043# CONFIG_UIO is not set
1044# CONFIG_STAGING is not set
970 1045
971# 1046#
972# File systems 1047# File systems
@@ -975,9 +1050,11 @@ CONFIG_EXT2_FS=y
975# CONFIG_EXT2_FS_XATTR is not set 1050# CONFIG_EXT2_FS_XATTR is not set
976# CONFIG_EXT2_FS_XIP is not set 1051# CONFIG_EXT2_FS_XIP is not set
977# CONFIG_EXT3_FS is not set 1052# CONFIG_EXT3_FS is not set
1053# CONFIG_EXT4_FS is not set
978# CONFIG_REISERFS_FS is not set 1054# CONFIG_REISERFS_FS is not set
979# CONFIG_JFS_FS is not set 1055# CONFIG_JFS_FS is not set
980# CONFIG_FS_POSIX_ACL is not set 1056# CONFIG_FS_POSIX_ACL is not set
1057CONFIG_FILE_LOCKING=y
981# CONFIG_XFS_FS is not set 1058# CONFIG_XFS_FS is not set
982# CONFIG_OCFS2_FS is not set 1059# CONFIG_OCFS2_FS is not set
983# CONFIG_DNOTIFY is not set 1060# CONFIG_DNOTIFY is not set
@@ -1010,6 +1087,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1010CONFIG_PROC_FS=y 1087CONFIG_PROC_FS=y
1011CONFIG_PROC_KCORE=y 1088CONFIG_PROC_KCORE=y
1012CONFIG_PROC_SYSCTL=y 1089CONFIG_PROC_SYSCTL=y
1090CONFIG_PROC_PAGE_MONITOR=y
1013CONFIG_SYSFS=y 1091CONFIG_SYSFS=y
1014CONFIG_TMPFS=y 1092CONFIG_TMPFS=y
1015# CONFIG_TMPFS_POSIX_ACL is not set 1093# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1025,6 +1103,7 @@ CONFIG_TMPFS=y
1025CONFIG_CRAMFS=y 1103CONFIG_CRAMFS=y
1026# CONFIG_VXFS_FS is not set 1104# CONFIG_VXFS_FS is not set
1027# CONFIG_MINIX_FS is not set 1105# CONFIG_MINIX_FS is not set
1106# CONFIG_OMFS_FS is not set
1028# CONFIG_HPFS_FS is not set 1107# CONFIG_HPFS_FS is not set
1029# CONFIG_QNX4FS_FS is not set 1108# CONFIG_QNX4FS_FS is not set
1030# CONFIG_ROMFS_FS is not set 1109# CONFIG_ROMFS_FS is not set
@@ -1034,9 +1113,8 @@ CONFIG_NETWORK_FILESYSTEMS=y
1034CONFIG_NFS_FS=y 1113CONFIG_NFS_FS=y
1035CONFIG_NFS_V3=y 1114CONFIG_NFS_V3=y
1036# CONFIG_NFS_V3_ACL is not set 1115# CONFIG_NFS_V3_ACL is not set
1037# CONFIG_NFS_DIRECTIO is not set
1038# CONFIG_NFSD is not set
1039CONFIG_ROOT_NFS=y 1116CONFIG_ROOT_NFS=y
1117# CONFIG_NFSD is not set
1040CONFIG_LOCKD=y 1118CONFIG_LOCKD=y
1041CONFIG_LOCKD_V4=y 1119CONFIG_LOCKD_V4=y
1042CONFIG_NFS_COMMON=y 1120CONFIG_NFS_COMMON=y
@@ -1099,12 +1177,20 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1099# CONFIG_PRINTK_TIME is not set 1177# CONFIG_PRINTK_TIME is not set
1100CONFIG_ENABLE_WARN_DEPRECATED=y 1178CONFIG_ENABLE_WARN_DEPRECATED=y
1101CONFIG_ENABLE_MUST_CHECK=y 1179CONFIG_ENABLE_MUST_CHECK=y
1180CONFIG_FRAME_WARN=1024
1102# CONFIG_MAGIC_SYSRQ is not set 1181# CONFIG_MAGIC_SYSRQ is not set
1103# CONFIG_UNUSED_SYMBOLS is not set 1182# CONFIG_UNUSED_SYMBOLS is not set
1104CONFIG_DEBUG_FS=y 1183CONFIG_DEBUG_FS=y
1105# CONFIG_HEADERS_CHECK is not set 1184# CONFIG_HEADERS_CHECK is not set
1106# CONFIG_DEBUG_KERNEL is not set 1185# CONFIG_DEBUG_KERNEL is not set
1107# CONFIG_DEBUG_BUGVERBOSE is not set 1186# CONFIG_DEBUG_BUGVERBOSE is not set
1187# CONFIG_DEBUG_MEMORY_INIT is not set
1188# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1189# CONFIG_LATENCYTOP is not set
1190# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1191CONFIG_NOP_TRACER=y
1192CONFIG_HAVE_FTRACE=y
1193# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1108# CONFIG_SAMPLES is not set 1194# CONFIG_SAMPLES is not set
1109# CONFIG_SH_STANDARD_BIOS is not set 1195# CONFIG_SH_STANDARD_BIOS is not set
1110# CONFIG_EARLY_SCIF_CONSOLE is not set 1196# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1115,45 +1201,86 @@ CONFIG_DEBUG_FS=y
1115# 1201#
1116# CONFIG_KEYS is not set 1202# CONFIG_KEYS is not set
1117# CONFIG_SECURITY is not set 1203# CONFIG_SECURITY is not set
1204# CONFIG_SECURITYFS is not set
1205# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1118CONFIG_CRYPTO=y 1206CONFIG_CRYPTO=y
1119# CONFIG_CRYPTO_SEQIV is not set 1207
1208#
1209# Crypto core or helper
1210#
1211# CONFIG_CRYPTO_FIPS is not set
1120# CONFIG_CRYPTO_MANAGER is not set 1212# CONFIG_CRYPTO_MANAGER is not set
1121# CONFIG_CRYPTO_HMAC is not set
1122# CONFIG_CRYPTO_NULL is not set 1213# CONFIG_CRYPTO_NULL is not set
1214# CONFIG_CRYPTO_CRYPTD is not set
1215# CONFIG_CRYPTO_AUTHENC is not set
1216# CONFIG_CRYPTO_TEST is not set
1217
1218#
1219# Authenticated Encryption with Associated Data
1220#
1221# CONFIG_CRYPTO_CCM is not set
1222# CONFIG_CRYPTO_GCM is not set
1223# CONFIG_CRYPTO_SEQIV is not set
1224
1225#
1226# Block modes
1227#
1228# CONFIG_CRYPTO_CBC is not set
1229# CONFIG_CRYPTO_CTR is not set
1230# CONFIG_CRYPTO_CTS is not set
1231# CONFIG_CRYPTO_ECB is not set
1232# CONFIG_CRYPTO_PCBC is not set
1233
1234#
1235# Hash modes
1236#
1237# CONFIG_CRYPTO_HMAC is not set
1238
1239#
1240# Digest
1241#
1242# CONFIG_CRYPTO_CRC32C is not set
1123# CONFIG_CRYPTO_MD4 is not set 1243# CONFIG_CRYPTO_MD4 is not set
1124# CONFIG_CRYPTO_MD5 is not set 1244# CONFIG_CRYPTO_MD5 is not set
1245# CONFIG_CRYPTO_MICHAEL_MIC is not set
1246# CONFIG_CRYPTO_RMD128 is not set
1247# CONFIG_CRYPTO_RMD160 is not set
1248# CONFIG_CRYPTO_RMD256 is not set
1249# CONFIG_CRYPTO_RMD320 is not set
1125# CONFIG_CRYPTO_SHA1 is not set 1250# CONFIG_CRYPTO_SHA1 is not set
1126# CONFIG_CRYPTO_SHA256 is not set 1251# CONFIG_CRYPTO_SHA256 is not set
1127# CONFIG_CRYPTO_SHA512 is not set 1252# CONFIG_CRYPTO_SHA512 is not set
1128# CONFIG_CRYPTO_WP512 is not set
1129# CONFIG_CRYPTO_TGR192 is not set 1253# CONFIG_CRYPTO_TGR192 is not set
1130# CONFIG_CRYPTO_ECB is not set 1254# CONFIG_CRYPTO_WP512 is not set
1131# CONFIG_CRYPTO_CBC is not set 1255
1132# CONFIG_CRYPTO_PCBC is not set 1256#
1133# CONFIG_CRYPTO_CTR is not set 1257# Ciphers
1134# CONFIG_CRYPTO_GCM is not set 1258#
1135# CONFIG_CRYPTO_CCM is not set
1136# CONFIG_CRYPTO_CRYPTD is not set
1137# CONFIG_CRYPTO_DES is not set
1138# CONFIG_CRYPTO_FCRYPT is not set
1139# CONFIG_CRYPTO_BLOWFISH is not set
1140# CONFIG_CRYPTO_TWOFISH is not set
1141# CONFIG_CRYPTO_SERPENT is not set
1142# CONFIG_CRYPTO_AES is not set 1259# CONFIG_CRYPTO_AES is not set
1260# CONFIG_CRYPTO_ANUBIS is not set
1261# CONFIG_CRYPTO_ARC4 is not set
1262# CONFIG_CRYPTO_BLOWFISH is not set
1263# CONFIG_CRYPTO_CAMELLIA is not set
1143# CONFIG_CRYPTO_CAST5 is not set 1264# CONFIG_CRYPTO_CAST5 is not set
1144# CONFIG_CRYPTO_CAST6 is not set 1265# CONFIG_CRYPTO_CAST6 is not set
1145# CONFIG_CRYPTO_TEA is not set 1266# CONFIG_CRYPTO_DES is not set
1146# CONFIG_CRYPTO_ARC4 is not set 1267# CONFIG_CRYPTO_FCRYPT is not set
1147# CONFIG_CRYPTO_KHAZAD is not set 1268# CONFIG_CRYPTO_KHAZAD is not set
1148# CONFIG_CRYPTO_ANUBIS is not set
1149# CONFIG_CRYPTO_SEED is not set 1269# CONFIG_CRYPTO_SEED is not set
1270# CONFIG_CRYPTO_SERPENT is not set
1271# CONFIG_CRYPTO_TEA is not set
1272# CONFIG_CRYPTO_TWOFISH is not set
1273
1274#
1275# Compression
1276#
1150# CONFIG_CRYPTO_DEFLATE is not set 1277# CONFIG_CRYPTO_DEFLATE is not set
1151# CONFIG_CRYPTO_MICHAEL_MIC is not set
1152# CONFIG_CRYPTO_CRC32C is not set
1153# CONFIG_CRYPTO_CAMELLIA is not set
1154# CONFIG_CRYPTO_TEST is not set
1155# CONFIG_CRYPTO_AUTHENC is not set
1156# CONFIG_CRYPTO_LZO is not set 1278# CONFIG_CRYPTO_LZO is not set
1279
1280#
1281# Random Number Generation
1282#
1283# CONFIG_CRYPTO_ANSI_CPRNG is not set
1157CONFIG_CRYPTO_HW=y 1284CONFIG_CRYPTO_HW=y
1158# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1285# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1159 1286
@@ -1163,6 +1290,7 @@ CONFIG_CRYPTO_HW=y
1163CONFIG_BITREVERSE=y 1290CONFIG_BITREVERSE=y
1164# CONFIG_CRC_CCITT is not set 1291# CONFIG_CRC_CCITT is not set
1165# CONFIG_CRC16 is not set 1292# CONFIG_CRC16 is not set
1293# CONFIG_CRC_T10DIF is not set
1166# CONFIG_CRC_ITU_T is not set 1294# CONFIG_CRC_ITU_T is not set
1167CONFIG_CRC32=y 1295CONFIG_CRC32=y
1168# CONFIG_CRC7 is not set 1296# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/sh03_defconfig b/arch/sh/configs/sh03_defconfig
index 9fd5ea7304e5..95f0f5d5b631 100644
--- a/arch/sh/configs/sh03_defconfig
+++ b/arch/sh/configs/sh03_defconfig
@@ -1,41 +1,56 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.27
4# Tue Oct 3 12:13:26 2006 4# Wed Oct 22 19:31:54 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
11CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
25CONFIG_ARCH_NO_VIRT_TO_BUS=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 27
15# 28#
16# Code maturity level options 29# General setup
17# 30#
18CONFIG_EXPERIMENTAL=y 31CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y 32CONFIG_BROKEN_ON_SMP=y
20CONFIG_LOCK_KERNEL=y 33CONFIG_LOCK_KERNEL=y
21CONFIG_INIT_ENV_ARG_LIMIT=32 34CONFIG_INIT_ENV_ARG_LIMIT=32
22
23#
24# General setup
25#
26CONFIG_LOCALVERSION="" 35CONFIG_LOCALVERSION=""
27CONFIG_LOCALVERSION_AUTO=y 36CONFIG_LOCALVERSION_AUTO=y
28CONFIG_SWAP=y 37CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 38CONFIG_SYSVIPC=y
30# CONFIG_IPC_NS is not set 39CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 40CONFIG_POSIX_MQUEUE=y
32CONFIG_BSD_PROCESS_ACCT=y 41CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 42# CONFIG_BSD_PROCESS_ACCT_V3 is not set
34# CONFIG_TASKSTATS is not set 43# CONFIG_TASKSTATS is not set
35# CONFIG_UTS_NS is not set
36# CONFIG_AUDIT is not set 44# CONFIG_AUDIT is not set
37# CONFIG_IKCONFIG is not set 45# CONFIG_IKCONFIG is not set
46CONFIG_LOG_BUF_SHIFT=14
47# CONFIG_CGROUPS is not set
48# CONFIG_GROUP_SCHED is not set
49CONFIG_SYSFS_DEPRECATED=y
50CONFIG_SYSFS_DEPRECATED_V2=y
38# CONFIG_RELAY is not set 51# CONFIG_RELAY is not set
52# CONFIG_NAMESPACES is not set
53CONFIG_BLK_DEV_INITRD=y
39CONFIG_INITRAMFS_SOURCE="" 54CONFIG_INITRAMFS_SOURCE=""
40CONFIG_CC_OPTIMIZE_FOR_SIZE=y 55CONFIG_CC_OPTIMIZE_FOR_SIZE=y
41CONFIG_SYSCTL=y 56CONFIG_SYSCTL=y
@@ -48,34 +63,49 @@ CONFIG_HOTPLUG=y
48CONFIG_PRINTK=y 63CONFIG_PRINTK=y
49CONFIG_BUG=y 64CONFIG_BUG=y
50CONFIG_ELF_CORE=y 65CONFIG_ELF_CORE=y
66CONFIG_COMPAT_BRK=y
51CONFIG_BASE_FULL=y 67CONFIG_BASE_FULL=y
52CONFIG_FUTEX=y 68CONFIG_FUTEX=y
69CONFIG_ANON_INODES=y
53CONFIG_EPOLL=y 70CONFIG_EPOLL=y
71CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y
73CONFIG_EVENTFD=y
54CONFIG_SHMEM=y 74CONFIG_SHMEM=y
55CONFIG_SLAB=y 75CONFIG_AIO=y
56CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
78CONFIG_SLAB=y
79# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set
81CONFIG_PROFILING=y
82# CONFIG_MARKERS is not set
83CONFIG_OPROFILE=m
84CONFIG_HAVE_OPROFILE=y
85# CONFIG_KPROBES is not set
86CONFIG_HAVE_IOREMAP_PROT=y
87CONFIG_HAVE_KPROBES=y
88CONFIG_HAVE_KRETPROBES=y
89CONFIG_HAVE_ARCH_TRACEHOOK=y
90CONFIG_HAVE_CLK=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
92CONFIG_SLABINFO=y
57CONFIG_RT_MUTEXES=y 93CONFIG_RT_MUTEXES=y
58# CONFIG_TINY_SHMEM is not set 94# CONFIG_TINY_SHMEM is not set
59CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
60# CONFIG_SLOB is not set
61
62#
63# Loadable module support
64#
65CONFIG_MODULES=y 96CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set
66CONFIG_MODULE_UNLOAD=y 98CONFIG_MODULE_UNLOAD=y
67CONFIG_MODULE_FORCE_UNLOAD=y 99CONFIG_MODULE_FORCE_UNLOAD=y
68CONFIG_MODVERSIONS=y 100CONFIG_MODVERSIONS=y
69# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
70CONFIG_KMOD=y 102CONFIG_KMOD=y
71
72#
73# Block layer
74#
75CONFIG_BLOCK=y 103CONFIG_BLOCK=y
76# CONFIG_LBD is not set 104# CONFIG_LBD is not set
77# CONFIG_BLK_DEV_IO_TRACE is not set 105# CONFIG_BLK_DEV_IO_TRACE is not set
78# CONFIG_LSF is not set 106# CONFIG_LSF is not set
107# CONFIG_BLK_DEV_BSG is not set
108# CONFIG_BLK_DEV_INTEGRITY is not set
79 109
80# 110#
81# IO Schedulers 111# IO Schedulers
@@ -89,59 +119,27 @@ CONFIG_DEFAULT_AS=y
89# CONFIG_DEFAULT_CFQ is not set 119# CONFIG_DEFAULT_CFQ is not set
90# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
91CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
122CONFIG_CLASSIC_RCU=y
123# CONFIG_FREEZER is not set
92 124
93# 125#
94# System type 126# System type
95# 127#
96# CONFIG_SH_SOLUTION_ENGINE is not set
97# CONFIG_SH_7751_SOLUTION_ENGINE is not set
98# CONFIG_SH_7300_SOLUTION_ENGINE is not set
99# CONFIG_SH_7343_SOLUTION_ENGINE is not set
100# CONFIG_SH_73180_SOLUTION_ENGINE is not set
101# CONFIG_SH_7751_SYSTEMH is not set
102# CONFIG_SH_HP6XX is not set
103# CONFIG_SH_EC3104 is not set
104# CONFIG_SH_SATURN is not set
105# CONFIG_SH_DREAMCAST is not set
106# CONFIG_SH_BIGSUR is not set
107# CONFIG_SH_MPC1211 is not set
108CONFIG_SH_SH03=y
109# CONFIG_SH_SECUREEDGE5410 is not set
110# CONFIG_SH_HS7751RVOIP is not set
111# CONFIG_SH_7710VOIPGW is not set
112# CONFIG_SH_RTS7751R2D is not set
113# CONFIG_SH_R7780RP is not set
114# CONFIG_SH_EDOSK7705 is not set
115# CONFIG_SH_SH4202_MICRODEV is not set
116# CONFIG_SH_LANDISK is not set
117# CONFIG_SH_TITAN is not set
118# CONFIG_SH_SHMIN is not set
119# CONFIG_SH_UNKNOWN is not set
120
121#
122# Processor selection
123#
124CONFIG_CPU_SH4=y 128CONFIG_CPU_SH4=y
125 129# CONFIG_CPU_SUBTYPE_SH7619 is not set
126# 130# CONFIG_CPU_SUBTYPE_SH7203 is not set
127# SH-2 Processor Support 131# CONFIG_CPU_SUBTYPE_SH7206 is not set
128# 132# CONFIG_CPU_SUBTYPE_SH7263 is not set
129# CONFIG_CPU_SUBTYPE_SH7604 is not set 133# CONFIG_CPU_SUBTYPE_MXG is not set
130
131#
132# SH-3 Processor Support
133#
134# CONFIG_CPU_SUBTYPE_SH7300 is not set
135# CONFIG_CPU_SUBTYPE_SH7705 is not set 134# CONFIG_CPU_SUBTYPE_SH7705 is not set
136# CONFIG_CPU_SUBTYPE_SH7706 is not set 135# CONFIG_CPU_SUBTYPE_SH7706 is not set
137# CONFIG_CPU_SUBTYPE_SH7707 is not set 136# CONFIG_CPU_SUBTYPE_SH7707 is not set
138# CONFIG_CPU_SUBTYPE_SH7708 is not set 137# CONFIG_CPU_SUBTYPE_SH7708 is not set
139# CONFIG_CPU_SUBTYPE_SH7709 is not set 138# CONFIG_CPU_SUBTYPE_SH7709 is not set
140# CONFIG_CPU_SUBTYPE_SH7710 is not set 139# CONFIG_CPU_SUBTYPE_SH7710 is not set
141 140# CONFIG_CPU_SUBTYPE_SH7712 is not set
142# 141# CONFIG_CPU_SUBTYPE_SH7720 is not set
143# SH-4 Processor Support 142# CONFIG_CPU_SUBTYPE_SH7721 is not set
144#
145# CONFIG_CPU_SUBTYPE_SH7750 is not set 143# CONFIG_CPU_SUBTYPE_SH7750 is not set
146# CONFIG_CPU_SUBTYPE_SH7091 is not set 144# CONFIG_CPU_SUBTYPE_SH7091 is not set
147# CONFIG_CPU_SUBTYPE_SH7750R is not set 145# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -150,69 +148,90 @@ CONFIG_CPU_SUBTYPE_SH7751=y
150# CONFIG_CPU_SUBTYPE_SH7751R is not set 148# CONFIG_CPU_SUBTYPE_SH7751R is not set
151# CONFIG_CPU_SUBTYPE_SH7760 is not set 149# CONFIG_CPU_SUBTYPE_SH7760 is not set
152# CONFIG_CPU_SUBTYPE_SH4_202 is not set 150# CONFIG_CPU_SUBTYPE_SH4_202 is not set
153 151# CONFIG_CPU_SUBTYPE_SH7723 is not set
154# 152# CONFIG_CPU_SUBTYPE_SH7763 is not set
155# ST40 Processor Support
156#
157# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
158# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
159
160#
161# SH-4A Processor Support
162#
163# CONFIG_CPU_SUBTYPE_SH7770 is not set 153# CONFIG_CPU_SUBTYPE_SH7770 is not set
164# CONFIG_CPU_SUBTYPE_SH7780 is not set 154# CONFIG_CPU_SUBTYPE_SH7780 is not set
165 155# CONFIG_CPU_SUBTYPE_SH7785 is not set
166# 156# CONFIG_CPU_SUBTYPE_SHX3 is not set
167# SH4AL-DSP Processor Support
168#
169# CONFIG_CPU_SUBTYPE_SH73180 is not set
170# CONFIG_CPU_SUBTYPE_SH7343 is not set 157# CONFIG_CPU_SUBTYPE_SH7343 is not set
158# CONFIG_CPU_SUBTYPE_SH7722 is not set
159# CONFIG_CPU_SUBTYPE_SH7366 is not set
160# CONFIG_CPU_SUBTYPE_SH5_101 is not set
161# CONFIG_CPU_SUBTYPE_SH5_103 is not set
171 162
172# 163#
173# Memory management options 164# Memory management options
174# 165#
166CONFIG_QUICKLIST=y
175CONFIG_MMU=y 167CONFIG_MMU=y
176CONFIG_PAGE_OFFSET=0x80000000 168CONFIG_PAGE_OFFSET=0x80000000
177CONFIG_MEMORY_START=0x08000000 169CONFIG_MEMORY_START=0x08000000
178CONFIG_MEMORY_SIZE=0x08000000 170CONFIG_MEMORY_SIZE=0x08000000
171CONFIG_29BIT=y
179CONFIG_VSYSCALL=y 172CONFIG_VSYSCALL=y
173CONFIG_ARCH_FLATMEM_ENABLE=y
174CONFIG_ARCH_SPARSEMEM_ENABLE=y
175CONFIG_ARCH_SPARSEMEM_DEFAULT=y
176CONFIG_MAX_ACTIVE_REGIONS=1
177CONFIG_ARCH_POPULATES_NODE_MAP=y
178CONFIG_ARCH_SELECT_MEMORY_MODEL=y
179CONFIG_PAGE_SIZE_4KB=y
180# CONFIG_PAGE_SIZE_8KB is not set
181# CONFIG_PAGE_SIZE_16KB is not set
182# CONFIG_PAGE_SIZE_64KB is not set
183CONFIG_ENTRY_OFFSET=0x00001000
180CONFIG_SELECT_MEMORY_MODEL=y 184CONFIG_SELECT_MEMORY_MODEL=y
181CONFIG_FLATMEM_MANUAL=y 185CONFIG_FLATMEM_MANUAL=y
182# CONFIG_DISCONTIGMEM_MANUAL is not set 186# CONFIG_DISCONTIGMEM_MANUAL is not set
183# CONFIG_SPARSEMEM_MANUAL is not set 187# CONFIG_SPARSEMEM_MANUAL is not set
184CONFIG_FLATMEM=y 188CONFIG_FLATMEM=y
185CONFIG_FLAT_NODE_MEM_MAP=y 189CONFIG_FLAT_NODE_MEM_MAP=y
186# CONFIG_SPARSEMEM_STATIC is not set 190CONFIG_SPARSEMEM_STATIC=y
191CONFIG_PAGEFLAGS_EXTENDED=y
187CONFIG_SPLIT_PTLOCK_CPUS=4 192CONFIG_SPLIT_PTLOCK_CPUS=4
188# CONFIG_RESOURCES_64BIT is not set 193# CONFIG_RESOURCES_64BIT is not set
194# CONFIG_PHYS_ADDR_T_64BIT is not set
195CONFIG_ZONE_DMA_FLAG=0
196CONFIG_NR_QUICK=2
197CONFIG_UNEVICTABLE_LRU=y
189 198
190# 199#
191# Cache configuration 200# Cache configuration
192# 201#
193# CONFIG_SH_DIRECT_MAPPED is not set 202# CONFIG_SH_DIRECT_MAPPED is not set
194# CONFIG_SH_WRITETHROUGH is not set 203CONFIG_CACHE_WRITEBACK=y
195# CONFIG_SH_OCRAM is not set 204# CONFIG_CACHE_WRITETHROUGH is not set
196CONFIG_CF_ENABLER=y 205# CONFIG_CACHE_OFF is not set
197CONFIG_CF_AREA5=y
198# CONFIG_CF_AREA6 is not set
199CONFIG_CF_BASE_ADDR=0xb4000000
200 206
201# 207#
202# Processor features 208# Processor features
203# 209#
204CONFIG_CPU_LITTLE_ENDIAN=y 210CONFIG_CPU_LITTLE_ENDIAN=y
211# CONFIG_CPU_BIG_ENDIAN is not set
205CONFIG_SH_FPU=y 212CONFIG_SH_FPU=y
206# CONFIG_SH_DSP is not set
207# CONFIG_SH_STORE_QUEUES is not set 213# CONFIG_SH_STORE_QUEUES is not set
208CONFIG_CPU_HAS_INTEVT=y 214CONFIG_CPU_HAS_INTEVT=y
215CONFIG_CPU_HAS_IPR_IRQ=y
209CONFIG_CPU_HAS_SR_RB=y 216CONFIG_CPU_HAS_SR_RB=y
217CONFIG_CPU_HAS_PTEA=y
218CONFIG_CPU_HAS_FPU=y
210 219
211# 220#
212# Timer support 221# Board support
222#
223# CONFIG_SH_7751_SOLUTION_ENGINE is not set
224CONFIG_SH_SH03=y
225
226#
227# Timer and clock configuration
213# 228#
214CONFIG_SH_TMU=y 229CONFIG_SH_TMU=y
230CONFIG_SH_TIMER_IRQ=16
215CONFIG_SH_PCLK_FREQ=60000000 231CONFIG_SH_PCLK_FREQ=60000000
232# CONFIG_NO_HZ is not set
233# CONFIG_HIGH_RES_TIMERS is not set
234CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
216 235
217# 236#
218# CPU Frequency scaling 237# CPU Frequency scaling
@@ -227,22 +246,31 @@ CONFIG_SH_PCLK_FREQ=60000000
227# 246#
228# Companion Chips 247# Companion Chips
229# 248#
230# CONFIG_HD6446X_SERIES is not set 249
250#
251# Additional SuperH Device Drivers
252#
231CONFIG_HEARTBEAT=y 253CONFIG_HEARTBEAT=y
254# CONFIG_PUSH_SWITCH is not set
232 255
233# 256#
234# Kernel features 257# Kernel features
235# 258#
236# CONFIG_HZ_100 is not set 259# CONFIG_HZ_100 is not set
237CONFIG_HZ_250=y 260CONFIG_HZ_250=y
261# CONFIG_HZ_300 is not set
238# CONFIG_HZ_1000 is not set 262# CONFIG_HZ_1000 is not set
239CONFIG_HZ=250 263CONFIG_HZ=250
264# CONFIG_SCHED_HRTICK is not set
240# CONFIG_KEXEC is not set 265# CONFIG_KEXEC is not set
241# CONFIG_SMP is not set 266# CONFIG_CRASH_DUMP is not set
267# CONFIG_SECCOMP is not set
242# CONFIG_PREEMPT_NONE is not set 268# CONFIG_PREEMPT_NONE is not set
243# CONFIG_PREEMPT_VOLUNTARY is not set 269# CONFIG_PREEMPT_VOLUNTARY is not set
244CONFIG_PREEMPT=y 270CONFIG_PREEMPT=y
245CONFIG_PREEMPT_BKL=y 271# CONFIG_PREEMPT_RCU is not set
272CONFIG_GUSA=y
273# CONFIG_GUSA_RB is not set
246 274
247# 275#
248# Boot options 276# Boot options
@@ -256,20 +284,17 @@ CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs"
256# 284#
257# Bus options 285# Bus options
258# 286#
287CONFIG_CF_ENABLER=y
288CONFIG_CF_AREA5=y
289# CONFIG_CF_AREA6 is not set
290CONFIG_CF_BASE_ADDR=0xb4000000
259CONFIG_PCI=y 291CONFIG_PCI=y
260CONFIG_SH_PCIDMA_NONCOHERENT=y 292CONFIG_SH_PCIDMA_NONCOHERENT=y
261CONFIG_PCI_AUTO=y 293CONFIG_PCI_AUTO=y
262CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 294CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
263# CONFIG_PCI_MULTITHREAD_PROBE is not set 295# CONFIG_ARCH_SUPPORTS_MSI is not set
264 296CONFIG_PCI_LEGACY=y
265#
266# PCCARD (PCMCIA/CardBus) support
267#
268# CONFIG_PCCARD is not set 297# CONFIG_PCCARD is not set
269
270#
271# PCI Hotplug Support
272#
273CONFIG_HOTPLUG_PCI=m 298CONFIG_HOTPLUG_PCI=m
274# CONFIG_HOTPLUG_PCI_FAKE is not set 299# CONFIG_HOTPLUG_PCI_FAKE is not set
275# CONFIG_HOTPLUG_PCI_CPCI is not set 300# CONFIG_HOTPLUG_PCI_CPCI is not set
@@ -279,30 +304,24 @@ CONFIG_HOTPLUG_PCI=m
279# Executable file formats 304# Executable file formats
280# 305#
281CONFIG_BINFMT_ELF=y 306CONFIG_BINFMT_ELF=y
282# CONFIG_BINFMT_FLAT is not set 307# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
308# CONFIG_HAVE_AOUT is not set
283CONFIG_BINFMT_MISC=y 309CONFIG_BINFMT_MISC=y
284
285#
286# Power management options (EXPERIMENTAL)
287#
288# CONFIG_PM is not set
289
290#
291# Networking
292#
293CONFIG_NET=y 310CONFIG_NET=y
294 311
295# 312#
296# Networking options 313# Networking options
297# 314#
298# CONFIG_NETDEBUG is not set
299CONFIG_PACKET=y 315CONFIG_PACKET=y
300# CONFIG_PACKET_MMAP is not set 316# CONFIG_PACKET_MMAP is not set
301CONFIG_UNIX=y 317CONFIG_UNIX=y
302CONFIG_XFRM=y 318CONFIG_XFRM=y
303# CONFIG_XFRM_USER is not set 319# CONFIG_XFRM_USER is not set
304# CONFIG_XFRM_SUB_POLICY is not set 320# CONFIG_XFRM_SUB_POLICY is not set
321# CONFIG_XFRM_MIGRATE is not set
322# CONFIG_XFRM_STATISTICS is not set
305CONFIG_NET_KEY=y 323CONFIG_NET_KEY=y
324# CONFIG_NET_KEY_MIGRATE is not set
306CONFIG_INET=y 325CONFIG_INET=y
307CONFIG_IP_MULTICAST=y 326CONFIG_IP_MULTICAST=y
308# CONFIG_IP_ADVANCED_ROUTER is not set 327# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -323,33 +342,23 @@ CONFIG_IP_PNP_RARP=y
323# CONFIG_INET_TUNNEL is not set 342# CONFIG_INET_TUNNEL is not set
324CONFIG_INET_XFRM_MODE_TRANSPORT=y 343CONFIG_INET_XFRM_MODE_TRANSPORT=y
325CONFIG_INET_XFRM_MODE_TUNNEL=y 344CONFIG_INET_XFRM_MODE_TUNNEL=y
345CONFIG_INET_XFRM_MODE_BEET=y
346# CONFIG_INET_LRO is not set
326CONFIG_INET_DIAG=y 347CONFIG_INET_DIAG=y
327CONFIG_INET_TCP_DIAG=y 348CONFIG_INET_TCP_DIAG=y
328# CONFIG_TCP_CONG_ADVANCED is not set 349# CONFIG_TCP_CONG_ADVANCED is not set
329CONFIG_TCP_CONG_CUBIC=y 350CONFIG_TCP_CONG_CUBIC=y
330CONFIG_DEFAULT_TCP_CONG="cubic" 351CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_TCP_MD5SIG is not set
331# CONFIG_IPV6 is not set 353# CONFIG_IPV6 is not set
332# CONFIG_INET6_XFRM_TUNNEL is not set
333# CONFIG_INET6_TUNNEL is not set
334# CONFIG_NETWORK_SECMARK is not set 354# CONFIG_NETWORK_SECMARK is not set
335# CONFIG_NETFILTER is not set 355# CONFIG_NETFILTER is not set
336
337#
338# DCCP Configuration (EXPERIMENTAL)
339#
340# CONFIG_IP_DCCP is not set 356# CONFIG_IP_DCCP is not set
341
342#
343# SCTP Configuration (EXPERIMENTAL)
344#
345# CONFIG_IP_SCTP is not set 357# CONFIG_IP_SCTP is not set
346
347#
348# TIPC Configuration (EXPERIMENTAL)
349#
350# CONFIG_TIPC is not set 358# CONFIG_TIPC is not set
351# CONFIG_ATM is not set 359# CONFIG_ATM is not set
352# CONFIG_BRIDGE is not set 360# CONFIG_BRIDGE is not set
361# CONFIG_NET_DSA is not set
353# CONFIG_VLAN_8021Q is not set 362# CONFIG_VLAN_8021Q is not set
354# CONFIG_DECNET is not set 363# CONFIG_DECNET is not set
355# CONFIG_LLC2 is not set 364# CONFIG_LLC2 is not set
@@ -359,10 +368,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
359# CONFIG_LAPB is not set 368# CONFIG_LAPB is not set
360# CONFIG_ECONET is not set 369# CONFIG_ECONET is not set
361# CONFIG_WAN_ROUTER is not set 370# CONFIG_WAN_ROUTER is not set
362
363#
364# QoS and/or fair queueing
365#
366# CONFIG_NET_SCHED is not set 371# CONFIG_NET_SCHED is not set
367 372
368# 373#
@@ -370,9 +375,19 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
370# 375#
371# CONFIG_NET_PKTGEN is not set 376# CONFIG_NET_PKTGEN is not set
372# CONFIG_HAMRADIO is not set 377# CONFIG_HAMRADIO is not set
378# CONFIG_CAN is not set
373# CONFIG_IRDA is not set 379# CONFIG_IRDA is not set
374# CONFIG_BT is not set 380# CONFIG_BT is not set
381# CONFIG_AF_RXRPC is not set
382# CONFIG_PHONET is not set
383CONFIG_WIRELESS=y
384# CONFIG_CFG80211 is not set
385# CONFIG_WIRELESS_OLD_REGULATORY is not set
386# CONFIG_WIRELESS_EXT is not set
387# CONFIG_MAC80211 is not set
375# CONFIG_IEEE80211 is not set 388# CONFIG_IEEE80211 is not set
389# CONFIG_RFKILL is not set
390# CONFIG_NET_9P is not set
376 391
377# 392#
378# Device Drivers 393# Device Drivers
@@ -381,34 +396,15 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
381# 396#
382# Generic Driver Options 397# Generic Driver Options
383# 398#
399CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
384# CONFIG_STANDALONE is not set 400# CONFIG_STANDALONE is not set
385# CONFIG_PREVENT_FIRMWARE_BUILD is not set 401# CONFIG_PREVENT_FIRMWARE_BUILD is not set
386# CONFIG_FW_LOADER is not set 402# CONFIG_FW_LOADER is not set
387# CONFIG_SYS_HYPERVISOR is not set 403# CONFIG_SYS_HYPERVISOR is not set
388
389#
390# Connector - unified userspace <-> kernelspace linker
391#
392# CONFIG_CONNECTOR is not set 404# CONFIG_CONNECTOR is not set
393
394#
395# Memory Technology Devices (MTD)
396#
397# CONFIG_MTD is not set 405# CONFIG_MTD is not set
398
399#
400# Parallel port support
401#
402# CONFIG_PARPORT is not set 406# CONFIG_PARPORT is not set
403 407CONFIG_BLK_DEV=y
404#
405# Plug and Play support
406#
407
408#
409# Block devices
410#
411# CONFIG_BLK_CPQ_DA is not set
412# CONFIG_BLK_CPQ_CISS_DA is not set 408# CONFIG_BLK_CPQ_CISS_DA is not set
413# CONFIG_BLK_DEV_DAC960 is not set 409# CONFIG_BLK_DEV_DAC960 is not set
414# CONFIG_BLK_DEV_UMEM is not set 410# CONFIG_BLK_DEV_UMEM is not set
@@ -420,45 +416,76 @@ CONFIG_BLK_DEV_NBD=y
420CONFIG_BLK_DEV_RAM=y 416CONFIG_BLK_DEV_RAM=y
421CONFIG_BLK_DEV_RAM_COUNT=16 417CONFIG_BLK_DEV_RAM_COUNT=16
422CONFIG_BLK_DEV_RAM_SIZE=4096 418CONFIG_BLK_DEV_RAM_SIZE=4096
423CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 419# CONFIG_BLK_DEV_XIP is not set
424CONFIG_BLK_DEV_INITRD=y
425# CONFIG_CDROM_PKTCDVD is not set 420# CONFIG_CDROM_PKTCDVD is not set
426# CONFIG_ATA_OVER_ETH is not set 421# CONFIG_ATA_OVER_ETH is not set
427 422# CONFIG_BLK_DEV_HD is not set
428# 423CONFIG_MISC_DEVICES=y
429# ATA/ATAPI/MFM/RLL support 424# CONFIG_PHANTOM is not set
430# 425# CONFIG_EEPROM_93CX6 is not set
426# CONFIG_SGI_IOC4 is not set
427# CONFIG_TIFM_CORE is not set
428# CONFIG_ENCLOSURE_SERVICES is not set
429# CONFIG_HP_ILO is not set
430CONFIG_HAVE_IDE=y
431CONFIG_IDE=y 431CONFIG_IDE=y
432CONFIG_IDE_MAX_HWIFS=4
433CONFIG_BLK_DEV_IDE=y
434 432
435# 433#
436# Please see Documentation/ide.txt for help/info on IDE drives 434# Please see Documentation/ide/ide.txt for help/info on IDE drives
437# 435#
436CONFIG_IDE_ATAPI=y
438# CONFIG_BLK_DEV_IDE_SATA is not set 437# CONFIG_BLK_DEV_IDE_SATA is not set
439CONFIG_BLK_DEV_IDEDISK=y 438CONFIG_IDE_GD=y
440CONFIG_IDEDISK_MULTI_MODE=y 439CONFIG_IDE_GD_ATA=y
440# CONFIG_IDE_GD_ATAPI is not set
441CONFIG_BLK_DEV_IDECD=m 441CONFIG_BLK_DEV_IDECD=m
442CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
442CONFIG_BLK_DEV_IDETAPE=m 443CONFIG_BLK_DEV_IDETAPE=m
443CONFIG_BLK_DEV_IDEFLOPPY=m
444# CONFIG_BLK_DEV_IDESCSI is not set 444# CONFIG_BLK_DEV_IDESCSI is not set
445# CONFIG_IDE_TASK_IOCTL is not set 445# CONFIG_IDE_TASK_IOCTL is not set
446CONFIG_IDE_PROC_FS=y
446 447
447# 448#
448# IDE chipset support/bugfixes 449# IDE chipset support/bugfixes
449# 450#
450CONFIG_IDE_GENERIC=y 451# CONFIG_BLK_DEV_PLATFORM is not set
451# CONFIG_BLK_DEV_IDEPCI is not set 452
452# CONFIG_IDE_ARM is not set 453#
454# PCI IDE chipsets support
455#
456# CONFIG_BLK_DEV_GENERIC is not set
457# CONFIG_BLK_DEV_OPTI621 is not set
458# CONFIG_BLK_DEV_AEC62XX is not set
459# CONFIG_BLK_DEV_ALI15X3 is not set
460# CONFIG_BLK_DEV_AMD74XX is not set
461# CONFIG_BLK_DEV_CMD64X is not set
462# CONFIG_BLK_DEV_TRIFLEX is not set
463# CONFIG_BLK_DEV_CS5520 is not set
464# CONFIG_BLK_DEV_CS5530 is not set
465# CONFIG_BLK_DEV_HPT366 is not set
466# CONFIG_BLK_DEV_JMICRON is not set
467# CONFIG_BLK_DEV_SC1200 is not set
468# CONFIG_BLK_DEV_PIIX is not set
469# CONFIG_BLK_DEV_IT8213 is not set
470# CONFIG_BLK_DEV_IT821X is not set
471# CONFIG_BLK_DEV_NS87415 is not set
472# CONFIG_BLK_DEV_PDC202XX_OLD is not set
473# CONFIG_BLK_DEV_PDC202XX_NEW is not set
474# CONFIG_BLK_DEV_SVWKS is not set
475# CONFIG_BLK_DEV_SIIMAGE is not set
476# CONFIG_BLK_DEV_SLC90E66 is not set
477# CONFIG_BLK_DEV_TRM290 is not set
478# CONFIG_BLK_DEV_VIA82CXXX is not set
479# CONFIG_BLK_DEV_TC86C001 is not set
453# CONFIG_BLK_DEV_IDEDMA is not set 480# CONFIG_BLK_DEV_IDEDMA is not set
454# CONFIG_IDEDMA_AUTO is not set
455# CONFIG_BLK_DEV_HD is not set
456 481
457# 482#
458# SCSI device support 483# SCSI device support
459# 484#
460# CONFIG_RAID_ATTRS is not set 485# CONFIG_RAID_ATTRS is not set
461CONFIG_SCSI=m 486CONFIG_SCSI=m
487CONFIG_SCSI_DMA=y
488# CONFIG_SCSI_TGT is not set
462# CONFIG_SCSI_NETLINK is not set 489# CONFIG_SCSI_NETLINK is not set
463CONFIG_SCSI_PROC_FS=y 490CONFIG_SCSI_PROC_FS=y
464 491
@@ -479,6 +506,8 @@ CONFIG_CHR_DEV_SG=m
479# CONFIG_SCSI_MULTI_LUN is not set 506# CONFIG_SCSI_MULTI_LUN is not set
480# CONFIG_SCSI_CONSTANTS is not set 507# CONFIG_SCSI_CONSTANTS is not set
481# CONFIG_SCSI_LOGGING is not set 508# CONFIG_SCSI_LOGGING is not set
509# CONFIG_SCSI_SCAN_ASYNC is not set
510CONFIG_SCSI_WAIT_SCAN=m
482 511
483# 512#
484# SCSI Transports 513# SCSI Transports
@@ -486,12 +515,9 @@ CONFIG_CHR_DEV_SG=m
486# CONFIG_SCSI_SPI_ATTRS is not set 515# CONFIG_SCSI_SPI_ATTRS is not set
487# CONFIG_SCSI_FC_ATTRS is not set 516# CONFIG_SCSI_FC_ATTRS is not set
488# CONFIG_SCSI_ISCSI_ATTRS is not set 517# CONFIG_SCSI_ISCSI_ATTRS is not set
489# CONFIG_SCSI_SAS_ATTRS is not set
490# CONFIG_SCSI_SAS_LIBSAS is not set 518# CONFIG_SCSI_SAS_LIBSAS is not set
491 519# CONFIG_SCSI_SRP_ATTRS is not set
492# 520CONFIG_SCSI_LOWLEVEL=y
493# SCSI low-level drivers
494#
495# CONFIG_ISCSI_TCP is not set 521# CONFIG_ISCSI_TCP is not set
496# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 522# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
497# CONFIG_SCSI_3W_9XXX is not set 523# CONFIG_SCSI_3W_9XXX is not set
@@ -501,7 +527,6 @@ CONFIG_CHR_DEV_SG=m
501# CONFIG_SCSI_AIC7XXX_OLD is not set 527# CONFIG_SCSI_AIC7XXX_OLD is not set
502# CONFIG_SCSI_AIC79XX is not set 528# CONFIG_SCSI_AIC79XX is not set
503# CONFIG_SCSI_AIC94XX is not set 529# CONFIG_SCSI_AIC94XX is not set
504# CONFIG_SCSI_DPT_I2O is not set
505# CONFIG_SCSI_ARCMSR is not set 530# CONFIG_SCSI_ARCMSR is not set
506# CONFIG_MEGARAID_NEWGEN is not set 531# CONFIG_MEGARAID_NEWGEN is not set
507# CONFIG_MEGARAID_LEGACY is not set 532# CONFIG_MEGARAID_LEGACY is not set
@@ -512,88 +537,67 @@ CONFIG_CHR_DEV_SG=m
512# CONFIG_SCSI_IPS is not set 537# CONFIG_SCSI_IPS is not set
513# CONFIG_SCSI_INITIO is not set 538# CONFIG_SCSI_INITIO is not set
514# CONFIG_SCSI_INIA100 is not set 539# CONFIG_SCSI_INIA100 is not set
540# CONFIG_SCSI_MVSAS is not set
515# CONFIG_SCSI_STEX is not set 541# CONFIG_SCSI_STEX is not set
516# CONFIG_SCSI_SYM53C8XX_2 is not set 542# CONFIG_SCSI_SYM53C8XX_2 is not set
517# CONFIG_SCSI_IPR is not set
518# CONFIG_SCSI_QLOGIC_1280 is not set 543# CONFIG_SCSI_QLOGIC_1280 is not set
519# CONFIG_SCSI_QLA_FC is not set 544# CONFIG_SCSI_QLA_FC is not set
545# CONFIG_SCSI_QLA_ISCSI is not set
520# CONFIG_SCSI_LPFC is not set 546# CONFIG_SCSI_LPFC is not set
521# CONFIG_SCSI_DC395x is not set 547# CONFIG_SCSI_DC395x is not set
522# CONFIG_SCSI_DC390T is not set 548# CONFIG_SCSI_DC390T is not set
523# CONFIG_SCSI_NSP32 is not set 549# CONFIG_SCSI_NSP32 is not set
524# CONFIG_SCSI_DEBUG is not set 550# CONFIG_SCSI_DEBUG is not set
525 551# CONFIG_SCSI_SRP is not set
526# 552# CONFIG_SCSI_DH is not set
527# Serial ATA (prod) and Parallel ATA (experimental) drivers
528#
529# CONFIG_ATA is not set 553# CONFIG_ATA is not set
530
531#
532# Multi-device support (RAID and LVM)
533#
534# CONFIG_MD is not set 554# CONFIG_MD is not set
535
536#
537# Fusion MPT device support
538#
539# CONFIG_FUSION is not set 555# CONFIG_FUSION is not set
540# CONFIG_FUSION_SPI is not set
541# CONFIG_FUSION_FC is not set
542# CONFIG_FUSION_SAS is not set
543 556
544# 557#
545# IEEE 1394 (FireWire) support 558# IEEE 1394 (FireWire) support
546# 559#
547# CONFIG_IEEE1394 is not set
548 560
549# 561#
550# I2O device support 562# Enable only one of the two stacks, unless you know what you are doing
551# 563#
564# CONFIG_FIREWIRE is not set
565# CONFIG_IEEE1394 is not set
552# CONFIG_I2O is not set 566# CONFIG_I2O is not set
553
554#
555# Network device support
556#
557CONFIG_NETDEVICES=y 567CONFIG_NETDEVICES=y
558# CONFIG_DUMMY is not set 568# CONFIG_DUMMY is not set
559# CONFIG_BONDING is not set 569# CONFIG_BONDING is not set
570# CONFIG_MACVLAN is not set
560# CONFIG_EQUALIZER is not set 571# CONFIG_EQUALIZER is not set
561# CONFIG_TUN is not set 572# CONFIG_TUN is not set
562 573# CONFIG_VETH is not set
563#
564# ARCnet devices
565#
566# CONFIG_ARCNET is not set 574# CONFIG_ARCNET is not set
567
568#
569# PHY device support
570#
571# CONFIG_PHYLIB is not set 575# CONFIG_PHYLIB is not set
572
573#
574# Ethernet (10 or 100Mbit)
575#
576CONFIG_NET_ETHERNET=y 576CONFIG_NET_ETHERNET=y
577CONFIG_MII=y 577CONFIG_MII=y
578# CONFIG_AX88796 is not set
578# CONFIG_STNIC is not set 579# CONFIG_STNIC is not set
579# CONFIG_HAPPYMEAL is not set 580# CONFIG_HAPPYMEAL is not set
580# CONFIG_SUNGEM is not set 581# CONFIG_SUNGEM is not set
581# CONFIG_CASSINI is not set 582# CONFIG_CASSINI is not set
582# CONFIG_NET_VENDOR_3COM is not set 583# CONFIG_NET_VENDOR_3COM is not set
583# CONFIG_SMC91X is not set 584# CONFIG_SMC91X is not set
584 585# CONFIG_SMC911X is not set
585#
586# Tulip family network device support
587#
588# CONFIG_NET_TULIP is not set 586# CONFIG_NET_TULIP is not set
589# CONFIG_HP100 is not set 587# CONFIG_HP100 is not set
588# CONFIG_IBM_NEW_EMAC_ZMII is not set
589# CONFIG_IBM_NEW_EMAC_RGMII is not set
590# CONFIG_IBM_NEW_EMAC_TAH is not set
591# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
592# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
593# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
594# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
590CONFIG_NET_PCI=y 595CONFIG_NET_PCI=y
591# CONFIG_PCNET32 is not set 596# CONFIG_PCNET32 is not set
592# CONFIG_AMD8111_ETH is not set 597# CONFIG_AMD8111_ETH is not set
593# CONFIG_ADAPTEC_STARFIRE is not set 598# CONFIG_ADAPTEC_STARFIRE is not set
594# CONFIG_B44 is not set 599# CONFIG_B44 is not set
595# CONFIG_FORCEDETH is not set 600# CONFIG_FORCEDETH is not set
596# CONFIG_DGRS is not set
597# CONFIG_EEPRO100 is not set 601# CONFIG_EEPRO100 is not set
598# CONFIG_E100 is not set 602# CONFIG_E100 is not set
599# CONFIG_FEALNX is not set 603# CONFIG_FEALNX is not set
@@ -601,18 +605,21 @@ CONFIG_NET_PCI=y
601# CONFIG_NE2K_PCI is not set 605# CONFIG_NE2K_PCI is not set
602CONFIG_8139CP=y 606CONFIG_8139CP=y
603# CONFIG_8139TOO is not set 607# CONFIG_8139TOO is not set
608# CONFIG_R6040 is not set
604# CONFIG_SIS900 is not set 609# CONFIG_SIS900 is not set
605# CONFIG_EPIC100 is not set 610# CONFIG_EPIC100 is not set
606# CONFIG_SUNDANCE is not set 611# CONFIG_SUNDANCE is not set
607# CONFIG_TLAN is not set 612# CONFIG_TLAN is not set
608# CONFIG_VIA_RHINE is not set 613# CONFIG_VIA_RHINE is not set
609 614# CONFIG_SC92031 is not set
610# 615# CONFIG_ATL2 is not set
611# Ethernet (1000 Mbit) 616CONFIG_NETDEV_1000=y
612#
613# CONFIG_ACENIC is not set 617# CONFIG_ACENIC is not set
614# CONFIG_DL2K is not set 618# CONFIG_DL2K is not set
615# CONFIG_E1000 is not set 619# CONFIG_E1000 is not set
620# CONFIG_E1000E is not set
621# CONFIG_IP1000 is not set
622# CONFIG_IGB is not set
616# CONFIG_NS83820 is not set 623# CONFIG_NS83820 is not set
617# CONFIG_HAMACHI is not set 624# CONFIG_HAMACHI is not set
618# CONFIG_YELLOWFIN is not set 625# CONFIG_YELLOWFIN is not set
@@ -620,52 +627,46 @@ CONFIG_8139CP=y
620# CONFIG_SIS190 is not set 627# CONFIG_SIS190 is not set
621# CONFIG_SKGE is not set 628# CONFIG_SKGE is not set
622# CONFIG_SKY2 is not set 629# CONFIG_SKY2 is not set
623# CONFIG_SK98LIN is not set
624# CONFIG_VIA_VELOCITY is not set 630# CONFIG_VIA_VELOCITY is not set
625# CONFIG_TIGON3 is not set 631# CONFIG_TIGON3 is not set
626# CONFIG_BNX2 is not set 632# CONFIG_BNX2 is not set
627# CONFIG_QLA3XXX is not set 633# CONFIG_QLA3XXX is not set
628 634# CONFIG_ATL1 is not set
629# 635# CONFIG_ATL1E is not set
630# Ethernet (10000 Mbit) 636# CONFIG_JME is not set
631# 637CONFIG_NETDEV_10000=y
632# CONFIG_CHELSIO_T1 is not set 638# CONFIG_CHELSIO_T1 is not set
639# CONFIG_CHELSIO_T3 is not set
640# CONFIG_ENIC is not set
641# CONFIG_IXGBE is not set
633# CONFIG_IXGB is not set 642# CONFIG_IXGB is not set
634# CONFIG_S2IO is not set 643# CONFIG_S2IO is not set
635# CONFIG_MYRI10GE is not set 644# CONFIG_MYRI10GE is not set
636 645# CONFIG_NETXEN_NIC is not set
637# 646# CONFIG_NIU is not set
638# Token Ring devices 647# CONFIG_MLX4_CORE is not set
639# 648# CONFIG_TEHUTI is not set
649# CONFIG_BNX2X is not set
650# CONFIG_QLGE is not set
651# CONFIG_SFC is not set
640# CONFIG_TR is not set 652# CONFIG_TR is not set
641 653
642# 654#
643# Wireless LAN (non-hamradio) 655# Wireless LAN
644#
645# CONFIG_NET_RADIO is not set
646
647#
648# Wan interfaces
649# 656#
657# CONFIG_WLAN_PRE80211 is not set
658# CONFIG_WLAN_80211 is not set
659# CONFIG_IWLWIFI_LEDS is not set
650# CONFIG_WAN is not set 660# CONFIG_WAN is not set
651# CONFIG_FDDI is not set 661# CONFIG_FDDI is not set
652# CONFIG_HIPPI is not set 662# CONFIG_HIPPI is not set
653# CONFIG_PPP is not set 663# CONFIG_PPP is not set
654# CONFIG_SLIP is not set 664# CONFIG_SLIP is not set
655# CONFIG_NET_FC is not set 665# CONFIG_NET_FC is not set
656# CONFIG_SHAPER is not set
657# CONFIG_NETCONSOLE is not set 666# CONFIG_NETCONSOLE is not set
658# CONFIG_NETPOLL is not set 667# CONFIG_NETPOLL is not set
659# CONFIG_NET_POLL_CONTROLLER is not set 668# CONFIG_NET_POLL_CONTROLLER is not set
660
661#
662# ISDN subsystem
663#
664# CONFIG_ISDN is not set 669# CONFIG_ISDN is not set
665
666#
667# Telephony Support
668#
669# CONFIG_PHONE is not set 670# CONFIG_PHONE is not set
670 671
671# 672#
@@ -673,6 +674,7 @@ CONFIG_8139CP=y
673# 674#
674CONFIG_INPUT=y 675CONFIG_INPUT=y
675# CONFIG_INPUT_FF_MEMLESS is not set 676# CONFIG_INPUT_FF_MEMLESS is not set
677# CONFIG_INPUT_POLLDEV is not set
676 678
677# 679#
678# Userland interfaces 680# Userland interfaces
@@ -682,7 +684,6 @@ CONFIG_INPUT_MOUSEDEV=y
682CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 684CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
683CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 685CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
684# CONFIG_INPUT_JOYDEV is not set 686# CONFIG_INPUT_JOYDEV is not set
685# CONFIG_INPUT_TSDEV is not set
686# CONFIG_INPUT_EVDEV is not set 687# CONFIG_INPUT_EVDEV is not set
687# CONFIG_INPUT_EVBUG is not set 688# CONFIG_INPUT_EVBUG is not set
688 689
@@ -692,6 +693,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
692# CONFIG_INPUT_KEYBOARD is not set 693# CONFIG_INPUT_KEYBOARD is not set
693# CONFIG_INPUT_MOUSE is not set 694# CONFIG_INPUT_MOUSE is not set
694# CONFIG_INPUT_JOYSTICK is not set 695# CONFIG_INPUT_JOYSTICK is not set
696# CONFIG_INPUT_TABLET is not set
695# CONFIG_INPUT_TOUCHSCREEN is not set 697# CONFIG_INPUT_TOUCHSCREEN is not set
696# CONFIG_INPUT_MISC is not set 698# CONFIG_INPUT_MISC is not set
697 699
@@ -705,10 +707,13 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
705# Character devices 707# Character devices
706# 708#
707CONFIG_VT=y 709CONFIG_VT=y
710CONFIG_CONSOLE_TRANSLATIONS=y
708CONFIG_VT_CONSOLE=y 711CONFIG_VT_CONSOLE=y
709CONFIG_HW_CONSOLE=y 712CONFIG_HW_CONSOLE=y
710# CONFIG_VT_HW_CONSOLE_BINDING is not set 713# CONFIG_VT_HW_CONSOLE_BINDING is not set
714CONFIG_DEVKMEM=y
711# CONFIG_SERIAL_NONSTANDARD is not set 715# CONFIG_SERIAL_NONSTANDARD is not set
716# CONFIG_NOZOMI is not set
712 717
713# 718#
714# Serial drivers 719# Serial drivers
@@ -731,15 +736,36 @@ CONFIG_SERIAL_CORE_CONSOLE=y
731CONFIG_UNIX98_PTYS=y 736CONFIG_UNIX98_PTYS=y
732CONFIG_LEGACY_PTYS=y 737CONFIG_LEGACY_PTYS=y
733CONFIG_LEGACY_PTY_COUNT=256 738CONFIG_LEGACY_PTY_COUNT=256
734
735#
736# IPMI
737#
738# CONFIG_IPMI_HANDLER is not set 739# CONFIG_IPMI_HANDLER is not set
739 740CONFIG_HW_RANDOM=y
740# 741# CONFIG_R3964 is not set
741# Watchdog Cards 742# CONFIG_APPLICOM is not set
742# 743# CONFIG_RAW_DRIVER is not set
744# CONFIG_TCG_TPM is not set
745CONFIG_DEVPORT=y
746# CONFIG_I2C is not set
747# CONFIG_SPI is not set
748# CONFIG_W1 is not set
749# CONFIG_POWER_SUPPLY is not set
750CONFIG_HWMON=y
751# CONFIG_HWMON_VID is not set
752# CONFIG_SENSORS_I5K_AMB is not set
753# CONFIG_SENSORS_F71805F is not set
754# CONFIG_SENSORS_F71882FG is not set
755# CONFIG_SENSORS_IT87 is not set
756# CONFIG_SENSORS_PC87360 is not set
757# CONFIG_SENSORS_PC87427 is not set
758# CONFIG_SENSORS_SIS5595 is not set
759# CONFIG_SENSORS_SMSC47M1 is not set
760# CONFIG_SENSORS_SMSC47B397 is not set
761# CONFIG_SENSORS_VIA686A is not set
762# CONFIG_SENSORS_VT1211 is not set
763# CONFIG_SENSORS_VT8231 is not set
764# CONFIG_SENSORS_W83627HF is not set
765# CONFIG_SENSORS_W83627EHF is not set
766# CONFIG_HWMON_DEBUG_CHIP is not set
767# CONFIG_THERMAL is not set
768# CONFIG_THERMAL_HWMON is not set
743CONFIG_WATCHDOG=y 769CONFIG_WATCHDOG=y
744# CONFIG_WATCHDOG_NOWAYOUT is not set 770# CONFIG_WATCHDOG_NOWAYOUT is not set
745 771
@@ -747,6 +773,7 @@ CONFIG_WATCHDOG=y
747# Watchdog Device Drivers 773# Watchdog Device Drivers
748# 774#
749# CONFIG_SOFT_WATCHDOG is not set 775# CONFIG_SOFT_WATCHDOG is not set
776# CONFIG_ALIM7101_WDT is not set
750CONFIG_SH_WDT=m 777CONFIG_SH_WDT=m
751# CONFIG_SH_WDT_MMAP is not set 778# CONFIG_SH_WDT_MMAP is not set
752 779
@@ -755,142 +782,92 @@ CONFIG_SH_WDT=m
755# 782#
756# CONFIG_PCIPCWATCHDOG is not set 783# CONFIG_PCIPCWATCHDOG is not set
757# CONFIG_WDTPCI is not set 784# CONFIG_WDTPCI is not set
758CONFIG_HW_RANDOM=y
759# CONFIG_GEN_RTC is not set
760# CONFIG_DTLK is not set
761# CONFIG_R3964 is not set
762# CONFIG_APPLICOM is not set
763
764#
765# Ftape, the floppy tape device driver
766#
767# CONFIG_DRM is not set
768# CONFIG_RAW_DRIVER is not set
769 785
770# 786#
771# TPM devices 787# Sonics Silicon Backplane
772# 788#
773# CONFIG_TCG_TPM is not set 789CONFIG_SSB_POSSIBLE=y
774# CONFIG_TELCLOCK is not set 790# CONFIG_SSB is not set
775 791
776# 792#
777# I2C support 793# Multifunction device drivers
778#
779# CONFIG_I2C is not set
780
781# 794#
782# SPI support 795# CONFIG_MFD_CORE is not set
783# 796# CONFIG_MFD_SM501 is not set
784# CONFIG_SPI is not set 797# CONFIG_HTC_PASIC3 is not set
785# CONFIG_SPI_MASTER is not set 798# CONFIG_MFD_TMIO is not set
786 799# CONFIG_MFD_WM8400 is not set
787#
788# Dallas's 1-wire bus
789#
790
791#
792# Hardware Monitoring support
793#
794CONFIG_HWMON=y
795# CONFIG_HWMON_VID is not set
796# CONFIG_SENSORS_ABITUGURU is not set
797# CONFIG_SENSORS_F71805F is not set
798# CONFIG_SENSORS_VT1211 is not set
799# CONFIG_HWMON_DEBUG_CHIP is not set
800 800
801# 801#
802# Misc devices 802# Multimedia devices
803# 803#
804 804
805# 805#
806# Multimedia devices 806# Multimedia core support
807# 807#
808# CONFIG_VIDEO_DEV is not set 808# CONFIG_VIDEO_DEV is not set
809CONFIG_VIDEO_V4L2=y 809# CONFIG_DVB_CORE is not set
810# CONFIG_VIDEO_MEDIA is not set
810 811
811# 812#
812# Digital Video Broadcasting Devices 813# Multimedia drivers
813# 814#
814# CONFIG_DVB is not set 815# CONFIG_DAB is not set
815 816
816# 817#
817# Graphics support 818# Graphics support
818# 819#
819CONFIG_FIRMWARE_EDID=y 820# CONFIG_DRM is not set
821# CONFIG_VGASTATE is not set
822# CONFIG_VIDEO_OUTPUT_CONTROL is not set
820# CONFIG_FB is not set 823# CONFIG_FB is not set
824# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
821 825
822# 826#
823# Console display driver support 827# Display device support
824# 828#
825CONFIG_DUMMY_CONSOLE=y 829# CONFIG_DISPLAY_SUPPORT is not set
826# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
827 830
828# 831#
829# Sound 832# Console display driver support
830# 833#
834CONFIG_DUMMY_CONSOLE=y
831# CONFIG_SOUND is not set 835# CONFIG_SOUND is not set
836CONFIG_HID_SUPPORT=y
837CONFIG_HID=y
838# CONFIG_HID_DEBUG is not set
839# CONFIG_HIDRAW is not set
840# CONFIG_HID_PID is not set
832 841
833# 842#
834# USB support 843# Special HID drivers
835# 844#
845CONFIG_HID_COMPAT=y
846CONFIG_USB_SUPPORT=y
836CONFIG_USB_ARCH_HAS_HCD=y 847CONFIG_USB_ARCH_HAS_HCD=y
837CONFIG_USB_ARCH_HAS_OHCI=y 848CONFIG_USB_ARCH_HAS_OHCI=y
838CONFIG_USB_ARCH_HAS_EHCI=y 849CONFIG_USB_ARCH_HAS_EHCI=y
839# CONFIG_USB is not set 850# CONFIG_USB is not set
851# CONFIG_USB_OTG_WHITELIST is not set
852# CONFIG_USB_OTG_BLACKLIST_HUB is not set
840 853
841# 854#
842# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 855# Enable Host or Gadget support to see Inventra options
843# 856#
844 857
845# 858#
846# USB Gadget Support 859# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
847# 860#
848# CONFIG_USB_GADGET is not set 861# CONFIG_USB_GADGET is not set
849
850#
851# MMC/SD Card support
852#
853# CONFIG_MMC is not set 862# CONFIG_MMC is not set
854 863# CONFIG_MEMSTICK is not set
855#
856# LED devices
857#
858# CONFIG_NEW_LEDS is not set 864# CONFIG_NEW_LEDS is not set
859 865# CONFIG_ACCESSIBILITY is not set
860#
861# LED drivers
862#
863
864#
865# LED Triggers
866#
867
868#
869# InfiniBand support
870#
871# CONFIG_INFINIBAND is not set 866# CONFIG_INFINIBAND is not set
872
873#
874# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
875#
876
877#
878# Real Time Clock
879#
880# CONFIG_RTC_CLASS is not set 867# CONFIG_RTC_CLASS is not set
881 868# CONFIG_DMADEVICES is not set
882# 869# CONFIG_UIO is not set
883# DMA Engine support 870# CONFIG_STAGING is not set
884#
885# CONFIG_DMA_ENGINE is not set
886
887#
888# DMA Clients
889#
890
891#
892# DMA Devices
893#
894 871
895# 872#
896# File systems 873# File systems
@@ -904,20 +881,19 @@ CONFIG_EXT3_FS=y
904CONFIG_EXT3_FS_XATTR=y 881CONFIG_EXT3_FS_XATTR=y
905CONFIG_EXT3_FS_POSIX_ACL=y 882CONFIG_EXT3_FS_POSIX_ACL=y
906# CONFIG_EXT3_FS_SECURITY is not set 883# CONFIG_EXT3_FS_SECURITY is not set
884# CONFIG_EXT4_FS is not set
907CONFIG_JBD=y 885CONFIG_JBD=y
908# CONFIG_JBD_DEBUG is not set
909CONFIG_FS_MBCACHE=y 886CONFIG_FS_MBCACHE=y
910# CONFIG_REISERFS_FS is not set 887# CONFIG_REISERFS_FS is not set
911# CONFIG_JFS_FS is not set 888# CONFIG_JFS_FS is not set
912CONFIG_FS_POSIX_ACL=y 889CONFIG_FS_POSIX_ACL=y
890CONFIG_FILE_LOCKING=y
913# CONFIG_XFS_FS is not set 891# CONFIG_XFS_FS is not set
914# CONFIG_OCFS2_FS is not set 892# CONFIG_OCFS2_FS is not set
915# CONFIG_MINIX_FS is not set 893CONFIG_DNOTIFY=y
916# CONFIG_ROMFS_FS is not set
917CONFIG_INOTIFY=y 894CONFIG_INOTIFY=y
918CONFIG_INOTIFY_USER=y 895CONFIG_INOTIFY_USER=y
919# CONFIG_QUOTA is not set 896# CONFIG_QUOTA is not set
920CONFIG_DNOTIFY=y
921CONFIG_AUTOFS_FS=y 897CONFIG_AUTOFS_FS=y
922CONFIG_AUTOFS4_FS=y 898CONFIG_AUTOFS4_FS=y
923# CONFIG_FUSE_FS is not set 899# CONFIG_FUSE_FS is not set
@@ -928,7 +904,6 @@ CONFIG_AUTOFS4_FS=y
928CONFIG_ISO9660_FS=m 904CONFIG_ISO9660_FS=m
929CONFIG_JOLIET=y 905CONFIG_JOLIET=y
930CONFIG_ZISOFS=y 906CONFIG_ZISOFS=y
931CONFIG_ZISOFS_FS=m
932CONFIG_UDF_FS=m 907CONFIG_UDF_FS=m
933CONFIG_UDF_NLS=y 908CONFIG_UDF_NLS=y
934 909
@@ -948,12 +923,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
948CONFIG_PROC_FS=y 923CONFIG_PROC_FS=y
949CONFIG_PROC_KCORE=y 924CONFIG_PROC_KCORE=y
950CONFIG_PROC_SYSCTL=y 925CONFIG_PROC_SYSCTL=y
926CONFIG_PROC_PAGE_MONITOR=y
951CONFIG_SYSFS=y 927CONFIG_SYSFS=y
952CONFIG_TMPFS=y 928CONFIG_TMPFS=y
953# CONFIG_TMPFS_POSIX_ACL is not set 929# CONFIG_TMPFS_POSIX_ACL is not set
954# CONFIG_HUGETLBFS is not set 930# CONFIG_HUGETLBFS is not set
955# CONFIG_HUGETLB_PAGE is not set 931# CONFIG_HUGETLB_PAGE is not set
956CONFIG_RAMFS=y
957# CONFIG_CONFIGFS_FS is not set 932# CONFIG_CONFIGFS_FS is not set
958 933
959# 934#
@@ -968,31 +943,30 @@ CONFIG_RAMFS=y
968# CONFIG_EFS_FS is not set 943# CONFIG_EFS_FS is not set
969# CONFIG_CRAMFS is not set 944# CONFIG_CRAMFS is not set
970# CONFIG_VXFS_FS is not set 945# CONFIG_VXFS_FS is not set
946# CONFIG_MINIX_FS is not set
947# CONFIG_OMFS_FS is not set
971# CONFIG_HPFS_FS is not set 948# CONFIG_HPFS_FS is not set
972# CONFIG_QNX4FS_FS is not set 949# CONFIG_QNX4FS_FS is not set
950# CONFIG_ROMFS_FS is not set
973# CONFIG_SYSV_FS is not set 951# CONFIG_SYSV_FS is not set
974# CONFIG_UFS_FS is not set 952# CONFIG_UFS_FS is not set
975 953CONFIG_NETWORK_FILESYSTEMS=y
976#
977# Network File Systems
978#
979CONFIG_NFS_FS=y 954CONFIG_NFS_FS=y
980CONFIG_NFS_V3=y 955CONFIG_NFS_V3=y
981# CONFIG_NFS_V3_ACL is not set 956# CONFIG_NFS_V3_ACL is not set
982CONFIG_NFS_V4=y 957CONFIG_NFS_V4=y
983# CONFIG_NFS_DIRECTIO is not set 958CONFIG_ROOT_NFS=y
984CONFIG_NFSD=y 959CONFIG_NFSD=y
985CONFIG_NFSD_V3=y 960CONFIG_NFSD_V3=y
986# CONFIG_NFSD_V3_ACL is not set 961# CONFIG_NFSD_V3_ACL is not set
987# CONFIG_NFSD_V4 is not set 962# CONFIG_NFSD_V4 is not set
988CONFIG_NFSD_TCP=y
989CONFIG_ROOT_NFS=y
990CONFIG_LOCKD=y 963CONFIG_LOCKD=y
991CONFIG_LOCKD_V4=y 964CONFIG_LOCKD_V4=y
992CONFIG_EXPORTFS=y 965CONFIG_EXPORTFS=y
993CONFIG_NFS_COMMON=y 966CONFIG_NFS_COMMON=y
994CONFIG_SUNRPC=y 967CONFIG_SUNRPC=y
995CONFIG_SUNRPC_GSS=y 968CONFIG_SUNRPC_GSS=y
969# CONFIG_SUNRPC_REGISTER_V4 is not set
996CONFIG_RPCSEC_GSS_KRB5=y 970CONFIG_RPCSEC_GSS_KRB5=y
997# CONFIG_RPCSEC_GSS_SPKM3 is not set 971# CONFIG_RPCSEC_GSS_SPKM3 is not set
998# CONFIG_SMB_FS is not set 972# CONFIG_SMB_FS is not set
@@ -1000,7 +974,6 @@ CONFIG_RPCSEC_GSS_KRB5=y
1000# CONFIG_NCP_FS is not set 974# CONFIG_NCP_FS is not set
1001# CONFIG_CODA_FS is not set 975# CONFIG_CODA_FS is not set
1002# CONFIG_AFS_FS is not set 976# CONFIG_AFS_FS is not set
1003# CONFIG_9P_FS is not set
1004 977
1005# 978#
1006# Partition Types 979# Partition Types
@@ -1022,10 +995,7 @@ CONFIG_MSDOS_PARTITION=y
1022# CONFIG_SUN_PARTITION is not set 995# CONFIG_SUN_PARTITION is not set
1023# CONFIG_KARMA_PARTITION is not set 996# CONFIG_KARMA_PARTITION is not set
1024# CONFIG_EFI_PARTITION is not set 997# CONFIG_EFI_PARTITION is not set
1025 998# CONFIG_SYSV68_PARTITION is not set
1026#
1027# Native Language Support
1028#
1029CONFIG_NLS=m 999CONFIG_NLS=m
1030CONFIG_NLS_DEFAULT="iso8859-1" 1000CONFIG_NLS_DEFAULT="iso8859-1"
1031CONFIG_NLS_CODEPAGE_437=m 1001CONFIG_NLS_CODEPAGE_437=m
@@ -1066,81 +1036,146 @@ CONFIG_NLS_ISO8859_15=m
1066CONFIG_NLS_KOI8_R=m 1036CONFIG_NLS_KOI8_R=m
1067CONFIG_NLS_KOI8_U=m 1037CONFIG_NLS_KOI8_U=m
1068CONFIG_NLS_UTF8=m 1038CONFIG_NLS_UTF8=m
1069 1039# CONFIG_DLM is not set
1070#
1071# Profiling support
1072#
1073CONFIG_PROFILING=y
1074CONFIG_OPROFILE=m
1075 1040
1076# 1041#
1077# Kernel hacking 1042# Kernel hacking
1078# 1043#
1044CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1079# CONFIG_PRINTK_TIME is not set 1045# CONFIG_PRINTK_TIME is not set
1046CONFIG_ENABLE_WARN_DEPRECATED=y
1080CONFIG_ENABLE_MUST_CHECK=y 1047CONFIG_ENABLE_MUST_CHECK=y
1048CONFIG_FRAME_WARN=1024
1081# CONFIG_MAGIC_SYSRQ is not set 1049# CONFIG_MAGIC_SYSRQ is not set
1082# CONFIG_UNUSED_SYMBOLS is not set 1050# CONFIG_UNUSED_SYMBOLS is not set
1051# CONFIG_DEBUG_FS is not set
1052# CONFIG_HEADERS_CHECK is not set
1083# CONFIG_DEBUG_KERNEL is not set 1053# CONFIG_DEBUG_KERNEL is not set
1084CONFIG_LOG_BUF_SHIFT=14
1085# CONFIG_DEBUG_BUGVERBOSE is not set 1054# CONFIG_DEBUG_BUGVERBOSE is not set
1086# CONFIG_DEBUG_FS is not set 1055# CONFIG_DEBUG_MEMORY_INIT is not set
1056# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1057# CONFIG_LATENCYTOP is not set
1058CONFIG_NOP_TRACER=y
1059CONFIG_HAVE_FTRACE=y
1060# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1061# CONFIG_SAMPLES is not set
1087CONFIG_SH_STANDARD_BIOS=y 1062CONFIG_SH_STANDARD_BIOS=y
1088# CONFIG_EARLY_SCIF_CONSOLE is not set 1063# CONFIG_EARLY_SCIF_CONSOLE is not set
1089# CONFIG_EARLY_PRINTK is not set 1064# CONFIG_EARLY_PRINTK is not set
1090# CONFIG_KGDB is not set 1065# CONFIG_SH_KGDB is not set
1091 1066
1092# 1067#
1093# Security options 1068# Security options
1094# 1069#
1095# CONFIG_KEYS is not set 1070# CONFIG_KEYS is not set
1096# CONFIG_SECURITY is not set 1071# CONFIG_SECURITY is not set
1072# CONFIG_SECURITYFS is not set
1073# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1074CONFIG_CRYPTO=y
1097 1075
1098# 1076#
1099# Cryptographic options 1077# Crypto core or helper
1100# 1078#
1101CONFIG_CRYPTO=y 1079# CONFIG_CRYPTO_FIPS is not set
1102CONFIG_CRYPTO_ALGAPI=y 1080CONFIG_CRYPTO_ALGAPI=y
1103CONFIG_CRYPTO_BLKCIPHER=m 1081CONFIG_CRYPTO_AEAD=y
1082CONFIG_CRYPTO_BLKCIPHER=y
1104CONFIG_CRYPTO_HASH=y 1083CONFIG_CRYPTO_HASH=y
1105CONFIG_CRYPTO_MANAGER=m 1084CONFIG_CRYPTO_RNG=y
1106CONFIG_CRYPTO_HMAC=y 1085CONFIG_CRYPTO_MANAGER=y
1086# CONFIG_CRYPTO_GF128MUL is not set
1107# CONFIG_CRYPTO_NULL is not set 1087# CONFIG_CRYPTO_NULL is not set
1088# CONFIG_CRYPTO_CRYPTD is not set
1089# CONFIG_CRYPTO_AUTHENC is not set
1090# CONFIG_CRYPTO_TEST is not set
1091
1092#
1093# Authenticated Encryption with Associated Data
1094#
1095# CONFIG_CRYPTO_CCM is not set
1096# CONFIG_CRYPTO_GCM is not set
1097# CONFIG_CRYPTO_SEQIV is not set
1098
1099#
1100# Block modes
1101#
1102CONFIG_CRYPTO_CBC=y
1103# CONFIG_CRYPTO_CTR is not set
1104# CONFIG_CRYPTO_CTS is not set
1105CONFIG_CRYPTO_ECB=m
1106# CONFIG_CRYPTO_LRW is not set
1107# CONFIG_CRYPTO_PCBC is not set
1108# CONFIG_CRYPTO_XTS is not set
1109
1110#
1111# Hash modes
1112#
1113CONFIG_CRYPTO_HMAC=y
1114# CONFIG_CRYPTO_XCBC is not set
1115
1116#
1117# Digest
1118#
1119# CONFIG_CRYPTO_CRC32C is not set
1108# CONFIG_CRYPTO_MD4 is not set 1120# CONFIG_CRYPTO_MD4 is not set
1109CONFIG_CRYPTO_MD5=y 1121CONFIG_CRYPTO_MD5=y
1122# CONFIG_CRYPTO_MICHAEL_MIC is not set
1123# CONFIG_CRYPTO_RMD128 is not set
1124# CONFIG_CRYPTO_RMD160 is not set
1125# CONFIG_CRYPTO_RMD256 is not set
1126# CONFIG_CRYPTO_RMD320 is not set
1110CONFIG_CRYPTO_SHA1=y 1127CONFIG_CRYPTO_SHA1=y
1111# CONFIG_CRYPTO_SHA256 is not set 1128# CONFIG_CRYPTO_SHA256 is not set
1112# CONFIG_CRYPTO_SHA512 is not set 1129# CONFIG_CRYPTO_SHA512 is not set
1113# CONFIG_CRYPTO_WP512 is not set
1114# CONFIG_CRYPTO_TGR192 is not set 1130# CONFIG_CRYPTO_TGR192 is not set
1115CONFIG_CRYPTO_ECB=m 1131# CONFIG_CRYPTO_WP512 is not set
1116CONFIG_CRYPTO_CBC=m 1132
1117CONFIG_CRYPTO_DES=y 1133#
1118# CONFIG_CRYPTO_BLOWFISH is not set 1134# Ciphers
1119# CONFIG_CRYPTO_TWOFISH is not set 1135#
1120# CONFIG_CRYPTO_SERPENT is not set
1121# CONFIG_CRYPTO_AES is not set 1136# CONFIG_CRYPTO_AES is not set
1137# CONFIG_CRYPTO_ANUBIS is not set
1138# CONFIG_CRYPTO_ARC4 is not set
1139# CONFIG_CRYPTO_BLOWFISH is not set
1140# CONFIG_CRYPTO_CAMELLIA is not set
1122# CONFIG_CRYPTO_CAST5 is not set 1141# CONFIG_CRYPTO_CAST5 is not set
1123# CONFIG_CRYPTO_CAST6 is not set 1142# CONFIG_CRYPTO_CAST6 is not set
1124# CONFIG_CRYPTO_TEA is not set 1143CONFIG_CRYPTO_DES=y
1125# CONFIG_CRYPTO_ARC4 is not set 1144# CONFIG_CRYPTO_FCRYPT is not set
1126# CONFIG_CRYPTO_KHAZAD is not set 1145# CONFIG_CRYPTO_KHAZAD is not set
1127# CONFIG_CRYPTO_ANUBIS is not set 1146# CONFIG_CRYPTO_SALSA20 is not set
1147# CONFIG_CRYPTO_SEED is not set
1148# CONFIG_CRYPTO_SERPENT is not set
1149# CONFIG_CRYPTO_TEA is not set
1150# CONFIG_CRYPTO_TWOFISH is not set
1151
1152#
1153# Compression
1154#
1128CONFIG_CRYPTO_DEFLATE=y 1155CONFIG_CRYPTO_DEFLATE=y
1129# CONFIG_CRYPTO_MICHAEL_MIC is not set 1156# CONFIG_CRYPTO_LZO is not set
1130# CONFIG_CRYPTO_CRC32C is not set
1131# CONFIG_CRYPTO_TEST is not set
1132 1157
1133# 1158#
1134# Hardware crypto devices 1159# Random Number Generation
1135# 1160#
1161# CONFIG_CRYPTO_ANSI_CPRNG is not set
1162CONFIG_CRYPTO_HW=y
1163# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1136 1164
1137# 1165#
1138# Library routines 1166# Library routines
1139# 1167#
1168CONFIG_BITREVERSE=y
1140CONFIG_CRC_CCITT=y 1169CONFIG_CRC_CCITT=y
1141# CONFIG_CRC16 is not set 1170# CONFIG_CRC16 is not set
1171# CONFIG_CRC_T10DIF is not set
1172CONFIG_CRC_ITU_T=m
1142CONFIG_CRC32=y 1173CONFIG_CRC32=y
1174# CONFIG_CRC7 is not set
1143# CONFIG_LIBCRC32C is not set 1175# CONFIG_LIBCRC32C is not set
1144CONFIG_ZLIB_INFLATE=y 1176CONFIG_ZLIB_INFLATE=y
1145CONFIG_ZLIB_DEFLATE=y 1177CONFIG_ZLIB_DEFLATE=y
1146CONFIG_PLIST=y 1178CONFIG_PLIST=y
1179CONFIG_HAS_IOMEM=y
1180CONFIG_HAS_IOPORT=y
1181CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/sh7710voipgw_defconfig b/arch/sh/configs/sh7710voipgw_defconfig
index 37e49a589207..9a768b28adcb 100644
--- a/arch/sh/configs/sh7710voipgw_defconfig
+++ b/arch/sh/configs/sh7710voipgw_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc4 3# Linux kernel version: 2.6.27
4# Thu Mar 6 16:02:29 2008 4# Wed Oct 22 19:35:18 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
10CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
11CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
13CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
15CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
22CONFIG_ARCH_SUPPORTS_AOUT=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24 26
25# 27#
@@ -70,30 +72,38 @@ CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y 72CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y 73CONFIG_EVENTFD=y
72# CONFIG_SHMEM is not set 74# CONFIG_SHMEM is not set
75CONFIG_AIO=y
73CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
74CONFIG_SLAB=y 78CONFIG_SLAB=y
75# CONFIG_SLUB is not set 79# CONFIG_SLUB is not set
76# CONFIG_SLOB is not set 80# CONFIG_SLOB is not set
77# CONFIG_PROFILING is not set 81# CONFIG_PROFILING is not set
78# CONFIG_MARKERS is not set 82# CONFIG_MARKERS is not set
79CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
80# CONFIG_HAVE_KPROBES is not set 84# CONFIG_KPROBES is not set
81# CONFIG_HAVE_KRETPROBES is not set 85CONFIG_HAVE_IOREMAP_PROT=y
82CONFIG_PROC_PAGE_MONITOR=y 86CONFIG_HAVE_KPROBES=y
87CONFIG_HAVE_KRETPROBES=y
88CONFIG_HAVE_ARCH_TRACEHOOK=y
89CONFIG_HAVE_CLK=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
83CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
84CONFIG_TINY_SHMEM=y 92CONFIG_TINY_SHMEM=y
85CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
86CONFIG_MODULES=y 94CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set
87CONFIG_MODULE_UNLOAD=y 96CONFIG_MODULE_UNLOAD=y
88CONFIG_MODULE_FORCE_UNLOAD=y 97CONFIG_MODULE_FORCE_UNLOAD=y
89# CONFIG_MODVERSIONS is not set 98# CONFIG_MODVERSIONS is not set
90# CONFIG_MODULE_SRCVERSION_ALL is not set 99# CONFIG_MODULE_SRCVERSION_ALL is not set
91# CONFIG_KMOD is not set 100CONFIG_KMOD=y
92CONFIG_BLOCK=y 101CONFIG_BLOCK=y
93# CONFIG_LBD is not set 102# CONFIG_LBD is not set
94# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
95# CONFIG_LSF is not set 104# CONFIG_LSF is not set
96# CONFIG_BLK_DEV_BSG is not set 105# CONFIG_BLK_DEV_BSG is not set
106# CONFIG_BLK_DEV_INTEGRITY is not set
97 107
98# 108#
99# IO Schedulers 109# IO Schedulers
@@ -108,7 +118,7 @@ CONFIG_DEFAULT_DEADLINE=y
108# CONFIG_DEFAULT_NOOP is not set 118# CONFIG_DEFAULT_NOOP is not set
109CONFIG_DEFAULT_IOSCHED="deadline" 119CONFIG_DEFAULT_IOSCHED="deadline"
110CONFIG_CLASSIC_RCU=y 120CONFIG_CLASSIC_RCU=y
111# CONFIG_PREEMPT_RCU is not set 121# CONFIG_FREEZER is not set
112 122
113# 123#
114# System type 124# System type
@@ -118,6 +128,7 @@ CONFIG_CPU_SH3=y
118# CONFIG_CPU_SUBTYPE_SH7203 is not set 128# CONFIG_CPU_SUBTYPE_SH7203 is not set
119# CONFIG_CPU_SUBTYPE_SH7206 is not set 129# CONFIG_CPU_SUBTYPE_SH7206 is not set
120# CONFIG_CPU_SUBTYPE_SH7263 is not set 130# CONFIG_CPU_SUBTYPE_SH7263 is not set
131# CONFIG_CPU_SUBTYPE_MXG is not set
121# CONFIG_CPU_SUBTYPE_SH7705 is not set 132# CONFIG_CPU_SUBTYPE_SH7705 is not set
122# CONFIG_CPU_SUBTYPE_SH7706 is not set 133# CONFIG_CPU_SUBTYPE_SH7706 is not set
123# CONFIG_CPU_SUBTYPE_SH7707 is not set 134# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -135,6 +146,7 @@ CONFIG_CPU_SUBTYPE_SH7710=y
135# CONFIG_CPU_SUBTYPE_SH7751R is not set 146# CONFIG_CPU_SUBTYPE_SH7751R is not set
136# CONFIG_CPU_SUBTYPE_SH7760 is not set 147# CONFIG_CPU_SUBTYPE_SH7760 is not set
137# CONFIG_CPU_SUBTYPE_SH4_202 is not set 148# CONFIG_CPU_SUBTYPE_SH4_202 is not set
149# CONFIG_CPU_SUBTYPE_SH7723 is not set
138# CONFIG_CPU_SUBTYPE_SH7763 is not set 150# CONFIG_CPU_SUBTYPE_SH7763 is not set
139# CONFIG_CPU_SUBTYPE_SH7770 is not set 151# CONFIG_CPU_SUBTYPE_SH7770 is not set
140# CONFIG_CPU_SUBTYPE_SH7780 is not set 152# CONFIG_CPU_SUBTYPE_SH7780 is not set
@@ -164,7 +176,9 @@ CONFIG_ARCH_POPULATES_NODE_MAP=y
164CONFIG_ARCH_SELECT_MEMORY_MODEL=y 176CONFIG_ARCH_SELECT_MEMORY_MODEL=y
165CONFIG_PAGE_SIZE_4KB=y 177CONFIG_PAGE_SIZE_4KB=y
166# CONFIG_PAGE_SIZE_8KB is not set 178# CONFIG_PAGE_SIZE_8KB is not set
179# CONFIG_PAGE_SIZE_16KB is not set
167# CONFIG_PAGE_SIZE_64KB is not set 180# CONFIG_PAGE_SIZE_64KB is not set
181CONFIG_ENTRY_OFFSET=0x00001000
168CONFIG_SELECT_MEMORY_MODEL=y 182CONFIG_SELECT_MEMORY_MODEL=y
169CONFIG_FLATMEM_MANUAL=y 183CONFIG_FLATMEM_MANUAL=y
170# CONFIG_DISCONTIGMEM_MANUAL is not set 184# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -172,11 +186,13 @@ CONFIG_FLATMEM_MANUAL=y
172CONFIG_FLATMEM=y 186CONFIG_FLATMEM=y
173CONFIG_FLAT_NODE_MEM_MAP=y 187CONFIG_FLAT_NODE_MEM_MAP=y
174CONFIG_SPARSEMEM_STATIC=y 188CONFIG_SPARSEMEM_STATIC=y
175# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 189CONFIG_PAGEFLAGS_EXTENDED=y
176CONFIG_SPLIT_PTLOCK_CPUS=4 190CONFIG_SPLIT_PTLOCK_CPUS=4
177# CONFIG_RESOURCES_64BIT is not set 191# CONFIG_RESOURCES_64BIT is not set
192# CONFIG_PHYS_ADDR_T_64BIT is not set
178CONFIG_ZONE_DMA_FLAG=0 193CONFIG_ZONE_DMA_FLAG=0
179CONFIG_NR_QUICK=2 194CONFIG_NR_QUICK=2
195CONFIG_UNEVICTABLE_LRU=y
180 196
181# 197#
182# Cache configuration 198# Cache configuration
@@ -209,7 +225,6 @@ CONFIG_CPU_HAS_DSP=y
209CONFIG_SH_TMU=y 225CONFIG_SH_TMU=y
210CONFIG_SH_TIMER_IRQ=16 226CONFIG_SH_TIMER_IRQ=16
211CONFIG_SH_PCLK_FREQ=32768000 227CONFIG_SH_PCLK_FREQ=32768000
212# CONFIG_TICK_ONESHOT is not set
213# CONFIG_NO_HZ is not set 228# CONFIG_NO_HZ is not set
214# CONFIG_HIGH_RES_TIMERS is not set 229# CONFIG_HIGH_RES_TIMERS is not set
215CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 230CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -245,10 +260,10 @@ CONFIG_HZ=250
245# CONFIG_SCHED_HRTICK is not set 260# CONFIG_SCHED_HRTICK is not set
246# CONFIG_KEXEC is not set 261# CONFIG_KEXEC is not set
247# CONFIG_CRASH_DUMP is not set 262# CONFIG_CRASH_DUMP is not set
263# CONFIG_SECCOMP is not set
248CONFIG_PREEMPT_NONE=y 264CONFIG_PREEMPT_NONE=y
249# CONFIG_PREEMPT_VOLUNTARY is not set 265# CONFIG_PREEMPT_VOLUNTARY is not set
250# CONFIG_PREEMPT is not set 266# CONFIG_PREEMPT is not set
251CONFIG_RCU_TRACE=y
252CONFIG_GUSA=y 267CONFIG_GUSA=y
253# CONFIG_GUSA_RB is not set 268# CONFIG_GUSA_RB is not set
254 269
@@ -269,11 +284,9 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
269# Executable file formats 284# Executable file formats
270# 285#
271CONFIG_BINFMT_ELF=y 286CONFIG_BINFMT_ELF=y
287# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
288# CONFIG_HAVE_AOUT is not set
272# CONFIG_BINFMT_MISC is not set 289# CONFIG_BINFMT_MISC is not set
273
274#
275# Networking
276#
277CONFIG_NET=y 290CONFIG_NET=y
278 291
279# 292#
@@ -311,10 +324,7 @@ CONFIG_INET_XFRM_MODE_BEET=y
311CONFIG_TCP_CONG_CUBIC=y 324CONFIG_TCP_CONG_CUBIC=y
312CONFIG_DEFAULT_TCP_CONG="cubic" 325CONFIG_DEFAULT_TCP_CONG="cubic"
313# CONFIG_TCP_MD5SIG is not set 326# CONFIG_TCP_MD5SIG is not set
314# CONFIG_IP_VS is not set
315# CONFIG_IPV6 is not set 327# CONFIG_IPV6 is not set
316# CONFIG_INET6_XFRM_TUNNEL is not set
317# CONFIG_INET6_TUNNEL is not set
318# CONFIG_NETWORK_SECMARK is not set 328# CONFIG_NETWORK_SECMARK is not set
319CONFIG_NETFILTER=y 329CONFIG_NETFILTER=y
320# CONFIG_NETFILTER_DEBUG is not set 330# CONFIG_NETFILTER_DEBUG is not set
@@ -327,10 +337,12 @@ CONFIG_NETFILTER_ADVANCED=y
327# CONFIG_NETFILTER_NETLINK_LOG is not set 337# CONFIG_NETFILTER_NETLINK_LOG is not set
328# CONFIG_NF_CONNTRACK is not set 338# CONFIG_NF_CONNTRACK is not set
329# CONFIG_NETFILTER_XTABLES is not set 339# CONFIG_NETFILTER_XTABLES is not set
340# CONFIG_IP_VS is not set
330 341
331# 342#
332# IP: Netfilter Configuration 343# IP: Netfilter Configuration
333# 344#
345# CONFIG_NF_DEFRAG_IPV4 is not set
334# CONFIG_IP_NF_QUEUE is not set 346# CONFIG_IP_NF_QUEUE is not set
335# CONFIG_IP_NF_IPTABLES is not set 347# CONFIG_IP_NF_IPTABLES is not set
336# CONFIG_IP_NF_ARPTABLES is not set 348# CONFIG_IP_NF_ARPTABLES is not set
@@ -339,6 +351,7 @@ CONFIG_NETFILTER_ADVANCED=y
339# CONFIG_TIPC is not set 351# CONFIG_TIPC is not set
340# CONFIG_ATM is not set 352# CONFIG_ATM is not set
341# CONFIG_BRIDGE is not set 353# CONFIG_BRIDGE is not set
354# CONFIG_NET_DSA is not set
342# CONFIG_VLAN_8021Q is not set 355# CONFIG_VLAN_8021Q is not set
343# CONFIG_DECNET is not set 356# CONFIG_DECNET is not set
344# CONFIG_LLC2 is not set 357# CONFIG_LLC2 is not set
@@ -357,7 +370,7 @@ CONFIG_NET_SCH_CBQ=y
357# CONFIG_NET_SCH_HTB is not set 370# CONFIG_NET_SCH_HTB is not set
358# CONFIG_NET_SCH_HFSC is not set 371# CONFIG_NET_SCH_HFSC is not set
359# CONFIG_NET_SCH_PRIO is not set 372# CONFIG_NET_SCH_PRIO is not set
360# CONFIG_NET_SCH_RR is not set 373# CONFIG_NET_SCH_MULTIQ is not set
361# CONFIG_NET_SCH_RED is not set 374# CONFIG_NET_SCH_RED is not set
362# CONFIG_NET_SCH_SFQ is not set 375# CONFIG_NET_SCH_SFQ is not set
363# CONFIG_NET_SCH_TEQL is not set 376# CONFIG_NET_SCH_TEQL is not set
@@ -395,11 +408,10 @@ CONFIG_NET_SCH_FIFO=y
395# CONFIG_IRDA is not set 408# CONFIG_IRDA is not set
396# CONFIG_BT is not set 409# CONFIG_BT is not set
397# CONFIG_AF_RXRPC is not set 410# CONFIG_AF_RXRPC is not set
398 411# CONFIG_PHONET is not set
399# 412CONFIG_WIRELESS=y
400# Wireless
401#
402# CONFIG_CFG80211 is not set 413# CONFIG_CFG80211 is not set
414# CONFIG_WIRELESS_OLD_REGULATORY is not set
403# CONFIG_WIRELESS_EXT is not set 415# CONFIG_WIRELESS_EXT is not set
404# CONFIG_MAC80211 is not set 416# CONFIG_MAC80211 is not set
405# CONFIG_IEEE80211 is not set 417# CONFIG_IEEE80211 is not set
@@ -417,6 +429,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
417CONFIG_STANDALONE=y 429CONFIG_STANDALONE=y
418CONFIG_PREVENT_FIRMWARE_BUILD=y 430CONFIG_PREVENT_FIRMWARE_BUILD=y
419CONFIG_FW_LOADER=y 431CONFIG_FW_LOADER=y
432CONFIG_FIRMWARE_IN_KERNEL=y
433CONFIG_EXTRA_FIRMWARE=""
420# CONFIG_SYS_HYPERVISOR is not set 434# CONFIG_SYS_HYPERVISOR is not set
421# CONFIG_CONNECTOR is not set 435# CONFIG_CONNECTOR is not set
422CONFIG_MTD=y 436CONFIG_MTD=y
@@ -425,6 +439,7 @@ CONFIG_MTD=y
425CONFIG_MTD_PARTITIONS=y 439CONFIG_MTD_PARTITIONS=y
426# CONFIG_MTD_REDBOOT_PARTS is not set 440# CONFIG_MTD_REDBOOT_PARTS is not set
427# CONFIG_MTD_CMDLINE_PARTS is not set 441# CONFIG_MTD_CMDLINE_PARTS is not set
442# CONFIG_MTD_AR7_PARTS is not set
428 443
429# 444#
430# User Modules And Translation Layers 445# User Modules And Translation Layers
@@ -500,6 +515,7 @@ CONFIG_BLK_DEV=y
500# CONFIG_BLK_DEV_RAM is not set 515# CONFIG_BLK_DEV_RAM is not set
501# CONFIG_CDROM_PKTCDVD is not set 516# CONFIG_CDROM_PKTCDVD is not set
502# CONFIG_ATA_OVER_ETH is not set 517# CONFIG_ATA_OVER_ETH is not set
518# CONFIG_BLK_DEV_HD is not set
503CONFIG_MISC_DEVICES=y 519CONFIG_MISC_DEVICES=y
504# CONFIG_EEPROM_93CX6 is not set 520# CONFIG_EEPROM_93CX6 is not set
505# CONFIG_ENCLOSURE_SERVICES is not set 521# CONFIG_ENCLOSURE_SERVICES is not set
@@ -516,7 +532,6 @@ CONFIG_HAVE_IDE=y
516# CONFIG_ATA is not set 532# CONFIG_ATA is not set
517# CONFIG_MD is not set 533# CONFIG_MD is not set
518CONFIG_NETDEVICES=y 534CONFIG_NETDEVICES=y
519# CONFIG_NETDEVICES_MULTIQUEUE is not set
520# CONFIG_DUMMY is not set 535# CONFIG_DUMMY is not set
521# CONFIG_BONDING is not set 536# CONFIG_BONDING is not set
522# CONFIG_MACVLAN is not set 537# CONFIG_MACVLAN is not set
@@ -528,14 +543,18 @@ CONFIG_NET_ETHERNET=y
528# CONFIG_MII is not set 543# CONFIG_MII is not set
529# CONFIG_AX88796 is not set 544# CONFIG_AX88796 is not set
530# CONFIG_STNIC is not set 545# CONFIG_STNIC is not set
546# CONFIG_SH_ETH is not set
531# CONFIG_SMC91X is not set 547# CONFIG_SMC91X is not set
548# CONFIG_SMC911X is not set
532# CONFIG_IBM_NEW_EMAC_ZMII is not set 549# CONFIG_IBM_NEW_EMAC_ZMII is not set
533# CONFIG_IBM_NEW_EMAC_RGMII is not set 550# CONFIG_IBM_NEW_EMAC_RGMII is not set
534# CONFIG_IBM_NEW_EMAC_TAH is not set 551# CONFIG_IBM_NEW_EMAC_TAH is not set
535# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 552# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
553# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
554# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
555# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
536# CONFIG_B44 is not set 556# CONFIG_B44 is not set
537CONFIG_NETDEV_1000=y 557CONFIG_NETDEV_1000=y
538# CONFIG_E1000E_ENABLED is not set
539CONFIG_NETDEV_10000=y 558CONFIG_NETDEV_10000=y
540 559
541# 560#
@@ -543,6 +562,7 @@ CONFIG_NETDEV_10000=y
543# 562#
544# CONFIG_WLAN_PRE80211 is not set 563# CONFIG_WLAN_PRE80211 is not set
545# CONFIG_WLAN_80211 is not set 564# CONFIG_WLAN_80211 is not set
565# CONFIG_IWLWIFI_LEDS is not set
546# CONFIG_WAN is not set 566# CONFIG_WAN is not set
547# CONFIG_PPP is not set 567# CONFIG_PPP is not set
548# CONFIG_SLIP is not set 568# CONFIG_SLIP is not set
@@ -587,6 +607,7 @@ CONFIG_INPUT=y
587# Character devices 607# Character devices
588# 608#
589# CONFIG_VT is not set 609# CONFIG_VT is not set
610CONFIG_DEVKMEM=y
590# CONFIG_SERIAL_NONSTANDARD is not set 611# CONFIG_SERIAL_NONSTANDARD is not set
591 612
592# 613#
@@ -611,12 +632,7 @@ CONFIG_HW_RANDOM=y
611# CONFIG_RAW_DRIVER is not set 632# CONFIG_RAW_DRIVER is not set
612# CONFIG_TCG_TPM is not set 633# CONFIG_TCG_TPM is not set
613# CONFIG_I2C is not set 634# CONFIG_I2C is not set
614
615#
616# SPI support
617#
618# CONFIG_SPI is not set 635# CONFIG_SPI is not set
619# CONFIG_SPI_MASTER is not set
620# CONFIG_W1 is not set 636# CONFIG_W1 is not set
621# CONFIG_POWER_SUPPLY is not set 637# CONFIG_POWER_SUPPLY is not set
622# CONFIG_HWMON is not set 638# CONFIG_HWMON is not set
@@ -632,13 +648,26 @@ CONFIG_SSB_POSSIBLE=y
632# 648#
633# Multifunction device drivers 649# Multifunction device drivers
634# 650#
651# CONFIG_MFD_CORE is not set
635# CONFIG_MFD_SM501 is not set 652# CONFIG_MFD_SM501 is not set
653# CONFIG_HTC_PASIC3 is not set
654# CONFIG_MFD_TMIO is not set
655# CONFIG_MFD_WM8400 is not set
636 656
637# 657#
638# Multimedia devices 658# Multimedia devices
639# 659#
660
661#
662# Multimedia core support
663#
640# CONFIG_VIDEO_DEV is not set 664# CONFIG_VIDEO_DEV is not set
641# CONFIG_DVB_CORE is not set 665# CONFIG_DVB_CORE is not set
666# CONFIG_VIDEO_MEDIA is not set
667
668#
669# Multimedia drivers
670#
642# CONFIG_DAB is not set 671# CONFIG_DAB is not set
643 672
644# 673#
@@ -653,20 +682,28 @@ CONFIG_SSB_POSSIBLE=y
653# Display device support 682# Display device support
654# 683#
655# CONFIG_DISPLAY_SUPPORT is not set 684# CONFIG_DISPLAY_SUPPORT is not set
656
657#
658# Sound
659#
660# CONFIG_SOUND is not set 685# CONFIG_SOUND is not set
661CONFIG_HID_SUPPORT=y 686CONFIG_HID_SUPPORT=y
662CONFIG_HID=y 687CONFIG_HID=y
663# CONFIG_HID_DEBUG is not set 688# CONFIG_HID_DEBUG is not set
664# CONFIG_HIDRAW is not set 689# CONFIG_HIDRAW is not set
690# CONFIG_HID_PID is not set
691
692#
693# Special HID drivers
694#
695CONFIG_HID_COMPAT=y
665CONFIG_USB_SUPPORT=y 696CONFIG_USB_SUPPORT=y
666CONFIG_USB_ARCH_HAS_HCD=y 697CONFIG_USB_ARCH_HAS_HCD=y
667# CONFIG_USB_ARCH_HAS_OHCI is not set 698# CONFIG_USB_ARCH_HAS_OHCI is not set
668# CONFIG_USB_ARCH_HAS_EHCI is not set 699# CONFIG_USB_ARCH_HAS_EHCI is not set
669# CONFIG_USB is not set 700# CONFIG_USB is not set
701# CONFIG_USB_OTG_WHITELIST is not set
702# CONFIG_USB_OTG_BLACKLIST_HUB is not set
703
704#
705# Enable Host or Gadget support to see Inventra options
706#
670 707
671# 708#
672# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 709# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -675,24 +712,23 @@ CONFIG_USB_ARCH_HAS_HCD=y
675# CONFIG_MMC is not set 712# CONFIG_MMC is not set
676# CONFIG_MEMSTICK is not set 713# CONFIG_MEMSTICK is not set
677# CONFIG_NEW_LEDS is not set 714# CONFIG_NEW_LEDS is not set
715# CONFIG_ACCESSIBILITY is not set
678# CONFIG_RTC_CLASS is not set 716# CONFIG_RTC_CLASS is not set
679 717# CONFIG_DMADEVICES is not set
680#
681# Userspace I/O
682#
683# CONFIG_UIO is not set 718# CONFIG_UIO is not set
719# CONFIG_STAGING is not set
684 720
685# 721#
686# File systems 722# File systems
687# 723#
688# CONFIG_EXT2_FS is not set 724# CONFIG_EXT2_FS is not set
689# CONFIG_EXT3_FS is not set 725# CONFIG_EXT3_FS is not set
690# CONFIG_EXT4DEV_FS is not set 726# CONFIG_EXT4_FS is not set
691# CONFIG_REISERFS_FS is not set 727# CONFIG_REISERFS_FS is not set
692# CONFIG_JFS_FS is not set 728# CONFIG_JFS_FS is not set
693# CONFIG_FS_POSIX_ACL is not set 729# CONFIG_FS_POSIX_ACL is not set
730CONFIG_FILE_LOCKING=y
694# CONFIG_XFS_FS is not set 731# CONFIG_XFS_FS is not set
695# CONFIG_GFS2_FS is not set
696# CONFIG_OCFS2_FS is not set 732# CONFIG_OCFS2_FS is not set
697# CONFIG_DNOTIFY is not set 733# CONFIG_DNOTIFY is not set
698# CONFIG_INOTIFY is not set 734# CONFIG_INOTIFY is not set
@@ -720,6 +756,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
720CONFIG_PROC_FS=y 756CONFIG_PROC_FS=y
721# CONFIG_PROC_KCORE is not set 757# CONFIG_PROC_KCORE is not set
722CONFIG_PROC_SYSCTL=y 758CONFIG_PROC_SYSCTL=y
759CONFIG_PROC_PAGE_MONITOR=y
723CONFIG_SYSFS=y 760CONFIG_SYSFS=y
724CONFIG_TMPFS=y 761CONFIG_TMPFS=y
725# CONFIG_TMPFS_POSIX_ACL is not set 762# CONFIG_TMPFS_POSIX_ACL is not set
@@ -751,6 +788,7 @@ CONFIG_JFFS2_RTIME=y
751# CONFIG_CRAMFS is not set 788# CONFIG_CRAMFS is not set
752# CONFIG_VXFS_FS is not set 789# CONFIG_VXFS_FS is not set
753# CONFIG_MINIX_FS is not set 790# CONFIG_MINIX_FS is not set
791# CONFIG_OMFS_FS is not set
754# CONFIG_HPFS_FS is not set 792# CONFIG_HPFS_FS is not set
755# CONFIG_QNX4FS_FS is not set 793# CONFIG_QNX4FS_FS is not set
756# CONFIG_ROMFS_FS is not set 794# CONFIG_ROMFS_FS is not set
@@ -780,12 +818,19 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
780# CONFIG_PRINTK_TIME is not set 818# CONFIG_PRINTK_TIME is not set
781CONFIG_ENABLE_WARN_DEPRECATED=y 819CONFIG_ENABLE_WARN_DEPRECATED=y
782CONFIG_ENABLE_MUST_CHECK=y 820CONFIG_ENABLE_MUST_CHECK=y
821CONFIG_FRAME_WARN=1024
783# CONFIG_MAGIC_SYSRQ is not set 822# CONFIG_MAGIC_SYSRQ is not set
784# CONFIG_UNUSED_SYMBOLS is not set 823# CONFIG_UNUSED_SYMBOLS is not set
785CONFIG_DEBUG_FS=y 824CONFIG_DEBUG_FS=y
786# CONFIG_HEADERS_CHECK is not set 825# CONFIG_HEADERS_CHECK is not set
787# CONFIG_DEBUG_KERNEL is not set 826# CONFIG_DEBUG_KERNEL is not set
788# CONFIG_DEBUG_BUGVERBOSE is not set 827# CONFIG_DEBUG_BUGVERBOSE is not set
828# CONFIG_DEBUG_MEMORY_INIT is not set
829# CONFIG_RCU_CPU_STALL_DETECTOR is not set
830# CONFIG_LATENCYTOP is not set
831CONFIG_NOP_TRACER=y
832CONFIG_HAVE_FTRACE=y
833# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
789# CONFIG_SAMPLES is not set 834# CONFIG_SAMPLES is not set
790# CONFIG_SH_STANDARD_BIOS is not set 835# CONFIG_SH_STANDARD_BIOS is not set
791# CONFIG_EARLY_SCIF_CONSOLE is not set 836# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -796,51 +841,91 @@ CONFIG_DEBUG_FS=y
796# 841#
797# CONFIG_KEYS is not set 842# CONFIG_KEYS is not set
798# CONFIG_SECURITY is not set 843# CONFIG_SECURITY is not set
844# CONFIG_SECURITYFS is not set
799# CONFIG_SECURITY_FILE_CAPABILITIES is not set 845# CONFIG_SECURITY_FILE_CAPABILITIES is not set
800CONFIG_CRYPTO=y 846CONFIG_CRYPTO=y
801# CONFIG_CRYPTO_SEQIV is not set 847
848#
849# Crypto core or helper
850#
851# CONFIG_CRYPTO_FIPS is not set
802# CONFIG_CRYPTO_MANAGER is not set 852# CONFIG_CRYPTO_MANAGER is not set
853# CONFIG_CRYPTO_GF128MUL is not set
854# CONFIG_CRYPTO_NULL is not set
855# CONFIG_CRYPTO_CRYPTD is not set
856# CONFIG_CRYPTO_AUTHENC is not set
857# CONFIG_CRYPTO_TEST is not set
858
859#
860# Authenticated Encryption with Associated Data
861#
862# CONFIG_CRYPTO_CCM is not set
863# CONFIG_CRYPTO_GCM is not set
864# CONFIG_CRYPTO_SEQIV is not set
865
866#
867# Block modes
868#
869# CONFIG_CRYPTO_CBC is not set
870# CONFIG_CRYPTO_CTR is not set
871# CONFIG_CRYPTO_CTS is not set
872# CONFIG_CRYPTO_ECB is not set
873# CONFIG_CRYPTO_LRW is not set
874# CONFIG_CRYPTO_PCBC is not set
875# CONFIG_CRYPTO_XTS is not set
876
877#
878# Hash modes
879#
803# CONFIG_CRYPTO_HMAC is not set 880# CONFIG_CRYPTO_HMAC is not set
804# CONFIG_CRYPTO_XCBC is not set 881# CONFIG_CRYPTO_XCBC is not set
805# CONFIG_CRYPTO_NULL is not set 882
883#
884# Digest
885#
886# CONFIG_CRYPTO_CRC32C is not set
806# CONFIG_CRYPTO_MD4 is not set 887# CONFIG_CRYPTO_MD4 is not set
807# CONFIG_CRYPTO_MD5 is not set 888# CONFIG_CRYPTO_MD5 is not set
889# CONFIG_CRYPTO_MICHAEL_MIC is not set
890# CONFIG_CRYPTO_RMD128 is not set
891# CONFIG_CRYPTO_RMD160 is not set
892# CONFIG_CRYPTO_RMD256 is not set
893# CONFIG_CRYPTO_RMD320 is not set
808# CONFIG_CRYPTO_SHA1 is not set 894# CONFIG_CRYPTO_SHA1 is not set
809# CONFIG_CRYPTO_SHA256 is not set 895# CONFIG_CRYPTO_SHA256 is not set
810# CONFIG_CRYPTO_SHA512 is not set 896# CONFIG_CRYPTO_SHA512 is not set
811# CONFIG_CRYPTO_WP512 is not set
812# CONFIG_CRYPTO_TGR192 is not set 897# CONFIG_CRYPTO_TGR192 is not set
813# CONFIG_CRYPTO_GF128MUL is not set 898# CONFIG_CRYPTO_WP512 is not set
814# CONFIG_CRYPTO_ECB is not set 899
815# CONFIG_CRYPTO_CBC is not set 900#
816# CONFIG_CRYPTO_PCBC is not set 901# Ciphers
817# CONFIG_CRYPTO_LRW is not set 902#
818# CONFIG_CRYPTO_XTS is not set
819# CONFIG_CRYPTO_CTR is not set
820# CONFIG_CRYPTO_GCM is not set
821# CONFIG_CRYPTO_CCM is not set
822# CONFIG_CRYPTO_CRYPTD is not set
823# CONFIG_CRYPTO_DES is not set
824# CONFIG_CRYPTO_FCRYPT is not set
825# CONFIG_CRYPTO_BLOWFISH is not set
826# CONFIG_CRYPTO_TWOFISH is not set
827# CONFIG_CRYPTO_SERPENT is not set
828# CONFIG_CRYPTO_AES is not set 903# CONFIG_CRYPTO_AES is not set
904# CONFIG_CRYPTO_ANUBIS is not set
905# CONFIG_CRYPTO_ARC4 is not set
906# CONFIG_CRYPTO_BLOWFISH is not set
907# CONFIG_CRYPTO_CAMELLIA is not set
829# CONFIG_CRYPTO_CAST5 is not set 908# CONFIG_CRYPTO_CAST5 is not set
830# CONFIG_CRYPTO_CAST6 is not set 909# CONFIG_CRYPTO_CAST6 is not set
831# CONFIG_CRYPTO_TEA is not set 910# CONFIG_CRYPTO_DES is not set
832# CONFIG_CRYPTO_ARC4 is not set 911# CONFIG_CRYPTO_FCRYPT is not set
833# CONFIG_CRYPTO_KHAZAD is not set 912# CONFIG_CRYPTO_KHAZAD is not set
834# CONFIG_CRYPTO_ANUBIS is not set
835# CONFIG_CRYPTO_SEED is not set
836# CONFIG_CRYPTO_SALSA20 is not set 913# CONFIG_CRYPTO_SALSA20 is not set
914# CONFIG_CRYPTO_SEED is not set
915# CONFIG_CRYPTO_SERPENT is not set
916# CONFIG_CRYPTO_TEA is not set
917# CONFIG_CRYPTO_TWOFISH is not set
918
919#
920# Compression
921#
837# CONFIG_CRYPTO_DEFLATE is not set 922# CONFIG_CRYPTO_DEFLATE is not set
838# CONFIG_CRYPTO_MICHAEL_MIC is not set
839# CONFIG_CRYPTO_CRC32C is not set
840# CONFIG_CRYPTO_CAMELLIA is not set
841# CONFIG_CRYPTO_TEST is not set
842# CONFIG_CRYPTO_AUTHENC is not set
843# CONFIG_CRYPTO_LZO is not set 923# CONFIG_CRYPTO_LZO is not set
924
925#
926# Random Number Generation
927#
928# CONFIG_CRYPTO_ANSI_CPRNG is not set
844CONFIG_CRYPTO_HW=y 929CONFIG_CRYPTO_HW=y
845 930
846# 931#
@@ -849,6 +934,7 @@ CONFIG_CRYPTO_HW=y
849CONFIG_BITREVERSE=y 934CONFIG_BITREVERSE=y
850# CONFIG_CRC_CCITT is not set 935# CONFIG_CRC_CCITT is not set
851# CONFIG_CRC16 is not set 936# CONFIG_CRC16 is not set
937# CONFIG_CRC_T10DIF is not set
852# CONFIG_CRC_ITU_T is not set 938# CONFIG_CRC_ITU_T is not set
853CONFIG_CRC32=y 939CONFIG_CRC32=y
854# CONFIG_CRC7 is not set 940# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/sh7763rdp_defconfig b/arch/sh/configs/sh7763rdp_defconfig
index baf830c4a7e4..6a77f691fb87 100644
--- a/arch/sh/configs/sh7763rdp_defconfig
+++ b/arch/sh/configs/sh7763rdp_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.27-rc2 3# Linux kernel version: 2.6.27
4# Fri Aug 8 13:44:20 2008 4# Wed Oct 22 19:37:12 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -13,11 +13,12 @@ CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_STACKTRACE_SUPPORT=y 19CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 24CONFIG_ARCH_NO_VIRT_TO_BUS=y
@@ -76,7 +77,9 @@ CONFIG_SIGNALFD=y
76CONFIG_TIMERFD=y 77CONFIG_TIMERFD=y
77CONFIG_EVENTFD=y 78CONFIG_EVENTFD=y
78CONFIG_SHMEM=y 79CONFIG_SHMEM=y
80CONFIG_AIO=y
79CONFIG_VM_EVENT_COUNTERS=y 81CONFIG_VM_EVENT_COUNTERS=y
82CONFIG_PCI_QUIRKS=y
80CONFIG_SLAB=y 83CONFIG_SLAB=y
81# CONFIG_SLUB is not set 84# CONFIG_SLUB is not set
82# CONFIG_SLOB is not set 85# CONFIG_SLOB is not set
@@ -84,15 +87,12 @@ CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set 87# CONFIG_MARKERS is not set
85CONFIG_OPROFILE=y 88CONFIG_OPROFILE=y
86CONFIG_HAVE_OPROFILE=y 89CONFIG_HAVE_OPROFILE=y
87# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set 90# CONFIG_KPROBES is not set
88# CONFIG_HAVE_IOREMAP_PROT is not set 91CONFIG_HAVE_IOREMAP_PROT=y
89# CONFIG_HAVE_KPROBES is not set 92CONFIG_HAVE_KPROBES=y
90# CONFIG_HAVE_KRETPROBES is not set 93CONFIG_HAVE_KRETPROBES=y
91# CONFIG_HAVE_ARCH_TRACEHOOK is not set 94CONFIG_HAVE_ARCH_TRACEHOOK=y
92# CONFIG_HAVE_DMA_ATTRS is not set
93# CONFIG_USE_GENERIC_SMP_HELPERS is not set
94CONFIG_HAVE_CLK=y 95CONFIG_HAVE_CLK=y
95CONFIG_PROC_PAGE_MONITOR=y
96CONFIG_HAVE_GENERIC_DMA_COHERENT=y 96CONFIG_HAVE_GENERIC_DMA_COHERENT=y
97CONFIG_SLABINFO=y 97CONFIG_SLABINFO=y
98CONFIG_RT_MUTEXES=y 98CONFIG_RT_MUTEXES=y
@@ -124,6 +124,7 @@ CONFIG_DEFAULT_AS=y
124# CONFIG_DEFAULT_NOOP is not set 124# CONFIG_DEFAULT_NOOP is not set
125CONFIG_DEFAULT_IOSCHED="anticipatory" 125CONFIG_DEFAULT_IOSCHED="anticipatory"
126CONFIG_CLASSIC_RCU=y 126CONFIG_CLASSIC_RCU=y
127# CONFIG_FREEZER is not set
127 128
128# 129#
129# System type 130# System type
@@ -181,6 +182,7 @@ CONFIG_MAX_ACTIVE_REGIONS=1
181CONFIG_ARCH_POPULATES_NODE_MAP=y 182CONFIG_ARCH_POPULATES_NODE_MAP=y
182CONFIG_ARCH_SELECT_MEMORY_MODEL=y 183CONFIG_ARCH_SELECT_MEMORY_MODEL=y
183CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 184CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
185CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
184CONFIG_PAGE_SIZE_4KB=y 186CONFIG_PAGE_SIZE_4KB=y
185# CONFIG_PAGE_SIZE_8KB is not set 187# CONFIG_PAGE_SIZE_8KB is not set
186# CONFIG_PAGE_SIZE_16KB is not set 188# CONFIG_PAGE_SIZE_16KB is not set
@@ -193,13 +195,15 @@ CONFIG_SPARSEMEM_MANUAL=y
193CONFIG_SPARSEMEM=y 195CONFIG_SPARSEMEM=y
194CONFIG_HAVE_MEMORY_PRESENT=y 196CONFIG_HAVE_MEMORY_PRESENT=y
195CONFIG_SPARSEMEM_STATIC=y 197CONFIG_SPARSEMEM_STATIC=y
196# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
197# CONFIG_MEMORY_HOTPLUG is not set 198# CONFIG_MEMORY_HOTPLUG is not set
198CONFIG_PAGEFLAGS_EXTENDED=y 199CONFIG_PAGEFLAGS_EXTENDED=y
199CONFIG_SPLIT_PTLOCK_CPUS=4 200CONFIG_SPLIT_PTLOCK_CPUS=4
201CONFIG_MIGRATION=y
200# CONFIG_RESOURCES_64BIT is not set 202# CONFIG_RESOURCES_64BIT is not set
203# CONFIG_PHYS_ADDR_T_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=0 204CONFIG_ZONE_DMA_FLAG=0
202CONFIG_NR_QUICK=2 205CONFIG_NR_QUICK=2
206CONFIG_UNEVICTABLE_LRU=y
203 207
204# 208#
205# Cache configuration 209# Cache configuration
@@ -231,7 +235,6 @@ CONFIG_SH_SH7763RDP=y
231CONFIG_SH_TMU=y 235CONFIG_SH_TMU=y
232CONFIG_SH_TIMER_IRQ=28 236CONFIG_SH_TIMER_IRQ=28
233CONFIG_SH_PCLK_FREQ=66666666 237CONFIG_SH_PCLK_FREQ=66666666
234# CONFIG_TICK_ONESHOT is not set
235# CONFIG_NO_HZ is not set 238# CONFIG_NO_HZ is not set
236# CONFIG_HIGH_RES_TIMERS is not set 239# CONFIG_HIGH_RES_TIMERS is not set
237CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 240CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -291,6 +294,8 @@ CONFIG_CMDLINE="console=ttySC2,115200 root=/dev/sda1 rootdelay=10"
291# Executable file formats 294# Executable file formats
292# 295#
293CONFIG_BINFMT_ELF=y 296CONFIG_BINFMT_ELF=y
297# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
298# CONFIG_HAVE_AOUT is not set
294# CONFIG_BINFMT_MISC is not set 299# CONFIG_BINFMT_MISC is not set
295CONFIG_NET=y 300CONFIG_NET=y
296 301
@@ -341,6 +346,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
341# CONFIG_TIPC is not set 346# CONFIG_TIPC is not set
342# CONFIG_ATM is not set 347# CONFIG_ATM is not set
343# CONFIG_BRIDGE is not set 348# CONFIG_BRIDGE is not set
349# CONFIG_NET_DSA is not set
344# CONFIG_VLAN_8021Q is not set 350# CONFIG_VLAN_8021Q is not set
345# CONFIG_DECNET is not set 351# CONFIG_DECNET is not set
346# CONFIG_LLC2 is not set 352# CONFIG_LLC2 is not set
@@ -361,11 +367,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
361# CONFIG_IRDA is not set 367# CONFIG_IRDA is not set
362# CONFIG_BT is not set 368# CONFIG_BT is not set
363# CONFIG_AF_RXRPC is not set 369# CONFIG_AF_RXRPC is not set
364 370# CONFIG_PHONET is not set
365# 371CONFIG_WIRELESS=y
366# Wireless
367#
368# CONFIG_CFG80211 is not set 372# CONFIG_CFG80211 is not set
373# CONFIG_WIRELESS_OLD_REGULATORY is not set
369CONFIG_WIRELESS_EXT=y 374CONFIG_WIRELESS_EXT=y
370CONFIG_WIRELESS_EXT_SYSFS=y 375CONFIG_WIRELESS_EXT_SYSFS=y
371# CONFIG_MAC80211 is not set 376# CONFIG_MAC80211 is not set
@@ -563,6 +568,9 @@ CONFIG_SH_ETH=y
563# CONFIG_IBM_NEW_EMAC_RGMII is not set 568# CONFIG_IBM_NEW_EMAC_RGMII is not set
564# CONFIG_IBM_NEW_EMAC_TAH is not set 569# CONFIG_IBM_NEW_EMAC_TAH is not set
565# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 570# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
571# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
572# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
573# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
566# CONFIG_B44 is not set 574# CONFIG_B44 is not set
567# CONFIG_NETDEV_1000 is not set 575# CONFIG_NETDEV_1000 is not set
568# CONFIG_NETDEV_10000 is not set 576# CONFIG_NETDEV_10000 is not set
@@ -675,6 +683,8 @@ CONFIG_SSB_POSSIBLE=y
675# CONFIG_MFD_CORE is not set 683# CONFIG_MFD_CORE is not set
676# CONFIG_MFD_SM501 is not set 684# CONFIG_MFD_SM501 is not set
677# CONFIG_HTC_PASIC3 is not set 685# CONFIG_HTC_PASIC3 is not set
686# CONFIG_MFD_TMIO is not set
687# CONFIG_MFD_WM8400 is not set
678 688
679# 689#
680# Multimedia devices 690# Multimedia devices
@@ -700,6 +710,7 @@ CONFIG_SSB_POSSIBLE=y
700CONFIG_FB=y 710CONFIG_FB=y
701# CONFIG_FIRMWARE_EDID is not set 711# CONFIG_FIRMWARE_EDID is not set
702# CONFIG_FB_DDC is not set 712# CONFIG_FB_DDC is not set
713# CONFIG_FB_BOOT_VESA_SUPPORT is not set
703CONFIG_FB_CFB_FILLRECT=y 714CONFIG_FB_CFB_FILLRECT=y
704CONFIG_FB_CFB_COPYAREA=y 715CONFIG_FB_CFB_COPYAREA=y
705CONFIG_FB_CFB_IMAGEBLIT=y 716CONFIG_FB_CFB_IMAGEBLIT=y
@@ -725,6 +736,7 @@ CONFIG_FB_BOTH_ENDIAN=y
725# CONFIG_FB_SH_MOBILE_LCDC is not set 736# CONFIG_FB_SH_MOBILE_LCDC is not set
726CONFIG_FB_SH7760=y 737CONFIG_FB_SH7760=y
727# CONFIG_FB_VIRTUAL is not set 738# CONFIG_FB_VIRTUAL is not set
739# CONFIG_FB_METRONOME is not set
728# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 740# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
729 741
730# 742#
@@ -768,6 +780,7 @@ CONFIG_USB_DEVICE_CLASS=y
768# CONFIG_USB_OTG is not set 780# CONFIG_USB_OTG is not set
769# CONFIG_USB_OTG_WHITELIST is not set 781# CONFIG_USB_OTG_WHITELIST is not set
770# CONFIG_USB_OTG_BLACKLIST_HUB is not set 782# CONFIG_USB_OTG_BLACKLIST_HUB is not set
783CONFIG_USB_MON=y
771 784
772# 785#
773# USB Host Controller Drivers 786# USB Host Controller Drivers
@@ -788,6 +801,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
788# CONFIG_USB_ACM is not set 801# CONFIG_USB_ACM is not set
789# CONFIG_USB_PRINTER is not set 802# CONFIG_USB_PRINTER is not set
790# CONFIG_USB_WDM is not set 803# CONFIG_USB_WDM is not set
804# CONFIG_USB_TMC is not set
791 805
792# 806#
793# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 807# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -817,7 +831,6 @@ CONFIG_USB_STORAGE=y
817# 831#
818# CONFIG_USB_MDC800 is not set 832# CONFIG_USB_MDC800 is not set
819# CONFIG_USB_MICROTEK is not set 833# CONFIG_USB_MICROTEK is not set
820CONFIG_USB_MON=y
821 834
822# 835#
823# USB port drivers 836# USB port drivers
@@ -830,7 +843,7 @@ CONFIG_USB_MON=y
830# CONFIG_USB_EMI62 is not set 843# CONFIG_USB_EMI62 is not set
831# CONFIG_USB_EMI26 is not set 844# CONFIG_USB_EMI26 is not set
832# CONFIG_USB_ADUTUX is not set 845# CONFIG_USB_ADUTUX is not set
833# CONFIG_USB_AUERSWALD is not set 846# CONFIG_USB_SEVSEG is not set
834# CONFIG_USB_RIO500 is not set 847# CONFIG_USB_RIO500 is not set
835# CONFIG_USB_LEGOTOWER is not set 848# CONFIG_USB_LEGOTOWER is not set
836# CONFIG_USB_LCD is not set 849# CONFIG_USB_LCD is not set
@@ -846,13 +859,14 @@ CONFIG_USB_MON=y
846# CONFIG_USB_TRANCEVIBRATOR is not set 859# CONFIG_USB_TRANCEVIBRATOR is not set
847# CONFIG_USB_IOWARRIOR is not set 860# CONFIG_USB_IOWARRIOR is not set
848# CONFIG_USB_ISIGHTFW is not set 861# CONFIG_USB_ISIGHTFW is not set
862# CONFIG_USB_VST is not set
849# CONFIG_USB_GADGET is not set 863# CONFIG_USB_GADGET is not set
850CONFIG_MMC=y 864CONFIG_MMC=y
851# CONFIG_MMC_DEBUG is not set 865# CONFIG_MMC_DEBUG is not set
852# CONFIG_MMC_UNSAFE_RESUME is not set 866# CONFIG_MMC_UNSAFE_RESUME is not set
853 867
854# 868#
855# MMC/SD Card Drivers 869# MMC/SD/SDIO Card Drivers
856# 870#
857CONFIG_MMC_BLOCK=y 871CONFIG_MMC_BLOCK=y
858CONFIG_MMC_BLOCK_BOUNCE=y 872CONFIG_MMC_BLOCK_BOUNCE=y
@@ -860,7 +874,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
860# CONFIG_MMC_TEST is not set 874# CONFIG_MMC_TEST is not set
861 875
862# 876#
863# MMC/SD Host Controller Drivers 877# MMC/SD/SDIO Host Controller Drivers
864# 878#
865# CONFIG_MMC_SDHCI is not set 879# CONFIG_MMC_SDHCI is not set
866# CONFIG_MEMSTICK is not set 880# CONFIG_MEMSTICK is not set
@@ -869,6 +883,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
869# CONFIG_RTC_CLASS is not set 883# CONFIG_RTC_CLASS is not set
870# CONFIG_DMADEVICES is not set 884# CONFIG_DMADEVICES is not set
871# CONFIG_UIO is not set 885# CONFIG_UIO is not set
886# CONFIG_STAGING is not set
872 887
873# 888#
874# File systems 889# File systems
@@ -880,12 +895,13 @@ CONFIG_EXT3_FS=y
880CONFIG_EXT3_FS_XATTR=y 895CONFIG_EXT3_FS_XATTR=y
881# CONFIG_EXT3_FS_POSIX_ACL is not set 896# CONFIG_EXT3_FS_POSIX_ACL is not set
882# CONFIG_EXT3_FS_SECURITY is not set 897# CONFIG_EXT3_FS_SECURITY is not set
883# CONFIG_EXT4DEV_FS is not set 898# CONFIG_EXT4_FS is not set
884CONFIG_JBD=y 899CONFIG_JBD=y
885CONFIG_FS_MBCACHE=y 900CONFIG_FS_MBCACHE=y
886# CONFIG_REISERFS_FS is not set 901# CONFIG_REISERFS_FS is not set
887# CONFIG_JFS_FS is not set 902# CONFIG_JFS_FS is not set
888CONFIG_FS_POSIX_ACL=y 903CONFIG_FS_POSIX_ACL=y
904CONFIG_FILE_LOCKING=y
889# CONFIG_XFS_FS is not set 905# CONFIG_XFS_FS is not set
890# CONFIG_OCFS2_FS is not set 906# CONFIG_OCFS2_FS is not set
891CONFIG_DNOTIFY=y 907CONFIG_DNOTIFY=y
@@ -919,6 +935,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
919CONFIG_PROC_FS=y 935CONFIG_PROC_FS=y
920CONFIG_PROC_KCORE=y 936CONFIG_PROC_KCORE=y
921CONFIG_PROC_SYSCTL=y 937CONFIG_PROC_SYSCTL=y
938CONFIG_PROC_PAGE_MONITOR=y
922CONFIG_SYSFS=y 939CONFIG_SYSFS=y
923CONFIG_TMPFS=y 940CONFIG_TMPFS=y
924CONFIG_TMPFS_POSIX_ACL=y 941CONFIG_TMPFS_POSIX_ACL=y
@@ -955,6 +972,7 @@ CONFIG_ROOT_NFS=y
955CONFIG_LOCKD=y 972CONFIG_LOCKD=y
956CONFIG_NFS_COMMON=y 973CONFIG_NFS_COMMON=y
957CONFIG_SUNRPC=y 974CONFIG_SUNRPC=y
975# CONFIG_SUNRPC_REGISTER_V4 is not set
958# CONFIG_RPCSEC_GSS_KRB5 is not set 976# CONFIG_RPCSEC_GSS_KRB5 is not set
959# CONFIG_RPCSEC_GSS_SPKM3 is not set 977# CONFIG_RPCSEC_GSS_SPKM3 is not set
960# CONFIG_SMB_FS is not set 978# CONFIG_SMB_FS is not set
@@ -1025,6 +1043,11 @@ CONFIG_FRAME_WARN=1024
1025# CONFIG_DEBUG_KERNEL is not set 1043# CONFIG_DEBUG_KERNEL is not set
1026# CONFIG_DEBUG_BUGVERBOSE is not set 1044# CONFIG_DEBUG_BUGVERBOSE is not set
1027# CONFIG_DEBUG_MEMORY_INIT is not set 1045# CONFIG_DEBUG_MEMORY_INIT is not set
1046# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1047# CONFIG_LATENCYTOP is not set
1048CONFIG_NOP_TRACER=y
1049CONFIG_HAVE_FTRACE=y
1050# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1028# CONFIG_SAMPLES is not set 1051# CONFIG_SAMPLES is not set
1029# CONFIG_SH_STANDARD_BIOS is not set 1052# CONFIG_SH_STANDARD_BIOS is not set
1030# CONFIG_EARLY_SCIF_CONSOLE is not set 1053# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1035,12 +1058,14 @@ CONFIG_FRAME_WARN=1024
1035# 1058#
1036# CONFIG_KEYS is not set 1059# CONFIG_KEYS is not set
1037# CONFIG_SECURITY is not set 1060# CONFIG_SECURITY is not set
1061# CONFIG_SECURITYFS is not set
1038# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1062# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1039CONFIG_CRYPTO=y 1063CONFIG_CRYPTO=y
1040 1064
1041# 1065#
1042# Crypto core or helper 1066# Crypto core or helper
1043# 1067#
1068# CONFIG_CRYPTO_FIPS is not set
1044# CONFIG_CRYPTO_MANAGER is not set 1069# CONFIG_CRYPTO_MANAGER is not set
1045# CONFIG_CRYPTO_GF128MUL is not set 1070# CONFIG_CRYPTO_GF128MUL is not set
1046# CONFIG_CRYPTO_NULL is not set 1071# CONFIG_CRYPTO_NULL is not set
@@ -1113,13 +1138,17 @@ CONFIG_CRYPTO=y
1113# 1138#
1114# CONFIG_CRYPTO_DEFLATE is not set 1139# CONFIG_CRYPTO_DEFLATE is not set
1115# CONFIG_CRYPTO_LZO is not set 1140# CONFIG_CRYPTO_LZO is not set
1141
1142#
1143# Random Number Generation
1144#
1145# CONFIG_CRYPTO_ANSI_CPRNG is not set
1116CONFIG_CRYPTO_HW=y 1146CONFIG_CRYPTO_HW=y
1117 1147
1118# 1148#
1119# Library routines 1149# Library routines
1120# 1150#
1121CONFIG_BITREVERSE=y 1151CONFIG_BITREVERSE=y
1122# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1123# CONFIG_CRC_CCITT is not set 1152# CONFIG_CRC_CCITT is not set
1124# CONFIG_CRC16 is not set 1153# CONFIG_CRC16 is not set
1125CONFIG_CRC_T10DIF=y 1154CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig
index ff72697365d1..07e33c285b93 100644
--- a/arch/sh/configs/sh7785lcr_defconfig
+++ b/arch/sh/configs/sh7785lcr_defconfig
@@ -1,27 +1,29 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc8 3# Linux kernel version: 2.6.27
4# Tue Jul 15 21:37:59 2008 4# Wed Oct 22 19:49:23 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
10CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
11CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
13CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
14CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
15CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_SYS_SUPPORTS_NUMA=y 19CONFIG_SYS_SUPPORTS_NUMA=y
18CONFIG_SYS_SUPPORTS_PCI=y 20CONFIG_SYS_SUPPORTS_PCI=y
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set 24# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set 25# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y 26CONFIG_ARCH_NO_VIRT_TO_BUS=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
25CONFIG_IO_TRAPPED=y 27CONFIG_IO_TRAPPED=y
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
27 29
@@ -61,7 +63,6 @@ CONFIG_SYSCTL=y
61CONFIG_EMBEDDED=y 63CONFIG_EMBEDDED=y
62CONFIG_UID16=y 64CONFIG_UID16=y
63CONFIG_SYSCTL_SYSCALL=y 65CONFIG_SYSCTL_SYSCALL=y
64CONFIG_SYSCTL_SYSCALL_CHECK=y
65CONFIG_KALLSYMS=y 66CONFIG_KALLSYMS=y
66# CONFIG_KALLSYMS_ALL is not set 67# CONFIG_KALLSYMS_ALL is not set
67# CONFIG_KALLSYMS_EXTRA_PASS is not set 68# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -78,7 +79,9 @@ CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y 79CONFIG_TIMERFD=y
79CONFIG_EVENTFD=y 80CONFIG_EVENTFD=y
80CONFIG_SHMEM=y 81CONFIG_SHMEM=y
82CONFIG_AIO=y
81CONFIG_VM_EVENT_COUNTERS=y 83CONFIG_VM_EVENT_COUNTERS=y
84CONFIG_PCI_QUIRKS=y
82CONFIG_SLAB=y 85CONFIG_SLAB=y
83# CONFIG_SLUB is not set 86# CONFIG_SLUB is not set
84# CONFIG_SLOB is not set 87# CONFIG_SLOB is not set
@@ -86,10 +89,13 @@ CONFIG_PROFILING=y
86# CONFIG_MARKERS is not set 89# CONFIG_MARKERS is not set
87# CONFIG_OPROFILE is not set 90# CONFIG_OPROFILE is not set
88CONFIG_HAVE_OPROFILE=y 91CONFIG_HAVE_OPROFILE=y
89# CONFIG_HAVE_KPROBES is not set 92# CONFIG_KPROBES is not set
90# CONFIG_HAVE_KRETPROBES is not set 93CONFIG_HAVE_IOREMAP_PROT=y
91# CONFIG_HAVE_DMA_ATTRS is not set 94CONFIG_HAVE_KPROBES=y
92CONFIG_PROC_PAGE_MONITOR=y 95CONFIG_HAVE_KRETPROBES=y
96CONFIG_HAVE_ARCH_TRACEHOOK=y
97CONFIG_HAVE_CLK=y
98CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 99CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 100CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set 101# CONFIG_TINY_SHMEM is not set
@@ -106,6 +112,7 @@ CONFIG_BLOCK=y
106# CONFIG_BLK_DEV_IO_TRACE is not set 112# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set 113# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 114# CONFIG_BLK_DEV_BSG is not set
115# CONFIG_BLK_DEV_INTEGRITY is not set
109 116
110# 117#
111# IO Schedulers 118# IO Schedulers
@@ -120,6 +127,7 @@ CONFIG_DEFAULT_CFQ=y
120# CONFIG_DEFAULT_NOOP is not set 127# CONFIG_DEFAULT_NOOP is not set
121CONFIG_DEFAULT_IOSCHED="cfq" 128CONFIG_DEFAULT_IOSCHED="cfq"
122CONFIG_CLASSIC_RCU=y 129CONFIG_CLASSIC_RCU=y
130# CONFIG_FREEZER is not set
123 131
124# 132#
125# System type 133# System type
@@ -181,10 +189,12 @@ CONFIG_MAX_ACTIVE_REGIONS=2
181CONFIG_ARCH_POPULATES_NODE_MAP=y 189CONFIG_ARCH_POPULATES_NODE_MAP=y
182CONFIG_ARCH_SELECT_MEMORY_MODEL=y 190CONFIG_ARCH_SELECT_MEMORY_MODEL=y
183CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 191CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
192CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
184CONFIG_PAGE_SIZE_4KB=y 193CONFIG_PAGE_SIZE_4KB=y
185# CONFIG_PAGE_SIZE_8KB is not set 194# CONFIG_PAGE_SIZE_8KB is not set
186# CONFIG_PAGE_SIZE_16KB is not set 195# CONFIG_PAGE_SIZE_16KB is not set
187# CONFIG_PAGE_SIZE_64KB is not set 196# CONFIG_PAGE_SIZE_64KB is not set
197CONFIG_ENTRY_OFFSET=0x00001000
188CONFIG_SELECT_MEMORY_MODEL=y 198CONFIG_SELECT_MEMORY_MODEL=y
189# CONFIG_FLATMEM_MANUAL is not set 199# CONFIG_FLATMEM_MANUAL is not set
190# CONFIG_DISCONTIGMEM_MANUAL is not set 200# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -192,13 +202,15 @@ CONFIG_SPARSEMEM_MANUAL=y
192CONFIG_SPARSEMEM=y 202CONFIG_SPARSEMEM=y
193CONFIG_HAVE_MEMORY_PRESENT=y 203CONFIG_HAVE_MEMORY_PRESENT=y
194CONFIG_SPARSEMEM_STATIC=y 204CONFIG_SPARSEMEM_STATIC=y
195# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
196# CONFIG_MEMORY_HOTPLUG is not set 205# CONFIG_MEMORY_HOTPLUG is not set
197CONFIG_PAGEFLAGS_EXTENDED=y 206CONFIG_PAGEFLAGS_EXTENDED=y
198CONFIG_SPLIT_PTLOCK_CPUS=4 207CONFIG_SPLIT_PTLOCK_CPUS=4
208CONFIG_MIGRATION=y
199# CONFIG_RESOURCES_64BIT is not set 209# CONFIG_RESOURCES_64BIT is not set
210# CONFIG_PHYS_ADDR_T_64BIT is not set
200CONFIG_ZONE_DMA_FLAG=0 211CONFIG_ZONE_DMA_FLAG=0
201CONFIG_NR_QUICK=2 212CONFIG_NR_QUICK=2
213CONFIG_UNEVICTABLE_LRU=y
202 214
203# 215#
204# Cache configuration 216# Cache configuration
@@ -266,9 +278,10 @@ CONFIG_HZ_250=y
266# CONFIG_HZ_300 is not set 278# CONFIG_HZ_300 is not set
267# CONFIG_HZ_1000 is not set 279# CONFIG_HZ_1000 is not set
268CONFIG_HZ=250 280CONFIG_HZ=250
269# CONFIG_SCHED_HRTICK is not set 281CONFIG_SCHED_HRTICK=y
270CONFIG_KEXEC=y 282CONFIG_KEXEC=y
271# CONFIG_CRASH_DUMP is not set 283# CONFIG_CRASH_DUMP is not set
284# CONFIG_SECCOMP is not set
272# CONFIG_PREEMPT_NONE is not set 285# CONFIG_PREEMPT_NONE is not set
273# CONFIG_PREEMPT_VOLUNTARY is not set 286# CONFIG_PREEMPT_VOLUNTARY is not set
274CONFIG_PREEMPT=y 287CONFIG_PREEMPT=y
@@ -299,11 +312,9 @@ CONFIG_PCI_LEGACY=y
299# Executable file formats 312# Executable file formats
300# 313#
301CONFIG_BINFMT_ELF=y 314CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set
302# CONFIG_BINFMT_MISC is not set 317# CONFIG_BINFMT_MISC is not set
303
304#
305# Networking
306#
307CONFIG_NET=y 318CONFIG_NET=y
308 319
309# 320#
@@ -358,6 +369,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
358# CONFIG_TIPC is not set 369# CONFIG_TIPC is not set
359# CONFIG_ATM is not set 370# CONFIG_ATM is not set
360# CONFIG_BRIDGE is not set 371# CONFIG_BRIDGE is not set
372# CONFIG_NET_DSA is not set
361# CONFIG_VLAN_8021Q is not set 373# CONFIG_VLAN_8021Q is not set
362# CONFIG_DECNET is not set 374# CONFIG_DECNET is not set
363# CONFIG_LLC2 is not set 375# CONFIG_LLC2 is not set
@@ -378,12 +390,12 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
378# CONFIG_IRDA is not set 390# CONFIG_IRDA is not set
379# CONFIG_BT is not set 391# CONFIG_BT is not set
380# CONFIG_AF_RXRPC is not set 392# CONFIG_AF_RXRPC is not set
381 393# CONFIG_PHONET is not set
382# 394CONFIG_WIRELESS=y
383# Wireless
384#
385# CONFIG_CFG80211 is not set 395# CONFIG_CFG80211 is not set
396# CONFIG_WIRELESS_OLD_REGULATORY is not set
386CONFIG_WIRELESS_EXT=y 397CONFIG_WIRELESS_EXT=y
398CONFIG_WIRELESS_EXT_SYSFS=y
387# CONFIG_MAC80211 is not set 399# CONFIG_MAC80211 is not set
388# CONFIG_IEEE80211 is not set 400# CONFIG_IEEE80211 is not set
389# CONFIG_RFKILL is not set 401# CONFIG_RFKILL is not set
@@ -499,6 +511,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
499# CONFIG_BLK_DEV_XIP is not set 511# CONFIG_BLK_DEV_XIP is not set
500# CONFIG_CDROM_PKTCDVD is not set 512# CONFIG_CDROM_PKTCDVD is not set
501# CONFIG_ATA_OVER_ETH is not set 513# CONFIG_ATA_OVER_ETH is not set
514# CONFIG_BLK_DEV_HD is not set
502# CONFIG_MISC_DEVICES is not set 515# CONFIG_MISC_DEVICES is not set
503CONFIG_HAVE_IDE=y 516CONFIG_HAVE_IDE=y
504# CONFIG_IDE is not set 517# CONFIG_IDE is not set
@@ -541,6 +554,7 @@ CONFIG_SCSI_WAIT_SCAN=m
541# CONFIG_SCSI_SAS_LIBSAS is not set 554# CONFIG_SCSI_SAS_LIBSAS is not set
542# CONFIG_SCSI_SRP_ATTRS is not set 555# CONFIG_SCSI_SRP_ATTRS is not set
543# CONFIG_SCSI_LOWLEVEL is not set 556# CONFIG_SCSI_LOWLEVEL is not set
557# CONFIG_SCSI_DH is not set
544CONFIG_ATA=y 558CONFIG_ATA=y
545# CONFIG_ATA_NONSTANDARD is not set 559# CONFIG_ATA_NONSTANDARD is not set
546CONFIG_SATA_PMP=y 560CONFIG_SATA_PMP=y
@@ -615,7 +629,6 @@ CONFIG_SATA_SIL=y
615# CONFIG_IEEE1394 is not set 629# CONFIG_IEEE1394 is not set
616# CONFIG_I2O is not set 630# CONFIG_I2O is not set
617CONFIG_NETDEVICES=y 631CONFIG_NETDEVICES=y
618# CONFIG_NETDEVICES_MULTIQUEUE is not set
619# CONFIG_DUMMY is not set 632# CONFIG_DUMMY is not set
620# CONFIG_BONDING is not set 633# CONFIG_BONDING is not set
621# CONFIG_MACVLAN is not set 634# CONFIG_MACVLAN is not set
@@ -624,19 +637,18 @@ CONFIG_NETDEVICES=y
624# CONFIG_VETH is not set 637# CONFIG_VETH is not set
625# CONFIG_ARCNET is not set 638# CONFIG_ARCNET is not set
626# CONFIG_NET_ETHERNET is not set 639# CONFIG_NET_ETHERNET is not set
640CONFIG_MII=y
627CONFIG_NETDEV_1000=y 641CONFIG_NETDEV_1000=y
628# CONFIG_ACENIC is not set 642# CONFIG_ACENIC is not set
629# CONFIG_DL2K is not set 643# CONFIG_DL2K is not set
630# CONFIG_E1000 is not set 644# CONFIG_E1000 is not set
631# CONFIG_E1000E is not set 645# CONFIG_E1000E is not set
632# CONFIG_E1000E_ENABLED is not set
633# CONFIG_IP1000 is not set 646# CONFIG_IP1000 is not set
634# CONFIG_IGB is not set 647# CONFIG_IGB is not set
635# CONFIG_NS83820 is not set 648# CONFIG_NS83820 is not set
636# CONFIG_HAMACHI is not set 649# CONFIG_HAMACHI is not set
637# CONFIG_YELLOWFIN is not set 650# CONFIG_YELLOWFIN is not set
638CONFIG_R8169=y 651CONFIG_R8169=y
639# CONFIG_R8169_NAPI is not set
640# CONFIG_SIS190 is not set 652# CONFIG_SIS190 is not set
641# CONFIG_SKGE is not set 653# CONFIG_SKGE is not set
642# CONFIG_SKY2 is not set 654# CONFIG_SKY2 is not set
@@ -645,6 +657,8 @@ CONFIG_R8169=y
645# CONFIG_BNX2 is not set 657# CONFIG_BNX2 is not set
646# CONFIG_QLA3XXX is not set 658# CONFIG_QLA3XXX is not set
647# CONFIG_ATL1 is not set 659# CONFIG_ATL1 is not set
660# CONFIG_ATL1E is not set
661# CONFIG_JME is not set
648# CONFIG_NETDEV_10000 is not set 662# CONFIG_NETDEV_10000 is not set
649# CONFIG_TR is not set 663# CONFIG_TR is not set
650 664
@@ -679,7 +693,7 @@ CONFIG_R8169=y
679# Input device support 693# Input device support
680# 694#
681CONFIG_INPUT=y 695CONFIG_INPUT=y
682# CONFIG_INPUT_FF_MEMLESS is not set 696CONFIG_INPUT_FF_MEMLESS=m
683# CONFIG_INPUT_POLLDEV is not set 697# CONFIG_INPUT_POLLDEV is not set
684 698
685# 699#
@@ -720,6 +734,7 @@ CONFIG_INPUT_KEYBOARD=y
720# Character devices 734# Character devices
721# 735#
722CONFIG_VT=y 736CONFIG_VT=y
737CONFIG_CONSOLE_TRANSLATIONS=y
723CONFIG_VT_CONSOLE=y 738CONFIG_VT_CONSOLE=y
724CONFIG_HW_CONSOLE=y 739CONFIG_HW_CONSOLE=y
725CONFIG_VT_HW_CONSOLE_BINDING=y 740CONFIG_VT_HW_CONSOLE_BINDING=y
@@ -754,44 +769,65 @@ CONFIG_DEVPORT=y
754CONFIG_I2C=y 769CONFIG_I2C=y
755CONFIG_I2C_BOARDINFO=y 770CONFIG_I2C_BOARDINFO=y
756# CONFIG_I2C_CHARDEV is not set 771# CONFIG_I2C_CHARDEV is not set
772CONFIG_I2C_HELPER_AUTO=y
757CONFIG_I2C_ALGOPCA=y 773CONFIG_I2C_ALGOPCA=y
758 774
759# 775#
760# I2C Hardware Bus support 776# I2C Hardware Bus support
761# 777#
778
779#
780# PC SMBus host controller drivers
781#
762# CONFIG_I2C_ALI1535 is not set 782# CONFIG_I2C_ALI1535 is not set
763# CONFIG_I2C_ALI1563 is not set 783# CONFIG_I2C_ALI1563 is not set
764# CONFIG_I2C_ALI15X3 is not set 784# CONFIG_I2C_ALI15X3 is not set
765# CONFIG_I2C_AMD756 is not set 785# CONFIG_I2C_AMD756 is not set
766# CONFIG_I2C_AMD8111 is not set 786# CONFIG_I2C_AMD8111 is not set
767# CONFIG_I2C_I801 is not set 787# CONFIG_I2C_I801 is not set
768# CONFIG_I2C_I810 is not set 788# CONFIG_I2C_ISCH is not set
769# CONFIG_I2C_PIIX4 is not set 789# CONFIG_I2C_PIIX4 is not set
770# CONFIG_I2C_NFORCE2 is not set 790# CONFIG_I2C_NFORCE2 is not set
771# CONFIG_I2C_OCORES is not set
772# CONFIG_I2C_PARPORT_LIGHT is not set
773# CONFIG_I2C_PROSAVAGE is not set
774# CONFIG_I2C_SAVAGE4 is not set
775# CONFIG_I2C_SIMTEC is not set
776# CONFIG_I2C_SIS5595 is not set 791# CONFIG_I2C_SIS5595 is not set
777# CONFIG_I2C_SIS630 is not set 792# CONFIG_I2C_SIS630 is not set
778# CONFIG_I2C_SIS96X is not set 793# CONFIG_I2C_SIS96X is not set
779# CONFIG_I2C_TAOS_EVM is not set
780# CONFIG_I2C_STUB is not set
781# CONFIG_I2C_TINY_USB is not set
782# CONFIG_I2C_VIA is not set 794# CONFIG_I2C_VIA is not set
783# CONFIG_I2C_VIAPRO is not set 795# CONFIG_I2C_VIAPRO is not set
796
797#
798# I2C system bus drivers (mostly embedded / system-on-chip)
799#
800# CONFIG_I2C_OCORES is not set
801# CONFIG_I2C_SH_MOBILE is not set
802# CONFIG_I2C_SIMTEC is not set
803
804#
805# External I2C/SMBus adapter drivers
806#
807# CONFIG_I2C_PARPORT_LIGHT is not set
808# CONFIG_I2C_TAOS_EVM is not set
809# CONFIG_I2C_TINY_USB is not set
810
811#
812# Graphics adapter I2C/DDC channel drivers
813#
784# CONFIG_I2C_VOODOO3 is not set 814# CONFIG_I2C_VOODOO3 is not set
815
816#
817# Other I2C/SMBus bus drivers
818#
785CONFIG_I2C_PCA_PLATFORM=y 819CONFIG_I2C_PCA_PLATFORM=y
786# CONFIG_I2C_SH_MOBILE is not set 820# CONFIG_I2C_STUB is not set
787 821
788# 822#
789# Miscellaneous I2C Chip support 823# Miscellaneous I2C Chip support
790# 824#
791# CONFIG_DS1682 is not set 825# CONFIG_DS1682 is not set
826# CONFIG_AT24 is not set
792# CONFIG_SENSORS_EEPROM is not set 827# CONFIG_SENSORS_EEPROM is not set
793# CONFIG_SENSORS_PCF8574 is not set 828# CONFIG_SENSORS_PCF8574 is not set
794# CONFIG_PCF8575 is not set 829# CONFIG_PCF8575 is not set
830# CONFIG_SENSORS_PCA9539 is not set
795# CONFIG_SENSORS_PCF8591 is not set 831# CONFIG_SENSORS_PCF8591 is not set
796# CONFIG_SENSORS_MAX6875 is not set 832# CONFIG_SENSORS_MAX6875 is not set
797# CONFIG_SENSORS_TSL2550 is not set 833# CONFIG_SENSORS_TSL2550 is not set
@@ -816,8 +852,12 @@ CONFIG_SSB_POSSIBLE=y
816# 852#
817# Multifunction device drivers 853# Multifunction device drivers
818# 854#
855# CONFIG_MFD_CORE is not set
819CONFIG_MFD_SM501=y 856CONFIG_MFD_SM501=y
820# CONFIG_HTC_PASIC3 is not set 857# CONFIG_HTC_PASIC3 is not set
858# CONFIG_MFD_TMIO is not set
859# CONFIG_MFD_WM8400 is not set
860# CONFIG_MFD_WM8350_I2C is not set
821 861
822# 862#
823# Multimedia devices 863# Multimedia devices
@@ -844,6 +884,7 @@ CONFIG_MFD_SM501=y
844CONFIG_FB=y 884CONFIG_FB=y
845# CONFIG_FIRMWARE_EDID is not set 885# CONFIG_FIRMWARE_EDID is not set
846# CONFIG_FB_DDC is not set 886# CONFIG_FB_DDC is not set
887# CONFIG_FB_BOOT_VESA_SUPPORT is not set
847CONFIG_FB_CFB_FILLRECT=y 888CONFIG_FB_CFB_FILLRECT=y
848CONFIG_FB_CFB_COPYAREA=y 889CONFIG_FB_CFB_COPYAREA=y
849CONFIG_FB_CFB_IMAGEBLIT=y 890CONFIG_FB_CFB_IMAGEBLIT=y
@@ -877,6 +918,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
877# CONFIG_FB_S3 is not set 918# CONFIG_FB_S3 is not set
878# CONFIG_FB_SAVAGE is not set 919# CONFIG_FB_SAVAGE is not set
879# CONFIG_FB_SIS is not set 920# CONFIG_FB_SIS is not set
921# CONFIG_FB_VIA is not set
880# CONFIG_FB_NEOMAGIC is not set 922# CONFIG_FB_NEOMAGIC is not set
881# CONFIG_FB_KYRO is not set 923# CONFIG_FB_KYRO is not set
882# CONFIG_FB_3DFX is not set 924# CONFIG_FB_3DFX is not set
@@ -885,8 +927,11 @@ CONFIG_FB_CFB_IMAGEBLIT=y
885# CONFIG_FB_TRIDENT is not set 927# CONFIG_FB_TRIDENT is not set
886# CONFIG_FB_ARK is not set 928# CONFIG_FB_ARK is not set
887# CONFIG_FB_PM3 is not set 929# CONFIG_FB_PM3 is not set
930# CONFIG_FB_CARMINE is not set
931CONFIG_FB_SH_MOBILE_LCDC=m
888CONFIG_FB_SM501=y 932CONFIG_FB_SM501=y
889# CONFIG_FB_VIRTUAL is not set 933# CONFIG_FB_VIRTUAL is not set
934# CONFIG_FB_METRONOME is not set
890# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 935# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
891 936
892# 937#
@@ -911,10 +956,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
911# CONFIG_LOGO_SUPERH_MONO is not set 956# CONFIG_LOGO_SUPERH_MONO is not set
912# CONFIG_LOGO_SUPERH_VGA16 is not set 957# CONFIG_LOGO_SUPERH_VGA16 is not set
913# CONFIG_LOGO_SUPERH_CLUT224 is not set 958# CONFIG_LOGO_SUPERH_CLUT224 is not set
914
915#
916# Sound
917#
918# CONFIG_SOUND is not set 959# CONFIG_SOUND is not set
919CONFIG_HID_SUPPORT=y 960CONFIG_HID_SUPPORT=y
920CONFIG_HID=y 961CONFIG_HID=y
@@ -925,9 +966,36 @@ CONFIG_HID=y
925# USB Input Devices 966# USB Input Devices
926# 967#
927CONFIG_USB_HID=y 968CONFIG_USB_HID=y
928# CONFIG_USB_HIDINPUT_POWERBOOK is not set 969# CONFIG_HID_PID is not set
929# CONFIG_HID_FF is not set
930# CONFIG_USB_HIDDEV is not set 970# CONFIG_USB_HIDDEV is not set
971
972#
973# Special HID drivers
974#
975CONFIG_HID_COMPAT=y
976CONFIG_HID_A4TECH=y
977CONFIG_HID_APPLE=y
978CONFIG_HID_BELKIN=y
979CONFIG_HID_BRIGHT=y
980CONFIG_HID_CHERRY=y
981CONFIG_HID_CHICONY=y
982CONFIG_HID_CYPRESS=y
983CONFIG_HID_DELL=y
984CONFIG_HID_EZKEY=y
985CONFIG_HID_GYRATION=y
986CONFIG_HID_LOGITECH=y
987# CONFIG_LOGITECH_FF is not set
988# CONFIG_LOGIRUMBLEPAD2_FF is not set
989CONFIG_HID_MICROSOFT=y
990CONFIG_HID_MONTEREY=y
991CONFIG_HID_PANTHERLORD=y
992# CONFIG_PANTHERLORD_FF is not set
993CONFIG_HID_PETALYNX=y
994CONFIG_HID_SAMSUNG=y
995CONFIG_HID_SONY=y
996CONFIG_HID_SUNPLUS=y
997CONFIG_THRUSTMASTER_FF=m
998CONFIG_ZEROPLUS_FF=m
931CONFIG_USB_SUPPORT=y 999CONFIG_USB_SUPPORT=y
932CONFIG_USB_ARCH_HAS_HCD=y 1000CONFIG_USB_ARCH_HAS_HCD=y
933CONFIG_USB_ARCH_HAS_OHCI=y 1001CONFIG_USB_ARCH_HAS_OHCI=y
@@ -945,6 +1013,7 @@ CONFIG_USB_DEVICE_CLASS=y
945# CONFIG_USB_OTG is not set 1013# CONFIG_USB_OTG is not set
946# CONFIG_USB_OTG_WHITELIST is not set 1014# CONFIG_USB_OTG_WHITELIST is not set
947# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1015# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1016CONFIG_USB_MON=y
948 1017
949# 1018#
950# USB Host Controller Drivers 1019# USB Host Controller Drivers
@@ -969,6 +1038,7 @@ CONFIG_USB_R8A66597_HCD=y
969# CONFIG_USB_ACM is not set 1038# CONFIG_USB_ACM is not set
970# CONFIG_USB_PRINTER is not set 1039# CONFIG_USB_PRINTER is not set
971# CONFIG_USB_WDM is not set 1040# CONFIG_USB_WDM is not set
1041# CONFIG_USB_TMC is not set
972 1042
973# 1043#
974# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1044# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -998,7 +1068,6 @@ CONFIG_USB_STORAGE=y
998# 1068#
999# CONFIG_USB_MDC800 is not set 1069# CONFIG_USB_MDC800 is not set
1000# CONFIG_USB_MICROTEK is not set 1070# CONFIG_USB_MICROTEK is not set
1001CONFIG_USB_MON=y
1002 1071
1003# 1072#
1004# USB port drivers 1073# USB port drivers
@@ -1011,7 +1080,7 @@ CONFIG_USB_MON=y
1011# CONFIG_USB_EMI62 is not set 1080# CONFIG_USB_EMI62 is not set
1012# CONFIG_USB_EMI26 is not set 1081# CONFIG_USB_EMI26 is not set
1013# CONFIG_USB_ADUTUX is not set 1082# CONFIG_USB_ADUTUX is not set
1014# CONFIG_USB_AUERSWALD is not set 1083# CONFIG_USB_SEVSEG is not set
1015# CONFIG_USB_RIO500 is not set 1084# CONFIG_USB_RIO500 is not set
1016# CONFIG_USB_LEGOTOWER is not set 1085# CONFIG_USB_LEGOTOWER is not set
1017# CONFIG_USB_LCD is not set 1086# CONFIG_USB_LCD is not set
@@ -1029,6 +1098,7 @@ CONFIG_USB_MON=y
1029# CONFIG_USB_IOWARRIOR is not set 1098# CONFIG_USB_IOWARRIOR is not set
1030CONFIG_USB_TEST=m 1099CONFIG_USB_TEST=m
1031# CONFIG_USB_ISIGHTFW is not set 1100# CONFIG_USB_ISIGHTFW is not set
1101# CONFIG_USB_VST is not set
1032# CONFIG_USB_GADGET is not set 1102# CONFIG_USB_GADGET is not set
1033# CONFIG_MMC is not set 1103# CONFIG_MMC is not set
1034# CONFIG_MEMSTICK is not set 1104# CONFIG_MEMSTICK is not set
@@ -1073,19 +1143,24 @@ CONFIG_RTC_DRV_RS5C372=y
1073# 1143#
1074# Platform RTC drivers 1144# Platform RTC drivers
1075# 1145#
1146# CONFIG_RTC_DRV_DS1286 is not set
1076# CONFIG_RTC_DRV_DS1511 is not set 1147# CONFIG_RTC_DRV_DS1511 is not set
1077# CONFIG_RTC_DRV_DS1553 is not set 1148# CONFIG_RTC_DRV_DS1553 is not set
1078# CONFIG_RTC_DRV_DS1742 is not set 1149# CONFIG_RTC_DRV_DS1742 is not set
1079# CONFIG_RTC_DRV_STK17TA8 is not set 1150# CONFIG_RTC_DRV_STK17TA8 is not set
1080# CONFIG_RTC_DRV_M48T86 is not set 1151# CONFIG_RTC_DRV_M48T86 is not set
1152# CONFIG_RTC_DRV_M48T35 is not set
1081# CONFIG_RTC_DRV_M48T59 is not set 1153# CONFIG_RTC_DRV_M48T59 is not set
1154# CONFIG_RTC_DRV_BQ4802 is not set
1082# CONFIG_RTC_DRV_V3020 is not set 1155# CONFIG_RTC_DRV_V3020 is not set
1083 1156
1084# 1157#
1085# on-CPU RTC drivers 1158# on-CPU RTC drivers
1086# 1159#
1087# CONFIG_RTC_DRV_SH is not set 1160# CONFIG_RTC_DRV_SH is not set
1161# CONFIG_DMADEVICES is not set
1088# CONFIG_UIO is not set 1162# CONFIG_UIO is not set
1163# CONFIG_STAGING is not set
1089 1164
1090# 1165#
1091# File systems 1166# File systems
@@ -1097,12 +1172,13 @@ CONFIG_EXT3_FS=y
1097CONFIG_EXT3_FS_XATTR=y 1172CONFIG_EXT3_FS_XATTR=y
1098# CONFIG_EXT3_FS_POSIX_ACL is not set 1173# CONFIG_EXT3_FS_POSIX_ACL is not set
1099# CONFIG_EXT3_FS_SECURITY is not set 1174# CONFIG_EXT3_FS_SECURITY is not set
1100# CONFIG_EXT4DEV_FS is not set 1175# CONFIG_EXT4_FS is not set
1101CONFIG_JBD=y 1176CONFIG_JBD=y
1102CONFIG_FS_MBCACHE=y 1177CONFIG_FS_MBCACHE=y
1103# CONFIG_REISERFS_FS is not set 1178# CONFIG_REISERFS_FS is not set
1104# CONFIG_JFS_FS is not set 1179# CONFIG_JFS_FS is not set
1105CONFIG_FS_POSIX_ACL=y 1180CONFIG_FS_POSIX_ACL=y
1181CONFIG_FILE_LOCKING=y
1106# CONFIG_XFS_FS is not set 1182# CONFIG_XFS_FS is not set
1107# CONFIG_OCFS2_FS is not set 1183# CONFIG_OCFS2_FS is not set
1108CONFIG_DNOTIFY=y 1184CONFIG_DNOTIFY=y
@@ -1137,6 +1213,7 @@ CONFIG_NTFS_RW=y
1137CONFIG_PROC_FS=y 1213CONFIG_PROC_FS=y
1138CONFIG_PROC_KCORE=y 1214CONFIG_PROC_KCORE=y
1139CONFIG_PROC_SYSCTL=y 1215CONFIG_PROC_SYSCTL=y
1216CONFIG_PROC_PAGE_MONITOR=y
1140CONFIG_SYSFS=y 1217CONFIG_SYSFS=y
1141CONFIG_TMPFS=y 1218CONFIG_TMPFS=y
1142# CONFIG_TMPFS_POSIX_ACL is not set 1219# CONFIG_TMPFS_POSIX_ACL is not set
@@ -1158,6 +1235,7 @@ CONFIG_TMPFS=y
1158# CONFIG_CRAMFS is not set 1235# CONFIG_CRAMFS is not set
1159# CONFIG_VXFS_FS is not set 1236# CONFIG_VXFS_FS is not set
1160CONFIG_MINIX_FS=y 1237CONFIG_MINIX_FS=y
1238# CONFIG_OMFS_FS is not set
1161# CONFIG_HPFS_FS is not set 1239# CONFIG_HPFS_FS is not set
1162# CONFIG_QNX4FS_FS is not set 1240# CONFIG_QNX4FS_FS is not set
1163# CONFIG_ROMFS_FS is not set 1241# CONFIG_ROMFS_FS is not set
@@ -1168,18 +1246,18 @@ CONFIG_NFS_FS=y
1168CONFIG_NFS_V3=y 1246CONFIG_NFS_V3=y
1169# CONFIG_NFS_V3_ACL is not set 1247# CONFIG_NFS_V3_ACL is not set
1170CONFIG_NFS_V4=y 1248CONFIG_NFS_V4=y
1249CONFIG_ROOT_NFS=y
1171CONFIG_NFSD=y 1250CONFIG_NFSD=y
1172CONFIG_NFSD_V3=y 1251CONFIG_NFSD_V3=y
1173# CONFIG_NFSD_V3_ACL is not set 1252# CONFIG_NFSD_V3_ACL is not set
1174CONFIG_NFSD_V4=y 1253CONFIG_NFSD_V4=y
1175CONFIG_ROOT_NFS=y
1176CONFIG_LOCKD=y 1254CONFIG_LOCKD=y
1177CONFIG_LOCKD_V4=y 1255CONFIG_LOCKD_V4=y
1178CONFIG_EXPORTFS=y 1256CONFIG_EXPORTFS=y
1179CONFIG_NFS_COMMON=y 1257CONFIG_NFS_COMMON=y
1180CONFIG_SUNRPC=y 1258CONFIG_SUNRPC=y
1181CONFIG_SUNRPC_GSS=y 1259CONFIG_SUNRPC_GSS=y
1182# CONFIG_SUNRPC_BIND34 is not set 1260# CONFIG_SUNRPC_REGISTER_V4 is not set
1183CONFIG_RPCSEC_GSS_KRB5=y 1261CONFIG_RPCSEC_GSS_KRB5=y
1184# CONFIG_RPCSEC_GSS_SPKM3 is not set 1262# CONFIG_RPCSEC_GSS_SPKM3 is not set
1185# CONFIG_SMB_FS is not set 1263# CONFIG_SMB_FS is not set
@@ -1250,6 +1328,8 @@ CONFIG_FRAME_WARN=1024
1250CONFIG_DEBUG_KERNEL=y 1328CONFIG_DEBUG_KERNEL=y
1251# CONFIG_DEBUG_SHIRQ is not set 1329# CONFIG_DEBUG_SHIRQ is not set
1252CONFIG_DETECT_SOFTLOCKUP=y 1330CONFIG_DETECT_SOFTLOCKUP=y
1331# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1332CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1253CONFIG_SCHED_DEBUG=y 1333CONFIG_SCHED_DEBUG=y
1254# CONFIG_SCHEDSTATS is not set 1334# CONFIG_SCHEDSTATS is not set
1255# CONFIG_TIMER_STATS is not set 1335# CONFIG_TIMER_STATS is not set
@@ -1270,13 +1350,27 @@ CONFIG_DEBUG_PREEMPT=y
1270# CONFIG_DEBUG_INFO is not set 1350# CONFIG_DEBUG_INFO is not set
1271# CONFIG_DEBUG_VM is not set 1351# CONFIG_DEBUG_VM is not set
1272# CONFIG_DEBUG_WRITECOUNT is not set 1352# CONFIG_DEBUG_WRITECOUNT is not set
1353# CONFIG_DEBUG_MEMORY_INIT is not set
1273# CONFIG_DEBUG_LIST is not set 1354# CONFIG_DEBUG_LIST is not set
1274# CONFIG_DEBUG_SG is not set 1355# CONFIG_DEBUG_SG is not set
1275# CONFIG_FRAME_POINTER is not set 1356# CONFIG_FRAME_POINTER is not set
1276# CONFIG_BOOT_PRINTK_DELAY is not set
1277# CONFIG_RCU_TORTURE_TEST is not set 1357# CONFIG_RCU_TORTURE_TEST is not set
1358# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1278# CONFIG_BACKTRACE_SELF_TEST is not set 1359# CONFIG_BACKTRACE_SELF_TEST is not set
1360# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1279# CONFIG_FAULT_INJECTION is not set 1361# CONFIG_FAULT_INJECTION is not set
1362# CONFIG_LATENCYTOP is not set
1363CONFIG_SYSCTL_SYSCALL_CHECK=y
1364CONFIG_NOP_TRACER=y
1365CONFIG_HAVE_FTRACE=y
1366# CONFIG_FTRACE is not set
1367# CONFIG_IRQSOFF_TRACER is not set
1368# CONFIG_PREEMPT_TRACER is not set
1369# CONFIG_SCHED_TRACER is not set
1370# CONFIG_CONTEXT_SWITCH_TRACER is not set
1371# CONFIG_BOOT_TRACER is not set
1372# CONFIG_STACK_TRACER is not set
1373# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1280# CONFIG_SAMPLES is not set 1374# CONFIG_SAMPLES is not set
1281# CONFIG_SH_STANDARD_BIOS is not set 1375# CONFIG_SH_STANDARD_BIOS is not set
1282# CONFIG_EARLY_SCIF_CONSOLE is not set 1376# CONFIG_EARLY_SCIF_CONSOLE is not set
@@ -1292,15 +1386,19 @@ CONFIG_DEBUG_PREEMPT=y
1292# 1386#
1293# CONFIG_KEYS is not set 1387# CONFIG_KEYS is not set
1294# CONFIG_SECURITY is not set 1388# CONFIG_SECURITY is not set
1389# CONFIG_SECURITYFS is not set
1295# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1390# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1296CONFIG_CRYPTO=y 1391CONFIG_CRYPTO=y
1297 1392
1298# 1393#
1299# Crypto core or helper 1394# Crypto core or helper
1300# 1395#
1396# CONFIG_CRYPTO_FIPS is not set
1301CONFIG_CRYPTO_ALGAPI=y 1397CONFIG_CRYPTO_ALGAPI=y
1398CONFIG_CRYPTO_AEAD=y
1302CONFIG_CRYPTO_BLKCIPHER=y 1399CONFIG_CRYPTO_BLKCIPHER=y
1303CONFIG_CRYPTO_HASH=y 1400CONFIG_CRYPTO_HASH=y
1401CONFIG_CRYPTO_RNG=y
1304CONFIG_CRYPTO_MANAGER=y 1402CONFIG_CRYPTO_MANAGER=y
1305# CONFIG_CRYPTO_GF128MUL is not set 1403# CONFIG_CRYPTO_GF128MUL is not set
1306# CONFIG_CRYPTO_NULL is not set 1404# CONFIG_CRYPTO_NULL is not set
@@ -1339,6 +1437,10 @@ CONFIG_CRYPTO_HMAC=y
1339# CONFIG_CRYPTO_MD4 is not set 1437# CONFIG_CRYPTO_MD4 is not set
1340CONFIG_CRYPTO_MD5=y 1438CONFIG_CRYPTO_MD5=y
1341# CONFIG_CRYPTO_MICHAEL_MIC is not set 1439# CONFIG_CRYPTO_MICHAEL_MIC is not set
1440# CONFIG_CRYPTO_RMD128 is not set
1441# CONFIG_CRYPTO_RMD160 is not set
1442# CONFIG_CRYPTO_RMD256 is not set
1443# CONFIG_CRYPTO_RMD320 is not set
1342# CONFIG_CRYPTO_SHA1 is not set 1444# CONFIG_CRYPTO_SHA1 is not set
1343# CONFIG_CRYPTO_SHA256 is not set 1445# CONFIG_CRYPTO_SHA256 is not set
1344# CONFIG_CRYPTO_SHA512 is not set 1446# CONFIG_CRYPTO_SHA512 is not set
@@ -1369,15 +1471,20 @@ CONFIG_CRYPTO_DES=y
1369# 1471#
1370# CONFIG_CRYPTO_DEFLATE is not set 1472# CONFIG_CRYPTO_DEFLATE is not set
1371# CONFIG_CRYPTO_LZO is not set 1473# CONFIG_CRYPTO_LZO is not set
1474
1475#
1476# Random Number Generation
1477#
1478# CONFIG_CRYPTO_ANSI_CPRNG is not set
1372# CONFIG_CRYPTO_HW is not set 1479# CONFIG_CRYPTO_HW is not set
1373 1480
1374# 1481#
1375# Library routines 1482# Library routines
1376# 1483#
1377CONFIG_BITREVERSE=y 1484CONFIG_BITREVERSE=y
1378# CONFIG_GENERIC_FIND_FIRST_BIT is not set
1379# CONFIG_CRC_CCITT is not set 1485# CONFIG_CRC_CCITT is not set
1380# CONFIG_CRC16 is not set 1486# CONFIG_CRC16 is not set
1487# CONFIG_CRC_T10DIF is not set
1381# CONFIG_CRC_ITU_T is not set 1488# CONFIG_CRC_ITU_T is not set
1382CONFIG_CRC32=y 1489CONFIG_CRC32=y
1383# CONFIG_CRC7 is not set 1490# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/shmin_defconfig b/arch/sh/configs/shmin_defconfig
index 8800fefcbaf0..e2b38a334976 100644
--- a/arch/sh/configs/shmin_defconfig
+++ b/arch/sh/configs/shmin_defconfig
@@ -1,27 +1,34 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.27
4# Tue Oct 3 12:52:49 2006 4# Wed Oct 22 19:52:59 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 11CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
13CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
11CONFIG_GENERIC_IRQ_PROBE=y 14CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 15# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y
18CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y
20CONFIG_HAVE_LATENCYTOP_SUPPORT=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_ARCH_NO_VIRT_TO_BUS=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 25
15# 26#
16# Code maturity level options 27# General setup
17# 28#
18CONFIG_EXPERIMENTAL=y 29CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y 30CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
27# CONFIG_SWAP is not set 34# CONFIG_SWAP is not set
@@ -29,11 +36,14 @@ CONFIG_LOCALVERSION_AUTO=y
29# CONFIG_POSIX_MQUEUE is not set 36# CONFIG_POSIX_MQUEUE is not set
30# CONFIG_BSD_PROCESS_ACCT is not set 37# CONFIG_BSD_PROCESS_ACCT is not set
31# CONFIG_TASKSTATS is not set 38# CONFIG_TASKSTATS is not set
32# CONFIG_UTS_NS is not set
33# CONFIG_AUDIT is not set 39# CONFIG_AUDIT is not set
34# CONFIG_IKCONFIG is not set 40# CONFIG_IKCONFIG is not set
41CONFIG_LOG_BUF_SHIFT=14
42# CONFIG_CGROUPS is not set
43# CONFIG_GROUP_SCHED is not set
35# CONFIG_RELAY is not set 44# CONFIG_RELAY is not set
36CONFIG_INITRAMFS_SOURCE="" 45# CONFIG_NAMESPACES is not set
46# CONFIG_BLK_DEV_INITRD is not set
37CONFIG_CC_OPTIMIZE_FOR_SIZE=y 47CONFIG_CC_OPTIMIZE_FOR_SIZE=y
38CONFIG_SYSCTL=y 48CONFIG_SYSCTL=y
39CONFIG_EMBEDDED=y 49CONFIG_EMBEDDED=y
@@ -44,27 +54,38 @@ CONFIG_EMBEDDED=y
44CONFIG_PRINTK=y 54CONFIG_PRINTK=y
45# CONFIG_BUG is not set 55# CONFIG_BUG is not set
46# CONFIG_ELF_CORE is not set 56# CONFIG_ELF_CORE is not set
57CONFIG_COMPAT_BRK=y
47# CONFIG_BASE_FULL is not set 58# CONFIG_BASE_FULL is not set
48# CONFIG_FUTEX is not set 59# CONFIG_FUTEX is not set
60CONFIG_ANON_INODES=y
49# CONFIG_EPOLL is not set 61# CONFIG_EPOLL is not set
62CONFIG_SIGNALFD=y
63CONFIG_TIMERFD=y
64CONFIG_EVENTFD=y
50# CONFIG_SHMEM is not set 65# CONFIG_SHMEM is not set
51# CONFIG_SLAB is not set 66CONFIG_AIO=y
52CONFIG_VM_EVENT_COUNTERS=y 67CONFIG_VM_EVENT_COUNTERS=y
68CONFIG_PCI_QUIRKS=y
69# CONFIG_SLAB is not set
70# CONFIG_SLUB is not set
71CONFIG_SLOB=y
72# CONFIG_PROFILING is not set
73# CONFIG_MARKERS is not set
74CONFIG_HAVE_OPROFILE=y
75CONFIG_HAVE_IOREMAP_PROT=y
76CONFIG_HAVE_KPROBES=y
77CONFIG_HAVE_KRETPROBES=y
78CONFIG_HAVE_ARCH_TRACEHOOK=y
79CONFIG_HAVE_CLK=y
80CONFIG_HAVE_GENERIC_DMA_COHERENT=y
53CONFIG_TINY_SHMEM=y 81CONFIG_TINY_SHMEM=y
54CONFIG_BASE_SMALL=1 82CONFIG_BASE_SMALL=1
55CONFIG_SLOB=y
56
57#
58# Loadable module support
59#
60# CONFIG_MODULES is not set 83# CONFIG_MODULES is not set
61
62#
63# Block layer
64#
65CONFIG_BLOCK=y 84CONFIG_BLOCK=y
66# CONFIG_LBD is not set 85# CONFIG_LBD is not set
67# CONFIG_LSF is not set 86# CONFIG_LSF is not set
87# CONFIG_BLK_DEV_BSG is not set
88# CONFIG_BLK_DEV_INTEGRITY is not set
68 89
69# 90#
70# IO Schedulers 91# IO Schedulers
@@ -78,59 +99,27 @@ CONFIG_IOSCHED_NOOP=y
78# CONFIG_DEFAULT_CFQ is not set 99# CONFIG_DEFAULT_CFQ is not set
79CONFIG_DEFAULT_NOOP=y 100CONFIG_DEFAULT_NOOP=y
80CONFIG_DEFAULT_IOSCHED="noop" 101CONFIG_DEFAULT_IOSCHED="noop"
102CONFIG_CLASSIC_RCU=y
103# CONFIG_FREEZER is not set
81 104
82# 105#
83# System type 106# System type
84# 107#
85# CONFIG_SH_SOLUTION_ENGINE is not set
86# CONFIG_SH_7751_SOLUTION_ENGINE is not set
87# CONFIG_SH_7300_SOLUTION_ENGINE is not set
88# CONFIG_SH_7343_SOLUTION_ENGINE is not set
89# CONFIG_SH_73180_SOLUTION_ENGINE is not set
90# CONFIG_SH_7751_SYSTEMH is not set
91# CONFIG_SH_HP6XX is not set
92# CONFIG_SH_EC3104 is not set
93# CONFIG_SH_SATURN is not set
94# CONFIG_SH_DREAMCAST is not set
95# CONFIG_SH_BIGSUR is not set
96# CONFIG_SH_MPC1211 is not set
97# CONFIG_SH_SH03 is not set
98# CONFIG_SH_SECUREEDGE5410 is not set
99# CONFIG_SH_HS7751RVOIP is not set
100# CONFIG_SH_7710VOIPGW is not set
101# CONFIG_SH_RTS7751R2D is not set
102# CONFIG_SH_R7780RP is not set
103# CONFIG_SH_EDOSK7705 is not set
104# CONFIG_SH_SH4202_MICRODEV is not set
105# CONFIG_SH_LANDISK is not set
106# CONFIG_SH_TITAN is not set
107CONFIG_SH_SHMIN=y
108# CONFIG_SH_UNKNOWN is not set
109
110#
111# Processor selection
112#
113CONFIG_CPU_SH3=y 108CONFIG_CPU_SH3=y
114 109# CONFIG_CPU_SUBTYPE_SH7619 is not set
115# 110# CONFIG_CPU_SUBTYPE_SH7203 is not set
116# SH-2 Processor Support 111# CONFIG_CPU_SUBTYPE_SH7206 is not set
117# 112# CONFIG_CPU_SUBTYPE_SH7263 is not set
118# CONFIG_CPU_SUBTYPE_SH7604 is not set 113# CONFIG_CPU_SUBTYPE_MXG is not set
119
120#
121# SH-3 Processor Support
122#
123# CONFIG_CPU_SUBTYPE_SH7300 is not set
124# CONFIG_CPU_SUBTYPE_SH7705 is not set 114# CONFIG_CPU_SUBTYPE_SH7705 is not set
125CONFIG_CPU_SUBTYPE_SH7706=y 115CONFIG_CPU_SUBTYPE_SH7706=y
126# CONFIG_CPU_SUBTYPE_SH7707 is not set 116# CONFIG_CPU_SUBTYPE_SH7707 is not set
127# CONFIG_CPU_SUBTYPE_SH7708 is not set 117# CONFIG_CPU_SUBTYPE_SH7708 is not set
128# CONFIG_CPU_SUBTYPE_SH7709 is not set 118# CONFIG_CPU_SUBTYPE_SH7709 is not set
129# CONFIG_CPU_SUBTYPE_SH7710 is not set 119# CONFIG_CPU_SUBTYPE_SH7710 is not set
130 120# CONFIG_CPU_SUBTYPE_SH7712 is not set
131# 121# CONFIG_CPU_SUBTYPE_SH7720 is not set
132# SH-4 Processor Support 122# CONFIG_CPU_SUBTYPE_SH7721 is not set
133#
134# CONFIG_CPU_SUBTYPE_SH7750 is not set 123# CONFIG_CPU_SUBTYPE_SH7750 is not set
135# CONFIG_CPU_SUBTYPE_SH7091 is not set 124# CONFIG_CPU_SUBTYPE_SH7091 is not set
136# CONFIG_CPU_SUBTYPE_SH7750R is not set 125# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -139,65 +128,87 @@ CONFIG_CPU_SUBTYPE_SH7706=y
139# CONFIG_CPU_SUBTYPE_SH7751R is not set 128# CONFIG_CPU_SUBTYPE_SH7751R is not set
140# CONFIG_CPU_SUBTYPE_SH7760 is not set 129# CONFIG_CPU_SUBTYPE_SH7760 is not set
141# CONFIG_CPU_SUBTYPE_SH4_202 is not set 130# CONFIG_CPU_SUBTYPE_SH4_202 is not set
142 131# CONFIG_CPU_SUBTYPE_SH7723 is not set
143# 132# CONFIG_CPU_SUBTYPE_SH7763 is not set
144# ST40 Processor Support
145#
146# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
147# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
148
149#
150# SH-4A Processor Support
151#
152# CONFIG_CPU_SUBTYPE_SH7770 is not set 133# CONFIG_CPU_SUBTYPE_SH7770 is not set
153# CONFIG_CPU_SUBTYPE_SH7780 is not set 134# CONFIG_CPU_SUBTYPE_SH7780 is not set
154 135# CONFIG_CPU_SUBTYPE_SH7785 is not set
155# 136# CONFIG_CPU_SUBTYPE_SHX3 is not set
156# SH4AL-DSP Processor Support
157#
158# CONFIG_CPU_SUBTYPE_SH73180 is not set
159# CONFIG_CPU_SUBTYPE_SH7343 is not set 137# CONFIG_CPU_SUBTYPE_SH7343 is not set
138# CONFIG_CPU_SUBTYPE_SH7722 is not set
139# CONFIG_CPU_SUBTYPE_SH7366 is not set
140# CONFIG_CPU_SUBTYPE_SH5_101 is not set
141# CONFIG_CPU_SUBTYPE_SH5_103 is not set
160 142
161# 143#
162# Memory management options 144# Memory management options
163# 145#
146CONFIG_QUICKLIST=y
164CONFIG_MMU=y 147CONFIG_MMU=y
165CONFIG_PAGE_OFFSET=0x80000000 148CONFIG_PAGE_OFFSET=0x80000000
166CONFIG_MEMORY_START=0x0c000000 149CONFIG_MEMORY_START=0x0c000000
167CONFIG_MEMORY_SIZE=0x00800000 150CONFIG_MEMORY_SIZE=0x00800000
151CONFIG_29BIT=y
168CONFIG_VSYSCALL=y 152CONFIG_VSYSCALL=y
153CONFIG_ARCH_FLATMEM_ENABLE=y
154CONFIG_ARCH_SPARSEMEM_ENABLE=y
155CONFIG_ARCH_SPARSEMEM_DEFAULT=y
156CONFIG_MAX_ACTIVE_REGIONS=1
157CONFIG_ARCH_POPULATES_NODE_MAP=y
158CONFIG_ARCH_SELECT_MEMORY_MODEL=y
159CONFIG_PAGE_SIZE_4KB=y
160# CONFIG_PAGE_SIZE_8KB is not set
161# CONFIG_PAGE_SIZE_16KB is not set
162# CONFIG_PAGE_SIZE_64KB is not set
163CONFIG_ENTRY_OFFSET=0x00001000
169CONFIG_SELECT_MEMORY_MODEL=y 164CONFIG_SELECT_MEMORY_MODEL=y
170CONFIG_FLATMEM_MANUAL=y 165CONFIG_FLATMEM_MANUAL=y
171# CONFIG_DISCONTIGMEM_MANUAL is not set 166# CONFIG_DISCONTIGMEM_MANUAL is not set
172# CONFIG_SPARSEMEM_MANUAL is not set 167# CONFIG_SPARSEMEM_MANUAL is not set
173CONFIG_FLATMEM=y 168CONFIG_FLATMEM=y
174CONFIG_FLAT_NODE_MEM_MAP=y 169CONFIG_FLAT_NODE_MEM_MAP=y
175# CONFIG_SPARSEMEM_STATIC is not set 170CONFIG_SPARSEMEM_STATIC=y
171CONFIG_PAGEFLAGS_EXTENDED=y
176CONFIG_SPLIT_PTLOCK_CPUS=4 172CONFIG_SPLIT_PTLOCK_CPUS=4
177# CONFIG_RESOURCES_64BIT is not set 173# CONFIG_RESOURCES_64BIT is not set
174# CONFIG_PHYS_ADDR_T_64BIT is not set
175CONFIG_ZONE_DMA_FLAG=0
176CONFIG_NR_QUICK=2
177CONFIG_UNEVICTABLE_LRU=y
178 178
179# 179#
180# Cache configuration 180# Cache configuration
181# 181#
182# CONFIG_SH_DIRECT_MAPPED is not set 182# CONFIG_SH_DIRECT_MAPPED is not set
183# CONFIG_SH_WRITETHROUGH is not set 183CONFIG_CACHE_WRITEBACK=y
184# CONFIG_SH_OCRAM is not set 184# CONFIG_CACHE_WRITETHROUGH is not set
185# CONFIG_CACHE_OFF is not set
185 186
186# 187#
187# Processor features 188# Processor features
188# 189#
189CONFIG_CPU_LITTLE_ENDIAN=y 190CONFIG_CPU_LITTLE_ENDIAN=y
191# CONFIG_CPU_BIG_ENDIAN is not set
190# CONFIG_SH_FPU_EMU is not set 192# CONFIG_SH_FPU_EMU is not set
191# CONFIG_SH_DSP is not set
192# CONFIG_SH_ADC is not set 193# CONFIG_SH_ADC is not set
193CONFIG_CPU_HAS_INTEVT=y 194CONFIG_CPU_HAS_INTEVT=y
195CONFIG_CPU_HAS_IPR_IRQ=y
194CONFIG_CPU_HAS_SR_RB=y 196CONFIG_CPU_HAS_SR_RB=y
195 197
196# 198#
197# Timer support 199# Board support
200#
201CONFIG_SH_SHMIN=y
202
203#
204# Timer and clock configuration
198# 205#
199CONFIG_SH_TMU=y 206CONFIG_SH_TMU=y
207CONFIG_SH_TIMER_IRQ=16
200CONFIG_SH_PCLK_FREQ=32000000 208CONFIG_SH_PCLK_FREQ=32000000
209# CONFIG_NO_HZ is not set
210# CONFIG_HIGH_RES_TIMERS is not set
211CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
201 212
202# 213#
203# CPU Frequency scaling 214# CPU Frequency scaling
@@ -212,69 +223,63 @@ CONFIG_SH_PCLK_FREQ=32000000
212# 223#
213# Companion Chips 224# Companion Chips
214# 225#
215# CONFIG_HD6446X_SERIES is not set 226
227#
228# Additional SuperH Device Drivers
229#
230# CONFIG_HEARTBEAT is not set
231# CONFIG_PUSH_SWITCH is not set
216 232
217# 233#
218# Kernel features 234# Kernel features
219# 235#
220# CONFIG_HZ_100 is not set 236# CONFIG_HZ_100 is not set
221CONFIG_HZ_250=y 237CONFIG_HZ_250=y
238# CONFIG_HZ_300 is not set
222# CONFIG_HZ_1000 is not set 239# CONFIG_HZ_1000 is not set
223CONFIG_HZ=250 240CONFIG_HZ=250
241# CONFIG_SCHED_HRTICK is not set
224# CONFIG_KEXEC is not set 242# CONFIG_KEXEC is not set
225# CONFIG_SMP is not set 243# CONFIG_CRASH_DUMP is not set
244# CONFIG_SECCOMP is not set
226CONFIG_PREEMPT_NONE=y 245CONFIG_PREEMPT_NONE=y
227# CONFIG_PREEMPT_VOLUNTARY is not set 246# CONFIG_PREEMPT_VOLUNTARY is not set
228# CONFIG_PREEMPT is not set 247# CONFIG_PREEMPT is not set
248CONFIG_GUSA=y
249# CONFIG_GUSA_RB is not set
229 250
230# 251#
231# Boot options 252# Boot options
232# 253#
233CONFIG_ZERO_PAGE_OFFSET=0x00001000 254CONFIG_ZERO_PAGE_OFFSET=0x00001000
234CONFIG_BOOT_LINK_OFFSET=0x00210000 255CONFIG_BOOT_LINK_OFFSET=0x00210000
235# CONFIG_UBC_WAKEUP is not set
236CONFIG_CMDLINE_BOOL=y 256CONFIG_CMDLINE_BOOL=y
237CONFIG_CMDLINE="console=ttySC1,115200 root=1f01 mtdparts=phys_mapped_flash:64k(firm)ro,-(sys) netdev=34,0x300,eth0 " 257CONFIG_CMDLINE="console=ttySC1,115200 root=1f01 mtdparts=phys_mapped_flash:64k(firm)ro,-(sys) netdev=34,0x300,eth0 "
238 258
239# 259#
240# Bus options 260# Bus options
241# 261#
242# CONFIG_PCI is not set 262# CONFIG_ARCH_SUPPORTS_MSI is not set
243
244#
245# PCCARD (PCMCIA/CardBus) support
246#
247
248#
249# PCI Hotplug Support
250#
251 263
252# 264#
253# Executable file formats 265# Executable file formats
254# 266#
255CONFIG_BINFMT_ELF=y 267CONFIG_BINFMT_ELF=y
256# CONFIG_BINFMT_FLAT is not set 268# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
269# CONFIG_HAVE_AOUT is not set
257# CONFIG_BINFMT_MISC is not set 270# CONFIG_BINFMT_MISC is not set
258
259#
260# Power management options (EXPERIMENTAL)
261#
262# CONFIG_PM is not set
263
264#
265# Networking
266#
267CONFIG_NET=y 271CONFIG_NET=y
268 272
269# 273#
270# Networking options 274# Networking options
271# 275#
272# CONFIG_NETDEBUG is not set
273# CONFIG_PACKET is not set 276# CONFIG_PACKET is not set
274CONFIG_UNIX=y 277CONFIG_UNIX=y
275CONFIG_XFRM=y 278CONFIG_XFRM=y
276# CONFIG_XFRM_USER is not set 279# CONFIG_XFRM_USER is not set
277# CONFIG_XFRM_SUB_POLICY is not set 280# CONFIG_XFRM_SUB_POLICY is not set
281# CONFIG_XFRM_MIGRATE is not set
282# CONFIG_XFRM_STATISTICS is not set
278# CONFIG_NET_KEY is not set 283# CONFIG_NET_KEY is not set
279CONFIG_INET=y 284CONFIG_INET=y
280# CONFIG_IP_MULTICAST is not set 285# CONFIG_IP_MULTICAST is not set
@@ -295,33 +300,23 @@ CONFIG_IP_PNP=y
295# CONFIG_INET_TUNNEL is not set 300# CONFIG_INET_TUNNEL is not set
296CONFIG_INET_XFRM_MODE_TRANSPORT=y 301CONFIG_INET_XFRM_MODE_TRANSPORT=y
297CONFIG_INET_XFRM_MODE_TUNNEL=y 302CONFIG_INET_XFRM_MODE_TUNNEL=y
303CONFIG_INET_XFRM_MODE_BEET=y
304# CONFIG_INET_LRO is not set
298CONFIG_INET_DIAG=y 305CONFIG_INET_DIAG=y
299CONFIG_INET_TCP_DIAG=y 306CONFIG_INET_TCP_DIAG=y
300# CONFIG_TCP_CONG_ADVANCED is not set 307# CONFIG_TCP_CONG_ADVANCED is not set
301CONFIG_TCP_CONG_CUBIC=y 308CONFIG_TCP_CONG_CUBIC=y
302CONFIG_DEFAULT_TCP_CONG="cubic" 309CONFIG_DEFAULT_TCP_CONG="cubic"
310# CONFIG_TCP_MD5SIG is not set
303# CONFIG_IPV6 is not set 311# CONFIG_IPV6 is not set
304# CONFIG_INET6_XFRM_TUNNEL is not set
305# CONFIG_INET6_TUNNEL is not set
306# CONFIG_NETWORK_SECMARK is not set 312# CONFIG_NETWORK_SECMARK is not set
307# CONFIG_NETFILTER is not set 313# CONFIG_NETFILTER is not set
308
309#
310# DCCP Configuration (EXPERIMENTAL)
311#
312# CONFIG_IP_DCCP is not set 314# CONFIG_IP_DCCP is not set
313
314#
315# SCTP Configuration (EXPERIMENTAL)
316#
317# CONFIG_IP_SCTP is not set 315# CONFIG_IP_SCTP is not set
318
319#
320# TIPC Configuration (EXPERIMENTAL)
321#
322# CONFIG_TIPC is not set 316# CONFIG_TIPC is not set
323# CONFIG_ATM is not set 317# CONFIG_ATM is not set
324# CONFIG_BRIDGE is not set 318# CONFIG_BRIDGE is not set
319# CONFIG_NET_DSA is not set
325# CONFIG_VLAN_8021Q is not set 320# CONFIG_VLAN_8021Q is not set
326# CONFIG_DECNET is not set 321# CONFIG_DECNET is not set
327# CONFIG_LLC2 is not set 322# CONFIG_LLC2 is not set
@@ -331,10 +326,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
331# CONFIG_LAPB is not set 326# CONFIG_LAPB is not set
332# CONFIG_ECONET is not set 327# CONFIG_ECONET is not set
333# CONFIG_WAN_ROUTER is not set 328# CONFIG_WAN_ROUTER is not set
334
335#
336# QoS and/or fair queueing
337#
338# CONFIG_NET_SCHED is not set 329# CONFIG_NET_SCHED is not set
339 330
340# 331#
@@ -342,9 +333,19 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
342# 333#
343# CONFIG_NET_PKTGEN is not set 334# CONFIG_NET_PKTGEN is not set
344# CONFIG_HAMRADIO is not set 335# CONFIG_HAMRADIO is not set
336# CONFIG_CAN is not set
345# CONFIG_IRDA is not set 337# CONFIG_IRDA is not set
346# CONFIG_BT is not set 338# CONFIG_BT is not set
339# CONFIG_AF_RXRPC is not set
340# CONFIG_PHONET is not set
341CONFIG_WIRELESS=y
342# CONFIG_CFG80211 is not set
343# CONFIG_WIRELESS_OLD_REGULATORY is not set
344# CONFIG_WIRELESS_EXT is not set
345# CONFIG_MAC80211 is not set
347# CONFIG_IEEE80211 is not set 346# CONFIG_IEEE80211 is not set
347# CONFIG_RFKILL is not set
348# CONFIG_NET_9P is not set
348 349
349# 350#
350# Device Drivers 351# Device Drivers
@@ -356,32 +357,27 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
356CONFIG_STANDALONE=y 357CONFIG_STANDALONE=y
357CONFIG_PREVENT_FIRMWARE_BUILD=y 358CONFIG_PREVENT_FIRMWARE_BUILD=y
358# CONFIG_SYS_HYPERVISOR is not set 359# CONFIG_SYS_HYPERVISOR is not set
359
360#
361# Connector - unified userspace <-> kernelspace linker
362#
363# CONFIG_CONNECTOR is not set 360# CONFIG_CONNECTOR is not set
364
365#
366# Memory Technology Devices (MTD)
367#
368CONFIG_MTD=y 361CONFIG_MTD=y
369# CONFIG_MTD_DEBUG is not set 362# CONFIG_MTD_DEBUG is not set
370# CONFIG_MTD_CONCAT is not set 363# CONFIG_MTD_CONCAT is not set
371CONFIG_MTD_PARTITIONS=y 364CONFIG_MTD_PARTITIONS=y
372# CONFIG_MTD_REDBOOT_PARTS is not set 365# CONFIG_MTD_REDBOOT_PARTS is not set
373CONFIG_MTD_CMDLINE_PARTS=y 366CONFIG_MTD_CMDLINE_PARTS=y
367# CONFIG_MTD_AR7_PARTS is not set
374 368
375# 369#
376# User Modules And Translation Layers 370# User Modules And Translation Layers
377# 371#
378# CONFIG_MTD_CHAR is not set 372# CONFIG_MTD_CHAR is not set
373CONFIG_MTD_BLKDEVS=y
379CONFIG_MTD_BLOCK=y 374CONFIG_MTD_BLOCK=y
380# CONFIG_FTL is not set 375# CONFIG_FTL is not set
381# CONFIG_NFTL is not set 376# CONFIG_NFTL is not set
382# CONFIG_INFTL is not set 377# CONFIG_INFTL is not set
383# CONFIG_RFD_FTL is not set 378# CONFIG_RFD_FTL is not set
384# CONFIG_SSFDC is not set 379# CONFIG_SSFDC is not set
380# CONFIG_MTD_OOPS is not set
385 381
386# 382#
387# RAM/ROM/Flash chip drivers 383# RAM/ROM/Flash chip drivers
@@ -407,7 +403,6 @@ CONFIG_MTD_CFI_UTIL=y
407# CONFIG_MTD_RAM is not set 403# CONFIG_MTD_RAM is not set
408# CONFIG_MTD_ROM is not set 404# CONFIG_MTD_ROM is not set
409# CONFIG_MTD_ABSENT is not set 405# CONFIG_MTD_ABSENT is not set
410# CONFIG_MTD_OBSOLETE_CHIPS is not set
411 406
412# 407#
413# Mapping drivers for chip access 408# Mapping drivers for chip access
@@ -433,41 +428,27 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1
433# CONFIG_MTD_DOC2000 is not set 428# CONFIG_MTD_DOC2000 is not set
434# CONFIG_MTD_DOC2001 is not set 429# CONFIG_MTD_DOC2001 is not set
435# CONFIG_MTD_DOC2001PLUS is not set 430# CONFIG_MTD_DOC2001PLUS is not set
436
437#
438# NAND Flash Device Drivers
439#
440# CONFIG_MTD_NAND is not set 431# CONFIG_MTD_NAND is not set
441
442#
443# OneNAND Flash Device Drivers
444#
445# CONFIG_MTD_ONENAND is not set 432# CONFIG_MTD_ONENAND is not set
446 433
447# 434#
448# Parallel port support 435# UBI - Unsorted block images
449# 436#
437# CONFIG_MTD_UBI is not set
450# CONFIG_PARPORT is not set 438# CONFIG_PARPORT is not set
451 439CONFIG_BLK_DEV=y
452#
453# Plug and Play support
454#
455
456#
457# Block devices
458#
459# CONFIG_BLK_DEV_COW_COMMON is not set 440# CONFIG_BLK_DEV_COW_COMMON is not set
460CONFIG_BLK_DEV_LOOP=y 441CONFIG_BLK_DEV_LOOP=y
461# CONFIG_BLK_DEV_CRYPTOLOOP is not set 442# CONFIG_BLK_DEV_CRYPTOLOOP is not set
462# CONFIG_BLK_DEV_NBD is not set 443# CONFIG_BLK_DEV_NBD is not set
463# CONFIG_BLK_DEV_RAM is not set 444# CONFIG_BLK_DEV_RAM is not set
464# CONFIG_BLK_DEV_INITRD is not set
465# CONFIG_CDROM_PKTCDVD is not set 445# CONFIG_CDROM_PKTCDVD is not set
466# CONFIG_ATA_OVER_ETH is not set 446# CONFIG_ATA_OVER_ETH is not set
467 447# CONFIG_BLK_DEV_HD is not set
468# 448CONFIG_MISC_DEVICES=y
469# ATA/ATAPI/MFM/RLL support 449# CONFIG_EEPROM_93CX6 is not set
470# 450# CONFIG_ENCLOSURE_SERVICES is not set
451CONFIG_HAVE_IDE=y
471# CONFIG_IDE is not set 452# CONFIG_IDE is not set
472 453
473# 454#
@@ -475,89 +456,48 @@ CONFIG_BLK_DEV_LOOP=y
475# 456#
476# CONFIG_RAID_ATTRS is not set 457# CONFIG_RAID_ATTRS is not set
477# CONFIG_SCSI is not set 458# CONFIG_SCSI is not set
459# CONFIG_SCSI_DMA is not set
478# CONFIG_SCSI_NETLINK is not set 460# CONFIG_SCSI_NETLINK is not set
479
480#
481# Serial ATA (prod) and Parallel ATA (experimental) drivers
482#
483# CONFIG_ATA is not set 461# CONFIG_ATA is not set
484
485#
486# Multi-device support (RAID and LVM)
487#
488# CONFIG_MD is not set 462# CONFIG_MD is not set
489
490#
491# Fusion MPT device support
492#
493# CONFIG_FUSION is not set
494
495#
496# IEEE 1394 (FireWire) support
497#
498
499#
500# I2O device support
501#
502
503#
504# Network device support
505#
506CONFIG_NETDEVICES=y 463CONFIG_NETDEVICES=y
507# CONFIG_DUMMY is not set 464# CONFIG_DUMMY is not set
508# CONFIG_BONDING is not set 465# CONFIG_BONDING is not set
466# CONFIG_MACVLAN is not set
509# CONFIG_EQUALIZER is not set 467# CONFIG_EQUALIZER is not set
510# CONFIG_TUN is not set 468# CONFIG_TUN is not set
511 469# CONFIG_VETH is not set
512#
513# PHY device support
514#
515# CONFIG_PHYLIB is not set 470# CONFIG_PHYLIB is not set
516
517#
518# Ethernet (10 or 100Mbit)
519#
520CONFIG_NET_ETHERNET=y 471CONFIG_NET_ETHERNET=y
521# CONFIG_MII is not set 472# CONFIG_MII is not set
473# CONFIG_AX88796 is not set
522# CONFIG_STNIC is not set 474# CONFIG_STNIC is not set
523# CONFIG_SMC91X is not set 475# CONFIG_SMC91X is not set
524 476# CONFIG_SMC911X is not set
525# 477# CONFIG_IBM_NEW_EMAC_ZMII is not set
526# Ethernet (1000 Mbit) 478# CONFIG_IBM_NEW_EMAC_RGMII is not set
527# 479# CONFIG_IBM_NEW_EMAC_TAH is not set
528 480# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
529# 481# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
530# Ethernet (10000 Mbit) 482# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
531# 483# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
532 484# CONFIG_B44 is not set
533# 485CONFIG_NETDEV_1000=y
534# Token Ring devices 486CONFIG_NETDEV_10000=y
535# 487
536 488#
537# 489# Wireless LAN
538# Wireless LAN (non-hamradio) 490#
539# 491# CONFIG_WLAN_PRE80211 is not set
540# CONFIG_NET_RADIO is not set 492# CONFIG_WLAN_80211 is not set
541 493# CONFIG_IWLWIFI_LEDS is not set
542#
543# Wan interfaces
544#
545# CONFIG_WAN is not set 494# CONFIG_WAN is not set
546# CONFIG_PPP is not set 495# CONFIG_PPP is not set
547# CONFIG_SLIP is not set 496# CONFIG_SLIP is not set
548# CONFIG_SHAPER is not set
549# CONFIG_NETCONSOLE is not set 497# CONFIG_NETCONSOLE is not set
550# CONFIG_NETPOLL is not set 498# CONFIG_NETPOLL is not set
551# CONFIG_NET_POLL_CONTROLLER is not set 499# CONFIG_NET_POLL_CONTROLLER is not set
552
553#
554# ISDN subsystem
555#
556# CONFIG_ISDN is not set 500# CONFIG_ISDN is not set
557
558#
559# Telephony Support
560#
561# CONFIG_PHONE is not set 501# CONFIG_PHONE is not set
562 502
563# 503#
@@ -575,6 +515,7 @@ CONFIG_NET_ETHERNET=y
575# Character devices 515# Character devices
576# 516#
577# CONFIG_VT is not set 517# CONFIG_VT is not set
518CONFIG_DEVKMEM=y
578# CONFIG_SERIAL_NONSTANDARD is not set 519# CONFIG_SERIAL_NONSTANDARD is not set
579 520
580# 521#
@@ -593,153 +534,103 @@ CONFIG_SERIAL_CORE_CONSOLE=y
593CONFIG_UNIX98_PTYS=y 534CONFIG_UNIX98_PTYS=y
594CONFIG_LEGACY_PTYS=y 535CONFIG_LEGACY_PTYS=y
595CONFIG_LEGACY_PTY_COUNT=256 536CONFIG_LEGACY_PTY_COUNT=256
596
597#
598# IPMI
599#
600# CONFIG_IPMI_HANDLER is not set 537# CONFIG_IPMI_HANDLER is not set
601
602#
603# Watchdog Cards
604#
605# CONFIG_WATCHDOG is not set
606CONFIG_HW_RANDOM=y 538CONFIG_HW_RANDOM=y
607# CONFIG_GEN_RTC is not set
608# CONFIG_DTLK is not set
609# CONFIG_R3964 is not set 539# CONFIG_R3964 is not set
610
611#
612# Ftape, the floppy tape device driver
613#
614# CONFIG_RAW_DRIVER is not set 540# CONFIG_RAW_DRIVER is not set
615
616#
617# TPM devices
618#
619# CONFIG_TCG_TPM is not set 541# CONFIG_TCG_TPM is not set
620# CONFIG_TELCLOCK is not set
621
622#
623# I2C support
624#
625# CONFIG_I2C is not set 542# CONFIG_I2C is not set
626
627#
628# SPI support
629#
630# CONFIG_SPI is not set 543# CONFIG_SPI is not set
631# CONFIG_SPI_MASTER is not set 544# CONFIG_W1 is not set
545# CONFIG_POWER_SUPPLY is not set
546# CONFIG_HWMON is not set
547# CONFIG_THERMAL is not set
548# CONFIG_THERMAL_HWMON is not set
549# CONFIG_WATCHDOG is not set
632 550
633# 551#
634# Dallas's 1-wire bus 552# Sonics Silicon Backplane
635# 553#
554CONFIG_SSB_POSSIBLE=y
555# CONFIG_SSB is not set
636 556
637# 557#
638# Hardware Monitoring support 558# Multifunction device drivers
639# 559#
640# CONFIG_HWMON is not set 560# CONFIG_MFD_CORE is not set
641# CONFIG_HWMON_VID is not set 561# CONFIG_MFD_SM501 is not set
562# CONFIG_HTC_PASIC3 is not set
563# CONFIG_MFD_TMIO is not set
564# CONFIG_MFD_WM8400 is not set
642 565
643# 566#
644# Misc devices 567# Multimedia devices
645# 568#
646 569
647# 570#
648# Multimedia devices 571# Multimedia core support
649# 572#
650# CONFIG_VIDEO_DEV is not set 573# CONFIG_VIDEO_DEV is not set
651CONFIG_VIDEO_V4L2=y 574# CONFIG_DVB_CORE is not set
575# CONFIG_VIDEO_MEDIA is not set
652 576
653# 577#
654# Digital Video Broadcasting Devices 578# Multimedia drivers
655# 579#
656# CONFIG_DVB is not set 580# CONFIG_DAB is not set
657 581
658# 582#
659# Graphics support 583# Graphics support
660# 584#
661CONFIG_FIRMWARE_EDID=y 585# CONFIG_VGASTATE is not set
586# CONFIG_VIDEO_OUTPUT_CONTROL is not set
662# CONFIG_FB is not set 587# CONFIG_FB is not set
588# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
663 589
664# 590#
665# Sound 591# Display device support
666# 592#
593# CONFIG_DISPLAY_SUPPORT is not set
667# CONFIG_SOUND is not set 594# CONFIG_SOUND is not set
668 595CONFIG_USB_SUPPORT=y
669# 596CONFIG_USB_ARCH_HAS_HCD=y
670# USB support
671#
672# CONFIG_USB_ARCH_HAS_HCD is not set
673# CONFIG_USB_ARCH_HAS_OHCI is not set 597# CONFIG_USB_ARCH_HAS_OHCI is not set
674# CONFIG_USB_ARCH_HAS_EHCI is not set 598# CONFIG_USB_ARCH_HAS_EHCI is not set
599# CONFIG_USB is not set
600# CONFIG_USB_OTG_WHITELIST is not set
601# CONFIG_USB_OTG_BLACKLIST_HUB is not set
675 602
676# 603#
677# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 604# Enable Host or Gadget support to see Inventra options
678# 605#
679 606
680# 607#
681# USB Gadget Support 608# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
682# 609#
683# CONFIG_USB_GADGET is not set 610# CONFIG_USB_GADGET is not set
684
685#
686# MMC/SD Card support
687#
688# CONFIG_MMC is not set 611# CONFIG_MMC is not set
689 612# CONFIG_MEMSTICK is not set
690#
691# LED devices
692#
693# CONFIG_NEW_LEDS is not set 613# CONFIG_NEW_LEDS is not set
694 614# CONFIG_ACCESSIBILITY is not set
695#
696# LED drivers
697#
698
699#
700# LED Triggers
701#
702
703#
704# InfiniBand support
705#
706
707#
708# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
709#
710
711#
712# Real Time Clock
713#
714# CONFIG_RTC_CLASS is not set 615# CONFIG_RTC_CLASS is not set
715 616# CONFIG_DMADEVICES is not set
716# 617# CONFIG_UIO is not set
717# DMA Engine support 618# CONFIG_STAGING is not set
718#
719# CONFIG_DMA_ENGINE is not set
720
721#
722# DMA Clients
723#
724
725#
726# DMA Devices
727#
728 619
729# 620#
730# File systems 621# File systems
731# 622#
732# CONFIG_EXT2_FS is not set 623# CONFIG_EXT2_FS is not set
733# CONFIG_EXT3_FS is not set 624# CONFIG_EXT3_FS is not set
625# CONFIG_EXT4_FS is not set
734# CONFIG_REISERFS_FS is not set 626# CONFIG_REISERFS_FS is not set
735# CONFIG_JFS_FS is not set 627# CONFIG_JFS_FS is not set
736# CONFIG_FS_POSIX_ACL is not set 628# CONFIG_FS_POSIX_ACL is not set
629CONFIG_FILE_LOCKING=y
737# CONFIG_XFS_FS is not set 630# CONFIG_XFS_FS is not set
738# CONFIG_MINIX_FS is not set 631# CONFIG_DNOTIFY is not set
739# CONFIG_ROMFS_FS is not set
740# CONFIG_INOTIFY is not set 632# CONFIG_INOTIFY is not set
741# CONFIG_QUOTA is not set 633# CONFIG_QUOTA is not set
742# CONFIG_DNOTIFY is not set
743# CONFIG_AUTOFS_FS is not set 634# CONFIG_AUTOFS_FS is not set
744# CONFIG_AUTOFS4_FS is not set 635# CONFIG_AUTOFS4_FS is not set
745# CONFIG_FUSE_FS is not set 636# CONFIG_FUSE_FS is not set
@@ -763,12 +654,12 @@ CONFIG_FIRMWARE_EDID=y
763CONFIG_PROC_FS=y 654CONFIG_PROC_FS=y
764# CONFIG_PROC_KCORE is not set 655# CONFIG_PROC_KCORE is not set
765CONFIG_PROC_SYSCTL=y 656CONFIG_PROC_SYSCTL=y
657CONFIG_PROC_PAGE_MONITOR=y
766# CONFIG_SYSFS is not set 658# CONFIG_SYSFS is not set
767CONFIG_TMPFS=y 659CONFIG_TMPFS=y
768# CONFIG_TMPFS_POSIX_ACL is not set 660# CONFIG_TMPFS_POSIX_ACL is not set
769# CONFIG_HUGETLBFS is not set 661# CONFIG_HUGETLBFS is not set
770# CONFIG_HUGETLB_PAGE is not set 662# CONFIG_HUGETLB_PAGE is not set
771CONFIG_RAMFS=y
772 663
773# 664#
774# Miscellaneous filesystems 665# Miscellaneous filesystems
@@ -780,29 +671,28 @@ CONFIG_RAMFS=y
780# CONFIG_BEFS_FS is not set 671# CONFIG_BEFS_FS is not set
781# CONFIG_BFS_FS is not set 672# CONFIG_BFS_FS is not set
782# CONFIG_EFS_FS is not set 673# CONFIG_EFS_FS is not set
783# CONFIG_JFFS_FS is not set
784# CONFIG_JFFS2_FS is not set 674# CONFIG_JFFS2_FS is not set
785CONFIG_CRAMFS=y 675CONFIG_CRAMFS=y
786# CONFIG_VXFS_FS is not set 676# CONFIG_VXFS_FS is not set
677# CONFIG_MINIX_FS is not set
678# CONFIG_OMFS_FS is not set
787# CONFIG_HPFS_FS is not set 679# CONFIG_HPFS_FS is not set
788# CONFIG_QNX4FS_FS is not set 680# CONFIG_QNX4FS_FS is not set
681# CONFIG_ROMFS_FS is not set
789# CONFIG_SYSV_FS is not set 682# CONFIG_SYSV_FS is not set
790# CONFIG_UFS_FS is not set 683# CONFIG_UFS_FS is not set
791 684CONFIG_NETWORK_FILESYSTEMS=y
792#
793# Network File Systems
794#
795CONFIG_NFS_FS=y 685CONFIG_NFS_FS=y
796CONFIG_NFS_V3=y 686CONFIG_NFS_V3=y
797# CONFIG_NFS_V3_ACL is not set 687# CONFIG_NFS_V3_ACL is not set
798# CONFIG_NFS_V4 is not set 688# CONFIG_NFS_V4 is not set
799# CONFIG_NFS_DIRECTIO is not set
800# CONFIG_NFSD is not set
801CONFIG_ROOT_NFS=y 689CONFIG_ROOT_NFS=y
690# CONFIG_NFSD is not set
802CONFIG_LOCKD=y 691CONFIG_LOCKD=y
803CONFIG_LOCKD_V4=y 692CONFIG_LOCKD_V4=y
804CONFIG_NFS_COMMON=y 693CONFIG_NFS_COMMON=y
805CONFIG_SUNRPC=y 694CONFIG_SUNRPC=y
695# CONFIG_SUNRPC_REGISTER_V4 is not set
806# CONFIG_RPCSEC_GSS_KRB5 is not set 696# CONFIG_RPCSEC_GSS_KRB5 is not set
807# CONFIG_RPCSEC_GSS_SPKM3 is not set 697# CONFIG_RPCSEC_GSS_SPKM3 is not set
808# CONFIG_SMB_FS is not set 698# CONFIG_SMB_FS is not set
@@ -810,53 +700,140 @@ CONFIG_SUNRPC=y
810# CONFIG_NCP_FS is not set 700# CONFIG_NCP_FS is not set
811# CONFIG_CODA_FS is not set 701# CONFIG_CODA_FS is not set
812# CONFIG_AFS_FS is not set 702# CONFIG_AFS_FS is not set
813# CONFIG_9P_FS is not set
814 703
815# 704#
816# Partition Types 705# Partition Types
817# 706#
818# CONFIG_PARTITION_ADVANCED is not set 707# CONFIG_PARTITION_ADVANCED is not set
819CONFIG_MSDOS_PARTITION=y 708CONFIG_MSDOS_PARTITION=y
820
821#
822# Native Language Support
823#
824# CONFIG_NLS is not set 709# CONFIG_NLS is not set
825 710
826# 711#
827# Profiling support
828#
829# CONFIG_PROFILING is not set
830
831#
832# Kernel hacking 712# Kernel hacking
833# 713#
714CONFIG_TRACE_IRQFLAGS_SUPPORT=y
834# CONFIG_PRINTK_TIME is not set 715# CONFIG_PRINTK_TIME is not set
716CONFIG_ENABLE_WARN_DEPRECATED=y
835CONFIG_ENABLE_MUST_CHECK=y 717CONFIG_ENABLE_MUST_CHECK=y
718CONFIG_FRAME_WARN=1024
836# CONFIG_MAGIC_SYSRQ is not set 719# CONFIG_MAGIC_SYSRQ is not set
837# CONFIG_UNUSED_SYMBOLS is not set 720# CONFIG_UNUSED_SYMBOLS is not set
721# CONFIG_HEADERS_CHECK is not set
838# CONFIG_DEBUG_KERNEL is not set 722# CONFIG_DEBUG_KERNEL is not set
839CONFIG_LOG_BUF_SHIFT=14 723# CONFIG_DEBUG_MEMORY_INIT is not set
840# CONFIG_UNWIND_INFO is not set 724# CONFIG_RCU_CPU_STALL_DETECTOR is not set
725# CONFIG_LATENCYTOP is not set
726CONFIG_NOP_TRACER=y
727CONFIG_HAVE_FTRACE=y
728# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
729# CONFIG_SAMPLES is not set
841CONFIG_SH_STANDARD_BIOS=y 730CONFIG_SH_STANDARD_BIOS=y
731# CONFIG_EARLY_SCIF_CONSOLE is not set
842CONFIG_EARLY_PRINTK=y 732CONFIG_EARLY_PRINTK=y
843# CONFIG_KGDB is not set 733# CONFIG_SH_KGDB is not set
844 734
845# 735#
846# Security options 736# Security options
847# 737#
848# CONFIG_KEYS is not set 738# CONFIG_KEYS is not set
739# CONFIG_SECURITYFS is not set
740# CONFIG_SECURITY_FILE_CAPABILITIES is not set
741CONFIG_CRYPTO=y
742
743#
744# Crypto core or helper
745#
746# CONFIG_CRYPTO_FIPS is not set
747# CONFIG_CRYPTO_MANAGER is not set
748# CONFIG_CRYPTO_GF128MUL is not set
749# CONFIG_CRYPTO_NULL is not set
750# CONFIG_CRYPTO_CRYPTD is not set
751# CONFIG_CRYPTO_AUTHENC is not set
752
753#
754# Authenticated Encryption with Associated Data
755#
756# CONFIG_CRYPTO_CCM is not set
757# CONFIG_CRYPTO_GCM is not set
758# CONFIG_CRYPTO_SEQIV is not set
759
760#
761# Block modes
762#
763# CONFIG_CRYPTO_CBC is not set
764# CONFIG_CRYPTO_CTR is not set
765# CONFIG_CRYPTO_CTS is not set
766# CONFIG_CRYPTO_ECB is not set
767# CONFIG_CRYPTO_LRW is not set
768# CONFIG_CRYPTO_PCBC is not set
769# CONFIG_CRYPTO_XTS is not set
770
771#
772# Hash modes
773#
774# CONFIG_CRYPTO_HMAC is not set
775# CONFIG_CRYPTO_XCBC is not set
776
777#
778# Digest
779#
780# CONFIG_CRYPTO_CRC32C is not set
781# CONFIG_CRYPTO_MD4 is not set
782# CONFIG_CRYPTO_MD5 is not set
783# CONFIG_CRYPTO_MICHAEL_MIC is not set
784# CONFIG_CRYPTO_RMD128 is not set
785# CONFIG_CRYPTO_RMD160 is not set
786# CONFIG_CRYPTO_RMD256 is not set
787# CONFIG_CRYPTO_RMD320 is not set
788# CONFIG_CRYPTO_SHA1 is not set
789# CONFIG_CRYPTO_SHA256 is not set
790# CONFIG_CRYPTO_SHA512 is not set
791# CONFIG_CRYPTO_TGR192 is not set
792# CONFIG_CRYPTO_WP512 is not set
793
794#
795# Ciphers
796#
797# CONFIG_CRYPTO_AES is not set
798# CONFIG_CRYPTO_ANUBIS is not set
799# CONFIG_CRYPTO_ARC4 is not set
800# CONFIG_CRYPTO_BLOWFISH is not set
801# CONFIG_CRYPTO_CAMELLIA is not set
802# CONFIG_CRYPTO_CAST5 is not set
803# CONFIG_CRYPTO_CAST6 is not set
804# CONFIG_CRYPTO_DES is not set
805# CONFIG_CRYPTO_FCRYPT is not set
806# CONFIG_CRYPTO_KHAZAD is not set
807# CONFIG_CRYPTO_SALSA20 is not set
808# CONFIG_CRYPTO_SEED is not set
809# CONFIG_CRYPTO_SERPENT is not set
810# CONFIG_CRYPTO_TEA is not set
811# CONFIG_CRYPTO_TWOFISH is not set
812
813#
814# Compression
815#
816# CONFIG_CRYPTO_DEFLATE is not set
817# CONFIG_CRYPTO_LZO is not set
849 818
850# 819#
851# Cryptographic options 820# Random Number Generation
852# 821#
853# CONFIG_CRYPTO is not set 822# CONFIG_CRYPTO_ANSI_CPRNG is not set
823CONFIG_CRYPTO_HW=y
854 824
855# 825#
856# Library routines 826# Library routines
857# 827#
828CONFIG_BITREVERSE=y
858# CONFIG_CRC_CCITT is not set 829# CONFIG_CRC_CCITT is not set
859# CONFIG_CRC16 is not set 830# CONFIG_CRC16 is not set
831# CONFIG_CRC_T10DIF is not set
832# CONFIG_CRC_ITU_T is not set
860CONFIG_CRC32=y 833CONFIG_CRC32=y
834# CONFIG_CRC7 is not set
861# CONFIG_LIBCRC32C is not set 835# CONFIG_LIBCRC32C is not set
862CONFIG_ZLIB_INFLATE=y 836CONFIG_ZLIB_INFLATE=y
837CONFIG_HAS_IOMEM=y
838CONFIG_HAS_IOPORT=y
839CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig
index a794c082709b..ae5cbe237fff 100644
--- a/arch/sh/configs/shx3_defconfig
+++ b/arch/sh/configs/shx3_defconfig
@@ -1,18 +1,23 @@
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-rc7 3# Linux kernel version: 2.6.27
4# Fri Sep 21 19:07:30 2007 4# Tue Oct 21 12:16:25 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
12CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
14CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
20CONFIG_GENERIC_LOCKBREAK=y
16CONFIG_SYS_SUPPORTS_SMP=y 21CONFIG_SYS_SUPPORTS_SMP=y
17CONFIG_SYS_SUPPORTS_NUMA=y 22CONFIG_SYS_SUPPORTS_NUMA=y
18CONFIG_STACKTRACE_SUPPORT=y 23CONFIG_STACKTRACE_SUPPORT=y
@@ -26,7 +31,6 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26# General setup 31# General setup
27# 32#
28CONFIG_EXPERIMENTAL=y 33CONFIG_EXPERIMENTAL=y
29CONFIG_BROKEN_ON_SMP=y
30CONFIG_LOCK_KERNEL=y 34CONFIG_LOCK_KERNEL=y
31CONFIG_INIT_ENV_ARG_LIMIT=32 35CONFIG_INIT_ENV_ARG_LIMIT=32
32CONFIG_LOCALVERSION="" 36CONFIG_LOCALVERSION=""
@@ -34,20 +38,41 @@ CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SWAP=y 38CONFIG_SWAP=y
35CONFIG_SYSVIPC=y 39CONFIG_SYSVIPC=y
36CONFIG_SYSVIPC_SYSCTL=y 40CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_POSIX_MQUEUE is not set 41CONFIG_POSIX_MQUEUE=y
38CONFIG_BSD_PROCESS_ACCT=y 42CONFIG_BSD_PROCESS_ACCT=y
39# CONFIG_BSD_PROCESS_ACCT_V3 is not set 43# CONFIG_BSD_PROCESS_ACCT_V3 is not set
40# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
41# CONFIG_USER_NS is not set 45CONFIG_AUDIT=y
42# CONFIG_AUDIT is not set 46CONFIG_AUDITSYSCALL=y
47CONFIG_AUDIT_TREE=y
43CONFIG_IKCONFIG=y 48CONFIG_IKCONFIG=y
44CONFIG_IKCONFIG_PROC=y 49CONFIG_IKCONFIG_PROC=y
45CONFIG_LOG_BUF_SHIFT=14 50CONFIG_LOG_BUF_SHIFT=14
46# CONFIG_SYSFS_DEPRECATED is not set 51CONFIG_CGROUPS=y
47# CONFIG_RELAY is not set 52# CONFIG_CGROUP_DEBUG is not set
48CONFIG_BLK_DEV_INITRD=y 53CONFIG_CGROUP_NS=y
49CONFIG_INITRAMFS_SOURCE="" 54CONFIG_CGROUP_FREEZER=y
50CONFIG_CC_OPTIMIZE_FOR_SIZE=y 55CONFIG_CGROUP_DEVICE=y
56# CONFIG_CPUSETS is not set
57CONFIG_GROUP_SCHED=y
58CONFIG_FAIR_GROUP_SCHED=y
59CONFIG_RT_GROUP_SCHED=y
60CONFIG_USER_SCHED=y
61# CONFIG_CGROUP_SCHED is not set
62CONFIG_CGROUP_CPUACCT=y
63CONFIG_RESOURCE_COUNTERS=y
64CONFIG_MM_OWNER=y
65CONFIG_CGROUP_MEM_RES_CTLR=y
66CONFIG_SYSFS_DEPRECATED=y
67CONFIG_SYSFS_DEPRECATED_V2=y
68CONFIG_RELAY=y
69CONFIG_NAMESPACES=y
70CONFIG_UTS_NS=y
71CONFIG_IPC_NS=y
72CONFIG_USER_NS=y
73CONFIG_PID_NS=y
74# CONFIG_BLK_DEV_INITRD is not set
75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
51CONFIG_SYSCTL=y 76CONFIG_SYSCTL=y
52CONFIG_EMBEDDED=y 77CONFIG_EMBEDDED=y
53CONFIG_UID16=y 78CONFIG_UID16=y
@@ -59,44 +84,66 @@ CONFIG_HOTPLUG=y
59CONFIG_PRINTK=y 84CONFIG_PRINTK=y
60CONFIG_BUG=y 85CONFIG_BUG=y
61CONFIG_ELF_CORE=y 86CONFIG_ELF_CORE=y
87CONFIG_COMPAT_BRK=y
62CONFIG_BASE_FULL=y 88CONFIG_BASE_FULL=y
63CONFIG_FUTEX=y 89CONFIG_FUTEX=y
64CONFIG_ANON_INODES=y 90CONFIG_ANON_INODES=y
65CONFIG_EPOLL=y 91CONFIG_EPOLL=y
66CONFIG_SIGNALFD=y 92CONFIG_SIGNALFD=y
93CONFIG_TIMERFD=y
67CONFIG_EVENTFD=y 94CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 95CONFIG_SHMEM=y
96CONFIG_AIO=y
69CONFIG_VM_EVENT_COUNTERS=y 97CONFIG_VM_EVENT_COUNTERS=y
98CONFIG_PCI_QUIRKS=y
70# CONFIG_SLAB is not set 99# CONFIG_SLAB is not set
71# CONFIG_SLUB is not set 100# CONFIG_SLUB is not set
72CONFIG_SLOB=y 101CONFIG_SLOB=y
102CONFIG_PROFILING=y
103# CONFIG_MARKERS is not set
104CONFIG_OPROFILE=y
105CONFIG_HAVE_OPROFILE=y
106CONFIG_KPROBES=y
107CONFIG_KRETPROBES=y
108CONFIG_HAVE_IOREMAP_PROT=y
109CONFIG_HAVE_KPROBES=y
110CONFIG_HAVE_KRETPROBES=y
111CONFIG_HAVE_ARCH_TRACEHOOK=y
112CONFIG_USE_GENERIC_SMP_HELPERS=y
113CONFIG_HAVE_CLK=y
114CONFIG_HAVE_GENERIC_DMA_COHERENT=y
73CONFIG_RT_MUTEXES=y 115CONFIG_RT_MUTEXES=y
74# CONFIG_TINY_SHMEM is not set 116# CONFIG_TINY_SHMEM is not set
75CONFIG_BASE_SMALL=0 117CONFIG_BASE_SMALL=0
76CONFIG_MODULES=y 118CONFIG_MODULES=y
119# CONFIG_MODULE_FORCE_LOAD is not set
77CONFIG_MODULE_UNLOAD=y 120CONFIG_MODULE_UNLOAD=y
78# CONFIG_MODULE_FORCE_UNLOAD is not set 121# CONFIG_MODULE_FORCE_UNLOAD is not set
79# CONFIG_MODVERSIONS is not set 122# CONFIG_MODVERSIONS is not set
80# CONFIG_MODULE_SRCVERSION_ALL is not set 123# CONFIG_MODULE_SRCVERSION_ALL is not set
81CONFIG_KMOD=y 124CONFIG_KMOD=y
125CONFIG_STOP_MACHINE=y
82CONFIG_BLOCK=y 126CONFIG_BLOCK=y
83# CONFIG_LBD is not set 127# CONFIG_LBD is not set
84# CONFIG_BLK_DEV_IO_TRACE is not set 128# CONFIG_BLK_DEV_IO_TRACE is not set
85# CONFIG_LSF is not set 129# CONFIG_LSF is not set
86# CONFIG_BLK_DEV_BSG is not set 130# CONFIG_BLK_DEV_BSG is not set
131# CONFIG_BLK_DEV_INTEGRITY is not set
87 132
88# 133#
89# IO Schedulers 134# IO Schedulers
90# 135#
91CONFIG_IOSCHED_NOOP=y 136CONFIG_IOSCHED_NOOP=y
92# CONFIG_IOSCHED_AS is not set 137CONFIG_IOSCHED_AS=y
93# CONFIG_IOSCHED_DEADLINE is not set 138CONFIG_IOSCHED_DEADLINE=y
94# CONFIG_IOSCHED_CFQ is not set 139CONFIG_IOSCHED_CFQ=y
95# CONFIG_DEFAULT_AS is not set 140CONFIG_DEFAULT_AS=y
96# CONFIG_DEFAULT_DEADLINE is not set 141# CONFIG_DEFAULT_DEADLINE is not set
97# CONFIG_DEFAULT_CFQ is not set 142# CONFIG_DEFAULT_CFQ is not set
98CONFIG_DEFAULT_NOOP=y 143# CONFIG_DEFAULT_NOOP is not set
99CONFIG_DEFAULT_IOSCHED="noop" 144CONFIG_DEFAULT_IOSCHED="anticipatory"
145# CONFIG_CLASSIC_RCU is not set
146CONFIG_FREEZER=y
100 147
101# 148#
102# System type 149# System type
@@ -105,7 +152,10 @@ CONFIG_CPU_SH4=y
105CONFIG_CPU_SH4A=y 152CONFIG_CPU_SH4A=y
106CONFIG_CPU_SHX3=y 153CONFIG_CPU_SHX3=y
107# CONFIG_CPU_SUBTYPE_SH7619 is not set 154# CONFIG_CPU_SUBTYPE_SH7619 is not set
155# CONFIG_CPU_SUBTYPE_SH7203 is not set
108# CONFIG_CPU_SUBTYPE_SH7206 is not set 156# CONFIG_CPU_SUBTYPE_SH7206 is not set
157# CONFIG_CPU_SUBTYPE_SH7263 is not set
158# CONFIG_CPU_SUBTYPE_MXG is not set
109# CONFIG_CPU_SUBTYPE_SH7705 is not set 159# CONFIG_CPU_SUBTYPE_SH7705 is not set
110# CONFIG_CPU_SUBTYPE_SH7706 is not set 160# CONFIG_CPU_SUBTYPE_SH7706 is not set
111# CONFIG_CPU_SUBTYPE_SH7707 is not set 161# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -114,6 +164,7 @@ CONFIG_CPU_SHX3=y
114# CONFIG_CPU_SUBTYPE_SH7710 is not set 164# CONFIG_CPU_SUBTYPE_SH7710 is not set
115# CONFIG_CPU_SUBTYPE_SH7712 is not set 165# CONFIG_CPU_SUBTYPE_SH7712 is not set
116# CONFIG_CPU_SUBTYPE_SH7720 is not set 166# CONFIG_CPU_SUBTYPE_SH7720 is not set
167# CONFIG_CPU_SUBTYPE_SH7721 is not set
117# CONFIG_CPU_SUBTYPE_SH7750 is not set 168# CONFIG_CPU_SUBTYPE_SH7750 is not set
118# CONFIG_CPU_SUBTYPE_SH7091 is not set 169# CONFIG_CPU_SUBTYPE_SH7091 is not set
119# CONFIG_CPU_SUBTYPE_SH7750R is not set 170# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -122,14 +173,17 @@ CONFIG_CPU_SHX3=y
122# CONFIG_CPU_SUBTYPE_SH7751R is not set 173# CONFIG_CPU_SUBTYPE_SH7751R is not set
123# CONFIG_CPU_SUBTYPE_SH7760 is not set 174# CONFIG_CPU_SUBTYPE_SH7760 is not set
124# CONFIG_CPU_SUBTYPE_SH4_202 is not set 175# CONFIG_CPU_SUBTYPE_SH4_202 is not set
125# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 176# CONFIG_CPU_SUBTYPE_SH7723 is not set
126# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 177# CONFIG_CPU_SUBTYPE_SH7763 is not set
127# CONFIG_CPU_SUBTYPE_SH7770 is not set 178# CONFIG_CPU_SUBTYPE_SH7770 is not set
128# CONFIG_CPU_SUBTYPE_SH7780 is not set 179# CONFIG_CPU_SUBTYPE_SH7780 is not set
129# CONFIG_CPU_SUBTYPE_SH7785 is not set 180# CONFIG_CPU_SUBTYPE_SH7785 is not set
130CONFIG_CPU_SUBTYPE_SHX3=y 181CONFIG_CPU_SUBTYPE_SHX3=y
131# CONFIG_CPU_SUBTYPE_SH7343 is not set 182# CONFIG_CPU_SUBTYPE_SH7343 is not set
132# CONFIG_CPU_SUBTYPE_SH7722 is not set 183# CONFIG_CPU_SUBTYPE_SH7722 is not set
184# CONFIG_CPU_SUBTYPE_SH7366 is not set
185# CONFIG_CPU_SUBTYPE_SH5_101 is not set
186# CONFIG_CPU_SUBTYPE_SH5_103 is not set
133 187
134# 188#
135# Memory management options 189# Memory management options
@@ -139,45 +193,56 @@ CONFIG_MMU=y
139CONFIG_PAGE_OFFSET=0x80000000 193CONFIG_PAGE_OFFSET=0x80000000
140CONFIG_MEMORY_START=0x0c000000 194CONFIG_MEMORY_START=0x0c000000
141CONFIG_MEMORY_SIZE=0x04000000 195CONFIG_MEMORY_SIZE=0x04000000
196CONFIG_29BIT=y
197# CONFIG_X2TLB is not set
142CONFIG_VSYSCALL=y 198CONFIG_VSYSCALL=y
143# CONFIG_NUMA is not set 199CONFIG_NUMA=y
144CONFIG_ARCH_FLATMEM_ENABLE=y 200CONFIG_NODES_SHIFT=3
145CONFIG_ARCH_SPARSEMEM_ENABLE=y 201CONFIG_ARCH_SPARSEMEM_ENABLE=y
146CONFIG_ARCH_SPARSEMEM_DEFAULT=y 202CONFIG_ARCH_SPARSEMEM_DEFAULT=y
147CONFIG_MAX_ACTIVE_REGIONS=6 203CONFIG_MAX_ACTIVE_REGIONS=6
148CONFIG_ARCH_POPULATES_NODE_MAP=y 204CONFIG_ARCH_POPULATES_NODE_MAP=y
149CONFIG_ARCH_SELECT_MEMORY_MODEL=y 205CONFIG_ARCH_SELECT_MEMORY_MODEL=y
150CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 206CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
207CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
151CONFIG_ARCH_MEMORY_PROBE=y 208CONFIG_ARCH_MEMORY_PROBE=y
152CONFIG_PAGE_SIZE_4KB=y 209# CONFIG_PAGE_SIZE_4KB is not set
153# CONFIG_PAGE_SIZE_8KB is not set 210# CONFIG_PAGE_SIZE_8KB is not set
154# CONFIG_PAGE_SIZE_64KB is not set 211# CONFIG_PAGE_SIZE_16KB is not set
155CONFIG_HUGETLB_PAGE_SIZE_64K=y 212CONFIG_PAGE_SIZE_64KB=y
213CONFIG_ENTRY_OFFSET=0x00010000
214# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
156# CONFIG_HUGETLB_PAGE_SIZE_256K is not set 215# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
157# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set 216CONFIG_HUGETLB_PAGE_SIZE_1MB=y
158# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set 217# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
159# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set 218# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
219# CONFIG_HUGETLB_PAGE_SIZE_512MB is not set
160CONFIG_SELECT_MEMORY_MODEL=y 220CONFIG_SELECT_MEMORY_MODEL=y
161# CONFIG_FLATMEM_MANUAL is not set 221# CONFIG_FLATMEM_MANUAL is not set
162# CONFIG_DISCONTIGMEM_MANUAL is not set 222# CONFIG_DISCONTIGMEM_MANUAL is not set
163CONFIG_SPARSEMEM_MANUAL=y 223CONFIG_SPARSEMEM_MANUAL=y
164CONFIG_SPARSEMEM=y 224CONFIG_SPARSEMEM=y
225CONFIG_NEED_MULTIPLE_NODES=y
165CONFIG_HAVE_MEMORY_PRESENT=y 226CONFIG_HAVE_MEMORY_PRESENT=y
166CONFIG_SPARSEMEM_STATIC=y 227CONFIG_SPARSEMEM_STATIC=y
167CONFIG_MEMORY_HOTPLUG=y 228CONFIG_MEMORY_HOTPLUG=y
168CONFIG_MEMORY_HOTPLUG_SPARSE=y 229CONFIG_MEMORY_HOTPLUG_SPARSE=y
230CONFIG_MEMORY_HOTREMOVE=y
169CONFIG_SPLIT_PTLOCK_CPUS=4 231CONFIG_SPLIT_PTLOCK_CPUS=4
232CONFIG_MIGRATION=y
170# CONFIG_RESOURCES_64BIT is not set 233# CONFIG_RESOURCES_64BIT is not set
234# CONFIG_PHYS_ADDR_T_64BIT is not set
171CONFIG_ZONE_DMA_FLAG=0 235CONFIG_ZONE_DMA_FLAG=0
172CONFIG_NR_QUICK=2 236CONFIG_NR_QUICK=2
237CONFIG_UNEVICTABLE_LRU=y
173 238
174# 239#
175# Cache configuration 240# Cache configuration
176# 241#
177# CONFIG_SH_DIRECT_MAPPED is not set 242# CONFIG_SH_DIRECT_MAPPED is not set
178# CONFIG_CACHE_WRITEBACK is not set 243CONFIG_CACHE_WRITEBACK=y
179# CONFIG_CACHE_WRITETHROUGH is not set 244# CONFIG_CACHE_WRITETHROUGH is not set
180CONFIG_CACHE_OFF=y 245# CONFIG_CACHE_OFF is not set
181 246
182# 247#
183# Processor features 248# Processor features
@@ -202,8 +267,9 @@ CONFIG_SH_TMU=y
202CONFIG_SH_TIMER_IRQ=16 267CONFIG_SH_TIMER_IRQ=16
203CONFIG_SH_PCLK_FREQ=50000000 268CONFIG_SH_PCLK_FREQ=50000000
204CONFIG_TICK_ONESHOT=y 269CONFIG_TICK_ONESHOT=y
205# CONFIG_NO_HZ is not set 270CONFIG_NO_HZ=y
206CONFIG_HIGH_RES_TIMERS=y 271CONFIG_HIGH_RES_TIMERS=y
272CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
207 273
208# 274#
209# CPU Frequency scaling 275# CPU Frequency scaling
@@ -214,7 +280,10 @@ CONFIG_CPU_FREQ_TABLE=y
214CONFIG_CPU_FREQ_STAT=y 280CONFIG_CPU_FREQ_STAT=y
215# CONFIG_CPU_FREQ_STAT_DETAILS is not set 281# CONFIG_CPU_FREQ_STAT_DETAILS is not set
216CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 282CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
283# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
217# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 284# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
285# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
286# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
218CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 287CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
219CONFIG_CPU_FREQ_GOV_POWERSAVE=m 288CONFIG_CPU_FREQ_GOV_POWERSAVE=m
220CONFIG_CPU_FREQ_GOV_USERSPACE=m 289CONFIG_CPU_FREQ_GOV_USERSPACE=m
@@ -245,20 +314,23 @@ CONFIG_HZ_250=y
245# CONFIG_HZ_300 is not set 314# CONFIG_HZ_300 is not set
246# CONFIG_HZ_1000 is not set 315# CONFIG_HZ_1000 is not set
247CONFIG_HZ=250 316CONFIG_HZ=250
317CONFIG_SCHED_HRTICK=y
248CONFIG_KEXEC=y 318CONFIG_KEXEC=y
249# CONFIG_CRASH_DUMP is not set 319# CONFIG_CRASH_DUMP is not set
250# CONFIG_SMP is not set 320CONFIG_SECCOMP=y
321CONFIG_SMP=y
322CONFIG_NR_CPUS=4
251# CONFIG_PREEMPT_NONE is not set 323# CONFIG_PREEMPT_NONE is not set
252# CONFIG_PREEMPT_VOLUNTARY is not set 324# CONFIG_PREEMPT_VOLUNTARY is not set
253CONFIG_PREEMPT=y 325CONFIG_PREEMPT=y
254CONFIG_PREEMPT_BKL=y 326CONFIG_PREEMPT_RCU=y
327CONFIG_RCU_TRACE=y
255 328
256# 329#
257# Boot options 330# Boot options
258# 331#
259CONFIG_ZERO_PAGE_OFFSET=0x00001000 332CONFIG_ZERO_PAGE_OFFSET=0x00001000
260CONFIG_BOOT_LINK_OFFSET=0x00800000 333CONFIG_BOOT_LINK_OFFSET=0x00800000
261# CONFIG_UBC_WAKEUP is not set
262CONFIG_CMDLINE_BOOL=y 334CONFIG_CMDLINE_BOOL=y
263CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=bios ignore_loglevel" 335CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=bios ignore_loglevel"
264 336
@@ -266,21 +338,15 @@ CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=bios ignore_loglevel"
266# Bus options 338# Bus options
267# 339#
268# CONFIG_ARCH_SUPPORTS_MSI is not set 340# CONFIG_ARCH_SUPPORTS_MSI is not set
269
270#
271# PCCARD (PCMCIA/CardBus) support
272#
273# CONFIG_PCCARD is not set 341# CONFIG_PCCARD is not set
274 342
275# 343#
276# Executable file formats 344# Executable file formats
277# 345#
278CONFIG_BINFMT_ELF=y 346CONFIG_BINFMT_ELF=y
347# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
348# CONFIG_HAVE_AOUT is not set
279CONFIG_BINFMT_MISC=y 349CONFIG_BINFMT_MISC=y
280
281#
282# Networking
283#
284CONFIG_NET=y 350CONFIG_NET=y
285 351
286# 352#
@@ -292,6 +358,7 @@ CONFIG_XFRM=y
292# CONFIG_XFRM_USER is not set 358# CONFIG_XFRM_USER is not set
293# CONFIG_XFRM_SUB_POLICY is not set 359# CONFIG_XFRM_SUB_POLICY is not set
294# CONFIG_XFRM_MIGRATE is not set 360# CONFIG_XFRM_MIGRATE is not set
361# CONFIG_XFRM_STATISTICS is not set
295# CONFIG_NET_KEY is not set 362# CONFIG_NET_KEY is not set
296CONFIG_INET=y 363CONFIG_INET=y
297# CONFIG_IP_MULTICAST is not set 364# CONFIG_IP_MULTICAST is not set
@@ -313,6 +380,7 @@ CONFIG_INET_TUNNEL=m
313CONFIG_INET_XFRM_MODE_TRANSPORT=y 380CONFIG_INET_XFRM_MODE_TRANSPORT=y
314CONFIG_INET_XFRM_MODE_TUNNEL=y 381CONFIG_INET_XFRM_MODE_TUNNEL=y
315CONFIG_INET_XFRM_MODE_BEET=y 382CONFIG_INET_XFRM_MODE_BEET=y
383# CONFIG_INET_LRO is not set
316CONFIG_INET_DIAG=y 384CONFIG_INET_DIAG=y
317CONFIG_INET_TCP_DIAG=y 385CONFIG_INET_TCP_DIAG=y
318# CONFIG_TCP_CONG_ADVANCED is not set 386# CONFIG_TCP_CONG_ADVANCED is not set
@@ -334,8 +402,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
334CONFIG_INET6_XFRM_MODE_BEET=m 402CONFIG_INET6_XFRM_MODE_BEET=m
335# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 403# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
336CONFIG_IPV6_SIT=m 404CONFIG_IPV6_SIT=m
405CONFIG_IPV6_NDISC_NODETYPE=y
337# CONFIG_IPV6_TUNNEL is not set 406# CONFIG_IPV6_TUNNEL is not set
338# CONFIG_IPV6_MULTIPLE_TABLES is not set 407# CONFIG_IPV6_MULTIPLE_TABLES is not set
408# CONFIG_IPV6_MROUTE is not set
339# CONFIG_NETWORK_SECMARK is not set 409# CONFIG_NETWORK_SECMARK is not set
340# CONFIG_NETFILTER is not set 410# CONFIG_NETFILTER is not set
341# CONFIG_IP_DCCP is not set 411# CONFIG_IP_DCCP is not set
@@ -343,6 +413,7 @@ CONFIG_IPV6_SIT=m
343# CONFIG_TIPC is not set 413# CONFIG_TIPC is not set
344# CONFIG_ATM is not set 414# CONFIG_ATM is not set
345# CONFIG_BRIDGE is not set 415# CONFIG_BRIDGE is not set
416# CONFIG_NET_DSA is not set
346# CONFIG_VLAN_8021Q is not set 417# CONFIG_VLAN_8021Q is not set
347# CONFIG_DECNET is not set 418# CONFIG_DECNET is not set
348# CONFIG_LLC2 is not set 419# CONFIG_LLC2 is not set
@@ -352,28 +423,28 @@ CONFIG_IPV6_SIT=m
352# CONFIG_LAPB is not set 423# CONFIG_LAPB is not set
353# CONFIG_ECONET is not set 424# CONFIG_ECONET is not set
354# CONFIG_WAN_ROUTER is not set 425# CONFIG_WAN_ROUTER is not set
355
356#
357# QoS and/or fair queueing
358#
359# CONFIG_NET_SCHED is not set 426# CONFIG_NET_SCHED is not set
360 427
361# 428#
362# Network testing 429# Network testing
363# 430#
364# CONFIG_NET_PKTGEN is not set 431# CONFIG_NET_PKTGEN is not set
432# CONFIG_NET_TCPPROBE is not set
365# CONFIG_HAMRADIO is not set 433# CONFIG_HAMRADIO is not set
366# CONFIG_IRDA is not set 434CONFIG_CAN=m
367# CONFIG_BT is not set 435CONFIG_CAN_RAW=m
368# CONFIG_AF_RXRPC is not set 436CONFIG_CAN_BCM=m
369 437
370# 438#
371# Wireless 439# CAN Device Drivers
372# 440#
373# CONFIG_CFG80211 is not set 441CONFIG_CAN_VCAN=m
374# CONFIG_WIRELESS_EXT is not set 442# CONFIG_CAN_DEBUG_DEVICES is not set
375# CONFIG_MAC80211 is not set 443# CONFIG_IRDA is not set
376# CONFIG_IEEE80211 is not set 444# CONFIG_BT is not set
445# CONFIG_AF_RXRPC is not set
446# CONFIG_PHONET is not set
447# CONFIG_WIRELESS is not set
377# CONFIG_RFKILL is not set 448# CONFIG_RFKILL is not set
378# CONFIG_NET_9P is not set 449# CONFIG_NET_9P is not set
379 450
@@ -384,6 +455,7 @@ CONFIG_IPV6_SIT=m
384# 455#
385# Generic Driver Options 456# Generic Driver Options
386# 457#
458CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
387CONFIG_STANDALONE=y 459CONFIG_STANDALONE=y
388CONFIG_PREVENT_FIRMWARE_BUILD=y 460CONFIG_PREVENT_FIRMWARE_BUILD=y
389# CONFIG_FW_LOADER is not set 461# CONFIG_FW_LOADER is not set
@@ -397,14 +469,18 @@ CONFIG_BLK_DEV=y
397# CONFIG_BLK_DEV_COW_COMMON is not set 469# CONFIG_BLK_DEV_COW_COMMON is not set
398# CONFIG_BLK_DEV_LOOP is not set 470# CONFIG_BLK_DEV_LOOP is not set
399# CONFIG_BLK_DEV_NBD is not set 471# CONFIG_BLK_DEV_NBD is not set
472# CONFIG_BLK_DEV_UB is not set
400CONFIG_BLK_DEV_RAM=y 473CONFIG_BLK_DEV_RAM=y
401CONFIG_BLK_DEV_RAM_COUNT=16 474CONFIG_BLK_DEV_RAM_COUNT=16
402CONFIG_BLK_DEV_RAM_SIZE=4096 475CONFIG_BLK_DEV_RAM_SIZE=4096
403CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 476# CONFIG_BLK_DEV_XIP is not set
404# CONFIG_CDROM_PKTCDVD is not set 477# CONFIG_CDROM_PKTCDVD is not set
405# CONFIG_ATA_OVER_ETH is not set 478# CONFIG_ATA_OVER_ETH is not set
479# CONFIG_BLK_DEV_HD is not set
406CONFIG_MISC_DEVICES=y 480CONFIG_MISC_DEVICES=y
407# CONFIG_EEPROM_93CX6 is not set 481# CONFIG_EEPROM_93CX6 is not set
482# CONFIG_ENCLOSURE_SERVICES is not set
483CONFIG_HAVE_IDE=y
408# CONFIG_IDE is not set 484# CONFIG_IDE is not set
409 485
410# 486#
@@ -443,25 +519,41 @@ CONFIG_SCSI_WAIT_SCAN=m
443# CONFIG_SCSI_FC_ATTRS is not set 519# CONFIG_SCSI_FC_ATTRS is not set
444# CONFIG_SCSI_ISCSI_ATTRS is not set 520# CONFIG_SCSI_ISCSI_ATTRS is not set
445# CONFIG_SCSI_SAS_LIBSAS is not set 521# CONFIG_SCSI_SAS_LIBSAS is not set
522# CONFIG_SCSI_SRP_ATTRS is not set
446CONFIG_SCSI_LOWLEVEL=y 523CONFIG_SCSI_LOWLEVEL=y
447# CONFIG_ISCSI_TCP is not set 524# CONFIG_ISCSI_TCP is not set
448# CONFIG_SCSI_DEBUG is not set 525# CONFIG_SCSI_DEBUG is not set
526# CONFIG_SCSI_DH is not set
449CONFIG_ATA=y 527CONFIG_ATA=y
450# CONFIG_ATA_NONSTANDARD is not set 528# CONFIG_ATA_NONSTANDARD is not set
529CONFIG_SATA_PMP=y
530CONFIG_ATA_SFF=y
531# CONFIG_SATA_MV is not set
451CONFIG_PATA_PLATFORM=y 532CONFIG_PATA_PLATFORM=y
452# CONFIG_MD is not set 533# CONFIG_MD is not set
453CONFIG_NETDEVICES=y 534CONFIG_NETDEVICES=y
454# CONFIG_NETDEVICES_MULTIQUEUE is not set
455# CONFIG_DUMMY is not set 535# CONFIG_DUMMY is not set
456# CONFIG_BONDING is not set 536# CONFIG_BONDING is not set
457# CONFIG_MACVLAN is not set 537# CONFIG_MACVLAN is not set
458# CONFIG_EQUALIZER is not set 538# CONFIG_EQUALIZER is not set
459# CONFIG_TUN is not set 539# CONFIG_TUN is not set
540# CONFIG_VETH is not set
460# CONFIG_PHYLIB is not set 541# CONFIG_PHYLIB is not set
461CONFIG_NET_ETHERNET=y 542CONFIG_NET_ETHERNET=y
462CONFIG_MII=y 543CONFIG_MII=y
544# CONFIG_AX88796 is not set
463# CONFIG_STNIC is not set 545# CONFIG_STNIC is not set
464CONFIG_SMC91X=y 546CONFIG_SMC91X=y
547# CONFIG_ENC28J60 is not set
548# CONFIG_SMC911X is not set
549# CONFIG_IBM_NEW_EMAC_ZMII is not set
550# CONFIG_IBM_NEW_EMAC_RGMII is not set
551# CONFIG_IBM_NEW_EMAC_TAH is not set
552# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
553# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
554# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
555# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
556# CONFIG_B44 is not set
465# CONFIG_NETDEV_1000 is not set 557# CONFIG_NETDEV_1000 is not set
466# CONFIG_NETDEV_10000 is not set 558# CONFIG_NETDEV_10000 is not set
467 559
@@ -470,10 +562,19 @@ CONFIG_SMC91X=y
470# 562#
471# CONFIG_WLAN_PRE80211 is not set 563# CONFIG_WLAN_PRE80211 is not set
472# CONFIG_WLAN_80211 is not set 564# CONFIG_WLAN_80211 is not set
565# CONFIG_IWLWIFI_LEDS is not set
566
567#
568# USB Network Adapters
569#
570# CONFIG_USB_CATC is not set
571# CONFIG_USB_KAWETH is not set
572# CONFIG_USB_PEGASUS is not set
573# CONFIG_USB_RTL8150 is not set
574# CONFIG_USB_USBNET is not set
473# CONFIG_WAN is not set 575# CONFIG_WAN is not set
474# CONFIG_PPP is not set 576# CONFIG_PPP is not set
475# CONFIG_SLIP is not set 577# CONFIG_SLIP is not set
476# CONFIG_SHAPER is not set
477# CONFIG_NETCONSOLE is not set 578# CONFIG_NETCONSOLE is not set
478# CONFIG_NETPOLL is not set 579# CONFIG_NETPOLL is not set
479# CONFIG_NET_POLL_CONTROLLER is not set 580# CONFIG_NET_POLL_CONTROLLER is not set
@@ -495,6 +596,7 @@ CONFIG_SMC91X=y
495# Character devices 596# Character devices
496# 597#
497# CONFIG_VT is not set 598# CONFIG_VT is not set
599CONFIG_DEVKMEM=y
498# CONFIG_SERIAL_NONSTANDARD is not set 600# CONFIG_SERIAL_NONSTANDARD is not set
499 601
500# 602#
@@ -514,6 +616,76 @@ CONFIG_UNIX98_PTYS=y
514CONFIG_LEGACY_PTYS=y 616CONFIG_LEGACY_PTYS=y
515CONFIG_LEGACY_PTY_COUNT=256 617CONFIG_LEGACY_PTY_COUNT=256
516# CONFIG_IPMI_HANDLER is not set 618# CONFIG_IPMI_HANDLER is not set
619# CONFIG_HW_RANDOM is not set
620# CONFIG_R3964 is not set
621# CONFIG_RAW_DRIVER is not set
622# CONFIG_TCG_TPM is not set
623CONFIG_I2C=m
624CONFIG_I2C_BOARDINFO=y
625# CONFIG_I2C_CHARDEV is not set
626CONFIG_I2C_HELPER_AUTO=y
627
628#
629# I2C Hardware Bus support
630#
631
632#
633# I2C system bus drivers (mostly embedded / system-on-chip)
634#
635# CONFIG_I2C_OCORES is not set
636# CONFIG_I2C_SH_MOBILE is not set
637# CONFIG_I2C_SIMTEC is not set
638
639#
640# External I2C/SMBus adapter drivers
641#
642# CONFIG_I2C_PARPORT_LIGHT is not set
643# CONFIG_I2C_TAOS_EVM is not set
644# CONFIG_I2C_TINY_USB is not set
645
646#
647# Other I2C/SMBus bus drivers
648#
649# CONFIG_I2C_PCA_PLATFORM is not set
650# CONFIG_I2C_STUB is not set
651
652#
653# Miscellaneous I2C Chip support
654#
655# CONFIG_DS1682 is not set
656# CONFIG_AT24 is not set
657# CONFIG_SENSORS_EEPROM is not set
658# CONFIG_SENSORS_PCF8574 is not set
659# CONFIG_PCF8575 is not set
660# CONFIG_SENSORS_PCA9539 is not set
661# CONFIG_SENSORS_PCF8591 is not set
662# CONFIG_SENSORS_MAX6875 is not set
663# CONFIG_SENSORS_TSL2550 is not set
664# CONFIG_I2C_DEBUG_CORE is not set
665# CONFIG_I2C_DEBUG_ALGO is not set
666# CONFIG_I2C_DEBUG_BUS is not set
667# CONFIG_I2C_DEBUG_CHIP is not set
668CONFIG_SPI=y
669# CONFIG_SPI_DEBUG is not set
670CONFIG_SPI_MASTER=y
671
672#
673# SPI Master Controller Drivers
674#
675# CONFIG_SPI_BITBANG is not set
676# CONFIG_SPI_SH_SCI is not set
677
678#
679# SPI Protocol Masters
680#
681# CONFIG_SPI_AT25 is not set
682# CONFIG_SPI_SPIDEV is not set
683# CONFIG_SPI_TLE62X0 is not set
684# CONFIG_W1 is not set
685# CONFIG_POWER_SUPPLY is not set
686# CONFIG_HWMON is not set
687# CONFIG_THERMAL is not set
688# CONFIG_THERMAL_HWMON is not set
517CONFIG_WATCHDOG=y 689CONFIG_WATCHDOG=y
518# CONFIG_WATCHDOG_NOWAYOUT is not set 690# CONFIG_WATCHDOG_NOWAYOUT is not set
519 691
@@ -522,78 +694,158 @@ CONFIG_WATCHDOG=y
522# 694#
523# CONFIG_SOFT_WATCHDOG is not set 695# CONFIG_SOFT_WATCHDOG is not set
524# CONFIG_SH_WDT is not set 696# CONFIG_SH_WDT is not set
525# CONFIG_HW_RANDOM is not set
526# CONFIG_R3964 is not set
527# CONFIG_RAW_DRIVER is not set
528# CONFIG_TCG_TPM is not set
529# CONFIG_I2C is not set
530 697
531# 698#
532# SPI support 699# USB-based Watchdog Cards
533# 700#
534# CONFIG_SPI is not set 701# CONFIG_USBPCWATCHDOG is not set
535# CONFIG_SPI_MASTER is not set 702
536# CONFIG_W1 is not set 703#
537# CONFIG_POWER_SUPPLY is not set 704# Sonics Silicon Backplane
538# CONFIG_HWMON is not set 705#
706CONFIG_SSB_POSSIBLE=y
707# CONFIG_SSB is not set
539 708
540# 709#
541# Multifunction device drivers 710# Multifunction device drivers
542# 711#
712# CONFIG_MFD_CORE is not set
543# CONFIG_MFD_SM501 is not set 713# CONFIG_MFD_SM501 is not set
714# CONFIG_HTC_PASIC3 is not set
715# CONFIG_MFD_TMIO is not set
716# CONFIG_MFD_WM8400 is not set
717# CONFIG_MFD_WM8350_I2C is not set
544 718
545# 719#
546# Multimedia devices 720# Multimedia devices
547# 721#
722
723#
724# Multimedia core support
725#
548# CONFIG_VIDEO_DEV is not set 726# CONFIG_VIDEO_DEV is not set
549# CONFIG_DVB_CORE is not set 727# CONFIG_DVB_CORE is not set
550# CONFIG_DAB is not set 728# CONFIG_VIDEO_MEDIA is not set
551 729
552# 730#
553# Graphics support 731# Multimedia drivers
554# 732#
555# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 733# CONFIG_DAB is not set
556 734
557# 735#
558# Display device support 736# Graphics support
559# 737#
560# CONFIG_DISPLAY_SUPPORT is not set
561# CONFIG_VGASTATE is not set 738# CONFIG_VGASTATE is not set
562CONFIG_VIDEO_OUTPUT_CONTROL=m 739CONFIG_VIDEO_OUTPUT_CONTROL=m
563# CONFIG_FB is not set 740# CONFIG_FB is not set
741# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
564 742
565# 743#
566# Sound 744# Display device support
567# 745#
746# CONFIG_DISPLAY_SUPPORT is not set
568# CONFIG_SOUND is not set 747# CONFIG_SOUND is not set
569CONFIG_USB_SUPPORT=y 748CONFIG_USB_SUPPORT=y
570CONFIG_USB_ARCH_HAS_HCD=y 749CONFIG_USB_ARCH_HAS_HCD=y
571# CONFIG_USB_ARCH_HAS_OHCI is not set 750# CONFIG_USB_ARCH_HAS_OHCI is not set
572# CONFIG_USB_ARCH_HAS_EHCI is not set 751# CONFIG_USB_ARCH_HAS_EHCI is not set
573# CONFIG_USB is not set 752CONFIG_USB=y
753# CONFIG_USB_DEBUG is not set
754# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
755
756#
757# Miscellaneous USB options
758#
759# CONFIG_USB_DEVICEFS is not set
760CONFIG_USB_DEVICE_CLASS=y
761# CONFIG_USB_DYNAMIC_MINORS is not set
762# CONFIG_USB_OTG is not set
763# CONFIG_USB_OTG_WHITELIST is not set
764# CONFIG_USB_OTG_BLACKLIST_HUB is not set
765CONFIG_USB_MON=y
766
767#
768# USB Host Controller Drivers
769#
770# CONFIG_USB_C67X00_HCD is not set
771# CONFIG_USB_ISP116X_HCD is not set
772# CONFIG_USB_ISP1760_HCD is not set
773# CONFIG_USB_SL811_HCD is not set
774CONFIG_USB_R8A66597_HCD=m
775# CONFIG_USB_GADGET_MUSB_HDRC is not set
776
777#
778# USB Device Class drivers
779#
780# CONFIG_USB_ACM is not set
781# CONFIG_USB_PRINTER is not set
782# CONFIG_USB_WDM is not set
783# CONFIG_USB_TMC is not set
574 784
575# 785#
576# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 786# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
577# 787#
578 788
579# 789#
580# USB Gadget Support 790# may also be needed; see USB_STORAGE Help for more information
791#
792# CONFIG_USB_STORAGE is not set
793# CONFIG_USB_LIBUSUAL is not set
794
795#
796# USB Imaging devices
797#
798# CONFIG_USB_MDC800 is not set
799# CONFIG_USB_MICROTEK is not set
800
581# 801#
802# USB port drivers
803#
804# CONFIG_USB_SERIAL is not set
805
806#
807# USB Miscellaneous drivers
808#
809# CONFIG_USB_EMI62 is not set
810# CONFIG_USB_EMI26 is not set
811# CONFIG_USB_ADUTUX is not set
812# CONFIG_USB_SEVSEG is not set
813# CONFIG_USB_RIO500 is not set
814# CONFIG_USB_LEGOTOWER is not set
815# CONFIG_USB_LCD is not set
816# CONFIG_USB_BERRY_CHARGE is not set
817# CONFIG_USB_LED is not set
818# CONFIG_USB_CYPRESS_CY7C63 is not set
819# CONFIG_USB_CYTHERM is not set
820# CONFIG_USB_PHIDGET is not set
821# CONFIG_USB_IDMOUSE is not set
822# CONFIG_USB_FTDI_ELAN is not set
823# CONFIG_USB_APPLEDISPLAY is not set
824# CONFIG_USB_LD is not set
825# CONFIG_USB_TRANCEVIBRATOR is not set
826# CONFIG_USB_IOWARRIOR is not set
827# CONFIG_USB_ISIGHTFW is not set
828# CONFIG_USB_VST is not set
582CONFIG_USB_GADGET=y 829CONFIG_USB_GADGET=y
583# CONFIG_USB_GADGET_DEBUG is not set 830# CONFIG_USB_GADGET_DEBUG is not set
584# CONFIG_USB_GADGET_DEBUG_FILES is not set 831# CONFIG_USB_GADGET_DEBUG_FILES is not set
832# CONFIG_USB_GADGET_DEBUG_FS is not set
833CONFIG_USB_GADGET_VBUS_DRAW=2
585CONFIG_USB_GADGET_SELECTED=y 834CONFIG_USB_GADGET_SELECTED=y
586# CONFIG_USB_GADGET_AMD5536UDC is not set 835# CONFIG_USB_GADGET_AT91 is not set
836# CONFIG_USB_GADGET_ATMEL_USBA is not set
587# CONFIG_USB_GADGET_FSL_USB2 is not set 837# CONFIG_USB_GADGET_FSL_USB2 is not set
588# CONFIG_USB_GADGET_NET2280 is not set
589# CONFIG_USB_GADGET_PXA2XX is not set
590CONFIG_USB_GADGET_M66592=y
591CONFIG_USB_M66592=y
592# CONFIG_USB_GADGET_GOKU is not set
593# CONFIG_USB_GADGET_LH7A40X is not set 838# CONFIG_USB_GADGET_LH7A40X is not set
594# CONFIG_USB_GADGET_OMAP is not set 839# CONFIG_USB_GADGET_OMAP is not set
840# CONFIG_USB_GADGET_PXA25X is not set
841# CONFIG_USB_GADGET_PXA27X is not set
595# CONFIG_USB_GADGET_S3C2410 is not set 842# CONFIG_USB_GADGET_S3C2410 is not set
596# CONFIG_USB_GADGET_AT91 is not set 843CONFIG_USB_GADGET_M66592=y
844CONFIG_USB_M66592=y
845# CONFIG_USB_GADGET_AMD5536UDC is not set
846# CONFIG_USB_GADGET_FSL_QE is not set
847# CONFIG_USB_GADGET_NET2280 is not set
848# CONFIG_USB_GADGET_GOKU is not set
597# CONFIG_USB_GADGET_DUMMY_HCD is not set 849# CONFIG_USB_GADGET_DUMMY_HCD is not set
598CONFIG_USB_GADGET_DUALSPEED=y 850CONFIG_USB_GADGET_DUALSPEED=y
599# CONFIG_USB_ZERO is not set 851# CONFIG_USB_ZERO is not set
@@ -602,27 +854,78 @@ CONFIG_USB_GADGET_DUALSPEED=y
602# CONFIG_USB_FILE_STORAGE is not set 854# CONFIG_USB_FILE_STORAGE is not set
603# CONFIG_USB_G_SERIAL is not set 855# CONFIG_USB_G_SERIAL is not set
604# CONFIG_USB_MIDI_GADGET is not set 856# CONFIG_USB_MIDI_GADGET is not set
857# CONFIG_USB_G_PRINTER is not set
858# CONFIG_USB_CDC_COMPOSITE is not set
605# CONFIG_MMC is not set 859# CONFIG_MMC is not set
860# CONFIG_MEMSTICK is not set
606# CONFIG_NEW_LEDS is not set 861# CONFIG_NEW_LEDS is not set
607# CONFIG_RTC_CLASS is not set 862# CONFIG_ACCESSIBILITY is not set
863CONFIG_RTC_LIB=y
864CONFIG_RTC_CLASS=y
865CONFIG_RTC_HCTOSYS=y
866CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
867# CONFIG_RTC_DEBUG is not set
608 868
609# 869#
610# DMA Engine support 870# RTC interfaces
611# 871#
612# CONFIG_DMA_ENGINE is not set 872CONFIG_RTC_INTF_SYSFS=y
873CONFIG_RTC_INTF_PROC=y
874CONFIG_RTC_INTF_DEV=y
875# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
876# CONFIG_RTC_DRV_TEST is not set
613 877
614# 878#
615# DMA Clients 879# I2C RTC drivers
616# 880#
881# CONFIG_RTC_DRV_DS1307 is not set
882# CONFIG_RTC_DRV_DS1374 is not set
883# CONFIG_RTC_DRV_DS1672 is not set
884# CONFIG_RTC_DRV_MAX6900 is not set
885# CONFIG_RTC_DRV_RS5C372 is not set
886# CONFIG_RTC_DRV_ISL1208 is not set
887# CONFIG_RTC_DRV_X1205 is not set
888# CONFIG_RTC_DRV_PCF8563 is not set
889# CONFIG_RTC_DRV_PCF8583 is not set
890# CONFIG_RTC_DRV_M41T80 is not set
891# CONFIG_RTC_DRV_S35390A is not set
892# CONFIG_RTC_DRV_FM3130 is not set
617 893
618# 894#
619# DMA Devices 895# SPI RTC drivers
896#
897# CONFIG_RTC_DRV_M41T94 is not set
898# CONFIG_RTC_DRV_DS1305 is not set
899# CONFIG_RTC_DRV_MAX6902 is not set
900# CONFIG_RTC_DRV_R9701 is not set
901# CONFIG_RTC_DRV_RS5C348 is not set
902# CONFIG_RTC_DRV_DS3234 is not set
903
620# 904#
905# Platform RTC drivers
906#
907# CONFIG_RTC_DRV_DS1286 is not set
908# CONFIG_RTC_DRV_DS1511 is not set
909# CONFIG_RTC_DRV_DS1553 is not set
910# CONFIG_RTC_DRV_DS1742 is not set
911# CONFIG_RTC_DRV_STK17TA8 is not set
912# CONFIG_RTC_DRV_M48T86 is not set
913# CONFIG_RTC_DRV_M48T35 is not set
914# CONFIG_RTC_DRV_M48T59 is not set
915# CONFIG_RTC_DRV_BQ4802 is not set
916# CONFIG_RTC_DRV_V3020 is not set
621 917
622# 918#
623# Userspace I/O 919# on-CPU RTC drivers
624# 920#
921CONFIG_RTC_DRV_SH=y
922# CONFIG_DMADEVICES is not set
625CONFIG_UIO=m 923CONFIG_UIO=m
924# CONFIG_UIO_PDRV is not set
925# CONFIG_UIO_PDRV_GENIRQ is not set
926# CONFIG_UIO_SMX is not set
927# CONFIG_UIO_SERCOS3 is not set
928# CONFIG_STAGING is not set
626 929
627# 930#
628# File systems 931# File systems
@@ -634,22 +937,20 @@ CONFIG_EXT3_FS=y
634CONFIG_EXT3_FS_XATTR=y 937CONFIG_EXT3_FS_XATTR=y
635# CONFIG_EXT3_FS_POSIX_ACL is not set 938# CONFIG_EXT3_FS_POSIX_ACL is not set
636# CONFIG_EXT3_FS_SECURITY is not set 939# CONFIG_EXT3_FS_SECURITY is not set
637# CONFIG_EXT4DEV_FS is not set 940# CONFIG_EXT4_FS is not set
638CONFIG_JBD=y 941CONFIG_JBD=y
639# CONFIG_JBD_DEBUG is not set 942# CONFIG_JBD_DEBUG is not set
640CONFIG_FS_MBCACHE=y 943CONFIG_FS_MBCACHE=y
641# CONFIG_REISERFS_FS is not set 944# CONFIG_REISERFS_FS is not set
642# CONFIG_JFS_FS is not set 945# CONFIG_JFS_FS is not set
643# CONFIG_FS_POSIX_ACL is not set 946# CONFIG_FS_POSIX_ACL is not set
947CONFIG_FILE_LOCKING=y
644# CONFIG_XFS_FS is not set 948# CONFIG_XFS_FS is not set
645# CONFIG_GFS2_FS is not set
646# CONFIG_OCFS2_FS is not set 949# CONFIG_OCFS2_FS is not set
647# CONFIG_MINIX_FS is not set 950CONFIG_DNOTIFY=y
648# CONFIG_ROMFS_FS is not set
649CONFIG_INOTIFY=y 951CONFIG_INOTIFY=y
650CONFIG_INOTIFY_USER=y 952CONFIG_INOTIFY_USER=y
651# CONFIG_QUOTA is not set 953# CONFIG_QUOTA is not set
652CONFIG_DNOTIFY=y
653# CONFIG_AUTOFS_FS is not set 954# CONFIG_AUTOFS_FS is not set
654# CONFIG_AUTOFS4_FS is not set 955# CONFIG_AUTOFS4_FS is not set
655# CONFIG_FUSE_FS is not set 956# CONFIG_FUSE_FS is not set
@@ -673,12 +974,12 @@ CONFIG_DNOTIFY=y
673CONFIG_PROC_FS=y 974CONFIG_PROC_FS=y
674CONFIG_PROC_KCORE=y 975CONFIG_PROC_KCORE=y
675CONFIG_PROC_SYSCTL=y 976CONFIG_PROC_SYSCTL=y
977CONFIG_PROC_PAGE_MONITOR=y
676CONFIG_SYSFS=y 978CONFIG_SYSFS=y
677CONFIG_TMPFS=y 979CONFIG_TMPFS=y
678# CONFIG_TMPFS_POSIX_ACL is not set 980# CONFIG_TMPFS_POSIX_ACL is not set
679CONFIG_HUGETLBFS=y 981CONFIG_HUGETLBFS=y
680CONFIG_HUGETLB_PAGE=y 982CONFIG_HUGETLB_PAGE=y
681CONFIG_RAMFS=y
682# CONFIG_CONFIGFS_FS is not set 983# CONFIG_CONFIGFS_FS is not set
683 984
684# 985#
@@ -693,14 +994,14 @@ CONFIG_RAMFS=y
693# CONFIG_EFS_FS is not set 994# CONFIG_EFS_FS is not set
694# CONFIG_CRAMFS is not set 995# CONFIG_CRAMFS is not set
695# CONFIG_VXFS_FS is not set 996# CONFIG_VXFS_FS is not set
997# CONFIG_MINIX_FS is not set
998# CONFIG_OMFS_FS is not set
696# CONFIG_HPFS_FS is not set 999# CONFIG_HPFS_FS is not set
697# CONFIG_QNX4FS_FS is not set 1000# CONFIG_QNX4FS_FS is not set
1001# CONFIG_ROMFS_FS is not set
698# CONFIG_SYSV_FS is not set 1002# CONFIG_SYSV_FS is not set
699# CONFIG_UFS_FS is not set 1003# CONFIG_UFS_FS is not set
700 1004CONFIG_NETWORK_FILESYSTEMS=y
701#
702# Network File Systems
703#
704# CONFIG_NFS_FS is not set 1005# CONFIG_NFS_FS is not set
705# CONFIG_NFSD is not set 1006# CONFIG_NFSD is not set
706# CONFIG_SMB_FS is not set 1007# CONFIG_SMB_FS is not set
@@ -714,29 +1015,17 @@ CONFIG_RAMFS=y
714# 1015#
715# CONFIG_PARTITION_ADVANCED is not set 1016# CONFIG_PARTITION_ADVANCED is not set
716CONFIG_MSDOS_PARTITION=y 1017CONFIG_MSDOS_PARTITION=y
717
718#
719# Native Language Support
720#
721# CONFIG_NLS is not set 1018# CONFIG_NLS is not set
722
723#
724# Distributed Lock Manager
725#
726# CONFIG_DLM is not set 1019# CONFIG_DLM is not set
727 1020
728# 1021#
729# Profiling support
730#
731CONFIG_PROFILING=y
732# CONFIG_OPROFILE is not set
733
734#
735# Kernel hacking 1022# Kernel hacking
736# 1023#
737CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1024CONFIG_TRACE_IRQFLAGS_SUPPORT=y
738# CONFIG_PRINTK_TIME is not set 1025# CONFIG_PRINTK_TIME is not set
1026CONFIG_ENABLE_WARN_DEPRECATED=y
739# CONFIG_ENABLE_MUST_CHECK is not set 1027# CONFIG_ENABLE_MUST_CHECK is not set
1028CONFIG_FRAME_WARN=1024
740CONFIG_MAGIC_SYSRQ=y 1029CONFIG_MAGIC_SYSRQ=y
741# CONFIG_UNUSED_SYMBOLS is not set 1030# CONFIG_UNUSED_SYMBOLS is not set
742CONFIG_DEBUG_FS=y 1031CONFIG_DEBUG_FS=y
@@ -744,9 +1033,12 @@ CONFIG_DEBUG_FS=y
744CONFIG_DEBUG_KERNEL=y 1033CONFIG_DEBUG_KERNEL=y
745CONFIG_DEBUG_SHIRQ=y 1034CONFIG_DEBUG_SHIRQ=y
746CONFIG_DETECT_SOFTLOCKUP=y 1035CONFIG_DETECT_SOFTLOCKUP=y
1036# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1037CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
747CONFIG_SCHED_DEBUG=y 1038CONFIG_SCHED_DEBUG=y
748# CONFIG_SCHEDSTATS is not set 1039# CONFIG_SCHEDSTATS is not set
749# CONFIG_TIMER_STATS is not set 1040# CONFIG_TIMER_STATS is not set
1041# CONFIG_DEBUG_OBJECTS is not set
750CONFIG_DEBUG_PREEMPT=y 1042CONFIG_DEBUG_PREEMPT=y
751# CONFIG_DEBUG_RT_MUTEXES is not set 1043# CONFIG_DEBUG_RT_MUTEXES is not set
752# CONFIG_RT_MUTEX_TESTER is not set 1044# CONFIG_RT_MUTEX_TESTER is not set
@@ -761,18 +1053,36 @@ CONFIG_DEBUG_PREEMPT=y
761CONFIG_DEBUG_BUGVERBOSE=y 1053CONFIG_DEBUG_BUGVERBOSE=y
762# CONFIG_DEBUG_INFO is not set 1054# CONFIG_DEBUG_INFO is not set
763CONFIG_DEBUG_VM=y 1055CONFIG_DEBUG_VM=y
1056# CONFIG_DEBUG_WRITECOUNT is not set
1057# CONFIG_DEBUG_MEMORY_INIT is not set
764# CONFIG_DEBUG_LIST is not set 1058# CONFIG_DEBUG_LIST is not set
1059# CONFIG_DEBUG_SG is not set
765CONFIG_FRAME_POINTER=y 1060CONFIG_FRAME_POINTER=y
766CONFIG_FORCED_INLINING=y
767# CONFIG_RCU_TORTURE_TEST is not set 1061# CONFIG_RCU_TORTURE_TEST is not set
1062# CONFIG_KPROBES_SANITY_TEST is not set
1063# CONFIG_BACKTRACE_SELF_TEST is not set
1064# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1065# CONFIG_LKDTM is not set
768# CONFIG_FAULT_INJECTION is not set 1066# CONFIG_FAULT_INJECTION is not set
1067# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1068CONFIG_NOP_TRACER=y
1069CONFIG_HAVE_FTRACE=y
1070# CONFIG_FTRACE is not set
1071# CONFIG_IRQSOFF_TRACER is not set
1072# CONFIG_PREEMPT_TRACER is not set
1073# CONFIG_SCHED_TRACER is not set
1074# CONFIG_CONTEXT_SWITCH_TRACER is not set
1075# CONFIG_BOOT_TRACER is not set
1076# CONFIG_STACK_TRACER is not set
1077# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1078# CONFIG_SAMPLES is not set
769CONFIG_SH_STANDARD_BIOS=y 1079CONFIG_SH_STANDARD_BIOS=y
770# CONFIG_EARLY_SCIF_CONSOLE is not set 1080# CONFIG_EARLY_SCIF_CONSOLE is not set
771CONFIG_EARLY_PRINTK=y 1081CONFIG_EARLY_PRINTK=y
772# CONFIG_DEBUG_BOOTMEM is not set 1082# CONFIG_DEBUG_BOOTMEM is not set
773CONFIG_DEBUG_STACKOVERFLOW=y 1083CONFIG_DEBUG_STACKOVERFLOW=y
774CONFIG_DEBUG_STACK_USAGE=y 1084CONFIG_DEBUG_STACK_USAGE=y
775# CONFIG_4KSTACKS is not set 1085# CONFIG_IRQSTACKS is not set
776# CONFIG_SH_KGDB is not set 1086# CONFIG_SH_KGDB is not set
777 1087
778# 1088#
@@ -780,7 +1090,92 @@ CONFIG_DEBUG_STACK_USAGE=y
780# 1090#
781# CONFIG_KEYS is not set 1091# CONFIG_KEYS is not set
782# CONFIG_SECURITY is not set 1092# CONFIG_SECURITY is not set
783# CONFIG_CRYPTO is not set 1093# CONFIG_SECURITYFS is not set
1094# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1095CONFIG_CRYPTO=y
1096
1097#
1098# Crypto core or helper
1099#
1100# CONFIG_CRYPTO_FIPS is not set
1101# CONFIG_CRYPTO_MANAGER is not set
1102# CONFIG_CRYPTO_GF128MUL is not set
1103# CONFIG_CRYPTO_NULL is not set
1104# CONFIG_CRYPTO_CRYPTD is not set
1105# CONFIG_CRYPTO_AUTHENC is not set
1106# CONFIG_CRYPTO_TEST is not set
1107
1108#
1109# Authenticated Encryption with Associated Data
1110#
1111# CONFIG_CRYPTO_CCM is not set
1112# CONFIG_CRYPTO_GCM is not set
1113# CONFIG_CRYPTO_SEQIV is not set
1114
1115#
1116# Block modes
1117#
1118# CONFIG_CRYPTO_CBC is not set
1119# CONFIG_CRYPTO_CTR is not set
1120# CONFIG_CRYPTO_CTS is not set
1121# CONFIG_CRYPTO_ECB is not set
1122# CONFIG_CRYPTO_LRW is not set
1123# CONFIG_CRYPTO_PCBC is not set
1124# CONFIG_CRYPTO_XTS is not set
1125
1126#
1127# Hash modes
1128#
1129# CONFIG_CRYPTO_HMAC is not set
1130# CONFIG_CRYPTO_XCBC is not set
1131
1132#
1133# Digest
1134#
1135# CONFIG_CRYPTO_CRC32C is not set
1136# CONFIG_CRYPTO_MD4 is not set
1137# CONFIG_CRYPTO_MD5 is not set
1138# CONFIG_CRYPTO_MICHAEL_MIC is not set
1139# CONFIG_CRYPTO_RMD128 is not set
1140# CONFIG_CRYPTO_RMD160 is not set
1141# CONFIG_CRYPTO_RMD256 is not set
1142# CONFIG_CRYPTO_RMD320 is not set
1143# CONFIG_CRYPTO_SHA1 is not set
1144# CONFIG_CRYPTO_SHA256 is not set
1145# CONFIG_CRYPTO_SHA512 is not set
1146# CONFIG_CRYPTO_TGR192 is not set
1147# CONFIG_CRYPTO_WP512 is not set
1148
1149#
1150# Ciphers
1151#
1152# CONFIG_CRYPTO_AES is not set
1153# CONFIG_CRYPTO_ANUBIS is not set
1154# CONFIG_CRYPTO_ARC4 is not set
1155# CONFIG_CRYPTO_BLOWFISH is not set
1156# CONFIG_CRYPTO_CAMELLIA is not set
1157# CONFIG_CRYPTO_CAST5 is not set
1158# CONFIG_CRYPTO_CAST6 is not set
1159# CONFIG_CRYPTO_DES is not set
1160# CONFIG_CRYPTO_FCRYPT is not set
1161# CONFIG_CRYPTO_KHAZAD is not set
1162# CONFIG_CRYPTO_SALSA20 is not set
1163# CONFIG_CRYPTO_SEED is not set
1164# CONFIG_CRYPTO_SERPENT is not set
1165# CONFIG_CRYPTO_TEA is not set
1166# CONFIG_CRYPTO_TWOFISH is not set
1167
1168#
1169# Compression
1170#
1171# CONFIG_CRYPTO_DEFLATE is not set
1172# CONFIG_CRYPTO_LZO is not set
1173
1174#
1175# Random Number Generation
1176#
1177# CONFIG_CRYPTO_ANSI_CPRNG is not set
1178CONFIG_CRYPTO_HW=y
784 1179
785# 1180#
786# Library routines 1181# Library routines
@@ -788,10 +1183,12 @@ CONFIG_DEBUG_STACK_USAGE=y
788CONFIG_BITREVERSE=y 1183CONFIG_BITREVERSE=y
789# CONFIG_CRC_CCITT is not set 1184# CONFIG_CRC_CCITT is not set
790# CONFIG_CRC16 is not set 1185# CONFIG_CRC16 is not set
1186# CONFIG_CRC_T10DIF is not set
791# CONFIG_CRC_ITU_T is not set 1187# CONFIG_CRC_ITU_T is not set
792CONFIG_CRC32=y 1188CONFIG_CRC32=y
793# CONFIG_CRC7 is not set 1189# CONFIG_CRC7 is not set
794# CONFIG_LIBCRC32C is not set 1190# CONFIG_LIBCRC32C is not set
1191CONFIG_AUDIT_GENERIC=y
795CONFIG_PLIST=y 1192CONFIG_PLIST=y
796CONFIG_HAS_IOMEM=y 1193CONFIG_HAS_IOMEM=y
797CONFIG_HAS_IOPORT=y 1194CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/configs/snapgear_defconfig b/arch/sh/configs/snapgear_defconfig
index e4e5d2178131..b4ca5110958f 100644
--- a/arch/sh/configs/snapgear_defconfig
+++ b/arch/sh/configs/snapgear_defconfig
@@ -1,36 +1,36 @@
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.27
4# Thu Jul 26 11:49:11 2007 4# Wed Oct 22 19:55:03 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 10CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
12CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
14CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_SYS_SUPPORTS_PCI=y 19CONFIG_SYS_SUPPORTS_PCI=y
17CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set 23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set 24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y 25CONFIG_ARCH_NO_VIRT_TO_BUS=y
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23 27
24# 28#
25# Code maturity level options 29# General setup
26# 30#
27CONFIG_EXPERIMENTAL=y 31CONFIG_EXPERIMENTAL=y
28CONFIG_BROKEN_ON_SMP=y 32CONFIG_BROKEN_ON_SMP=y
29CONFIG_INIT_ENV_ARG_LIMIT=32 33CONFIG_INIT_ENV_ARG_LIMIT=32
30
31#
32# General setup
33#
34CONFIG_LOCALVERSION="" 34CONFIG_LOCALVERSION=""
35CONFIG_LOCALVERSION_AUTO=y 35CONFIG_LOCALVERSION_AUTO=y
36# CONFIG_SWAP is not set 36# CONFIG_SWAP is not set
@@ -38,12 +38,15 @@ CONFIG_LOCALVERSION_AUTO=y
38# CONFIG_POSIX_MQUEUE is not set 38# CONFIG_POSIX_MQUEUE is not set
39# CONFIG_BSD_PROCESS_ACCT is not set 39# CONFIG_BSD_PROCESS_ACCT is not set
40# CONFIG_TASKSTATS is not set 40# CONFIG_TASKSTATS is not set
41# CONFIG_USER_NS is not set
42# CONFIG_AUDIT is not set 41# CONFIG_AUDIT is not set
43# CONFIG_IKCONFIG is not set 42# CONFIG_IKCONFIG is not set
44CONFIG_LOG_BUF_SHIFT=14 43CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_SYSFS_DEPRECATED is not set 44# CONFIG_CGROUPS is not set
45# CONFIG_GROUP_SCHED is not set
46CONFIG_SYSFS_DEPRECATED=y
47CONFIG_SYSFS_DEPRECATED_V2=y
46# CONFIG_RELAY is not set 48# CONFIG_RELAY is not set
49# CONFIG_NAMESPACES is not set
47CONFIG_BLK_DEV_INITRD=y 50CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE="" 51CONFIG_INITRAMFS_SOURCE=""
49CONFIG_CC_OPTIMIZE_FOR_SIZE=y 52CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -57,6 +60,7 @@ CONFIG_KALLSYMS=y
57CONFIG_PRINTK=y 60CONFIG_PRINTK=y
58CONFIG_BUG=y 61CONFIG_BUG=y
59CONFIG_ELF_CORE=y 62CONFIG_ELF_CORE=y
63CONFIG_COMPAT_BRK=y
60CONFIG_BASE_FULL=y 64CONFIG_BASE_FULL=y
61CONFIG_FUTEX=y 65CONFIG_FUTEX=y
62CONFIG_ANON_INODES=y 66CONFIG_ANON_INODES=y
@@ -65,10 +69,22 @@ CONFIG_SIGNALFD=y
65CONFIG_TIMERFD=y 69CONFIG_TIMERFD=y
66CONFIG_EVENTFD=y 70CONFIG_EVENTFD=y
67CONFIG_SHMEM=y 71CONFIG_SHMEM=y
72CONFIG_AIO=y
68CONFIG_VM_EVENT_COUNTERS=y 73CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_PCI_QUIRKS=y
69CONFIG_SLAB=y 75CONFIG_SLAB=y
70# CONFIG_SLUB is not set 76# CONFIG_SLUB is not set
71# CONFIG_SLOB is not set 77# CONFIG_SLOB is not set
78# CONFIG_PROFILING is not set
79# CONFIG_MARKERS is not set
80CONFIG_HAVE_OPROFILE=y
81CONFIG_HAVE_IOREMAP_PROT=y
82CONFIG_HAVE_KPROBES=y
83CONFIG_HAVE_KRETPROBES=y
84CONFIG_HAVE_ARCH_TRACEHOOK=y
85CONFIG_HAVE_CLK=y
86CONFIG_HAVE_GENERIC_DMA_COHERENT=y
87CONFIG_SLABINFO=y
72CONFIG_RT_MUTEXES=y 88CONFIG_RT_MUTEXES=y
73# CONFIG_TINY_SHMEM is not set 89# CONFIG_TINY_SHMEM is not set
74CONFIG_BASE_SMALL=0 90CONFIG_BASE_SMALL=0
@@ -78,6 +94,7 @@ CONFIG_BLOCK=y
78# CONFIG_BLK_DEV_IO_TRACE is not set 94# CONFIG_BLK_DEV_IO_TRACE is not set
79# CONFIG_LSF is not set 95# CONFIG_LSF is not set
80# CONFIG_BLK_DEV_BSG is not set 96# CONFIG_BLK_DEV_BSG is not set
97# CONFIG_BLK_DEV_INTEGRITY is not set
81 98
82# 99#
83# IO Schedulers 100# IO Schedulers
@@ -91,13 +108,18 @@ CONFIG_DEFAULT_AS=y
91# CONFIG_DEFAULT_CFQ is not set 108# CONFIG_DEFAULT_CFQ is not set
92# CONFIG_DEFAULT_NOOP is not set 109# CONFIG_DEFAULT_NOOP is not set
93CONFIG_DEFAULT_IOSCHED="anticipatory" 110CONFIG_DEFAULT_IOSCHED="anticipatory"
111CONFIG_CLASSIC_RCU=y
112# CONFIG_FREEZER is not set
94 113
95# 114#
96# System type 115# System type
97# 116#
98CONFIG_CPU_SH4=y 117CONFIG_CPU_SH4=y
99# CONFIG_CPU_SUBTYPE_SH7619 is not set 118# CONFIG_CPU_SUBTYPE_SH7619 is not set
119# CONFIG_CPU_SUBTYPE_SH7203 is not set
100# CONFIG_CPU_SUBTYPE_SH7206 is not set 120# CONFIG_CPU_SUBTYPE_SH7206 is not set
121# CONFIG_CPU_SUBTYPE_SH7263 is not set
122# CONFIG_CPU_SUBTYPE_MXG is not set
101# CONFIG_CPU_SUBTYPE_SH7705 is not set 123# CONFIG_CPU_SUBTYPE_SH7705 is not set
102# CONFIG_CPU_SUBTYPE_SH7706 is not set 124# CONFIG_CPU_SUBTYPE_SH7706 is not set
103# CONFIG_CPU_SUBTYPE_SH7707 is not set 125# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -105,6 +127,8 @@ CONFIG_CPU_SH4=y
105# CONFIG_CPU_SUBTYPE_SH7709 is not set 127# CONFIG_CPU_SUBTYPE_SH7709 is not set
106# CONFIG_CPU_SUBTYPE_SH7710 is not set 128# CONFIG_CPU_SUBTYPE_SH7710 is not set
107# CONFIG_CPU_SUBTYPE_SH7712 is not set 129# CONFIG_CPU_SUBTYPE_SH7712 is not set
130# CONFIG_CPU_SUBTYPE_SH7720 is not set
131# CONFIG_CPU_SUBTYPE_SH7721 is not set
108# CONFIG_CPU_SUBTYPE_SH7750 is not set 132# CONFIG_CPU_SUBTYPE_SH7750 is not set
109# CONFIG_CPU_SUBTYPE_SH7091 is not set 133# CONFIG_CPU_SUBTYPE_SH7091 is not set
110# CONFIG_CPU_SUBTYPE_SH7750R is not set 134# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -113,14 +137,17 @@ CONFIG_CPU_SH4=y
113CONFIG_CPU_SUBTYPE_SH7751R=y 137CONFIG_CPU_SUBTYPE_SH7751R=y
114# CONFIG_CPU_SUBTYPE_SH7760 is not set 138# CONFIG_CPU_SUBTYPE_SH7760 is not set
115# CONFIG_CPU_SUBTYPE_SH4_202 is not set 139# CONFIG_CPU_SUBTYPE_SH4_202 is not set
116# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 140# CONFIG_CPU_SUBTYPE_SH7723 is not set
117# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 141# CONFIG_CPU_SUBTYPE_SH7763 is not set
118# CONFIG_CPU_SUBTYPE_SH7770 is not set 142# CONFIG_CPU_SUBTYPE_SH7770 is not set
119# CONFIG_CPU_SUBTYPE_SH7780 is not set 143# CONFIG_CPU_SUBTYPE_SH7780 is not set
120# CONFIG_CPU_SUBTYPE_SH7785 is not set 144# CONFIG_CPU_SUBTYPE_SH7785 is not set
121# CONFIG_CPU_SUBTYPE_SHX3 is not set 145# CONFIG_CPU_SUBTYPE_SHX3 is not set
122# CONFIG_CPU_SUBTYPE_SH7343 is not set 146# CONFIG_CPU_SUBTYPE_SH7343 is not set
123# CONFIG_CPU_SUBTYPE_SH7722 is not set 147# CONFIG_CPU_SUBTYPE_SH7722 is not set
148# CONFIG_CPU_SUBTYPE_SH7366 is not set
149# CONFIG_CPU_SUBTYPE_SH5_101 is not set
150# CONFIG_CPU_SUBTYPE_SH5_103 is not set
124 151
125# 152#
126# Memory management options 153# Memory management options
@@ -130,6 +157,7 @@ CONFIG_MMU=y
130CONFIG_PAGE_OFFSET=0x80000000 157CONFIG_PAGE_OFFSET=0x80000000
131CONFIG_MEMORY_START=0x08000000 158CONFIG_MEMORY_START=0x08000000
132CONFIG_MEMORY_SIZE=0x01000000 159CONFIG_MEMORY_SIZE=0x01000000
160CONFIG_29BIT=y
133CONFIG_VSYSCALL=y 161CONFIG_VSYSCALL=y
134CONFIG_ARCH_FLATMEM_ENABLE=y 162CONFIG_ARCH_FLATMEM_ENABLE=y
135CONFIG_ARCH_SPARSEMEM_ENABLE=y 163CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -139,7 +167,9 @@ CONFIG_ARCH_POPULATES_NODE_MAP=y
139CONFIG_ARCH_SELECT_MEMORY_MODEL=y 167CONFIG_ARCH_SELECT_MEMORY_MODEL=y
140CONFIG_PAGE_SIZE_4KB=y 168CONFIG_PAGE_SIZE_4KB=y
141# CONFIG_PAGE_SIZE_8KB is not set 169# CONFIG_PAGE_SIZE_8KB is not set
170# CONFIG_PAGE_SIZE_16KB is not set
142# CONFIG_PAGE_SIZE_64KB is not set 171# CONFIG_PAGE_SIZE_64KB is not set
172CONFIG_ENTRY_OFFSET=0x00001000
143CONFIG_SELECT_MEMORY_MODEL=y 173CONFIG_SELECT_MEMORY_MODEL=y
144CONFIG_FLATMEM_MANUAL=y 174CONFIG_FLATMEM_MANUAL=y
145# CONFIG_DISCONTIGMEM_MANUAL is not set 175# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -147,16 +177,21 @@ CONFIG_FLATMEM_MANUAL=y
147CONFIG_FLATMEM=y 177CONFIG_FLATMEM=y
148CONFIG_FLAT_NODE_MEM_MAP=y 178CONFIG_FLAT_NODE_MEM_MAP=y
149CONFIG_SPARSEMEM_STATIC=y 179CONFIG_SPARSEMEM_STATIC=y
180CONFIG_PAGEFLAGS_EXTENDED=y
150CONFIG_SPLIT_PTLOCK_CPUS=4 181CONFIG_SPLIT_PTLOCK_CPUS=4
151# CONFIG_RESOURCES_64BIT is not set 182# CONFIG_RESOURCES_64BIT is not set
183# CONFIG_PHYS_ADDR_T_64BIT is not set
152CONFIG_ZONE_DMA_FLAG=0 184CONFIG_ZONE_DMA_FLAG=0
153CONFIG_NR_QUICK=2 185CONFIG_NR_QUICK=2
186CONFIG_UNEVICTABLE_LRU=y
154 187
155# 188#
156# Cache configuration 189# Cache configuration
157# 190#
158# CONFIG_SH_DIRECT_MAPPED is not set 191# CONFIG_SH_DIRECT_MAPPED is not set
159# CONFIG_SH_WRITETHROUGH is not set 192CONFIG_CACHE_WRITEBACK=y
193# CONFIG_CACHE_WRITETHROUGH is not set
194# CONFIG_CACHE_OFF is not set
160 195
161# 196#
162# Processor features 197# Processor features
@@ -164,20 +199,18 @@ CONFIG_NR_QUICK=2
164CONFIG_CPU_LITTLE_ENDIAN=y 199CONFIG_CPU_LITTLE_ENDIAN=y
165# CONFIG_CPU_BIG_ENDIAN is not set 200# CONFIG_CPU_BIG_ENDIAN is not set
166CONFIG_SH_FPU=y 201CONFIG_SH_FPU=y
167# CONFIG_SH_DSP is not set
168# CONFIG_SH_STORE_QUEUES is not set 202# CONFIG_SH_STORE_QUEUES is not set
169CONFIG_CPU_HAS_INTEVT=y 203CONFIG_CPU_HAS_INTEVT=y
170CONFIG_CPU_HAS_INTC_IRQ=y
171CONFIG_CPU_HAS_IPR_IRQ=y 204CONFIG_CPU_HAS_IPR_IRQ=y
172CONFIG_CPU_HAS_SR_RB=y 205CONFIG_CPU_HAS_SR_RB=y
173CONFIG_CPU_HAS_PTEA=y 206CONFIG_CPU_HAS_PTEA=y
207CONFIG_CPU_HAS_FPU=y
174 208
175# 209#
176# Board support 210# Board support
177# 211#
178# CONFIG_SH_7751_SYSTEMH is not set 212# CONFIG_SH_7751_SYSTEMH is not set
179CONFIG_SH_SECUREEDGE5410=y 213CONFIG_SH_SECUREEDGE5410=y
180# CONFIG_SH_HS7751RVOIP is not set
181# CONFIG_SH_RTS7751R2D is not set 214# CONFIG_SH_RTS7751R2D is not set
182# CONFIG_SH_LANDISK is not set 215# CONFIG_SH_LANDISK is not set
183# CONFIG_SH_TITAN is not set 216# CONFIG_SH_TITAN is not set
@@ -189,9 +222,9 @@ CONFIG_SH_SECUREEDGE5410=y
189CONFIG_SH_TMU=y 222CONFIG_SH_TMU=y
190CONFIG_SH_TIMER_IRQ=16 223CONFIG_SH_TIMER_IRQ=16
191CONFIG_SH_PCLK_FREQ=60000000 224CONFIG_SH_PCLK_FREQ=60000000
192# CONFIG_TICK_ONESHOT is not set
193# CONFIG_NO_HZ is not set 225# CONFIG_NO_HZ is not set
194# CONFIG_HIGH_RES_TIMERS is not set 226# CONFIG_HIGH_RES_TIMERS is not set
227CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
195 228
196# 229#
197# CPU Frequency scaling 230# CPU Frequency scaling
@@ -224,11 +257,15 @@ CONFIG_HZ_250=y
224# CONFIG_HZ_300 is not set 257# CONFIG_HZ_300 is not set
225# CONFIG_HZ_1000 is not set 258# CONFIG_HZ_1000 is not set
226CONFIG_HZ=250 259CONFIG_HZ=250
260# CONFIG_SCHED_HRTICK is not set
227# CONFIG_KEXEC is not set 261# CONFIG_KEXEC is not set
228# CONFIG_CRASH_DUMP is not set 262# CONFIG_CRASH_DUMP is not set
263# CONFIG_SECCOMP is not set
229CONFIG_PREEMPT_NONE=y 264CONFIG_PREEMPT_NONE=y
230# CONFIG_PREEMPT_VOLUNTARY is not set 265# CONFIG_PREEMPT_VOLUNTARY is not set
231# CONFIG_PREEMPT is not set 266# CONFIG_PREEMPT is not set
267CONFIG_GUSA=y
268# CONFIG_GUSA_RB is not set
232 269
233# 270#
234# Boot options 271# Boot options
@@ -241,26 +278,20 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
241# 278#
242# Bus options 279# Bus options
243# 280#
244CONFIG_SH_CONCAT_FS=y
245CONFIG_PCI=y 281CONFIG_PCI=y
246CONFIG_SH_PCIDMA_NONCOHERENT=y 282CONFIG_SH_PCIDMA_NONCOHERENT=y
247CONFIG_PCI_AUTO=y 283CONFIG_PCI_AUTO=y
248CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 284CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
249# CONFIG_ARCH_SUPPORTS_MSI is not set 285# CONFIG_ARCH_SUPPORTS_MSI is not set
250 286CONFIG_PCI_LEGACY=y
251#
252# PCCARD (PCMCIA/CardBus) support
253#
254 287
255# 288#
256# Executable file formats 289# Executable file formats
257# 290#
258CONFIG_BINFMT_ELF=y 291CONFIG_BINFMT_ELF=y
292# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
293# CONFIG_HAVE_AOUT is not set
259# CONFIG_BINFMT_MISC is not set 294# CONFIG_BINFMT_MISC is not set
260
261#
262# Networking
263#
264CONFIG_NET=y 295CONFIG_NET=y
265 296
266# 297#
@@ -286,14 +317,13 @@ CONFIG_IP_FIB_HASH=y
286# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 317# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
287# CONFIG_INET_XFRM_MODE_TUNNEL is not set 318# CONFIG_INET_XFRM_MODE_TUNNEL is not set
288# CONFIG_INET_XFRM_MODE_BEET is not set 319# CONFIG_INET_XFRM_MODE_BEET is not set
320# CONFIG_INET_LRO is not set
289# CONFIG_INET_DIAG is not set 321# CONFIG_INET_DIAG is not set
290# CONFIG_TCP_CONG_ADVANCED is not set 322# CONFIG_TCP_CONG_ADVANCED is not set
291CONFIG_TCP_CONG_CUBIC=y 323CONFIG_TCP_CONG_CUBIC=y
292CONFIG_DEFAULT_TCP_CONG="cubic" 324CONFIG_DEFAULT_TCP_CONG="cubic"
293# CONFIG_TCP_MD5SIG is not set 325# CONFIG_TCP_MD5SIG is not set
294# CONFIG_IPV6 is not set 326# CONFIG_IPV6 is not set
295# CONFIG_INET6_XFRM_TUNNEL is not set
296# CONFIG_INET6_TUNNEL is not set
297# CONFIG_NETWORK_SECMARK is not set 327# CONFIG_NETWORK_SECMARK is not set
298# CONFIG_NETFILTER is not set 328# CONFIG_NETFILTER is not set
299# CONFIG_IP_DCCP is not set 329# CONFIG_IP_DCCP is not set
@@ -301,6 +331,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
301# CONFIG_TIPC is not set 331# CONFIG_TIPC is not set
302# CONFIG_ATM is not set 332# CONFIG_ATM is not set
303# CONFIG_BRIDGE is not set 333# CONFIG_BRIDGE is not set
334# CONFIG_NET_DSA is not set
304# CONFIG_VLAN_8021Q is not set 335# CONFIG_VLAN_8021Q is not set
305# CONFIG_DECNET is not set 336# CONFIG_DECNET is not set
306# CONFIG_LLC2 is not set 337# CONFIG_LLC2 is not set
@@ -310,10 +341,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
310# CONFIG_LAPB is not set 341# CONFIG_LAPB is not set
311# CONFIG_ECONET is not set 342# CONFIG_ECONET is not set
312# CONFIG_WAN_ROUTER is not set 343# CONFIG_WAN_ROUTER is not set
313
314#
315# QoS and/or fair queueing
316#
317# CONFIG_NET_SCHED is not set 344# CONFIG_NET_SCHED is not set
318 345
319# 346#
@@ -321,14 +348,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
321# 348#
322# CONFIG_NET_PKTGEN is not set 349# CONFIG_NET_PKTGEN is not set
323# CONFIG_HAMRADIO is not set 350# CONFIG_HAMRADIO is not set
351# CONFIG_CAN is not set
324# CONFIG_IRDA is not set 352# CONFIG_IRDA is not set
325# CONFIG_BT is not set 353# CONFIG_BT is not set
326# CONFIG_AF_RXRPC is not set 354# CONFIG_AF_RXRPC is not set
327 355# CONFIG_PHONET is not set
328# 356CONFIG_WIRELESS=y
329# Wireless
330#
331# CONFIG_CFG80211 is not set 357# CONFIG_CFG80211 is not set
358# CONFIG_WIRELESS_OLD_REGULATORY is not set
332# CONFIG_WIRELESS_EXT is not set 359# CONFIG_WIRELESS_EXT is not set
333# CONFIG_MAC80211 is not set 360# CONFIG_MAC80211 is not set
334# CONFIG_IEEE80211 is not set 361# CONFIG_IEEE80211 is not set
@@ -352,6 +379,7 @@ CONFIG_MTD=y
352CONFIG_MTD_PARTITIONS=y 379CONFIG_MTD_PARTITIONS=y
353# CONFIG_MTD_REDBOOT_PARTS is not set 380# CONFIG_MTD_REDBOOT_PARTS is not set
354# CONFIG_MTD_CMDLINE_PARTS is not set 381# CONFIG_MTD_CMDLINE_PARTS is not set
382# CONFIG_MTD_AR7_PARTS is not set
355 383
356# 384#
357# User Modules And Translation Layers 385# User Modules And Translation Layers
@@ -365,6 +393,7 @@ CONFIG_MTD_BLOCK_RO=y
365# CONFIG_INFTL is not set 393# CONFIG_INFTL is not set
366# CONFIG_RFD_FTL is not set 394# CONFIG_RFD_FTL is not set
367# CONFIG_SSFDC is not set 395# CONFIG_SSFDC is not set
396# CONFIG_MTD_OOPS is not set
368 397
369# 398#
370# RAM/ROM/Flash chip drivers 399# RAM/ROM/Flash chip drivers
@@ -401,6 +430,7 @@ CONFIG_MTD_RAM=y
401# 430#
402# CONFIG_MTD_COMPLEX_MAPPINGS is not set 431# CONFIG_MTD_COMPLEX_MAPPINGS is not set
403# CONFIG_MTD_PHYSMAP is not set 432# CONFIG_MTD_PHYSMAP is not set
433# CONFIG_MTD_INTEL_VR_NOR is not set
404CONFIG_MTD_PLATRAM=y 434CONFIG_MTD_PLATRAM=y
405 435
406# 436#
@@ -437,10 +467,12 @@ CONFIG_BLK_DEV=y
437CONFIG_BLK_DEV_RAM=y 467CONFIG_BLK_DEV_RAM=y
438CONFIG_BLK_DEV_RAM_COUNT=16 468CONFIG_BLK_DEV_RAM_COUNT=16
439CONFIG_BLK_DEV_RAM_SIZE=4096 469CONFIG_BLK_DEV_RAM_SIZE=4096
440CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 470# CONFIG_BLK_DEV_XIP is not set
441# CONFIG_CDROM_PKTCDVD is not set 471# CONFIG_CDROM_PKTCDVD is not set
442# CONFIG_ATA_OVER_ETH is not set 472# CONFIG_ATA_OVER_ETH is not set
473# CONFIG_BLK_DEV_HD is not set
443# CONFIG_MISC_DEVICES is not set 474# CONFIG_MISC_DEVICES is not set
475CONFIG_HAVE_IDE=y
444# CONFIG_IDE is not set 476# CONFIG_IDE is not set
445 477
446# 478#
@@ -452,44 +484,52 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
452# CONFIG_SCSI_NETLINK is not set 484# CONFIG_SCSI_NETLINK is not set
453# CONFIG_ATA is not set 485# CONFIG_ATA is not set
454# CONFIG_MD is not set 486# CONFIG_MD is not set
487# CONFIG_FUSION is not set
455 488
456# 489#
457# Fusion MPT device support 490# IEEE 1394 (FireWire) support
458# 491#
459# CONFIG_FUSION is not set
460 492
461# 493#
462# IEEE 1394 (FireWire) support 494# Enable only one of the two stacks, unless you know what you are doing
463# 495#
464# CONFIG_FIREWIRE is not set 496# CONFIG_FIREWIRE is not set
465# CONFIG_IEEE1394 is not set 497# CONFIG_IEEE1394 is not set
466# CONFIG_I2O is not set 498# CONFIG_I2O is not set
467CONFIG_NETDEVICES=y 499CONFIG_NETDEVICES=y
468# CONFIG_NETDEVICES_MULTIQUEUE is not set
469# CONFIG_DUMMY is not set 500# CONFIG_DUMMY is not set
470# CONFIG_BONDING is not set 501# CONFIG_BONDING is not set
471# CONFIG_MACVLAN is not set 502# CONFIG_MACVLAN is not set
472# CONFIG_EQUALIZER is not set 503# CONFIG_EQUALIZER is not set
473# CONFIG_TUN is not set 504# CONFIG_TUN is not set
505# CONFIG_VETH is not set
474# CONFIG_ARCNET is not set 506# CONFIG_ARCNET is not set
475# CONFIG_PHYLIB is not set 507# CONFIG_PHYLIB is not set
476CONFIG_NET_ETHERNET=y 508CONFIG_NET_ETHERNET=y
477CONFIG_MII=y 509CONFIG_MII=y
510# CONFIG_AX88796 is not set
478# CONFIG_STNIC is not set 511# CONFIG_STNIC is not set
479# CONFIG_HAPPYMEAL is not set 512# CONFIG_HAPPYMEAL is not set
480# CONFIG_SUNGEM is not set 513# CONFIG_SUNGEM is not set
481# CONFIG_CASSINI is not set 514# CONFIG_CASSINI is not set
482# CONFIG_NET_VENDOR_3COM is not set 515# CONFIG_NET_VENDOR_3COM is not set
483# CONFIG_SMC91X is not set 516# CONFIG_SMC91X is not set
517# CONFIG_SMC911X is not set
484# CONFIG_NET_TULIP is not set 518# CONFIG_NET_TULIP is not set
485# CONFIG_HP100 is not set 519# CONFIG_HP100 is not set
520# CONFIG_IBM_NEW_EMAC_ZMII is not set
521# CONFIG_IBM_NEW_EMAC_RGMII is not set
522# CONFIG_IBM_NEW_EMAC_TAH is not set
523# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
524# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
525# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
526# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
486CONFIG_NET_PCI=y 527CONFIG_NET_PCI=y
487# CONFIG_PCNET32 is not set 528# CONFIG_PCNET32 is not set
488# CONFIG_AMD8111_ETH is not set 529# CONFIG_AMD8111_ETH is not set
489# CONFIG_ADAPTEC_STARFIRE is not set 530# CONFIG_ADAPTEC_STARFIRE is not set
490# CONFIG_B44 is not set 531# CONFIG_B44 is not set
491# CONFIG_FORCEDETH is not set 532# CONFIG_FORCEDETH is not set
492# CONFIG_DGRS is not set
493# CONFIG_EEPRO100 is not set 533# CONFIG_EEPRO100 is not set
494# CONFIG_E100 is not set 534# CONFIG_E100 is not set
495# CONFIG_FEALNX is not set 535# CONFIG_FEALNX is not set
@@ -501,12 +541,14 @@ CONFIG_8139TOO_PIO=y
501# CONFIG_8139TOO_TUNE_TWISTER is not set 541# CONFIG_8139TOO_TUNE_TWISTER is not set
502# CONFIG_8139TOO_8129 is not set 542# CONFIG_8139TOO_8129 is not set
503# CONFIG_8139_OLD_RX_RESET is not set 543# CONFIG_8139_OLD_RX_RESET is not set
544# CONFIG_R6040 is not set
504# CONFIG_SIS900 is not set 545# CONFIG_SIS900 is not set
505# CONFIG_EPIC100 is not set 546# CONFIG_EPIC100 is not set
506# CONFIG_SUNDANCE is not set 547# CONFIG_SUNDANCE is not set
507# CONFIG_TLAN is not set 548# CONFIG_TLAN is not set
508# CONFIG_VIA_RHINE is not set 549# CONFIG_VIA_RHINE is not set
509# CONFIG_SC92031 is not set 550# CONFIG_SC92031 is not set
551# CONFIG_ATL2 is not set
510# CONFIG_NETDEV_1000 is not set 552# CONFIG_NETDEV_1000 is not set
511# CONFIG_NETDEV_10000 is not set 553# CONFIG_NETDEV_10000 is not set
512# CONFIG_TR is not set 554# CONFIG_TR is not set
@@ -516,12 +558,12 @@ CONFIG_8139TOO_PIO=y
516# 558#
517# CONFIG_WLAN_PRE80211 is not set 559# CONFIG_WLAN_PRE80211 is not set
518# CONFIG_WLAN_80211 is not set 560# CONFIG_WLAN_80211 is not set
561# CONFIG_IWLWIFI_LEDS is not set
519# CONFIG_WAN is not set 562# CONFIG_WAN is not set
520# CONFIG_FDDI is not set 563# CONFIG_FDDI is not set
521# CONFIG_HIPPI is not set 564# CONFIG_HIPPI is not set
522# CONFIG_PPP is not set 565# CONFIG_PPP is not set
523# CONFIG_SLIP is not set 566# CONFIG_SLIP is not set
524# CONFIG_SHAPER is not set
525# CONFIG_NETCONSOLE is not set 567# CONFIG_NETCONSOLE is not set
526# CONFIG_NETPOLL is not set 568# CONFIG_NETPOLL is not set
527# CONFIG_NET_POLL_CONTROLLER is not set 569# CONFIG_NET_POLL_CONTROLLER is not set
@@ -540,7 +582,6 @@ CONFIG_INPUT=y
540# 582#
541# CONFIG_INPUT_MOUSEDEV is not set 583# CONFIG_INPUT_MOUSEDEV is not set
542# CONFIG_INPUT_JOYDEV is not set 584# CONFIG_INPUT_JOYDEV is not set
543# CONFIG_INPUT_TSDEV is not set
544# CONFIG_INPUT_EVDEV is not set 585# CONFIG_INPUT_EVDEV is not set
545# CONFIG_INPUT_EVBUG is not set 586# CONFIG_INPUT_EVBUG is not set
546 587
@@ -564,7 +605,9 @@ CONFIG_INPUT=y
564# Character devices 605# Character devices
565# 606#
566# CONFIG_VT is not set 607# CONFIG_VT is not set
608CONFIG_DEVKMEM=y
567# CONFIG_SERIAL_NONSTANDARD is not set 609# CONFIG_SERIAL_NONSTANDARD is not set
610# CONFIG_NOZOMI is not set
568 611
569# 612#
570# Serial drivers 613# Serial drivers
@@ -584,82 +627,77 @@ CONFIG_UNIX98_PTYS=y
584CONFIG_LEGACY_PTYS=y 627CONFIG_LEGACY_PTYS=y
585CONFIG_LEGACY_PTY_COUNT=256 628CONFIG_LEGACY_PTY_COUNT=256
586# CONFIG_IPMI_HANDLER is not set 629# CONFIG_IPMI_HANDLER is not set
587# CONFIG_WATCHDOG is not set
588# CONFIG_HW_RANDOM is not set 630# CONFIG_HW_RANDOM is not set
589# CONFIG_R3964 is not set 631# CONFIG_R3964 is not set
590# CONFIG_APPLICOM is not set 632# CONFIG_APPLICOM is not set
591# CONFIG_DRM is not set
592# CONFIG_RAW_DRIVER is not set 633# CONFIG_RAW_DRIVER is not set
593# CONFIG_TCG_TPM is not set 634# CONFIG_TCG_TPM is not set
594CONFIG_DEVPORT=y 635CONFIG_DEVPORT=y
595# CONFIG_I2C is not set 636# CONFIG_I2C is not set
596
597#
598# SPI support
599#
600# CONFIG_SPI is not set 637# CONFIG_SPI is not set
601# CONFIG_SPI_MASTER is not set
602# CONFIG_W1 is not set 638# CONFIG_W1 is not set
603# CONFIG_POWER_SUPPLY is not set 639# CONFIG_POWER_SUPPLY is not set
604# CONFIG_HWMON is not set 640# CONFIG_HWMON is not set
641# CONFIG_THERMAL is not set
642# CONFIG_THERMAL_HWMON is not set
643# CONFIG_WATCHDOG is not set
644
645#
646# Sonics Silicon Backplane
647#
648CONFIG_SSB_POSSIBLE=y
649# CONFIG_SSB is not set
605 650
606# 651#
607# Multifunction device drivers 652# Multifunction device drivers
608# 653#
654# CONFIG_MFD_CORE is not set
609# CONFIG_MFD_SM501 is not set 655# CONFIG_MFD_SM501 is not set
656# CONFIG_HTC_PASIC3 is not set
657# CONFIG_MFD_TMIO is not set
658# CONFIG_MFD_WM8400 is not set
610 659
611# 660#
612# Multimedia devices 661# Multimedia devices
613# 662#
663
664#
665# Multimedia core support
666#
614# CONFIG_VIDEO_DEV is not set 667# CONFIG_VIDEO_DEV is not set
615# CONFIG_DVB_CORE is not set 668# CONFIG_DVB_CORE is not set
616# CONFIG_DAB is not set 669# CONFIG_VIDEO_MEDIA is not set
617 670
618# 671#
619# Graphics support 672# Multimedia drivers
620# 673#
621# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 674# CONFIG_DAB is not set
622 675
623# 676#
624# Display device support 677# Graphics support
625# 678#
626# CONFIG_DISPLAY_SUPPORT is not set 679# CONFIG_DRM is not set
627# CONFIG_VGASTATE is not set 680# CONFIG_VGASTATE is not set
628# CONFIG_VIDEO_OUTPUT_CONTROL is not set 681# CONFIG_VIDEO_OUTPUT_CONTROL is not set
629# CONFIG_FB is not set 682# CONFIG_FB is not set
683# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
630 684
631# 685#
632# Sound 686# Display device support
633# 687#
688# CONFIG_DISPLAY_SUPPORT is not set
634# CONFIG_SOUND is not set 689# CONFIG_SOUND is not set
635# CONFIG_HID_SUPPORT is not set 690# CONFIG_HID_SUPPORT is not set
636# CONFIG_USB_SUPPORT is not set 691# CONFIG_USB_SUPPORT is not set
637# CONFIG_MMC is not set 692# CONFIG_MMC is not set
693# CONFIG_MEMSTICK is not set
638# CONFIG_NEW_LEDS is not set 694# CONFIG_NEW_LEDS is not set
695# CONFIG_ACCESSIBILITY is not set
639# CONFIG_INFINIBAND is not set 696# CONFIG_INFINIBAND is not set
640
641#
642# Real Time Clock
643#
644# CONFIG_RTC_CLASS is not set 697# CONFIG_RTC_CLASS is not set
645 698# CONFIG_DMADEVICES is not set
646#
647# DMA Engine support
648#
649# CONFIG_DMA_ENGINE is not set
650
651#
652# DMA Clients
653#
654
655#
656# DMA Devices
657#
658
659#
660# Userspace I/O
661#
662# CONFIG_UIO is not set 699# CONFIG_UIO is not set
700# CONFIG_STAGING is not set
663 701
664# 702#
665# File systems 703# File systems
@@ -668,18 +706,16 @@ CONFIG_EXT2_FS=y
668# CONFIG_EXT2_FS_XATTR is not set 706# CONFIG_EXT2_FS_XATTR is not set
669# CONFIG_EXT2_FS_XIP is not set 707# CONFIG_EXT2_FS_XIP is not set
670# CONFIG_EXT3_FS is not set 708# CONFIG_EXT3_FS is not set
671# CONFIG_EXT4DEV_FS is not set 709# CONFIG_EXT4_FS is not set
672# CONFIG_REISERFS_FS is not set 710# CONFIG_REISERFS_FS is not set
673# CONFIG_JFS_FS is not set 711# CONFIG_JFS_FS is not set
674# CONFIG_FS_POSIX_ACL is not set 712# CONFIG_FS_POSIX_ACL is not set
713CONFIG_FILE_LOCKING=y
675# CONFIG_XFS_FS is not set 714# CONFIG_XFS_FS is not set
676# CONFIG_GFS2_FS is not set
677# CONFIG_OCFS2_FS is not set 715# CONFIG_OCFS2_FS is not set
678# CONFIG_MINIX_FS is not set 716# CONFIG_DNOTIFY is not set
679CONFIG_ROMFS_FS=y
680# CONFIG_INOTIFY is not set 717# CONFIG_INOTIFY is not set
681# CONFIG_QUOTA is not set 718# CONFIG_QUOTA is not set
682# CONFIG_DNOTIFY is not set
683# CONFIG_AUTOFS_FS is not set 719# CONFIG_AUTOFS_FS is not set
684# CONFIG_AUTOFS4_FS is not set 720# CONFIG_AUTOFS4_FS is not set
685# CONFIG_FUSE_FS is not set 721# CONFIG_FUSE_FS is not set
@@ -703,12 +739,12 @@ CONFIG_ROMFS_FS=y
703CONFIG_PROC_FS=y 739CONFIG_PROC_FS=y
704# CONFIG_PROC_KCORE is not set 740# CONFIG_PROC_KCORE is not set
705CONFIG_PROC_SYSCTL=y 741CONFIG_PROC_SYSCTL=y
742CONFIG_PROC_PAGE_MONITOR=y
706CONFIG_SYSFS=y 743CONFIG_SYSFS=y
707CONFIG_TMPFS=y 744CONFIG_TMPFS=y
708# CONFIG_TMPFS_POSIX_ACL is not set 745# CONFIG_TMPFS_POSIX_ACL is not set
709# CONFIG_HUGETLBFS is not set 746# CONFIG_HUGETLBFS is not set
710# CONFIG_HUGETLB_PAGE is not set 747# CONFIG_HUGETLB_PAGE is not set
711CONFIG_RAMFS=y
712# CONFIG_CONFIGFS_FS is not set 748# CONFIG_CONFIGFS_FS is not set
713 749
714# 750#
@@ -724,14 +760,14 @@ CONFIG_RAMFS=y
724# CONFIG_JFFS2_FS is not set 760# CONFIG_JFFS2_FS is not set
725CONFIG_CRAMFS=y 761CONFIG_CRAMFS=y
726# CONFIG_VXFS_FS is not set 762# CONFIG_VXFS_FS is not set
763# CONFIG_MINIX_FS is not set
764# CONFIG_OMFS_FS is not set
727# CONFIG_HPFS_FS is not set 765# CONFIG_HPFS_FS is not set
728# CONFIG_QNX4FS_FS is not set 766# CONFIG_QNX4FS_FS is not set
767CONFIG_ROMFS_FS=y
729# CONFIG_SYSV_FS is not set 768# CONFIG_SYSV_FS is not set
730# CONFIG_UFS_FS is not set 769# CONFIG_UFS_FS is not set
731 770CONFIG_NETWORK_FILESYSTEMS=y
732#
733# Network File Systems
734#
735# CONFIG_NFS_FS is not set 771# CONFIG_NFS_FS is not set
736# CONFIG_NFSD is not set 772# CONFIG_NFSD is not set
737# CONFIG_SMB_FS is not set 773# CONFIG_SMB_FS is not set
@@ -745,34 +781,30 @@ CONFIG_CRAMFS=y
745# 781#
746# CONFIG_PARTITION_ADVANCED is not set 782# CONFIG_PARTITION_ADVANCED is not set
747CONFIG_MSDOS_PARTITION=y 783CONFIG_MSDOS_PARTITION=y
748
749#
750# Native Language Support
751#
752# CONFIG_NLS is not set 784# CONFIG_NLS is not set
753
754#
755# Distributed Lock Manager
756#
757# CONFIG_DLM is not set 785# CONFIG_DLM is not set
758 786
759# 787#
760# Profiling support
761#
762# CONFIG_PROFILING is not set
763
764#
765# Kernel hacking 788# Kernel hacking
766# 789#
767CONFIG_TRACE_IRQFLAGS_SUPPORT=y 790CONFIG_TRACE_IRQFLAGS_SUPPORT=y
768# CONFIG_PRINTK_TIME is not set 791# CONFIG_PRINTK_TIME is not set
792CONFIG_ENABLE_WARN_DEPRECATED=y
769CONFIG_ENABLE_MUST_CHECK=y 793CONFIG_ENABLE_MUST_CHECK=y
794CONFIG_FRAME_WARN=1024
770# CONFIG_MAGIC_SYSRQ is not set 795# CONFIG_MAGIC_SYSRQ is not set
771# CONFIG_UNUSED_SYMBOLS is not set 796# CONFIG_UNUSED_SYMBOLS is not set
772# CONFIG_DEBUG_FS is not set 797# CONFIG_DEBUG_FS is not set
773# CONFIG_HEADERS_CHECK is not set 798# CONFIG_HEADERS_CHECK is not set
774# CONFIG_DEBUG_KERNEL is not set 799# CONFIG_DEBUG_KERNEL is not set
775# CONFIG_DEBUG_BUGVERBOSE is not set 800# CONFIG_DEBUG_BUGVERBOSE is not set
801# CONFIG_DEBUG_MEMORY_INIT is not set
802# CONFIG_RCU_CPU_STALL_DETECTOR is not set
803# CONFIG_LATENCYTOP is not set
804CONFIG_NOP_TRACER=y
805CONFIG_HAVE_FTRACE=y
806# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
807# CONFIG_SAMPLES is not set
776# CONFIG_SH_STANDARD_BIOS is not set 808# CONFIG_SH_STANDARD_BIOS is not set
777# CONFIG_EARLY_SCIF_CONSOLE is not set 809# CONFIG_EARLY_SCIF_CONSOLE is not set
778# CONFIG_SH_KGDB is not set 810# CONFIG_SH_KGDB is not set
@@ -782,6 +814,8 @@ CONFIG_ENABLE_MUST_CHECK=y
782# 814#
783# CONFIG_KEYS is not set 815# CONFIG_KEYS is not set
784# CONFIG_SECURITY is not set 816# CONFIG_SECURITY is not set
817# CONFIG_SECURITYFS is not set
818# CONFIG_SECURITY_FILE_CAPABILITIES is not set
785# CONFIG_CRYPTO is not set 819# CONFIG_CRYPTO is not set
786 820
787# 821#
@@ -790,6 +824,7 @@ CONFIG_ENABLE_MUST_CHECK=y
790CONFIG_BITREVERSE=y 824CONFIG_BITREVERSE=y
791# CONFIG_CRC_CCITT is not set 825# CONFIG_CRC_CCITT is not set
792# CONFIG_CRC16 is not set 826# CONFIG_CRC16 is not set
827# CONFIG_CRC_T10DIF is not set
793# CONFIG_CRC_ITU_T is not set 828# CONFIG_CRC_ITU_T is not set
794CONFIG_CRC32=y 829CONFIG_CRC32=y
795# CONFIG_CRC7 is not set 830# CONFIG_CRC7 is not set
diff --git a/arch/sh/configs/systemh_defconfig b/arch/sh/configs/systemh_defconfig
index af921b5a9d46..1711f0f70d72 100644
--- a/arch/sh/configs/systemh_defconfig
+++ b/arch/sh/configs/systemh_defconfig
@@ -1,36 +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.18 3# Linux kernel version: 2.6.27
4# Tue Oct 3 12:57:29 2006 4# Wed Oct 22 19:56:48 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
11CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_ARCH_HAS_ILOG2_U32 is not set
23# CONFIG_ARCH_HAS_ILOG2_U64 is not set
24CONFIG_ARCH_NO_VIRT_TO_BUS=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 26
15# 27#
16# Code maturity level options 28# General setup
17# 29#
18CONFIG_EXPERIMENTAL=y 30CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y 31CONFIG_BROKEN_ON_SMP=y
20CONFIG_LOCK_KERNEL=y 32CONFIG_LOCK_KERNEL=y
21CONFIG_INIT_ENV_ARG_LIMIT=32 33CONFIG_INIT_ENV_ARG_LIMIT=32
22
23#
24# General setup
25#
26CONFIG_LOCALVERSION="" 34CONFIG_LOCALVERSION=""
27CONFIG_LOCALVERSION_AUTO=y 35CONFIG_LOCALVERSION_AUTO=y
28CONFIG_SWAP=y 36CONFIG_SWAP=y
29# CONFIG_SYSVIPC is not set 37# CONFIG_SYSVIPC is not set
30# CONFIG_BSD_PROCESS_ACCT is not set 38# CONFIG_BSD_PROCESS_ACCT is not set
31# CONFIG_UTS_NS is not set
32# CONFIG_IKCONFIG is not set 39# CONFIG_IKCONFIG is not set
40CONFIG_LOG_BUF_SHIFT=14
41# CONFIG_CGROUPS is not set
42# CONFIG_GROUP_SCHED is not set
43CONFIG_SYSFS_DEPRECATED=y
44CONFIG_SYSFS_DEPRECATED_V2=y
33# CONFIG_RELAY is not set 45# CONFIG_RELAY is not set
46# CONFIG_NAMESPACES is not set
47CONFIG_BLK_DEV_INITRD=y
34CONFIG_INITRAMFS_SOURCE="" 48CONFIG_INITRAMFS_SOURCE=""
35# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 49# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
36CONFIG_SYSCTL=y 50CONFIG_SYSCTL=y
@@ -43,34 +57,48 @@ CONFIG_KALLSYMS=y
43CONFIG_PRINTK=y 57CONFIG_PRINTK=y
44CONFIG_BUG=y 58CONFIG_BUG=y
45CONFIG_ELF_CORE=y 59CONFIG_ELF_CORE=y
60CONFIG_COMPAT_BRK=y
46CONFIG_BASE_FULL=y 61CONFIG_BASE_FULL=y
47CONFIG_FUTEX=y 62CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
48CONFIG_EPOLL=y 64CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y
67CONFIG_EVENTFD=y
49CONFIG_SHMEM=y 68CONFIG_SHMEM=y
50CONFIG_SLAB=y 69CONFIG_AIO=y
51CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y
73# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y
78# CONFIG_KPROBES is not set
79CONFIG_HAVE_IOREMAP_PROT=y
80CONFIG_HAVE_KPROBES=y
81CONFIG_HAVE_KRETPROBES=y
82CONFIG_HAVE_ARCH_TRACEHOOK=y
83CONFIG_HAVE_CLK=y
84CONFIG_HAVE_GENERIC_DMA_COHERENT=y
85CONFIG_SLABINFO=y
52CONFIG_RT_MUTEXES=y 86CONFIG_RT_MUTEXES=y
53# CONFIG_TINY_SHMEM is not set 87# CONFIG_TINY_SHMEM is not set
54CONFIG_BASE_SMALL=0 88CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
56
57#
58# Loadable module support
59#
60CONFIG_MODULES=y 89CONFIG_MODULES=y
90# CONFIG_MODULE_FORCE_LOAD is not set
61CONFIG_MODULE_UNLOAD=y 91CONFIG_MODULE_UNLOAD=y
62# CONFIG_MODULE_FORCE_UNLOAD is not set 92# CONFIG_MODULE_FORCE_UNLOAD is not set
63# CONFIG_MODVERSIONS is not set 93# CONFIG_MODVERSIONS is not set
64# CONFIG_MODULE_SRCVERSION_ALL is not set 94# CONFIG_MODULE_SRCVERSION_ALL is not set
65# CONFIG_KMOD is not set 95CONFIG_KMOD=y
66
67#
68# Block layer
69#
70CONFIG_BLOCK=y 96CONFIG_BLOCK=y
71# CONFIG_LBD is not set 97# CONFIG_LBD is not set
72# CONFIG_BLK_DEV_IO_TRACE is not set 98# CONFIG_BLK_DEV_IO_TRACE is not set
73# CONFIG_LSF is not set 99# CONFIG_LSF is not set
100# CONFIG_BLK_DEV_BSG is not set
101# CONFIG_BLK_DEV_INTEGRITY is not set
74 102
75# 103#
76# IO Schedulers 104# IO Schedulers
@@ -84,59 +112,27 @@ CONFIG_DEFAULT_AS=y
84# CONFIG_DEFAULT_CFQ is not set 112# CONFIG_DEFAULT_CFQ is not set
85# CONFIG_DEFAULT_NOOP is not set 113# CONFIG_DEFAULT_NOOP is not set
86CONFIG_DEFAULT_IOSCHED="anticipatory" 114CONFIG_DEFAULT_IOSCHED="anticipatory"
115CONFIG_CLASSIC_RCU=y
116# CONFIG_FREEZER is not set
87 117
88# 118#
89# System type 119# System type
90# 120#
91# CONFIG_SH_SOLUTION_ENGINE is not set
92# CONFIG_SH_7751_SOLUTION_ENGINE is not set
93# CONFIG_SH_7300_SOLUTION_ENGINE is not set
94# CONFIG_SH_7343_SOLUTION_ENGINE is not set
95# CONFIG_SH_73180_SOLUTION_ENGINE is not set
96CONFIG_SH_7751_SYSTEMH=y
97# CONFIG_SH_HP6XX is not set
98# CONFIG_SH_EC3104 is not set
99# CONFIG_SH_SATURN is not set
100# CONFIG_SH_DREAMCAST is not set
101# CONFIG_SH_BIGSUR is not set
102# CONFIG_SH_MPC1211 is not set
103# CONFIG_SH_SH03 is not set
104# CONFIG_SH_SECUREEDGE5410 is not set
105# CONFIG_SH_HS7751RVOIP is not set
106# CONFIG_SH_7710VOIPGW is not set
107# CONFIG_SH_RTS7751R2D is not set
108# CONFIG_SH_R7780RP is not set
109# CONFIG_SH_EDOSK7705 is not set
110# CONFIG_SH_SH4202_MICRODEV is not set
111# CONFIG_SH_LANDISK is not set
112# CONFIG_SH_TITAN is not set
113# CONFIG_SH_SHMIN is not set
114# CONFIG_SH_UNKNOWN is not set
115
116#
117# Processor selection
118#
119CONFIG_CPU_SH4=y 121CONFIG_CPU_SH4=y
120 122# CONFIG_CPU_SUBTYPE_SH7619 is not set
121# 123# CONFIG_CPU_SUBTYPE_SH7203 is not set
122# SH-2 Processor Support 124# CONFIG_CPU_SUBTYPE_SH7206 is not set
123# 125# CONFIG_CPU_SUBTYPE_SH7263 is not set
124# CONFIG_CPU_SUBTYPE_SH7604 is not set 126# CONFIG_CPU_SUBTYPE_MXG is not set
125
126#
127# SH-3 Processor Support
128#
129# CONFIG_CPU_SUBTYPE_SH7300 is not set
130# CONFIG_CPU_SUBTYPE_SH7705 is not set 127# CONFIG_CPU_SUBTYPE_SH7705 is not set
131# CONFIG_CPU_SUBTYPE_SH7706 is not set 128# CONFIG_CPU_SUBTYPE_SH7706 is not set
132# CONFIG_CPU_SUBTYPE_SH7707 is not set 129# CONFIG_CPU_SUBTYPE_SH7707 is not set
133# CONFIG_CPU_SUBTYPE_SH7708 is not set 130# CONFIG_CPU_SUBTYPE_SH7708 is not set
134# CONFIG_CPU_SUBTYPE_SH7709 is not set 131# CONFIG_CPU_SUBTYPE_SH7709 is not set
135# CONFIG_CPU_SUBTYPE_SH7710 is not set 132# CONFIG_CPU_SUBTYPE_SH7710 is not set
136 133# CONFIG_CPU_SUBTYPE_SH7712 is not set
137# 134# CONFIG_CPU_SUBTYPE_SH7720 is not set
138# SH-4 Processor Support 135# CONFIG_CPU_SUBTYPE_SH7721 is not set
139#
140# CONFIG_CPU_SUBTYPE_SH7750 is not set 136# CONFIG_CPU_SUBTYPE_SH7750 is not set
141# CONFIG_CPU_SUBTYPE_SH7091 is not set 137# CONFIG_CPU_SUBTYPE_SH7091 is not set
142# CONFIG_CPU_SUBTYPE_SH7750R is not set 138# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -145,65 +141,93 @@ CONFIG_CPU_SH4=y
145CONFIG_CPU_SUBTYPE_SH7751R=y 141CONFIG_CPU_SUBTYPE_SH7751R=y
146# CONFIG_CPU_SUBTYPE_SH7760 is not set 142# CONFIG_CPU_SUBTYPE_SH7760 is not set
147# CONFIG_CPU_SUBTYPE_SH4_202 is not set 143# CONFIG_CPU_SUBTYPE_SH4_202 is not set
148 144# CONFIG_CPU_SUBTYPE_SH7723 is not set
149# 145# CONFIG_CPU_SUBTYPE_SH7763 is not set
150# ST40 Processor Support
151#
152# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
153# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
154
155#
156# SH-4A Processor Support
157#
158# CONFIG_CPU_SUBTYPE_SH7770 is not set 146# CONFIG_CPU_SUBTYPE_SH7770 is not set
159# CONFIG_CPU_SUBTYPE_SH7780 is not set 147# CONFIG_CPU_SUBTYPE_SH7780 is not set
160 148# CONFIG_CPU_SUBTYPE_SH7785 is not set
161# 149# CONFIG_CPU_SUBTYPE_SHX3 is not set
162# SH4AL-DSP Processor Support
163#
164# CONFIG_CPU_SUBTYPE_SH73180 is not set
165# CONFIG_CPU_SUBTYPE_SH7343 is not set 150# CONFIG_CPU_SUBTYPE_SH7343 is not set
151# CONFIG_CPU_SUBTYPE_SH7722 is not set
152# CONFIG_CPU_SUBTYPE_SH7366 is not set
153# CONFIG_CPU_SUBTYPE_SH5_101 is not set
154# CONFIG_CPU_SUBTYPE_SH5_103 is not set
166 155
167# 156#
168# Memory management options 157# Memory management options
169# 158#
159CONFIG_QUICKLIST=y
170CONFIG_MMU=y 160CONFIG_MMU=y
171CONFIG_PAGE_OFFSET=0x80000000 161CONFIG_PAGE_OFFSET=0x80000000
172CONFIG_MEMORY_START=0x0c000000 162CONFIG_MEMORY_START=0x0c000000
173CONFIG_MEMORY_SIZE=0x00400000 163CONFIG_MEMORY_SIZE=0x00400000
164CONFIG_29BIT=y
174CONFIG_VSYSCALL=y 165CONFIG_VSYSCALL=y
166CONFIG_ARCH_FLATMEM_ENABLE=y
167CONFIG_ARCH_SPARSEMEM_ENABLE=y
168CONFIG_ARCH_SPARSEMEM_DEFAULT=y
169CONFIG_MAX_ACTIVE_REGIONS=1
170CONFIG_ARCH_POPULATES_NODE_MAP=y
171CONFIG_ARCH_SELECT_MEMORY_MODEL=y
172CONFIG_PAGE_SIZE_4KB=y
173# CONFIG_PAGE_SIZE_8KB is not set
174# CONFIG_PAGE_SIZE_16KB is not set
175# CONFIG_PAGE_SIZE_64KB is not set
176CONFIG_ENTRY_OFFSET=0x00001000
175CONFIG_SELECT_MEMORY_MODEL=y 177CONFIG_SELECT_MEMORY_MODEL=y
176CONFIG_FLATMEM_MANUAL=y 178CONFIG_FLATMEM_MANUAL=y
177# CONFIG_DISCONTIGMEM_MANUAL is not set 179# CONFIG_DISCONTIGMEM_MANUAL is not set
178# CONFIG_SPARSEMEM_MANUAL is not set 180# CONFIG_SPARSEMEM_MANUAL is not set
179CONFIG_FLATMEM=y 181CONFIG_FLATMEM=y
180CONFIG_FLAT_NODE_MEM_MAP=y 182CONFIG_FLAT_NODE_MEM_MAP=y
181# CONFIG_SPARSEMEM_STATIC is not set 183CONFIG_SPARSEMEM_STATIC=y
184CONFIG_PAGEFLAGS_EXTENDED=y
182CONFIG_SPLIT_PTLOCK_CPUS=4 185CONFIG_SPLIT_PTLOCK_CPUS=4
183# CONFIG_RESOURCES_64BIT is not set 186# CONFIG_RESOURCES_64BIT is not set
187# CONFIG_PHYS_ADDR_T_64BIT is not set
188CONFIG_ZONE_DMA_FLAG=0
189CONFIG_NR_QUICK=2
190CONFIG_UNEVICTABLE_LRU=y
184 191
185# 192#
186# Cache configuration 193# Cache configuration
187# 194#
188# CONFIG_SH_DIRECT_MAPPED is not set 195# CONFIG_SH_DIRECT_MAPPED is not set
189# CONFIG_SH_WRITETHROUGH is not set 196CONFIG_CACHE_WRITEBACK=y
190# CONFIG_SH_OCRAM is not set 197# CONFIG_CACHE_WRITETHROUGH is not set
198# CONFIG_CACHE_OFF is not set
191 199
192# 200#
193# Processor features 201# Processor features
194# 202#
195CONFIG_CPU_LITTLE_ENDIAN=y 203CONFIG_CPU_LITTLE_ENDIAN=y
204# CONFIG_CPU_BIG_ENDIAN is not set
196CONFIG_SH_FPU=y 205CONFIG_SH_FPU=y
197# CONFIG_SH_DSP is not set
198# CONFIG_SH_STORE_QUEUES is not set 206# CONFIG_SH_STORE_QUEUES is not set
199CONFIG_CPU_HAS_INTEVT=y 207CONFIG_CPU_HAS_INTEVT=y
200CONFIG_CPU_HAS_SR_RB=y 208CONFIG_CPU_HAS_SR_RB=y
209CONFIG_CPU_HAS_PTEA=y
210CONFIG_CPU_HAS_FPU=y
201 211
202# 212#
203# Timer support 213# Board support
214#
215CONFIG_SH_7751_SYSTEMH=y
216# CONFIG_SH_SECUREEDGE5410 is not set
217# CONFIG_SH_RTS7751R2D is not set
218# CONFIG_SH_LANDISK is not set
219# CONFIG_SH_TITAN is not set
220# CONFIG_SH_LBOX_RE2 is not set
221
222#
223# Timer and clock configuration
204# 224#
205CONFIG_SH_TMU=y 225CONFIG_SH_TMU=y
226CONFIG_SH_TIMER_IRQ=16
206CONFIG_SH_PCLK_FREQ=60000000 227CONFIG_SH_PCLK_FREQ=60000000
228# CONFIG_NO_HZ is not set
229# CONFIG_HIGH_RES_TIMERS is not set
230CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
207 231
208# 232#
209# CPU Frequency scaling 233# CPU Frequency scaling
@@ -218,21 +242,31 @@ CONFIG_SH_PCLK_FREQ=60000000
218# 242#
219# Companion Chips 243# Companion Chips
220# 244#
221# CONFIG_HD6446X_SERIES is not set 245
246#
247# Additional SuperH Device Drivers
248#
249# CONFIG_HEARTBEAT is not set
250# CONFIG_PUSH_SWITCH is not set
222 251
223# 252#
224# Kernel features 253# Kernel features
225# 254#
226# CONFIG_HZ_100 is not set 255# CONFIG_HZ_100 is not set
227CONFIG_HZ_250=y 256CONFIG_HZ_250=y
257# CONFIG_HZ_300 is not set
228# CONFIG_HZ_1000 is not set 258# CONFIG_HZ_1000 is not set
229CONFIG_HZ=250 259CONFIG_HZ=250
260# CONFIG_SCHED_HRTICK is not set
230# CONFIG_KEXEC is not set 261# CONFIG_KEXEC is not set
231# CONFIG_SMP is not set 262# CONFIG_CRASH_DUMP is not set
263# CONFIG_SECCOMP is not set
232# CONFIG_PREEMPT_NONE is not set 264# CONFIG_PREEMPT_NONE is not set
233# CONFIG_PREEMPT_VOLUNTARY is not set 265# CONFIG_PREEMPT_VOLUNTARY is not set
234CONFIG_PREEMPT=y 266CONFIG_PREEMPT=y
235CONFIG_PREEMPT_BKL=y 267# CONFIG_PREEMPT_RCU is not set
268CONFIG_GUSA=y
269# CONFIG_GUSA_RB is not set
236 270
237# 271#
238# Boot options 272# Boot options
@@ -245,31 +279,15 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
245# 279#
246# Bus options 280# Bus options
247# 281#
248# CONFIG_PCI is not set 282# CONFIG_ARCH_SUPPORTS_MSI is not set
249
250#
251# PCCARD (PCMCIA/CardBus) support
252#
253
254#
255# PCI Hotplug Support
256#
257 283
258# 284#
259# Executable file formats 285# Executable file formats
260# 286#
261CONFIG_BINFMT_ELF=y 287CONFIG_BINFMT_ELF=y
262# CONFIG_BINFMT_FLAT is not set 288# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
289# CONFIG_HAVE_AOUT is not set
263# CONFIG_BINFMT_MISC is not set 290# CONFIG_BINFMT_MISC is not set
264
265#
266# Power management options (EXPERIMENTAL)
267#
268# CONFIG_PM is not set
269
270#
271# Networking
272#
273# CONFIG_NET is not set 291# CONFIG_NET is not set
274 292
275# 293#
@@ -282,40 +300,21 @@ CONFIG_BINFMT_ELF=y
282# CONFIG_STANDALONE is not set 300# CONFIG_STANDALONE is not set
283CONFIG_PREVENT_FIRMWARE_BUILD=y 301CONFIG_PREVENT_FIRMWARE_BUILD=y
284# CONFIG_SYS_HYPERVISOR is not set 302# CONFIG_SYS_HYPERVISOR is not set
285
286#
287# Connector - unified userspace <-> kernelspace linker
288#
289
290#
291# Memory Technology Devices (MTD)
292#
293# CONFIG_MTD is not set 303# CONFIG_MTD is not set
294
295#
296# Parallel port support
297#
298# CONFIG_PARPORT is not set 304# CONFIG_PARPORT is not set
299 305CONFIG_BLK_DEV=y
300#
301# Plug and Play support
302#
303
304#
305# Block devices
306#
307# CONFIG_BLK_DEV_COW_COMMON is not set 306# CONFIG_BLK_DEV_COW_COMMON is not set
308# CONFIG_BLK_DEV_LOOP is not set 307# CONFIG_BLK_DEV_LOOP is not set
309CONFIG_BLK_DEV_RAM=y 308CONFIG_BLK_DEV_RAM=y
310CONFIG_BLK_DEV_RAM_COUNT=16 309CONFIG_BLK_DEV_RAM_COUNT=16
311CONFIG_BLK_DEV_RAM_SIZE=1024 310CONFIG_BLK_DEV_RAM_SIZE=1024
312CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 311# CONFIG_BLK_DEV_XIP is not set
313CONFIG_BLK_DEV_INITRD=y
314# CONFIG_CDROM_PKTCDVD is not set 312# CONFIG_CDROM_PKTCDVD is not set
315 313# CONFIG_BLK_DEV_HD is not set
316# 314CONFIG_MISC_DEVICES=y
317# ATA/ATAPI/MFM/RLL support 315# CONFIG_EEPROM_93CX6 is not set
318# 316# CONFIG_ENCLOSURE_SERVICES is not set
317CONFIG_HAVE_IDE=y
319# CONFIG_IDE is not set 318# CONFIG_IDE is not set
320 319
321# 320#
@@ -323,38 +322,10 @@ CONFIG_BLK_DEV_INITRD=y
323# 322#
324# CONFIG_RAID_ATTRS is not set 323# CONFIG_RAID_ATTRS is not set
325# CONFIG_SCSI is not set 324# CONFIG_SCSI is not set
325# CONFIG_SCSI_DMA is not set
326# CONFIG_SCSI_NETLINK is not set 326# CONFIG_SCSI_NETLINK is not set
327
328#
329# Serial ATA (prod) and Parallel ATA (experimental) drivers
330#
331# CONFIG_ATA is not set 327# CONFIG_ATA is not set
332
333#
334# Multi-device support (RAID and LVM)
335#
336# CONFIG_MD is not set 328# CONFIG_MD is not set
337
338#
339# Fusion MPT device support
340#
341# CONFIG_FUSION is not set
342
343#
344# IEEE 1394 (FireWire) support
345#
346
347#
348# I2O device support
349#
350
351#
352# ISDN subsystem
353#
354
355#
356# Telephony Support
357#
358# CONFIG_PHONE is not set 329# CONFIG_PHONE is not set
359 330
360# 331#
@@ -376,6 +347,7 @@ CONFIG_SERIO=y
376# Character devices 347# Character devices
377# 348#
378# CONFIG_VT is not set 349# CONFIG_VT is not set
350CONFIG_DEVKMEM=y
379# CONFIG_SERIAL_NONSTANDARD is not set 351# CONFIG_SERIAL_NONSTANDARD is not set
380 352
381# 353#
@@ -390,158 +362,115 @@ CONFIG_SERIO=y
390CONFIG_UNIX98_PTYS=y 362CONFIG_UNIX98_PTYS=y
391CONFIG_LEGACY_PTYS=y 363CONFIG_LEGACY_PTYS=y
392CONFIG_LEGACY_PTY_COUNT=256 364CONFIG_LEGACY_PTY_COUNT=256
393
394#
395# IPMI
396#
397# CONFIG_IPMI_HANDLER is not set 365# CONFIG_IPMI_HANDLER is not set
398
399#
400# Watchdog Cards
401#
402# CONFIG_WATCHDOG is not set
403CONFIG_HW_RANDOM=y 366CONFIG_HW_RANDOM=y
404# CONFIG_GEN_RTC is not set
405# CONFIG_DTLK is not set
406# CONFIG_R3964 is not set 367# CONFIG_R3964 is not set
407
408#
409# Ftape, the floppy tape device driver
410#
411# CONFIG_RAW_DRIVER is not set 368# CONFIG_RAW_DRIVER is not set
412
413#
414# TPM devices
415#
416# CONFIG_TCG_TPM is not set 369# CONFIG_TCG_TPM is not set
417# CONFIG_TELCLOCK is not set
418
419#
420# I2C support
421#
422# CONFIG_I2C is not set 370# CONFIG_I2C is not set
423
424#
425# SPI support
426#
427# CONFIG_SPI is not set 371# CONFIG_SPI is not set
428# CONFIG_SPI_MASTER is not set 372# CONFIG_W1 is not set
429 373# CONFIG_POWER_SUPPLY is not set
430#
431# Dallas's 1-wire bus
432#
433
434#
435# Hardware Monitoring support
436#
437CONFIG_HWMON=y 374CONFIG_HWMON=y
438# CONFIG_HWMON_VID is not set 375# CONFIG_HWMON_VID is not set
439# CONFIG_SENSORS_ABITUGURU is not set
440# CONFIG_SENSORS_F71805F is not set 376# CONFIG_SENSORS_F71805F is not set
377# CONFIG_SENSORS_F71882FG is not set
378# CONFIG_SENSORS_IT87 is not set
379# CONFIG_SENSORS_PC87360 is not set
380# CONFIG_SENSORS_PC87427 is not set
381# CONFIG_SENSORS_SMSC47M1 is not set
382# CONFIG_SENSORS_SMSC47B397 is not set
441# CONFIG_SENSORS_VT1211 is not set 383# CONFIG_SENSORS_VT1211 is not set
384# CONFIG_SENSORS_W83627HF is not set
385# CONFIG_SENSORS_W83627EHF is not set
442# CONFIG_HWMON_DEBUG_CHIP is not set 386# CONFIG_HWMON_DEBUG_CHIP is not set
387# CONFIG_THERMAL is not set
388# CONFIG_THERMAL_HWMON is not set
389# CONFIG_WATCHDOG is not set
443 390
444# 391#
445# Misc devices 392# Sonics Silicon Backplane
446# 393#
394CONFIG_SSB_POSSIBLE=y
395# CONFIG_SSB is not set
396
397#
398# Multifunction device drivers
399#
400# CONFIG_MFD_CORE is not set
401# CONFIG_MFD_SM501 is not set
402# CONFIG_HTC_PASIC3 is not set
403# CONFIG_MFD_TMIO is not set
404# CONFIG_MFD_WM8400 is not set
447 405
448# 406#
449# Multimedia devices 407# Multimedia devices
450# 408#
409
410#
411# Multimedia core support
412#
451# CONFIG_VIDEO_DEV is not set 413# CONFIG_VIDEO_DEV is not set
452CONFIG_VIDEO_V4L2=y 414# CONFIG_VIDEO_MEDIA is not set
453 415
454# 416#
455# Digital Video Broadcasting Devices 417# Multimedia drivers
456# 418#
419# CONFIG_DAB is not set
457 420
458# 421#
459# Graphics support 422# Graphics support
460# 423#
461CONFIG_FIRMWARE_EDID=y 424# CONFIG_VGASTATE is not set
425# CONFIG_VIDEO_OUTPUT_CONTROL is not set
462# CONFIG_FB is not set 426# CONFIG_FB is not set
463# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 427# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
464 428
465# 429#
466# Sound 430# Display device support
467# 431#
432# CONFIG_DISPLAY_SUPPORT is not set
468# CONFIG_SOUND is not set 433# CONFIG_SOUND is not set
469 434CONFIG_USB_SUPPORT=y
470# 435CONFIG_USB_ARCH_HAS_HCD=y
471# USB support
472#
473# CONFIG_USB_ARCH_HAS_HCD is not set
474# CONFIG_USB_ARCH_HAS_OHCI is not set 436# CONFIG_USB_ARCH_HAS_OHCI is not set
475# CONFIG_USB_ARCH_HAS_EHCI is not set 437# CONFIG_USB_ARCH_HAS_EHCI is not set
438# CONFIG_USB is not set
439# CONFIG_USB_OTG_WHITELIST is not set
440# CONFIG_USB_OTG_BLACKLIST_HUB is not set
476 441
477# 442#
478# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 443# Enable Host or Gadget support to see Inventra options
479# 444#
480 445
481# 446#
482# USB Gadget Support 447# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
483# 448#
484# CONFIG_USB_GADGET is not set 449# CONFIG_USB_GADGET is not set
485
486#
487# MMC/SD Card support
488#
489# CONFIG_MMC is not set 450# CONFIG_MMC is not set
490 451# CONFIG_MEMSTICK is not set
491#
492# LED devices
493#
494# CONFIG_NEW_LEDS is not set 452# CONFIG_NEW_LEDS is not set
495 453# CONFIG_ACCESSIBILITY is not set
496#
497# LED drivers
498#
499
500#
501# LED Triggers
502#
503
504#
505# InfiniBand support
506#
507
508#
509# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
510#
511
512#
513# Real Time Clock
514#
515# CONFIG_RTC_CLASS is not set 454# CONFIG_RTC_CLASS is not set
516 455# CONFIG_DMADEVICES is not set
517# 456# CONFIG_UIO is not set
518# DMA Engine support 457# CONFIG_STAGING is not set
519#
520# CONFIG_DMA_ENGINE is not set
521
522#
523# DMA Clients
524#
525
526#
527# DMA Devices
528#
529 458
530# 459#
531# File systems 460# File systems
532# 461#
533# CONFIG_EXT2_FS is not set 462# CONFIG_EXT2_FS is not set
534# CONFIG_EXT3_FS is not set 463# CONFIG_EXT3_FS is not set
464# CONFIG_EXT4_FS is not set
535# CONFIG_REISERFS_FS is not set 465# CONFIG_REISERFS_FS is not set
536# CONFIG_JFS_FS is not set 466# CONFIG_JFS_FS is not set
537# CONFIG_FS_POSIX_ACL is not set 467# CONFIG_FS_POSIX_ACL is not set
468CONFIG_FILE_LOCKING=y
538# CONFIG_XFS_FS is not set 469# CONFIG_XFS_FS is not set
539# CONFIG_MINIX_FS is not set 470CONFIG_DNOTIFY=y
540CONFIG_ROMFS_FS=y
541CONFIG_INOTIFY=y 471CONFIG_INOTIFY=y
542CONFIG_INOTIFY_USER=y 472CONFIG_INOTIFY_USER=y
543# CONFIG_QUOTA is not set 473# CONFIG_QUOTA is not set
544CONFIG_DNOTIFY=y
545# CONFIG_AUTOFS_FS is not set 474# CONFIG_AUTOFS_FS is not set
546# CONFIG_AUTOFS4_FS is not set 475# CONFIG_AUTOFS4_FS is not set
547# CONFIG_FUSE_FS is not set 476# CONFIG_FUSE_FS is not set
@@ -565,12 +494,12 @@ CONFIG_DNOTIFY=y
565CONFIG_PROC_FS=y 494CONFIG_PROC_FS=y
566CONFIG_PROC_KCORE=y 495CONFIG_PROC_KCORE=y
567CONFIG_PROC_SYSCTL=y 496CONFIG_PROC_SYSCTL=y
497CONFIG_PROC_PAGE_MONITOR=y
568CONFIG_SYSFS=y 498CONFIG_SYSFS=y
569CONFIG_TMPFS=y 499CONFIG_TMPFS=y
570# CONFIG_TMPFS_POSIX_ACL is not set 500# CONFIG_TMPFS_POSIX_ACL is not set
571# CONFIG_HUGETLBFS is not set 501# CONFIG_HUGETLBFS is not set
572# CONFIG_HUGETLB_PAGE is not set 502# CONFIG_HUGETLB_PAGE is not set
573CONFIG_RAMFS=y
574# CONFIG_CONFIGFS_FS is not set 503# CONFIG_CONFIGFS_FS is not set
575 504
576# 505#
@@ -585,8 +514,11 @@ CONFIG_RAMFS=y
585# CONFIG_EFS_FS is not set 514# CONFIG_EFS_FS is not set
586CONFIG_CRAMFS=y 515CONFIG_CRAMFS=y
587# CONFIG_VXFS_FS is not set 516# CONFIG_VXFS_FS is not set
517# CONFIG_MINIX_FS is not set
518# CONFIG_OMFS_FS is not set
588# CONFIG_HPFS_FS is not set 519# CONFIG_HPFS_FS is not set
589# CONFIG_QNX4FS_FS is not set 520# CONFIG_QNX4FS_FS is not set
521CONFIG_ROMFS_FS=y
590# CONFIG_SYSV_FS is not set 522# CONFIG_SYSV_FS is not set
591# CONFIG_UFS_FS is not set 523# CONFIG_UFS_FS is not set
592 524
@@ -595,49 +527,55 @@ CONFIG_CRAMFS=y
595# 527#
596# CONFIG_PARTITION_ADVANCED is not set 528# CONFIG_PARTITION_ADVANCED is not set
597CONFIG_MSDOS_PARTITION=y 529CONFIG_MSDOS_PARTITION=y
598
599#
600# Native Language Support
601#
602# CONFIG_NLS is not set 530# CONFIG_NLS is not set
603 531
604# 532#
605# Profiling support
606#
607# CONFIG_PROFILING is not set
608
609#
610# Kernel hacking 533# Kernel hacking
611# 534#
535CONFIG_TRACE_IRQFLAGS_SUPPORT=y
612# CONFIG_PRINTK_TIME is not set 536# CONFIG_PRINTK_TIME is not set
537CONFIG_ENABLE_WARN_DEPRECATED=y
613CONFIG_ENABLE_MUST_CHECK=y 538CONFIG_ENABLE_MUST_CHECK=y
539CONFIG_FRAME_WARN=1024
614# CONFIG_MAGIC_SYSRQ is not set 540# CONFIG_MAGIC_SYSRQ is not set
615# CONFIG_UNUSED_SYMBOLS is not set 541# CONFIG_UNUSED_SYMBOLS is not set
542# CONFIG_DEBUG_FS is not set
543# CONFIG_HEADERS_CHECK is not set
616# CONFIG_DEBUG_KERNEL is not set 544# CONFIG_DEBUG_KERNEL is not set
617CONFIG_LOG_BUF_SHIFT=14
618# CONFIG_DEBUG_BUGVERBOSE is not set 545# CONFIG_DEBUG_BUGVERBOSE is not set
619# CONFIG_DEBUG_FS is not set 546# CONFIG_DEBUG_MEMORY_INIT is not set
547# CONFIG_RCU_CPU_STALL_DETECTOR is not set
548# CONFIG_LATENCYTOP is not set
549CONFIG_NOP_TRACER=y
550CONFIG_HAVE_FTRACE=y
551# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
552# CONFIG_SAMPLES is not set
620# CONFIG_SH_STANDARD_BIOS is not set 553# CONFIG_SH_STANDARD_BIOS is not set
621# CONFIG_EARLY_SCIF_CONSOLE is not set 554# CONFIG_EARLY_SCIF_CONSOLE is not set
622# CONFIG_KGDB is not set 555# CONFIG_SH_KGDB is not set
623 556
624# 557#
625# Security options 558# Security options
626# 559#
627# CONFIG_KEYS is not set 560# CONFIG_KEYS is not set
628# CONFIG_SECURITY is not set 561# CONFIG_SECURITY is not set
629 562# CONFIG_SECURITYFS is not set
630# 563# CONFIG_SECURITY_FILE_CAPABILITIES is not set
631# Cryptographic options
632#
633# CONFIG_CRYPTO is not set 564# CONFIG_CRYPTO is not set
634 565
635# 566#
636# Library routines 567# Library routines
637# 568#
569CONFIG_BITREVERSE=y
638# CONFIG_CRC_CCITT is not set 570# CONFIG_CRC_CCITT is not set
639# CONFIG_CRC16 is not set 571# CONFIG_CRC16 is not set
572# CONFIG_CRC_T10DIF is not set
573# CONFIG_CRC_ITU_T is not set
640CONFIG_CRC32=y 574CONFIG_CRC32=y
575# CONFIG_CRC7 is not set
641# CONFIG_LIBCRC32C is not set 576# CONFIG_LIBCRC32C is not set
642CONFIG_ZLIB_INFLATE=y 577CONFIG_ZLIB_INFLATE=y
643CONFIG_PLIST=y 578CONFIG_PLIST=y
579CONFIG_HAS_IOMEM=y
580CONFIG_HAS_IOPORT=y
581CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defconfig
index 0686ed6fe17a..ea3c5e838fc3 100644
--- a/arch/sh/configs/titan_defconfig
+++ b/arch/sh/configs/titan_defconfig
@@ -1,41 +1,55 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-rc3 3# Linux kernel version: 2.6.27
4# Mon Oct 30 18:04:49 2006 4# Wed Oct 22 19:58:12 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
8CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 11CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 12CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
11CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 16# CONFIG_GENERIC_GPIO is not set
13# CONFIG_GENERIC_TIME is not set 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y
22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
23# CONFIG_ARCH_HAS_ILOG2_U32 is not set
24# CONFIG_ARCH_HAS_ILOG2_U64 is not set
25CONFIG_ARCH_NO_VIRT_TO_BUS=y
14CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
15 27
16# 28#
17# Code maturity level options 29# General setup
18# 30#
19CONFIG_EXPERIMENTAL=y 31CONFIG_EXPERIMENTAL=y
20CONFIG_BROKEN_ON_SMP=y 32CONFIG_BROKEN_ON_SMP=y
21CONFIG_INIT_ENV_ARG_LIMIT=32 33CONFIG_INIT_ENV_ARG_LIMIT=32
22
23#
24# General setup
25#
26CONFIG_LOCALVERSION="" 34CONFIG_LOCALVERSION=""
27# CONFIG_LOCALVERSION_AUTO is not set 35# CONFIG_LOCALVERSION_AUTO is not set
28CONFIG_SWAP=y 36CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 37CONFIG_SYSVIPC=y
30# CONFIG_IPC_NS is not set 38CONFIG_SYSVIPC_SYSCTL=y
31CONFIG_POSIX_MQUEUE=y 39CONFIG_POSIX_MQUEUE=y
32# CONFIG_BSD_PROCESS_ACCT is not set 40# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 41# CONFIG_TASKSTATS is not set
34# CONFIG_UTS_NS is not set
35# CONFIG_AUDIT is not set 42# CONFIG_AUDIT is not set
36CONFIG_IKCONFIG=y 43CONFIG_IKCONFIG=y
37CONFIG_IKCONFIG_PROC=y 44CONFIG_IKCONFIG_PROC=y
45CONFIG_LOG_BUF_SHIFT=16
46# CONFIG_CGROUPS is not set
47# CONFIG_GROUP_SCHED is not set
48CONFIG_SYSFS_DEPRECATED=y
49CONFIG_SYSFS_DEPRECATED_V2=y
38# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
51# CONFIG_NAMESPACES is not set
52CONFIG_BLK_DEV_INITRD=y
39CONFIG_INITRAMFS_SOURCE="" 53CONFIG_INITRAMFS_SOURCE=""
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 54# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
41CONFIG_SYSCTL=y 55CONFIG_SYSCTL=y
@@ -49,34 +63,48 @@ CONFIG_HOTPLUG=y
49CONFIG_PRINTK=y 63CONFIG_PRINTK=y
50CONFIG_BUG=y 64CONFIG_BUG=y
51CONFIG_ELF_CORE=y 65CONFIG_ELF_CORE=y
66CONFIG_COMPAT_BRK=y
52CONFIG_BASE_FULL=y 67CONFIG_BASE_FULL=y
53CONFIG_FUTEX=y 68CONFIG_FUTEX=y
69CONFIG_ANON_INODES=y
54CONFIG_EPOLL=y 70CONFIG_EPOLL=y
71CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y
73CONFIG_EVENTFD=y
55CONFIG_SHMEM=y 74CONFIG_SHMEM=y
56CONFIG_SLAB=y 75CONFIG_AIO=y
57CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
78CONFIG_SLAB=y
79# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set
81# CONFIG_PROFILING is not set
82# CONFIG_MARKERS is not set
83CONFIG_HAVE_OPROFILE=y
84# CONFIG_KPROBES is not set
85CONFIG_HAVE_IOREMAP_PROT=y
86CONFIG_HAVE_KPROBES=y
87CONFIG_HAVE_KRETPROBES=y
88CONFIG_HAVE_ARCH_TRACEHOOK=y
89CONFIG_HAVE_CLK=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y
58CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
59# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
60CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
61# CONFIG_SLOB is not set
62
63#
64# Loadable module support
65#
66CONFIG_MODULES=y 95CONFIG_MODULES=y
96# CONFIG_MODULE_FORCE_LOAD is not set
67CONFIG_MODULE_UNLOAD=y 97CONFIG_MODULE_UNLOAD=y
68CONFIG_MODULE_FORCE_UNLOAD=y 98CONFIG_MODULE_FORCE_UNLOAD=y
69# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
70# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
71CONFIG_KMOD=y 101CONFIG_KMOD=y
72
73#
74# Block layer
75#
76CONFIG_BLOCK=y 102CONFIG_BLOCK=y
77# CONFIG_LBD is not set 103# CONFIG_LBD is not set
78# CONFIG_BLK_DEV_IO_TRACE is not set 104# CONFIG_BLK_DEV_IO_TRACE is not set
79# CONFIG_LSF is not set 105# CONFIG_LSF is not set
106# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set
80 108
81# 109#
82# IO Schedulers 110# IO Schedulers
@@ -90,59 +118,27 @@ CONFIG_DEFAULT_AS=y
90# CONFIG_DEFAULT_CFQ is not set 118# CONFIG_DEFAULT_CFQ is not set
91# CONFIG_DEFAULT_NOOP is not set 119# CONFIG_DEFAULT_NOOP is not set
92CONFIG_DEFAULT_IOSCHED="anticipatory" 120CONFIG_DEFAULT_IOSCHED="anticipatory"
121CONFIG_CLASSIC_RCU=y
122# CONFIG_FREEZER is not set
93 123
94# 124#
95# System type 125# System type
96# 126#
97# CONFIG_SH_SOLUTION_ENGINE is not set
98# CONFIG_SH_7751_SOLUTION_ENGINE is not set
99# CONFIG_SH_7300_SOLUTION_ENGINE is not set
100# CONFIG_SH_7343_SOLUTION_ENGINE is not set
101# CONFIG_SH_73180_SOLUTION_ENGINE is not set
102# CONFIG_SH_7751_SYSTEMH is not set
103# CONFIG_SH_HP6XX is not set
104# CONFIG_SH_EC3104 is not set
105# CONFIG_SH_SATURN is not set
106# CONFIG_SH_DREAMCAST is not set
107# CONFIG_SH_BIGSUR is not set
108# CONFIG_SH_MPC1211 is not set
109# CONFIG_SH_SH03 is not set
110# CONFIG_SH_SECUREEDGE5410 is not set
111# CONFIG_SH_HS7751RVOIP is not set
112# CONFIG_SH_7710VOIPGW is not set
113# CONFIG_SH_RTS7751R2D is not set
114# CONFIG_SH_R7780RP is not set
115# CONFIG_SH_EDOSK7705 is not set
116# CONFIG_SH_SH4202_MICRODEV is not set
117# CONFIG_SH_LANDISK is not set
118CONFIG_SH_TITAN=y
119# CONFIG_SH_SHMIN is not set
120# CONFIG_SH_UNKNOWN is not set
121
122#
123# Processor selection
124#
125CONFIG_CPU_SH4=y 127CONFIG_CPU_SH4=y
126 128# CONFIG_CPU_SUBTYPE_SH7619 is not set
127# 129# CONFIG_CPU_SUBTYPE_SH7203 is not set
128# SH-2 Processor Support 130# CONFIG_CPU_SUBTYPE_SH7206 is not set
129# 131# CONFIG_CPU_SUBTYPE_SH7263 is not set
130# CONFIG_CPU_SUBTYPE_SH7604 is not set 132# CONFIG_CPU_SUBTYPE_MXG is not set
131
132#
133# SH-3 Processor Support
134#
135# CONFIG_CPU_SUBTYPE_SH7300 is not set
136# CONFIG_CPU_SUBTYPE_SH7705 is not set 133# CONFIG_CPU_SUBTYPE_SH7705 is not set
137# CONFIG_CPU_SUBTYPE_SH7706 is not set 134# CONFIG_CPU_SUBTYPE_SH7706 is not set
138# CONFIG_CPU_SUBTYPE_SH7707 is not set 135# CONFIG_CPU_SUBTYPE_SH7707 is not set
139# CONFIG_CPU_SUBTYPE_SH7708 is not set 136# CONFIG_CPU_SUBTYPE_SH7708 is not set
140# CONFIG_CPU_SUBTYPE_SH7709 is not set 137# CONFIG_CPU_SUBTYPE_SH7709 is not set
141# CONFIG_CPU_SUBTYPE_SH7710 is not set 138# CONFIG_CPU_SUBTYPE_SH7710 is not set
142 139# CONFIG_CPU_SUBTYPE_SH7712 is not set
143# 140# CONFIG_CPU_SUBTYPE_SH7720 is not set
144# SH-4 Processor Support 141# CONFIG_CPU_SUBTYPE_SH7721 is not set
145#
146# CONFIG_CPU_SUBTYPE_SH7750 is not set 142# CONFIG_CPU_SUBTYPE_SH7750 is not set
147# CONFIG_CPU_SUBTYPE_SH7091 is not set 143# CONFIG_CPU_SUBTYPE_SH7091 is not set
148# CONFIG_CPU_SUBTYPE_SH7750R is not set 144# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -151,65 +147,94 @@ CONFIG_CPU_SH4=y
151CONFIG_CPU_SUBTYPE_SH7751R=y 147CONFIG_CPU_SUBTYPE_SH7751R=y
152# CONFIG_CPU_SUBTYPE_SH7760 is not set 148# CONFIG_CPU_SUBTYPE_SH7760 is not set
153# CONFIG_CPU_SUBTYPE_SH4_202 is not set 149# CONFIG_CPU_SUBTYPE_SH4_202 is not set
154 150# CONFIG_CPU_SUBTYPE_SH7723 is not set
155# 151# CONFIG_CPU_SUBTYPE_SH7763 is not set
156# ST40 Processor Support
157#
158# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
159# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
160
161#
162# SH-4A Processor Support
163#
164# CONFIG_CPU_SUBTYPE_SH7770 is not set 152# CONFIG_CPU_SUBTYPE_SH7770 is not set
165# CONFIG_CPU_SUBTYPE_SH7780 is not set 153# CONFIG_CPU_SUBTYPE_SH7780 is not set
166 154# CONFIG_CPU_SUBTYPE_SH7785 is not set
167# 155# CONFIG_CPU_SUBTYPE_SHX3 is not set
168# SH4AL-DSP Processor Support
169#
170# CONFIG_CPU_SUBTYPE_SH73180 is not set
171# CONFIG_CPU_SUBTYPE_SH7343 is not set 156# CONFIG_CPU_SUBTYPE_SH7343 is not set
157# CONFIG_CPU_SUBTYPE_SH7722 is not set
158# CONFIG_CPU_SUBTYPE_SH7366 is not set
159# CONFIG_CPU_SUBTYPE_SH5_101 is not set
160# CONFIG_CPU_SUBTYPE_SH5_103 is not set
172 161
173# 162#
174# Memory management options 163# Memory management options
175# 164#
165CONFIG_QUICKLIST=y
176CONFIG_MMU=y 166CONFIG_MMU=y
177CONFIG_PAGE_OFFSET=0x80000000 167CONFIG_PAGE_OFFSET=0x80000000
178CONFIG_MEMORY_START=0x08030000 168CONFIG_MEMORY_START=0x08030000
179CONFIG_MEMORY_SIZE=0x7fd0000 169CONFIG_MEMORY_SIZE=0x7fd0000
170CONFIG_29BIT=y
180CONFIG_VSYSCALL=y 171CONFIG_VSYSCALL=y
172CONFIG_ARCH_FLATMEM_ENABLE=y
173CONFIG_ARCH_SPARSEMEM_ENABLE=y
174CONFIG_ARCH_SPARSEMEM_DEFAULT=y
175CONFIG_MAX_ACTIVE_REGIONS=1
176CONFIG_ARCH_POPULATES_NODE_MAP=y
177CONFIG_ARCH_SELECT_MEMORY_MODEL=y
178CONFIG_PAGE_SIZE_4KB=y
179# CONFIG_PAGE_SIZE_8KB is not set
180# CONFIG_PAGE_SIZE_16KB is not set
181# CONFIG_PAGE_SIZE_64KB is not set
182CONFIG_ENTRY_OFFSET=0x00001000
181CONFIG_SELECT_MEMORY_MODEL=y 183CONFIG_SELECT_MEMORY_MODEL=y
182CONFIG_FLATMEM_MANUAL=y 184CONFIG_FLATMEM_MANUAL=y
183# CONFIG_DISCONTIGMEM_MANUAL is not set 185# CONFIG_DISCONTIGMEM_MANUAL is not set
184# CONFIG_SPARSEMEM_MANUAL is not set 186# CONFIG_SPARSEMEM_MANUAL is not set
185CONFIG_FLATMEM=y 187CONFIG_FLATMEM=y
186CONFIG_FLAT_NODE_MEM_MAP=y 188CONFIG_FLAT_NODE_MEM_MAP=y
187# CONFIG_SPARSEMEM_STATIC is not set 189CONFIG_SPARSEMEM_STATIC=y
190CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 191CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set 192# CONFIG_RESOURCES_64BIT is not set
193# CONFIG_PHYS_ADDR_T_64BIT is not set
194CONFIG_ZONE_DMA_FLAG=0
195CONFIG_NR_QUICK=2
196CONFIG_UNEVICTABLE_LRU=y
190 197
191# 198#
192# Cache configuration 199# Cache configuration
193# 200#
194# CONFIG_SH_DIRECT_MAPPED is not set 201# CONFIG_SH_DIRECT_MAPPED is not set
195# CONFIG_SH_WRITETHROUGH is not set 202CONFIG_CACHE_WRITEBACK=y
196# CONFIG_SH_OCRAM is not set 203# CONFIG_CACHE_WRITETHROUGH is not set
204# CONFIG_CACHE_OFF is not set
197 205
198# 206#
199# Processor features 207# Processor features
200# 208#
201CONFIG_CPU_LITTLE_ENDIAN=y 209CONFIG_CPU_LITTLE_ENDIAN=y
210# CONFIG_CPU_BIG_ENDIAN is not set
202CONFIG_SH_FPU=y 211CONFIG_SH_FPU=y
203# CONFIG_SH_DSP is not set
204# CONFIG_SH_STORE_QUEUES is not set 212# CONFIG_SH_STORE_QUEUES is not set
205CONFIG_CPU_HAS_INTEVT=y 213CONFIG_CPU_HAS_INTEVT=y
214CONFIG_CPU_HAS_IPR_IRQ=y
206CONFIG_CPU_HAS_SR_RB=y 215CONFIG_CPU_HAS_SR_RB=y
216CONFIG_CPU_HAS_PTEA=y
217CONFIG_CPU_HAS_FPU=y
218
219#
220# Board support
221#
222# CONFIG_SH_7751_SYSTEMH is not set
223# CONFIG_SH_SECUREEDGE5410 is not set
224# CONFIG_SH_RTS7751R2D is not set
225# CONFIG_SH_LANDISK is not set
226CONFIG_SH_TITAN=y
227# CONFIG_SH_LBOX_RE2 is not set
207 228
208# 229#
209# Timer support 230# Timer and clock configuration
210# 231#
211CONFIG_SH_TMU=y 232CONFIG_SH_TMU=y
233CONFIG_SH_TIMER_IRQ=16
212CONFIG_SH_PCLK_FREQ=30000000 234CONFIG_SH_PCLK_FREQ=30000000
235# CONFIG_NO_HZ is not set
236# CONFIG_HIGH_RES_TIMERS is not set
237CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
213 238
214# 239#
215# CPU Frequency scaling 240# CPU Frequency scaling
@@ -219,6 +244,7 @@ CONFIG_SH_PCLK_FREQ=30000000
219# 244#
220# DMA support 245# DMA support
221# 246#
247CONFIG_SH_DMA_API=y
222CONFIG_SH_DMA=y 248CONFIG_SH_DMA=y
223CONFIG_NR_ONCHIP_DMA_CHANNELS=8 249CONFIG_NR_ONCHIP_DMA_CHANNELS=8
224# CONFIG_NR_DMA_CHANNELS_BOOL is not set 250# CONFIG_NR_DMA_CHANNELS_BOOL is not set
@@ -226,20 +252,30 @@ CONFIG_NR_ONCHIP_DMA_CHANNELS=8
226# 252#
227# Companion Chips 253# Companion Chips
228# 254#
229# CONFIG_HD6446X_SERIES is not set 255
256#
257# Additional SuperH Device Drivers
258#
259# CONFIG_HEARTBEAT is not set
260# CONFIG_PUSH_SWITCH is not set
230 261
231# 262#
232# Kernel features 263# Kernel features
233# 264#
234# CONFIG_HZ_100 is not set 265# CONFIG_HZ_100 is not set
235CONFIG_HZ_250=y 266CONFIG_HZ_250=y
267# CONFIG_HZ_300 is not set
236# CONFIG_HZ_1000 is not set 268# CONFIG_HZ_1000 is not set
237CONFIG_HZ=250 269CONFIG_HZ=250
270# CONFIG_SCHED_HRTICK is not set
238# CONFIG_KEXEC is not set 271# CONFIG_KEXEC is not set
239# CONFIG_SMP is not set 272# CONFIG_CRASH_DUMP is not set
273# CONFIG_SECCOMP is not set
240# CONFIG_PREEMPT_NONE is not set 274# CONFIG_PREEMPT_NONE is not set
241CONFIG_PREEMPT_VOLUNTARY=y 275CONFIG_PREEMPT_VOLUNTARY=y
242# CONFIG_PREEMPT is not set 276# CONFIG_PREEMPT is not set
277CONFIG_GUSA=y
278# CONFIG_GUSA_RB is not set
243 279
244# 280#
245# Boot options 281# Boot options
@@ -257,17 +293,10 @@ CONFIG_PCI=y
257CONFIG_SH_PCIDMA_NONCOHERENT=y 293CONFIG_SH_PCIDMA_NONCOHERENT=y
258CONFIG_PCI_AUTO=y 294CONFIG_PCI_AUTO=y
259CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 295CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
260# CONFIG_PCI_MULTITHREAD_PROBE is not set 296# CONFIG_ARCH_SUPPORTS_MSI is not set
297CONFIG_PCI_LEGACY=y
261# CONFIG_PCI_DEBUG is not set 298# CONFIG_PCI_DEBUG is not set
262
263#
264# PCCARD (PCMCIA/CardBus) support
265#
266# CONFIG_PCCARD is not set 299# CONFIG_PCCARD is not set
267
268#
269# PCI Hotplug Support
270#
271CONFIG_HOTPLUG_PCI=y 300CONFIG_HOTPLUG_PCI=y
272# CONFIG_HOTPLUG_PCI_FAKE is not set 301# CONFIG_HOTPLUG_PCI_FAKE is not set
273# CONFIG_HOTPLUG_PCI_CPCI is not set 302# CONFIG_HOTPLUG_PCI_CPCI is not set
@@ -277,30 +306,25 @@ CONFIG_HOTPLUG_PCI=y
277# Executable file formats 306# Executable file formats
278# 307#
279CONFIG_BINFMT_ELF=y 308CONFIG_BINFMT_ELF=y
280# CONFIG_BINFMT_FLAT is not set 309# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
310# CONFIG_HAVE_AOUT is not set
281# CONFIG_BINFMT_MISC is not set 311# CONFIG_BINFMT_MISC is not set
282
283#
284# Power management options (EXPERIMENTAL)
285#
286# CONFIG_PM is not set
287
288#
289# Networking
290#
291CONFIG_NET=y 312CONFIG_NET=y
292 313
293# 314#
294# Networking options 315# Networking options
295# 316#
296# CONFIG_NETDEBUG is not set
297CONFIG_PACKET=y 317CONFIG_PACKET=y
298CONFIG_PACKET_MMAP=y 318CONFIG_PACKET_MMAP=y
299CONFIG_UNIX=y 319CONFIG_UNIX=y
300CONFIG_XFRM=y 320CONFIG_XFRM=y
301# CONFIG_XFRM_USER is not set 321# CONFIG_XFRM_USER is not set
302# CONFIG_XFRM_SUB_POLICY is not set 322# CONFIG_XFRM_SUB_POLICY is not set
323# CONFIG_XFRM_MIGRATE is not set
324# CONFIG_XFRM_STATISTICS is not set
325CONFIG_XFRM_IPCOMP=y
303CONFIG_NET_KEY=y 326CONFIG_NET_KEY=y
327# CONFIG_NET_KEY_MIGRATE is not set
304CONFIG_INET=y 328CONFIG_INET=y
305CONFIG_IP_MULTICAST=y 329CONFIG_IP_MULTICAST=y
306CONFIG_IP_ADVANCED_ROUTER=y 330CONFIG_IP_ADVANCED_ROUTER=y
@@ -308,13 +332,7 @@ CONFIG_ASK_IP_FIB_HASH=y
308# CONFIG_IP_FIB_TRIE is not set 332# CONFIG_IP_FIB_TRIE is not set
309CONFIG_IP_FIB_HASH=y 333CONFIG_IP_FIB_HASH=y
310CONFIG_IP_MULTIPLE_TABLES=y 334CONFIG_IP_MULTIPLE_TABLES=y
311# CONFIG_IP_ROUTE_FWMARK is not set
312CONFIG_IP_ROUTE_MULTIPATH=y 335CONFIG_IP_ROUTE_MULTIPATH=y
313CONFIG_IP_ROUTE_MULTIPATH_CACHED=y
314CONFIG_IP_ROUTE_MULTIPATH_RR=m
315CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m
316CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m
317CONFIG_IP_ROUTE_MULTIPATH_DRR=m
318# CONFIG_IP_ROUTE_VERBOSE is not set 336# CONFIG_IP_ROUTE_VERBOSE is not set
319CONFIG_IP_PNP=y 337CONFIG_IP_PNP=y
320CONFIG_IP_PNP_DHCP=y 338CONFIG_IP_PNP_DHCP=y
@@ -336,19 +354,17 @@ CONFIG_INET_TUNNEL=y
336CONFIG_INET_XFRM_MODE_TRANSPORT=y 354CONFIG_INET_XFRM_MODE_TRANSPORT=y
337CONFIG_INET_XFRM_MODE_TUNNEL=y 355CONFIG_INET_XFRM_MODE_TUNNEL=y
338CONFIG_INET_XFRM_MODE_BEET=y 356CONFIG_INET_XFRM_MODE_BEET=y
357# CONFIG_INET_LRO is not set
339CONFIG_INET_DIAG=m 358CONFIG_INET_DIAG=m
340CONFIG_INET_TCP_DIAG=m 359CONFIG_INET_TCP_DIAG=m
341# CONFIG_TCP_CONG_ADVANCED is not set 360# CONFIG_TCP_CONG_ADVANCED is not set
342CONFIG_TCP_CONG_CUBIC=y 361CONFIG_TCP_CONG_CUBIC=y
343CONFIG_DEFAULT_TCP_CONG="cubic" 362CONFIG_DEFAULT_TCP_CONG="cubic"
344 363# CONFIG_TCP_MD5SIG is not set
345#
346# IP: Virtual Server Configuration
347#
348# CONFIG_IP_VS is not set
349CONFIG_IPV6=y 364CONFIG_IPV6=y
350CONFIG_IPV6_PRIVACY=y 365CONFIG_IPV6_PRIVACY=y
351# CONFIG_IPV6_ROUTER_PREF is not set 366# CONFIG_IPV6_ROUTER_PREF is not set
367# CONFIG_IPV6_OPTIMISTIC_DAD is not set
352CONFIG_INET6_AH=y 368CONFIG_INET6_AH=y
353CONFIG_INET6_ESP=y 369CONFIG_INET6_ESP=y
354CONFIG_INET6_IPCOMP=y 370CONFIG_INET6_IPCOMP=y
@@ -360,11 +376,14 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
360CONFIG_INET6_XFRM_MODE_BEET=y 376CONFIG_INET6_XFRM_MODE_BEET=y
361# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 377# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
362CONFIG_IPV6_SIT=m 378CONFIG_IPV6_SIT=m
379CONFIG_IPV6_NDISC_NODETYPE=y
363CONFIG_IPV6_TUNNEL=y 380CONFIG_IPV6_TUNNEL=y
364# CONFIG_IPV6_MULTIPLE_TABLES is not set 381# CONFIG_IPV6_MULTIPLE_TABLES is not set
382# CONFIG_IPV6_MROUTE is not set
365# CONFIG_NETWORK_SECMARK is not set 383# CONFIG_NETWORK_SECMARK is not set
366CONFIG_NETFILTER=y 384CONFIG_NETFILTER=y
367# CONFIG_NETFILTER_DEBUG is not set 385# CONFIG_NETFILTER_DEBUG is not set
386CONFIG_NETFILTER_ADVANCED=y
368CONFIG_BRIDGE_NETFILTER=y 387CONFIG_BRIDGE_NETFILTER=y
369 388
370# 389#
@@ -373,134 +392,95 @@ CONFIG_BRIDGE_NETFILTER=y
373CONFIG_NETFILTER_NETLINK=m 392CONFIG_NETFILTER_NETLINK=m
374CONFIG_NETFILTER_NETLINK_QUEUE=m 393CONFIG_NETFILTER_NETLINK_QUEUE=m
375CONFIG_NETFILTER_NETLINK_LOG=m 394CONFIG_NETFILTER_NETLINK_LOG=m
395# CONFIG_NF_CONNTRACK is not set
376CONFIG_NETFILTER_XTABLES=m 396CONFIG_NETFILTER_XTABLES=m
377CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 397CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
378CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
379# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 398# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
380CONFIG_NETFILTER_XT_TARGET_MARK=m 399CONFIG_NETFILTER_XT_TARGET_MARK=m
400# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
381CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 401CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
382CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 402# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
403# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
404# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
405# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
383CONFIG_NETFILTER_XT_MATCH_COMMENT=m 406CONFIG_NETFILTER_XT_MATCH_COMMENT=m
384CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
385CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
386CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
387CONFIG_NETFILTER_XT_MATCH_DCCP=m 407CONFIG_NETFILTER_XT_MATCH_DCCP=m
388# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 408# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
389CONFIG_NETFILTER_XT_MATCH_ESP=m 409CONFIG_NETFILTER_XT_MATCH_ESP=m
390CONFIG_NETFILTER_XT_MATCH_HELPER=m 410# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
411# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
391CONFIG_NETFILTER_XT_MATCH_LENGTH=m 412CONFIG_NETFILTER_XT_MATCH_LENGTH=m
392CONFIG_NETFILTER_XT_MATCH_LIMIT=m 413CONFIG_NETFILTER_XT_MATCH_LIMIT=m
393CONFIG_NETFILTER_XT_MATCH_MAC=m 414CONFIG_NETFILTER_XT_MATCH_MAC=m
394CONFIG_NETFILTER_XT_MATCH_MARK=m 415CONFIG_NETFILTER_XT_MATCH_MARK=m
395CONFIG_NETFILTER_XT_MATCH_POLICY=m
396CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 416CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
417# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
418CONFIG_NETFILTER_XT_MATCH_POLICY=m
397CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m 419CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
398CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 420CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
399# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 421# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
422# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
400CONFIG_NETFILTER_XT_MATCH_REALM=m 423CONFIG_NETFILTER_XT_MATCH_REALM=m
424# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
401CONFIG_NETFILTER_XT_MATCH_SCTP=m 425CONFIG_NETFILTER_XT_MATCH_SCTP=m
402CONFIG_NETFILTER_XT_MATCH_STATE=m
403# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 426# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
404CONFIG_NETFILTER_XT_MATCH_STRING=m 427CONFIG_NETFILTER_XT_MATCH_STRING=m
405CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 428CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
429# CONFIG_NETFILTER_XT_MATCH_TIME is not set
430# CONFIG_NETFILTER_XT_MATCH_U32 is not set
431# CONFIG_IP_VS is not set
406 432
407# 433#
408# IP: Netfilter Configuration 434# IP: Netfilter Configuration
409# 435#
410CONFIG_IP_NF_CONNTRACK=m 436# CONFIG_NF_DEFRAG_IPV4 is not set
411CONFIG_IP_NF_CT_ACCT=y
412CONFIG_IP_NF_CONNTRACK_MARK=y
413CONFIG_IP_NF_CONNTRACK_EVENTS=y
414CONFIG_IP_NF_CONNTRACK_NETLINK=m
415# CONFIG_IP_NF_CT_PROTO_SCTP is not set
416CONFIG_IP_NF_FTP=m
417CONFIG_IP_NF_IRC=m
418CONFIG_IP_NF_NETBIOS_NS=m
419CONFIG_IP_NF_TFTP=m
420# CONFIG_IP_NF_AMANDA is not set
421CONFIG_IP_NF_PPTP=m
422CONFIG_IP_NF_H323=m
423# CONFIG_IP_NF_SIP is not set
424CONFIG_IP_NF_QUEUE=m 437CONFIG_IP_NF_QUEUE=m
425CONFIG_IP_NF_IPTABLES=m 438CONFIG_IP_NF_IPTABLES=m
426CONFIG_IP_NF_MATCH_IPRANGE=m 439CONFIG_IP_NF_MATCH_ADDRTYPE=m
427CONFIG_IP_NF_MATCH_TOS=m
428CONFIG_IP_NF_MATCH_RECENT=m
429CONFIG_IP_NF_MATCH_ECN=m
430CONFIG_IP_NF_MATCH_AH=m 440CONFIG_IP_NF_MATCH_AH=m
441CONFIG_IP_NF_MATCH_ECN=m
431CONFIG_IP_NF_MATCH_TTL=m 442CONFIG_IP_NF_MATCH_TTL=m
432CONFIG_IP_NF_MATCH_OWNER=m
433CONFIG_IP_NF_MATCH_ADDRTYPE=m
434CONFIG_IP_NF_MATCH_HASHLIMIT=m
435CONFIG_IP_NF_FILTER=m 443CONFIG_IP_NF_FILTER=m
436CONFIG_IP_NF_TARGET_REJECT=m 444CONFIG_IP_NF_TARGET_REJECT=m
437CONFIG_IP_NF_TARGET_LOG=m 445CONFIG_IP_NF_TARGET_LOG=m
438CONFIG_IP_NF_TARGET_ULOG=m 446CONFIG_IP_NF_TARGET_ULOG=m
439CONFIG_IP_NF_TARGET_TCPMSS=m
440CONFIG_IP_NF_NAT=m
441CONFIG_IP_NF_NAT_NEEDED=y
442CONFIG_IP_NF_TARGET_MASQUERADE=m
443CONFIG_IP_NF_TARGET_REDIRECT=m
444CONFIG_IP_NF_TARGET_NETMAP=m
445CONFIG_IP_NF_TARGET_SAME=m
446CONFIG_IP_NF_NAT_SNMP_BASIC=m
447CONFIG_IP_NF_NAT_IRC=m
448CONFIG_IP_NF_NAT_FTP=m
449CONFIG_IP_NF_NAT_TFTP=m
450CONFIG_IP_NF_NAT_PPTP=m
451CONFIG_IP_NF_NAT_H323=m
452CONFIG_IP_NF_MANGLE=m 447CONFIG_IP_NF_MANGLE=m
453CONFIG_IP_NF_TARGET_TOS=m
454CONFIG_IP_NF_TARGET_ECN=m 448CONFIG_IP_NF_TARGET_ECN=m
455CONFIG_IP_NF_TARGET_TTL=m 449CONFIG_IP_NF_TARGET_TTL=m
456CONFIG_IP_NF_TARGET_CLUSTERIP=m
457CONFIG_IP_NF_RAW=m 450CONFIG_IP_NF_RAW=m
458CONFIG_IP_NF_ARPTABLES=m 451CONFIG_IP_NF_ARPTABLES=m
459CONFIG_IP_NF_ARPFILTER=m 452CONFIG_IP_NF_ARPFILTER=m
460CONFIG_IP_NF_ARP_MANGLE=m 453CONFIG_IP_NF_ARP_MANGLE=m
461 454
462# 455#
463# IPv6: Netfilter Configuration (EXPERIMENTAL) 456# IPv6: Netfilter Configuration
464# 457#
465CONFIG_IP6_NF_QUEUE=m 458CONFIG_IP6_NF_QUEUE=m
466CONFIG_IP6_NF_IPTABLES=m 459CONFIG_IP6_NF_IPTABLES=m
467CONFIG_IP6_NF_MATCH_RT=m 460CONFIG_IP6_NF_MATCH_AH=m
468CONFIG_IP6_NF_MATCH_OPTS=m 461CONFIG_IP6_NF_MATCH_EUI64=m
469CONFIG_IP6_NF_MATCH_FRAG=m 462CONFIG_IP6_NF_MATCH_FRAG=m
463CONFIG_IP6_NF_MATCH_OPTS=m
470CONFIG_IP6_NF_MATCH_HL=m 464CONFIG_IP6_NF_MATCH_HL=m
471CONFIG_IP6_NF_MATCH_OWNER=m
472CONFIG_IP6_NF_MATCH_IPV6HEADER=m 465CONFIG_IP6_NF_MATCH_IPV6HEADER=m
473CONFIG_IP6_NF_MATCH_AH=m 466# CONFIG_IP6_NF_MATCH_MH is not set
474CONFIG_IP6_NF_MATCH_EUI64=m 467CONFIG_IP6_NF_MATCH_RT=m
475CONFIG_IP6_NF_FILTER=m
476CONFIG_IP6_NF_TARGET_LOG=m 468CONFIG_IP6_NF_TARGET_LOG=m
469CONFIG_IP6_NF_FILTER=m
477CONFIG_IP6_NF_TARGET_REJECT=m 470CONFIG_IP6_NF_TARGET_REJECT=m
478CONFIG_IP6_NF_MANGLE=m 471CONFIG_IP6_NF_MANGLE=m
479CONFIG_IP6_NF_TARGET_HL=m 472CONFIG_IP6_NF_TARGET_HL=m
480CONFIG_IP6_NF_RAW=m 473CONFIG_IP6_NF_RAW=m
481
482#
483# Bridge: Netfilter Configuration
484#
485# CONFIG_BRIDGE_NF_EBTABLES is not set 474# CONFIG_BRIDGE_NF_EBTABLES is not set
486
487#
488# DCCP Configuration (EXPERIMENTAL)
489#
490# CONFIG_IP_DCCP is not set 475# CONFIG_IP_DCCP is not set
491
492#
493# SCTP Configuration (EXPERIMENTAL)
494#
495# CONFIG_IP_SCTP is not set 476# CONFIG_IP_SCTP is not set
496
497#
498# TIPC Configuration (EXPERIMENTAL)
499#
500# CONFIG_TIPC is not set 477# CONFIG_TIPC is not set
501# CONFIG_ATM is not set 478# CONFIG_ATM is not set
479CONFIG_STP=y
502CONFIG_BRIDGE=y 480CONFIG_BRIDGE=y
481# CONFIG_NET_DSA is not set
503CONFIG_VLAN_8021Q=y 482CONFIG_VLAN_8021Q=y
483# CONFIG_VLAN_8021Q_GVRP is not set
504# CONFIG_DECNET is not set 484# CONFIG_DECNET is not set
505CONFIG_LLC=y 485CONFIG_LLC=y
506# CONFIG_LLC2 is not set 486# CONFIG_LLC2 is not set
@@ -510,14 +490,7 @@ CONFIG_LLC=y
510# CONFIG_LAPB is not set 490# CONFIG_LAPB is not set
511# CONFIG_ECONET is not set 491# CONFIG_ECONET is not set
512# CONFIG_WAN_ROUTER is not set 492# CONFIG_WAN_ROUTER is not set
513
514#
515# QoS and/or fair queueing
516#
517CONFIG_NET_SCHED=y 493CONFIG_NET_SCHED=y
518CONFIG_NET_SCH_CLK_JIFFIES=y
519# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
520# CONFIG_NET_SCH_CLK_CPU is not set
521 494
522# 495#
523# Queueing/Scheduling 496# Queueing/Scheduling
@@ -526,6 +499,7 @@ CONFIG_NET_SCH_CBQ=m
526CONFIG_NET_SCH_HTB=m 499CONFIG_NET_SCH_HTB=m
527CONFIG_NET_SCH_HFSC=m 500CONFIG_NET_SCH_HFSC=m
528CONFIG_NET_SCH_PRIO=m 501CONFIG_NET_SCH_PRIO=m
502# CONFIG_NET_SCH_MULTIQ is not set
529CONFIG_NET_SCH_RED=m 503CONFIG_NET_SCH_RED=m
530CONFIG_NET_SCH_SFQ=m 504CONFIG_NET_SCH_SFQ=m
531CONFIG_NET_SCH_TEQL=m 505CONFIG_NET_SCH_TEQL=m
@@ -549,6 +523,7 @@ CONFIG_CLS_U32_PERF=y
549CONFIG_CLS_U32_MARK=y 523CONFIG_CLS_U32_MARK=y
550CONFIG_NET_CLS_RSVP=m 524CONFIG_NET_CLS_RSVP=m
551CONFIG_NET_CLS_RSVP6=m 525CONFIG_NET_CLS_RSVP6=m
526# CONFIG_NET_CLS_FLOW is not set
552CONFIG_NET_EMATCH=y 527CONFIG_NET_EMATCH=y
553CONFIG_NET_EMATCH_STACK=32 528CONFIG_NET_EMATCH_STACK=32
554CONFIG_NET_EMATCH_CMP=m 529CONFIG_NET_EMATCH_CMP=m
@@ -562,27 +537,37 @@ CONFIG_NET_ACT_GACT=m
562CONFIG_GACT_PROB=y 537CONFIG_GACT_PROB=y
563CONFIG_NET_ACT_MIRRED=m 538CONFIG_NET_ACT_MIRRED=m
564CONFIG_NET_ACT_IPT=m 539CONFIG_NET_ACT_IPT=m
540# CONFIG_NET_ACT_NAT is not set
565CONFIG_NET_ACT_PEDIT=m 541CONFIG_NET_ACT_PEDIT=m
566# CONFIG_NET_ACT_SIMP is not set 542# CONFIG_NET_ACT_SIMP is not set
543# CONFIG_NET_ACT_SKBEDIT is not set
567CONFIG_NET_CLS_IND=y 544CONFIG_NET_CLS_IND=y
568CONFIG_NET_ESTIMATOR=y 545CONFIG_NET_SCH_FIFO=y
569 546
570# 547#
571# Network testing 548# Network testing
572# 549#
573# CONFIG_NET_PKTGEN is not set 550# CONFIG_NET_PKTGEN is not set
574# CONFIG_HAMRADIO is not set 551# CONFIG_HAMRADIO is not set
552# CONFIG_CAN is not set
575# CONFIG_IRDA is not set 553# CONFIG_IRDA is not set
576# CONFIG_BT is not set 554# CONFIG_BT is not set
555# CONFIG_AF_RXRPC is not set
556# CONFIG_PHONET is not set
557CONFIG_FIB_RULES=y
558CONFIG_WIRELESS=y
559# CONFIG_CFG80211 is not set
560# CONFIG_WIRELESS_OLD_REGULATORY is not set
561CONFIG_WIRELESS_EXT=y
562CONFIG_WIRELESS_EXT_SYSFS=y
563# CONFIG_MAC80211 is not set
577CONFIG_IEEE80211=y 564CONFIG_IEEE80211=y
578# CONFIG_IEEE80211_DEBUG is not set 565# CONFIG_IEEE80211_DEBUG is not set
579CONFIG_IEEE80211_CRYPT_WEP=y 566CONFIG_IEEE80211_CRYPT_WEP=y
580CONFIG_IEEE80211_CRYPT_CCMP=y 567CONFIG_IEEE80211_CRYPT_CCMP=y
581CONFIG_IEEE80211_CRYPT_TKIP=y 568CONFIG_IEEE80211_CRYPT_TKIP=y
582CONFIG_IEEE80211_SOFTMAC=m 569# CONFIG_RFKILL is not set
583# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 570# CONFIG_NET_9P is not set
584CONFIG_WIRELESS_EXT=y
585CONFIG_FIB_RULES=y
586 571
587# 572#
588# Device Drivers 573# Device Drivers
@@ -591,20 +576,16 @@ CONFIG_FIB_RULES=y
591# 576#
592# Generic Driver Options 577# Generic Driver Options
593# 578#
579CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
594CONFIG_STANDALONE=y 580CONFIG_STANDALONE=y
595CONFIG_PREVENT_FIRMWARE_BUILD=y 581CONFIG_PREVENT_FIRMWARE_BUILD=y
596CONFIG_FW_LOADER=m 582CONFIG_FW_LOADER=m
583CONFIG_FIRMWARE_IN_KERNEL=y
584CONFIG_EXTRA_FIRMWARE=""
597# CONFIG_DEBUG_DRIVER is not set 585# CONFIG_DEBUG_DRIVER is not set
586# CONFIG_DEBUG_DEVRES is not set
598# CONFIG_SYS_HYPERVISOR is not set 587# CONFIG_SYS_HYPERVISOR is not set
599
600#
601# Connector - unified userspace <-> kernelspace linker
602#
603CONFIG_CONNECTOR=m 588CONFIG_CONNECTOR=m
604
605#
606# Memory Technology Devices (MTD)
607#
608CONFIG_MTD=m 589CONFIG_MTD=m
609CONFIG_MTD_DEBUG=y 590CONFIG_MTD_DEBUG=y
610CONFIG_MTD_DEBUG_VERBOSE=0 591CONFIG_MTD_DEBUG_VERBOSE=0
@@ -615,6 +596,7 @@ CONFIG_MTD_DEBUG_VERBOSE=0
615# User Modules And Translation Layers 596# User Modules And Translation Layers
616# 597#
617CONFIG_MTD_CHAR=m 598CONFIG_MTD_CHAR=m
599CONFIG_MTD_BLKDEVS=m
618CONFIG_MTD_BLOCK=m 600CONFIG_MTD_BLOCK=m
619# CONFIG_MTD_BLOCK_RO is not set 601# CONFIG_MTD_BLOCK_RO is not set
620CONFIG_FTL=m 602CONFIG_FTL=m
@@ -623,6 +605,7 @@ CONFIG_NFTL=m
623CONFIG_INFTL=m 605CONFIG_INFTL=m
624CONFIG_RFD_FTL=m 606CONFIG_RFD_FTL=m
625# CONFIG_SSFDC is not set 607# CONFIG_SSFDC is not set
608# CONFIG_MTD_OOPS is not set
626 609
627# 610#
628# RAM/ROM/Flash chip drivers 611# RAM/ROM/Flash chip drivers
@@ -644,16 +627,17 @@ CONFIG_MTD_CFI_I2=y
644# CONFIG_MTD_CFI_INTELEXT is not set 627# CONFIG_MTD_CFI_INTELEXT is not set
645# CONFIG_MTD_CFI_AMDSTD is not set 628# CONFIG_MTD_CFI_AMDSTD is not set
646# CONFIG_MTD_CFI_STAA is not set 629# CONFIG_MTD_CFI_STAA is not set
630CONFIG_MTD_CFI_UTIL=m
647# CONFIG_MTD_RAM is not set 631# CONFIG_MTD_RAM is not set
648# CONFIG_MTD_ROM is not set 632# CONFIG_MTD_ROM is not set
649# CONFIG_MTD_ABSENT is not set 633# CONFIG_MTD_ABSENT is not set
650# CONFIG_MTD_OBSOLETE_CHIPS is not set
651 634
652# 635#
653# Mapping drivers for chip access 636# Mapping drivers for chip access
654# 637#
655# CONFIG_MTD_COMPLEX_MAPPINGS is not set 638# CONFIG_MTD_COMPLEX_MAPPINGS is not set
656# CONFIG_MTD_PHYSMAP is not set 639# CONFIG_MTD_PHYSMAP is not set
640# CONFIG_MTD_INTEL_VR_NOR is not set
657# CONFIG_MTD_PLATRAM is not set 641# CONFIG_MTD_PLATRAM is not set
658 642
659# 643#
@@ -671,34 +655,23 @@ CONFIG_MTD_CFI_I2=y
671# CONFIG_MTD_DOC2000 is not set 655# CONFIG_MTD_DOC2000 is not set
672# CONFIG_MTD_DOC2001 is not set 656# CONFIG_MTD_DOC2001 is not set
673# CONFIG_MTD_DOC2001PLUS is not set 657# CONFIG_MTD_DOC2001PLUS is not set
674
675#
676# NAND Flash Device Drivers
677#
678CONFIG_MTD_NAND=m 658CONFIG_MTD_NAND=m
679# CONFIG_MTD_NAND_VERIFY_WRITE is not set 659# CONFIG_MTD_NAND_VERIFY_WRITE is not set
680# CONFIG_MTD_NAND_ECC_SMC is not set 660# CONFIG_MTD_NAND_ECC_SMC is not set
661# CONFIG_MTD_NAND_MUSEUM_IDS is not set
681CONFIG_MTD_NAND_IDS=m 662CONFIG_MTD_NAND_IDS=m
682# CONFIG_MTD_NAND_DISKONCHIP is not set 663# CONFIG_MTD_NAND_DISKONCHIP is not set
683 664# CONFIG_MTD_NAND_CAFE is not set
684# 665# CONFIG_MTD_NAND_PLATFORM is not set
685# OneNAND Flash Device Drivers 666# CONFIG_MTD_ALAUDA is not set
686#
687# CONFIG_MTD_ONENAND is not set 667# CONFIG_MTD_ONENAND is not set
688 668
689# 669#
690# Parallel port support 670# UBI - Unsorted block images
691# 671#
672# CONFIG_MTD_UBI is not set
692# CONFIG_PARPORT is not set 673# CONFIG_PARPORT is not set
693 674CONFIG_BLK_DEV=y
694#
695# Plug and Play support
696#
697
698#
699# Block devices
700#
701# CONFIG_BLK_CPQ_DA is not set
702# CONFIG_BLK_CPQ_CISS_DA is not set 675# CONFIG_BLK_CPQ_CISS_DA is not set
703# CONFIG_BLK_DEV_DAC960 is not set 676# CONFIG_BLK_DEV_DAC960 is not set
704# CONFIG_BLK_DEV_UMEM is not set 677# CONFIG_BLK_DEV_UMEM is not set
@@ -711,20 +684,18 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
711CONFIG_BLK_DEV_RAM=y 684CONFIG_BLK_DEV_RAM=y
712CONFIG_BLK_DEV_RAM_COUNT=16 685CONFIG_BLK_DEV_RAM_COUNT=16
713CONFIG_BLK_DEV_RAM_SIZE=4096 686CONFIG_BLK_DEV_RAM_SIZE=4096
714CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 687# CONFIG_BLK_DEV_XIP is not set
715CONFIG_BLK_DEV_INITRD=y
716# CONFIG_CDROM_PKTCDVD is not set 688# CONFIG_CDROM_PKTCDVD is not set
717CONFIG_ATA_OVER_ETH=m 689CONFIG_ATA_OVER_ETH=m
718 690# CONFIG_BLK_DEV_HD is not set
719# 691CONFIG_MISC_DEVICES=y
720# Misc devices 692# CONFIG_PHANTOM is not set
721# 693# CONFIG_EEPROM_93CX6 is not set
722# CONFIG_SGI_IOC4 is not set 694# CONFIG_SGI_IOC4 is not set
723# CONFIG_TIFM_CORE is not set 695# CONFIG_TIFM_CORE is not set
724 696# CONFIG_ENCLOSURE_SERVICES is not set
725# 697# CONFIG_HP_ILO is not set
726# ATA/ATAPI/MFM/RLL support 698CONFIG_HAVE_IDE=y
727#
728# CONFIG_IDE is not set 699# CONFIG_IDE is not set
729 700
730# 701#
@@ -732,6 +703,8 @@ CONFIG_ATA_OVER_ETH=m
732# 703#
733# CONFIG_RAID_ATTRS is not set 704# CONFIG_RAID_ATTRS is not set
734CONFIG_SCSI=y 705CONFIG_SCSI=y
706CONFIG_SCSI_DMA=y
707# CONFIG_SCSI_TGT is not set
735# CONFIG_SCSI_NETLINK is not set 708# CONFIG_SCSI_NETLINK is not set
736CONFIG_SCSI_PROC_FS=y 709CONFIG_SCSI_PROC_FS=y
737 710
@@ -752,6 +725,8 @@ CONFIG_CHR_DEV_SG=m
752# CONFIG_SCSI_MULTI_LUN is not set 725# CONFIG_SCSI_MULTI_LUN is not set
753# CONFIG_SCSI_CONSTANTS is not set 726# CONFIG_SCSI_CONSTANTS is not set
754# CONFIG_SCSI_LOGGING is not set 727# CONFIG_SCSI_LOGGING is not set
728# CONFIG_SCSI_SCAN_ASYNC is not set
729CONFIG_SCSI_WAIT_SCAN=m
755 730
756# 731#
757# SCSI Transports 732# SCSI Transports
@@ -759,12 +734,9 @@ CONFIG_CHR_DEV_SG=m
759# CONFIG_SCSI_SPI_ATTRS is not set 734# CONFIG_SCSI_SPI_ATTRS is not set
760# CONFIG_SCSI_FC_ATTRS is not set 735# CONFIG_SCSI_FC_ATTRS is not set
761# CONFIG_SCSI_ISCSI_ATTRS is not set 736# CONFIG_SCSI_ISCSI_ATTRS is not set
762# CONFIG_SCSI_SAS_ATTRS is not set
763# CONFIG_SCSI_SAS_LIBSAS is not set 737# CONFIG_SCSI_SAS_LIBSAS is not set
764 738# CONFIG_SCSI_SRP_ATTRS is not set
765# 739CONFIG_SCSI_LOWLEVEL=y
766# SCSI low-level drivers
767#
768# CONFIG_ISCSI_TCP is not set 740# CONFIG_ISCSI_TCP is not set
769# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 741# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
770# CONFIG_SCSI_3W_9XXX is not set 742# CONFIG_SCSI_3W_9XXX is not set
@@ -774,7 +746,6 @@ CONFIG_CHR_DEV_SG=m
774# CONFIG_SCSI_AIC7XXX_OLD is not set 746# CONFIG_SCSI_AIC7XXX_OLD is not set
775# CONFIG_SCSI_AIC79XX is not set 747# CONFIG_SCSI_AIC79XX is not set
776# CONFIG_SCSI_AIC94XX is not set 748# CONFIG_SCSI_AIC94XX is not set
777# CONFIG_SCSI_DPT_I2O is not set
778# CONFIG_SCSI_ARCMSR is not set 749# CONFIG_SCSI_ARCMSR is not set
779# CONFIG_MEGARAID_NEWGEN is not set 750# CONFIG_MEGARAID_NEWGEN is not set
780# CONFIG_MEGARAID_LEGACY is not set 751# CONFIG_MEGARAID_LEGACY is not set
@@ -785,6 +756,7 @@ CONFIG_CHR_DEV_SG=m
785# CONFIG_SCSI_IPS is not set 756# CONFIG_SCSI_IPS is not set
786# CONFIG_SCSI_INITIO is not set 757# CONFIG_SCSI_INITIO is not set
787# CONFIG_SCSI_INIA100 is not set 758# CONFIG_SCSI_INIA100 is not set
759# CONFIG_SCSI_MVSAS is not set
788# CONFIG_SCSI_STEX is not set 760# CONFIG_SCSI_STEX is not set
789# CONFIG_SCSI_SYM53C8XX_2 is not set 761# CONFIG_SCSI_SYM53C8XX_2 is not set
790# CONFIG_SCSI_QLOGIC_1280 is not set 762# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -795,53 +767,31 @@ CONFIG_CHR_DEV_SG=m
795# CONFIG_SCSI_DC390T is not set 767# CONFIG_SCSI_DC390T is not set
796# CONFIG_SCSI_NSP32 is not set 768# CONFIG_SCSI_NSP32 is not set
797# CONFIG_SCSI_DEBUG is not set 769# CONFIG_SCSI_DEBUG is not set
798 770# CONFIG_SCSI_SRP is not set
799# 771# CONFIG_SCSI_DH is not set
800# Serial ATA (prod) and Parallel ATA (experimental) drivers
801#
802# CONFIG_ATA is not set 772# CONFIG_ATA is not set
803
804#
805# Multi-device support (RAID and LVM)
806#
807# CONFIG_MD is not set 773# CONFIG_MD is not set
808
809#
810# Fusion MPT device support
811#
812# CONFIG_FUSION is not set 774# CONFIG_FUSION is not set
813# CONFIG_FUSION_SPI is not set
814# CONFIG_FUSION_FC is not set
815# CONFIG_FUSION_SAS is not set
816 775
817# 776#
818# IEEE 1394 (FireWire) support 777# IEEE 1394 (FireWire) support
819# 778#
820# CONFIG_IEEE1394 is not set
821 779
822# 780#
823# I2O device support 781# Enable only one of the two stacks, unless you know what you are doing
824# 782#
783# CONFIG_FIREWIRE is not set
784# CONFIG_IEEE1394 is not set
825# CONFIG_I2O is not set 785# CONFIG_I2O is not set
826
827#
828# Network device support
829#
830CONFIG_NETDEVICES=y 786CONFIG_NETDEVICES=y
831# CONFIG_IFB is not set 787# CONFIG_IFB is not set
832# CONFIG_DUMMY is not set 788# CONFIG_DUMMY is not set
833# CONFIG_BONDING is not set 789# CONFIG_BONDING is not set
790# CONFIG_MACVLAN is not set
834# CONFIG_EQUALIZER is not set 791# CONFIG_EQUALIZER is not set
835CONFIG_TUN=m 792CONFIG_TUN=m
836 793# CONFIG_VETH is not set
837#
838# ARCnet devices
839#
840# CONFIG_ARCNET is not set 794# CONFIG_ARCNET is not set
841
842#
843# PHY device support
844#
845CONFIG_PHYLIB=m 795CONFIG_PHYLIB=m
846 796
847# 797#
@@ -854,32 +804,35 @@ CONFIG_LXT_PHY=m
854CONFIG_CICADA_PHY=m 804CONFIG_CICADA_PHY=m
855# CONFIG_VITESSE_PHY is not set 805# CONFIG_VITESSE_PHY is not set
856# CONFIG_SMSC_PHY is not set 806# CONFIG_SMSC_PHY is not set
857# CONFIG_FIXED_PHY is not set 807# CONFIG_BROADCOM_PHY is not set
858 808# CONFIG_ICPLUS_PHY is not set
859# 809# CONFIG_REALTEK_PHY is not set
860# Ethernet (10 or 100Mbit) 810# CONFIG_MDIO_BITBANG is not set
861#
862CONFIG_NET_ETHERNET=y 811CONFIG_NET_ETHERNET=y
863CONFIG_MII=y 812CONFIG_MII=y
813# CONFIG_AX88796 is not set
864# CONFIG_STNIC is not set 814# CONFIG_STNIC is not set
865# CONFIG_HAPPYMEAL is not set 815# CONFIG_HAPPYMEAL is not set
866# CONFIG_SUNGEM is not set 816# CONFIG_SUNGEM is not set
867# CONFIG_CASSINI is not set 817# CONFIG_CASSINI is not set
868# CONFIG_NET_VENDOR_3COM is not set 818# CONFIG_NET_VENDOR_3COM is not set
869# CONFIG_SMC91X is not set 819# CONFIG_SMC91X is not set
870 820# CONFIG_SMC911X is not set
871#
872# Tulip family network device support
873#
874# CONFIG_NET_TULIP is not set 821# CONFIG_NET_TULIP is not set
875# CONFIG_HP100 is not set 822# CONFIG_HP100 is not set
823# CONFIG_IBM_NEW_EMAC_ZMII is not set
824# CONFIG_IBM_NEW_EMAC_RGMII is not set
825# CONFIG_IBM_NEW_EMAC_TAH is not set
826# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
827# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
828# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
829# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
876CONFIG_NET_PCI=y 830CONFIG_NET_PCI=y
877# CONFIG_PCNET32 is not set 831# CONFIG_PCNET32 is not set
878# CONFIG_AMD8111_ETH is not set 832# CONFIG_AMD8111_ETH is not set
879# CONFIG_ADAPTEC_STARFIRE is not set 833# CONFIG_ADAPTEC_STARFIRE is not set
880# CONFIG_B44 is not set 834# CONFIG_B44 is not set
881# CONFIG_FORCEDETH is not set 835# CONFIG_FORCEDETH is not set
882# CONFIG_DGRS is not set
883# CONFIG_EEPRO100 is not set 836# CONFIG_EEPRO100 is not set
884# CONFIG_E100 is not set 837# CONFIG_E100 is not set
885# CONFIG_FEALNX is not set 838# CONFIG_FEALNX is not set
@@ -891,18 +844,21 @@ CONFIG_8139TOO=y
891CONFIG_8139TOO_TUNE_TWISTER=y 844CONFIG_8139TOO_TUNE_TWISTER=y
892# CONFIG_8139TOO_8129 is not set 845# CONFIG_8139TOO_8129 is not set
893CONFIG_8139_OLD_RX_RESET=y 846CONFIG_8139_OLD_RX_RESET=y
847# CONFIG_R6040 is not set
894# CONFIG_SIS900 is not set 848# CONFIG_SIS900 is not set
895# CONFIG_EPIC100 is not set 849# CONFIG_EPIC100 is not set
896# CONFIG_SUNDANCE is not set 850# CONFIG_SUNDANCE is not set
897# CONFIG_TLAN is not set 851# CONFIG_TLAN is not set
898# CONFIG_VIA_RHINE is not set 852# CONFIG_VIA_RHINE is not set
899 853# CONFIG_SC92031 is not set
900# 854# CONFIG_ATL2 is not set
901# Ethernet (1000 Mbit) 855CONFIG_NETDEV_1000=y
902#
903# CONFIG_ACENIC is not set 856# CONFIG_ACENIC is not set
904# CONFIG_DL2K is not set 857# CONFIG_DL2K is not set
905# CONFIG_E1000 is not set 858# CONFIG_E1000 is not set
859# CONFIG_E1000E is not set
860# CONFIG_IP1000 is not set
861# CONFIG_IGB is not set
906# CONFIG_NS83820 is not set 862# CONFIG_NS83820 is not set
907# CONFIG_HAMACHI is not set 863# CONFIG_HAMACHI is not set
908# CONFIG_YELLOWFIN is not set 864# CONFIG_YELLOWFIN is not set
@@ -910,63 +866,56 @@ CONFIG_8139_OLD_RX_RESET=y
910# CONFIG_SIS190 is not set 866# CONFIG_SIS190 is not set
911# CONFIG_SKGE is not set 867# CONFIG_SKGE is not set
912# CONFIG_SKY2 is not set 868# CONFIG_SKY2 is not set
913# CONFIG_SK98LIN is not set
914# CONFIG_VIA_VELOCITY is not set 869# CONFIG_VIA_VELOCITY is not set
915# CONFIG_TIGON3 is not set 870# CONFIG_TIGON3 is not set
916# CONFIG_BNX2 is not set 871# CONFIG_BNX2 is not set
917# CONFIG_QLA3XXX is not set 872# CONFIG_QLA3XXX is not set
918 873# CONFIG_ATL1 is not set
919# 874# CONFIG_ATL1E is not set
920# Ethernet (10000 Mbit) 875# CONFIG_JME is not set
921# 876CONFIG_NETDEV_10000=y
922# CONFIG_CHELSIO_T1 is not set 877# CONFIG_CHELSIO_T1 is not set
878# CONFIG_CHELSIO_T3 is not set
879# CONFIG_ENIC is not set
880# CONFIG_IXGBE is not set
923# CONFIG_IXGB is not set 881# CONFIG_IXGB is not set
924# CONFIG_S2IO is not set 882# CONFIG_S2IO is not set
925# CONFIG_MYRI10GE is not set 883# CONFIG_MYRI10GE is not set
926 884# CONFIG_NETXEN_NIC is not set
927# 885# CONFIG_NIU is not set
928# Token Ring devices 886# CONFIG_MLX4_CORE is not set
929# 887# CONFIG_TEHUTI is not set
888# CONFIG_BNX2X is not set
889# CONFIG_QLGE is not set
890# CONFIG_SFC is not set
930# CONFIG_TR is not set 891# CONFIG_TR is not set
931 892
932# 893#
933# Wireless LAN (non-hamradio) 894# Wireless LAN
934#
935CONFIG_NET_RADIO=y
936CONFIG_NET_WIRELESS_RTNETLINK=y
937
938#
939# Obsolete Wireless cards support (pre-802.11)
940#
941# CONFIG_STRIP is not set
942
943#
944# Wireless 802.11b ISA/PCI cards support
945#
946# CONFIG_IPW2100 is not set
947# CONFIG_IPW2200 is not set
948# CONFIG_HERMES is not set
949# CONFIG_ATMEL is not set
950
951#
952# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
953# 895#
954CONFIG_PRISM54=m 896# CONFIG_WLAN_PRE80211 is not set
955# CONFIG_USB_ZD1201 is not set 897# CONFIG_WLAN_80211 is not set
956# CONFIG_HOSTAP is not set 898# CONFIG_IWLWIFI_LEDS is not set
957CONFIG_BCM43XX=m
958CONFIG_BCM43XX_DEBUG=y
959CONFIG_BCM43XX_DMA=y
960CONFIG_BCM43XX_PIO=y
961CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
962# CONFIG_BCM43XX_DMA_MODE is not set
963# CONFIG_BCM43XX_PIO_MODE is not set
964# CONFIG_ZD1211RW is not set
965CONFIG_NET_WIRELESS=y
966 899
967# 900#
968# Wan interfaces 901# USB Network Adapters
969# 902#
903CONFIG_USB_CATC=m
904CONFIG_USB_KAWETH=m
905CONFIG_USB_PEGASUS=m
906CONFIG_USB_RTL8150=m
907CONFIG_USB_USBNET=m
908CONFIG_USB_NET_AX8817X=m
909CONFIG_USB_NET_CDCETHER=m
910# CONFIG_USB_NET_DM9601 is not set
911# CONFIG_USB_NET_SMSC95XX is not set
912# CONFIG_USB_NET_GL620A is not set
913CONFIG_USB_NET_NET1080=m
914CONFIG_USB_NET_PLUSB=m
915# CONFIG_USB_NET_MCS7830 is not set
916# CONFIG_USB_NET_RNDIS_HOST is not set
917# CONFIG_USB_NET_CDC_SUBSET is not set
918CONFIG_USB_NET_ZAURUS=m
970# CONFIG_WAN is not set 919# CONFIG_WAN is not set
971# CONFIG_FDDI is not set 920# CONFIG_FDDI is not set
972# CONFIG_HIPPI is not set 921# CONFIG_HIPPI is not set
@@ -979,25 +928,17 @@ CONFIG_PPP_DEFLATE=m
979CONFIG_PPP_BSDCOMP=m 928CONFIG_PPP_BSDCOMP=m
980CONFIG_PPP_MPPE=m 929CONFIG_PPP_MPPE=m
981CONFIG_PPPOE=m 930CONFIG_PPPOE=m
931# CONFIG_PPPOL2TP is not set
982CONFIG_SLIP=m 932CONFIG_SLIP=m
983CONFIG_SLIP_COMPRESSED=y 933CONFIG_SLIP_COMPRESSED=y
984CONFIG_SLHC=m 934CONFIG_SLHC=m
985CONFIG_SLIP_SMART=y 935CONFIG_SLIP_SMART=y
986# CONFIG_SLIP_MODE_SLIP6 is not set 936# CONFIG_SLIP_MODE_SLIP6 is not set
987# CONFIG_NET_FC is not set 937# CONFIG_NET_FC is not set
988# CONFIG_SHAPER is not set
989# CONFIG_NETCONSOLE is not set 938# CONFIG_NETCONSOLE is not set
990# CONFIG_NETPOLL is not set 939# CONFIG_NETPOLL is not set
991# CONFIG_NET_POLL_CONTROLLER is not set 940# CONFIG_NET_POLL_CONTROLLER is not set
992
993#
994# ISDN subsystem
995#
996# CONFIG_ISDN is not set 941# CONFIG_ISDN is not set
997
998#
999# Telephony Support
1000#
1001# CONFIG_PHONE is not set 942# CONFIG_PHONE is not set
1002 943
1003# 944#
@@ -1005,6 +946,7 @@ CONFIG_SLIP_SMART=y
1005# 946#
1006CONFIG_INPUT=y 947CONFIG_INPUT=y
1007# CONFIG_INPUT_FF_MEMLESS is not set 948# CONFIG_INPUT_FF_MEMLESS is not set
949# CONFIG_INPUT_POLLDEV is not set
1008 950
1009# 951#
1010# Userland interfaces 952# Userland interfaces
@@ -1014,7 +956,6 @@ CONFIG_INPUT_MOUSEDEV=y
1014CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 956CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
1015CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 957CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
1016# CONFIG_INPUT_JOYDEV is not set 958# CONFIG_INPUT_JOYDEV is not set
1017# CONFIG_INPUT_TSDEV is not set
1018# CONFIG_INPUT_EVDEV is not set 959# CONFIG_INPUT_EVDEV is not set
1019# CONFIG_INPUT_EVBUG is not set 960# CONFIG_INPUT_EVBUG is not set
1020 961
@@ -1024,6 +965,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
1024# CONFIG_INPUT_KEYBOARD is not set 965# CONFIG_INPUT_KEYBOARD is not set
1025# CONFIG_INPUT_MOUSE is not set 966# CONFIG_INPUT_MOUSE is not set
1026# CONFIG_INPUT_JOYSTICK is not set 967# CONFIG_INPUT_JOYSTICK is not set
968# CONFIG_INPUT_TABLET is not set
1027# CONFIG_INPUT_TOUCHSCREEN is not set 969# CONFIG_INPUT_TOUCHSCREEN is not set
1028# CONFIG_INPUT_MISC is not set 970# CONFIG_INPUT_MISC is not set
1029 971
@@ -1037,10 +979,13 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
1037# Character devices 979# Character devices
1038# 980#
1039CONFIG_VT=y 981CONFIG_VT=y
982CONFIG_CONSOLE_TRANSLATIONS=y
1040CONFIG_VT_CONSOLE=y 983CONFIG_VT_CONSOLE=y
1041CONFIG_HW_CONSOLE=y 984CONFIG_HW_CONSOLE=y
1042# CONFIG_VT_HW_CONSOLE_BINDING is not set 985# CONFIG_VT_HW_CONSOLE_BINDING is not set
986CONFIG_DEVKMEM=y
1043# CONFIG_SERIAL_NONSTANDARD is not set 987# CONFIG_SERIAL_NONSTANDARD is not set
988# CONFIG_NOZOMI is not set
1044 989
1045# 990#
1046# Serial drivers 991# Serial drivers
@@ -1059,15 +1004,36 @@ CONFIG_SERIAL_CORE_CONSOLE=y
1059CONFIG_UNIX98_PTYS=y 1004CONFIG_UNIX98_PTYS=y
1060CONFIG_LEGACY_PTYS=y 1005CONFIG_LEGACY_PTYS=y
1061CONFIG_LEGACY_PTY_COUNT=256 1006CONFIG_LEGACY_PTY_COUNT=256
1062
1063#
1064# IPMI
1065#
1066# CONFIG_IPMI_HANDLER is not set 1007# CONFIG_IPMI_HANDLER is not set
1067 1008CONFIG_HW_RANDOM=y
1068# 1009# CONFIG_R3964 is not set
1069# Watchdog Cards 1010# CONFIG_APPLICOM is not set
1070# 1011# CONFIG_RAW_DRIVER is not set
1012# CONFIG_TCG_TPM is not set
1013CONFIG_DEVPORT=y
1014# CONFIG_I2C is not set
1015# CONFIG_SPI is not set
1016# CONFIG_W1 is not set
1017# CONFIG_POWER_SUPPLY is not set
1018CONFIG_HWMON=y
1019# CONFIG_HWMON_VID is not set
1020# CONFIG_SENSORS_I5K_AMB is not set
1021# CONFIG_SENSORS_F71805F is not set
1022# CONFIG_SENSORS_F71882FG is not set
1023# CONFIG_SENSORS_IT87 is not set
1024# CONFIG_SENSORS_PC87360 is not set
1025# CONFIG_SENSORS_PC87427 is not set
1026# CONFIG_SENSORS_SIS5595 is not set
1027# CONFIG_SENSORS_SMSC47M1 is not set
1028# CONFIG_SENSORS_SMSC47B397 is not set
1029# CONFIG_SENSORS_VIA686A is not set
1030# CONFIG_SENSORS_VT1211 is not set
1031# CONFIG_SENSORS_VT8231 is not set
1032# CONFIG_SENSORS_W83627HF is not set
1033# CONFIG_SENSORS_W83627EHF is not set
1034# CONFIG_HWMON_DEBUG_CHIP is not set
1035# CONFIG_THERMAL is not set
1036# CONFIG_THERMAL_HWMON is not set
1071CONFIG_WATCHDOG=y 1037CONFIG_WATCHDOG=y
1072# CONFIG_WATCHDOG_NOWAYOUT is not set 1038# CONFIG_WATCHDOG_NOWAYOUT is not set
1073 1039
@@ -1075,6 +1041,7 @@ CONFIG_WATCHDOG=y
1075# Watchdog Device Drivers 1041# Watchdog Device Drivers
1076# 1042#
1077# CONFIG_SOFT_WATCHDOG is not set 1043# CONFIG_SOFT_WATCHDOG is not set
1044# CONFIG_ALIM7101_WDT is not set
1078CONFIG_SH_WDT=m 1045CONFIG_SH_WDT=m
1079# CONFIG_SH_WDT_MMAP is not set 1046# CONFIG_SH_WDT_MMAP is not set
1080 1047
@@ -1088,113 +1055,121 @@ CONFIG_SH_WDT=m
1088# USB-based Watchdog Cards 1055# USB-based Watchdog Cards
1089# 1056#
1090# CONFIG_USBPCWATCHDOG is not set 1057# CONFIG_USBPCWATCHDOG is not set
1091CONFIG_HW_RANDOM=y
1092# CONFIG_GEN_RTC is not set
1093# CONFIG_DTLK is not set
1094# CONFIG_R3964 is not set
1095# CONFIG_APPLICOM is not set
1096 1058
1097# 1059#
1098# Ftape, the floppy tape device driver 1060# Sonics Silicon Backplane
1099# 1061#
1100# CONFIG_DRM is not set 1062CONFIG_SSB_POSSIBLE=y
1101# CONFIG_RAW_DRIVER is not set 1063# CONFIG_SSB is not set
1102
1103#
1104# TPM devices
1105#
1106# CONFIG_TCG_TPM is not set
1107 1064
1108# 1065#
1109# I2C support 1066# Multifunction device drivers
1110# 1067#
1111# CONFIG_I2C is not set 1068# CONFIG_MFD_CORE is not set
1069# CONFIG_MFD_SM501 is not set
1070# CONFIG_HTC_PASIC3 is not set
1071# CONFIG_MFD_TMIO is not set
1072# CONFIG_MFD_WM8400 is not set
1112 1073
1113# 1074#
1114# SPI support 1075# Multimedia devices
1115# 1076#
1116# CONFIG_SPI is not set
1117# CONFIG_SPI_MASTER is not set
1118 1077
1119# 1078#
1120# Dallas's 1-wire bus 1079# Multimedia core support
1121# 1080#
1122# CONFIG_W1 is not set 1081# CONFIG_VIDEO_DEV is not set
1082# CONFIG_DVB_CORE is not set
1083# CONFIG_VIDEO_MEDIA is not set
1123 1084
1124# 1085#
1125# Hardware Monitoring support 1086# Multimedia drivers
1126# 1087#
1127CONFIG_HWMON=y 1088# CONFIG_DAB is not set
1128# CONFIG_HWMON_VID is not set
1129# CONFIG_SENSORS_ABITUGURU is not set
1130# CONFIG_SENSORS_F71805F is not set
1131# CONFIG_SENSORS_VT1211 is not set
1132# CONFIG_HWMON_DEBUG_CHIP is not set
1133 1089
1134# 1090#
1135# Multimedia devices 1091# Graphics support
1136# 1092#
1137# CONFIG_VIDEO_DEV is not set 1093# CONFIG_DRM is not set
1094# CONFIG_VGASTATE is not set
1095# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1096# CONFIG_FB is not set
1097# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1138 1098
1139# 1099#
1140# Digital Video Broadcasting Devices 1100# Display device support
1141# 1101#
1142# CONFIG_DVB is not set 1102# CONFIG_DISPLAY_SUPPORT is not set
1143# CONFIG_USB_DABUSB is not set
1144 1103
1145# 1104#
1146# Graphics support 1105# Console display driver support
1147# 1106#
1148CONFIG_FIRMWARE_EDID=y 1107CONFIG_DUMMY_CONSOLE=y
1149# CONFIG_FB is not set 1108# CONFIG_SOUND is not set
1109CONFIG_HID_SUPPORT=y
1110CONFIG_HID=y
1111# CONFIG_HID_DEBUG is not set
1112# CONFIG_HIDRAW is not set
1150 1113
1151# 1114#
1152# Console display driver support 1115# USB Input Devices
1153# 1116#
1154CONFIG_DUMMY_CONSOLE=y 1117# CONFIG_USB_HID is not set
1155# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1118# CONFIG_HID_PID is not set
1156 1119
1157# 1120#
1158# Sound 1121# USB HID Boot Protocol drivers
1159# 1122#
1160# CONFIG_SOUND is not set 1123# CONFIG_USB_KBD is not set
1124# CONFIG_USB_MOUSE is not set
1161 1125
1162# 1126#
1163# USB support 1127# Special HID drivers
1164# 1128#
1129CONFIG_HID_COMPAT=y
1130CONFIG_USB_SUPPORT=y
1165CONFIG_USB_ARCH_HAS_HCD=y 1131CONFIG_USB_ARCH_HAS_HCD=y
1166CONFIG_USB_ARCH_HAS_OHCI=y 1132CONFIG_USB_ARCH_HAS_OHCI=y
1167CONFIG_USB_ARCH_HAS_EHCI=y 1133CONFIG_USB_ARCH_HAS_EHCI=y
1168CONFIG_USB=y 1134CONFIG_USB=y
1169# CONFIG_USB_DEBUG is not set 1135# CONFIG_USB_DEBUG is not set
1136# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1170 1137
1171# 1138#
1172# Miscellaneous USB options 1139# Miscellaneous USB options
1173# 1140#
1174CONFIG_USB_DEVICEFS=y 1141CONFIG_USB_DEVICEFS=y
1175# CONFIG_USB_BANDWIDTH is not set 1142CONFIG_USB_DEVICE_CLASS=y
1176# CONFIG_USB_DYNAMIC_MINORS is not set 1143# CONFIG_USB_DYNAMIC_MINORS is not set
1177# CONFIG_USB_OTG is not set 1144# CONFIG_USB_OTG is not set
1145# CONFIG_USB_OTG_WHITELIST is not set
1146# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1147CONFIG_USB_MON=y
1178 1148
1179# 1149#
1180# USB Host Controller Drivers 1150# USB Host Controller Drivers
1181# 1151#
1152# CONFIG_USB_C67X00_HCD is not set
1182CONFIG_USB_EHCI_HCD=y 1153CONFIG_USB_EHCI_HCD=y
1183CONFIG_USB_EHCI_SPLIT_ISO=y
1184CONFIG_USB_EHCI_ROOT_HUB_TT=y 1154CONFIG_USB_EHCI_ROOT_HUB_TT=y
1185CONFIG_USB_EHCI_TT_NEWSCHED=y 1155CONFIG_USB_EHCI_TT_NEWSCHED=y
1186# CONFIG_USB_ISP116X_HCD is not set 1156# CONFIG_USB_ISP116X_HCD is not set
1157# CONFIG_USB_ISP1760_HCD is not set
1187CONFIG_USB_OHCI_HCD=y 1158CONFIG_USB_OHCI_HCD=y
1188# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1159# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1160# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1189CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1161CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1190# CONFIG_USB_UHCI_HCD is not set 1162# CONFIG_USB_UHCI_HCD is not set
1191# CONFIG_USB_SL811_HCD is not set 1163# CONFIG_USB_SL811_HCD is not set
1164# CONFIG_USB_R8A66597_HCD is not set
1192 1165
1193# 1166#
1194# USB Device Class drivers 1167# USB Device Class drivers
1195# 1168#
1196CONFIG_USB_ACM=m 1169CONFIG_USB_ACM=m
1197CONFIG_USB_PRINTER=m 1170CONFIG_USB_PRINTER=m
1171# CONFIG_USB_WDM is not set
1172# CONFIG_USB_TMC is not set
1198 1173
1199# 1174#
1200# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1175# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1207,76 +1182,34 @@ CONFIG_USB_STORAGE=y
1207# CONFIG_USB_STORAGE_DEBUG is not set 1182# CONFIG_USB_STORAGE_DEBUG is not set
1208# CONFIG_USB_STORAGE_DATAFAB is not set 1183# CONFIG_USB_STORAGE_DATAFAB is not set
1209# CONFIG_USB_STORAGE_FREECOM is not set 1184# CONFIG_USB_STORAGE_FREECOM is not set
1185# CONFIG_USB_STORAGE_ISD200 is not set
1210# CONFIG_USB_STORAGE_DPCM is not set 1186# CONFIG_USB_STORAGE_DPCM is not set
1211# CONFIG_USB_STORAGE_USBAT is not set 1187# CONFIG_USB_STORAGE_USBAT is not set
1212# CONFIG_USB_STORAGE_SDDR09 is not set 1188# CONFIG_USB_STORAGE_SDDR09 is not set
1213# CONFIG_USB_STORAGE_SDDR55 is not set 1189# CONFIG_USB_STORAGE_SDDR55 is not set
1214# CONFIG_USB_STORAGE_JUMPSHOT is not set 1190# CONFIG_USB_STORAGE_JUMPSHOT is not set
1215# CONFIG_USB_STORAGE_ALAUDA is not set 1191# CONFIG_USB_STORAGE_ALAUDA is not set
1192# CONFIG_USB_STORAGE_ONETOUCH is not set
1216# CONFIG_USB_STORAGE_KARMA is not set 1193# CONFIG_USB_STORAGE_KARMA is not set
1194# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1217# CONFIG_USB_LIBUSUAL is not set 1195# CONFIG_USB_LIBUSUAL is not set
1218 1196
1219# 1197#
1220# USB Input Devices
1221#
1222# CONFIG_USB_HID is not set
1223
1224#
1225# USB HID Boot Protocol drivers
1226#
1227# CONFIG_USB_KBD is not set
1228# CONFIG_USB_MOUSE is not set
1229# CONFIG_USB_AIPTEK is not set
1230# CONFIG_USB_WACOM is not set
1231# CONFIG_USB_ACECAD is not set
1232# CONFIG_USB_KBTAB is not set
1233# CONFIG_USB_POWERMATE is not set
1234# CONFIG_USB_TOUCHSCREEN is not set
1235# CONFIG_USB_YEALINK is not set
1236# CONFIG_USB_XPAD is not set
1237# CONFIG_USB_ATI_REMOTE is not set
1238# CONFIG_USB_ATI_REMOTE2 is not set
1239# CONFIG_USB_KEYSPAN_REMOTE is not set
1240# CONFIG_USB_APPLETOUCH is not set
1241
1242#
1243# USB Imaging devices 1198# USB Imaging devices
1244# 1199#
1245# CONFIG_USB_MDC800 is not set 1200# CONFIG_USB_MDC800 is not set
1246# CONFIG_USB_MICROTEK is not set 1201# CONFIG_USB_MICROTEK is not set
1247 1202
1248# 1203#
1249# USB Network Adapters
1250#
1251CONFIG_USB_CATC=m
1252CONFIG_USB_KAWETH=m
1253CONFIG_USB_PEGASUS=m
1254CONFIG_USB_RTL8150=m
1255CONFIG_USB_USBNET=m
1256CONFIG_USB_NET_AX8817X=m
1257CONFIG_USB_NET_CDCETHER=m
1258# CONFIG_USB_NET_GL620A is not set
1259CONFIG_USB_NET_NET1080=m
1260CONFIG_USB_NET_PLUSB=m
1261# CONFIG_USB_NET_MCS7830 is not set
1262# CONFIG_USB_NET_RNDIS_HOST is not set
1263# CONFIG_USB_NET_CDC_SUBSET is not set
1264CONFIG_USB_NET_ZAURUS=m
1265CONFIG_USB_MON=y
1266
1267#
1268# USB port drivers 1204# USB port drivers
1269# 1205#
1270
1271#
1272# USB Serial Converter support
1273#
1274CONFIG_USB_SERIAL=m 1206CONFIG_USB_SERIAL=m
1207# CONFIG_USB_EZUSB is not set
1275CONFIG_USB_SERIAL_GENERIC=y 1208CONFIG_USB_SERIAL_GENERIC=y
1276# CONFIG_USB_SERIAL_AIRCABLE is not set 1209# CONFIG_USB_SERIAL_AIRCABLE is not set
1277# CONFIG_USB_SERIAL_AIRPRIME is not set
1278CONFIG_USB_SERIAL_ARK3116=m 1210CONFIG_USB_SERIAL_ARK3116=m
1279# CONFIG_USB_SERIAL_BELKIN is not set 1211# CONFIG_USB_SERIAL_BELKIN is not set
1212# CONFIG_USB_SERIAL_CH341 is not set
1280# CONFIG_USB_SERIAL_WHITEHEAT is not set 1213# CONFIG_USB_SERIAL_WHITEHEAT is not set
1281# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set 1214# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
1282# CONFIG_USB_SERIAL_CP2101 is not set 1215# CONFIG_USB_SERIAL_CP2101 is not set
@@ -1291,6 +1224,7 @@ CONFIG_USB_SERIAL_ARK3116=m
1291# CONFIG_USB_SERIAL_EDGEPORT_TI is not set 1224# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
1292# CONFIG_USB_SERIAL_GARMIN is not set 1225# CONFIG_USB_SERIAL_GARMIN is not set
1293# CONFIG_USB_SERIAL_IPW is not set 1226# CONFIG_USB_SERIAL_IPW is not set
1227# CONFIG_USB_SERIAL_IUU is not set
1294# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set 1228# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
1295# CONFIG_USB_SERIAL_KEYSPAN is not set 1229# CONFIG_USB_SERIAL_KEYSPAN is not set
1296# CONFIG_USB_SERIAL_KLSI is not set 1230# CONFIG_USB_SERIAL_KLSI is not set
@@ -1298,8 +1232,11 @@ CONFIG_USB_SERIAL_ARK3116=m
1298# CONFIG_USB_SERIAL_MCT_U232 is not set 1232# CONFIG_USB_SERIAL_MCT_U232 is not set
1299# CONFIG_USB_SERIAL_MOS7720 is not set 1233# CONFIG_USB_SERIAL_MOS7720 is not set
1300# CONFIG_USB_SERIAL_MOS7840 is not set 1234# CONFIG_USB_SERIAL_MOS7840 is not set
1235# CONFIG_USB_SERIAL_MOTOROLA is not set
1301# CONFIG_USB_SERIAL_NAVMAN is not set 1236# CONFIG_USB_SERIAL_NAVMAN is not set
1302CONFIG_USB_SERIAL_PL2303=m 1237CONFIG_USB_SERIAL_PL2303=m
1238# CONFIG_USB_SERIAL_OTI6858 is not set
1239# CONFIG_USB_SERIAL_SPCP8X5 is not set
1303# CONFIG_USB_SERIAL_HP4X is not set 1240# CONFIG_USB_SERIAL_HP4X is not set
1304# CONFIG_USB_SERIAL_SAFE is not set 1241# CONFIG_USB_SERIAL_SAFE is not set
1305# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set 1242# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
@@ -1308,6 +1245,7 @@ CONFIG_USB_SERIAL_PL2303=m
1308# CONFIG_USB_SERIAL_XIRCOM is not set 1245# CONFIG_USB_SERIAL_XIRCOM is not set
1309# CONFIG_USB_SERIAL_OPTION is not set 1246# CONFIG_USB_SERIAL_OPTION is not set
1310# CONFIG_USB_SERIAL_OMNINET is not set 1247# CONFIG_USB_SERIAL_OMNINET is not set
1248# CONFIG_USB_SERIAL_DEBUG is not set
1311 1249
1312# 1250#
1313# USB Miscellaneous drivers 1251# USB Miscellaneous drivers
@@ -1315,10 +1253,11 @@ CONFIG_USB_SERIAL_PL2303=m
1315# CONFIG_USB_EMI62 is not set 1253# CONFIG_USB_EMI62 is not set
1316# CONFIG_USB_EMI26 is not set 1254# CONFIG_USB_EMI26 is not set
1317# CONFIG_USB_ADUTUX is not set 1255# CONFIG_USB_ADUTUX is not set
1318# CONFIG_USB_AUERSWALD is not set 1256# CONFIG_USB_SEVSEG is not set
1319# CONFIG_USB_RIO500 is not set 1257# CONFIG_USB_RIO500 is not set
1320# CONFIG_USB_LEGOTOWER is not set 1258# CONFIG_USB_LEGOTOWER is not set
1321# CONFIG_USB_LCD is not set 1259# CONFIG_USB_LCD is not set
1260# CONFIG_USB_BERRY_CHARGE is not set
1322# CONFIG_USB_LED is not set 1261# CONFIG_USB_LED is not set
1323# CONFIG_USB_CYPRESS_CY7C63 is not set 1262# CONFIG_USB_CYPRESS_CY7C63 is not set
1324# CONFIG_USB_CYTHERM is not set 1263# CONFIG_USB_CYTHERM is not set
@@ -1329,80 +1268,53 @@ CONFIG_USB_SERIAL_PL2303=m
1329# CONFIG_USB_SISUSBVGA is not set 1268# CONFIG_USB_SISUSBVGA is not set
1330# CONFIG_USB_LD is not set 1269# CONFIG_USB_LD is not set
1331# CONFIG_USB_TRANCEVIBRATOR is not set 1270# CONFIG_USB_TRANCEVIBRATOR is not set
1271# CONFIG_USB_IOWARRIOR is not set
1332# CONFIG_USB_TEST is not set 1272# CONFIG_USB_TEST is not set
1333 1273# CONFIG_USB_ISIGHTFW is not set
1334# 1274# CONFIG_USB_VST is not set
1335# USB DSL modem support
1336#
1337
1338#
1339# USB Gadget Support
1340#
1341# CONFIG_USB_GADGET is not set 1275# CONFIG_USB_GADGET is not set
1342
1343#
1344# MMC/SD Card support
1345#
1346# CONFIG_MMC is not set 1276# CONFIG_MMC is not set
1347 1277# CONFIG_MEMSTICK is not set
1348#
1349# LED devices
1350#
1351# CONFIG_NEW_LEDS is not set 1278# CONFIG_NEW_LEDS is not set
1352 1279# CONFIG_ACCESSIBILITY is not set
1353#
1354# LED drivers
1355#
1356
1357#
1358# LED Triggers
1359#
1360
1361#
1362# InfiniBand support
1363#
1364# CONFIG_INFINIBAND is not set 1280# CONFIG_INFINIBAND is not set
1365
1366#
1367# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1368#
1369
1370#
1371# Real Time Clock
1372#
1373CONFIG_RTC_LIB=m 1281CONFIG_RTC_LIB=m
1374CONFIG_RTC_CLASS=m 1282CONFIG_RTC_CLASS=m
1375 1283
1376# 1284#
1377# RTC interfaces 1285# RTC interfaces
1378# 1286#
1379CONFIG_RTC_INTF_SYSFS=m 1287CONFIG_RTC_INTF_SYSFS=y
1380CONFIG_RTC_INTF_PROC=m 1288CONFIG_RTC_INTF_PROC=y
1381CONFIG_RTC_INTF_DEV=m 1289CONFIG_RTC_INTF_DEV=y
1382# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 1290# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1383
1384#
1385# RTC drivers
1386#
1387# CONFIG_RTC_DRV_DS1553 is not set
1388# CONFIG_RTC_DRV_DS1742 is not set
1389# CONFIG_RTC_DRV_M48T86 is not set
1390CONFIG_RTC_DRV_SH=m
1391# CONFIG_RTC_DRV_TEST is not set 1291# CONFIG_RTC_DRV_TEST is not set
1392# CONFIG_RTC_DRV_V3020 is not set
1393 1292
1394# 1293#
1395# DMA Engine support 1294# SPI RTC drivers
1396# 1295#
1397# CONFIG_DMA_ENGINE is not set
1398 1296
1399# 1297#
1400# DMA Clients 1298# Platform RTC drivers
1401# 1299#
1300# CONFIG_RTC_DRV_DS1286 is not set
1301# CONFIG_RTC_DRV_DS1511 is not set
1302# CONFIG_RTC_DRV_DS1553 is not set
1303# CONFIG_RTC_DRV_DS1742 is not set
1304# CONFIG_RTC_DRV_STK17TA8 is not set
1305# CONFIG_RTC_DRV_M48T86 is not set
1306# CONFIG_RTC_DRV_M48T35 is not set
1307# CONFIG_RTC_DRV_M48T59 is not set
1308# CONFIG_RTC_DRV_BQ4802 is not set
1309# CONFIG_RTC_DRV_V3020 is not set
1402 1310
1403# 1311#
1404# DMA Devices 1312# on-CPU RTC drivers
1405# 1313#
1314CONFIG_RTC_DRV_SH=m
1315# CONFIG_DMADEVICES is not set
1316# CONFIG_UIO is not set
1317# CONFIG_STAGING is not set
1406 1318
1407# 1319#
1408# File systems 1320# File systems
@@ -1412,31 +1324,25 @@ CONFIG_EXT2_FS=y
1412# CONFIG_EXT2_FS_XIP is not set 1324# CONFIG_EXT2_FS_XIP is not set
1413CONFIG_EXT3_FS=y 1325CONFIG_EXT3_FS=y
1414# CONFIG_EXT3_FS_XATTR is not set 1326# CONFIG_EXT3_FS_XATTR is not set
1415CONFIG_EXT4DEV_FS=m 1327# CONFIG_EXT4_FS is not set
1416# CONFIG_EXT4DEV_FS_XATTR is not set
1417CONFIG_JBD=y 1328CONFIG_JBD=y
1418# CONFIG_JBD_DEBUG is not set
1419CONFIG_JBD2=m
1420# CONFIG_JBD2_DEBUG is not set
1421CONFIG_REISERFS_FS=m 1329CONFIG_REISERFS_FS=m
1422# CONFIG_REISERFS_CHECK is not set 1330# CONFIG_REISERFS_CHECK is not set
1423# CONFIG_REISERFS_PROC_INFO is not set 1331# CONFIG_REISERFS_PROC_INFO is not set
1424# CONFIG_REISERFS_FS_XATTR is not set 1332# CONFIG_REISERFS_FS_XATTR is not set
1425# CONFIG_JFS_FS is not set 1333# CONFIG_JFS_FS is not set
1426# CONFIG_FS_POSIX_ACL is not set 1334# CONFIG_FS_POSIX_ACL is not set
1335CONFIG_FILE_LOCKING=y
1427CONFIG_XFS_FS=m 1336CONFIG_XFS_FS=m
1428# CONFIG_XFS_QUOTA is not set 1337# CONFIG_XFS_QUOTA is not set
1429# CONFIG_XFS_SECURITY is not set
1430# CONFIG_XFS_POSIX_ACL is not set 1338# CONFIG_XFS_POSIX_ACL is not set
1431# CONFIG_XFS_RT is not set 1339# CONFIG_XFS_RT is not set
1432# CONFIG_GFS2_FS is not set 1340# CONFIG_XFS_DEBUG is not set
1433# CONFIG_OCFS2_FS is not set 1341# CONFIG_OCFS2_FS is not set
1434# CONFIG_MINIX_FS is not set 1342CONFIG_DNOTIFY=y
1435CONFIG_ROMFS_FS=y
1436CONFIG_INOTIFY=y 1343CONFIG_INOTIFY=y
1437CONFIG_INOTIFY_USER=y 1344CONFIG_INOTIFY_USER=y
1438# CONFIG_QUOTA is not set 1345# CONFIG_QUOTA is not set
1439CONFIG_DNOTIFY=y
1440# CONFIG_AUTOFS_FS is not set 1346# CONFIG_AUTOFS_FS is not set
1441# CONFIG_AUTOFS4_FS is not set 1347# CONFIG_AUTOFS4_FS is not set
1442CONFIG_FUSE_FS=m 1348CONFIG_FUSE_FS=m
@@ -1447,7 +1353,6 @@ CONFIG_FUSE_FS=m
1447CONFIG_ISO9660_FS=m 1353CONFIG_ISO9660_FS=m
1448CONFIG_JOLIET=y 1354CONFIG_JOLIET=y
1449CONFIG_ZISOFS=y 1355CONFIG_ZISOFS=y
1450CONFIG_ZISOFS_FS=m
1451CONFIG_UDF_FS=m 1356CONFIG_UDF_FS=m
1452CONFIG_UDF_NLS=y 1357CONFIG_UDF_NLS=y
1453 1358
@@ -1467,12 +1372,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1467CONFIG_PROC_FS=y 1372CONFIG_PROC_FS=y
1468CONFIG_PROC_KCORE=y 1373CONFIG_PROC_KCORE=y
1469CONFIG_PROC_SYSCTL=y 1374CONFIG_PROC_SYSCTL=y
1375CONFIG_PROC_PAGE_MONITOR=y
1470CONFIG_SYSFS=y 1376CONFIG_SYSFS=y
1471CONFIG_TMPFS=y 1377CONFIG_TMPFS=y
1472# CONFIG_TMPFS_POSIX_ACL is not set 1378# CONFIG_TMPFS_POSIX_ACL is not set
1473# CONFIG_HUGETLBFS is not set 1379# CONFIG_HUGETLBFS is not set
1474# CONFIG_HUGETLB_PAGE is not set 1380# CONFIG_HUGETLB_PAGE is not set
1475CONFIG_RAMFS=y
1476CONFIG_CONFIGFS_FS=m 1381CONFIG_CONFIGFS_FS=m
1477 1382
1478# 1383#
@@ -1485,34 +1390,32 @@ CONFIG_CONFIGFS_FS=m
1485# CONFIG_BEFS_FS is not set 1390# CONFIG_BEFS_FS is not set
1486# CONFIG_BFS_FS is not set 1391# CONFIG_BFS_FS is not set
1487# CONFIG_EFS_FS is not set 1392# CONFIG_EFS_FS is not set
1488# CONFIG_JFFS_FS is not set
1489# CONFIG_JFFS2_FS is not set 1393# CONFIG_JFFS2_FS is not set
1490# CONFIG_CRAMFS is not set 1394# CONFIG_CRAMFS is not set
1491# CONFIG_VXFS_FS is not set 1395# CONFIG_VXFS_FS is not set
1396# CONFIG_MINIX_FS is not set
1397# CONFIG_OMFS_FS is not set
1492# CONFIG_HPFS_FS is not set 1398# CONFIG_HPFS_FS is not set
1493# CONFIG_QNX4FS_FS is not set 1399# CONFIG_QNX4FS_FS is not set
1400CONFIG_ROMFS_FS=y
1494# CONFIG_SYSV_FS is not set 1401# CONFIG_SYSV_FS is not set
1495# CONFIG_UFS_FS is not set 1402# CONFIG_UFS_FS is not set
1496 1403CONFIG_NETWORK_FILESYSTEMS=y
1497#
1498# Network File Systems
1499#
1500CONFIG_NFS_FS=y 1404CONFIG_NFS_FS=y
1501CONFIG_NFS_V3=y 1405CONFIG_NFS_V3=y
1502# CONFIG_NFS_V3_ACL is not set 1406# CONFIG_NFS_V3_ACL is not set
1503# CONFIG_NFS_V4 is not set 1407# CONFIG_NFS_V4 is not set
1504# CONFIG_NFS_DIRECTIO is not set 1408CONFIG_ROOT_NFS=y
1505CONFIG_NFSD=y 1409CONFIG_NFSD=y
1506CONFIG_NFSD_V3=y 1410CONFIG_NFSD_V3=y
1507# CONFIG_NFSD_V3_ACL is not set 1411# CONFIG_NFSD_V3_ACL is not set
1508# CONFIG_NFSD_V4 is not set 1412# CONFIG_NFSD_V4 is not set
1509CONFIG_NFSD_TCP=y
1510CONFIG_ROOT_NFS=y
1511CONFIG_LOCKD=y 1413CONFIG_LOCKD=y
1512CONFIG_LOCKD_V4=y 1414CONFIG_LOCKD_V4=y
1513CONFIG_EXPORTFS=y 1415CONFIG_EXPORTFS=y
1514CONFIG_NFS_COMMON=y 1416CONFIG_NFS_COMMON=y
1515CONFIG_SUNRPC=y 1417CONFIG_SUNRPC=y
1418# CONFIG_SUNRPC_REGISTER_V4 is not set
1516# CONFIG_RPCSEC_GSS_KRB5 is not set 1419# CONFIG_RPCSEC_GSS_KRB5 is not set
1517# CONFIG_RPCSEC_GSS_SPKM3 is not set 1420# CONFIG_RPCSEC_GSS_SPKM3 is not set
1518CONFIG_SMB_FS=m 1421CONFIG_SMB_FS=m
@@ -1526,7 +1429,6 @@ CONFIG_CIFS_WEAK_PW_HASH=y
1526# CONFIG_NCP_FS is not set 1429# CONFIG_NCP_FS is not set
1527# CONFIG_CODA_FS is not set 1430# CONFIG_CODA_FS is not set
1528# CONFIG_AFS_FS is not set 1431# CONFIG_AFS_FS is not set
1529CONFIG_9P_FS=m
1530 1432
1531# 1433#
1532# Partition Types 1434# Partition Types
@@ -1548,10 +1450,7 @@ CONFIG_MSDOS_PARTITION=y
1548# CONFIG_SUN_PARTITION is not set 1450# CONFIG_SUN_PARTITION is not set
1549# CONFIG_KARMA_PARTITION is not set 1451# CONFIG_KARMA_PARTITION is not set
1550# CONFIG_EFI_PARTITION is not set 1452# CONFIG_EFI_PARTITION is not set
1551 1453# CONFIG_SYSV68_PARTITION is not set
1552#
1553# Native Language Support
1554#
1555CONFIG_NLS=m 1454CONFIG_NLS=m
1556CONFIG_NLS_DEFAULT="iso8859-1" 1455CONFIG_NLS_DEFAULT="iso8859-1"
1557CONFIG_NLS_CODEPAGE_437=m 1456CONFIG_NLS_CODEPAGE_437=m
@@ -1592,101 +1491,180 @@ CONFIG_NLS_ISO8859_1=m
1592# CONFIG_NLS_KOI8_R is not set 1491# CONFIG_NLS_KOI8_R is not set
1593# CONFIG_NLS_KOI8_U is not set 1492# CONFIG_NLS_KOI8_U is not set
1594CONFIG_NLS_UTF8=m 1493CONFIG_NLS_UTF8=m
1595 1494# CONFIG_DLM is not set
1596#
1597# Profiling support
1598#
1599# CONFIG_PROFILING is not set
1600 1495
1601# 1496#
1602# Kernel hacking 1497# Kernel hacking
1603# 1498#
1499CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1604# CONFIG_PRINTK_TIME is not set 1500# CONFIG_PRINTK_TIME is not set
1501CONFIG_ENABLE_WARN_DEPRECATED=y
1605CONFIG_ENABLE_MUST_CHECK=y 1502CONFIG_ENABLE_MUST_CHECK=y
1503CONFIG_FRAME_WARN=1024
1606CONFIG_MAGIC_SYSRQ=y 1504CONFIG_MAGIC_SYSRQ=y
1607# CONFIG_UNUSED_SYMBOLS is not set 1505# CONFIG_UNUSED_SYMBOLS is not set
1506# CONFIG_DEBUG_FS is not set
1507# CONFIG_HEADERS_CHECK is not set
1608CONFIG_DEBUG_KERNEL=y 1508CONFIG_DEBUG_KERNEL=y
1609CONFIG_LOG_BUF_SHIFT=16 1509# CONFIG_DEBUG_SHIRQ is not set
1610# CONFIG_DETECT_SOFTLOCKUP is not set 1510# CONFIG_DETECT_SOFTLOCKUP is not set
1511CONFIG_SCHED_DEBUG=y
1611# CONFIG_SCHEDSTATS is not set 1512# CONFIG_SCHEDSTATS is not set
1513# CONFIG_TIMER_STATS is not set
1514# CONFIG_DEBUG_OBJECTS is not set
1612# CONFIG_DEBUG_SLAB is not set 1515# CONFIG_DEBUG_SLAB is not set
1613# CONFIG_DEBUG_RT_MUTEXES is not set 1516# CONFIG_DEBUG_RT_MUTEXES is not set
1614# CONFIG_RT_MUTEX_TESTER is not set 1517# CONFIG_RT_MUTEX_TESTER is not set
1615# CONFIG_DEBUG_SPINLOCK is not set 1518# CONFIG_DEBUG_SPINLOCK is not set
1616# CONFIG_DEBUG_MUTEXES is not set 1519# CONFIG_DEBUG_MUTEXES is not set
1617# CONFIG_DEBUG_RWSEMS is not set 1520# CONFIG_DEBUG_LOCK_ALLOC is not set
1521# CONFIG_PROVE_LOCKING is not set
1522# CONFIG_LOCK_STAT is not set
1618# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1523# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1619# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1524# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1620# CONFIG_DEBUG_KOBJECT is not set 1525# CONFIG_DEBUG_KOBJECT is not set
1621# CONFIG_DEBUG_BUGVERBOSE is not set 1526# CONFIG_DEBUG_BUGVERBOSE is not set
1622# CONFIG_DEBUG_INFO is not set 1527# CONFIG_DEBUG_INFO is not set
1623# CONFIG_DEBUG_FS is not set
1624# CONFIG_DEBUG_VM is not set 1528# CONFIG_DEBUG_VM is not set
1529# CONFIG_DEBUG_WRITECOUNT is not set
1530# CONFIG_DEBUG_MEMORY_INIT is not set
1625# CONFIG_DEBUG_LIST is not set 1531# CONFIG_DEBUG_LIST is not set
1532# CONFIG_DEBUG_SG is not set
1626# CONFIG_FRAME_POINTER is not set 1533# CONFIG_FRAME_POINTER is not set
1627# CONFIG_FORCED_INLINING is not set
1628# CONFIG_HEADERS_CHECK is not set
1629# CONFIG_RCU_TORTURE_TEST is not set 1534# CONFIG_RCU_TORTURE_TEST is not set
1535# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1536# CONFIG_BACKTRACE_SELF_TEST is not set
1537# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1538# CONFIG_FAULT_INJECTION is not set
1539# CONFIG_LATENCYTOP is not set
1540CONFIG_NOP_TRACER=y
1541CONFIG_HAVE_FTRACE=y
1542# CONFIG_FTRACE is not set
1543# CONFIG_IRQSOFF_TRACER is not set
1544# CONFIG_SCHED_TRACER is not set
1545# CONFIG_CONTEXT_SWITCH_TRACER is not set
1546# CONFIG_BOOT_TRACER is not set
1547# CONFIG_STACK_TRACER is not set
1548# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1549# CONFIG_SAMPLES is not set
1630# CONFIG_SH_STANDARD_BIOS is not set 1550# CONFIG_SH_STANDARD_BIOS is not set
1631# CONFIG_EARLY_SCIF_CONSOLE is not set 1551# CONFIG_EARLY_SCIF_CONSOLE is not set
1632# CONFIG_EARLY_PRINTK is not set 1552# CONFIG_DEBUG_BOOTMEM is not set
1633# CONFIG_DEBUG_STACKOVERFLOW is not set 1553# CONFIG_DEBUG_STACKOVERFLOW is not set
1634# CONFIG_DEBUG_STACK_USAGE is not set 1554# CONFIG_DEBUG_STACK_USAGE is not set
1635# CONFIG_4KSTACKS is not set 1555# CONFIG_4KSTACKS is not set
1636# CONFIG_KGDB is not set 1556# CONFIG_IRQSTACKS is not set
1557# CONFIG_SH_KGDB is not set
1637 1558
1638# 1559#
1639# Security options 1560# Security options
1640# 1561#
1641# CONFIG_KEYS is not set 1562# CONFIG_KEYS is not set
1642# CONFIG_SECURITY is not set 1563# CONFIG_SECURITY is not set
1564# CONFIG_SECURITYFS is not set
1565# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1566CONFIG_CRYPTO=y
1643 1567
1644# 1568#
1645# Cryptographic options 1569# Crypto core or helper
1646# 1570#
1647CONFIG_CRYPTO=y 1571# CONFIG_CRYPTO_FIPS is not set
1648CONFIG_CRYPTO_ALGAPI=y 1572CONFIG_CRYPTO_ALGAPI=y
1573CONFIG_CRYPTO_AEAD=y
1649CONFIG_CRYPTO_BLKCIPHER=y 1574CONFIG_CRYPTO_BLKCIPHER=y
1650CONFIG_CRYPTO_HASH=y 1575CONFIG_CRYPTO_HASH=y
1576CONFIG_CRYPTO_RNG=y
1651CONFIG_CRYPTO_MANAGER=y 1577CONFIG_CRYPTO_MANAGER=y
1652CONFIG_CRYPTO_HMAC=y 1578# CONFIG_CRYPTO_GF128MUL is not set
1653CONFIG_CRYPTO_NULL=m 1579CONFIG_CRYPTO_NULL=m
1580# CONFIG_CRYPTO_CRYPTD is not set
1581CONFIG_CRYPTO_AUTHENC=y
1582# CONFIG_CRYPTO_TEST is not set
1583
1584#
1585# Authenticated Encryption with Associated Data
1586#
1587# CONFIG_CRYPTO_CCM is not set
1588# CONFIG_CRYPTO_GCM is not set
1589# CONFIG_CRYPTO_SEQIV is not set
1590
1591#
1592# Block modes
1593#
1594CONFIG_CRYPTO_CBC=y
1595# CONFIG_CRYPTO_CTR is not set
1596# CONFIG_CRYPTO_CTS is not set
1597CONFIG_CRYPTO_ECB=y
1598# CONFIG_CRYPTO_LRW is not set
1599# CONFIG_CRYPTO_PCBC is not set
1600# CONFIG_CRYPTO_XTS is not set
1601
1602#
1603# Hash modes
1604#
1605CONFIG_CRYPTO_HMAC=y
1606# CONFIG_CRYPTO_XCBC is not set
1607
1608#
1609# Digest
1610#
1611CONFIG_CRYPTO_CRC32C=m
1654CONFIG_CRYPTO_MD4=m 1612CONFIG_CRYPTO_MD4=m
1655CONFIG_CRYPTO_MD5=y 1613CONFIG_CRYPTO_MD5=y
1614CONFIG_CRYPTO_MICHAEL_MIC=y
1615# CONFIG_CRYPTO_RMD128 is not set
1616# CONFIG_CRYPTO_RMD160 is not set
1617# CONFIG_CRYPTO_RMD256 is not set
1618# CONFIG_CRYPTO_RMD320 is not set
1656CONFIG_CRYPTO_SHA1=y 1619CONFIG_CRYPTO_SHA1=y
1657CONFIG_CRYPTO_SHA256=m 1620CONFIG_CRYPTO_SHA256=m
1658CONFIG_CRYPTO_SHA512=m 1621CONFIG_CRYPTO_SHA512=m
1659CONFIG_CRYPTO_WP512=m
1660CONFIG_CRYPTO_TGR192=m 1622CONFIG_CRYPTO_TGR192=m
1661CONFIG_CRYPTO_ECB=y 1623CONFIG_CRYPTO_WP512=m
1662CONFIG_CRYPTO_CBC=y 1624
1663CONFIG_CRYPTO_DES=y 1625#
1664CONFIG_CRYPTO_BLOWFISH=m 1626# Ciphers
1665CONFIG_CRYPTO_TWOFISH=m 1627#
1666CONFIG_CRYPTO_TWOFISH_COMMON=m
1667CONFIG_CRYPTO_SERPENT=m
1668CONFIG_CRYPTO_AES=y 1628CONFIG_CRYPTO_AES=y
1629CONFIG_CRYPTO_ANUBIS=m
1630CONFIG_CRYPTO_ARC4=y
1631CONFIG_CRYPTO_BLOWFISH=m
1632# CONFIG_CRYPTO_CAMELLIA is not set
1669CONFIG_CRYPTO_CAST5=m 1633CONFIG_CRYPTO_CAST5=m
1670CONFIG_CRYPTO_CAST6=m 1634CONFIG_CRYPTO_CAST6=m
1671CONFIG_CRYPTO_TEA=m 1635CONFIG_CRYPTO_DES=y
1672CONFIG_CRYPTO_ARC4=y 1636# CONFIG_CRYPTO_FCRYPT is not set
1673CONFIG_CRYPTO_KHAZAD=m 1637CONFIG_CRYPTO_KHAZAD=m
1674CONFIG_CRYPTO_ANUBIS=m 1638# CONFIG_CRYPTO_SALSA20 is not set
1639# CONFIG_CRYPTO_SEED is not set
1640CONFIG_CRYPTO_SERPENT=m
1641CONFIG_CRYPTO_TEA=m
1642CONFIG_CRYPTO_TWOFISH=m
1643CONFIG_CRYPTO_TWOFISH_COMMON=m
1644
1645#
1646# Compression
1647#
1675CONFIG_CRYPTO_DEFLATE=y 1648CONFIG_CRYPTO_DEFLATE=y
1676CONFIG_CRYPTO_MICHAEL_MIC=y 1649# CONFIG_CRYPTO_LZO is not set
1677CONFIG_CRYPTO_CRC32C=m
1678# CONFIG_CRYPTO_TEST is not set
1679 1650
1680# 1651#
1681# Hardware crypto devices 1652# Random Number Generation
1682# 1653#
1654# CONFIG_CRYPTO_ANSI_CPRNG is not set
1655CONFIG_CRYPTO_HW=y
1656# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1683 1657
1684# 1658#
1685# Library routines 1659# Library routines
1686# 1660#
1661CONFIG_BITREVERSE=y
1687CONFIG_CRC_CCITT=m 1662CONFIG_CRC_CCITT=m
1688CONFIG_CRC16=m 1663CONFIG_CRC16=m
1664# CONFIG_CRC_T10DIF is not set
1665CONFIG_CRC_ITU_T=m
1689CONFIG_CRC32=y 1666CONFIG_CRC32=y
1667# CONFIG_CRC7 is not set
1690CONFIG_LIBCRC32C=m 1668CONFIG_LIBCRC32C=m
1691CONFIG_ZLIB_INFLATE=y 1669CONFIG_ZLIB_INFLATE=y
1692CONFIG_ZLIB_DEFLATE=y 1670CONFIG_ZLIB_DEFLATE=y
@@ -1695,3 +1673,6 @@ CONFIG_TEXTSEARCH_KMP=m
1695CONFIG_TEXTSEARCH_BM=m 1673CONFIG_TEXTSEARCH_BM=m
1696CONFIG_TEXTSEARCH_FSM=m 1674CONFIG_TEXTSEARCH_FSM=m
1697CONFIG_PLIST=y 1675CONFIG_PLIST=y
1676CONFIG_HAS_IOMEM=y
1677CONFIG_HAS_IOPORT=y
1678CONFIG_HAS_DMA=y
diff --git a/arch/sh/include/asm/gpio.h b/arch/sh/include/asm/gpio.h
index 9650e7c9c39e..90673658eb14 100644
--- a/arch/sh/include/asm/gpio.h
+++ b/arch/sh/include/asm/gpio.h
@@ -12,6 +12,9 @@
12#ifndef __ASM_SH_GPIO_H 12#ifndef __ASM_SH_GPIO_H
13#define __ASM_SH_GPIO_H 13#define __ASM_SH_GPIO_H
14 14
15#include <linux/kernel.h>
16#include <linux/errno.h>
17
15#if defined(CONFIG_CPU_SH3) 18#if defined(CONFIG_CPU_SH3)
16#include <cpu/gpio.h> 19#include <cpu/gpio.h>
17#endif 20#endif
@@ -62,6 +65,7 @@ struct pinmux_data_reg {
62struct pinmux_range { 65struct pinmux_range {
63 pinmux_enum_t begin; 66 pinmux_enum_t begin;
64 pinmux_enum_t end; 67 pinmux_enum_t end;
68 pinmux_enum_t force;
65}; 69};
66 70
67struct pinmux_info { 71struct pinmux_info {
@@ -99,9 +103,20 @@ int gpio_direction_input(unsigned gpio);
99int gpio_direction_output(unsigned gpio, int value); 103int gpio_direction_output(unsigned gpio, int value);
100int gpio_get_value(unsigned gpio); 104int gpio_get_value(unsigned gpio);
101void gpio_set_value(unsigned gpio, int value); 105void gpio_set_value(unsigned gpio, int value);
102static inline int gpio_export(unsigned gpio, bool direction_may_change) 106
107/* IRQ modes are unspported */
108static inline int gpio_to_irq(unsigned gpio)
109{
110 WARN_ON(1);
111 return -EINVAL;
112}
113
114static inline int irq_to_gpio(unsigned irq)
103{ 115{
104 return 0; 116 WARN_ON(1);
117 return -EINVAL;
105} 118}
106 119
120#include <asm-generic/gpio.h>
121
107#endif /* __ASM_SH_GPIO_H */ 122#endif /* __ASM_SH_GPIO_H */
diff --git a/arch/sh/include/asm/kdebug.h b/arch/sh/include/asm/kdebug.h
index 49cd69051a88..0b9f896f203c 100644
--- a/arch/sh/include/asm/kdebug.h
+++ b/arch/sh/include/asm/kdebug.h
@@ -4,6 +4,7 @@
4/* Grossly misnamed. */ 4/* Grossly misnamed. */
5enum die_val { 5enum die_val {
6 DIE_TRAP, 6 DIE_TRAP,
7 DIE_OOPS,
7}; 8};
8 9
9#endif /* __ASM_SH_KDEBUG_H */ 10#endif /* __ASM_SH_KDEBUG_H */
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7785.h b/arch/sh/include/cpu-sh4/cpu/sh7785.h
new file mode 100644
index 000000000000..e4006afb735e
--- /dev/null
+++ b/arch/sh/include/cpu-sh4/cpu/sh7785.h
@@ -0,0 +1,234 @@
1#ifndef __ASM_SH7785_H__
2#define __ASM_SH7785_H__
3
4enum {
5 /* PA */
6 GPIO_PA7, GPIO_PA6, GPIO_PA5, GPIO_PA4,
7 GPIO_PA3, GPIO_PA2, GPIO_PA1, GPIO_PA0,
8
9 /* PB */
10 GPIO_PB7, GPIO_PB6, GPIO_PB5, GPIO_PB4,
11 GPIO_PB3, GPIO_PB2, GPIO_PB1, GPIO_PB0,
12
13 /* PC */
14 GPIO_PC7, GPIO_PC6, GPIO_PC5, GPIO_PC4,
15 GPIO_PC3, GPIO_PC2, GPIO_PC1, GPIO_PC0,
16
17 /* PD */
18 GPIO_PD7, GPIO_PD6, GPIO_PD5, GPIO_PD4,
19 GPIO_PD3, GPIO_PD2, GPIO_PD1, GPIO_PD0,
20
21 /* PE */
22 GPIO_PE5, GPIO_PE4, GPIO_PE3, GPIO_PE2,
23 GPIO_PE1, GPIO_PE0,
24
25 /* PF */
26 GPIO_PF7, GPIO_PF6, GPIO_PF5, GPIO_PF4,
27 GPIO_PF3, GPIO_PF2, GPIO_PF1, GPIO_PF0,
28
29 /* PG */
30 GPIO_PG7, GPIO_PG6, GPIO_PG5, GPIO_PG4,
31 GPIO_PG3, GPIO_PG2, GPIO_PG1, GPIO_PG0,
32
33 /* PH */
34 GPIO_PH7, GPIO_PH6, GPIO_PH5, GPIO_PH4,
35 GPIO_PH3, GPIO_PH2, GPIO_PH1, GPIO_PH0,
36
37 /* PJ */
38 GPIO_PJ7, GPIO_PJ6, GPIO_PJ5, GPIO_PJ4,
39 GPIO_PJ3, GPIO_PJ2, GPIO_PJ1, GPIO_PJ0,
40
41 /* PK */
42 GPIO_PK7, GPIO_PK6, GPIO_PK5, GPIO_PK4,
43 GPIO_PK3, GPIO_PK2, GPIO_PK1, GPIO_PK0,
44
45 /* PL */
46 GPIO_PL7, GPIO_PL6, GPIO_PL5, GPIO_PL4,
47 GPIO_PL3, GPIO_PL2, GPIO_PL1, GPIO_PL0,
48
49 /* PM */
50 GPIO_PM1, GPIO_PM0,
51
52 /* PN */
53 GPIO_PN7, GPIO_PN6, GPIO_PN5, GPIO_PN4,
54 GPIO_PN3, GPIO_PN2, GPIO_PN1, GPIO_PN0,
55
56 /* PP */
57 GPIO_PP5, GPIO_PP4,
58 GPIO_PP3, GPIO_PP2, GPIO_PP1, GPIO_PP0,
59
60 /* PQ */
61 GPIO_PQ4,
62 GPIO_PQ3, GPIO_PQ2, GPIO_PQ1, GPIO_PQ0,
63
64 /* PR */
65 GPIO_PR3, GPIO_PR2, GPIO_PR1, GPIO_PR0,
66
67 GPIO_FN_D63_AD31,
68 GPIO_FN_D62_AD30,
69 GPIO_FN_D61_AD29,
70 GPIO_FN_D60_AD28,
71 GPIO_FN_D59_AD27,
72 GPIO_FN_D58_AD26,
73 GPIO_FN_D57_AD25,
74 GPIO_FN_D56_AD24,
75 GPIO_FN_D55_AD23,
76 GPIO_FN_D54_AD22,
77 GPIO_FN_D53_AD21,
78 GPIO_FN_D52_AD20,
79 GPIO_FN_D51_AD19,
80 GPIO_FN_D50_AD18,
81 GPIO_FN_D49_AD17_DB5,
82 GPIO_FN_D48_AD16_DB4,
83 GPIO_FN_D47_AD15_DB3,
84 GPIO_FN_D46_AD14_DB2,
85 GPIO_FN_D45_AD13_DB1,
86 GPIO_FN_D44_AD12_DB0,
87 GPIO_FN_D43_AD11_DG5,
88 GPIO_FN_D42_AD10_DG4,
89 GPIO_FN_D41_AD9_DG3,
90 GPIO_FN_D40_AD8_DG2,
91 GPIO_FN_D39_AD7_DG1,
92 GPIO_FN_D38_AD6_DG0,
93 GPIO_FN_D37_AD5_DR5,
94 GPIO_FN_D36_AD4_DR4,
95 GPIO_FN_D35_AD3_DR3,
96 GPIO_FN_D34_AD2_DR2,
97 GPIO_FN_D33_AD1_DR1,
98 GPIO_FN_D32_AD0_DR0,
99 GPIO_FN_REQ1,
100 GPIO_FN_REQ2,
101 GPIO_FN_REQ3,
102 GPIO_FN_GNT1,
103 GPIO_FN_GNT2,
104 GPIO_FN_GNT3,
105 GPIO_FN_MMCCLK,
106 GPIO_FN_D31,
107 GPIO_FN_D30,
108 GPIO_FN_D29,
109 GPIO_FN_D28,
110 GPIO_FN_D27,
111 GPIO_FN_D26,
112 GPIO_FN_D25,
113 GPIO_FN_D24,
114 GPIO_FN_D23,
115 GPIO_FN_D22,
116 GPIO_FN_D21,
117 GPIO_FN_D20,
118 GPIO_FN_D19,
119 GPIO_FN_D18,
120 GPIO_FN_D17,
121 GPIO_FN_D16,
122 GPIO_FN_SCIF1_SCK,
123 GPIO_FN_SCIF1_RXD,
124 GPIO_FN_SCIF1_TXD,
125 GPIO_FN_SCIF0_CTS,
126 GPIO_FN_INTD,
127 GPIO_FN_FCE,
128 GPIO_FN_SCIF0_RTS,
129 GPIO_FN_HSPI_CS,
130 GPIO_FN_FSE,
131 GPIO_FN_SCIF0_SCK,
132 GPIO_FN_HSPI_CLK,
133 GPIO_FN_FRE,
134 GPIO_FN_SCIF0_RXD,
135 GPIO_FN_HSPI_RX,
136 GPIO_FN_FRB,
137 GPIO_FN_SCIF0_TXD,
138 GPIO_FN_HSPI_TX,
139 GPIO_FN_FWE,
140 GPIO_FN_SCIF5_TXD,
141 GPIO_FN_HAC1_SYNC,
142 GPIO_FN_SSI1_WS,
143 GPIO_FN_SIOF_TXD_PJ,
144 GPIO_FN_HAC0_SDOUT,
145 GPIO_FN_SSI0_SDATA,
146 GPIO_FN_SIOF_RXD_PJ,
147 GPIO_FN_HAC0_SDIN,
148 GPIO_FN_SSI0_SCK,
149 GPIO_FN_SIOF_SYNC_PJ,
150 GPIO_FN_HAC0_SYNC,
151 GPIO_FN_SSI0_WS,
152 GPIO_FN_SIOF_MCLK_PJ,
153 GPIO_FN_HAC_RES,
154 GPIO_FN_SIOF_SCK_PJ,
155 GPIO_FN_HAC0_BITCLK,
156 GPIO_FN_SSI0_CLK,
157 GPIO_FN_HAC1_BITCLK,
158 GPIO_FN_SSI1_CLK,
159 GPIO_FN_TCLK,
160 GPIO_FN_IOIS16,
161 GPIO_FN_STATUS0,
162 GPIO_FN_DRAK0_PK3,
163 GPIO_FN_STATUS1,
164 GPIO_FN_DRAK1_PK2,
165 GPIO_FN_DACK2,
166 GPIO_FN_SCIF2_TXD,
167 GPIO_FN_MMCCMD,
168 GPIO_FN_SIOF_TXD_PK,
169 GPIO_FN_DACK3,
170 GPIO_FN_SCIF2_SCK,
171 GPIO_FN_MMCDAT,
172 GPIO_FN_SIOF_SCK_PK,
173 GPIO_FN_DREQ0,
174 GPIO_FN_DREQ1,
175 GPIO_FN_DRAK0_PK1,
176 GPIO_FN_DRAK1_PK0,
177 GPIO_FN_DREQ2,
178 GPIO_FN_INTB,
179 GPIO_FN_DREQ3,
180 GPIO_FN_INTC,
181 GPIO_FN_DRAK2,
182 GPIO_FN_CE2A,
183 GPIO_FN_IRL4,
184 GPIO_FN_FD4,
185 GPIO_FN_IRL5,
186 GPIO_FN_FD5,
187 GPIO_FN_IRL6,
188 GPIO_FN_FD6,
189 GPIO_FN_IRL7,
190 GPIO_FN_FD7,
191 GPIO_FN_DRAK3,
192 GPIO_FN_CE2B,
193 GPIO_FN_BREQ_BSACK,
194 GPIO_FN_BACK_BSREQ,
195 GPIO_FN_SCIF5_RXD,
196 GPIO_FN_HAC1_SDIN,
197 GPIO_FN_SSI1_SCK,
198 GPIO_FN_SCIF5_SCK,
199 GPIO_FN_HAC1_SDOUT,
200 GPIO_FN_SSI1_SDATA,
201 GPIO_FN_SCIF3_TXD,
202 GPIO_FN_FCLE,
203 GPIO_FN_SCIF3_RXD,
204 GPIO_FN_FALE,
205 GPIO_FN_SCIF3_SCK,
206 GPIO_FN_FD0,
207 GPIO_FN_SCIF4_TXD,
208 GPIO_FN_FD1,
209 GPIO_FN_SCIF4_RXD,
210 GPIO_FN_FD2,
211 GPIO_FN_SCIF4_SCK,
212 GPIO_FN_FD3,
213 GPIO_FN_DEVSEL_DCLKOUT,
214 GPIO_FN_STOP_CDE,
215 GPIO_FN_LOCK_ODDF,
216 GPIO_FN_TRDY_DISPL,
217 GPIO_FN_IRDY_HSYNC,
218 GPIO_FN_PCIFRAME_VSYNC,
219 GPIO_FN_INTA,
220 GPIO_FN_GNT0_GNTIN,
221 GPIO_FN_REQ0_REQOUT,
222 GPIO_FN_PERR,
223 GPIO_FN_SERR,
224 GPIO_FN_WE7_CBE3,
225 GPIO_FN_WE6_CBE2,
226 GPIO_FN_WE5_CBE1,
227 GPIO_FN_WE4_CBE0,
228 GPIO_FN_SCIF2_RXD,
229 GPIO_FN_SIOF_RXD,
230 GPIO_FN_MRESETOUT,
231 GPIO_FN_IRQOUT,
232};
233
234#endif /* __ASM_SH7785_H__ */
diff --git a/arch/sh/include/mach-common/mach/highlander.h b/arch/sh/include/mach-common/mach/highlander.h
index 306f7359f7d4..bd26a848cb0b 100644
--- a/arch/sh/include/mach-common/mach/highlander.h
+++ b/arch/sh/include/mach-common/mach/highlander.h
@@ -195,4 +195,10 @@
195 195
196unsigned char *highlander_plat_irq_setup(void); 196unsigned char *highlander_plat_irq_setup(void);
197 197
198#ifdef CONFIG_SH_R7785RP
199void highlander_plat_pinmux_setup(void);
200#else
201#define highlander_plat_pinmux_setup() do { } while (0)
202#endif
203
198#endif /* __ASM_SH_RENESAS_R7780RP */ 204#endif /* __ASM_SH_RENESAS_R7780RP */
diff --git a/arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c b/arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
index 39a5b880418f..c465af7283fc 100644
--- a/arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
+++ b/arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
@@ -11,7 +11,7 @@
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/gpio.h> 13#include <linux/gpio.h>
14#include <asm/sh7203.h> 14#include <cpu/sh7203.h>
15 15
16enum { 16enum {
17 PINMUX_RESERVED = 0, 17 PINMUX_RESERVED = 0,
@@ -46,11 +46,10 @@ enum {
46 PINMUX_DATA_END, 46 PINMUX_DATA_END,
47 47
48 PINMUX_INPUT_BEGIN, 48 PINMUX_INPUT_BEGIN,
49 FORCE_IN,
49 PA7_IN, PA6_IN, PA5_IN, PA4_IN, 50 PA7_IN, PA6_IN, PA5_IN, PA4_IN,
50 PA3_IN, PA2_IN, PA1_IN, PA0_IN, 51 PA3_IN, PA2_IN, PA1_IN, PA0_IN,
51 PB11_IN, PB10_IN, PB9_IN, PB8_IN, 52 PB11_IN, PB10_IN, PB9_IN, PB8_IN,
52 PB7_IN, PB6_IN, PB5_IN, PB4_IN,
53 PB3_IN, PB2_IN, PB1_IN, PB0_IN,
54 PC14_IN, PC13_IN, PC12_IN, 53 PC14_IN, PC13_IN, PC12_IN,
55 PC11_IN, PC10_IN, PC9_IN, PC8_IN, 54 PC11_IN, PC10_IN, PC9_IN, PC8_IN,
56 PC7_IN, PC6_IN, PC5_IN, PC4_IN, 55 PC7_IN, PC6_IN, PC5_IN, PC4_IN,
@@ -74,7 +73,7 @@ enum {
74 PINMUX_INPUT_END, 73 PINMUX_INPUT_END,
75 74
76 PINMUX_OUTPUT_BEGIN, 75 PINMUX_OUTPUT_BEGIN,
77 PB12_OUT, 76 FORCE_OUT,
78 PB11_OUT, PB10_OUT, PB9_OUT, PB8_OUT, 77 PB11_OUT, PB10_OUT, PB9_OUT, PB8_OUT,
79 PC14_OUT, PC13_OUT, PC12_OUT, 78 PC14_OUT, PC13_OUT, PC12_OUT,
80 PC11_OUT, PC10_OUT, PC9_OUT, PC8_OUT, 79 PC11_OUT, PC10_OUT, PC9_OUT, PC8_OUT,
@@ -285,7 +284,7 @@ static pinmux_enum_t pinmux_data[] = {
285 PINMUX_DATA(PA0_DATA, PA0_IN), 284 PINMUX_DATA(PA0_DATA, PA0_IN),
286 285
287 /* PB */ 286 /* PB */
288 PINMUX_DATA(PB12_DATA, PB12MD_00, PB12_OUT), 287 PINMUX_DATA(PB12_DATA, PB12MD_00, FORCE_OUT),
289 PINMUX_DATA(WDTOVF_MARK, PB12MD_01), 288 PINMUX_DATA(WDTOVF_MARK, PB12MD_01),
290 PINMUX_DATA(IRQOUT_MARK, PB12MD_10, PB12IRQ_00), 289 PINMUX_DATA(IRQOUT_MARK, PB12MD_10, PB12IRQ_00),
291 PINMUX_DATA(REFOUT_MARK, PB12MD_10, PB12IRQ_01), 290 PINMUX_DATA(REFOUT_MARK, PB12MD_10, PB12IRQ_01),
@@ -306,42 +305,42 @@ static pinmux_enum_t pinmux_data[] = {
306 PINMUX_DATA(CRX0_MARK, PB8MD_01), 305 PINMUX_DATA(CRX0_MARK, PB8MD_01),
307 PINMUX_DATA(CRX0_CRX1_MARK, PB8MD_10), 306 PINMUX_DATA(CRX0_CRX1_MARK, PB8MD_10),
308 307
309 PINMUX_DATA(PB7_DATA, PB7MD_00, PB7_IN), 308 PINMUX_DATA(PB7_DATA, PB7MD_00, FORCE_IN),
310 PINMUX_DATA(SDA3_MARK, PB7MD_01), 309 PINMUX_DATA(SDA3_MARK, PB7MD_01),
311 PINMUX_DATA(PINT7_PB_MARK, PB7MD_10), 310 PINMUX_DATA(PINT7_PB_MARK, PB7MD_10),
312 PINMUX_DATA(IRQ7_PB_MARK, PB7MD_11), 311 PINMUX_DATA(IRQ7_PB_MARK, PB7MD_11),
313 312
314 PINMUX_DATA(PB6_DATA, PB6MD_00, PB6_IN), 313 PINMUX_DATA(PB6_DATA, PB6MD_00, FORCE_IN),
315 PINMUX_DATA(SCL3_MARK, PB6MD_01), 314 PINMUX_DATA(SCL3_MARK, PB6MD_01),
316 PINMUX_DATA(PINT6_PB_MARK, PB6MD_10), 315 PINMUX_DATA(PINT6_PB_MARK, PB6MD_10),
317 PINMUX_DATA(IRQ6_PB_MARK, PB6MD_11), 316 PINMUX_DATA(IRQ6_PB_MARK, PB6MD_11),
318 317
319 PINMUX_DATA(PB5_DATA, PB5MD_00, PB5_IN), 318 PINMUX_DATA(PB5_DATA, PB5MD_00, FORCE_IN),
320 PINMUX_DATA(SDA2_MARK, PB6MD_01), 319 PINMUX_DATA(SDA2_MARK, PB6MD_01),
321 PINMUX_DATA(PINT5_PB_MARK, PB6MD_10), 320 PINMUX_DATA(PINT5_PB_MARK, PB6MD_10),
322 PINMUX_DATA(IRQ5_PB_MARK, PB6MD_11), 321 PINMUX_DATA(IRQ5_PB_MARK, PB6MD_11),
323 322
324 PINMUX_DATA(PB4_DATA, PB4MD_00, PB4_IN), 323 PINMUX_DATA(PB4_DATA, PB4MD_00, FORCE_IN),
325 PINMUX_DATA(SCL2_MARK, PB4MD_01), 324 PINMUX_DATA(SCL2_MARK, PB4MD_01),
326 PINMUX_DATA(PINT4_PB_MARK, PB4MD_10), 325 PINMUX_DATA(PINT4_PB_MARK, PB4MD_10),
327 PINMUX_DATA(IRQ4_PB_MARK, PB4MD_11), 326 PINMUX_DATA(IRQ4_PB_MARK, PB4MD_11),
328 327
329 PINMUX_DATA(PB3_DATA, PB3MD_00, PB3_IN), 328 PINMUX_DATA(PB3_DATA, PB3MD_00, FORCE_IN),
330 PINMUX_DATA(SDA1_MARK, PB3MD_01), 329 PINMUX_DATA(SDA1_MARK, PB3MD_01),
331 PINMUX_DATA(PINT3_PB_MARK, PB3MD_10), 330 PINMUX_DATA(PINT3_PB_MARK, PB3MD_10),
332 PINMUX_DATA(IRQ3_PB_MARK, PB3MD_11), 331 PINMUX_DATA(IRQ3_PB_MARK, PB3MD_11),
333 332
334 PINMUX_DATA(PB2_DATA, PB2MD_00, PB2_IN), 333 PINMUX_DATA(PB2_DATA, PB2MD_00, FORCE_IN),
335 PINMUX_DATA(SCL1_MARK, PB2MD_01), 334 PINMUX_DATA(SCL1_MARK, PB2MD_01),
336 PINMUX_DATA(PINT2_PB_MARK, PB2MD_10), 335 PINMUX_DATA(PINT2_PB_MARK, PB2MD_10),
337 PINMUX_DATA(IRQ2_PB_MARK, PB2MD_11), 336 PINMUX_DATA(IRQ2_PB_MARK, PB2MD_11),
338 337
339 PINMUX_DATA(PB1_DATA, PB1MD_00, PB1_IN), 338 PINMUX_DATA(PB1_DATA, PB1MD_00, FORCE_IN),
340 PINMUX_DATA(SDA0_MARK, PB1MD_01), 339 PINMUX_DATA(SDA0_MARK, PB1MD_01),
341 PINMUX_DATA(PINT1_PB_MARK, PB1MD_10), 340 PINMUX_DATA(PINT1_PB_MARK, PB1MD_10),
342 PINMUX_DATA(IRQ1_PB_MARK, PB1MD_11), 341 PINMUX_DATA(IRQ1_PB_MARK, PB1MD_11),
343 342
344 PINMUX_DATA(PB0_DATA, PB0MD_00, PB0_IN), 343 PINMUX_DATA(PB0_DATA, PB0MD_00, FORCE_IN),
345 PINMUX_DATA(SCL0_MARK, PB0MD_01), 344 PINMUX_DATA(SCL0_MARK, PB0MD_01),
346 PINMUX_DATA(PINT0_PB_MARK, PB0MD_10), 345 PINMUX_DATA(PINT0_PB_MARK, PB0MD_10),
347 PINMUX_DATA(IRQ0_PB_MARK, PB0MD_11), 346 PINMUX_DATA(IRQ0_PB_MARK, PB0MD_11),
@@ -1575,8 +1574,8 @@ static struct pinmux_info sh7203_pinmux_info = {
1575 .name = "sh7203_pfc", 1574 .name = "sh7203_pfc",
1576 .reserved_id = PINMUX_RESERVED, 1575 .reserved_id = PINMUX_RESERVED,
1577 .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END }, 1576 .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
1578 .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END }, 1577 .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END, FORCE_IN },
1579 .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END }, 1578 .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END, FORCE_OUT },
1580 .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END }, 1579 .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
1581 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, 1580 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
1582 1581
@@ -1595,5 +1594,4 @@ static int __init plat_pinmux_setup(void)
1595{ 1594{
1596 return register_pinmux(&sh7203_pinmux_info); 1595 return register_pinmux(&sh7203_pinmux_info);
1597} 1596}
1598
1599arch_initcall(plat_pinmux_setup); 1597arch_initcall(plat_pinmux_setup);
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile
index be9a0c185958..8e344ec5847e 100644
--- a/arch/sh/kernel/cpu/sh4a/Makefile
+++ b/arch/sh/kernel/cpu/sh4a/Makefile
@@ -30,6 +30,7 @@ clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o
30# Pinmux setup 30# Pinmux setup
31pinmux-$(CONFIG_CPU_SUBTYPE_SH7722) := pinmux-sh7722.o 31pinmux-$(CONFIG_CPU_SUBTYPE_SH7722) := pinmux-sh7722.o
32pinmux-$(CONFIG_CPU_SUBTYPE_SH7723) := pinmux-sh7723.o 32pinmux-$(CONFIG_CPU_SUBTYPE_SH7723) := pinmux-sh7723.o
33pinmux-$(CONFIG_CPU_SUBTYPE_SH7785) := pinmux-sh7785.o
33 34
34obj-y += $(clock-y) 35obj-y += $(clock-y)
35obj-$(CONFIG_SMP) += $(smp-y) 36obj-$(CONFIG_SMP) += $(smp-y)
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7763.c b/arch/sh/kernel/cpu/sh4a/clock-sh7763.c
index 45889d412c80..3177d0d1e06d 100644
--- a/arch/sh/kernel/cpu/sh4a/clock-sh7763.c
+++ b/arch/sh/kernel/cpu/sh4a/clock-sh7763.c
@@ -18,7 +18,6 @@
18 18
19static int bfc_divisors[] = { 1, 1, 1, 8, 1, 1, 1, 1 }; 19static int bfc_divisors[] = { 1, 1, 1, 8, 1, 1, 1, 1 };
20static int p0fc_divisors[] = { 1, 1, 1, 8, 1, 1, 1, 1 }; 20static int p0fc_divisors[] = { 1, 1, 1, 8, 1, 1, 1, 1 };
21static int p1fc_divisors[] = { 1, 1, 1, 16, 1, 1, 1, 1 };
22static int cfc_divisors[] = { 1, 1, 4, 1, 1, 1, 1, 1 }; 21static int cfc_divisors[] = { 1, 1, 4, 1, 1, 1, 1, 1 };
23 22
24static void master_clk_init(struct clk *clk) 23static void master_clk_init(struct clk *clk)
diff --git a/arch/sh/kernel/cpu/sh4a/pinmux-sh7785.c b/arch/sh/kernel/cpu/sh4a/pinmux-sh7785.c
new file mode 100644
index 000000000000..5ebc25fd9b2a
--- /dev/null
+++ b/arch/sh/kernel/cpu/sh4a/pinmux-sh7785.c
@@ -0,0 +1,1310 @@
1/*
2 * SH7785 Pinmux
3 *
4 * Copyright (C) 2008 Magnus Damm
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/gpio.h>
14#include <cpu/sh7785.h>
15
16enum {
17 PINMUX_RESERVED = 0,
18
19 PINMUX_DATA_BEGIN,
20 PA7_DATA, PA6_DATA, PA5_DATA, PA4_DATA,
21 PA3_DATA, PA2_DATA, PA1_DATA, PA0_DATA,
22 PB7_DATA, PB6_DATA, PB5_DATA, PB4_DATA,
23 PB3_DATA, PB2_DATA, PB1_DATA, PB0_DATA,
24 PC7_DATA, PC6_DATA, PC5_DATA, PC4_DATA,
25 PC3_DATA, PC2_DATA, PC1_DATA, PC0_DATA,
26 PD7_DATA, PD6_DATA, PD5_DATA, PD4_DATA,
27 PD3_DATA, PD2_DATA, PD1_DATA, PD0_DATA,
28 PE5_DATA, PE4_DATA, PE3_DATA, PE2_DATA, PE1_DATA, PE0_DATA,
29 PF7_DATA, PF6_DATA, PF5_DATA, PF4_DATA,
30 PF3_DATA, PF2_DATA, PF1_DATA, PF0_DATA,
31 PG7_DATA, PG6_DATA, PG5_DATA, PG4_DATA,
32 PG3_DATA, PG2_DATA, PG1_DATA, PG0_DATA,
33 PH7_DATA, PH6_DATA, PH5_DATA, PH4_DATA,
34 PH3_DATA, PH2_DATA, PH1_DATA, PH0_DATA,
35 PJ7_DATA, PJ6_DATA, PJ5_DATA, PJ4_DATA,
36 PJ3_DATA, PJ2_DATA, PJ1_DATA, PJ0_DATA,
37 PK7_DATA, PK6_DATA, PK5_DATA, PK4_DATA,
38 PK3_DATA, PK2_DATA, PK1_DATA, PK0_DATA,
39 PL7_DATA, PL6_DATA, PL5_DATA, PL4_DATA,
40 PL3_DATA, PL2_DATA, PL1_DATA, PL0_DATA,
41 PM1_DATA, PM0_DATA,
42 PN7_DATA, PN6_DATA, PN5_DATA, PN4_DATA,
43 PN3_DATA, PN2_DATA, PN1_DATA, PN0_DATA,
44 PP5_DATA, PP4_DATA, PP3_DATA, PP2_DATA, PP1_DATA, PP0_DATA,
45 PQ4_DATA, PQ3_DATA, PQ2_DATA, PQ1_DATA, PQ0_DATA,
46 PR3_DATA, PR2_DATA, PR1_DATA, PR0_DATA,
47 PINMUX_DATA_END,
48
49 PINMUX_INPUT_BEGIN,
50 PA7_IN, PA6_IN, PA5_IN, PA4_IN,
51 PA3_IN, PA2_IN, PA1_IN, PA0_IN,
52 PB7_IN, PB6_IN, PB5_IN, PB4_IN,
53 PB3_IN, PB2_IN, PB1_IN, PB0_IN,
54 PC7_IN, PC6_IN, PC5_IN, PC4_IN,
55 PC3_IN, PC2_IN, PC1_IN, PC0_IN,
56 PD7_IN, PD6_IN, PD5_IN, PD4_IN,
57 PD3_IN, PD2_IN, PD1_IN, PD0_IN,
58 PE5_IN, PE4_IN, PE3_IN, PE2_IN, PE1_IN, PE0_IN,
59 PF7_IN, PF6_IN, PF5_IN, PF4_IN,
60 PF3_IN, PF2_IN, PF1_IN, PF0_IN,
61 PG7_IN, PG6_IN, PG5_IN, PG4_IN,
62 PG3_IN, PG2_IN, PG1_IN, PG0_IN,
63 PH7_IN, PH6_IN, PH5_IN, PH4_IN,
64 PH3_IN, PH2_IN, PH1_IN, PH0_IN,
65 PJ7_IN, PJ6_IN, PJ5_IN, PJ4_IN,
66 PJ3_IN, PJ2_IN, PJ1_IN, PJ0_IN,
67 PK7_IN, PK6_IN, PK5_IN, PK4_IN,
68 PK3_IN, PK2_IN, PK1_IN, PK0_IN,
69 PL7_IN, PL6_IN, PL5_IN, PL4_IN,
70 PL3_IN, PL2_IN, PL1_IN, PL0_IN,
71 PM1_IN, PM0_IN,
72 PN7_IN, PN6_IN, PN5_IN, PN4_IN,
73 PN3_IN, PN2_IN, PN1_IN, PN0_IN,
74 PP5_IN, PP4_IN, PP3_IN, PP2_IN, PP1_IN, PP0_IN,
75 PQ4_IN, PQ3_IN, PQ2_IN, PQ1_IN, PQ0_IN,
76 PR3_IN, PR2_IN, PR1_IN, PR0_IN,
77 PINMUX_INPUT_END,
78
79 PINMUX_INPUT_PULLUP_BEGIN,
80 PA7_IN_PU, PA6_IN_PU, PA5_IN_PU, PA4_IN_PU,
81 PA3_IN_PU, PA2_IN_PU, PA1_IN_PU, PA0_IN_PU,
82 PB7_IN_PU, PB6_IN_PU, PB5_IN_PU, PB4_IN_PU,
83 PB3_IN_PU, PB2_IN_PU, PB1_IN_PU, PB0_IN_PU,
84 PC7_IN_PU, PC6_IN_PU, PC5_IN_PU, PC4_IN_PU,
85 PC3_IN_PU, PC2_IN_PU, PC1_IN_PU, PC0_IN_PU,
86 PD7_IN_PU, PD6_IN_PU, PD5_IN_PU, PD4_IN_PU,
87 PD3_IN_PU, PD2_IN_PU, PD1_IN_PU, PD0_IN_PU,
88 PE5_IN_PU, PE4_IN_PU, PE3_IN_PU, PE2_IN_PU, PE1_IN_PU, PE0_IN_PU,
89 PF7_IN_PU, PF6_IN_PU, PF5_IN_PU, PF4_IN_PU,
90 PF3_IN_PU, PF2_IN_PU, PF1_IN_PU, PF0_IN_PU,
91 PG7_IN_PU, PG6_IN_PU, PG5_IN_PU, PG4_IN_PU,
92 PG3_IN_PU, PG2_IN_PU, PG1_IN_PU, PG0_IN_PU,
93 PH7_IN_PU, PH6_IN_PU, PH5_IN_PU, PH4_IN_PU,
94 PH3_IN_PU, PH2_IN_PU, PH1_IN_PU, PH0_IN_PU,
95 PJ7_IN_PU, PJ6_IN_PU, PJ5_IN_PU, PJ4_IN_PU,
96 PJ3_IN_PU, PJ2_IN_PU, PJ1_IN_PU, PJ0_IN_PU,
97 PK7_IN_PU, PK6_IN_PU, PK5_IN_PU, PK4_IN_PU,
98 PK3_IN_PU, PK2_IN_PU, PK1_IN_PU, PK0_IN_PU,
99 PL7_IN_PU, PL6_IN_PU, PL5_IN_PU, PL4_IN_PU,
100 PL3_IN_PU, PL2_IN_PU, PL1_IN_PU, PL0_IN_PU,
101 PM1_IN_PU, PM0_IN_PU,
102 PN7_IN_PU, PN6_IN_PU, PN5_IN_PU, PN4_IN_PU,
103 PN3_IN_PU, PN2_IN_PU, PN1_IN_PU, PN0_IN_PU,
104 PP5_IN_PU, PP4_IN_PU, PP3_IN_PU, PP2_IN_PU, PP1_IN_PU, PP0_IN_PU,
105 PQ4_IN_PU, PQ3_IN_PU, PQ2_IN_PU, PQ1_IN_PU, PQ0_IN_PU,
106 PR3_IN_PU, PR2_IN_PU, PR1_IN_PU, PR0_IN_PU,
107 PINMUX_INPUT_PULLUP_END,
108
109 PINMUX_OUTPUT_BEGIN,
110 PA7_OUT, PA6_OUT, PA5_OUT, PA4_OUT,
111 PA3_OUT, PA2_OUT, PA1_OUT, PA0_OUT,
112 PB7_OUT, PB6_OUT, PB5_OUT, PB4_OUT,
113 PB3_OUT, PB2_OUT, PB1_OUT, PB0_OUT,
114 PC7_OUT, PC6_OUT, PC5_OUT, PC4_OUT,
115 PC3_OUT, PC2_OUT, PC1_OUT, PC0_OUT,
116 PD7_OUT, PD6_OUT, PD5_OUT, PD4_OUT,
117 PD3_OUT, PD2_OUT, PD1_OUT, PD0_OUT,
118 PE5_OUT, PE4_OUT, PE3_OUT, PE2_OUT, PE1_OUT, PE0_OUT,
119 PF7_OUT, PF6_OUT, PF5_OUT, PF4_OUT,
120 PF3_OUT, PF2_OUT, PF1_OUT, PF0_OUT,
121 PG7_OUT, PG6_OUT, PG5_OUT, PG4_OUT,
122 PG3_OUT, PG2_OUT, PG1_OUT, PG0_OUT,
123 PH7_OUT, PH6_OUT, PH5_OUT, PH4_OUT,
124 PH3_OUT, PH2_OUT, PH1_OUT, PH0_OUT,
125 PJ7_OUT, PJ6_OUT, PJ5_OUT, PJ4_OUT,
126 PJ3_OUT, PJ2_OUT, PJ1_OUT, PJ0_OUT,
127 PK7_OUT, PK6_OUT, PK5_OUT, PK4_OUT,
128 PK3_OUT, PK2_OUT, PK1_OUT, PK0_OUT,
129 PL7_OUT, PL6_OUT, PL5_OUT, PL4_OUT,
130 PL3_OUT, PL2_OUT, PL1_OUT, PL0_OUT,
131 PM1_OUT, PM0_OUT,
132 PN7_OUT, PN6_OUT, PN5_OUT, PN4_OUT,
133 PN3_OUT, PN2_OUT, PN1_OUT, PN0_OUT,
134 PP5_OUT, PP4_OUT, PP3_OUT, PP2_OUT, PP1_OUT, PP0_OUT,
135 PQ4_OUT, PQ3_OUT, PQ2_OUT, PQ1_OUT, PQ0_OUT,
136 PR3_OUT, PR2_OUT, PR1_OUT, PR0_OUT,
137 PINMUX_OUTPUT_END,
138
139 PINMUX_FUNCTION_BEGIN,
140 PA7_FN, PA6_FN, PA5_FN, PA4_FN,
141 PA3_FN, PA2_FN, PA1_FN, PA0_FN,
142 PB7_FN, PB6_FN, PB5_FN, PB4_FN,
143 PB3_FN, PB2_FN, PB1_FN, PB0_FN,
144 PC7_FN, PC6_FN, PC5_FN, PC4_FN,
145 PC3_FN, PC2_FN, PC1_FN, PC0_FN,
146 PD7_FN, PD6_FN, PD5_FN, PD4_FN,
147 PD3_FN, PD2_FN, PD1_FN, PD0_FN,
148 PE5_FN, PE4_FN, PE3_FN, PE2_FN, PE1_FN, PE0_FN,
149 PF7_FN, PF6_FN, PF5_FN, PF4_FN,
150 PF3_FN, PF2_FN, PF1_FN, PF0_FN,
151 PG7_FN, PG6_FN, PG5_FN, PG4_FN,
152 PG3_FN, PG2_FN, PG1_FN, PG0_FN,
153 PH7_FN, PH6_FN, PH5_FN, PH4_FN,
154 PH3_FN, PH2_FN, PH1_FN, PH0_FN,
155 PJ7_FN, PJ6_FN, PJ5_FN, PJ4_FN,
156 PJ3_FN, PJ2_FN, PJ1_FN, PJ0_FN,
157 PK7_FN, PK6_FN, PK5_FN, PK4_FN,
158 PK3_FN, PK2_FN, PK1_FN, PK0_FN,
159 PL7_FN, PL6_FN, PL5_FN, PL4_FN,
160 PL3_FN, PL2_FN, PL1_FN, PL0_FN,
161 PM1_FN, PM0_FN,
162 PN7_FN, PN6_FN, PN5_FN, PN4_FN,
163 PN3_FN, PN2_FN, PN1_FN, PN0_FN,
164 PP5_FN, PP4_FN, PP3_FN, PP2_FN, PP1_FN, PP0_FN,
165 PQ4_FN, PQ3_FN, PQ2_FN, PQ1_FN, PQ0_FN,
166 PR3_FN, PR2_FN, PR1_FN, PR0_FN,
167 P1MSEL15_0, P1MSEL15_1,
168 P1MSEL14_0, P1MSEL14_1,
169 P1MSEL13_0, P1MSEL13_1,
170 P1MSEL12_0, P1MSEL12_1,
171 P1MSEL11_0, P1MSEL11_1,
172 P1MSEL10_0, P1MSEL10_1,
173 P1MSEL9_0, P1MSEL9_1,
174 P1MSEL8_0, P1MSEL8_1,
175 P1MSEL7_0, P1MSEL7_1,
176 P1MSEL6_0, P1MSEL6_1,
177 P1MSEL5_0,
178 P1MSEL4_0, P1MSEL4_1,
179 P1MSEL3_0, P1MSEL3_1,
180 P1MSEL2_0, P1MSEL2_1,
181 P1MSEL1_0, P1MSEL1_1,
182 P1MSEL0_0, P1MSEL0_1,
183 P2MSEL2_0, P2MSEL2_1,
184 P2MSEL1_0, P2MSEL1_1,
185 P2MSEL0_0, P2MSEL0_1,
186 PINMUX_FUNCTION_END,
187
188 PINMUX_MARK_BEGIN,
189 D63_AD31_MARK,
190 D62_AD30_MARK,
191 D61_AD29_MARK,
192 D60_AD28_MARK,
193 D59_AD27_MARK,
194 D58_AD26_MARK,
195 D57_AD25_MARK,
196 D56_AD24_MARK,
197 D55_AD23_MARK,
198 D54_AD22_MARK,
199 D53_AD21_MARK,
200 D52_AD20_MARK,
201 D51_AD19_MARK,
202 D50_AD18_MARK,
203 D49_AD17_DB5_MARK,
204 D48_AD16_DB4_MARK,
205 D47_AD15_DB3_MARK,
206 D46_AD14_DB2_MARK,
207 D45_AD13_DB1_MARK,
208 D44_AD12_DB0_MARK,
209 D43_AD11_DG5_MARK,
210 D42_AD10_DG4_MARK,
211 D41_AD9_DG3_MARK,
212 D40_AD8_DG2_MARK,
213 D39_AD7_DG1_MARK,
214 D38_AD6_DG0_MARK,
215 D37_AD5_DR5_MARK,
216 D36_AD4_DR4_MARK,
217 D35_AD3_DR3_MARK,
218 D34_AD2_DR2_MARK,
219 D33_AD1_DR1_MARK,
220 D32_AD0_DR0_MARK,
221 REQ1_MARK,
222 REQ2_MARK,
223 REQ3_MARK,
224 GNT1_MARK,
225 GNT2_MARK,
226 GNT3_MARK,
227 MMCCLK_MARK,
228 D31_MARK,
229 D30_MARK,
230 D29_MARK,
231 D28_MARK,
232 D27_MARK,
233 D26_MARK,
234 D25_MARK,
235 D24_MARK,
236 D23_MARK,
237 D22_MARK,
238 D21_MARK,
239 D20_MARK,
240 D19_MARK,
241 D18_MARK,
242 D17_MARK,
243 D16_MARK,
244 SCIF1_SCK_MARK,
245 SCIF1_RXD_MARK,
246 SCIF1_TXD_MARK,
247 SCIF0_CTS_MARK,
248 INTD_MARK,
249 FCE_MARK,
250 SCIF0_RTS_MARK,
251 HSPI_CS_MARK,
252 FSE_MARK,
253 SCIF0_SCK_MARK,
254 HSPI_CLK_MARK,
255 FRE_MARK,
256 SCIF0_RXD_MARK,
257 HSPI_RX_MARK,
258 FRB_MARK,
259 SCIF0_TXD_MARK,
260 HSPI_TX_MARK,
261 FWE_MARK,
262 SCIF5_TXD_MARK,
263 HAC1_SYNC_MARK,
264 SSI1_WS_MARK,
265 SIOF_TXD_PJ_MARK,
266 HAC0_SDOUT_MARK,
267 SSI0_SDATA_MARK,
268 SIOF_RXD_PJ_MARK,
269 HAC0_SDIN_MARK,
270 SSI0_SCK_MARK,
271 SIOF_SYNC_PJ_MARK,
272 HAC0_SYNC_MARK,
273 SSI0_WS_MARK,
274 SIOF_MCLK_PJ_MARK,
275 HAC_RES_MARK,
276 SIOF_SCK_PJ_MARK,
277 HAC0_BITCLK_MARK,
278 SSI0_CLK_MARK,
279 HAC1_BITCLK_MARK,
280 SSI1_CLK_MARK,
281 TCLK_MARK,
282 IOIS16_MARK,
283 STATUS0_MARK,
284 DRAK0_PK3_MARK,
285 STATUS1_MARK,
286 DRAK1_PK2_MARK,
287 DACK2_MARK,
288 SCIF2_TXD_MARK,
289 MMCCMD_MARK,
290 SIOF_TXD_PK_MARK,
291 DACK3_MARK,
292 SCIF2_SCK_MARK,
293 MMCDAT_MARK,
294 SIOF_SCK_PK_MARK,
295 DREQ0_MARK,
296 DREQ1_MARK,
297 DRAK0_PK1_MARK,
298 DRAK1_PK0_MARK,
299 DREQ2_MARK,
300 INTB_MARK,
301 DREQ3_MARK,
302 INTC_MARK,
303 DRAK2_MARK,
304 CE2A_MARK,
305 IRL4_MARK,
306 FD4_MARK,
307 IRL5_MARK,
308 FD5_MARK,
309 IRL6_MARK,
310 FD6_MARK,
311 IRL7_MARK,
312 FD7_MARK,
313 DRAK3_MARK,
314 CE2B_MARK,
315 BREQ_BSACK_MARK,
316 BACK_BSREQ_MARK,
317 SCIF5_RXD_MARK,
318 HAC1_SDIN_MARK,
319 SSI1_SCK_MARK,
320 SCIF5_SCK_MARK,
321 HAC1_SDOUT_MARK,
322 SSI1_SDATA_MARK,
323 SCIF3_TXD_MARK,
324 FCLE_MARK,
325 SCIF3_RXD_MARK,
326 FALE_MARK,
327 SCIF3_SCK_MARK,
328 FD0_MARK,
329 SCIF4_TXD_MARK,
330 FD1_MARK,
331 SCIF4_RXD_MARK,
332 FD2_MARK,
333 SCIF4_SCK_MARK,
334 FD3_MARK,
335 DEVSEL_DCLKOUT_MARK,
336 STOP_CDE_MARK,
337 LOCK_ODDF_MARK,
338 TRDY_DISPL_MARK,
339 IRDY_HSYNC_MARK,
340 PCIFRAME_VSYNC_MARK,
341 INTA_MARK,
342 GNT0_GNTIN_MARK,
343 REQ0_REQOUT_MARK,
344 PERR_MARK,
345 SERR_MARK,
346 WE7_CBE3_MARK,
347 WE6_CBE2_MARK,
348 WE5_CBE1_MARK,
349 WE4_CBE0_MARK,
350 SCIF2_RXD_MARK,
351 SIOF_RXD_MARK,
352 MRESETOUT_MARK,
353 IRQOUT_MARK,
354 PINMUX_MARK_END,
355};
356
357static pinmux_enum_t pinmux_data[] = {
358
359 /* PA GPIO */
360 PINMUX_DATA(PA7_DATA, PA7_IN, PA7_OUT, PA7_IN_PU),
361 PINMUX_DATA(PA6_DATA, PA6_IN, PA6_OUT, PA6_IN_PU),
362 PINMUX_DATA(PA5_DATA, PA5_IN, PA5_OUT, PA5_IN_PU),
363 PINMUX_DATA(PA4_DATA, PA4_IN, PA4_OUT, PA4_IN_PU),
364 PINMUX_DATA(PA3_DATA, PA3_IN, PA3_OUT, PA3_IN_PU),
365 PINMUX_DATA(PA2_DATA, PA2_IN, PA2_OUT, PA2_IN_PU),
366 PINMUX_DATA(PA1_DATA, PA1_IN, PA1_OUT, PA1_IN_PU),
367 PINMUX_DATA(PA0_DATA, PA0_IN, PA0_OUT, PA0_IN_PU),
368
369 /* PB GPIO */
370 PINMUX_DATA(PB7_DATA, PB7_IN, PB7_OUT, PB7_IN_PU),
371 PINMUX_DATA(PB6_DATA, PB6_IN, PB6_OUT, PB6_IN_PU),
372 PINMUX_DATA(PB5_DATA, PB5_IN, PB5_OUT, PB5_IN_PU),
373 PINMUX_DATA(PB4_DATA, PB4_IN, PB4_OUT, PB4_IN_PU),
374 PINMUX_DATA(PB3_DATA, PB3_IN, PB3_OUT, PB3_IN_PU),
375 PINMUX_DATA(PB2_DATA, PB2_IN, PB2_OUT, PB2_IN_PU),
376 PINMUX_DATA(PB1_DATA, PB1_IN, PB1_OUT, PB1_IN_PU),
377 PINMUX_DATA(PB0_DATA, PB0_IN, PB0_OUT, PB0_IN_PU),
378
379 /* PC GPIO */
380 PINMUX_DATA(PC7_DATA, PC7_IN, PC7_OUT, PC7_IN_PU),
381 PINMUX_DATA(PC6_DATA, PC6_IN, PC6_OUT, PC6_IN_PU),
382 PINMUX_DATA(PC5_DATA, PC5_IN, PC5_OUT, PC5_IN_PU),
383 PINMUX_DATA(PC4_DATA, PC4_IN, PC4_OUT, PC4_IN_PU),
384 PINMUX_DATA(PC3_DATA, PC3_IN, PC3_OUT, PC3_IN_PU),
385 PINMUX_DATA(PC2_DATA, PC2_IN, PC2_OUT, PC2_IN_PU),
386 PINMUX_DATA(PC1_DATA, PC1_IN, PC1_OUT, PC1_IN_PU),
387 PINMUX_DATA(PC0_DATA, PC0_IN, PC0_OUT, PC0_IN_PU),
388
389 /* PD GPIO */
390 PINMUX_DATA(PD7_DATA, PD7_IN, PD7_OUT, PD7_IN_PU),
391 PINMUX_DATA(PD6_DATA, PD6_IN, PD6_OUT, PD6_IN_PU),
392 PINMUX_DATA(PD5_DATA, PD5_IN, PD5_OUT, PD5_IN_PU),
393 PINMUX_DATA(PD4_DATA, PD4_IN, PD4_OUT, PD4_IN_PU),
394 PINMUX_DATA(PD3_DATA, PD3_IN, PD3_OUT, PD3_IN_PU),
395 PINMUX_DATA(PD2_DATA, PD2_IN, PD2_OUT, PD2_IN_PU),
396 PINMUX_DATA(PD1_DATA, PD1_IN, PD1_OUT, PD1_IN_PU),
397 PINMUX_DATA(PD0_DATA, PD0_IN, PD0_OUT, PD0_IN_PU),
398
399 /* PE GPIO */
400 PINMUX_DATA(PE5_DATA, PE5_IN, PE5_OUT, PE5_IN_PU),
401 PINMUX_DATA(PE4_DATA, PE4_IN, PE4_OUT, PE4_IN_PU),
402 PINMUX_DATA(PE3_DATA, PE3_IN, PE3_OUT, PE3_IN_PU),
403 PINMUX_DATA(PE2_DATA, PE2_IN, PE2_OUT, PE2_IN_PU),
404 PINMUX_DATA(PE1_DATA, PE1_IN, PE1_OUT, PE1_IN_PU),
405 PINMUX_DATA(PE0_DATA, PE0_IN, PE0_OUT, PE0_IN_PU),
406
407 /* PF GPIO */
408 PINMUX_DATA(PF7_DATA, PF7_IN, PF7_OUT, PF7_IN_PU),
409 PINMUX_DATA(PF6_DATA, PF6_IN, PF6_OUT, PF6_IN_PU),
410 PINMUX_DATA(PF5_DATA, PF5_IN, PF5_OUT, PF5_IN_PU),
411 PINMUX_DATA(PF4_DATA, PF4_IN, PF4_OUT, PF4_IN_PU),
412 PINMUX_DATA(PF3_DATA, PF3_IN, PF3_OUT, PF3_IN_PU),
413 PINMUX_DATA(PF2_DATA, PF2_IN, PF2_OUT, PF2_IN_PU),
414 PINMUX_DATA(PF1_DATA, PF1_IN, PF1_OUT, PF1_IN_PU),
415 PINMUX_DATA(PF0_DATA, PF0_IN, PF0_OUT, PF0_IN_PU),
416
417 /* PG GPIO */
418 PINMUX_DATA(PG7_DATA, PG7_IN, PG7_OUT, PG7_IN_PU),
419 PINMUX_DATA(PG6_DATA, PG6_IN, PG6_OUT, PG6_IN_PU),
420 PINMUX_DATA(PG5_DATA, PG5_IN, PG5_OUT, PG5_IN_PU),
421 PINMUX_DATA(PG4_DATA, PG4_IN, PG4_OUT, PG4_IN_PU),
422 PINMUX_DATA(PG3_DATA, PG3_IN, PG3_OUT, PG3_IN_PU),
423 PINMUX_DATA(PG2_DATA, PG2_IN, PG2_OUT, PG2_IN_PU),
424 PINMUX_DATA(PG1_DATA, PG1_IN, PG1_OUT, PG1_IN_PU),
425 PINMUX_DATA(PG0_DATA, PG0_IN, PG0_OUT, PG0_IN_PU),
426
427 /* PH GPIO */
428 PINMUX_DATA(PH7_DATA, PH7_IN, PH7_OUT, PH7_IN_PU),
429 PINMUX_DATA(PH6_DATA, PH6_IN, PH6_OUT, PH6_IN_PU),
430 PINMUX_DATA(PH5_DATA, PH5_IN, PH5_OUT, PH5_IN_PU),
431 PINMUX_DATA(PH4_DATA, PH4_IN, PH4_OUT, PH4_IN_PU),
432 PINMUX_DATA(PH3_DATA, PH3_IN, PH3_OUT, PH3_IN_PU),
433 PINMUX_DATA(PH2_DATA, PH2_IN, PH2_OUT, PH2_IN_PU),
434 PINMUX_DATA(PH1_DATA, PH1_IN, PH1_OUT, PH1_IN_PU),
435 PINMUX_DATA(PH0_DATA, PH0_IN, PH0_OUT, PH0_IN_PU),
436
437 /* PJ GPIO */
438 PINMUX_DATA(PJ7_DATA, PJ7_IN, PJ7_OUT, PJ7_IN_PU),
439 PINMUX_DATA(PJ6_DATA, PJ6_IN, PJ6_OUT, PJ6_IN_PU),
440 PINMUX_DATA(PJ5_DATA, PJ5_IN, PJ5_OUT, PJ5_IN_PU),
441 PINMUX_DATA(PJ4_DATA, PJ4_IN, PJ4_OUT, PJ4_IN_PU),
442 PINMUX_DATA(PJ3_DATA, PJ3_IN, PJ3_OUT, PJ3_IN_PU),
443 PINMUX_DATA(PJ2_DATA, PJ2_IN, PJ2_OUT, PJ2_IN_PU),
444 PINMUX_DATA(PJ1_DATA, PJ1_IN, PJ1_OUT, PJ1_IN_PU),
445 PINMUX_DATA(PJ0_DATA, PJ0_IN, PJ0_OUT, PJ0_IN_PU),
446
447 /* PK GPIO */
448 PINMUX_DATA(PK7_DATA, PK7_IN, PK7_OUT, PK7_IN_PU),
449 PINMUX_DATA(PK6_DATA, PK6_IN, PK6_OUT, PK6_IN_PU),
450 PINMUX_DATA(PK5_DATA, PK5_IN, PK5_OUT, PK5_IN_PU),
451 PINMUX_DATA(PK4_DATA, PK4_IN, PK4_OUT, PK4_IN_PU),
452 PINMUX_DATA(PK3_DATA, PK3_IN, PK3_OUT, PK3_IN_PU),
453 PINMUX_DATA(PK2_DATA, PK2_IN, PK2_OUT, PK2_IN_PU),
454 PINMUX_DATA(PK1_DATA, PK1_IN, PK1_OUT, PK1_IN_PU),
455 PINMUX_DATA(PK0_DATA, PK0_IN, PK0_OUT, PK0_IN_PU),
456
457 /* PL GPIO */
458 PINMUX_DATA(PL7_DATA, PL7_IN, PL7_OUT, PL7_IN_PU),
459 PINMUX_DATA(PL6_DATA, PL6_IN, PL6_OUT, PL6_IN_PU),
460 PINMUX_DATA(PL5_DATA, PL5_IN, PL5_OUT, PL5_IN_PU),
461 PINMUX_DATA(PL4_DATA, PL4_IN, PL4_OUT, PL4_IN_PU),
462 PINMUX_DATA(PL3_DATA, PL3_IN, PL3_OUT, PL3_IN_PU),
463 PINMUX_DATA(PL2_DATA, PL2_IN, PL2_OUT, PL2_IN_PU),
464 PINMUX_DATA(PL1_DATA, PL1_IN, PL1_OUT, PL1_IN_PU),
465 PINMUX_DATA(PL0_DATA, PL0_IN, PL0_OUT, PL0_IN_PU),
466
467 /* PM GPIO */
468 PINMUX_DATA(PM1_DATA, PM1_IN, PM1_OUT, PM1_IN_PU),
469 PINMUX_DATA(PM0_DATA, PM0_IN, PM0_OUT, PM0_IN_PU),
470
471 /* PN GPIO */
472 PINMUX_DATA(PN7_DATA, PN7_IN, PN7_OUT, PN7_IN_PU),
473 PINMUX_DATA(PN6_DATA, PN6_IN, PN6_OUT, PN6_IN_PU),
474 PINMUX_DATA(PN5_DATA, PN5_IN, PN5_OUT, PN5_IN_PU),
475 PINMUX_DATA(PN4_DATA, PN4_IN, PN4_OUT, PN4_IN_PU),
476 PINMUX_DATA(PN3_DATA, PN3_IN, PN3_OUT, PN3_IN_PU),
477 PINMUX_DATA(PN2_DATA, PN2_IN, PN2_OUT, PN2_IN_PU),
478 PINMUX_DATA(PN1_DATA, PN1_IN, PN1_OUT, PN1_IN_PU),
479 PINMUX_DATA(PN0_DATA, PN0_IN, PN0_OUT, PN0_IN_PU),
480
481 /* PP GPIO */
482 PINMUX_DATA(PP5_DATA, PP5_IN, PP5_OUT, PP5_IN_PU),
483 PINMUX_DATA(PP4_DATA, PP4_IN, PP4_OUT, PP4_IN_PU),
484 PINMUX_DATA(PP3_DATA, PP3_IN, PP3_OUT, PP3_IN_PU),
485 PINMUX_DATA(PP2_DATA, PP2_IN, PP2_OUT, PP2_IN_PU),
486 PINMUX_DATA(PP1_DATA, PP1_IN, PP1_OUT, PP1_IN_PU),
487 PINMUX_DATA(PP0_DATA, PP0_IN, PP0_OUT, PP0_IN_PU),
488
489 /* PQ GPIO */
490 PINMUX_DATA(PQ4_DATA, PQ4_IN, PQ4_OUT, PQ4_IN_PU),
491 PINMUX_DATA(PQ3_DATA, PQ3_IN, PQ3_OUT, PQ3_IN_PU),
492 PINMUX_DATA(PQ2_DATA, PQ2_IN, PQ2_OUT, PQ2_IN_PU),
493 PINMUX_DATA(PQ1_DATA, PQ1_IN, PQ1_OUT, PQ1_IN_PU),
494 PINMUX_DATA(PQ0_DATA, PQ0_IN, PQ0_OUT, PQ0_IN_PU),
495
496 /* PR GPIO */
497 PINMUX_DATA(PR3_DATA, PR3_IN, PR3_OUT, PR3_IN_PU),
498 PINMUX_DATA(PR2_DATA, PR2_IN, PR2_OUT, PR2_IN_PU),
499 PINMUX_DATA(PR1_DATA, PR1_IN, PR1_OUT, PR1_IN_PU),
500 PINMUX_DATA(PR0_DATA, PR0_IN, PR0_OUT, PR0_IN_PU),
501
502 /* PA FN */
503 PINMUX_DATA(D63_AD31_MARK, PA7_FN),
504 PINMUX_DATA(D62_AD30_MARK, PA6_FN),
505 PINMUX_DATA(D61_AD29_MARK, PA5_FN),
506 PINMUX_DATA(D60_AD28_MARK, PA4_FN),
507 PINMUX_DATA(D59_AD27_MARK, PA3_FN),
508 PINMUX_DATA(D58_AD26_MARK, PA2_FN),
509 PINMUX_DATA(D57_AD25_MARK, PA1_FN),
510 PINMUX_DATA(D56_AD24_MARK, PA0_FN),
511
512 /* PB FN */
513 PINMUX_DATA(D55_AD23_MARK, PB7_FN),
514 PINMUX_DATA(D54_AD22_MARK, PB6_FN),
515 PINMUX_DATA(D53_AD21_MARK, PB5_FN),
516 PINMUX_DATA(D52_AD20_MARK, PB4_FN),
517 PINMUX_DATA(D51_AD19_MARK, PB3_FN),
518 PINMUX_DATA(D50_AD18_MARK, PB2_FN),
519 PINMUX_DATA(D49_AD17_DB5_MARK, PB1_FN),
520 PINMUX_DATA(D48_AD16_DB4_MARK, PB0_FN),
521
522 /* PC FN */
523 PINMUX_DATA(D47_AD15_DB3_MARK, PC7_FN),
524 PINMUX_DATA(D46_AD14_DB2_MARK, PC6_FN),
525 PINMUX_DATA(D45_AD13_DB1_MARK, PC5_FN),
526 PINMUX_DATA(D44_AD12_DB0_MARK, PC4_FN),
527 PINMUX_DATA(D43_AD11_DG5_MARK, PC3_FN),
528 PINMUX_DATA(D42_AD10_DG4_MARK, PC2_FN),
529 PINMUX_DATA(D41_AD9_DG3_MARK, PC1_FN),
530 PINMUX_DATA(D40_AD8_DG2_MARK, PC0_FN),
531
532 /* PD FN */
533 PINMUX_DATA(D39_AD7_DG1_MARK, PD7_FN),
534 PINMUX_DATA(D38_AD6_DG0_MARK, PD6_FN),
535 PINMUX_DATA(D37_AD5_DR5_MARK, PD5_FN),
536 PINMUX_DATA(D36_AD4_DR4_MARK, PD4_FN),
537 PINMUX_DATA(D35_AD3_DR3_MARK, PD3_FN),
538 PINMUX_DATA(D34_AD2_DR2_MARK, PD2_FN),
539 PINMUX_DATA(D33_AD1_DR1_MARK, PD1_FN),
540 PINMUX_DATA(D32_AD0_DR0_MARK, PD0_FN),
541
542 /* PE FN */
543 PINMUX_DATA(REQ1_MARK, PE5_FN),
544 PINMUX_DATA(REQ2_MARK, PE4_FN),
545 PINMUX_DATA(REQ3_MARK, P2MSEL0_0, PE3_FN),
546 PINMUX_DATA(GNT1_MARK, PE2_FN),
547 PINMUX_DATA(GNT2_MARK, PE1_FN),
548 PINMUX_DATA(GNT3_MARK, P2MSEL0_0, PE0_FN),
549 PINMUX_DATA(MMCCLK_MARK, P2MSEL0_1, PE0_FN),
550
551 /* PF FN */
552 PINMUX_DATA(D31_MARK, PF7_FN),
553 PINMUX_DATA(D30_MARK, PF6_FN),
554 PINMUX_DATA(D29_MARK, PF5_FN),
555 PINMUX_DATA(D28_MARK, PF4_FN),
556 PINMUX_DATA(D27_MARK, PF3_FN),
557 PINMUX_DATA(D26_MARK, PF2_FN),
558 PINMUX_DATA(D25_MARK, PF1_FN),
559 PINMUX_DATA(D24_MARK, PF0_FN),
560
561 /* PF FN */
562 PINMUX_DATA(D23_MARK, PG7_FN),
563 PINMUX_DATA(D22_MARK, PG6_FN),
564 PINMUX_DATA(D21_MARK, PG5_FN),
565 PINMUX_DATA(D20_MARK, PG4_FN),
566 PINMUX_DATA(D19_MARK, PG3_FN),
567 PINMUX_DATA(D18_MARK, PG2_FN),
568 PINMUX_DATA(D17_MARK, PG1_FN),
569 PINMUX_DATA(D16_MARK, PG0_FN),
570
571 /* PH FN */
572 PINMUX_DATA(SCIF1_SCK_MARK, PH7_FN),
573 PINMUX_DATA(SCIF1_RXD_MARK, PH6_FN),
574 PINMUX_DATA(SCIF1_TXD_MARK, PH5_FN),
575 PINMUX_DATA(SCIF0_CTS_MARK, PH4_FN),
576 PINMUX_DATA(INTD_MARK, P1MSEL7_1, PH4_FN),
577 PINMUX_DATA(FCE_MARK, P1MSEL8_1, P1MSEL7_0, PH4_FN),
578 PINMUX_DATA(SCIF0_RTS_MARK, P1MSEL8_0, P1MSEL7_0, PH3_FN),
579 PINMUX_DATA(HSPI_CS_MARK, P1MSEL8_0, P1MSEL7_1, PH3_FN),
580 PINMUX_DATA(FSE_MARK, P1MSEL8_1, P1MSEL7_0, PH3_FN),
581 PINMUX_DATA(SCIF0_SCK_MARK, P1MSEL8_0, P1MSEL7_0, PH2_FN),
582 PINMUX_DATA(HSPI_CLK_MARK, P1MSEL8_0, P1MSEL7_1, PH2_FN),
583 PINMUX_DATA(FRE_MARK, P1MSEL8_1, P1MSEL7_0, PH2_FN),
584 PINMUX_DATA(SCIF0_RXD_MARK, P1MSEL8_0, P1MSEL7_0, PH1_FN),
585 PINMUX_DATA(HSPI_RX_MARK, P1MSEL8_0, P1MSEL7_1, PH1_FN),
586 PINMUX_DATA(FRB_MARK, P1MSEL8_1, P1MSEL7_0, PH1_FN),
587 PINMUX_DATA(SCIF0_TXD_MARK, P1MSEL8_0, P1MSEL7_0, PH0_FN),
588 PINMUX_DATA(HSPI_TX_MARK, P1MSEL8_0, P1MSEL7_1, PH0_FN),
589 PINMUX_DATA(FWE_MARK, P1MSEL8_1, P1MSEL7_0, PH0_FN),
590
591 /* PJ FN */
592 PINMUX_DATA(SCIF5_TXD_MARK, P1MSEL2_0, P1MSEL1_0, PJ7_FN),
593 PINMUX_DATA(HAC1_SYNC_MARK, P1MSEL2_0, P1MSEL1_1, PJ7_FN),
594 PINMUX_DATA(SSI1_WS_MARK, P1MSEL2_1, P1MSEL1_0, PJ7_FN),
595 PINMUX_DATA(SIOF_TXD_PJ_MARK, P2MSEL1_0, P1MSEL4_0, P1MSEL3_0, PJ6_FN),
596 PINMUX_DATA(HAC0_SDOUT_MARK, P1MSEL4_0, P1MSEL3_1, PJ6_FN),
597 PINMUX_DATA(SSI0_SDATA_MARK, P1MSEL4_1, P1MSEL3_0, PJ6_FN),
598 PINMUX_DATA(SIOF_RXD_PJ_MARK, P2MSEL1_0, P1MSEL4_0, P1MSEL3_0, PJ5_FN),
599 PINMUX_DATA(HAC0_SDIN_MARK, P1MSEL4_0, P1MSEL3_1, PJ5_FN),
600 PINMUX_DATA(SSI0_SCK_MARK, P1MSEL4_1, P1MSEL3_0, PJ5_FN),
601 PINMUX_DATA(SIOF_SYNC_PJ_MARK, P2MSEL1_0, P1MSEL4_0, P1MSEL3_0, PJ4_FN),
602 PINMUX_DATA(HAC0_SYNC_MARK, P1MSEL4_0, P1MSEL3_1, PJ4_FN),
603 PINMUX_DATA(SSI0_WS_MARK, P1MSEL4_1, P1MSEL3_0, PJ4_FN),
604 PINMUX_DATA(SIOF_MCLK_PJ_MARK, P2MSEL1_0, P1MSEL4_0, P1MSEL3_0, PJ3_FN),
605 PINMUX_DATA(HAC_RES_MARK, P1MSEL4_0, P1MSEL3_1, PJ3_FN),
606 PINMUX_DATA(SIOF_SCK_PJ_MARK, P2MSEL1_0, P1MSEL4_0, P1MSEL3_0, PJ2_FN),
607 PINMUX_DATA(HAC0_BITCLK_MARK, P1MSEL4_0, P1MSEL3_1, PJ2_FN),
608 PINMUX_DATA(SSI0_CLK_MARK, P1MSEL4_1, P1MSEL3_0, PJ2_FN),
609 PINMUX_DATA(HAC1_BITCLK_MARK, P1MSEL2_0, PJ1_FN),
610 PINMUX_DATA(SSI1_CLK_MARK, P1MSEL2_1, P1MSEL1_0, PJ1_FN),
611 PINMUX_DATA(TCLK_MARK, P1MSEL9_0, PJ0_FN),
612 PINMUX_DATA(IOIS16_MARK, P1MSEL9_1, PJ0_FN),
613
614 /* PK FN */
615 PINMUX_DATA(STATUS0_MARK, P1MSEL15_0, PK7_FN),
616 PINMUX_DATA(DRAK0_PK3_MARK, P1MSEL15_1, PK7_FN),
617 PINMUX_DATA(STATUS1_MARK, P1MSEL15_0, PK6_FN),
618 PINMUX_DATA(DRAK1_PK2_MARK, P1MSEL15_1, PK6_FN),
619 PINMUX_DATA(DACK2_MARK, P1MSEL12_0, P1MSEL11_0, PK5_FN),
620 PINMUX_DATA(SCIF2_TXD_MARK, P1MSEL12_1, P1MSEL11_0, PK5_FN),
621 PINMUX_DATA(MMCCMD_MARK, P1MSEL12_1, P1MSEL11_1, PK5_FN),
622 PINMUX_DATA(SIOF_TXD_PK_MARK, P2MSEL1_1,
623 P1MSEL12_0, P1MSEL11_1, PK5_FN),
624 PINMUX_DATA(DACK3_MARK, P1MSEL12_0, P1MSEL11_0, PK4_FN),
625 PINMUX_DATA(SCIF2_SCK_MARK, P1MSEL12_1, P1MSEL11_0, PK4_FN),
626 PINMUX_DATA(MMCDAT_MARK, P1MSEL12_1, P1MSEL11_1, PK4_FN),
627 PINMUX_DATA(SIOF_SCK_PK_MARK, P2MSEL1_1,
628 P1MSEL12_0, P1MSEL11_1, PK4_FN),
629 PINMUX_DATA(DREQ0_MARK, PK3_FN),
630 PINMUX_DATA(DREQ1_MARK, PK2_FN),
631 PINMUX_DATA(DRAK0_PK1_MARK, PK1_FN),
632 PINMUX_DATA(DRAK1_PK0_MARK, PK0_FN),
633
634 /* PL FN */
635 PINMUX_DATA(DREQ2_MARK, P1MSEL13_0, PL7_FN),
636 PINMUX_DATA(INTB_MARK, P1MSEL13_1, PL7_FN),
637 PINMUX_DATA(DREQ3_MARK, P1MSEL13_0, PL6_FN),
638 PINMUX_DATA(INTC_MARK, P1MSEL13_1, PL6_FN),
639 PINMUX_DATA(DRAK2_MARK, P1MSEL10_0, PL5_FN),
640 PINMUX_DATA(CE2A_MARK, P1MSEL10_1, PL5_FN),
641 PINMUX_DATA(IRL4_MARK, P1MSEL14_0, PL4_FN),
642 PINMUX_DATA(FD4_MARK, P1MSEL14_1, PL4_FN),
643 PINMUX_DATA(IRL5_MARK, P1MSEL14_0, PL3_FN),
644 PINMUX_DATA(FD5_MARK, P1MSEL14_1, PL3_FN),
645 PINMUX_DATA(IRL6_MARK, P1MSEL14_0, PL2_FN),
646 PINMUX_DATA(FD6_MARK, P1MSEL14_1, PL2_FN),
647 PINMUX_DATA(IRL7_MARK, P1MSEL14_0, PL1_FN),
648 PINMUX_DATA(FD7_MARK, P1MSEL14_1, PL1_FN),
649 PINMUX_DATA(DRAK3_MARK, P1MSEL10_0, PL0_FN),
650 PINMUX_DATA(CE2B_MARK, P1MSEL10_1, PL0_FN),
651
652 /* PM FN */
653 PINMUX_DATA(BREQ_BSACK_MARK, PM1_FN),
654 PINMUX_DATA(BACK_BSREQ_MARK, PM0_FN),
655
656 /* PN FN */
657 PINMUX_DATA(SCIF5_RXD_MARK, P1MSEL2_0, P1MSEL1_0, PN7_FN),
658 PINMUX_DATA(HAC1_SDIN_MARK, P1MSEL2_0, P1MSEL1_1, PN7_FN),
659 PINMUX_DATA(SSI1_SCK_MARK, P1MSEL2_1, P1MSEL1_0, PN7_FN),
660 PINMUX_DATA(SCIF5_SCK_MARK, P1MSEL2_0, P1MSEL1_0, PN6_FN),
661 PINMUX_DATA(HAC1_SDOUT_MARK, P1MSEL2_0, P1MSEL1_1, PN6_FN),
662 PINMUX_DATA(SSI1_SDATA_MARK, P1MSEL2_1, P1MSEL1_0, PN6_FN),
663 PINMUX_DATA(SCIF3_TXD_MARK, P1MSEL0_0, PN5_FN),
664 PINMUX_DATA(FCLE_MARK, P1MSEL0_1, PN5_FN),
665 PINMUX_DATA(SCIF3_RXD_MARK, P1MSEL0_0, PN4_FN),
666 PINMUX_DATA(FALE_MARK, P1MSEL0_1, PN4_FN),
667 PINMUX_DATA(SCIF3_SCK_MARK, P1MSEL0_0, PN3_FN),
668 PINMUX_DATA(FD0_MARK, P1MSEL0_1, PN3_FN),
669 PINMUX_DATA(SCIF4_TXD_MARK, P1MSEL0_0, PN2_FN),
670 PINMUX_DATA(FD1_MARK, P1MSEL0_1, PN2_FN),
671 PINMUX_DATA(SCIF4_RXD_MARK, P1MSEL0_0, PN1_FN),
672 PINMUX_DATA(FD2_MARK, P1MSEL0_1, PN1_FN),
673 PINMUX_DATA(SCIF4_SCK_MARK, P1MSEL0_0, PN0_FN),
674 PINMUX_DATA(FD3_MARK, P1MSEL0_1, PN0_FN),
675
676 /* PP FN */
677 PINMUX_DATA(DEVSEL_DCLKOUT_MARK, PP5_FN),
678 PINMUX_DATA(STOP_CDE_MARK, PP4_FN),
679 PINMUX_DATA(LOCK_ODDF_MARK, PP3_FN),
680 PINMUX_DATA(TRDY_DISPL_MARK, PP2_FN),
681 PINMUX_DATA(IRDY_HSYNC_MARK, PP1_FN),
682 PINMUX_DATA(PCIFRAME_VSYNC_MARK, PP0_FN),
683
684 /* PQ FN */
685 PINMUX_DATA(INTA_MARK, PQ4_FN),
686 PINMUX_DATA(GNT0_GNTIN_MARK, PQ3_FN),
687 PINMUX_DATA(REQ0_REQOUT_MARK, PQ2_FN),
688 PINMUX_DATA(PERR_MARK, PQ1_FN),
689 PINMUX_DATA(SERR_MARK, PQ0_FN),
690
691 /* PR FN */
692 PINMUX_DATA(WE7_CBE3_MARK, PR3_FN),
693 PINMUX_DATA(WE6_CBE2_MARK, PR2_FN),
694 PINMUX_DATA(WE5_CBE1_MARK, PR1_FN),
695 PINMUX_DATA(WE4_CBE0_MARK, PR0_FN),
696
697 /* MISC FN */
698 PINMUX_DATA(SCIF2_RXD_MARK, P1MSEL6_0, P1MSEL5_0),
699 PINMUX_DATA(SIOF_RXD_MARK, P2MSEL1_1, P1MSEL6_1, P1MSEL5_0),
700 PINMUX_DATA(MRESETOUT_MARK, P2MSEL2_0),
701 PINMUX_DATA(IRQOUT_MARK, P2MSEL2_1),
702};
703
704static struct pinmux_gpio pinmux_gpios[] = {
705 /* PA */
706 PINMUX_GPIO(GPIO_PA7, PA7_DATA),
707 PINMUX_GPIO(GPIO_PA6, PA6_DATA),
708 PINMUX_GPIO(GPIO_PA5, PA5_DATA),
709 PINMUX_GPIO(GPIO_PA4, PA4_DATA),
710 PINMUX_GPIO(GPIO_PA3, PA3_DATA),
711 PINMUX_GPIO(GPIO_PA2, PA2_DATA),
712 PINMUX_GPIO(GPIO_PA1, PA1_DATA),
713 PINMUX_GPIO(GPIO_PA0, PA0_DATA),
714
715 /* PB */
716 PINMUX_GPIO(GPIO_PB7, PB7_DATA),
717 PINMUX_GPIO(GPIO_PB6, PB6_DATA),
718 PINMUX_GPIO(GPIO_PB5, PB5_DATA),
719 PINMUX_GPIO(GPIO_PB4, PB4_DATA),
720 PINMUX_GPIO(GPIO_PB3, PB3_DATA),
721 PINMUX_GPIO(GPIO_PB2, PB2_DATA),
722 PINMUX_GPIO(GPIO_PB1, PB1_DATA),
723 PINMUX_GPIO(GPIO_PB0, PB0_DATA),
724
725 /* PC */
726 PINMUX_GPIO(GPIO_PC7, PC7_DATA),
727 PINMUX_GPIO(GPIO_PC6, PC6_DATA),
728 PINMUX_GPIO(GPIO_PC5, PC5_DATA),
729 PINMUX_GPIO(GPIO_PC4, PC4_DATA),
730 PINMUX_GPIO(GPIO_PC3, PC3_DATA),
731 PINMUX_GPIO(GPIO_PC2, PC2_DATA),
732 PINMUX_GPIO(GPIO_PC1, PC1_DATA),
733 PINMUX_GPIO(GPIO_PC0, PC0_DATA),
734
735 /* PD */
736 PINMUX_GPIO(GPIO_PD7, PD7_DATA),
737 PINMUX_GPIO(GPIO_PD6, PD6_DATA),
738 PINMUX_GPIO(GPIO_PD5, PD5_DATA),
739 PINMUX_GPIO(GPIO_PD4, PD4_DATA),
740 PINMUX_GPIO(GPIO_PD3, PD3_DATA),
741 PINMUX_GPIO(GPIO_PD2, PD2_DATA),
742 PINMUX_GPIO(GPIO_PD1, PD1_DATA),
743 PINMUX_GPIO(GPIO_PD0, PD0_DATA),
744
745 /* PE */
746 PINMUX_GPIO(GPIO_PE5, PE5_DATA),
747 PINMUX_GPIO(GPIO_PE4, PE4_DATA),
748 PINMUX_GPIO(GPIO_PE3, PE3_DATA),
749 PINMUX_GPIO(GPIO_PE2, PE2_DATA),
750 PINMUX_GPIO(GPIO_PE1, PE1_DATA),
751 PINMUX_GPIO(GPIO_PE0, PE0_DATA),
752
753 /* PF */
754 PINMUX_GPIO(GPIO_PF7, PF7_DATA),
755 PINMUX_GPIO(GPIO_PF6, PF6_DATA),
756 PINMUX_GPIO(GPIO_PF5, PF5_DATA),
757 PINMUX_GPIO(GPIO_PF4, PF4_DATA),
758 PINMUX_GPIO(GPIO_PF3, PF3_DATA),
759 PINMUX_GPIO(GPIO_PF2, PF2_DATA),
760 PINMUX_GPIO(GPIO_PF1, PF1_DATA),
761 PINMUX_GPIO(GPIO_PF0, PF0_DATA),
762
763 /* PG */
764 PINMUX_GPIO(GPIO_PG7, PG7_DATA),
765 PINMUX_GPIO(GPIO_PG6, PG6_DATA),
766 PINMUX_GPIO(GPIO_PG5, PG5_DATA),
767 PINMUX_GPIO(GPIO_PG4, PG4_DATA),
768 PINMUX_GPIO(GPIO_PG3, PG3_DATA),
769 PINMUX_GPIO(GPIO_PG2, PG2_DATA),
770 PINMUX_GPIO(GPIO_PG1, PG1_DATA),
771 PINMUX_GPIO(GPIO_PG0, PG0_DATA),
772
773 /* PH */
774 PINMUX_GPIO(GPIO_PH7, PH7_DATA),
775 PINMUX_GPIO(GPIO_PH6, PH6_DATA),
776 PINMUX_GPIO(GPIO_PH5, PH5_DATA),
777 PINMUX_GPIO(GPIO_PH4, PH4_DATA),
778 PINMUX_GPIO(GPIO_PH3, PH3_DATA),
779 PINMUX_GPIO(GPIO_PH2, PH2_DATA),
780 PINMUX_GPIO(GPIO_PH1, PH1_DATA),
781 PINMUX_GPIO(GPIO_PH0, PH0_DATA),
782
783 /* PJ */
784 PINMUX_GPIO(GPIO_PJ7, PJ7_DATA),
785 PINMUX_GPIO(GPIO_PJ6, PJ6_DATA),
786 PINMUX_GPIO(GPIO_PJ5, PJ5_DATA),
787 PINMUX_GPIO(GPIO_PJ4, PJ4_DATA),
788 PINMUX_GPIO(GPIO_PJ3, PJ3_DATA),
789 PINMUX_GPIO(GPIO_PJ2, PJ2_DATA),
790 PINMUX_GPIO(GPIO_PJ1, PJ1_DATA),
791 PINMUX_GPIO(GPIO_PJ0, PJ0_DATA),
792
793 /* PK */
794 PINMUX_GPIO(GPIO_PK7, PK7_DATA),
795 PINMUX_GPIO(GPIO_PK6, PK6_DATA),
796 PINMUX_GPIO(GPIO_PK5, PK5_DATA),
797 PINMUX_GPIO(GPIO_PK4, PK4_DATA),
798 PINMUX_GPIO(GPIO_PK3, PK3_DATA),
799 PINMUX_GPIO(GPIO_PK2, PK2_DATA),
800 PINMUX_GPIO(GPIO_PK1, PK1_DATA),
801 PINMUX_GPIO(GPIO_PK0, PK0_DATA),
802
803 /* PL */
804 PINMUX_GPIO(GPIO_PL7, PL7_DATA),
805 PINMUX_GPIO(GPIO_PL6, PL6_DATA),
806 PINMUX_GPIO(GPIO_PL5, PL5_DATA),
807 PINMUX_GPIO(GPIO_PL4, PL4_DATA),
808 PINMUX_GPIO(GPIO_PL3, PL3_DATA),
809 PINMUX_GPIO(GPIO_PL2, PL2_DATA),
810 PINMUX_GPIO(GPIO_PL1, PL1_DATA),
811 PINMUX_GPIO(GPIO_PL0, PL0_DATA),
812
813 /* PM */
814 PINMUX_GPIO(GPIO_PM1, PM1_DATA),
815 PINMUX_GPIO(GPIO_PM0, PM0_DATA),
816
817 /* PN */
818 PINMUX_GPIO(GPIO_PN7, PN7_DATA),
819 PINMUX_GPIO(GPIO_PN6, PN6_DATA),
820 PINMUX_GPIO(GPIO_PN5, PN5_DATA),
821 PINMUX_GPIO(GPIO_PN4, PN4_DATA),
822 PINMUX_GPIO(GPIO_PN3, PN3_DATA),
823 PINMUX_GPIO(GPIO_PN2, PN2_DATA),
824 PINMUX_GPIO(GPIO_PN1, PN1_DATA),
825 PINMUX_GPIO(GPIO_PN0, PN0_DATA),
826
827 /* PP */
828 PINMUX_GPIO(GPIO_PP5, PP5_DATA),
829 PINMUX_GPIO(GPIO_PP4, PP4_DATA),
830 PINMUX_GPIO(GPIO_PP3, PP3_DATA),
831 PINMUX_GPIO(GPIO_PP2, PP2_DATA),
832 PINMUX_GPIO(GPIO_PP1, PP1_DATA),
833 PINMUX_GPIO(GPIO_PP0, PP0_DATA),
834
835 /* PQ */
836 PINMUX_GPIO(GPIO_PQ4, PQ4_DATA),
837 PINMUX_GPIO(GPIO_PQ3, PQ3_DATA),
838 PINMUX_GPIO(GPIO_PQ2, PQ2_DATA),
839 PINMUX_GPIO(GPIO_PQ1, PQ1_DATA),
840 PINMUX_GPIO(GPIO_PQ0, PQ0_DATA),
841
842 /* PR */
843 PINMUX_GPIO(GPIO_PR3, PR3_DATA),
844 PINMUX_GPIO(GPIO_PR2, PR2_DATA),
845 PINMUX_GPIO(GPIO_PR1, PR1_DATA),
846 PINMUX_GPIO(GPIO_PR0, PR0_DATA),
847
848 /* FN */
849 PINMUX_GPIO(GPIO_FN_D63_AD31, D63_AD31_MARK),
850 PINMUX_GPIO(GPIO_FN_D62_AD30, D62_AD30_MARK),
851 PINMUX_GPIO(GPIO_FN_D61_AD29, D61_AD29_MARK),
852 PINMUX_GPIO(GPIO_FN_D60_AD28, D60_AD28_MARK),
853 PINMUX_GPIO(GPIO_FN_D59_AD27, D59_AD27_MARK),
854 PINMUX_GPIO(GPIO_FN_D58_AD26, D58_AD26_MARK),
855 PINMUX_GPIO(GPIO_FN_D57_AD25, D57_AD25_MARK),
856 PINMUX_GPIO(GPIO_FN_D56_AD24, D56_AD24_MARK),
857 PINMUX_GPIO(GPIO_FN_D55_AD23, D55_AD23_MARK),
858 PINMUX_GPIO(GPIO_FN_D54_AD22, D54_AD22_MARK),
859 PINMUX_GPIO(GPIO_FN_D53_AD21, D53_AD21_MARK),
860 PINMUX_GPIO(GPIO_FN_D52_AD20, D52_AD20_MARK),
861 PINMUX_GPIO(GPIO_FN_D51_AD19, D51_AD19_MARK),
862 PINMUX_GPIO(GPIO_FN_D50_AD18, D50_AD18_MARK),
863 PINMUX_GPIO(GPIO_FN_D49_AD17_DB5, D49_AD17_DB5_MARK),
864 PINMUX_GPIO(GPIO_FN_D48_AD16_DB4, D48_AD16_DB4_MARK),
865 PINMUX_GPIO(GPIO_FN_D47_AD15_DB3, D47_AD15_DB3_MARK),
866 PINMUX_GPIO(GPIO_FN_D46_AD14_DB2, D46_AD14_DB2_MARK),
867 PINMUX_GPIO(GPIO_FN_D45_AD13_DB1, D45_AD13_DB1_MARK),
868 PINMUX_GPIO(GPIO_FN_D44_AD12_DB0, D44_AD12_DB0_MARK),
869 PINMUX_GPIO(GPIO_FN_D43_AD11_DG5, D43_AD11_DG5_MARK),
870 PINMUX_GPIO(GPIO_FN_D42_AD10_DG4, D42_AD10_DG4_MARK),
871 PINMUX_GPIO(GPIO_FN_D41_AD9_DG3, D41_AD9_DG3_MARK),
872 PINMUX_GPIO(GPIO_FN_D40_AD8_DG2, D40_AD8_DG2_MARK),
873 PINMUX_GPIO(GPIO_FN_D39_AD7_DG1, D39_AD7_DG1_MARK),
874 PINMUX_GPIO(GPIO_FN_D38_AD6_DG0, D38_AD6_DG0_MARK),
875 PINMUX_GPIO(GPIO_FN_D37_AD5_DR5, D37_AD5_DR5_MARK),
876 PINMUX_GPIO(GPIO_FN_D36_AD4_DR4, D36_AD4_DR4_MARK),
877 PINMUX_GPIO(GPIO_FN_D35_AD3_DR3, D35_AD3_DR3_MARK),
878 PINMUX_GPIO(GPIO_FN_D34_AD2_DR2, D34_AD2_DR2_MARK),
879 PINMUX_GPIO(GPIO_FN_D33_AD1_DR1, D33_AD1_DR1_MARK),
880 PINMUX_GPIO(GPIO_FN_D32_AD0_DR0, D32_AD0_DR0_MARK),
881 PINMUX_GPIO(GPIO_FN_REQ1, REQ1_MARK),
882 PINMUX_GPIO(GPIO_FN_REQ2, REQ2_MARK),
883 PINMUX_GPIO(GPIO_FN_REQ3, REQ3_MARK),
884 PINMUX_GPIO(GPIO_FN_GNT1, GNT1_MARK),
885 PINMUX_GPIO(GPIO_FN_GNT2, GNT2_MARK),
886 PINMUX_GPIO(GPIO_FN_GNT3, GNT3_MARK),
887 PINMUX_GPIO(GPIO_FN_MMCCLK, MMCCLK_MARK),
888 PINMUX_GPIO(GPIO_FN_D31, D31_MARK),
889 PINMUX_GPIO(GPIO_FN_D30, D30_MARK),
890 PINMUX_GPIO(GPIO_FN_D29, D29_MARK),
891 PINMUX_GPIO(GPIO_FN_D28, D28_MARK),
892 PINMUX_GPIO(GPIO_FN_D27, D27_MARK),
893 PINMUX_GPIO(GPIO_FN_D26, D26_MARK),
894 PINMUX_GPIO(GPIO_FN_D25, D25_MARK),
895 PINMUX_GPIO(GPIO_FN_D24, D24_MARK),
896 PINMUX_GPIO(GPIO_FN_D23, D23_MARK),
897 PINMUX_GPIO(GPIO_FN_D22, D22_MARK),
898 PINMUX_GPIO(GPIO_FN_D21, D21_MARK),
899 PINMUX_GPIO(GPIO_FN_D20, D20_MARK),
900 PINMUX_GPIO(GPIO_FN_D19, D19_MARK),
901 PINMUX_GPIO(GPIO_FN_D18, D18_MARK),
902 PINMUX_GPIO(GPIO_FN_D17, D17_MARK),
903 PINMUX_GPIO(GPIO_FN_D16, D16_MARK),
904 PINMUX_GPIO(GPIO_FN_SCIF1_SCK, SCIF1_SCK_MARK),
905 PINMUX_GPIO(GPIO_FN_SCIF1_RXD, SCIF1_RXD_MARK),
906 PINMUX_GPIO(GPIO_FN_SCIF1_TXD, SCIF1_TXD_MARK),
907 PINMUX_GPIO(GPIO_FN_SCIF0_CTS, SCIF0_CTS_MARK),
908 PINMUX_GPIO(GPIO_FN_INTD, INTD_MARK),
909 PINMUX_GPIO(GPIO_FN_FCE, FCE_MARK),
910 PINMUX_GPIO(GPIO_FN_SCIF0_RTS, SCIF0_RTS_MARK),
911 PINMUX_GPIO(GPIO_FN_HSPI_CS, HSPI_CS_MARK),
912 PINMUX_GPIO(GPIO_FN_FSE, FSE_MARK),
913 PINMUX_GPIO(GPIO_FN_SCIF0_SCK, SCIF0_SCK_MARK),
914 PINMUX_GPIO(GPIO_FN_HSPI_CLK, HSPI_CLK_MARK),
915 PINMUX_GPIO(GPIO_FN_FRE, FRE_MARK),
916 PINMUX_GPIO(GPIO_FN_SCIF0_RXD, SCIF0_RXD_MARK),
917 PINMUX_GPIO(GPIO_FN_HSPI_RX, HSPI_RX_MARK),
918 PINMUX_GPIO(GPIO_FN_FRB, FRB_MARK),
919 PINMUX_GPIO(GPIO_FN_SCIF0_TXD, SCIF0_TXD_MARK),
920 PINMUX_GPIO(GPIO_FN_HSPI_TX, HSPI_TX_MARK),
921 PINMUX_GPIO(GPIO_FN_FWE, FWE_MARK),
922 PINMUX_GPIO(GPIO_FN_SCIF5_TXD, SCIF5_TXD_MARK),
923 PINMUX_GPIO(GPIO_FN_HAC1_SYNC, HAC1_SYNC_MARK),
924 PINMUX_GPIO(GPIO_FN_SSI1_WS, SSI1_WS_MARK),
925 PINMUX_GPIO(GPIO_FN_SIOF_TXD_PJ, SIOF_TXD_PJ_MARK),
926 PINMUX_GPIO(GPIO_FN_HAC0_SDOUT, HAC0_SDOUT_MARK),
927 PINMUX_GPIO(GPIO_FN_SSI0_SDATA, SSI0_SDATA_MARK),
928 PINMUX_GPIO(GPIO_FN_SIOF_RXD_PJ, SIOF_RXD_PJ_MARK),
929 PINMUX_GPIO(GPIO_FN_HAC0_SDIN, HAC0_SDIN_MARK),
930 PINMUX_GPIO(GPIO_FN_SSI0_SCK, SSI0_SCK_MARK),
931 PINMUX_GPIO(GPIO_FN_SIOF_SYNC_PJ, SIOF_SYNC_PJ_MARK),
932 PINMUX_GPIO(GPIO_FN_HAC0_SYNC, HAC0_SYNC_MARK),
933 PINMUX_GPIO(GPIO_FN_SSI0_WS, SSI0_WS_MARK),
934 PINMUX_GPIO(GPIO_FN_SIOF_MCLK_PJ, SIOF_MCLK_PJ_MARK),
935 PINMUX_GPIO(GPIO_FN_HAC_RES, HAC_RES_MARK),
936 PINMUX_GPIO(GPIO_FN_SIOF_SCK_PJ, SIOF_SCK_PJ_MARK),
937 PINMUX_GPIO(GPIO_FN_HAC0_BITCLK, HAC0_BITCLK_MARK),
938 PINMUX_GPIO(GPIO_FN_SSI0_CLK, SSI0_CLK_MARK),
939 PINMUX_GPIO(GPIO_FN_HAC1_BITCLK, HAC1_BITCLK_MARK),
940 PINMUX_GPIO(GPIO_FN_SSI1_CLK, SSI1_CLK_MARK),
941 PINMUX_GPIO(GPIO_FN_TCLK, TCLK_MARK),
942 PINMUX_GPIO(GPIO_FN_IOIS16, IOIS16_MARK),
943 PINMUX_GPIO(GPIO_FN_STATUS0, STATUS0_MARK),
944 PINMUX_GPIO(GPIO_FN_DRAK0_PK3, DRAK0_PK3_MARK),
945 PINMUX_GPIO(GPIO_FN_STATUS1, STATUS1_MARK),
946 PINMUX_GPIO(GPIO_FN_DRAK1_PK2, DRAK1_PK2_MARK),
947 PINMUX_GPIO(GPIO_FN_DACK2, DACK2_MARK),
948 PINMUX_GPIO(GPIO_FN_SCIF2_TXD, SCIF2_TXD_MARK),
949 PINMUX_GPIO(GPIO_FN_MMCCMD, MMCCMD_MARK),
950 PINMUX_GPIO(GPIO_FN_SIOF_TXD_PK, SIOF_TXD_PK_MARK),
951 PINMUX_GPIO(GPIO_FN_DACK3, DACK3_MARK),
952 PINMUX_GPIO(GPIO_FN_SCIF2_SCK, SCIF2_SCK_MARK),
953 PINMUX_GPIO(GPIO_FN_MMCDAT, MMCDAT_MARK),
954 PINMUX_GPIO(GPIO_FN_SIOF_SCK_PK, SIOF_SCK_PK_MARK),
955 PINMUX_GPIO(GPIO_FN_DREQ0, DREQ0_MARK),
956 PINMUX_GPIO(GPIO_FN_DREQ1, DREQ1_MARK),
957 PINMUX_GPIO(GPIO_FN_DRAK0_PK1, DRAK0_PK1_MARK),
958 PINMUX_GPIO(GPIO_FN_DRAK1_PK0, DRAK1_PK0_MARK),
959 PINMUX_GPIO(GPIO_FN_DREQ2, DREQ2_MARK),
960 PINMUX_GPIO(GPIO_FN_INTB, INTB_MARK),
961 PINMUX_GPIO(GPIO_FN_DREQ3, DREQ3_MARK),
962 PINMUX_GPIO(GPIO_FN_INTC, INTC_MARK),
963 PINMUX_GPIO(GPIO_FN_DRAK2, DRAK2_MARK),
964 PINMUX_GPIO(GPIO_FN_CE2A, CE2A_MARK),
965 PINMUX_GPIO(GPIO_FN_IRL4, IRL4_MARK),
966 PINMUX_GPIO(GPIO_FN_FD4, FD4_MARK),
967 PINMUX_GPIO(GPIO_FN_IRL5, IRL5_MARK),
968 PINMUX_GPIO(GPIO_FN_FD5, FD5_MARK),
969 PINMUX_GPIO(GPIO_FN_IRL6, IRL6_MARK),
970 PINMUX_GPIO(GPIO_FN_FD6, FD6_MARK),
971 PINMUX_GPIO(GPIO_FN_IRL7, IRL7_MARK),
972 PINMUX_GPIO(GPIO_FN_FD7, FD7_MARK),
973 PINMUX_GPIO(GPIO_FN_DRAK3, DRAK3_MARK),
974 PINMUX_GPIO(GPIO_FN_CE2B, CE2B_MARK),
975 PINMUX_GPIO(GPIO_FN_BREQ_BSACK, BREQ_BSACK_MARK),
976 PINMUX_GPIO(GPIO_FN_BACK_BSREQ, BACK_BSREQ_MARK),
977 PINMUX_GPIO(GPIO_FN_SCIF5_RXD, SCIF5_RXD_MARK),
978 PINMUX_GPIO(GPIO_FN_HAC1_SDIN, HAC1_SDIN_MARK),
979 PINMUX_GPIO(GPIO_FN_SSI1_SCK, SSI1_SCK_MARK),
980 PINMUX_GPIO(GPIO_FN_SCIF5_SCK, SCIF5_SCK_MARK),
981 PINMUX_GPIO(GPIO_FN_HAC1_SDOUT, HAC1_SDOUT_MARK),
982 PINMUX_GPIO(GPIO_FN_SSI1_SDATA, SSI1_SDATA_MARK),
983 PINMUX_GPIO(GPIO_FN_SCIF3_TXD, SCIF3_TXD_MARK),
984 PINMUX_GPIO(GPIO_FN_FCLE, FCLE_MARK),
985 PINMUX_GPIO(GPIO_FN_SCIF3_RXD, SCIF3_RXD_MARK),
986 PINMUX_GPIO(GPIO_FN_FALE, FALE_MARK),
987 PINMUX_GPIO(GPIO_FN_SCIF3_SCK, SCIF3_SCK_MARK),
988 PINMUX_GPIO(GPIO_FN_FD0, FD0_MARK),
989 PINMUX_GPIO(GPIO_FN_SCIF4_TXD, SCIF4_TXD_MARK),
990 PINMUX_GPIO(GPIO_FN_FD1, FD1_MARK),
991 PINMUX_GPIO(GPIO_FN_SCIF4_RXD, SCIF4_RXD_MARK),
992 PINMUX_GPIO(GPIO_FN_FD2, FD2_MARK),
993 PINMUX_GPIO(GPIO_FN_SCIF4_SCK, SCIF4_SCK_MARK),
994 PINMUX_GPIO(GPIO_FN_FD3, FD3_MARK),
995 PINMUX_GPIO(GPIO_FN_DEVSEL_DCLKOUT, DEVSEL_DCLKOUT_MARK),
996 PINMUX_GPIO(GPIO_FN_STOP_CDE, STOP_CDE_MARK),
997 PINMUX_GPIO(GPIO_FN_LOCK_ODDF, LOCK_ODDF_MARK),
998 PINMUX_GPIO(GPIO_FN_TRDY_DISPL, TRDY_DISPL_MARK),
999 PINMUX_GPIO(GPIO_FN_IRDY_HSYNC, IRDY_HSYNC_MARK),
1000 PINMUX_GPIO(GPIO_FN_PCIFRAME_VSYNC, PCIFRAME_VSYNC_MARK),
1001 PINMUX_GPIO(GPIO_FN_INTA, INTA_MARK),
1002 PINMUX_GPIO(GPIO_FN_GNT0_GNTIN, GNT0_GNTIN_MARK),
1003 PINMUX_GPIO(GPIO_FN_REQ0_REQOUT, REQ0_REQOUT_MARK),
1004 PINMUX_GPIO(GPIO_FN_PERR, PERR_MARK),
1005 PINMUX_GPIO(GPIO_FN_SERR, SERR_MARK),
1006 PINMUX_GPIO(GPIO_FN_WE7_CBE3, WE7_CBE3_MARK),
1007 PINMUX_GPIO(GPIO_FN_WE6_CBE2, WE6_CBE2_MARK),
1008 PINMUX_GPIO(GPIO_FN_WE5_CBE1, WE5_CBE1_MARK),
1009 PINMUX_GPIO(GPIO_FN_WE4_CBE0, WE4_CBE0_MARK),
1010 PINMUX_GPIO(GPIO_FN_SCIF2_RXD, SCIF2_RXD_MARK),
1011 PINMUX_GPIO(GPIO_FN_SIOF_RXD, SIOF_RXD_MARK),
1012 PINMUX_GPIO(GPIO_FN_MRESETOUT, MRESETOUT_MARK),
1013 PINMUX_GPIO(GPIO_FN_IRQOUT, IRQOUT_MARK),
1014};
1015
1016static struct pinmux_cfg_reg pinmux_config_regs[] = {
1017 { PINMUX_CFG_REG("PACR", 0xffe70000, 16, 2) {
1018 PA7_FN, PA7_OUT, PA7_IN, PA7_IN_PU,
1019 PA6_FN, PA6_OUT, PA6_IN, PA6_IN_PU,
1020 PA5_FN, PA5_OUT, PA5_IN, PA5_IN_PU,
1021 PA4_FN, PA4_OUT, PA4_IN, PA4_IN_PU,
1022 PA3_FN, PA3_OUT, PA3_IN, PA3_IN_PU,
1023 PA2_FN, PA2_OUT, PA2_IN, PA2_IN_PU,
1024 PA1_FN, PA1_OUT, PA1_IN, PA1_IN_PU,
1025 PA0_FN, PA0_OUT, PA0_IN, PA0_IN_PU }
1026 },
1027 { PINMUX_CFG_REG("PBCR", 0xffe70002, 16, 2) {
1028 PB7_FN, PB7_OUT, PB7_IN, PB7_IN_PU,
1029 PB6_FN, PB6_OUT, PB6_IN, PB6_IN_PU,
1030 PB5_FN, PB5_OUT, PB5_IN, PB5_IN_PU,
1031 PB4_FN, PB4_OUT, PB4_IN, PB4_IN_PU,
1032 PB3_FN, PB3_OUT, PB3_IN, PB3_IN_PU,
1033 PB2_FN, PB2_OUT, PB2_IN, PB2_IN_PU,
1034 PB1_FN, PB1_OUT, PB1_IN, PB1_IN_PU,
1035 PB0_FN, PB0_OUT, PB0_IN, PB0_IN_PU }
1036 },
1037 { PINMUX_CFG_REG("PCCR", 0xffe70004, 16, 2) {
1038 PC7_FN, PC7_OUT, PC7_IN, PC7_IN_PU,
1039 PC6_FN, PC6_OUT, PC6_IN, PC6_IN_PU,
1040 PC5_FN, PC5_OUT, PC5_IN, PC5_IN_PU,
1041 PC4_FN, PC4_OUT, PC4_IN, PC4_IN_PU,
1042 PC3_FN, PC3_OUT, PC3_IN, PC3_IN_PU,
1043 PC2_FN, PC2_OUT, PC2_IN, PC2_IN_PU,
1044 PC1_FN, PC1_OUT, PC1_IN, PC1_IN_PU,
1045 PC0_FN, PC0_OUT, PC0_IN, PC0_IN_PU }
1046 },
1047 { PINMUX_CFG_REG("PDCR", 0xffe70006, 16, 2) {
1048 PD7_FN, PD7_OUT, PD7_IN, PD7_IN_PU,
1049 PD6_FN, PD6_OUT, PD6_IN, PD6_IN_PU,
1050 PD5_FN, PD5_OUT, PD5_IN, PD5_IN_PU,
1051 PD4_FN, PD4_OUT, PD4_IN, PD4_IN_PU,
1052 PD3_FN, PD3_OUT, PD3_IN, PD3_IN_PU,
1053 PD2_FN, PD2_OUT, PD2_IN, PD2_IN_PU,
1054 PD1_FN, PD1_OUT, PD1_IN, PD1_IN_PU,
1055 PD0_FN, PD0_OUT, PD0_IN, PD0_IN_PU }
1056 },
1057 { PINMUX_CFG_REG("PECR", 0xffe70008, 16, 2) {
1058 0, 0, 0, 0,
1059 0, 0, 0, 0,
1060 PE5_FN, PE5_OUT, PE5_IN, PE5_IN_PU,
1061 PE4_FN, PE4_OUT, PE4_IN, PE4_IN_PU,
1062 PE3_FN, PE3_OUT, PE3_IN, PE3_IN_PU,
1063 PE2_FN, PE2_OUT, PE2_IN, PE2_IN_PU,
1064 PE1_FN, PE1_OUT, PE1_IN, PE1_IN_PU,
1065 PE0_FN, PE0_OUT, PE0_IN, PE0_IN_PU }
1066 },
1067 { PINMUX_CFG_REG("PFCR", 0xffe7000a, 16, 2) {
1068 PF7_FN, PF7_OUT, PF7_IN, PF7_IN_PU,
1069 PF6_FN, PF6_OUT, PF6_IN, PF6_IN_PU,
1070 PF5_FN, PF5_OUT, PF5_IN, PF5_IN_PU,
1071 PF4_FN, PF4_OUT, PF4_IN, PF4_IN_PU,
1072 PF3_FN, PF3_OUT, PF3_IN, PF3_IN_PU,
1073 PF2_FN, PF2_OUT, PF2_IN, PF2_IN_PU,
1074 PF1_FN, PF1_OUT, PF1_IN, PF1_IN_PU,
1075 PF0_FN, PF0_OUT, PF0_IN, PF0_IN_PU }
1076 },
1077 { PINMUX_CFG_REG("PGCR", 0xffe7000c, 16, 2) {
1078 PG7_FN, PG7_OUT, PG7_IN, PG7_IN_PU,
1079 PG6_FN, PG6_OUT, PG6_IN, PG6_IN_PU,
1080 PG5_FN, PG5_OUT, PG5_IN, PG5_IN_PU,
1081 PG4_FN, PG4_OUT, PG4_IN, PG4_IN_PU,
1082 PG3_FN, PG3_OUT, PG3_IN, PG3_IN_PU,
1083 PG2_FN, PG2_OUT, PG2_IN, PG2_IN_PU,
1084 PG1_FN, PG1_OUT, PG1_IN, PG1_IN_PU,
1085 PG0_FN, PG0_OUT, PG0_IN, PG0_IN_PU }
1086 },
1087 { PINMUX_CFG_REG("PHCR", 0xffe7000e, 16, 2) {
1088 PH7_FN, PH7_OUT, PH7_IN, PH7_IN_PU,
1089 PH6_FN, PH6_OUT, PH6_IN, PH6_IN_PU,
1090 PH5_FN, PH5_OUT, PH5_IN, PH5_IN_PU,
1091 PH4_FN, PH4_OUT, PH4_IN, PH4_IN_PU,
1092 PH3_FN, PH3_OUT, PH3_IN, PH3_IN_PU,
1093 PH2_FN, PH2_OUT, PH2_IN, PH2_IN_PU,
1094 PH1_FN, PH1_OUT, PH1_IN, PH1_IN_PU,
1095 PH0_FN, PH0_OUT, PH0_IN, PH0_IN_PU }
1096 },
1097 { PINMUX_CFG_REG("PJCR", 0xffe70010, 16, 2) {
1098 PJ7_FN, PJ7_OUT, PJ7_IN, PJ7_IN_PU,
1099 PJ6_FN, PJ6_OUT, PJ6_IN, PJ6_IN_PU,
1100 PJ5_FN, PJ5_OUT, PJ5_IN, PJ5_IN_PU,
1101 PJ4_FN, PJ4_OUT, PJ4_IN, PJ4_IN_PU,
1102 PJ3_FN, PJ3_OUT, PJ3_IN, PJ3_IN_PU,
1103 PJ2_FN, PJ2_OUT, PJ2_IN, PJ2_IN_PU,
1104 PJ1_FN, PJ1_OUT, PJ1_IN, PJ1_IN_PU,
1105 PJ0_FN, PJ0_OUT, PJ0_IN, PJ0_IN_PU }
1106 },
1107 { PINMUX_CFG_REG("PKCR", 0xffe70012, 16, 2) {
1108 PK7_FN, PK7_OUT, PK7_IN, PK7_IN_PU,
1109 PK6_FN, PK6_OUT, PK6_IN, PK6_IN_PU,
1110 PK5_FN, PK5_OUT, PK5_IN, PK5_IN_PU,
1111 PK4_FN, PK4_OUT, PK4_IN, PK4_IN_PU,
1112 PK3_FN, PK3_OUT, PK3_IN, PK3_IN_PU,
1113 PK2_FN, PK2_OUT, PK2_IN, PK2_IN_PU,
1114 PK1_FN, PK1_OUT, PK1_IN, PK1_IN_PU,
1115 PK0_FN, PK0_OUT, PK0_IN, PK0_IN_PU }
1116 },
1117 { PINMUX_CFG_REG("PLCR", 0xffe70014, 16, 2) {
1118 PL7_FN, PL7_OUT, PL7_IN, PL7_IN_PU,
1119 PL6_FN, PL6_OUT, PL6_IN, PL6_IN_PU,
1120 PL5_FN, PL5_OUT, PL5_IN, PL5_IN_PU,
1121 PL4_FN, PL4_OUT, PL4_IN, PL4_IN_PU,
1122 PL3_FN, PL3_OUT, PL3_IN, PL3_IN_PU,
1123 PL2_FN, PL2_OUT, PL2_IN, PL2_IN_PU,
1124 PL1_FN, PL1_OUT, PL1_IN, PL1_IN_PU,
1125 PL0_FN, PL0_OUT, PL0_IN, PL0_IN_PU }
1126 },
1127 { PINMUX_CFG_REG("PMCR", 0xffe70016, 16, 2) {
1128 0, 0, 0, 0,
1129 0, 0, 0, 0,
1130 0, 0, 0, 0,
1131 0, 0, 0, 0,
1132 0, 0, 0, 0,
1133 0, 0, 0, 0,
1134 PM1_FN, PM1_OUT, PM1_IN, PM1_IN_PU,
1135 PM0_FN, PM0_OUT, PM0_IN, PM0_IN_PU }
1136 },
1137 { PINMUX_CFG_REG("PNCR", 0xffe70018, 16, 2) {
1138 PN7_FN, PN7_OUT, PN7_IN, PN7_IN_PU,
1139 PN6_FN, PN6_OUT, PN6_IN, PN6_IN_PU,
1140 PN5_FN, PN5_OUT, PN5_IN, PN5_IN_PU,
1141 PN4_FN, PN4_OUT, PN4_IN, PN4_IN_PU,
1142 PN3_FN, PN3_OUT, PN3_IN, PN3_IN_PU,
1143 PN2_FN, PN2_OUT, PN2_IN, PN2_IN_PU,
1144 PN1_FN, PN1_OUT, PN1_IN, PN1_IN_PU,
1145 PN0_FN, PN0_OUT, PN0_IN, PN0_IN_PU }
1146 },
1147 { PINMUX_CFG_REG("PPCR", 0xffe7001a, 16, 2) {
1148 0, 0, 0, 0,
1149 0, 0, 0, 0,
1150 PP5_FN, PP5_OUT, PP5_IN, PP5_IN_PU,
1151 PP4_FN, PP4_OUT, PP4_IN, PP4_IN_PU,
1152 PP3_FN, PP3_OUT, PP3_IN, PP3_IN_PU,
1153 PP2_FN, PP2_OUT, PP2_IN, PP2_IN_PU,
1154 PP1_FN, PP1_OUT, PP1_IN, PP1_IN_PU,
1155 PP0_FN, PP0_OUT, PP0_IN, PP0_IN_PU }
1156 },
1157 { PINMUX_CFG_REG("PQCR", 0xffe7001c, 16, 2) {
1158 0, 0, 0, 0,
1159 0, 0, 0, 0,
1160 0, 0, 0, 0,
1161 PQ4_FN, PQ4_OUT, PQ4_IN, PQ4_IN_PU,
1162 PQ3_FN, PQ3_OUT, PQ3_IN, PQ3_IN_PU,
1163 PQ2_FN, PQ2_OUT, PQ2_IN, PQ2_IN_PU,
1164 PQ1_FN, PQ1_OUT, PQ1_IN, PQ1_IN_PU,
1165 PQ0_FN, PQ0_OUT, PQ0_IN, PQ0_IN_PU }
1166 },
1167 { PINMUX_CFG_REG("PRCR", 0xffe7001e, 16, 2) {
1168 0, 0, 0, 0,
1169 0, 0, 0, 0,
1170 0, 0, 0, 0,
1171 0, 0, 0, 0,
1172 PR3_FN, PR3_OUT, PR3_IN, PR3_IN_PU,
1173 PR2_FN, PR2_OUT, PR2_IN, PR2_IN_PU,
1174 PR1_FN, PR1_OUT, PR1_IN, PR1_IN_PU,
1175 PR0_FN, PR0_OUT, PR0_IN, PR0_IN_PU }
1176 },
1177 { PINMUX_CFG_REG("P1MSELR", 0xffe70080, 16, 1) {
1178 P1MSEL15_0, P1MSEL15_1,
1179 P1MSEL14_0, P1MSEL14_1,
1180 P1MSEL13_0, P1MSEL13_1,
1181 P1MSEL12_0, P1MSEL12_1,
1182 P1MSEL11_0, P1MSEL11_1,
1183 P1MSEL10_0, P1MSEL10_1,
1184 P1MSEL9_0, P1MSEL9_1,
1185 P1MSEL8_0, P1MSEL8_1,
1186 P1MSEL7_0, P1MSEL7_1,
1187 P1MSEL6_0, P1MSEL6_1,
1188 P1MSEL5_0, 0,
1189 P1MSEL4_0, P1MSEL4_1,
1190 P1MSEL3_0, P1MSEL3_1,
1191 P1MSEL2_0, P1MSEL2_1,
1192 P1MSEL1_0, P1MSEL1_1,
1193 P1MSEL0_0, P1MSEL0_1 }
1194 },
1195 { PINMUX_CFG_REG("P2MSELR", 0xffe70082, 16, 1) {
1196 0, 0,
1197 0, 0,
1198 0, 0,
1199 0, 0,
1200 0, 0,
1201 0, 0,
1202 0, 0,
1203 0, 0,
1204 0, 0,
1205 0, 0,
1206 0, 0,
1207 0, 0,
1208 0, 0,
1209 P2MSEL2_0, P2MSEL2_1,
1210 P2MSEL1_0, P2MSEL1_1,
1211 P2MSEL0_0, P2MSEL0_1 }
1212 },
1213 {}
1214};
1215
1216static struct pinmux_data_reg pinmux_data_regs[] = {
1217 { PINMUX_DATA_REG("PADR", 0xffe70020, 8) {
1218 PA7_DATA, PA6_DATA, PA5_DATA, PA4_DATA,
1219 PA3_DATA, PA2_DATA, PA1_DATA, PA0_DATA }
1220 },
1221 { PINMUX_DATA_REG("PBDR", 0xffe70022, 8) {
1222 PB7_DATA, PB6_DATA, PB5_DATA, PB4_DATA,
1223 PB3_DATA, PB2_DATA, PB1_DATA, PB0_DATA }
1224 },
1225 { PINMUX_DATA_REG("PCDR", 0xffe70024, 8) {
1226 PC7_DATA, PC6_DATA, PC5_DATA, PC4_DATA,
1227 PC3_DATA, PC2_DATA, PC1_DATA, PC0_DATA }
1228 },
1229 { PINMUX_DATA_REG("PDDR", 0xffe70026, 8) {
1230 PD7_DATA, PD6_DATA, PD5_DATA, PD4_DATA,
1231 PD3_DATA, PD2_DATA, PD1_DATA, PD0_DATA }
1232 },
1233 { PINMUX_DATA_REG("PEDR", 0xffe70028, 8) {
1234 0, 0, PE5_DATA, PE4_DATA,
1235 PE3_DATA, PE2_DATA, PE1_DATA, PE0_DATA }
1236 },
1237 { PINMUX_DATA_REG("PFDR", 0xffe7002a, 8) {
1238 PF7_DATA, PF6_DATA, PF5_DATA, PF4_DATA,
1239 PF3_DATA, PF2_DATA, PF1_DATA, PF0_DATA }
1240 },
1241 { PINMUX_DATA_REG("PGDR", 0xffe7002c, 8) {
1242 PG7_DATA, PG6_DATA, PG5_DATA, PG4_DATA,
1243 PG3_DATA, PG2_DATA, PG1_DATA, PG0_DATA }
1244 },
1245 { PINMUX_DATA_REG("PHDR", 0xffe7002e, 8) {
1246 PH7_DATA, PH6_DATA, PH5_DATA, PH4_DATA,
1247 PH3_DATA, PH2_DATA, PH1_DATA, PH0_DATA }
1248 },
1249 { PINMUX_DATA_REG("PJDR", 0xffe70030, 8) {
1250 PJ7_DATA, PJ6_DATA, PJ5_DATA, PJ4_DATA,
1251 PJ3_DATA, PJ2_DATA, PJ1_DATA, PJ0_DATA }
1252 },
1253 { PINMUX_DATA_REG("PKDR", 0xffe70032, 8) {
1254 PK7_DATA, PK6_DATA, PK5_DATA, PK4_DATA,
1255 PK3_DATA, PK2_DATA, PK1_DATA, PK0_DATA }
1256 },
1257 { PINMUX_DATA_REG("PLDR", 0xffe70034, 8) {
1258 PL7_DATA, PL6_DATA, PL5_DATA, PL4_DATA,
1259 PL3_DATA, PL2_DATA, PL1_DATA, PL0_DATA }
1260 },
1261 { PINMUX_DATA_REG("PMDR", 0xffe70036, 8) {
1262 0, 0, 0, 0,
1263 0, 0, PM1_DATA, PM0_DATA }
1264 },
1265 { PINMUX_DATA_REG("PNDR", 0xffe70038, 8) {
1266 PN7_DATA, PN6_DATA, PN5_DATA, PN4_DATA,
1267 PN3_DATA, PN2_DATA, PN1_DATA, PN0_DATA }
1268 },
1269 { PINMUX_DATA_REG("PPDR", 0xffe7003a, 8) {
1270 0, 0, PP5_DATA, PP4_DATA,
1271 PP3_DATA, PP2_DATA, PP1_DATA, PP0_DATA }
1272 },
1273 { PINMUX_DATA_REG("PQDR", 0xffe7003c, 8) {
1274 0, 0, 0, PQ4_DATA,
1275 PQ3_DATA, PQ2_DATA, PQ1_DATA, PQ0_DATA }
1276 },
1277 { PINMUX_DATA_REG("PRDR", 0xffe7003e, 8) {
1278 0, 0, 0, 0,
1279 PR3_DATA, PR2_DATA, PR1_DATA, PR0_DATA }
1280 },
1281 { },
1282};
1283
1284static struct pinmux_info sh7785_pinmux_info = {
1285 .name = "sh7785_pfc",
1286 .reserved_id = PINMUX_RESERVED,
1287 .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
1288 .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
1289 .input_pu = { PINMUX_INPUT_PULLUP_BEGIN, PINMUX_INPUT_PULLUP_END },
1290 .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
1291 .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
1292 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
1293
1294 .first_gpio = GPIO_PA7,
1295 .last_gpio = GPIO_FN_IRQOUT,
1296
1297 .gpios = pinmux_gpios,
1298 .cfg_regs = pinmux_config_regs,
1299 .data_regs = pinmux_data_regs,
1300
1301 .gpio_data = pinmux_data,
1302 .gpio_data_size = ARRAY_SIZE(pinmux_data),
1303};
1304
1305static int __init plat_pinmux_setup(void)
1306{
1307 return register_pinmux(&sh7785_pinmux_info);
1308}
1309
1310arch_initcall(plat_pinmux_setup);
diff --git a/arch/sh/kernel/gpio.c b/arch/sh/kernel/gpio.c
index bb8b812c6895..d37165361034 100644
--- a/arch/sh/kernel/gpio.c
+++ b/arch/sh/kernel/gpio.c
@@ -267,9 +267,13 @@ int pinmux_config_gpio(struct pinmux_info *gpioc, unsigned gpio,
267 break; 267 break;
268 268
269 in_range = enum_in_range(enum_id, &gpioc->function); 269 in_range = enum_in_range(enum_id, &gpioc->function);
270 if (!in_range && range) 270 if (!in_range && range) {
271 in_range = enum_in_range(enum_id, range); 271 in_range = enum_in_range(enum_id, range);
272 272
273 if (in_range && enum_id == range->force)
274 continue;
275 }
276
273 if (!in_range) 277 if (!in_range)
274 continue; 278 continue;
275 279
@@ -432,7 +436,7 @@ static int __gpio_get_set_value(struct pinmux_info *gpioc,
432 BUG(); 436 BUG();
433 else 437 else
434 value = read_write_reg(dr->reg, dr->reg_width, 438 value = read_write_reg(dr->reg, dr->reg_width,
435 1, bit, value, do_write); 439 1, bit, !!value, do_write);
436 440
437 return value; 441 return value;
438} 442}
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c
index d917b7b4042b..d366a7443720 100644
--- a/arch/sh/kernel/sh_ksyms_32.c
+++ b/arch/sh/kernel/sh_ksyms_32.c
@@ -126,7 +126,6 @@ DECLARE_EXPORT(__movstrSI12_i4);
126EXPORT_SYMBOL(flush_cache_all); 126EXPORT_SYMBOL(flush_cache_all);
127EXPORT_SYMBOL(flush_cache_range); 127EXPORT_SYMBOL(flush_cache_range);
128EXPORT_SYMBOL(flush_dcache_page); 128EXPORT_SYMBOL(flush_dcache_page);
129EXPORT_SYMBOL(__flush_purge_region);
130#endif 129#endif
131 130
132#if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \ 131#if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \
@@ -147,3 +146,9 @@ EXPORT_SYMBOL(copy_page);
147EXPORT_SYMBOL(__clear_user); 146EXPORT_SYMBOL(__clear_user);
148EXPORT_SYMBOL(_ebss); 147EXPORT_SYMBOL(_ebss);
149EXPORT_SYMBOL(empty_zero_page); 148EXPORT_SYMBOL(empty_zero_page);
149
150#ifndef CONFIG_CACHE_OFF
151EXPORT_SYMBOL(__flush_purge_region);
152EXPORT_SYMBOL(__flush_wback_region);
153EXPORT_SYMBOL(__flush_invalidate_region);
154#endif
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index 508dfb023628..3c5ad1660bbc 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -18,6 +18,7 @@
18#include <linux/spinlock.h> 18#include <linux/spinlock.h>
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/module.h> 20#include <linux/module.h>
21#include <linux/cpu.h>
21#include <linux/interrupt.h> 22#include <linux/interrupt.h>
22#include <asm/atomic.h> 23#include <asm/atomic.h>
23#include <asm/processor.h> 24#include <asm/processor.h>
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c
index b359b08a8e33..1e5c74efbacc 100644
--- a/arch/sh/kernel/traps_32.c
+++ b/arch/sh/kernel/traps_32.c
@@ -105,6 +105,8 @@ void die(const char * str, struct pt_regs * regs, long err)
105 dump_mem("Stack: ", regs->regs[15], THREAD_SIZE + 105 dump_mem("Stack: ", regs->regs[15], THREAD_SIZE +
106 (unsigned long)task_stack_page(current)); 106 (unsigned long)task_stack_page(current));
107 107
108 notify_die(DIE_OOPS, str, regs, err, 255, SIGSEGV);
109
108 bust_spinlocks(0); 110 bust_spinlocks(0);
109 add_taint(TAINT_DIE); 111 add_taint(TAINT_DIE);
110 spin_unlock_irq(&die_lock); 112 spin_unlock_irq(&die_lock);
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 2a53943924b2..4abf00031dae 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -321,21 +321,4 @@ int memory_add_physaddr_to_nid(u64 addr)
321} 321}
322EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); 322EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
323#endif 323#endif
324
325#ifdef CONFIG_MEMORY_HOTREMOVE
326int remove_memory(u64 start, u64 size)
327{
328 unsigned long start_pfn = start >> PAGE_SHIFT;
329 unsigned long end_pfn = start_pfn + (size >> PAGE_SHIFT);
330 int ret;
331
332 ret = offline_pages(start_pfn, end_pfn, 120 * HZ);
333 if (unlikely(ret))
334 printk("%s: Failed, offline_pages() == %d\n", __func__, ret);
335
336 return ret;
337}
338EXPORT_SYMBOL_GPL(remove_memory);
339#endif
340
341#endif /* CONFIG_MEMORY_HOTPLUG */ 324#endif /* CONFIG_MEMORY_HOTPLUG */
diff --git a/arch/sparc/kernel/apc.c b/arch/sparc/kernel/apc.c
index 4dd1ba752ce6..9c115823c4b5 100644
--- a/arch/sparc/kernel/apc.c
+++ b/arch/sparc/kernel/apc.c
@@ -31,7 +31,7 @@
31#define APC_DEVNAME "apc" 31#define APC_DEVNAME "apc"
32 32
33static u8 __iomem *regs; 33static u8 __iomem *regs;
34static int apc_no_idle __initdata = 0; 34static int apc_no_idle __devinitdata = 0;
35 35
36#define apc_readb(offs) (sbus_readb(regs+offs)) 36#define apc_readb(offs) (sbus_readb(regs+offs))
37#define apc_writeb(val, offs) (sbus_writeb(val, regs+offs)) 37#define apc_writeb(val, offs) (sbus_writeb(val, regs+offs))
diff --git a/arch/sparc/kernel/head.S b/arch/sparc/kernel/head.S
index 2d325fd84579..2fe2c117e772 100644
--- a/arch/sparc/kernel/head.S
+++ b/arch/sparc/kernel/head.S
@@ -465,6 +465,7 @@ gokernel:
465 mov %o7, %g4 ! Save %o7 465 mov %o7, %g4 ! Save %o7
466 466
467 /* Jump to it, and pray... */ 467 /* Jump to it, and pray... */
468 __INIT
468current_pc: 469current_pc:
469 call 1f 470 call 1f
470 nop 471 nop
diff --git a/arch/sparc/oprofile/init.c b/arch/sparc/oprofile/init.c
index 9ab815b95b5a..17bb6035069b 100644
--- a/arch/sparc/oprofile/init.c
+++ b/arch/sparc/oprofile/init.c
@@ -12,7 +12,7 @@
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <linux/init.h> 13#include <linux/init.h>
14 14
15int __init oprofile_arch_init(struct oprofile_operations * ops) 15int __init oprofile_arch_init(struct oprofile_operations *ops)
16{ 16{
17 return -ENODEV; 17 return -ENODEV;
18} 18}
diff --git a/arch/sparc64/kernel/trampoline.S b/arch/sparc64/kernel/trampoline.S
index 704a3afcfd06..83abd5ae88a4 100644
--- a/arch/sparc64/kernel/trampoline.S
+++ b/arch/sparc64/kernel/trampoline.S
@@ -328,6 +328,12 @@ after_lock_tlb:
328 328
329 wrpr %g0, 0, %wstate 329 wrpr %g0, 0, %wstate
330 330
331 sethi %hi(prom_entry_lock), %g2
3321: ldstub [%g2 + %lo(prom_entry_lock)], %g1
333 membar #StoreLoad | #StoreStore
334 brnz,pn %g1, 1b
335 nop
336
331 /* As a hack, put &init_thread_union into %g6. 337 /* As a hack, put &init_thread_union into %g6.
332 * prom_world() loads from here to restore the %asi 338 * prom_world() loads from here to restore the %asi
333 * register. 339 * register.
@@ -337,7 +343,7 @@ after_lock_tlb:
337 343
338 sethi %hi(is_sun4v), %o0 344 sethi %hi(is_sun4v), %o0
339 lduw [%o0 + %lo(is_sun4v)], %o0 345 lduw [%o0 + %lo(is_sun4v)], %o0
340 brz,pt %o0, 1f 346 brz,pt %o0, 2f
341 nop 347 nop
342 348
343 TRAP_LOAD_TRAP_BLOCK(%g2, %g3) 349 TRAP_LOAD_TRAP_BLOCK(%g2, %g3)
@@ -369,10 +375,10 @@ after_lock_tlb:
369 call %o1 375 call %o1
370 add %sp, (2047 + 128), %o0 376 add %sp, (2047 + 128), %o0
371 377
372 ba,pt %xcc, 2f 378 ba,pt %xcc, 3f
373 nop 379 nop
374 380
3751: sethi %hi(sparc64_ttable_tl0), %o0 3812: sethi %hi(sparc64_ttable_tl0), %o0
376 set prom_set_trap_table_name, %g2 382 set prom_set_trap_table_name, %g2
377 stx %g2, [%sp + 2047 + 128 + 0x00] 383 stx %g2, [%sp + 2047 + 128 + 0x00]
378 mov 1, %g2 384 mov 1, %g2
@@ -386,7 +392,11 @@ after_lock_tlb:
386 call %o1 392 call %o1
387 add %sp, (2047 + 128), %o0 393 add %sp, (2047 + 128), %o0
388 394
3892: ldx [%l0], %g6 3953: sethi %hi(prom_entry_lock), %g2
396 stb %g0, [%g2 + %lo(prom_entry_lock)]
397 membar #StoreStore | #StoreLoad
398
399 ldx [%l0], %g6
390 ldx [%g6 + TI_TASK], %g4 400 ldx [%g6 + TI_TASK], %g4
391 401
392 mov 1, %g5 402 mov 1, %g5
diff --git a/arch/sparc64/oprofile/init.c b/arch/sparc64/oprofile/init.c
index 9ab815b95b5a..17bb6035069b 100644
--- a/arch/sparc64/oprofile/init.c
+++ b/arch/sparc64/oprofile/init.c
@@ -12,7 +12,7 @@
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <linux/init.h> 13#include <linux/init.h>
14 14
15int __init oprofile_arch_init(struct oprofile_operations * ops) 15int __init oprofile_arch_init(struct oprofile_operations *ops)
16{ 16{
17 return -ENODEV; 17 return -ENODEV;
18} 18}
diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common
new file mode 100644
index 000000000000..0d207e73a758
--- /dev/null
+++ b/arch/um/Kconfig.common
@@ -0,0 +1,77 @@
1config DEFCONFIG_LIST
2 string
3 option defconfig_list
4 default "arch/$ARCH/defconfig"
5
6# UML uses the generic IRQ subsystem
7config GENERIC_HARDIRQS
8 bool
9 default y
10
11config UML
12 bool
13 default y
14
15config MMU
16 bool
17 default y
18
19config NO_IOMEM
20 def_bool y
21
22mainmenu "Linux/Usermode Kernel Configuration"
23
24config ISA
25 bool
26
27config SBUS
28 bool
29
30config PCI
31 bool
32
33config PCMCIA
34 bool
35
36# Yet to do!
37config TRACE_IRQFLAGS_SUPPORT
38 bool
39 default n
40
41config LOCKDEP_SUPPORT
42 bool
43 default y
44
45config STACKTRACE_SUPPORT
46 bool
47 default n
48
49config GENERIC_CALIBRATE_DELAY
50 bool
51 default y
52
53config GENERIC_BUG
54 bool
55 default y
56 depends on BUG
57
58config GENERIC_TIME
59 bool
60 default y
61
62config GENERIC_CLOCKEVENTS
63 bool
64 default y
65
66# Used in kernel/irq/manage.c and include/linux/irq.h
67config IRQ_RELEASE_METHOD
68 bool
69 default y
70
71config HZ
72 int
73 default 100
74
75config SUBARCH
76 string
77 option env="SUBARCH"
diff --git a/arch/um/Kconfig.rest b/arch/um/Kconfig.rest
new file mode 100644
index 000000000000..7b5cea75a6c4
--- /dev/null
+++ b/arch/um/Kconfig.rest
@@ -0,0 +1,42 @@
1source "init/Kconfig"
2
3source "kernel/Kconfig.freezer"
4
5source "drivers/block/Kconfig"
6
7source "arch/um/Kconfig.char"
8
9source "drivers/base/Kconfig"
10
11source "net/Kconfig"
12
13source "arch/um/Kconfig.net"
14
15source "drivers/net/Kconfig"
16
17source "drivers/connector/Kconfig"
18
19source "fs/Kconfig"
20
21source "security/Kconfig"
22
23source "crypto/Kconfig"
24
25source "lib/Kconfig"
26
27source "drivers/scsi/Kconfig"
28
29source "drivers/md/Kconfig"
30
31if BROKEN
32 source "drivers/mtd/Kconfig"
33endif
34
35source "drivers/leds/Kconfig"
36
37#This is just to shut up some Kconfig warnings, so no prompt.
38config INPUT
39 bool
40 default n
41
42source "arch/um/Kconfig.debug"
diff --git a/arch/um/Kconfig b/arch/um/Kconfig.um
index 393bccfe1785..ec2b8da1aba4 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig.um
@@ -1,79 +1,3 @@
1config DEFCONFIG_LIST
2 string
3 option defconfig_list
4 default "arch/$ARCH/defconfig"
5
6# UML uses the generic IRQ subsystem
7config GENERIC_HARDIRQS
8 bool
9 default y
10
11config UML
12 bool
13 default y
14
15config MMU
16 bool
17 default y
18
19config NO_IOMEM
20 def_bool y
21
22mainmenu "Linux/Usermode Kernel Configuration"
23
24config ISA
25 bool
26
27config SBUS
28 bool
29
30config PCI
31 bool
32
33config PCMCIA
34 bool
35
36# Yet to do!
37config TRACE_IRQFLAGS_SUPPORT
38 bool
39 default n
40
41config LOCKDEP_SUPPORT
42 bool
43 default y
44
45config STACKTRACE_SUPPORT
46 bool
47 default n
48
49config GENERIC_CALIBRATE_DELAY
50 bool
51 default y
52
53config GENERIC_BUG
54 bool
55 default y
56 depends on BUG
57
58config GENERIC_TIME
59 bool
60 default y
61
62config GENERIC_CLOCKEVENTS
63 bool
64 default y
65
66# Used in kernel/irq/manage.c and include/linux/irq.h
67config IRQ_RELEASE_METHOD
68 bool
69 default y
70
71config HZ
72 int
73 default 100
74
75menu "UML-specific options"
76
77config STATIC_LINK 1config STATIC_LINK
78 bool "Force a static link" 2 bool "Force a static link"
79 default n 3 default n
@@ -85,7 +9,6 @@ config STATIC_LINK
85 Additionally, this option enables using higher memory spaces (up to 9 Additionally, this option enables using higher memory spaces (up to
86 2.75G) for UML. 10 2.75G) for UML.
87 11
88source "arch/um/Kconfig.arch"
89source "mm/Kconfig" 12source "mm/Kconfig"
90source "kernel/time/Kconfig" 13source "kernel/time/Kconfig"
91 14
@@ -224,48 +147,3 @@ config KERNEL_STACK_ORDER
224 This option determines the size of UML kernel stacks. They will 147 This option determines the size of UML kernel stacks. They will
225 be 1 << order pages. The default is OK unless you're running Valgrind 148 be 1 << order pages. The default is OK unless you're running Valgrind
226 on UML, in which case, set this to 3. 149 on UML, in which case, set this to 3.
227
228endmenu
229
230source "init/Kconfig"
231
232source "kernel/Kconfig.freezer"
233
234source "drivers/block/Kconfig"
235
236source "arch/um/Kconfig.char"
237
238source "drivers/base/Kconfig"
239
240source "net/Kconfig"
241
242source "arch/um/Kconfig.net"
243
244source "drivers/net/Kconfig"
245
246source "drivers/connector/Kconfig"
247
248source "fs/Kconfig"
249
250source "security/Kconfig"
251
252source "crypto/Kconfig"
253
254source "lib/Kconfig"
255
256source "drivers/scsi/Kconfig"
257
258source "drivers/md/Kconfig"
259
260if BROKEN
261 source "drivers/mtd/Kconfig"
262endif
263
264source "drivers/leds/Kconfig"
265
266#This is just to shut up some Kconfig warnings, so no prompt.
267config INPUT
268 bool
269 default n
270
271source "arch/um/Kconfig.debug"
diff --git a/arch/um/Kconfig.i386 b/arch/um/Kconfig.x86
index 1f57c113df6d..5ee328099c63 100644
--- a/arch/um/Kconfig.i386
+++ b/arch/um/Kconfig.x86
@@ -1,3 +1,7 @@
1source "arch/um/Kconfig.common"
2
3menu "UML-specific options"
4
1menu "Host processor type and features" 5menu "Host processor type and features"
2 6
3source "arch/x86/Kconfig.cpu" 7source "arch/x86/Kconfig.cpu"
@@ -5,24 +9,25 @@ source "arch/x86/Kconfig.cpu"
5endmenu 9endmenu
6 10
7config UML_X86 11config UML_X86
12 def_bool y
13
14config 64BIT
8 bool 15 bool
9 default y 16 default SUBARCH = "x86_64"
10 17
11config X86_32 18config X86_32
12 bool 19 def_bool !64BIT
13 default y 20 select HAVE_AOUT
14 select HAVE_AOUT
15 21
16config RWSEM_XCHGADD_ALGORITHM 22config RWSEM_XCHGADD_ALGORITHM
17 def_bool y 23 def_bool X86_XADD
18 24
19config 64BIT 25config RWSEM_GENERIC_SPINLOCK
20 bool 26 def_bool !X86_XADD
21 default n
22 27
23config 3_LEVEL_PGTABLES 28config 3_LEVEL_PGTABLES
24 bool "Three-level pagetables (EXPERIMENTAL)" 29 bool "Three-level pagetables (EXPERIMENTAL)" if !64BIT
25 default n 30 default 64BIT
26 depends on EXPERIMENTAL 31 depends on EXPERIMENTAL
27 help 32 help
28 Three-level pagetables will let UML have more than 4G of physical 33 Three-level pagetables will let UML have more than 4G of physical
@@ -33,13 +38,19 @@ config 3_LEVEL_PGTABLES
33 N (on x86-64 it's automatically enabled, instead, as it's safe there). 38 N (on x86-64 it's automatically enabled, instead, as it's safe there).
34 39
35config ARCH_HAS_SC_SIGNALS 40config ARCH_HAS_SC_SIGNALS
36 bool 41 def_bool !64BIT
37 default y
38 42
39config ARCH_REUSE_HOST_VSYSCALL_AREA 43config ARCH_REUSE_HOST_VSYSCALL_AREA
40 bool 44 def_bool !64BIT
41 default y 45
46config SMP_BROKEN
47 def_bool 64BIT
42 48
43config GENERIC_HWEIGHT 49config GENERIC_HWEIGHT
44 bool 50 def_bool y
45 default y 51
52source "arch/um/Kconfig.um"
53
54endmenu
55
56source "arch/um/Kconfig.rest"
diff --git a/arch/um/Kconfig.x86_64 b/arch/um/Kconfig.x86_64
deleted file mode 100644
index 40b3407cfe16..000000000000
--- a/arch/um/Kconfig.x86_64
+++ /dev/null
@@ -1,39 +0,0 @@
1
2menu "Host processor type and features"
3
4source "arch/x86/Kconfig.cpu"
5
6endmenu
7
8config UML_X86
9 bool
10 default y
11
12config 64BIT
13 bool
14 default y
15
16#XXX: this is so in the underlying arch, but it's wrong!!!
17config RWSEM_GENERIC_SPINLOCK
18 bool
19 default y
20
21config 3_LEVEL_PGTABLES
22 bool
23 default y
24
25config ARCH_HAS_SC_SIGNALS
26 bool
27 default n
28
29config ARCH_REUSE_HOST_VSYSCALL_AREA
30 bool
31 default n
32
33config SMP_BROKEN
34 bool
35 default y
36
37config GENERIC_HWEIGHT
38 bool
39 default y
diff --git a/arch/um/Makefile b/arch/um/Makefile
index ca40397017b9..d944c343acdb 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -18,28 +18,16 @@ core-y += $(ARCH_DIR)/kernel/ \
18 $(ARCH_DIR)/drivers/ \ 18 $(ARCH_DIR)/drivers/ \
19 $(ARCH_DIR)/os-$(OS)/ 19 $(ARCH_DIR)/os-$(OS)/
20 20
21# Have to precede the include because the included Makefiles reference them. 21MODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/include/shared/skas
22SYMLINK_HEADERS := archparam.h system.h sigcontext.h processor.h ptrace.h \
23 module.h vm-flags.h elf.h host_ldt.h
24SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header))
25
26# XXX: The "os" symlink is only used by arch/um/include/os.h, which includes
27# ../os/include/file.h
28#
29# These are cleaned up during mrproper. Please DO NOT fix it again, this is
30# the Correct Thing(tm) to do!
31ARCH_SYMLINKS = include/asm-um/arch $(ARCH_DIR)/include/sysdep $(ARCH_DIR)/os \
32 $(SYMLINK_HEADERS) $(ARCH_DIR)/include/uml-config.h
33
34MODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/include/skas
35 22
36include $(srctree)/$(ARCH_DIR)/Makefile-skas 23include $(srctree)/$(ARCH_DIR)/Makefile-skas
37 24
38ARCH_INCLUDE := -I$(ARCH_DIR)/include 25ARCH_INCLUDE := -I$(srctree)/$(ARCH_DIR)/include/shared
26ARCH_INCLUDE += -I$(srctree)/$(ARCH_DIR)/sys-$(SUBARCH)/shared
39ifneq ($(KBUILD_SRC),) 27ifneq ($(KBUILD_SRC),)
40ARCH_INCLUDE += -I$(srctree)/$(ARCH_DIR)/include 28ARCH_INCLUDE += -I$(ARCH_DIR)/include/shared # for two generated files
41endif 29endif
42SYS_DIR := $(ARCH_DIR)/include/sysdep-$(SUBARCH) 30KBUILD_CPPFLAGS += -I$(srctree)/$(ARCH_DIR)/sys-$(SUBARCH)
43 31
44# -Dvmap=kernel_vmap prevents anything from referencing the libpcap.o symbol so 32# -Dvmap=kernel_vmap prevents anything from referencing the libpcap.o symbol so
45# named - it's a common symbol in libpcap, so we get a binary which crashes. 33# named - it's a common symbol in libpcap, so we get a binary which crashes.
@@ -65,6 +53,8 @@ include $(srctree)/$(ARCH_DIR)/Makefile-$(SUBARCH)
65#This will adjust *FLAGS accordingly to the platform. 53#This will adjust *FLAGS accordingly to the platform.
66include $(srctree)/$(ARCH_DIR)/Makefile-os-$(OS) 54include $(srctree)/$(ARCH_DIR)/Makefile-os-$(OS)
67 55
56KBUILD_CPPFLAGS += -I$(srctree)/arch/$(HEADER_ARCH)/include
57
68# -Derrno=kernel_errno - This turns all kernel references to errno into 58# -Derrno=kernel_errno - This turns all kernel references to errno into
69# kernel_errno to separate them from the libc errno. This allows -fno-common 59# kernel_errno to separate them from the libc errno. This allows -fno-common
70# in KBUILD_CFLAGS. Otherwise, it would cause ld to complain about the two different 60# in KBUILD_CFLAGS. Otherwise, it would cause ld to complain about the two different
@@ -93,14 +83,10 @@ define archhelp
93 echo ' find in the kernel root.' 83 echo ' find in the kernel root.'
94endef 84endef
95 85
96ifneq ($(KBUILD_SRC),) 86KBUILD_KCONFIG := arch/um/Kconfig.$(HEADER_ARCH)
97$(shell mkdir -p $(ARCH_DIR) && ln -fsn $(srctree)/$(ARCH_DIR)/Kconfig.$(SUBARCH) $(ARCH_DIR)/Kconfig.arch)
98else
99$(shell cd $(ARCH_DIR) && ln -sf Kconfig.$(SUBARCH) Kconfig.arch)
100endif
101 87
102archprepare: $(ARCH_SYMLINKS) $(ARCH_DIR)/include/user_constants.h 88archprepare: $(ARCH_DIR)/include/shared/user_constants.h
103prepare: $(ARCH_DIR)/include/kern_constants.h 89prepare: $(ARCH_DIR)/include/shared/kern_constants.h
104 90
105LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static 91LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
106LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib 92LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib
@@ -132,62 +118,19 @@ endef
132 118
133# When cleaning we don't include .config, so we don't include 119# When cleaning we don't include .config, so we don't include
134# TT or skas makefiles and don't clean skas_ptregs.h. 120# TT or skas makefiles and don't clean skas_ptregs.h.
135CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/include/uml-config.h \ 121CLEAN_FILES += linux x.i gmon.out \
136 $(ARCH_DIR)/include/user_constants.h \ 122 $(ARCH_DIR)/include/shared/user_constants.h \
137 $(ARCH_DIR)/include/kern_constants.h $(ARCH_DIR)/Kconfig.arch 123 $(ARCH_DIR)/include/shared/kern_constants.h
138
139MRPROPER_FILES += $(ARCH_SYMLINKS)
140 124
141archclean: 125archclean:
142 @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ 126 @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \
143 -o -name '*.gcov' \) -type f -print | xargs rm -f 127 -o -name '*.gcov' \) -type f -print | xargs rm -f
144 128
145$(SYMLINK_HEADERS): 129$(objtree)/$(ARCH_DIR)/include/shared:
146 @echo ' SYMLINK $@'
147ifneq ($(KBUILD_SRC),)
148 $(Q)mkdir -p $(objtree)/include/asm-um
149 $(Q)ln -fsn $(srctree)/include/asm-um/$(basename $(notdir $@))-$(SUBARCH)$(suffix $@) $@
150else
151 $(Q)cd $(srctree)/$(dir $@) ; \
152 ln -sf $(basename $(notdir $@))-$(SUBARCH)$(suffix $@) $(notdir $@)
153endif
154
155include/asm-um/arch:
156 @echo ' SYMLINK $@'
157ifneq ($(KBUILD_SRC),)
158 $(Q)mkdir -p $(objtree)/include/asm-um
159 $(Q)ln -fsn $(srctree)/include/asm-$(HEADER_ARCH) include/asm-um/arch
160else
161 $(Q)cd $(srctree)/include/asm-um && ln -fsn ../asm-$(HEADER_ARCH) arch
162endif
163
164$(objtree)/$(ARCH_DIR)/include:
165 @echo ' MKDIR $@' 130 @echo ' MKDIR $@'
166 $(Q)mkdir -p $@ 131 $(Q)mkdir -p $@
167 132
168$(ARCH_DIR)/include/sysdep: $(objtree)/$(ARCH_DIR)/include
169 @echo ' SYMLINK $@'
170ifneq ($(KBUILD_SRC),)
171 $(Q)ln -fsn $(srctree)/$(ARCH_DIR)/include/sysdep-$(SUBARCH) $(ARCH_DIR)/include/sysdep
172else
173 $(Q)cd $(ARCH_DIR)/include && ln -fsn sysdep-$(SUBARCH) sysdep
174endif
175
176$(ARCH_DIR)/os:
177 @echo ' SYMLINK $@'
178ifneq ($(KBUILD_SRC),)
179 $(Q)ln -fsn $(srctree)/$(ARCH_DIR)/os-$(OS) $(ARCH_DIR)/os
180else
181 $(Q)cd $(ARCH_DIR) && ln -fsn os-$(OS) os
182endif
183
184# Generated files 133# Generated files
185define filechk_umlconfig
186 sed 's/ CONFIG/ UML_CONFIG/'
187endef
188
189$(ARCH_DIR)/include/uml-config.h : include/linux/autoconf.h
190 $(call filechk,umlconfig)
191 134
192$(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s: FORCE 135$(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s: FORCE
193 $(Q)$(MAKE) $(build)=$(ARCH_DIR)/sys-$(SUBARCH) $@ 136 $(Q)$(MAKE) $(build)=$(ARCH_DIR)/sys-$(SUBARCH) $@
@@ -205,11 +148,11 @@ define filechk_gen-asm-offsets
205 echo ""; ) 148 echo ""; )
206endef 149endef
207 150
208$(ARCH_DIR)/include/user_constants.h: $(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s 151$(ARCH_DIR)/include/shared/user_constants.h: $(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s
209 $(call filechk,gen-asm-offsets) 152 $(call filechk,gen-asm-offsets)
210 153
211$(ARCH_DIR)/include/kern_constants.h: $(objtree)/$(ARCH_DIR)/include 154$(ARCH_DIR)/include/shared/kern_constants.h: $(objtree)/$(ARCH_DIR)/include/shared
212 @echo ' SYMLINK $@' 155 @echo ' SYMLINK $@'
213 $(Q)ln -sf ../../../include/asm-um/asm-offsets.h $@ 156 $(Q)ln -sf ../../../../include/asm/asm-offsets.h $@
214 157
215export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS HEADER_ARCH 158export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS HEADER_ARCH DEV_NULL_PATH
diff --git a/arch/um/Makefile-os-Linux b/arch/um/Makefile-os-Linux
index 52859487c95d..2c8a598ec14b 100644
--- a/arch/um/Makefile-os-Linux
+++ b/arch/um/Makefile-os-Linux
@@ -6,3 +6,4 @@
6# To get a definition of F_SETSIG 6# To get a definition of F_SETSIG
7USER_CFLAGS += -D_GNU_SOURCE -D_LARGEFILE64_SOURCE 7USER_CFLAGS += -D_GNU_SOURCE -D_LARGEFILE64_SOURCE
8KBUILD_CFLAGS += -D_LARGEFILE64_SOURCE 8KBUILD_CFLAGS += -D_LARGEFILE64_SOURCE
9DEV_NULL_PATH = \"/dev/null\"
diff --git a/arch/um/drivers/Makefile b/arch/um/drivers/Makefile
index d283e7b022a0..1d9b6ae967b0 100644
--- a/arch/um/drivers/Makefile
+++ b/arch/um/drivers/Makefile
@@ -62,5 +62,6 @@ obj-$(CONFIG_UML_RANDOM) += random.o
62 62
63# pcap_user.o must be added explicitly. 63# pcap_user.o must be added explicitly.
64USER_OBJS := fd.o null.o pty.o tty.o xterm.o slip_common.o pcap_user.o vde_user.o 64USER_OBJS := fd.o null.o pty.o tty.o xterm.o slip_common.o pcap_user.o vde_user.o
65CFLAGS_null.o = -DDEV_NULL=$(DEV_NULL_PATH)
65 66
66include arch/um/scripts/Makefile.rules 67include arch/um/scripts/Makefile.rules
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index b58fb8941d8d..0a868118cf06 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -98,9 +98,9 @@ static inline void ubd_set_bit(__u64 bit, unsigned char *data)
98 98
99static DEFINE_MUTEX(ubd_lock); 99static DEFINE_MUTEX(ubd_lock);
100 100
101static int ubd_open(struct inode * inode, struct file * filp); 101static int ubd_open(struct block_device *bdev, fmode_t mode);
102static int ubd_release(struct inode * inode, struct file * file); 102static int ubd_release(struct gendisk *disk, fmode_t mode);
103static int ubd_ioctl(struct inode * inode, struct file * file, 103static int ubd_ioctl(struct block_device *bdev, fmode_t mode,
104 unsigned int cmd, unsigned long arg); 104 unsigned int cmd, unsigned long arg);
105static int ubd_getgeo(struct block_device *bdev, struct hd_geometry *geo); 105static int ubd_getgeo(struct block_device *bdev, struct hd_geometry *geo);
106 106
@@ -1112,9 +1112,9 @@ static int __init ubd_driver_init(void){
1112 1112
1113device_initcall(ubd_driver_init); 1113device_initcall(ubd_driver_init);
1114 1114
1115static int ubd_open(struct inode *inode, struct file *filp) 1115static int ubd_open(struct block_device *bdev, fmode_t mode)
1116{ 1116{
1117 struct gendisk *disk = inode->i_bdev->bd_disk; 1117 struct gendisk *disk = bdev->bd_disk;
1118 struct ubd *ubd_dev = disk->private_data; 1118 struct ubd *ubd_dev = disk->private_data;
1119 int err = 0; 1119 int err = 0;
1120 1120
@@ -1131,7 +1131,7 @@ static int ubd_open(struct inode *inode, struct file *filp)
1131 1131
1132 /* This should no more be needed. And it didn't work anyway to exclude 1132 /* This should no more be needed. And it didn't work anyway to exclude
1133 * read-write remounting of filesystems.*/ 1133 * read-write remounting of filesystems.*/
1134 /*if((filp->f_mode & FMODE_WRITE) && !ubd_dev->openflags.w){ 1134 /*if((mode & FMODE_WRITE) && !ubd_dev->openflags.w){
1135 if(--ubd_dev->count == 0) ubd_close_dev(ubd_dev); 1135 if(--ubd_dev->count == 0) ubd_close_dev(ubd_dev);
1136 err = -EROFS; 1136 err = -EROFS;
1137 }*/ 1137 }*/
@@ -1139,9 +1139,8 @@ static int ubd_open(struct inode *inode, struct file *filp)
1139 return err; 1139 return err;
1140} 1140}
1141 1141
1142static int ubd_release(struct inode * inode, struct file * file) 1142static int ubd_release(struct gendisk *disk, fmode_t mode)
1143{ 1143{
1144 struct gendisk *disk = inode->i_bdev->bd_disk;
1145 struct ubd *ubd_dev = disk->private_data; 1144 struct ubd *ubd_dev = disk->private_data;
1146 1145
1147 if(--ubd_dev->count == 0) 1146 if(--ubd_dev->count == 0)
@@ -1306,10 +1305,10 @@ static int ubd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
1306 return 0; 1305 return 0;
1307} 1306}
1308 1307
1309static int ubd_ioctl(struct inode * inode, struct file * file, 1308static int ubd_ioctl(struct block_device *bdev, fmode_t mode,
1310 unsigned int cmd, unsigned long arg) 1309 unsigned int cmd, unsigned long arg)
1311{ 1310{
1312 struct ubd *ubd_dev = inode->i_bdev->bd_disk->private_data; 1311 struct ubd *ubd_dev = bdev->bd_disk->private_data;
1313 struct hd_driveid ubd_id = { 1312 struct hd_driveid ubd_id = {
1314 .cyls = 0, 1313 .cyls = 0,
1315 .heads = 128, 1314 .heads = 128,
diff --git a/arch/um/include/asm/a.out-core.h b/arch/um/include/asm/a.out-core.h
new file mode 100644
index 000000000000..995643b18309
--- /dev/null
+++ b/arch/um/include/asm/a.out-core.h
@@ -0,0 +1,27 @@
1/* a.out coredump register dumper
2 *
3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11
12#ifndef __UM_A_OUT_CORE_H
13#define __UM_A_OUT_CORE_H
14
15#ifdef __KERNEL__
16
17#include <linux/user.h>
18
19/*
20 * fill in the user structure for an a.out core dump
21 */
22static inline void aout_dump_thread(struct pt_regs *regs, struct user *u)
23{
24}
25
26#endif /* __KERNEL__ */
27#endif /* __UM_A_OUT_CORE_H */
diff --git a/arch/um/include/asm/apic.h b/arch/um/include/asm/apic.h
new file mode 100644
index 000000000000..876dee84ab11
--- /dev/null
+++ b/arch/um/include/asm/apic.h
@@ -0,0 +1,4 @@
1#ifndef __UM_APIC_H
2#define __UM_APIC_H
3
4#endif
diff --git a/arch/um/include/asm/auxvec.h b/arch/um/include/asm/auxvec.h
new file mode 100644
index 000000000000..1e5e1c2fc9b1
--- /dev/null
+++ b/arch/um/include/asm/auxvec.h
@@ -0,0 +1,4 @@
1#ifndef __UM_AUXVEC_H
2#define __UM_AUXVEC_H
3
4#endif
diff --git a/arch/um/include/asm/bugs.h b/arch/um/include/asm/bugs.h
new file mode 100644
index 000000000000..6a72e240d5fc
--- /dev/null
+++ b/arch/um/include/asm/bugs.h
@@ -0,0 +1,6 @@
1#ifndef __UM_BUGS_H
2#define __UM_BUGS_H
3
4void check_bugs(void);
5
6#endif
diff --git a/arch/um/include/asm/cache.h b/arch/um/include/asm/cache.h
new file mode 100644
index 000000000000..19e1bdd67416
--- /dev/null
+++ b/arch/um/include/asm/cache.h
@@ -0,0 +1,17 @@
1#ifndef __UM_CACHE_H
2#define __UM_CACHE_H
3
4
5#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
6# define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
7#elif defined(CONFIG_UML_X86) /* 64-bit */
8# define L1_CACHE_SHIFT 6 /* Should be 7 on Intel */
9#else
10/* XXX: this was taken from x86, now it's completely random. Luckily only
11 * affects SMP padding. */
12# define L1_CACHE_SHIFT 5
13#endif
14
15#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
16
17#endif
diff --git a/arch/um/include/asm/checksum.h b/arch/um/include/asm/checksum.h
new file mode 100644
index 000000000000..5b501361e361
--- /dev/null
+++ b/arch/um/include/asm/checksum.h
@@ -0,0 +1,6 @@
1#ifndef __UM_CHECKSUM_H
2#define __UM_CHECKSUM_H
3
4#include "sysdep/checksum.h"
5
6#endif
diff --git a/arch/um/include/asm/common.lds.S b/arch/um/include/asm/common.lds.S
new file mode 100644
index 000000000000..cb0248616d49
--- /dev/null
+++ b/arch/um/include/asm/common.lds.S
@@ -0,0 +1,130 @@
1#include <asm-generic/vmlinux.lds.h>
2
3 .fini : { *(.fini) } =0x9090
4 _etext = .;
5 PROVIDE (etext = .);
6
7 . = ALIGN(4096);
8 _sdata = .;
9 PROVIDE (sdata = .);
10
11 RODATA
12
13 .unprotected : { *(.unprotected) }
14 . = ALIGN(4096);
15 PROVIDE (_unprotected_end = .);
16
17 . = ALIGN(4096);
18 .note : { *(.note.*) }
19 __ex_table : {
20 __start___ex_table = .;
21 *(__ex_table)
22 __stop___ex_table = .;
23 }
24
25 BUG_TABLE
26
27 .uml.setup.init : {
28 __uml_setup_start = .;
29 *(.uml.setup.init)
30 __uml_setup_end = .;
31 }
32
33 .uml.help.init : {
34 __uml_help_start = .;
35 *(.uml.help.init)
36 __uml_help_end = .;
37 }
38
39 .uml.postsetup.init : {
40 __uml_postsetup_start = .;
41 *(.uml.postsetup.init)
42 __uml_postsetup_end = .;
43 }
44
45 .init.setup : {
46 __setup_start = .;
47 *(.init.setup)
48 __setup_end = .;
49 }
50
51 . = ALIGN(32);
52 .data.percpu : {
53 __per_cpu_start = . ;
54 *(.data.percpu)
55 __per_cpu_end = . ;
56 }
57
58 .initcall.init : {
59 __initcall_start = .;
60 INITCALLS
61 __initcall_end = .;
62 }
63
64 .con_initcall.init : {
65 __con_initcall_start = .;
66 *(.con_initcall.init)
67 __con_initcall_end = .;
68 }
69
70 .uml.initcall.init : {
71 __uml_initcall_start = .;
72 *(.uml.initcall.init)
73 __uml_initcall_end = .;
74 }
75 __init_end = .;
76
77 SECURITY_INIT
78
79 .exitcall : {
80 __exitcall_begin = .;
81 *(.exitcall.exit)
82 __exitcall_end = .;
83 }
84
85 .uml.exitcall : {
86 __uml_exitcall_begin = .;
87 *(.uml.exitcall.exit)
88 __uml_exitcall_end = .;
89 }
90
91 . = ALIGN(4);
92 .altinstructions : {
93 __alt_instructions = .;
94 *(.altinstructions)
95 __alt_instructions_end = .;
96 }
97 .altinstr_replacement : { *(.altinstr_replacement) }
98 /* .exit.text is discard at runtime, not link time, to deal with references
99 from .altinstructions and .eh_frame */
100 .exit.text : { *(.exit.text) }
101 .exit.data : { *(.exit.data) }
102
103 .preinit_array : {
104 __preinit_array_start = .;
105 *(.preinit_array)
106 __preinit_array_end = .;
107 }
108 .init_array : {
109 __init_array_start = .;
110 *(.init_array)
111 __init_array_end = .;
112 }
113 .fini_array : {
114 __fini_array_start = .;
115 *(.fini_array)
116 __fini_array_end = .;
117 }
118
119 . = ALIGN(4096);
120 .init.ramfs : {
121 __initramfs_start = .;
122 *(.init.ramfs)
123 __initramfs_end = .;
124 }
125
126 /* Sections to be discarded */
127 /DISCARD/ : {
128 *(.exitcall.exit)
129 }
130
diff --git a/arch/um/include/asm/cputime.h b/arch/um/include/asm/cputime.h
new file mode 100644
index 000000000000..c84acbadfa2f
--- /dev/null
+++ b/arch/um/include/asm/cputime.h
@@ -0,0 +1,6 @@
1#ifndef __UM_CPUTIME_H
2#define __UM_CPUTIME_H
3
4#include <asm-generic/cputime.h>
5
6#endif /* __UM_CPUTIME_H */
diff --git a/arch/um/include/asm/current.h b/arch/um/include/asm/current.h
new file mode 100644
index 000000000000..c2191d9aa03d
--- /dev/null
+++ b/arch/um/include/asm/current.h
@@ -0,0 +1,13 @@
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_CURRENT_H
7#define __UM_CURRENT_H
8
9#include "linux/thread_info.h"
10
11#define current (current_thread_info()->task)
12
13#endif
diff --git a/arch/um/include/asm/delay.h b/arch/um/include/asm/delay.h
new file mode 100644
index 000000000000..c71e32b6741e
--- /dev/null
+++ b/arch/um/include/asm/delay.h
@@ -0,0 +1,20 @@
1#ifndef __UM_DELAY_H
2#define __UM_DELAY_H
3
4#define MILLION 1000000
5
6/* Undefined on purpose */
7extern void __bad_udelay(void);
8
9extern void __udelay(unsigned long usecs);
10extern void __delay(unsigned long loops);
11
12#define udelay(n) ((__builtin_constant_p(n) && (n) > 20000) ? \
13 __bad_udelay() : __udelay(n))
14
15/* It appears that ndelay is not used at all for UML, and has never been
16 * implemented. */
17extern void __unimplemented_ndelay(void);
18#define ndelay(n) __unimplemented_ndelay()
19
20#endif
diff --git a/arch/um/include/asm/desc.h b/arch/um/include/asm/desc.h
new file mode 100644
index 000000000000..4ec34a51b62c
--- /dev/null
+++ b/arch/um/include/asm/desc.h
@@ -0,0 +1,16 @@
1#ifndef __UM_DESC_H
2#define __UM_DESC_H
3
4/* Taken from asm-i386/desc.h, it's the only thing we need. The rest wouldn't
5 * compile, and has never been used. */
6#define LDT_empty(info) (\
7 (info)->base_addr == 0 && \
8 (info)->limit == 0 && \
9 (info)->contents == 0 && \
10 (info)->read_exec_only == 1 && \
11 (info)->seg_32bit == 0 && \
12 (info)->limit_in_pages == 0 && \
13 (info)->seg_not_present == 1 && \
14 (info)->useable == 0 )
15
16#endif
diff --git a/arch/um/include/asm/device.h b/arch/um/include/asm/device.h
new file mode 100644
index 000000000000..d8f9872b0e2d
--- /dev/null
+++ b/arch/um/include/asm/device.h
@@ -0,0 +1,7 @@
1/*
2 * Arch specific extensions to struct device
3 *
4 * This file is released under the GPLv2
5 */
6#include <asm-generic/device.h>
7
diff --git a/arch/um/include/asm/dma-mapping.h b/arch/um/include/asm/dma-mapping.h
new file mode 100644
index 000000000000..90fc708b320e
--- /dev/null
+++ b/arch/um/include/asm/dma-mapping.h
@@ -0,0 +1,128 @@
1#ifndef _ASM_DMA_MAPPING_H
2#define _ASM_DMA_MAPPING_H
3
4#include <asm/scatterlist.h>
5
6static inline int
7dma_supported(struct device *dev, u64 mask)
8{
9 BUG();
10 return(0);
11}
12
13static inline int
14dma_set_mask(struct device *dev, u64 dma_mask)
15{
16 BUG();
17 return(0);
18}
19
20static inline void *
21dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
22 gfp_t flag)
23{
24 BUG();
25 return((void *) 0);
26}
27
28static inline void
29dma_free_coherent(struct device *dev, size_t size, void *cpu_addr,
30 dma_addr_t dma_handle)
31{
32 BUG();
33}
34
35static inline dma_addr_t
36dma_map_single(struct device *dev, void *cpu_addr, size_t size,
37 enum dma_data_direction direction)
38{
39 BUG();
40 return(0);
41}
42
43static inline void
44dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
45 enum dma_data_direction direction)
46{
47 BUG();
48}
49
50static inline dma_addr_t
51dma_map_page(struct device *dev, struct page *page,
52 unsigned long offset, size_t size,
53 enum dma_data_direction direction)
54{
55 BUG();
56 return(0);
57}
58
59static inline void
60dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
61 enum dma_data_direction direction)
62{
63 BUG();
64}
65
66static inline int
67dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
68 enum dma_data_direction direction)
69{
70 BUG();
71 return(0);
72}
73
74static inline void
75dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
76 enum dma_data_direction direction)
77{
78 BUG();
79}
80
81static inline void
82dma_sync_single(struct device *dev, dma_addr_t dma_handle, size_t size,
83 enum dma_data_direction direction)
84{
85 BUG();
86}
87
88static inline void
89dma_sync_sg(struct device *dev, struct scatterlist *sg, int nelems,
90 enum dma_data_direction direction)
91{
92 BUG();
93}
94
95#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
96#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
97#define dma_is_consistent(d, h) (1)
98
99static inline int
100dma_get_cache_alignment(void)
101{
102 BUG();
103 return(0);
104}
105
106static inline void
107dma_sync_single_range(struct device *dev, dma_addr_t dma_handle,
108 unsigned long offset, size_t size,
109 enum dma_data_direction direction)
110{
111 BUG();
112}
113
114static inline void
115dma_cache_sync(struct device *dev, void *vaddr, size_t size,
116 enum dma_data_direction direction)
117{
118 BUG();
119}
120
121static inline int
122dma_mapping_error(struct device *dev, dma_addr_t dma_handle)
123{
124 BUG();
125 return 0;
126}
127
128#endif
diff --git a/arch/um/include/asm/dma.h b/arch/um/include/asm/dma.h
new file mode 100644
index 000000000000..9f6139a8a525
--- /dev/null
+++ b/arch/um/include/asm/dma.h
@@ -0,0 +1,10 @@
1#ifndef __UM_DMA_H
2#define __UM_DMA_H
3
4#include "asm/io.h"
5
6extern unsigned long uml_physmem;
7
8#define MAX_DMA_ADDRESS (uml_physmem)
9
10#endif
diff --git a/arch/um/include/asm/emergency-restart.h b/arch/um/include/asm/emergency-restart.h
new file mode 100644
index 000000000000..108d8c48e42e
--- /dev/null
+++ b/arch/um/include/asm/emergency-restart.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_EMERGENCY_RESTART_H
2#define _ASM_EMERGENCY_RESTART_H
3
4#include <asm-generic/emergency-restart.h>
5
6#endif /* _ASM_EMERGENCY_RESTART_H */
diff --git a/arch/um/include/asm/fixmap.h b/arch/um/include/asm/fixmap.h
new file mode 100644
index 000000000000..69c0252345f1
--- /dev/null
+++ b/arch/um/include/asm/fixmap.h
@@ -0,0 +1,99 @@
1#ifndef __UM_FIXMAP_H
2#define __UM_FIXMAP_H
3
4#include <asm/processor.h>
5#include <asm/system.h>
6#include <asm/kmap_types.h>
7#include <asm/archparam.h>
8#include <asm/page.h>
9#include <linux/threads.h>
10
11/*
12 * Here we define all the compile-time 'special' virtual
13 * addresses. The point is to have a constant address at
14 * compile time, but to set the physical address only
15 * in the boot process. We allocate these special addresses
16 * from the end of virtual memory (0xfffff000) backwards.
17 * Also this lets us do fail-safe vmalloc(), we
18 * can guarantee that these special addresses and
19 * vmalloc()-ed addresses never overlap.
20 *
21 * these 'compile-time allocated' memory buffers are
22 * fixed-size 4k pages. (or larger if used with an increment
23 * highger than 1) use fixmap_set(idx,phys) to associate
24 * physical memory with fixmap indices.
25 *
26 * TLB entries of such buffers will not be flushed across
27 * task switches.
28 */
29
30/*
31 * on UP currently we will have no trace of the fixmap mechanizm,
32 * no page table allocations, etc. This might change in the
33 * future, say framebuffers for the console driver(s) could be
34 * fix-mapped?
35 */
36enum fixed_addresses {
37#ifdef CONFIG_HIGHMEM
38 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
39 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
40#endif
41 __end_of_fixed_addresses
42};
43
44extern void __set_fixmap (enum fixed_addresses idx,
45 unsigned long phys, pgprot_t flags);
46
47#define set_fixmap(idx, phys) \
48 __set_fixmap(idx, phys, PAGE_KERNEL)
49/*
50 * Some hardware wants to get fixmapped without caching.
51 */
52#define set_fixmap_nocache(idx, phys) \
53 __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
54/*
55 * used by vmalloc.c.
56 *
57 * Leave one empty page between vmalloc'ed areas and
58 * the start of the fixmap, and leave one page empty
59 * at the top of mem..
60 */
61
62#define FIXADDR_TOP (TASK_SIZE - 2 * PAGE_SIZE)
63#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
64#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
65
66#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
67#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
68
69extern void __this_fixmap_does_not_exist(void);
70
71/*
72 * 'index to address' translation. If anyone tries to use the idx
73 * directly without tranlation, we catch the bug with a NULL-deference
74 * kernel oops. Illegal ranges of incoming indices are caught too.
75 */
76static inline unsigned long fix_to_virt(const unsigned int idx)
77{
78 /*
79 * this branch gets completely eliminated after inlining,
80 * except when someone tries to use fixaddr indices in an
81 * illegal way. (such as mixing up address types or using
82 * out-of-range indices).
83 *
84 * If it doesn't get removed, the linker will complain
85 * loudly with a reasonably clear error message..
86 */
87 if (idx >= __end_of_fixed_addresses)
88 __this_fixmap_does_not_exist();
89
90 return __fix_to_virt(idx);
91}
92
93static inline unsigned long virt_to_fix(const unsigned long vaddr)
94{
95 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
96 return __virt_to_fix(vaddr);
97}
98
99#endif
diff --git a/arch/um/include/asm/futex.h b/arch/um/include/asm/futex.h
new file mode 100644
index 000000000000..6a332a9f099c
--- /dev/null
+++ b/arch/um/include/asm/futex.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_FUTEX_H
2#define _ASM_FUTEX_H
3
4#include <asm-generic/futex.h>
5
6#endif
diff --git a/arch/um/include/asm/hardirq.h b/arch/um/include/asm/hardirq.h
new file mode 100644
index 000000000000..313ebb8a2566
--- /dev/null
+++ b/arch/um/include/asm/hardirq.h
@@ -0,0 +1,25 @@
1/* (c) 2004 cw@f00f.org, GPLv2 blah blah */
2
3#ifndef __ASM_UM_HARDIRQ_H
4#define __ASM_UM_HARDIRQ_H
5
6#include <linux/threads.h>
7#include <linux/irq.h>
8
9/* NOTE: When SMP works again we might want to make this
10 * ____cacheline_aligned or maybe use per_cpu state? --cw */
11typedef struct {
12 unsigned int __softirq_pending;
13} irq_cpustat_t;
14
15#include <linux/irq_cpustat.h>
16
17/* As this would be very strange for UML to get we BUG() after the
18 * printk. */
19static inline void ack_bad_irq(unsigned int irq)
20{
21 printk(KERN_ERR "unexpected IRQ %02x\n", irq);
22 BUG();
23}
24
25#endif /* __ASM_UM_HARDIRQ_H */
diff --git a/arch/um/include/asm/hw_irq.h b/arch/um/include/asm/hw_irq.h
new file mode 100644
index 000000000000..1cf84cf5f21a
--- /dev/null
+++ b/arch/um/include/asm/hw_irq.h
@@ -0,0 +1,7 @@
1#ifndef _ASM_UM_HW_IRQ_H
2#define _ASM_UM_HW_IRQ_H
3
4#include "asm/irq.h"
5#include "asm/archparam.h"
6
7#endif
diff --git a/arch/um/include/asm/io.h b/arch/um/include/asm/io.h
new file mode 100644
index 000000000000..44e8b8c772ae
--- /dev/null
+++ b/arch/um/include/asm/io.h
@@ -0,0 +1,57 @@
1#ifndef __UM_IO_H
2#define __UM_IO_H
3
4#include "asm/page.h"
5
6#define IO_SPACE_LIMIT 0xdeadbeef /* Sure hope nothing uses this */
7
8static inline int inb(unsigned long i) { return(0); }
9static inline void outb(char c, unsigned long i) { }
10
11/*
12 * Change virtual addresses to physical addresses and vv.
13 * These are pretty trivial
14 */
15static inline unsigned long virt_to_phys(volatile void * address)
16{
17 return __pa((void *) address);
18}
19
20static inline void * phys_to_virt(unsigned long address)
21{
22 return __va(address);
23}
24
25/*
26 * Convert a physical pointer to a virtual kernel pointer for /dev/mem
27 * access
28 */
29#define xlate_dev_mem_ptr(p) __va(p)
30
31/*
32 * Convert a virtual cached pointer to an uncached pointer
33 */
34#define xlate_dev_kmem_ptr(p) p
35
36static inline void writeb(unsigned char b, volatile void __iomem *addr)
37{
38 *(volatile unsigned char __force *) addr = b;
39}
40static inline void writew(unsigned short b, volatile void __iomem *addr)
41{
42 *(volatile unsigned short __force *) addr = b;
43}
44static inline void writel(unsigned int b, volatile void __iomem *addr)
45{
46 *(volatile unsigned int __force *) addr = b;
47}
48static inline void writeq(unsigned int b, volatile void __iomem *addr)
49{
50 *(volatile unsigned long long __force *) addr = b;
51}
52#define __raw_writeb writeb
53#define __raw_writew writew
54#define __raw_writel writel
55#define __raw_writeq writeq
56
57#endif
diff --git a/arch/um/include/asm/irq.h b/arch/um/include/asm/irq.h
new file mode 100644
index 000000000000..4a2037f8204b
--- /dev/null
+++ b/arch/um/include/asm/irq.h
@@ -0,0 +1,23 @@
1#ifndef __UM_IRQ_H
2#define __UM_IRQ_H
3
4#define TIMER_IRQ 0
5#define UMN_IRQ 1
6#define CONSOLE_IRQ 2
7#define CONSOLE_WRITE_IRQ 3
8#define UBD_IRQ 4
9#define UM_ETH_IRQ 5
10#define SSL_IRQ 6
11#define SSL_WRITE_IRQ 7
12#define ACCEPT_IRQ 8
13#define MCONSOLE_IRQ 9
14#define WINCH_IRQ 10
15#define SIGIO_WRITE_IRQ 11
16#define TELNETD_IRQ 12
17#define XTERM_IRQ 13
18#define RANDOM_IRQ 14
19
20#define LAST_IRQ RANDOM_IRQ
21#define NR_IRQS (LAST_IRQ + 1)
22
23#endif
diff --git a/arch/um/include/asm/irq_regs.h b/arch/um/include/asm/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/arch/um/include/asm/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/arch/um/include/asm/irq_vectors.h b/arch/um/include/asm/irq_vectors.h
new file mode 100644
index 000000000000..62ddba6fc733
--- /dev/null
+++ b/arch/um/include/asm/irq_vectors.h
@@ -0,0 +1,20 @@
1/*
2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_IRQ_VECTORS_H
7#define __UM_IRQ_VECTORS_H
8
9#endif
10
11/*
12 * Overrides for Emacs so that we follow Linus's tabbing style.
13 * Emacs will notice this stuff at the end of the file and automatically
14 * adjust the settings for this buffer only. This must remain at the end
15 * of the file.
16 * ---------------------------------------------------------------------------
17 * Local variables:
18 * c-file-style: "linux"
19 * End:
20 */
diff --git a/arch/um/include/asm/irqflags.h b/arch/um/include/asm/irqflags.h
new file mode 100644
index 000000000000..659b9abdfdba
--- /dev/null
+++ b/arch/um/include/asm/irqflags.h
@@ -0,0 +1,6 @@
1#ifndef __UM_IRQFLAGS_H
2#define __UM_IRQFLAGS_H
3
4/* Empty for now */
5
6#endif
diff --git a/arch/um/include/asm/kdebug.h b/arch/um/include/asm/kdebug.h
new file mode 100644
index 000000000000..6ece1b037665
--- /dev/null
+++ b/arch/um/include/asm/kdebug.h
@@ -0,0 +1 @@
#include <asm-generic/kdebug.h>
diff --git a/arch/um/include/asm/kmap_types.h b/arch/um/include/asm/kmap_types.h
new file mode 100644
index 000000000000..6c03acdb4405
--- /dev/null
+++ b/arch/um/include/asm/kmap_types.h
@@ -0,0 +1,29 @@
1/*
2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_KMAP_TYPES_H
7#define __UM_KMAP_TYPES_H
8
9/* No more #include "asm/arch/kmap_types.h" ! */
10
11enum km_type {
12 KM_BOUNCE_READ,
13 KM_SKB_SUNRPC_DATA,
14 KM_SKB_DATA_SOFTIRQ,
15 KM_USER0,
16 KM_USER1,
17 KM_UML_USERCOPY, /* UML specific, for copy_*_user - used in do_op_one_page */
18 KM_BIO_SRC_IRQ,
19 KM_BIO_DST_IRQ,
20 KM_PTE0,
21 KM_PTE1,
22 KM_IRQ0,
23 KM_IRQ1,
24 KM_SOFTIRQ0,
25 KM_SOFTIRQ1,
26 KM_TYPE_NR
27};
28
29#endif
diff --git a/arch/um/include/asm/mmu.h b/arch/um/include/asm/mmu.h
new file mode 100644
index 000000000000..2cf35c21d694
--- /dev/null
+++ b/arch/um/include/asm/mmu.h
@@ -0,0 +1,22 @@
1/*
2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __MMU_H
7#define __MMU_H
8
9#include "um_mmu.h"
10
11#endif
12
13/*
14 * Overrides for Emacs so that we follow Linus's tabbing style.
15 * Emacs will notice this stuff at the end of the file and automatically
16 * adjust the settings for this buffer only. This must remain at the end
17 * of the file.
18 * ---------------------------------------------------------------------------
19 * Local variables:
20 * c-file-style: "linux"
21 * End:
22 */
diff --git a/arch/um/include/asm/mmu_context.h b/arch/um/include/asm/mmu_context.h
new file mode 100644
index 000000000000..54f42e8b0105
--- /dev/null
+++ b/arch/um/include/asm/mmu_context.h
@@ -0,0 +1,54 @@
1/*
2 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_MMU_CONTEXT_H
7#define __UM_MMU_CONTEXT_H
8
9#include "linux/sched.h"
10#include "um_mmu.h"
11
12extern void arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm);
13extern void arch_exit_mmap(struct mm_struct *mm);
14
15#define get_mmu_context(task) do ; while(0)
16#define activate_context(tsk) do ; while(0)
17
18#define deactivate_mm(tsk,mm) do { } while (0)
19
20extern void force_flush_all(void);
21
22static inline void activate_mm(struct mm_struct *old, struct mm_struct *new)
23{
24 /*
25 * This is called by fs/exec.c and sys_unshare()
26 * when the new ->mm is used for the first time.
27 */
28 __switch_mm(&new->context.id);
29 arch_dup_mmap(old, new);
30}
31
32static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
33 struct task_struct *tsk)
34{
35 unsigned cpu = smp_processor_id();
36
37 if(prev != next){
38 cpu_clear(cpu, prev->cpu_vm_mask);
39 cpu_set(cpu, next->cpu_vm_mask);
40 if(next != &init_mm)
41 __switch_mm(&next->context.id);
42 }
43}
44
45static inline void enter_lazy_tlb(struct mm_struct *mm,
46 struct task_struct *tsk)
47{
48}
49
50extern int init_new_context(struct task_struct *task, struct mm_struct *mm);
51
52extern void destroy_context(struct mm_struct *mm);
53
54#endif
diff --git a/arch/um/include/asm/mutex.h b/arch/um/include/asm/mutex.h
new file mode 100644
index 000000000000..458c1f7fbc18
--- /dev/null
+++ b/arch/um/include/asm/mutex.h
@@ -0,0 +1,9 @@
1/*
2 * Pull in the generic implementation for the mutex fastpath.
3 *
4 * TODO: implement optimized primitives instead, or leave the generic
5 * implementation in place, or pick the atomic_xchg() based generic
6 * implementation. (see asm-generic/mutex-xchg.h for details)
7 */
8
9#include <asm-generic/mutex-dec.h>
diff --git a/arch/um/include/asm/page.h b/arch/um/include/asm/page.h
new file mode 100644
index 000000000000..55f28a0bae6d
--- /dev/null
+++ b/arch/um/include/asm/page.h
@@ -0,0 +1,122 @@
1/*
2 * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
3 * Copyright 2003 PathScale, Inc.
4 * Licensed under the GPL
5 */
6
7#ifndef __UM_PAGE_H
8#define __UM_PAGE_H
9
10#include <linux/const.h>
11
12/* PAGE_SHIFT determines the page size */
13#define PAGE_SHIFT 12
14#define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
15#define PAGE_MASK (~(PAGE_SIZE-1))
16
17#ifndef __ASSEMBLY__
18
19struct page;
20
21#include <linux/types.h>
22#include <sysdep/vm-flags.h>
23
24/*
25 * These are used to make use of C type-checking..
26 */
27
28#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
29#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE)
30
31#define clear_user_page(page, vaddr, pg) clear_page(page)
32#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
33
34#if defined(CONFIG_3_LEVEL_PGTABLES) && !defined(CONFIG_64BIT)
35
36typedef struct { unsigned long pte_low, pte_high; } pte_t;
37typedef struct { unsigned long pmd; } pmd_t;
38typedef struct { unsigned long pgd; } pgd_t;
39#define pte_val(x) ((x).pte_low | ((unsigned long long) (x).pte_high << 32))
40
41#define pte_get_bits(pte, bits) ((pte).pte_low & (bits))
42#define pte_set_bits(pte, bits) ((pte).pte_low |= (bits))
43#define pte_clear_bits(pte, bits) ((pte).pte_low &= ~(bits))
44#define pte_copy(to, from) ({ (to).pte_high = (from).pte_high; \
45 smp_wmb(); \
46 (to).pte_low = (from).pte_low; })
47#define pte_is_zero(pte) (!((pte).pte_low & ~_PAGE_NEWPAGE) && !(pte).pte_high)
48#define pte_set_val(pte, phys, prot) \
49 ({ (pte).pte_high = (phys) >> 32; \
50 (pte).pte_low = (phys) | pgprot_val(prot); })
51
52#define pmd_val(x) ((x).pmd)
53#define __pmd(x) ((pmd_t) { (x) } )
54
55typedef unsigned long long pfn_t;
56typedef unsigned long long phys_t;
57
58#else
59
60typedef struct { unsigned long pte; } pte_t;
61typedef struct { unsigned long pgd; } pgd_t;
62
63#ifdef CONFIG_3_LEVEL_PGTABLES
64typedef struct { unsigned long pmd; } pmd_t;
65#define pmd_val(x) ((x).pmd)
66#define __pmd(x) ((pmd_t) { (x) } )
67#endif
68
69#define pte_val(x) ((x).pte)
70
71
72#define pte_get_bits(p, bits) ((p).pte & (bits))
73#define pte_set_bits(p, bits) ((p).pte |= (bits))
74#define pte_clear_bits(p, bits) ((p).pte &= ~(bits))
75#define pte_copy(to, from) ((to).pte = (from).pte)
76#define pte_is_zero(p) (!((p).pte & ~_PAGE_NEWPAGE))
77#define pte_set_val(p, phys, prot) (p).pte = (phys | pgprot_val(prot))
78
79typedef unsigned long pfn_t;
80typedef unsigned long phys_t;
81
82#endif
83
84typedef struct { unsigned long pgprot; } pgprot_t;
85
86typedef struct page *pgtable_t;
87
88#define pgd_val(x) ((x).pgd)
89#define pgprot_val(x) ((x).pgprot)
90
91#define __pte(x) ((pte_t) { (x) } )
92#define __pgd(x) ((pgd_t) { (x) } )
93#define __pgprot(x) ((pgprot_t) { (x) } )
94
95extern unsigned long uml_physmem;
96
97#define PAGE_OFFSET (uml_physmem)
98#define KERNELBASE PAGE_OFFSET
99
100#define __va_space (8*1024*1024)
101
102#include "mem.h"
103
104/* Cast to unsigned long before casting to void * to avoid a warning from
105 * mmap_kmem about cutting a long long down to a void *. Not sure that
106 * casting is the right thing, but 32-bit UML can't have 64-bit virtual
107 * addresses
108 */
109#define __pa(virt) to_phys((void *) (unsigned long) (virt))
110#define __va(phys) to_virt((unsigned long) (phys))
111
112#define phys_to_pfn(p) ((pfn_t) ((p) >> PAGE_SHIFT))
113#define pfn_to_phys(pfn) ((phys_t) ((pfn) << PAGE_SHIFT))
114
115#define pfn_valid(pfn) ((pfn) < max_mapnr)
116#define virt_addr_valid(v) pfn_valid(phys_to_pfn(__pa(v)))
117
118#include <asm-generic/memory_model.h>
119#include <asm-generic/page.h>
120
121#endif /* __ASSEMBLY__ */
122#endif /* __UM_PAGE_H */
diff --git a/arch/um/include/asm/page_offset.h b/arch/um/include/asm/page_offset.h
new file mode 100644
index 000000000000..1c168dfbf359
--- /dev/null
+++ b/arch/um/include/asm/page_offset.h
@@ -0,0 +1 @@
#define PAGE_OFFSET_RAW (uml_physmem)
diff --git a/arch/um/include/asm/param.h b/arch/um/include/asm/param.h
new file mode 100644
index 000000000000..e44f4e60d16d
--- /dev/null
+++ b/arch/um/include/asm/param.h
@@ -0,0 +1,20 @@
1#ifndef _UM_PARAM_H
2#define _UM_PARAM_H
3
4#define EXEC_PAGESIZE 4096
5
6#ifndef NOGROUP
7#define NOGROUP (-1)
8#endif
9
10#define MAXHOSTNAMELEN 64 /* max length of hostname */
11
12#ifdef __KERNEL__
13#define HZ CONFIG_HZ
14#define USER_HZ 100 /* .. some user interfaces are in "ticks" */
15#define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
16#else
17#define HZ 100
18#endif
19
20#endif
diff --git a/arch/um/include/asm/pci.h b/arch/um/include/asm/pci.h
new file mode 100644
index 000000000000..59923199cdc3
--- /dev/null
+++ b/arch/um/include/asm/pci.h
@@ -0,0 +1,7 @@
1#ifndef __UM_PCI_H
2#define __UM_PCI_H
3
4#define PCI_DMA_BUS_IS_PHYS (1)
5#define pcibios_scan_all_fns(a, b) 0
6
7#endif
diff --git a/arch/um/include/asm/pda.h b/arch/um/include/asm/pda.h
new file mode 100644
index 000000000000..0d8bf33ffd42
--- /dev/null
+++ b/arch/um/include/asm/pda.h
@@ -0,0 +1,31 @@
1/*
2 * Copyright 2003 PathScale, Inc.
3 *
4 * Licensed under the GPL
5 */
6
7#ifndef __UM_PDA_X86_64_H
8#define __UM_PDA_X86_64_H
9
10/* XXX */
11struct foo {
12 unsigned int __softirq_pending;
13 unsigned int __nmi_count;
14};
15
16extern struct foo me;
17
18#define read_pda(me) (&me)
19
20#endif
21
22/*
23 * Overrides for Emacs so that we follow Linus's tabbing style.
24 * Emacs will notice this stuff at the end of the file and automatically
25 * adjust the settings for this buffer only. This must remain at the end
26 * of the file.
27 * ---------------------------------------------------------------------------
28 * Local variables:
29 * c-file-style: "linux"
30 * End:
31 */
diff --git a/arch/um/include/asm/pgalloc.h b/arch/um/include/asm/pgalloc.h
new file mode 100644
index 000000000000..9062a6e72241
--- /dev/null
+++ b/arch/um/include/asm/pgalloc.h
@@ -0,0 +1,72 @@
1/*
2 * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
3 * Copyright 2003 PathScale, Inc.
4 * Derived from include/asm-i386/pgalloc.h and include/asm-i386/pgtable.h
5 * Licensed under the GPL
6 */
7
8#ifndef __UM_PGALLOC_H
9#define __UM_PGALLOC_H
10
11#include "linux/mm.h"
12#include "asm/fixmap.h"
13
14#define pmd_populate_kernel(mm, pmd, pte) \
15 set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))
16
17#define pmd_populate(mm, pmd, pte) \
18 set_pmd(pmd, __pmd(_PAGE_TABLE + \
19 ((unsigned long long)page_to_pfn(pte) << \
20 (unsigned long long) PAGE_SHIFT)))
21#define pmd_pgtable(pmd) pmd_page(pmd)
22
23/*
24 * Allocate and free page tables.
25 */
26extern pgd_t *pgd_alloc(struct mm_struct *);
27extern void pgd_free(struct mm_struct *mm, pgd_t *pgd);
28
29extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
30extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long);
31
32static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
33{
34 free_page((unsigned long) pte);
35}
36
37static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
38{
39 pgtable_page_dtor(pte);
40 __free_page(pte);
41}
42
43#define __pte_free_tlb(tlb,pte) \
44do { \
45 pgtable_page_dtor(pte); \
46 tlb_remove_page((tlb),(pte)); \
47} while (0)
48
49#ifdef CONFIG_3_LEVEL_PGTABLES
50
51static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
52{
53 free_page((unsigned long)pmd);
54}
55
56#define __pmd_free_tlb(tlb,x) tlb_remove_page((tlb),virt_to_page(x))
57#endif
58
59#define check_pgt_cache() do { } while (0)
60
61#endif
62
63/*
64 * Overrides for Emacs so that we follow Linus's tabbing style.
65 * Emacs will notice this stuff at the end of the file and automatically
66 * adjust the settings for this buffer only. This must remain at the end
67 * of the file.
68 * ---------------------------------------------------------------------------
69 * Local variables:
70 * c-file-style: "linux"
71 * End:
72 */
diff --git a/arch/um/include/asm/pgtable-2level.h b/arch/um/include/asm/pgtable-2level.h
new file mode 100644
index 000000000000..f534b73e753e
--- /dev/null
+++ b/arch/um/include/asm/pgtable-2level.h
@@ -0,0 +1,53 @@
1/*
2 * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
3 * Copyright 2003 PathScale, Inc.
4 * Derived from include/asm-i386/pgtable.h
5 * Licensed under the GPL
6 */
7
8#ifndef __UM_PGTABLE_2LEVEL_H
9#define __UM_PGTABLE_2LEVEL_H
10
11#include <asm-generic/pgtable-nopmd.h>
12
13/* PGDIR_SHIFT determines what a third-level page table entry can map */
14
15#define PGDIR_SHIFT 22
16#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
17#define PGDIR_MASK (~(PGDIR_SIZE-1))
18
19/*
20 * entries per page directory level: the i386 is two-level, so
21 * we don't really have any PMD directory physically.
22 */
23#define PTRS_PER_PTE 1024
24#define USER_PTRS_PER_PGD ((TASK_SIZE + (PGDIR_SIZE - 1)) / PGDIR_SIZE)
25#define PTRS_PER_PGD 1024
26#define FIRST_USER_ADDRESS 0
27
28#define pte_ERROR(e) \
29 printk("%s:%d: bad pte %p(%08lx).\n", __FILE__, __LINE__, &(e), \
30 pte_val(e))
31#define pgd_ERROR(e) \
32 printk("%s:%d: bad pgd %p(%08lx).\n", __FILE__, __LINE__, &(e), \
33 pgd_val(e))
34
35static inline int pgd_newpage(pgd_t pgd) { return 0; }
36static inline void pgd_mkuptodate(pgd_t pgd) { }
37
38#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
39
40#define pte_pfn(x) phys_to_pfn(pte_val(x))
41#define pfn_pte(pfn, prot) __pte(pfn_to_phys(pfn) | pgprot_val(prot))
42#define pfn_pmd(pfn, prot) __pmd(pfn_to_phys(pfn) | pgprot_val(prot))
43
44/*
45 * Bits 0 through 4 are taken
46 */
47#define PTE_FILE_MAX_BITS 27
48
49#define pte_to_pgoff(pte) (pte_val(pte) >> 5)
50
51#define pgoff_to_pte(off) ((pte_t) { ((off) << 5) + _PAGE_FILE })
52
53#endif
diff --git a/arch/um/include/asm/pgtable-3level.h b/arch/um/include/asm/pgtable-3level.h
new file mode 100644
index 000000000000..0446f456b428
--- /dev/null
+++ b/arch/um/include/asm/pgtable-3level.h
@@ -0,0 +1,146 @@
1/*
2 * Copyright 2003 PathScale Inc
3 * Derived from include/asm-i386/pgtable.h
4 * Licensed under the GPL
5 */
6
7#ifndef __UM_PGTABLE_3LEVEL_H
8#define __UM_PGTABLE_3LEVEL_H
9
10#include <asm-generic/pgtable-nopud.h>
11
12/* PGDIR_SHIFT determines what a third-level page table entry can map */
13
14#ifdef CONFIG_64BIT
15#define PGDIR_SHIFT 30
16#else
17#define PGDIR_SHIFT 31
18#endif
19#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
20#define PGDIR_MASK (~(PGDIR_SIZE-1))
21
22/* PMD_SHIFT determines the size of the area a second-level page table can
23 * map
24 */
25
26#define PMD_SHIFT 21
27#define PMD_SIZE (1UL << PMD_SHIFT)
28#define PMD_MASK (~(PMD_SIZE-1))
29
30/*
31 * entries per page directory level
32 */
33
34#define PTRS_PER_PTE 512
35#ifdef CONFIG_64BIT
36#define PTRS_PER_PMD 512
37#define PTRS_PER_PGD 512
38#else
39#define PTRS_PER_PMD 1024
40#define PTRS_PER_PGD 1024
41#endif
42
43#define USER_PTRS_PER_PGD ((TASK_SIZE + (PGDIR_SIZE - 1)) / PGDIR_SIZE)
44#define FIRST_USER_ADDRESS 0
45
46#define pte_ERROR(e) \
47 printk("%s:%d: bad pte %p(%016lx).\n", __FILE__, __LINE__, &(e), \
48 pte_val(e))
49#define pmd_ERROR(e) \
50 printk("%s:%d: bad pmd %p(%016lx).\n", __FILE__, __LINE__, &(e), \
51 pmd_val(e))
52#define pgd_ERROR(e) \
53 printk("%s:%d: bad pgd %p(%016lx).\n", __FILE__, __LINE__, &(e), \
54 pgd_val(e))
55
56#define pud_none(x) (!(pud_val(x) & ~_PAGE_NEWPAGE))
57#define pud_bad(x) ((pud_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
58#define pud_present(x) (pud_val(x) & _PAGE_PRESENT)
59#define pud_populate(mm, pud, pmd) \
60 set_pud(pud, __pud(_PAGE_TABLE + __pa(pmd)))
61
62#ifdef CONFIG_64BIT
63#define set_pud(pudptr, pudval) set_64bit((phys_t *) (pudptr), pud_val(pudval))
64#else
65#define set_pud(pudptr, pudval) (*(pudptr) = (pudval))
66#endif
67
68static inline int pgd_newpage(pgd_t pgd)
69{
70 return(pgd_val(pgd) & _PAGE_NEWPAGE);
71}
72
73static inline void pgd_mkuptodate(pgd_t pgd) { pgd_val(pgd) &= ~_PAGE_NEWPAGE; }
74
75#ifdef CONFIG_64BIT
76#define set_pmd(pmdptr, pmdval) set_64bit((phys_t *) (pmdptr), pmd_val(pmdval))
77#else
78#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
79#endif
80
81struct mm_struct;
82extern pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address);
83
84static inline void pud_clear (pud_t *pud)
85{
86 set_pud(pud, __pud(_PAGE_NEWPAGE));
87}
88
89#define pud_page(pud) phys_to_page(pud_val(pud) & PAGE_MASK)
90#define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & PAGE_MASK))
91
92/* Find an entry in the second-level page table.. */
93#define pmd_offset(pud, address) ((pmd_t *) pud_page_vaddr(*(pud)) + \
94 pmd_index(address))
95
96static inline unsigned long pte_pfn(pte_t pte)
97{
98 return phys_to_pfn(pte_val(pte));
99}
100
101static inline pte_t pfn_pte(pfn_t page_nr, pgprot_t pgprot)
102{
103 pte_t pte;
104 phys_t phys = pfn_to_phys(page_nr);
105
106 pte_set_val(pte, phys, pgprot);
107 return pte;
108}
109
110static inline pmd_t pfn_pmd(pfn_t page_nr, pgprot_t pgprot)
111{
112 return __pmd((page_nr << PAGE_SHIFT) | pgprot_val(pgprot));
113}
114
115/*
116 * Bits 0 through 3 are taken in the low part of the pte,
117 * put the 32 bits of offset into the high part.
118 */
119#define PTE_FILE_MAX_BITS 32
120
121#ifdef CONFIG_64BIT
122
123#define pte_to_pgoff(p) ((p).pte >> 32)
124
125#define pgoff_to_pte(off) ((pte_t) { ((off) << 32) | _PAGE_FILE })
126
127#else
128
129#define pte_to_pgoff(pte) ((pte).pte_high)
130
131#define pgoff_to_pte(off) ((pte_t) { _PAGE_FILE, (off) })
132
133#endif
134
135#endif
136
137/*
138 * Overrides for Emacs so that we follow Linus's tabbing style.
139 * Emacs will notice this stuff at the end of the file and automatically
140 * adjust the settings for this buffer only. This must remain at the end
141 * of the file.
142 * ---------------------------------------------------------------------------
143 * Local variables:
144 * c-file-style: "linux"
145 * End:
146 */
diff --git a/arch/um/include/asm/pgtable.h b/arch/um/include/asm/pgtable.h
new file mode 100644
index 000000000000..58da2480a7f4
--- /dev/null
+++ b/arch/um/include/asm/pgtable.h
@@ -0,0 +1,366 @@
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Copyright 2003 PathScale, Inc.
4 * Derived from include/asm-i386/pgtable.h
5 * Licensed under the GPL
6 */
7
8#ifndef __UM_PGTABLE_H
9#define __UM_PGTABLE_H
10
11#include <asm/fixmap.h>
12
13#define _PAGE_PRESENT 0x001
14#define _PAGE_NEWPAGE 0x002
15#define _PAGE_NEWPROT 0x004
16#define _PAGE_RW 0x020
17#define _PAGE_USER 0x040
18#define _PAGE_ACCESSED 0x080
19#define _PAGE_DIRTY 0x100
20/* If _PAGE_PRESENT is clear, we use these: */
21#define _PAGE_FILE 0x008 /* nonlinear file mapping, saved PTE; unset:swap */
22#define _PAGE_PROTNONE 0x010 /* if the user mapped it with PROT_NONE;
23 pte_present gives true */
24
25#ifdef CONFIG_3_LEVEL_PGTABLES
26#include "asm/pgtable-3level.h"
27#else
28#include "asm/pgtable-2level.h"
29#endif
30
31extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
32
33/* zero page used for uninitialized stuff */
34extern unsigned long *empty_zero_page;
35
36#define pgtable_cache_init() do ; while (0)
37
38/* Just any arbitrary offset to the start of the vmalloc VM area: the
39 * current 8MB value just means that there will be a 8MB "hole" after the
40 * physical memory until the kernel virtual memory starts. That means that
41 * any out-of-bounds memory accesses will hopefully be caught.
42 * The vmalloc() routines leaves a hole of 4kB between each vmalloced
43 * area for the same reason. ;)
44 */
45
46extern unsigned long end_iomem;
47
48#define VMALLOC_OFFSET (__va_space)
49#define VMALLOC_START ((end_iomem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
50#define PKMAP_BASE ((FIXADDR_START - LAST_PKMAP * PAGE_SIZE) & PMD_MASK)
51#ifdef CONFIG_HIGHMEM
52# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE)
53#else
54# define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE)
55#endif
56
57#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
58#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
59#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
60
61#define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
62#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
63#define PAGE_COPY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
64#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
65#define PAGE_KERNEL __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
66
67/*
68 * The i386 can't do page protection for execute, and considers that the same
69 * are read.
70 * Also, write permissions imply read permissions. This is the closest we can
71 * get..
72 */
73#define __P000 PAGE_NONE
74#define __P001 PAGE_READONLY
75#define __P010 PAGE_COPY
76#define __P011 PAGE_COPY
77#define __P100 PAGE_READONLY
78#define __P101 PAGE_READONLY
79#define __P110 PAGE_COPY
80#define __P111 PAGE_COPY
81
82#define __S000 PAGE_NONE
83#define __S001 PAGE_READONLY
84#define __S010 PAGE_SHARED
85#define __S011 PAGE_SHARED
86#define __S100 PAGE_READONLY
87#define __S101 PAGE_READONLY
88#define __S110 PAGE_SHARED
89#define __S111 PAGE_SHARED
90
91/*
92 * ZERO_PAGE is a global shared page that is always zero: used
93 * for zero-mapped memory areas etc..
94 */
95#define ZERO_PAGE(vaddr) virt_to_page(empty_zero_page)
96
97#define pte_clear(mm,addr,xp) pte_set_val(*(xp), (phys_t) 0, __pgprot(_PAGE_NEWPAGE))
98
99#define pmd_none(x) (!((unsigned long)pmd_val(x) & ~_PAGE_NEWPAGE))
100#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
101
102#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
103#define pmd_clear(xp) do { pmd_val(*(xp)) = _PAGE_NEWPAGE; } while (0)
104
105#define pmd_newpage(x) (pmd_val(x) & _PAGE_NEWPAGE)
106#define pmd_mkuptodate(x) (pmd_val(x) &= ~_PAGE_NEWPAGE)
107
108#define pud_newpage(x) (pud_val(x) & _PAGE_NEWPAGE)
109#define pud_mkuptodate(x) (pud_val(x) &= ~_PAGE_NEWPAGE)
110
111#define pmd_page(pmd) phys_to_page(pmd_val(pmd) & PAGE_MASK)
112
113#define pte_page(x) pfn_to_page(pte_pfn(x))
114
115#define pte_present(x) pte_get_bits(x, (_PAGE_PRESENT | _PAGE_PROTNONE))
116
117/*
118 * =================================
119 * Flags checking section.
120 * =================================
121 */
122
123static inline int pte_none(pte_t pte)
124{
125 return pte_is_zero(pte);
126}
127
128/*
129 * The following only work if pte_present() is true.
130 * Undefined behaviour if not..
131 */
132static inline int pte_read(pte_t pte)
133{
134 return((pte_get_bits(pte, _PAGE_USER)) &&
135 !(pte_get_bits(pte, _PAGE_PROTNONE)));
136}
137
138static inline int pte_exec(pte_t pte){
139 return((pte_get_bits(pte, _PAGE_USER)) &&
140 !(pte_get_bits(pte, _PAGE_PROTNONE)));
141}
142
143static inline int pte_write(pte_t pte)
144{
145 return((pte_get_bits(pte, _PAGE_RW)) &&
146 !(pte_get_bits(pte, _PAGE_PROTNONE)));
147}
148
149/*
150 * The following only works if pte_present() is not true.
151 */
152static inline int pte_file(pte_t pte)
153{
154 return pte_get_bits(pte, _PAGE_FILE);
155}
156
157static inline int pte_dirty(pte_t pte)
158{
159 return pte_get_bits(pte, _PAGE_DIRTY);
160}
161
162static inline int pte_young(pte_t pte)
163{
164 return pte_get_bits(pte, _PAGE_ACCESSED);
165}
166
167static inline int pte_newpage(pte_t pte)
168{
169 return pte_get_bits(pte, _PAGE_NEWPAGE);
170}
171
172static inline int pte_newprot(pte_t pte)
173{
174 return(pte_present(pte) && (pte_get_bits(pte, _PAGE_NEWPROT)));
175}
176
177static inline int pte_special(pte_t pte)
178{
179 return 0;
180}
181
182/*
183 * =================================
184 * Flags setting section.
185 * =================================
186 */
187
188static inline pte_t pte_mknewprot(pte_t pte)
189{
190 pte_set_bits(pte, _PAGE_NEWPROT);
191 return(pte);
192}
193
194static inline pte_t pte_mkclean(pte_t pte)
195{
196 pte_clear_bits(pte, _PAGE_DIRTY);
197 return(pte);
198}
199
200static inline pte_t pte_mkold(pte_t pte)
201{
202 pte_clear_bits(pte, _PAGE_ACCESSED);
203 return(pte);
204}
205
206static inline pte_t pte_wrprotect(pte_t pte)
207{
208 pte_clear_bits(pte, _PAGE_RW);
209 return(pte_mknewprot(pte));
210}
211
212static inline pte_t pte_mkread(pte_t pte)
213{
214 pte_set_bits(pte, _PAGE_USER);
215 return(pte_mknewprot(pte));
216}
217
218static inline pte_t pte_mkdirty(pte_t pte)
219{
220 pte_set_bits(pte, _PAGE_DIRTY);
221 return(pte);
222}
223
224static inline pte_t pte_mkyoung(pte_t pte)
225{
226 pte_set_bits(pte, _PAGE_ACCESSED);
227 return(pte);
228}
229
230static inline pte_t pte_mkwrite(pte_t pte)
231{
232 pte_set_bits(pte, _PAGE_RW);
233 return(pte_mknewprot(pte));
234}
235
236static inline pte_t pte_mkuptodate(pte_t pte)
237{
238 pte_clear_bits(pte, _PAGE_NEWPAGE);
239 if(pte_present(pte))
240 pte_clear_bits(pte, _PAGE_NEWPROT);
241 return(pte);
242}
243
244static inline pte_t pte_mknewpage(pte_t pte)
245{
246 pte_set_bits(pte, _PAGE_NEWPAGE);
247 return(pte);
248}
249
250static inline pte_t pte_mkspecial(pte_t pte)
251{
252 return(pte);
253}
254
255static inline void set_pte(pte_t *pteptr, pte_t pteval)
256{
257 pte_copy(*pteptr, pteval);
258
259 /* If it's a swap entry, it needs to be marked _PAGE_NEWPAGE so
260 * fix_range knows to unmap it. _PAGE_NEWPROT is specific to
261 * mapped pages.
262 */
263
264 *pteptr = pte_mknewpage(*pteptr);
265 if(pte_present(*pteptr)) *pteptr = pte_mknewprot(*pteptr);
266}
267#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
268
269/*
270 * Conversion functions: convert a page and protection to a page entry,
271 * and a page entry and page directory to the page they refer to.
272 */
273
274#define phys_to_page(phys) pfn_to_page(phys_to_pfn(phys))
275#define __virt_to_page(virt) phys_to_page(__pa(virt))
276#define page_to_phys(page) pfn_to_phys((pfn_t) page_to_pfn(page))
277#define virt_to_page(addr) __virt_to_page((const unsigned long) addr)
278
279#define mk_pte(page, pgprot) \
280 ({ pte_t pte; \
281 \
282 pte_set_val(pte, page_to_phys(page), (pgprot)); \
283 if (pte_present(pte)) \
284 pte_mknewprot(pte_mknewpage(pte)); \
285 pte;})
286
287static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
288{
289 pte_set_val(pte, (pte_val(pte) & _PAGE_CHG_MASK), newprot);
290 return pte;
291}
292
293/*
294 * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
295 *
296 * this macro returns the index of the entry in the pgd page which would
297 * control the given virtual address
298 */
299#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
300
301/*
302 * pgd_offset() returns a (pgd_t *)
303 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
304 */
305#define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address))
306
307/*
308 * a shortcut which implies the use of the kernel's pgd, instead
309 * of a process's
310 */
311#define pgd_offset_k(address) pgd_offset(&init_mm, address)
312
313/*
314 * the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
315 *
316 * this macro returns the index of the entry in the pmd page which would
317 * control the given virtual address
318 */
319#define pmd_page_vaddr(pmd) ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
320#define pmd_index(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))
321
322#define pmd_page_vaddr(pmd) \
323 ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
324
325/*
326 * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE]
327 *
328 * this macro returns the index of the entry in the pte page which would
329 * control the given virtual address
330 */
331#define pte_index(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
332#define pte_offset_kernel(dir, address) \
333 ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address))
334#define pte_offset_map(dir, address) \
335 ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
336#define pte_offset_map_nested(dir, address) pte_offset_map(dir, address)
337#define pte_unmap(pte) do { } while (0)
338#define pte_unmap_nested(pte) do { } while (0)
339
340struct mm_struct;
341extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr);
342
343#define update_mmu_cache(vma,address,pte) do ; while (0)
344
345/* Encode and de-code a swap entry */
346#define __swp_type(x) (((x).val >> 4) & 0x3f)
347#define __swp_offset(x) ((x).val >> 11)
348
349#define __swp_entry(type, offset) \
350 ((swp_entry_t) { ((type) << 4) | ((offset) << 11) })
351#define __pte_to_swp_entry(pte) \
352 ((swp_entry_t) { pte_val(pte_mkuptodate(pte)) })
353#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
354
355#define kern_addr_valid(addr) (1)
356
357#include <asm-generic/pgtable.h>
358
359/* Clear a kernel PTE and flush it from the TLB */
360#define kpte_clear_flush(ptep, vaddr) \
361do { \
362 pte_clear(&init_mm, (vaddr), (ptep)); \
363 __flush_tlb_one((vaddr)); \
364} while (0)
365
366#endif
diff --git a/arch/um/include/asm/processor-generic.h b/arch/um/include/asm/processor-generic.h
new file mode 100644
index 000000000000..bed668824b5f
--- /dev/null
+++ b/arch/um/include/asm/processor-generic.h
@@ -0,0 +1,136 @@
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_PROCESSOR_GENERIC_H
7#define __UM_PROCESSOR_GENERIC_H
8
9struct pt_regs;
10
11struct task_struct;
12
13#include "asm/ptrace.h"
14#include "registers.h"
15#include "sysdep/archsetjmp.h"
16
17struct mm_struct;
18
19struct thread_struct {
20 struct task_struct *saved_task;
21 /*
22 * This flag is set to 1 before calling do_fork (and analyzed in
23 * copy_thread) to mark that we are begin called from userspace (fork /
24 * vfork / clone), and reset to 0 after. It is left to 0 when called
25 * from kernelspace (i.e. kernel_thread() or fork_idle(),
26 * as of 2.6.11).
27 */
28 int forking;
29 struct pt_regs regs;
30 int singlestep_syscall;
31 void *fault_addr;
32 jmp_buf *fault_catcher;
33 struct task_struct *prev_sched;
34 unsigned long temp_stack;
35 jmp_buf *exec_buf;
36 struct arch_thread arch;
37 jmp_buf switch_buf;
38 int mm_count;
39 struct {
40 int op;
41 union {
42 struct {
43 int pid;
44 } fork, exec;
45 struct {
46 int (*proc)(void *);
47 void *arg;
48 } thread;
49 struct {
50 void (*proc)(void *);
51 void *arg;
52 } cb;
53 } u;
54 } request;
55};
56
57#define INIT_THREAD \
58{ \
59 .forking = 0, \
60 .regs = EMPTY_REGS, \
61 .fault_addr = NULL, \
62 .prev_sched = NULL, \
63 .temp_stack = 0, \
64 .exec_buf = NULL, \
65 .arch = INIT_ARCH_THREAD, \
66 .request = { 0 } \
67}
68
69extern struct task_struct *alloc_task_struct(void);
70
71static inline void release_thread(struct task_struct *task)
72{
73}
74
75extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
76
77static inline void prepare_to_copy(struct task_struct *tsk)
78{
79}
80
81
82extern unsigned long thread_saved_pc(struct task_struct *t);
83
84static inline void mm_copy_segments(struct mm_struct *from_mm,
85 struct mm_struct *new_mm)
86{
87}
88
89#define init_stack (init_thread_union.stack)
90
91/*
92 * User space process size: 3GB (default).
93 */
94extern unsigned long task_size;
95
96#define TASK_SIZE (task_size)
97
98#undef STACK_TOP
99#undef STACK_TOP_MAX
100
101extern unsigned long stacksizelim;
102
103#define STACK_ROOM (stacksizelim)
104#define STACK_TOP (TASK_SIZE - 2 * PAGE_SIZE)
105#define STACK_TOP_MAX STACK_TOP
106
107/* This decides where the kernel will search for a free chunk of vm
108 * space during mmap's.
109 */
110#define TASK_UNMAPPED_BASE (0x40000000)
111
112extern void start_thread(struct pt_regs *regs, unsigned long entry,
113 unsigned long stack);
114
115struct cpuinfo_um {
116 unsigned long loops_per_jiffy;
117 int ipi_pipe[2];
118};
119
120extern struct cpuinfo_um boot_cpu_data;
121
122#define my_cpu_data cpu_data[smp_processor_id()]
123
124#ifdef CONFIG_SMP
125extern struct cpuinfo_um cpu_data[];
126#define current_cpu_data cpu_data[smp_processor_id()]
127#else
128#define cpu_data (&boot_cpu_data)
129#define current_cpu_data boot_cpu_data
130#endif
131
132
133#define KSTK_REG(tsk, reg) get_thread_reg(reg, &tsk->thread.switch_buf)
134extern unsigned long get_wchan(struct task_struct *p);
135
136#endif
diff --git a/arch/um/include/asm/ptrace-generic.h b/arch/um/include/asm/ptrace-generic.h
new file mode 100644
index 000000000000..6c8899013c92
--- /dev/null
+++ b/arch/um/include/asm/ptrace-generic.h
@@ -0,0 +1,55 @@
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_PTRACE_GENERIC_H
7#define __UM_PTRACE_GENERIC_H
8
9#ifndef __ASSEMBLY__
10
11#include <asm/ptrace-abi.h>
12#include <asm/user.h>
13#include "sysdep/ptrace.h"
14
15struct pt_regs {
16 struct uml_pt_regs regs;
17};
18
19#define EMPTY_REGS { .regs = EMPTY_UML_PT_REGS }
20
21#define PT_REGS_IP(r) UPT_IP(&(r)->regs)
22#define PT_REGS_SP(r) UPT_SP(&(r)->regs)
23
24#define PT_REG(r, reg) UPT_REG(&(r)->regs, reg)
25#define PT_REGS_SET(r, reg, val) UPT_SET(&(r)->regs, reg, val)
26
27#define PT_REGS_SET_SYSCALL_RETURN(r, res) \
28 UPT_SET_SYSCALL_RETURN(&(r)->regs, res)
29#define PT_REGS_RESTART_SYSCALL(r) UPT_RESTART_SYSCALL(&(r)->regs)
30
31#define PT_REGS_SYSCALL_NR(r) UPT_SYSCALL_NR(&(r)->regs)
32
33#define PT_REGS_SC(r) UPT_SC(&(r)->regs)
34
35#define instruction_pointer(regs) PT_REGS_IP(regs)
36
37struct task_struct;
38
39extern long subarch_ptrace(struct task_struct *child, long request, long addr,
40 long data);
41extern unsigned long getreg(struct task_struct *child, int regno);
42extern int putreg(struct task_struct *child, int regno, unsigned long value);
43extern int get_fpregs(struct user_i387_struct __user *buf,
44 struct task_struct *child);
45extern int set_fpregs(struct user_i387_struct __user *buf,
46 struct task_struct *child);
47
48extern void show_regs(struct pt_regs *regs);
49
50extern int arch_copy_tls(struct task_struct *new);
51extern void clear_flushed_tls(struct task_struct *task);
52
53#endif
54
55#endif
diff --git a/arch/um/include/asm/required-features.h b/arch/um/include/asm/required-features.h
new file mode 100644
index 000000000000..dfb967b2d2f3
--- /dev/null
+++ b/arch/um/include/asm/required-features.h
@@ -0,0 +1,9 @@
1#ifndef __UM_REQUIRED_FEATURES_H
2#define __UM_REQUIRED_FEATURES_H
3
4/*
5 * Nothing to see, just need something for the i386 and x86_64 asm
6 * headers to include.
7 */
8
9#endif
diff --git a/arch/um/include/asm/sections.h b/arch/um/include/asm/sections.h
new file mode 100644
index 000000000000..6b0231eefea8
--- /dev/null
+++ b/arch/um/include/asm/sections.h
@@ -0,0 +1,7 @@
1#ifndef _UM_SECTIONS_H
2#define _UM_SECTIONS_H
3
4/* nothing to see, move along */
5#include <asm-generic/sections.h>
6
7#endif
diff --git a/arch/um/include/asm/segment.h b/arch/um/include/asm/segment.h
new file mode 100644
index 000000000000..45183fcd10b6
--- /dev/null
+++ b/arch/um/include/asm/segment.h
@@ -0,0 +1,10 @@
1#ifndef __UM_SEGMENT_H
2#define __UM_SEGMENT_H
3
4extern int host_gdt_entry_tls_min;
5
6#define GDT_ENTRY_TLS_ENTRIES 3
7#define GDT_ENTRY_TLS_MIN host_gdt_entry_tls_min
8#define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
9
10#endif
diff --git a/arch/um/include/asm/setup.h b/arch/um/include/asm/setup.h
new file mode 100644
index 000000000000..99f086301f4c
--- /dev/null
+++ b/arch/um/include/asm/setup.h
@@ -0,0 +1,10 @@
1#ifndef SETUP_H_INCLUDED
2#define SETUP_H_INCLUDED
3
4/* POSIX mandated with _POSIX_ARG_MAX that we can rely on 4096 chars in the
5 * command line, so this choice is ok.
6 */
7
8#define COMMAND_LINE_SIZE 4096
9
10#endif /* SETUP_H_INCLUDED */
diff --git a/arch/um/include/asm/smp.h b/arch/um/include/asm/smp.h
new file mode 100644
index 000000000000..f27a96313174
--- /dev/null
+++ b/arch/um/include/asm/smp.h
@@ -0,0 +1,33 @@
1#ifndef __UM_SMP_H
2#define __UM_SMP_H
3
4#ifdef CONFIG_SMP
5
6#include "linux/bitops.h"
7#include "asm/current.h"
8#include "linux/cpumask.h"
9
10#define raw_smp_processor_id() (current_thread->cpu)
11
12#define cpu_logical_map(n) (n)
13#define cpu_number_map(n) (n)
14#define PROC_CHANGE_PENALTY 15 /* Pick a number, any number */
15extern int hard_smp_processor_id(void);
16#define NO_PROC_ID -1
17
18extern int ncpus;
19
20
21static inline void smp_cpus_done(unsigned int maxcpus)
22{
23}
24
25extern struct task_struct *idle_threads[NR_CPUS];
26
27#else
28
29#define hard_smp_processor_id() 0
30
31#endif
32
33#endif
diff --git a/arch/um/include/asm/suspend.h b/arch/um/include/asm/suspend.h
new file mode 100644
index 000000000000..f4e8e007f468
--- /dev/null
+++ b/arch/um/include/asm/suspend.h
@@ -0,0 +1,4 @@
1#ifndef __UM_SUSPEND_H
2#define __UM_SUSPEND_H
3
4#endif
diff --git a/arch/um/include/asm/system.h b/arch/um/include/asm/system.h
new file mode 100644
index 000000000000..753346e2cdfd
--- /dev/null
+++ b/arch/um/include/asm/system.h
@@ -0,0 +1,35 @@
1#ifndef __UM_SYSTEM_GENERIC_H
2#define __UM_SYSTEM_GENERIC_H
3
4#include "sysdep/system.h"
5
6extern void *switch_to(void *prev, void *next, void *last);
7
8extern int get_signals(void);
9extern int set_signals(int enable);
10extern int get_signals(void);
11extern void block_signals(void);
12extern void unblock_signals(void);
13
14#define local_save_flags(flags) do { typecheck(unsigned long, flags); \
15 (flags) = get_signals(); } while(0)
16#define local_irq_restore(flags) do { typecheck(unsigned long, flags); \
17 set_signals(flags); } while(0)
18
19#define local_irq_save(flags) do { local_save_flags(flags); \
20 local_irq_disable(); } while(0)
21
22#define local_irq_enable() unblock_signals()
23#define local_irq_disable() block_signals()
24
25#define irqs_disabled() \
26({ \
27 unsigned long flags; \
28 local_save_flags(flags); \
29 (flags == 0); \
30})
31
32extern void *_switch_to(void *prev, void *next, void *last);
33#define switch_to(prev, next, last) prev = _switch_to(prev, next, last)
34
35#endif
diff --git a/arch/um/include/asm/thread_info.h b/arch/um/include/asm/thread_info.h
new file mode 100644
index 000000000000..62274ab9471f
--- /dev/null
+++ b/arch/um/include/asm/thread_info.h
@@ -0,0 +1,83 @@
1/*
2 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_THREAD_INFO_H
7#define __UM_THREAD_INFO_H
8
9#ifndef __ASSEMBLY__
10
11#include <asm/types.h>
12#include <asm/page.h>
13#include <asm/uaccess.h>
14
15struct thread_info {
16 struct task_struct *task; /* main task structure */
17 struct exec_domain *exec_domain; /* execution domain */
18 unsigned long flags; /* low level flags */
19 __u32 cpu; /* current CPU */
20 int preempt_count; /* 0 => preemptable,
21 <0 => BUG */
22 mm_segment_t addr_limit; /* thread address space:
23 0-0xBFFFFFFF for user
24 0-0xFFFFFFFF for kernel */
25 struct restart_block restart_block;
26 struct thread_info *real_thread; /* Points to non-IRQ stack */
27};
28
29#define INIT_THREAD_INFO(tsk) \
30{ \
31 .task = &tsk, \
32 .exec_domain = &default_exec_domain, \
33 .flags = 0, \
34 .cpu = 0, \
35 .preempt_count = 1, \
36 .addr_limit = KERNEL_DS, \
37 .restart_block = { \
38 .fn = do_no_restart_syscall, \
39 }, \
40 .real_thread = NULL, \
41}
42
43#define init_thread_info (init_thread_union.thread_info)
44#define init_stack (init_thread_union.stack)
45
46#define THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE)
47/* how to get the thread information struct from C */
48static inline struct thread_info *current_thread_info(void)
49{
50 struct thread_info *ti;
51 unsigned long mask = THREAD_SIZE - 1;
52 ti = (struct thread_info *) (((unsigned long) &ti) & ~mask);
53 return ti;
54}
55
56#define THREAD_SIZE_ORDER CONFIG_KERNEL_STACK_ORDER
57
58#endif
59
60#define PREEMPT_ACTIVE 0x10000000
61
62#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
63#define TIF_SIGPENDING 1 /* signal pending */
64#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
65#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling
66 * TIF_NEED_RESCHED
67 */
68#define TIF_RESTART_BLOCK 4
69#define TIF_MEMDIE 5
70#define TIF_SYSCALL_AUDIT 6
71#define TIF_RESTORE_SIGMASK 7
72#define TIF_FREEZE 16 /* is freezing for suspend */
73
74#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
75#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
76#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
77#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
78#define _TIF_MEMDIE (1 << TIF_MEMDIE)
79#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
80#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)
81#define _TIF_FREEZE (1 << TIF_FREEZE)
82
83#endif
diff --git a/arch/um/include/asm/timex.h b/arch/um/include/asm/timex.h
new file mode 100644
index 000000000000..0f4ada08f748
--- /dev/null
+++ b/arch/um/include/asm/timex.h
@@ -0,0 +1,13 @@
1#ifndef __UM_TIMEX_H
2#define __UM_TIMEX_H
3
4typedef unsigned long cycles_t;
5
6static inline cycles_t get_cycles (void)
7{
8 return 0;
9}
10
11#define CLOCK_TICK_RATE (HZ)
12
13#endif
diff --git a/arch/um/include/asm/tlb.h b/arch/um/include/asm/tlb.h
new file mode 100644
index 000000000000..5240fa1c5e08
--- /dev/null
+++ b/arch/um/include/asm/tlb.h
@@ -0,0 +1,127 @@
1#ifndef __UM_TLB_H
2#define __UM_TLB_H
3
4#include <linux/pagemap.h>
5#include <linux/swap.h>
6#include <asm/percpu.h>
7#include <asm/pgalloc.h>
8#include <asm/tlbflush.h>
9
10#define tlb_start_vma(tlb, vma) do { } while (0)
11#define tlb_end_vma(tlb, vma) do { } while (0)
12#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)
13
14/* struct mmu_gather is an opaque type used by the mm code for passing around
15 * any data needed by arch specific code for tlb_remove_page.
16 */
17struct mmu_gather {
18 struct mm_struct *mm;
19 unsigned int need_flush; /* Really unmapped some ptes? */
20 unsigned long start;
21 unsigned long end;
22 unsigned int fullmm; /* non-zero means full mm flush */
23};
24
25/* Users of the generic TLB shootdown code must declare this storage space. */
26DECLARE_PER_CPU(struct mmu_gather, mmu_gathers);
27
28static inline void __tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *ptep,
29 unsigned long address)
30{
31 if (tlb->start > address)
32 tlb->start = address;
33 if (tlb->end < address + PAGE_SIZE)
34 tlb->end = address + PAGE_SIZE;
35}
36
37static inline void init_tlb_gather(struct mmu_gather *tlb)
38{
39 tlb->need_flush = 0;
40
41 tlb->start = TASK_SIZE;
42 tlb->end = 0;
43
44 if (tlb->fullmm) {
45 tlb->start = 0;
46 tlb->end = TASK_SIZE;
47 }
48}
49
50/* tlb_gather_mmu
51 * Return a pointer to an initialized struct mmu_gather.
52 */
53static inline struct mmu_gather *
54tlb_gather_mmu(struct mm_struct *mm, unsigned int full_mm_flush)
55{
56 struct mmu_gather *tlb = &get_cpu_var(mmu_gathers);
57
58 tlb->mm = mm;
59 tlb->fullmm = full_mm_flush;
60
61 init_tlb_gather(tlb);
62
63 return tlb;
64}
65
66extern void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
67 unsigned long end);
68
69static inline void
70tlb_flush_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end)
71{
72 if (!tlb->need_flush)
73 return;
74
75 flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end);
76 init_tlb_gather(tlb);
77}
78
79/* tlb_finish_mmu
80 * Called at the end of the shootdown operation to free up any resources
81 * that were required.
82 */
83static inline void
84tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end)
85{
86 tlb_flush_mmu(tlb, start, end);
87
88 /* keep the page table cache within bounds */
89 check_pgt_cache();
90
91 put_cpu_var(mmu_gathers);
92}
93
94/* tlb_remove_page
95 * Must perform the equivalent to __free_pte(pte_get_and_clear(ptep)),
96 * while handling the additional races in SMP caused by other CPUs
97 * caching valid mappings in their TLBs.
98 */
99static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
100{
101 tlb->need_flush = 1;
102 free_page_and_swap_cache(page);
103 return;
104}
105
106/**
107 * tlb_remove_tlb_entry - remember a pte unmapping for later tlb invalidation.
108 *
109 * Record the fact that pte's were really umapped in ->need_flush, so we can
110 * later optimise away the tlb invalidate. This helps when userspace is
111 * unmapping already-unmapped pages, which happens quite a lot.
112 */
113#define tlb_remove_tlb_entry(tlb, ptep, address) \
114 do { \
115 tlb->need_flush = 1; \
116 __tlb_remove_tlb_entry(tlb, ptep, address); \
117 } while (0)
118
119#define pte_free_tlb(tlb, ptep) __pte_free_tlb(tlb, ptep)
120
121#define pud_free_tlb(tlb, pudp) __pud_free_tlb(tlb, pudp)
122
123#define pmd_free_tlb(tlb, pmdp) __pmd_free_tlb(tlb, pmdp)
124
125#define tlb_migrate_finish(mm) do {} while (0)
126
127#endif
diff --git a/arch/um/include/asm/tlbflush.h b/arch/um/include/asm/tlbflush.h
new file mode 100644
index 000000000000..614f2c091178
--- /dev/null
+++ b/arch/um/include/asm/tlbflush.h
@@ -0,0 +1,31 @@
1/*
2 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_TLBFLUSH_H
7#define __UM_TLBFLUSH_H
8
9#include <linux/mm.h>
10
11/*
12 * TLB flushing:
13 *
14 * - flush_tlb() flushes the current mm struct TLBs
15 * - flush_tlb_all() flushes all processes TLBs
16 * - flush_tlb_mm(mm) flushes the specified mm context TLB's
17 * - flush_tlb_page(vma, vmaddr) flushes one page
18 * - flush_tlb_kernel_vm() flushes the kernel vm area
19 * - flush_tlb_range(vma, start, end) flushes a range of pages
20 */
21
22extern void flush_tlb_all(void);
23extern void flush_tlb_mm(struct mm_struct *mm);
24extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
25 unsigned long end);
26extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long address);
27extern void flush_tlb_kernel_vm(void);
28extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
29extern void __flush_tlb_one(unsigned long addr);
30
31#endif
diff --git a/arch/um/include/asm/topology.h b/arch/um/include/asm/topology.h
new file mode 100644
index 000000000000..0905e4f21d42
--- /dev/null
+++ b/arch/um/include/asm/topology.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_UM_TOPOLOGY_H
2#define _ASM_UM_TOPOLOGY_H
3
4#include <asm-generic/topology.h>
5
6#endif
diff --git a/arch/um/include/asm/uaccess.h b/arch/um/include/asm/uaccess.h
new file mode 100644
index 000000000000..b9a895d6fa1d
--- /dev/null
+++ b/arch/um/include/asm/uaccess.h
@@ -0,0 +1,99 @@
1/*
2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_UACCESS_H
7#define __UM_UACCESS_H
8
9#include <asm/errno.h>
10#include <asm/processor.h>
11
12/* thread_info has a mm_segment_t in it, so put the definition up here */
13typedef struct {
14 unsigned long seg;
15} mm_segment_t;
16
17#include "linux/thread_info.h"
18
19#define VERIFY_READ 0
20#define VERIFY_WRITE 1
21
22/*
23 * The fs value determines whether argument validity checking should be
24 * performed or not. If get_fs() == USER_DS, checking is performed, with
25 * get_fs() == KERNEL_DS, checking is bypassed.
26 *
27 * For historical reasons, these macros are grossly misnamed.
28 */
29
30#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
31
32#define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFF)
33#define USER_DS MAKE_MM_SEG(TASK_SIZE)
34
35#define get_ds() (KERNEL_DS)
36#define get_fs() (current_thread_info()->addr_limit)
37#define set_fs(x) (current_thread_info()->addr_limit = (x))
38
39#define segment_eq(a, b) ((a).seg == (b).seg)
40
41#include "um_uaccess.h"
42
43#define __copy_from_user(to, from, n) copy_from_user(to, from, n)
44
45#define __copy_to_user(to, from, n) copy_to_user(to, from, n)
46
47#define __copy_to_user_inatomic __copy_to_user
48#define __copy_from_user_inatomic __copy_from_user
49
50#define __get_user(x, ptr) \
51({ \
52 const __typeof__(*(ptr)) __user *__private_ptr = (ptr); \
53 __typeof__(x) __private_val; \
54 int __private_ret = -EFAULT; \
55 (x) = (__typeof__(*(__private_ptr)))0; \
56 if (__copy_from_user((__force void *)&__private_val, (__private_ptr),\
57 sizeof(*(__private_ptr))) == 0) { \
58 (x) = (__typeof__(*(__private_ptr))) __private_val; \
59 __private_ret = 0; \
60 } \
61 __private_ret; \
62})
63
64#define get_user(x, ptr) \
65({ \
66 const __typeof__((*(ptr))) __user *private_ptr = (ptr); \
67 (access_ok(VERIFY_READ, private_ptr, sizeof(*private_ptr)) ? \
68 __get_user(x, private_ptr) : ((x) = (__typeof__(*ptr))0, -EFAULT)); \
69})
70
71#define __put_user(x, ptr) \
72({ \
73 __typeof__(*(ptr)) __user *__private_ptr = ptr; \
74 __typeof__(*(__private_ptr)) __private_val; \
75 int __private_ret = -EFAULT; \
76 __private_val = (__typeof__(*(__private_ptr))) (x); \
77 if (__copy_to_user((__private_ptr), &__private_val, \
78 sizeof(*(__private_ptr))) == 0) { \
79 __private_ret = 0; \
80 } \
81 __private_ret; \
82})
83
84#define put_user(x, ptr) \
85({ \
86 __typeof__(*(ptr)) __user *private_ptr = (ptr); \
87 (access_ok(VERIFY_WRITE, private_ptr, sizeof(*private_ptr)) ? \
88 __put_user(x, private_ptr) : -EFAULT); \
89})
90
91#define strlen_user(str) strnlen_user(str, ~0U >> 1)
92
93struct exception_table_entry
94{
95 unsigned long insn;
96 unsigned long fixup;
97};
98
99#endif
diff --git a/arch/um/include/asm/xor.h b/arch/um/include/asm/xor.h
new file mode 100644
index 000000000000..a19db3e17241
--- /dev/null
+++ b/arch/um/include/asm/xor.h
@@ -0,0 +1,6 @@
1#ifndef __UM_XOR_H
2#define __UM_XOR_H
3
4#include "asm-generic/xor.h"
5
6#endif
diff --git a/arch/um/include/aio.h b/arch/um/include/shared/aio.h
index 423bae9153f8..423bae9153f8 100644
--- a/arch/um/include/aio.h
+++ b/arch/um/include/shared/aio.h
diff --git a/arch/um/include/arch.h b/arch/um/include/shared/arch.h
index 2de92a08a76b..2de92a08a76b 100644
--- a/arch/um/include/arch.h
+++ b/arch/um/include/shared/arch.h
diff --git a/arch/um/include/as-layout.h b/arch/um/include/shared/as-layout.h
index 58e852dfb0ce..a92b678503cf 100644
--- a/arch/um/include/as-layout.h
+++ b/arch/um/include/shared/as-layout.h
@@ -6,7 +6,6 @@
6#ifndef __START_H__ 6#ifndef __START_H__
7#define __START_H__ 7#define __START_H__
8 8
9#include "uml-config.h"
10#include "kern_constants.h" 9#include "kern_constants.h"
11 10
12/* 11/*
diff --git a/arch/um/include/chan_kern.h b/arch/um/include/shared/chan_kern.h
index 1e651457e049..1e651457e049 100644
--- a/arch/um/include/chan_kern.h
+++ b/arch/um/include/shared/chan_kern.h
diff --git a/arch/um/include/chan_user.h b/arch/um/include/shared/chan_user.h
index 9b9ced85b703..9b9ced85b703 100644
--- a/arch/um/include/chan_user.h
+++ b/arch/um/include/shared/chan_user.h
diff --git a/arch/um/include/common-offsets.h b/arch/um/include/shared/common-offsets.h
index b54bd35585c2..72009c7e3210 100644
--- a/arch/um/include/common-offsets.h
+++ b/arch/um/include/shared/common-offsets.h
@@ -39,3 +39,16 @@ DEFINE(UM_HZ, HZ);
39DEFINE(UM_USEC_PER_SEC, USEC_PER_SEC); 39DEFINE(UM_USEC_PER_SEC, USEC_PER_SEC);
40DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC); 40DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC);
41DEFINE(UM_NSEC_PER_USEC, NSEC_PER_USEC); 41DEFINE(UM_NSEC_PER_USEC, NSEC_PER_USEC);
42
43#ifdef CONFIG_PRINTK
44DEFINE(UML_CONFIG_PRINTK, CONFIG_PRINTK);
45#endif
46#ifdef CONFIG_NO_HZ
47DEFINE(UML_CONFIG_NO_HZ, CONFIG_NO_HZ);
48#endif
49#ifdef CONFIG_UML_X86
50DEFINE(UML_CONFIG_UML_X86, CONFIG_UML_X86);
51#endif
52#ifdef CONFIG_64BIT
53DEFINE(UML_CONFIG_64BIT, CONFIG_64BIT);
54#endif
diff --git a/arch/um/include/elf_user.h b/arch/um/include/shared/elf_user.h
index 53516b637272..53516b637272 100644
--- a/arch/um/include/elf_user.h
+++ b/arch/um/include/shared/elf_user.h
diff --git a/arch/um/include/frame_kern.h b/arch/um/include/shared/frame_kern.h
index ce9514f57211..ce9514f57211 100644
--- a/arch/um/include/frame_kern.h
+++ b/arch/um/include/shared/frame_kern.h
diff --git a/arch/um/include/init.h b/arch/um/include/shared/init.h
index 37dd097c16c0..37dd097c16c0 100644
--- a/arch/um/include/init.h
+++ b/arch/um/include/shared/init.h
diff --git a/arch/um/include/initrd.h b/arch/um/include/shared/initrd.h
index 439b9a814985..439b9a814985 100644
--- a/arch/um/include/initrd.h
+++ b/arch/um/include/shared/initrd.h
diff --git a/arch/um/include/irq_kern.h b/arch/um/include/shared/irq_kern.h
index fba3895274f9..fba3895274f9 100644
--- a/arch/um/include/irq_kern.h
+++ b/arch/um/include/shared/irq_kern.h
diff --git a/arch/um/include/irq_user.h b/arch/um/include/shared/irq_user.h
index c6c784df2673..c6c784df2673 100644
--- a/arch/um/include/irq_user.h
+++ b/arch/um/include/shared/irq_user.h
diff --git a/arch/um/include/kern.h b/arch/um/include/shared/kern.h
index 4ce3fc650e57..4ce3fc650e57 100644
--- a/arch/um/include/kern.h
+++ b/arch/um/include/shared/kern.h
diff --git a/arch/um/include/kern_util.h b/arch/um/include/shared/kern_util.h
index 3c341222d252..3c341222d252 100644
--- a/arch/um/include/kern_util.h
+++ b/arch/um/include/shared/kern_util.h
diff --git a/arch/um/include/shared/ldt.h b/arch/um/include/shared/ldt.h
new file mode 100644
index 000000000000..a7f999a58774
--- /dev/null
+++ b/arch/um/include/shared/ldt.h
@@ -0,0 +1,37 @@
1/*
2 * Copyright (C) 2004 Fujitsu Siemens Computers GmbH
3 * Licensed under the GPL
4 *
5 * Author: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
6 */
7
8#ifndef __ASM_LDT_H
9#define __ASM_LDT_H
10
11#include <linux/mutex.h>
12#include <sysdep/host_ldt.h>
13
14extern void ldt_host_info(void);
15
16#define LDT_PAGES_MAX \
17 ((LDT_ENTRIES * LDT_ENTRY_SIZE)/PAGE_SIZE)
18#define LDT_ENTRIES_PER_PAGE \
19 (PAGE_SIZE/LDT_ENTRY_SIZE)
20#define LDT_DIRECT_ENTRIES \
21 ((LDT_PAGES_MAX*sizeof(void *))/LDT_ENTRY_SIZE)
22
23struct ldt_entry {
24 __u32 a;
25 __u32 b;
26};
27
28typedef struct uml_ldt {
29 int entry_count;
30 struct mutex lock;
31 union {
32 struct ldt_entry * pages[LDT_PAGES_MAX];
33 struct ldt_entry entries[LDT_DIRECT_ENTRIES];
34 } u;
35} uml_ldt_t;
36
37#endif
diff --git a/arch/um/include/line.h b/arch/um/include/shared/line.h
index 311a0d3d93af..311a0d3d93af 100644
--- a/arch/um/include/line.h
+++ b/arch/um/include/shared/line.h
diff --git a/arch/um/include/longjmp.h b/arch/um/include/shared/longjmp.h
index e860bc5848e0..e860bc5848e0 100644
--- a/arch/um/include/longjmp.h
+++ b/arch/um/include/shared/longjmp.h
diff --git a/arch/um/include/mconsole.h b/arch/um/include/shared/mconsole.h
index c139ae1d6826..c139ae1d6826 100644
--- a/arch/um/include/mconsole.h
+++ b/arch/um/include/shared/mconsole.h
diff --git a/arch/um/include/mconsole_kern.h b/arch/um/include/shared/mconsole_kern.h
index d2fe07e78958..d2fe07e78958 100644
--- a/arch/um/include/mconsole_kern.h
+++ b/arch/um/include/shared/mconsole_kern.h
diff --git a/arch/um/include/mem.h b/arch/um/include/shared/mem.h
index 5cd40e99e8d5..5cd40e99e8d5 100644
--- a/arch/um/include/mem.h
+++ b/arch/um/include/shared/mem.h
diff --git a/arch/um/include/mem_kern.h b/arch/um/include/shared/mem_kern.h
index cb7e196d366b..cb7e196d366b 100644
--- a/arch/um/include/mem_kern.h
+++ b/arch/um/include/shared/mem_kern.h
diff --git a/arch/um/include/mem_user.h b/arch/um/include/shared/mem_user.h
index 46384acd547b..46384acd547b 100644
--- a/arch/um/include/mem_user.h
+++ b/arch/um/include/shared/mem_user.h
diff --git a/arch/um/include/net_kern.h b/arch/um/include/shared/net_kern.h
index d843c7924a7c..d843c7924a7c 100644
--- a/arch/um/include/net_kern.h
+++ b/arch/um/include/shared/net_kern.h
diff --git a/arch/um/include/net_user.h b/arch/um/include/shared/net_user.h
index 63bee158cd8e..63bee158cd8e 100644
--- a/arch/um/include/net_user.h
+++ b/arch/um/include/shared/net_user.h
diff --git a/arch/um/include/os.h b/arch/um/include/shared/os.h
index db5be46e3e18..cd40fddcf99d 100644
--- a/arch/um/include/os.h
+++ b/arch/um/include/shared/os.h
@@ -11,7 +11,6 @@
11#include "longjmp.h" 11#include "longjmp.h"
12#include "mm_id.h" 12#include "mm_id.h"
13#include "sysdep/tls.h" 13#include "sysdep/tls.h"
14#include "../os/include/file.h"
15 14
16#define CATCH_EINTR(expr) while ((errno = 0, ((expr) < 0)) && (errno == EINTR)) 15#define CATCH_EINTR(expr) while ((errno = 0, ((expr) < 0)) && (errno == EINTR))
17 16
diff --git a/arch/um/include/process.h b/arch/um/include/shared/process.h
index bb873a51262e..bb873a51262e 100644
--- a/arch/um/include/process.h
+++ b/arch/um/include/shared/process.h
diff --git a/arch/um/include/ptrace_user.h b/arch/um/include/shared/ptrace_user.h
index 4bce6e012889..4bce6e012889 100644
--- a/arch/um/include/ptrace_user.h
+++ b/arch/um/include/shared/ptrace_user.h
diff --git a/arch/um/include/registers.h b/arch/um/include/shared/registers.h
index b0b4589e0ebc..b0b4589e0ebc 100644
--- a/arch/um/include/registers.h
+++ b/arch/um/include/shared/registers.h
diff --git a/arch/um/include/sigio.h b/arch/um/include/shared/sigio.h
index 434f1a9ae4b3..434f1a9ae4b3 100644
--- a/arch/um/include/sigio.h
+++ b/arch/um/include/shared/sigio.h
diff --git a/arch/um/include/skas/mm_id.h b/arch/um/include/shared/skas/mm_id.h
index 48dd0989ddaa..48dd0989ddaa 100644
--- a/arch/um/include/skas/mm_id.h
+++ b/arch/um/include/shared/skas/mm_id.h
diff --git a/arch/um/include/skas/proc_mm.h b/arch/um/include/shared/skas/proc_mm.h
index 902809209603..902809209603 100644
--- a/arch/um/include/skas/proc_mm.h
+++ b/arch/um/include/shared/skas/proc_mm.h
diff --git a/arch/um/include/skas/skas.h b/arch/um/include/shared/skas/skas.h
index 64d2c7443306..64d2c7443306 100644
--- a/arch/um/include/skas/skas.h
+++ b/arch/um/include/shared/skas/skas.h
diff --git a/arch/um/include/skas/stub-data.h b/arch/um/include/shared/skas/stub-data.h
index f6ed92c3727d..f6ed92c3727d 100644
--- a/arch/um/include/skas/stub-data.h
+++ b/arch/um/include/shared/skas/stub-data.h
diff --git a/arch/um/include/skas_ptrace.h b/arch/um/include/shared/skas_ptrace.h
index 3d31bbacd016..3d31bbacd016 100644
--- a/arch/um/include/skas_ptrace.h
+++ b/arch/um/include/shared/skas_ptrace.h
diff --git a/arch/um/include/skas_ptregs.h b/arch/um/include/shared/skas_ptregs.h
index 73db19e9c077..73db19e9c077 100644
--- a/arch/um/include/skas_ptregs.h
+++ b/arch/um/include/shared/skas_ptregs.h
diff --git a/arch/um/include/syscall.h b/arch/um/include/shared/syscall.h
index dda1df901a08..dda1df901a08 100644
--- a/arch/um/include/syscall.h
+++ b/arch/um/include/shared/syscall.h
diff --git a/arch/um/include/sysrq.h b/arch/um/include/shared/sysrq.h
index c8d332b56b98..c8d332b56b98 100644
--- a/arch/um/include/sysrq.h
+++ b/arch/um/include/shared/sysrq.h
diff --git a/arch/um/include/task.h b/arch/um/include/shared/task.h
index 3fe726b3cf48..3fe726b3cf48 100644
--- a/arch/um/include/task.h
+++ b/arch/um/include/shared/task.h
diff --git a/arch/um/include/tlb.h b/arch/um/include/shared/tlb.h
index ecd2265b301b..ecd2265b301b 100644
--- a/arch/um/include/tlb.h
+++ b/arch/um/include/shared/tlb.h
diff --git a/arch/um/include/ubd_user.h b/arch/um/include/shared/ubd_user.h
index bb66517f0739..bb66517f0739 100644
--- a/arch/um/include/ubd_user.h
+++ b/arch/um/include/shared/ubd_user.h
diff --git a/arch/um/include/um_malloc.h b/arch/um/include/shared/um_malloc.h
index c554d706d106..c554d706d106 100644
--- a/arch/um/include/um_malloc.h
+++ b/arch/um/include/shared/um_malloc.h
diff --git a/arch/um/include/um_mmu.h b/arch/um/include/shared/um_mmu.h
index f575ff91f2a0..b1a7e47d1027 100644
--- a/arch/um/include/um_mmu.h
+++ b/arch/um/include/shared/um_mmu.h
@@ -6,9 +6,8 @@
6#ifndef __ARCH_UM_MMU_H 6#ifndef __ARCH_UM_MMU_H
7#define __ARCH_UM_MMU_H 7#define __ARCH_UM_MMU_H
8 8
9#include "uml-config.h"
10#include "mm_id.h" 9#include "mm_id.h"
11#include "asm/ldt.h" 10#include "ldt.h"
12 11
13typedef struct mm_context { 12typedef struct mm_context {
14 struct mm_id id; 13 struct mm_id id;
diff --git a/arch/um/include/um_uaccess.h b/arch/um/include/shared/um_uaccess.h
index 45c04999d670..45c04999d670 100644
--- a/arch/um/include/um_uaccess.h
+++ b/arch/um/include/shared/um_uaccess.h
diff --git a/arch/um/include/user.h b/arch/um/include/shared/user.h
index 1723fac6f40d..293f7c794faa 100644
--- a/arch/um/include/user.h
+++ b/arch/um/include/shared/user.h
@@ -6,7 +6,7 @@
6#ifndef __USER_H__ 6#ifndef __USER_H__
7#define __USER_H__ 7#define __USER_H__
8 8
9#include "uml-config.h" 9#include "kern_constants.h"
10 10
11/* 11/*
12 * The usual definition - copied here because the kernel provides its own, 12 * The usual definition - copied here because the kernel provides its own,
diff --git a/arch/um/include/sigcontext.h b/arch/um/include/sigcontext.h
deleted file mode 100644
index 59816ca7a8df..000000000000
--- a/arch/um/include/sigcontext.h
+++ /dev/null
@@ -1,25 +0,0 @@
1/*
2 * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UML_SIGCONTEXT_H__
7#define __UML_SIGCONTEXT_H__
8
9#include "sysdep/sigcontext.h"
10
11extern int sc_size(void *data);
12extern void sc_to_sc(void *to_ptr, void *from_ptr);
13
14#endif
15
16/*
17 * Overrides for Emacs so that we follow Linus's tabbing style.
18 * Emacs will notice this stuff at the end of the file and automatically
19 * adjust the settings for this buffer only. This must remain at the end
20 * of the file.
21 * ---------------------------------------------------------------------------
22 * Local variables:
23 * c-file-style: "linux"
24 * End:
25 */
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c
index 598711c62c82..fda30d21fb90 100644
--- a/arch/um/kernel/exec.c
+++ b/arch/um/kernel/exec.c
@@ -15,6 +15,7 @@
15#include "mem_user.h" 15#include "mem_user.h"
16#include "skas.h" 16#include "skas.h"
17#include "os.h" 17#include "os.h"
18#include "internal.h"
18 19
19void flush_thread(void) 20void flush_thread(void)
20{ 21{
diff --git a/arch/um/kernel/internal.h b/arch/um/kernel/internal.h
new file mode 100644
index 000000000000..3bda43c7a786
--- /dev/null
+++ b/arch/um/kernel/internal.h
@@ -0,0 +1 @@
extern long um_execve(char *file, char __user *__user *argv, char __user *__user *env);
diff --git a/arch/um/kernel/signal.c b/arch/um/kernel/signal.c
index b0fce720c4d0..b5c094c4ade4 100644
--- a/arch/um/kernel/signal.c
+++ b/arch/um/kernel/signal.c
@@ -11,7 +11,7 @@
11#include <asm/unistd.h> 11#include <asm/unistd.h>
12#include "frame_kern.h" 12#include "frame_kern.h"
13#include "kern_util.h" 13#include "kern_util.h"
14#include "sigcontext.h" 14#include <sysdep/sigcontext.h>
15 15
16EXPORT_SYMBOL(block_signals); 16EXPORT_SYMBOL(block_signals);
17EXPORT_SYMBOL(unblock_signals); 17EXPORT_SYMBOL(unblock_signals);
diff --git a/arch/um/kernel/syscall.c b/arch/um/kernel/syscall.c
index 128ee85bc8d9..c4df705b8359 100644
--- a/arch/um/kernel/syscall.c
+++ b/arch/um/kernel/syscall.c
@@ -12,6 +12,7 @@
12#include "asm/mman.h" 12#include "asm/mman.h"
13#include "asm/uaccess.h" 13#include "asm/uaccess.h"
14#include "asm/unistd.h" 14#include "asm/unistd.h"
15#include "internal.h"
15 16
16long sys_fork(void) 17long sys_fork(void)
17{ 18{
diff --git a/arch/um/os-Linux/include/file.h b/arch/um/os-Linux/include/file.h
deleted file mode 100644
index fe71be24bd59..000000000000
--- a/arch/um/os-Linux/include/file.h
+++ /dev/null
@@ -1,11 +0,0 @@
1/*
2 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __OS_FILE_H__
7#define __OS_FILE_H__
8
9#define DEV_NULL "/dev/null"
10
11#endif
diff --git a/arch/um/os-Linux/skas/mem.c b/arch/um/os-Linux/skas/mem.c
index 484e68f9f7ae..d261f170d120 100644
--- a/arch/um/os-Linux/skas/mem.c
+++ b/arch/um/os-Linux/skas/mem.c
@@ -20,7 +20,6 @@
20#include "user.h" 20#include "user.h"
21#include "sysdep/ptrace.h" 21#include "sysdep/ptrace.h"
22#include "sysdep/stub.h" 22#include "sysdep/stub.h"
23#include "uml-config.h"
24 23
25extern unsigned long batch_syscall_stub, __syscall_stub_start; 24extern unsigned long batch_syscall_stub, __syscall_stub_start;
26 25
diff --git a/arch/um/sys-i386/asm/archparam.h b/arch/um/sys-i386/asm/archparam.h
new file mode 100644
index 000000000000..93fd723344e5
--- /dev/null
+++ b/arch/um/sys-i386/asm/archparam.h
@@ -0,0 +1,26 @@
1/*
2 * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_ARCHPARAM_I386_H
7#define __UM_ARCHPARAM_I386_H
8
9#ifdef CONFIG_X86_PAE
10#define LAST_PKMAP 512
11#else
12#define LAST_PKMAP 1024
13#endif
14
15#endif
16
17/*
18 * Overrides for Emacs so that we follow Linus's tabbing style.
19 * Emacs will notice this stuff at the end of the file and automatically
20 * adjust the settings for this buffer only. This must remain at the end
21 * of the file.
22 * ---------------------------------------------------------------------------
23 * Local variables:
24 * c-file-style: "linux"
25 * End:
26 */
diff --git a/arch/um/sys-i386/asm/elf.h b/arch/um/sys-i386/asm/elf.h
new file mode 100644
index 000000000000..d0da9d7c5371
--- /dev/null
+++ b/arch/um/sys-i386/asm/elf.h
@@ -0,0 +1,163 @@
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5#ifndef __UM_ELF_I386_H
6#define __UM_ELF_I386_H
7
8#include <asm/user.h>
9#include "skas.h"
10
11#define R_386_NONE 0
12#define R_386_32 1
13#define R_386_PC32 2
14#define R_386_GOT32 3
15#define R_386_PLT32 4
16#define R_386_COPY 5
17#define R_386_GLOB_DAT 6
18#define R_386_JMP_SLOT 7
19#define R_386_RELATIVE 8
20#define R_386_GOTOFF 9
21#define R_386_GOTPC 10
22#define R_386_NUM 11
23
24typedef unsigned long elf_greg_t;
25
26#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
27typedef elf_greg_t elf_gregset_t[ELF_NGREG];
28
29typedef struct user_i387_struct elf_fpregset_t;
30
31/*
32 * This is used to ensure we don't load something for the wrong architecture.
33 */
34#define elf_check_arch(x) \
35 (((x)->e_machine == EM_386) || ((x)->e_machine == EM_486))
36
37#define ELF_CLASS ELFCLASS32
38#define ELF_DATA ELFDATA2LSB
39#define ELF_ARCH EM_386
40
41#define ELF_PLAT_INIT(regs, load_addr) do { \
42 PT_REGS_EBX(regs) = 0; \
43 PT_REGS_ECX(regs) = 0; \
44 PT_REGS_EDX(regs) = 0; \
45 PT_REGS_ESI(regs) = 0; \
46 PT_REGS_EDI(regs) = 0; \
47 PT_REGS_EBP(regs) = 0; \
48 PT_REGS_EAX(regs) = 0; \
49} while (0)
50
51#define USE_ELF_CORE_DUMP
52#define ELF_EXEC_PAGESIZE 4096
53
54#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
55
56/* Shamelessly stolen from include/asm-i386/elf.h */
57
58#define ELF_CORE_COPY_REGS(pr_reg, regs) do { \
59 pr_reg[0] = PT_REGS_EBX(regs); \
60 pr_reg[1] = PT_REGS_ECX(regs); \
61 pr_reg[2] = PT_REGS_EDX(regs); \
62 pr_reg[3] = PT_REGS_ESI(regs); \
63 pr_reg[4] = PT_REGS_EDI(regs); \
64 pr_reg[5] = PT_REGS_EBP(regs); \
65 pr_reg[6] = PT_REGS_EAX(regs); \
66 pr_reg[7] = PT_REGS_DS(regs); \
67 pr_reg[8] = PT_REGS_ES(regs); \
68 /* fake once used fs and gs selectors? */ \
69 pr_reg[9] = PT_REGS_DS(regs); \
70 pr_reg[10] = PT_REGS_DS(regs); \
71 pr_reg[11] = PT_REGS_SYSCALL_NR(regs); \
72 pr_reg[12] = PT_REGS_IP(regs); \
73 pr_reg[13] = PT_REGS_CS(regs); \
74 pr_reg[14] = PT_REGS_EFLAGS(regs); \
75 pr_reg[15] = PT_REGS_SP(regs); \
76 pr_reg[16] = PT_REGS_SS(regs); \
77} while (0);
78
79extern int elf_core_copy_fpregs(struct task_struct *t, elf_fpregset_t *fpu);
80
81#define ELF_CORE_COPY_FPREGS(t, fpu) elf_core_copy_fpregs(t, fpu)
82
83extern long elf_aux_hwcap;
84#define ELF_HWCAP (elf_aux_hwcap)
85
86extern char * elf_aux_platform;
87#define ELF_PLATFORM (elf_aux_platform)
88
89#define SET_PERSONALITY(ex) do { } while (0)
90
91extern unsigned long vsyscall_ehdr;
92extern unsigned long vsyscall_end;
93extern unsigned long __kernel_vsyscall;
94
95#define VSYSCALL_BASE vsyscall_ehdr
96#define VSYSCALL_END vsyscall_end
97
98/*
99 * This is the range that is readable by user mode, and things
100 * acting like user mode such as get_user_pages.
101 */
102#define FIXADDR_USER_START VSYSCALL_BASE
103#define FIXADDR_USER_END VSYSCALL_END
104
105/*
106 * Architecture-neutral AT_ values in 0-17, leave some room
107 * for more of them, start the x86-specific ones at 32.
108 */
109#define AT_SYSINFO 32
110#define AT_SYSINFO_EHDR 33
111
112#define ARCH_DLINFO \
113do { \
114 if ( vsyscall_ehdr ) { \
115 NEW_AUX_ENT(AT_SYSINFO, __kernel_vsyscall); \
116 NEW_AUX_ENT(AT_SYSINFO_EHDR, vsyscall_ehdr); \
117 } \
118} while (0)
119
120/*
121 * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
122 * extra segments containing the vsyscall DSO contents. Dumping its
123 * contents makes post-mortem fully interpretable later without matching up
124 * the same kernel and hardware config to see what PC values meant.
125 * Dumping its extra ELF program headers includes all the other information
126 * a debugger needs to easily find how the vsyscall DSO was being used.
127 */
128#define ELF_CORE_EXTRA_PHDRS \
129 (vsyscall_ehdr ? (((struct elfhdr *)vsyscall_ehdr)->e_phnum) : 0 )
130
131#define ELF_CORE_WRITE_EXTRA_PHDRS \
132if ( vsyscall_ehdr ) { \
133 const struct elfhdr *const ehdrp = (struct elfhdr *)vsyscall_ehdr; \
134 const struct elf_phdr *const phdrp = \
135 (const struct elf_phdr *) (vsyscall_ehdr + ehdrp->e_phoff); \
136 int i; \
137 Elf32_Off ofs = 0; \
138 for (i = 0; i < ehdrp->e_phnum; ++i) { \
139 struct elf_phdr phdr = phdrp[i]; \
140 if (phdr.p_type == PT_LOAD) { \
141 ofs = phdr.p_offset = offset; \
142 offset += phdr.p_filesz; \
143 } \
144 else \
145 phdr.p_offset += ofs; \
146 phdr.p_paddr = 0; /* match other core phdrs */ \
147 DUMP_WRITE(&phdr, sizeof(phdr)); \
148 } \
149}
150#define ELF_CORE_WRITE_EXTRA_DATA \
151if ( vsyscall_ehdr ) { \
152 const struct elfhdr *const ehdrp = (struct elfhdr *)vsyscall_ehdr; \
153 const struct elf_phdr *const phdrp = \
154 (const struct elf_phdr *) (vsyscall_ehdr + ehdrp->e_phoff); \
155 int i; \
156 for (i = 0; i < ehdrp->e_phnum; ++i) { \
157 if (phdrp[i].p_type == PT_LOAD) \
158 DUMP_WRITE((void *) phdrp[i].p_vaddr, \
159 phdrp[i].p_filesz); \
160 } \
161}
162
163#endif
diff --git a/arch/um/sys-i386/asm/module.h b/arch/um/sys-i386/asm/module.h
new file mode 100644
index 000000000000..5ead4a0b2e35
--- /dev/null
+++ b/arch/um/sys-i386/asm/module.h
@@ -0,0 +1,13 @@
1#ifndef __UM_MODULE_I386_H
2#define __UM_MODULE_I386_H
3
4/* UML is simple */
5struct mod_arch_specific
6{
7};
8
9#define Elf_Shdr Elf32_Shdr
10#define Elf_Sym Elf32_Sym
11#define Elf_Ehdr Elf32_Ehdr
12
13#endif
diff --git a/arch/um/sys-i386/asm/processor.h b/arch/um/sys-i386/asm/processor.h
new file mode 100644
index 000000000000..82a9061ab5be
--- /dev/null
+++ b/arch/um/sys-i386/asm/processor.h
@@ -0,0 +1,78 @@
1/*
2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_PROCESSOR_I386_H
7#define __UM_PROCESSOR_I386_H
8
9#include "linux/string.h"
10#include <sysdep/host_ldt.h>
11#include "asm/segment.h"
12
13extern int host_has_cmov;
14
15/* include faultinfo structure */
16#include "sysdep/faultinfo.h"
17
18struct uml_tls_struct {
19 struct user_desc tls;
20 unsigned flushed:1;
21 unsigned present:1;
22};
23
24struct arch_thread {
25 struct uml_tls_struct tls_array[GDT_ENTRY_TLS_ENTRIES];
26 unsigned long debugregs[8];
27 int debugregs_seq;
28 struct faultinfo faultinfo;
29};
30
31#define INIT_ARCH_THREAD { \
32 .tls_array = { [ 0 ... GDT_ENTRY_TLS_ENTRIES - 1 ] = \
33 { .present = 0, .flushed = 0 } }, \
34 .debugregs = { [ 0 ... 7 ] = 0 }, \
35 .debugregs_seq = 0, \
36 .faultinfo = { 0, 0, 0 } \
37}
38
39static inline void arch_flush_thread(struct arch_thread *thread)
40{
41 /* Clear any TLS still hanging */
42 memset(&thread->tls_array, 0, sizeof(thread->tls_array));
43}
44
45static inline void arch_copy_thread(struct arch_thread *from,
46 struct arch_thread *to)
47{
48 memcpy(&to->tls_array, &from->tls_array, sizeof(from->tls_array));
49}
50
51#include <asm/user.h>
52
53/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
54static inline void rep_nop(void)
55{
56 __asm__ __volatile__("rep;nop": : :"memory");
57}
58
59#define cpu_relax() rep_nop()
60
61/*
62 * Default implementation of macro that returns current
63 * instruction pointer ("program counter"). Stolen
64 * from asm-i386/processor.h
65 */
66#define current_text_addr() \
67 ({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; })
68
69#define ARCH_IS_STACKGROW(address) \
70 (address + 32 >= UPT_SP(&current->thread.regs.regs))
71
72#define KSTK_EIP(tsk) KSTK_REG(tsk, EIP)
73#define KSTK_ESP(tsk) KSTK_REG(tsk, UESP)
74#define KSTK_EBP(tsk) KSTK_REG(tsk, EBP)
75
76#include "asm/processor-generic.h"
77
78#endif
diff --git a/arch/um/sys-i386/asm/ptrace.h b/arch/um/sys-i386/asm/ptrace.h
new file mode 100644
index 000000000000..0273e4d09af7
--- /dev/null
+++ b/arch/um/sys-i386/asm/ptrace.h
@@ -0,0 +1,56 @@
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UM_PTRACE_I386_H
7#define __UM_PTRACE_I386_H
8
9#define HOST_AUDIT_ARCH AUDIT_ARCH_I386
10
11#include "linux/compiler.h"
12#include "asm/ptrace-generic.h"
13
14#define PT_REGS_EAX(r) UPT_EAX(&(r)->regs)
15#define PT_REGS_EBX(r) UPT_EBX(&(r)->regs)
16#define PT_REGS_ECX(r) UPT_ECX(&(r)->regs)
17#define PT_REGS_EDX(r) UPT_EDX(&(r)->regs)
18#define PT_REGS_ESI(r) UPT_ESI(&(r)->regs)
19#define PT_REGS_EDI(r) UPT_EDI(&(r)->regs)
20#define PT_REGS_EBP(r) UPT_EBP(&(r)->regs)
21
22#define PT_REGS_CS(r) UPT_CS(&(r)->regs)
23#define PT_REGS_SS(r) UPT_SS(&(r)->regs)
24#define PT_REGS_DS(r) UPT_DS(&(r)->regs)
25#define PT_REGS_ES(r) UPT_ES(&(r)->regs)
26#define PT_REGS_FS(r) UPT_FS(&(r)->regs)
27#define PT_REGS_GS(r) UPT_GS(&(r)->regs)
28
29#define PT_REGS_EFLAGS(r) UPT_EFLAGS(&(r)->regs)
30
31#define PT_REGS_ORIG_SYSCALL(r) PT_REGS_EAX(r)
32#define PT_REGS_SYSCALL_RET(r) PT_REGS_EAX(r)
33#define PT_FIX_EXEC_STACK(sp) do ; while(0)
34
35#define profile_pc(regs) PT_REGS_IP(regs)
36
37#define user_mode(r) UPT_IS_USER(&(r)->regs)
38
39/*
40 * Forward declaration to avoid including sysdep/tls.h, which causes a
41 * circular include, and compilation failures.
42 */
43struct user_desc;
44
45extern int get_fpxregs(struct user_fxsr_struct __user *buf,
46 struct task_struct *child);
47extern int set_fpxregs(struct user_fxsr_struct __user *buf,
48 struct task_struct *tsk);
49
50extern int ptrace_get_thread_area(struct task_struct *child, int idx,
51 struct user_desc __user *user_desc);
52
53extern int ptrace_set_thread_area(struct task_struct *child, int idx,
54 struct user_desc __user *user_desc);
55
56#endif
diff --git a/arch/um/include/sysdep-i386/archsetjmp.h b/arch/um/sys-i386/shared/sysdep/archsetjmp.h
index 0f312085ce1d..0f312085ce1d 100644
--- a/arch/um/include/sysdep-i386/archsetjmp.h
+++ b/arch/um/sys-i386/shared/sysdep/archsetjmp.h
diff --git a/arch/um/include/sysdep-i386/barrier.h b/arch/um/sys-i386/shared/sysdep/barrier.h
index b58d52c5b2f4..b58d52c5b2f4 100644
--- a/arch/um/include/sysdep-i386/barrier.h
+++ b/arch/um/sys-i386/shared/sysdep/barrier.h
diff --git a/arch/um/include/sysdep-i386/checksum.h b/arch/um/sys-i386/shared/sysdep/checksum.h
index 0cb4645cbeb8..0cb4645cbeb8 100644
--- a/arch/um/include/sysdep-i386/checksum.h
+++ b/arch/um/sys-i386/shared/sysdep/checksum.h
diff --git a/arch/um/include/sysdep-i386/faultinfo.h b/arch/um/sys-i386/shared/sysdep/faultinfo.h
index db437cc373bc..db437cc373bc 100644
--- a/arch/um/include/sysdep-i386/faultinfo.h
+++ b/arch/um/sys-i386/shared/sysdep/faultinfo.h
diff --git a/arch/um/sys-i386/shared/sysdep/host_ldt.h b/arch/um/sys-i386/shared/sysdep/host_ldt.h
new file mode 100644
index 000000000000..0953cc4df652
--- /dev/null
+++ b/arch/um/sys-i386/shared/sysdep/host_ldt.h
@@ -0,0 +1,34 @@
1#ifndef __ASM_HOST_LDT_I386_H
2#define __ASM_HOST_LDT_I386_H
3
4#include <asm/ldt.h>
5
6/*
7 * macros stolen from include/asm-i386/desc.h
8 */
9#define LDT_entry_a(info) \
10 ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff))
11
12#define LDT_entry_b(info) \
13 (((info)->base_addr & 0xff000000) | \
14 (((info)->base_addr & 0x00ff0000) >> 16) | \
15 ((info)->limit & 0xf0000) | \
16 (((info)->read_exec_only ^ 1) << 9) | \
17 ((info)->contents << 10) | \
18 (((info)->seg_not_present ^ 1) << 15) | \
19 ((info)->seg_32bit << 22) | \
20 ((info)->limit_in_pages << 23) | \
21 ((info)->useable << 20) | \
22 0x7000)
23
24#define LDT_empty(info) (\
25 (info)->base_addr == 0 && \
26 (info)->limit == 0 && \
27 (info)->contents == 0 && \
28 (info)->read_exec_only == 1 && \
29 (info)->seg_32bit == 0 && \
30 (info)->limit_in_pages == 0 && \
31 (info)->seg_not_present == 1 && \
32 (info)->useable == 0 )
33
34#endif
diff --git a/arch/um/include/sysdep-i386/kernel-offsets.h b/arch/um/sys-i386/shared/sysdep/kernel-offsets.h
index 5868526b5eef..5868526b5eef 100644
--- a/arch/um/include/sysdep-i386/kernel-offsets.h
+++ b/arch/um/sys-i386/shared/sysdep/kernel-offsets.h
diff --git a/arch/um/include/sysdep-i386/ptrace.h b/arch/um/sys-i386/shared/sysdep/ptrace.h
index 11c08969d134..d50e62e07070 100644
--- a/arch/um/include/sysdep-i386/ptrace.h
+++ b/arch/um/sys-i386/shared/sysdep/ptrace.h
@@ -6,7 +6,6 @@
6#ifndef __SYSDEP_I386_PTRACE_H 6#ifndef __SYSDEP_I386_PTRACE_H
7#define __SYSDEP_I386_PTRACE_H 7#define __SYSDEP_I386_PTRACE_H
8 8
9#include "uml-config.h"
10#include "user_constants.h" 9#include "user_constants.h"
11#include "sysdep/faultinfo.h" 10#include "sysdep/faultinfo.h"
12 11
diff --git a/arch/um/include/sysdep-i386/ptrace_user.h b/arch/um/sys-i386/shared/sysdep/ptrace_user.h
index ef56247e4143..ef56247e4143 100644
--- a/arch/um/include/sysdep-i386/ptrace_user.h
+++ b/arch/um/sys-i386/shared/sysdep/ptrace_user.h
diff --git a/arch/um/include/sysdep-i386/sc.h b/arch/um/sys-i386/shared/sysdep/sc.h
index c57d1780ad37..c57d1780ad37 100644
--- a/arch/um/include/sysdep-i386/sc.h
+++ b/arch/um/sys-i386/shared/sysdep/sc.h
diff --git a/arch/um/include/sysdep-i386/sigcontext.h b/arch/um/sys-i386/shared/sysdep/sigcontext.h
index f583c87111a0..f583c87111a0 100644
--- a/arch/um/include/sysdep-i386/sigcontext.h
+++ b/arch/um/sys-i386/shared/sysdep/sigcontext.h
diff --git a/arch/um/include/sysdep-i386/skas_ptrace.h b/arch/um/sys-i386/shared/sysdep/skas_ptrace.h
index e27b8a791773..e27b8a791773 100644
--- a/arch/um/include/sysdep-i386/skas_ptrace.h
+++ b/arch/um/sys-i386/shared/sysdep/skas_ptrace.h
diff --git a/arch/um/include/sysdep-i386/stub.h b/arch/um/sys-i386/shared/sysdep/stub.h
index 8c097b87fca7..977dedd9221b 100644
--- a/arch/um/include/sysdep-i386/stub.h
+++ b/arch/um/sys-i386/shared/sysdep/stub.h
@@ -12,7 +12,6 @@
12#include "as-layout.h" 12#include "as-layout.h"
13#include "stub-data.h" 13#include "stub-data.h"
14#include "kern_constants.h" 14#include "kern_constants.h"
15#include "uml-config.h"
16 15
17extern void stub_segv_handler(int sig); 16extern void stub_segv_handler(int sig);
18extern void stub_clone_handler(void); 17extern void stub_clone_handler(void);
diff --git a/arch/um/include/sysdep-i386/syscalls.h b/arch/um/sys-i386/shared/sysdep/syscalls.h
index 905698197e35..905698197e35 100644
--- a/arch/um/include/sysdep-i386/syscalls.h
+++ b/arch/um/sys-i386/shared/sysdep/syscalls.h
diff --git a/arch/um/sys-i386/shared/sysdep/system.h b/arch/um/sys-i386/shared/sysdep/system.h
new file mode 100644
index 000000000000..d1b93c436200
--- /dev/null
+++ b/arch/um/sys-i386/shared/sysdep/system.h
@@ -0,0 +1,132 @@
1#ifndef _ASM_X86_SYSTEM_H_
2#define _ASM_X86_SYSTEM_H_
3
4#include <asm/asm.h>
5#include <asm/segment.h>
6#include <asm/cpufeature.h>
7#include <asm/cmpxchg.h>
8#include <asm/nops.h>
9
10#include <linux/kernel.h>
11#include <linux/irqflags.h>
12
13/* entries in ARCH_DLINFO: */
14#ifdef CONFIG_IA32_EMULATION
15# define AT_VECTOR_SIZE_ARCH 2
16#else
17# define AT_VECTOR_SIZE_ARCH 1
18#endif
19
20extern unsigned long arch_align_stack(unsigned long sp);
21
22void default_idle(void);
23
24/*
25 * Force strict CPU ordering.
26 * And yes, this is required on UP too when we're talking
27 * to devices.
28 */
29#ifdef CONFIG_X86_32
30/*
31 * Some non-Intel clones support out of order store. wmb() ceases to be a
32 * nop for these.
33 */
34#define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2)
35#define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)
36#define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
37#else
38#define mb() asm volatile("mfence":::"memory")
39#define rmb() asm volatile("lfence":::"memory")
40#define wmb() asm volatile("sfence" ::: "memory")
41#endif
42
43/**
44 * read_barrier_depends - Flush all pending reads that subsequents reads
45 * depend on.
46 *
47 * No data-dependent reads from memory-like regions are ever reordered
48 * over this barrier. All reads preceding this primitive are guaranteed
49 * to access memory (but not necessarily other CPUs' caches) before any
50 * reads following this primitive that depend on the data return by
51 * any of the preceding reads. This primitive is much lighter weight than
52 * rmb() on most CPUs, and is never heavier weight than is
53 * rmb().
54 *
55 * These ordering constraints are respected by both the local CPU
56 * and the compiler.
57 *
58 * Ordering is not guaranteed by anything other than these primitives,
59 * not even by data dependencies. See the documentation for
60 * memory_barrier() for examples and URLs to more information.
61 *
62 * For example, the following code would force ordering (the initial
63 * value of "a" is zero, "b" is one, and "p" is "&a"):
64 *
65 * <programlisting>
66 * CPU 0 CPU 1
67 *
68 * b = 2;
69 * memory_barrier();
70 * p = &b; q = p;
71 * read_barrier_depends();
72 * d = *q;
73 * </programlisting>
74 *
75 * because the read of "*q" depends on the read of "p" and these
76 * two reads are separated by a read_barrier_depends(). However,
77 * the following code, with the same initial values for "a" and "b":
78 *
79 * <programlisting>
80 * CPU 0 CPU 1
81 *
82 * a = 2;
83 * memory_barrier();
84 * b = 3; y = b;
85 * read_barrier_depends();
86 * x = a;
87 * </programlisting>
88 *
89 * does not enforce ordering, since there is no data dependency between
90 * the read of "a" and the read of "b". Therefore, on some CPUs, such
91 * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb()
92 * in cases like this where there are no data dependencies.
93 **/
94
95#define read_barrier_depends() do { } while (0)
96
97#ifdef CONFIG_SMP
98#define smp_mb() mb()
99#ifdef CONFIG_X86_PPRO_FENCE
100# define smp_rmb() rmb()
101#else
102# define smp_rmb() barrier()
103#endif
104#ifdef CONFIG_X86_OOSTORE
105# define smp_wmb() wmb()
106#else
107# define smp_wmb() barrier()
108#endif
109#define smp_read_barrier_depends() read_barrier_depends()
110#define set_mb(var, value) do { (void)xchg(&var, value); } while (0)
111#else
112#define smp_mb() barrier()
113#define smp_rmb() barrier()
114#define smp_wmb() barrier()
115#define smp_read_barrier_depends() do { } while (0)
116#define set_mb(var, value) do { var = value; barrier(); } while (0)
117#endif
118
119/*
120 * Stop RDTSC speculation. This is needed when you need to use RDTSC
121 * (or get_cycles or vread that possibly accesses the TSC) in a defined
122 * code region.
123 *
124 * (Could use an alternative three way for this if there was one.)
125 */
126static inline void rdtsc_barrier(void)
127{
128 alternative(ASM_NOP3, "mfence", X86_FEATURE_MFENCE_RDTSC);
129 alternative(ASM_NOP3, "lfence", X86_FEATURE_LFENCE_RDTSC);
130}
131
132#endif
diff --git a/arch/um/include/sysdep-i386/tls.h b/arch/um/sys-i386/shared/sysdep/tls.h
index 918fd3c5ff9c..34550755b2a1 100644
--- a/arch/um/include/sysdep-i386/tls.h
+++ b/arch/um/sys-i386/shared/sysdep/tls.h
@@ -21,7 +21,7 @@ typedef struct um_dup_user_desc {
21 21
22# else /* __KERNEL__ */ 22# else /* __KERNEL__ */
23 23
24# include <asm/ldt.h> 24# include <ldt.h>
25typedef struct user_desc user_desc_t; 25typedef struct user_desc user_desc_t;
26 26
27# endif /* __KERNEL__ */ 27# endif /* __KERNEL__ */
diff --git a/arch/um/sys-i386/shared/sysdep/vm-flags.h b/arch/um/sys-i386/shared/sysdep/vm-flags.h
new file mode 100644
index 000000000000..e0d24c568dbc
--- /dev/null
+++ b/arch/um/sys-i386/shared/sysdep/vm-flags.h
@@ -0,0 +1,14 @@
1/*
2 * Copyright (C) 2004 Jeff Dike (jdike@addtoit.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __VM_FLAGS_I386_H
7#define __VM_FLAGS_I386_H
8
9#define VM_DATA_DEFAULT_FLAGS \
10 (VM_READ | VM_WRITE | \
11 ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
12 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
13
14#endif
diff --git a/arch/um/sys-i386/stub.S b/arch/um/sys-i386/stub.S
index 7699e89f660f..c41b04bf5fa0 100644
--- a/arch/um/sys-i386/stub.S
+++ b/arch/um/sys-i386/stub.S
@@ -1,4 +1,3 @@
1#include "uml-config.h"
2#include "as-layout.h" 1#include "as-layout.h"
3 2
4 .globl syscall_stub 3 .globl syscall_stub
diff --git a/arch/um/sys-i386/syscalls.c b/arch/um/sys-i386/syscalls.c
index e2d142684412..857ca0b3bdef 100644
--- a/arch/um/sys-i386/syscalls.c
+++ b/arch/um/sys-i386/syscalls.c
@@ -6,6 +6,7 @@
6#include "linux/sched.h" 6#include "linux/sched.h"
7#include "linux/shm.h" 7#include "linux/shm.h"
8#include "linux/ipc.h" 8#include "linux/ipc.h"
9#include "linux/syscalls.h"
9#include "asm/mman.h" 10#include "asm/mman.h"
10#include "asm/uaccess.h" 11#include "asm/uaccess.h"
11#include "asm/unistd.h" 12#include "asm/unistd.h"
diff --git a/arch/um/include/sysdep-ia64/ptrace.h b/arch/um/sys-ia64/sysdep/ptrace.h
index 42dd8fb6f2f9..42dd8fb6f2f9 100644
--- a/arch/um/include/sysdep-ia64/ptrace.h
+++ b/arch/um/sys-ia64/sysdep/ptrace.h
diff --git a/arch/um/include/sysdep-ia64/sigcontext.h b/arch/um/sys-ia64/sysdep/sigcontext.h
index f15fb25260ba..f15fb25260ba 100644
--- a/arch/um/include/sysdep-ia64/sigcontext.h
+++ b/arch/um/sys-ia64/sysdep/sigcontext.h
diff --git a/arch/um/include/sysdep-ia64/skas_ptrace.h b/arch/um/sys-ia64/sysdep/skas_ptrace.h
index 25a38e715702..25a38e715702 100644
--- a/arch/um/include/sysdep-ia64/skas_ptrace.h
+++ b/arch/um/sys-ia64/sysdep/skas_ptrace.h
diff --git a/arch/um/include/sysdep-ia64/syscalls.h b/arch/um/sys-ia64/sysdep/syscalls.h
index 4a1f46ef1ebc..4a1f46ef1ebc 100644
--- a/arch/um/include/sysdep-ia64/syscalls.h
+++ b/arch/um/sys-ia64/sysdep/syscalls.h
diff --git a/arch/um/sys-ppc/asm/archparam.h b/arch/um/sys-ppc/asm/archparam.h
new file mode 100644
index 000000000000..4269d8a37b4f
--- /dev/null
+++ b/arch/um/sys-ppc/asm/archparam.h
@@ -0,0 +1,8 @@
1#ifndef __UM_ARCHPARAM_PPC_H
2#define __UM_ARCHPARAM_PPC_H
3
4/********* Bits for asm-um/string.h **********/
5
6#define __HAVE_ARCH_STRRCHR
7
8#endif
diff --git a/arch/um/sys-ppc/asm/elf.h b/arch/um/sys-ppc/asm/elf.h
new file mode 100644
index 000000000000..af9463cd8ce5
--- /dev/null
+++ b/arch/um/sys-ppc/asm/elf.h
@@ -0,0 +1,53 @@
1#ifndef __UM_ELF_PPC_H
2#define __UM_ELF_PPC_H
3
4
5extern long elf_aux_hwcap;
6#define ELF_HWCAP (elf_aux_hwcap)
7
8#define SET_PERSONALITY(ex) do ; while(0)
9
10#define ELF_EXEC_PAGESIZE 4096
11
12#define elf_check_arch(x) (1)
13
14#ifdef CONFIG_64BIT
15#define ELF_CLASS ELFCLASS64
16#else
17#define ELF_CLASS ELFCLASS32
18#endif
19
20#define USE_ELF_CORE_DUMP
21
22#define R_386_NONE 0
23#define R_386_32 1
24#define R_386_PC32 2
25#define R_386_GOT32 3
26#define R_386_PLT32 4
27#define R_386_COPY 5
28#define R_386_GLOB_DAT 6
29#define R_386_JMP_SLOT 7
30#define R_386_RELATIVE 8
31#define R_386_GOTOFF 9
32#define R_386_GOTPC 10
33#define R_386_NUM 11
34
35#define ELF_PLATFORM (0)
36
37#define ELF_ET_DYN_BASE (0x08000000)
38
39/* the following stolen from asm-ppc/elf.h */
40#define ELF_NGREG 48 /* includes nip, msr, lr, etc. */
41#define ELF_NFPREG 33 /* includes fpscr */
42/* General registers */
43typedef unsigned long elf_greg_t;
44typedef elf_greg_t elf_gregset_t[ELF_NGREG];
45
46/* Floating point registers */
47typedef double elf_fpreg_t;
48typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
49
50#define ELF_DATA ELFDATA2MSB
51#define ELF_ARCH EM_PPC
52
53#endif
diff --git a/arch/um/sys-ppc/asm/processor.h b/arch/um/sys-ppc/asm/processor.h
new file mode 100644
index 000000000000..959323151229
--- /dev/null
+++ b/arch/um/sys-ppc/asm/processor.h
@@ -0,0 +1,15 @@
1#ifndef __UM_PROCESSOR_PPC_H
2#define __UM_PROCESSOR_PPC_H
3
4#if defined(__ASSEMBLY__)
5
6#define CONFIG_PPC_MULTIPLATFORM
7#include "arch/processor.h"
8
9#else
10
11#include "asm/processor-generic.h"
12
13#endif
14
15#endif
diff --git a/arch/um/include/sysdep-ppc/ptrace.h b/arch/um/sys-ppc/shared/sysdep/ptrace.h
index df2397dba3e5..df2397dba3e5 100644
--- a/arch/um/include/sysdep-ppc/ptrace.h
+++ b/arch/um/sys-ppc/shared/sysdep/ptrace.h
diff --git a/arch/um/include/sysdep-ppc/sigcontext.h b/arch/um/sys-ppc/shared/sysdep/sigcontext.h
index f20d965de9c7..f20d965de9c7 100644
--- a/arch/um/include/sysdep-ppc/sigcontext.h
+++ b/arch/um/sys-ppc/shared/sysdep/sigcontext.h
diff --git a/arch/um/include/sysdep-ppc/skas_ptrace.h b/arch/um/sys-ppc/shared/sysdep/skas_ptrace.h
index d9fbbac10de0..d9fbbac10de0 100644
--- a/arch/um/include/sysdep-ppc/skas_ptrace.h
+++ b/arch/um/sys-ppc/shared/sysdep/skas_ptrace.h
diff --git a/arch/um/include/sysdep-ppc/syscalls.h b/arch/um/sys-ppc/shared/sysdep/syscalls.h
index 679df351e19b..679df351e19b 100644
--- a/arch/um/include/sysdep-ppc/syscalls.h
+++ b/arch/um/sys-ppc/shared/sysdep/syscalls.h
diff --git a/arch/um/sys-x86_64/asm/archparam.h b/arch/um/sys-x86_64/asm/archparam.h
new file mode 100644
index 000000000000..270ed9586b68
--- /dev/null
+++ b/arch/um/sys-x86_64/asm/archparam.h
@@ -0,0 +1,26 @@
1/*
2 * Copyright 2003 PathScale, Inc.
3 *
4 * Licensed under the GPL
5 */
6
7#ifndef __UM_ARCHPARAM_X86_64_H
8#define __UM_ARCHPARAM_X86_64_H
9
10
11/* No user-accessible fixmap addresses, i.e. vsyscall */
12#define FIXADDR_USER_START 0
13#define FIXADDR_USER_END 0
14
15#endif
16
17/*
18 * Overrides for Emacs so that we follow Linus's tabbing style.
19 * Emacs will notice this stuff at the end of the file and automatically
20 * adjust the settings for this buffer only. This must remain at the end
21 * of the file.
22 * ---------------------------------------------------------------------------
23 * Local variables:
24 * c-file-style: "linux"
25 * End:
26 */
diff --git a/arch/um/sys-x86_64/asm/elf.h b/arch/um/sys-x86_64/asm/elf.h
new file mode 100644
index 000000000000..6e8a9195e952
--- /dev/null
+++ b/arch/um/sys-x86_64/asm/elf.h
@@ -0,0 +1,119 @@
1/*
2 * Copyright 2003 PathScale, Inc.
3 * Copyright (C) 2003 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
4 *
5 * Licensed under the GPL
6 */
7#ifndef __UM_ELF_X86_64_H
8#define __UM_ELF_X86_64_H
9
10#include <asm/user.h>
11#include "skas.h"
12
13/* x86-64 relocation types, taken from asm-x86_64/elf.h */
14#define R_X86_64_NONE 0 /* No reloc */
15#define R_X86_64_64 1 /* Direct 64 bit */
16#define R_X86_64_PC32 2 /* PC relative 32 bit signed */
17#define R_X86_64_GOT32 3 /* 32 bit GOT entry */
18#define R_X86_64_PLT32 4 /* 32 bit PLT address */
19#define R_X86_64_COPY 5 /* Copy symbol at runtime */
20#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */
21#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */
22#define R_X86_64_RELATIVE 8 /* Adjust by program base */
23#define R_X86_64_GOTPCREL 9 /* 32 bit signed pc relative
24 offset to GOT */
25#define R_X86_64_32 10 /* Direct 32 bit zero extended */
26#define R_X86_64_32S 11 /* Direct 32 bit sign extended */
27#define R_X86_64_16 12 /* Direct 16 bit zero extended */
28#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */
29#define R_X86_64_8 14 /* Direct 8 bit sign extended */
30#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */
31
32#define R_X86_64_NUM 16
33
34typedef unsigned long elf_greg_t;
35
36#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
37typedef elf_greg_t elf_gregset_t[ELF_NGREG];
38
39typedef struct user_i387_struct elf_fpregset_t;
40
41/*
42 * This is used to ensure we don't load something for the wrong architecture.
43 */
44#define elf_check_arch(x) \
45 ((x)->e_machine == EM_X86_64)
46
47#define ELF_CLASS ELFCLASS64
48#define ELF_DATA ELFDATA2LSB
49#define ELF_ARCH EM_X86_64
50
51#define ELF_PLAT_INIT(regs, load_addr) do { \
52 PT_REGS_RBX(regs) = 0; \
53 PT_REGS_RCX(regs) = 0; \
54 PT_REGS_RDX(regs) = 0; \
55 PT_REGS_RSI(regs) = 0; \
56 PT_REGS_RDI(regs) = 0; \
57 PT_REGS_RBP(regs) = 0; \
58 PT_REGS_RAX(regs) = 0; \
59 PT_REGS_R8(regs) = 0; \
60 PT_REGS_R9(regs) = 0; \
61 PT_REGS_R10(regs) = 0; \
62 PT_REGS_R11(regs) = 0; \
63 PT_REGS_R12(regs) = 0; \
64 PT_REGS_R13(regs) = 0; \
65 PT_REGS_R14(regs) = 0; \
66 PT_REGS_R15(regs) = 0; \
67} while (0)
68
69#define ELF_CORE_COPY_REGS(pr_reg, regs) \
70 (pr_reg)[0] = (regs)->regs.gp[0]; \
71 (pr_reg)[1] = (regs)->regs.gp[1]; \
72 (pr_reg)[2] = (regs)->regs.gp[2]; \
73 (pr_reg)[3] = (regs)->regs.gp[3]; \
74 (pr_reg)[4] = (regs)->regs.gp[4]; \
75 (pr_reg)[5] = (regs)->regs.gp[5]; \
76 (pr_reg)[6] = (regs)->regs.gp[6]; \
77 (pr_reg)[7] = (regs)->regs.gp[7]; \
78 (pr_reg)[8] = (regs)->regs.gp[8]; \
79 (pr_reg)[9] = (regs)->regs.gp[9]; \
80 (pr_reg)[10] = (regs)->regs.gp[10]; \
81 (pr_reg)[11] = (regs)->regs.gp[11]; \
82 (pr_reg)[12] = (regs)->regs.gp[12]; \
83 (pr_reg)[13] = (regs)->regs.gp[13]; \
84 (pr_reg)[14] = (regs)->regs.gp[14]; \
85 (pr_reg)[15] = (regs)->regs.gp[15]; \
86 (pr_reg)[16] = (regs)->regs.gp[16]; \
87 (pr_reg)[17] = (regs)->regs.gp[17]; \
88 (pr_reg)[18] = (regs)->regs.gp[18]; \
89 (pr_reg)[19] = (regs)->regs.gp[19]; \
90 (pr_reg)[20] = (regs)->regs.gp[20]; \
91 (pr_reg)[21] = current->thread.arch.fs; \
92 (pr_reg)[22] = 0; \
93 (pr_reg)[23] = 0; \
94 (pr_reg)[24] = 0; \
95 (pr_reg)[25] = 0; \
96 (pr_reg)[26] = 0;
97
98extern int elf_core_copy_fpregs(struct task_struct *t, elf_fpregset_t *fpu);
99
100#define ELF_CORE_COPY_FPREGS(t, fpu) elf_core_copy_fpregs(t, fpu)
101
102#ifdef TIF_IA32 /* XXX */
103#error XXX, indeed
104 clear_thread_flag(TIF_IA32);
105#endif
106
107#define USE_ELF_CORE_DUMP
108#define ELF_EXEC_PAGESIZE 4096
109
110#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
111
112extern long elf_aux_hwcap;
113#define ELF_HWCAP (elf_aux_hwcap)
114
115#define ELF_PLATFORM "x86_64"
116
117#define SET_PERSONALITY(ex) do ; while(0)
118
119#endif
diff --git a/arch/um/sys-x86_64/asm/module.h b/arch/um/sys-x86_64/asm/module.h
new file mode 100644
index 000000000000..35b5491d3e96
--- /dev/null
+++ b/arch/um/sys-x86_64/asm/module.h
@@ -0,0 +1,30 @@
1/*
2 * Copyright 2003 PathScale, Inc.
3 *
4 * Licensed under the GPL
5 */
6
7#ifndef __UM_MODULE_X86_64_H
8#define __UM_MODULE_X86_64_H
9
10/* UML is simple */
11struct mod_arch_specific
12{
13};
14
15#define Elf_Shdr Elf64_Shdr
16#define Elf_Sym Elf64_Sym
17#define Elf_Ehdr Elf64_Ehdr
18
19#endif
20
21/*
22 * Overrides for Emacs so that we follow Linus's tabbing style.
23 * Emacs will notice this stuff at the end of the file and automatically
24 * adjust the settings for this buffer only. This must remain at the end
25 * of the file.
26 * ---------------------------------------------------------------------------
27 * Local variables:
28 * c-file-style: "linux"
29 * End:
30 */
diff --git a/arch/um/sys-x86_64/asm/processor.h b/arch/um/sys-x86_64/asm/processor.h
new file mode 100644
index 000000000000..875a26a62614
--- /dev/null
+++ b/arch/um/sys-x86_64/asm/processor.h
@@ -0,0 +1,56 @@
1/*
2 * Copyright 2003 PathScale, Inc.
3 *
4 * Licensed under the GPL
5 */
6
7#ifndef __UM_PROCESSOR_X86_64_H
8#define __UM_PROCESSOR_X86_64_H
9
10/* include faultinfo structure */
11#include "sysdep/faultinfo.h"
12
13struct arch_thread {
14 unsigned long debugregs[8];
15 int debugregs_seq;
16 unsigned long fs;
17 struct faultinfo faultinfo;
18};
19
20/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
21static inline void rep_nop(void)
22{
23 __asm__ __volatile__("rep;nop": : :"memory");
24}
25
26#define cpu_relax() rep_nop()
27
28#define INIT_ARCH_THREAD { .debugregs = { [ 0 ... 7 ] = 0 }, \
29 .debugregs_seq = 0, \
30 .fs = 0, \
31 .faultinfo = { 0, 0, 0 } }
32
33static inline void arch_flush_thread(struct arch_thread *thread)
34{
35}
36
37static inline void arch_copy_thread(struct arch_thread *from,
38 struct arch_thread *to)
39{
40 to->fs = from->fs;
41}
42
43#include <asm/user.h>
44
45#define current_text_addr() \
46 ({ void *pc; __asm__("movq $1f,%0\n1:":"=g" (pc)); pc; })
47
48#define ARCH_IS_STACKGROW(address) \
49 (address + 128 >= UPT_SP(&current->thread.regs.regs))
50
51#define KSTK_EIP(tsk) KSTK_REG(tsk, RIP)
52#define KSTK_ESP(tsk) KSTK_REG(tsk, RSP)
53
54#include "asm/processor-generic.h"
55
56#endif
diff --git a/arch/um/sys-x86_64/asm/ptrace.h b/arch/um/sys-x86_64/asm/ptrace.h
new file mode 100644
index 000000000000..83d8c473b905
--- /dev/null
+++ b/arch/um/sys-x86_64/asm/ptrace.h
@@ -0,0 +1,72 @@
1/*
2 * Copyright 2003 PathScale, Inc.
3 *
4 * Licensed under the GPL
5 */
6
7#ifndef __UM_PTRACE_X86_64_H
8#define __UM_PTRACE_X86_64_H
9
10#include "linux/compiler.h"
11#include "asm/errno.h"
12
13#define __FRAME_OFFSETS /* Needed to get the R* macros */
14#include "asm/ptrace-generic.h"
15
16#define HOST_AUDIT_ARCH AUDIT_ARCH_X86_64
17
18#define PT_REGS_RBX(r) UPT_RBX(&(r)->regs)
19#define PT_REGS_RCX(r) UPT_RCX(&(r)->regs)
20#define PT_REGS_RDX(r) UPT_RDX(&(r)->regs)
21#define PT_REGS_RSI(r) UPT_RSI(&(r)->regs)
22#define PT_REGS_RDI(r) UPT_RDI(&(r)->regs)
23#define PT_REGS_RBP(r) UPT_RBP(&(r)->regs)
24#define PT_REGS_RAX(r) UPT_RAX(&(r)->regs)
25#define PT_REGS_R8(r) UPT_R8(&(r)->regs)
26#define PT_REGS_R9(r) UPT_R9(&(r)->regs)
27#define PT_REGS_R10(r) UPT_R10(&(r)->regs)
28#define PT_REGS_R11(r) UPT_R11(&(r)->regs)
29#define PT_REGS_R12(r) UPT_R12(&(r)->regs)
30#define PT_REGS_R13(r) UPT_R13(&(r)->regs)
31#define PT_REGS_R14(r) UPT_R14(&(r)->regs)
32#define PT_REGS_R15(r) UPT_R15(&(r)->regs)
33
34#define PT_REGS_FS(r) UPT_FS(&(r)->regs)
35#define PT_REGS_GS(r) UPT_GS(&(r)->regs)
36#define PT_REGS_DS(r) UPT_DS(&(r)->regs)
37#define PT_REGS_ES(r) UPT_ES(&(r)->regs)
38#define PT_REGS_SS(r) UPT_SS(&(r)->regs)
39#define PT_REGS_CS(r) UPT_CS(&(r)->regs)
40
41#define PT_REGS_ORIG_RAX(r) UPT_ORIG_RAX(&(r)->regs)
42#define PT_REGS_RIP(r) UPT_IP(&(r)->regs)
43#define PT_REGS_RSP(r) UPT_SP(&(r)->regs)
44
45#define PT_REGS_EFLAGS(r) UPT_EFLAGS(&(r)->regs)
46
47/* XXX */
48#define user_mode(r) UPT_IS_USER(&(r)->regs)
49#define PT_REGS_ORIG_SYSCALL(r) PT_REGS_RAX(r)
50#define PT_REGS_SYSCALL_RET(r) PT_REGS_RAX(r)
51
52#define PT_FIX_EXEC_STACK(sp) do ; while(0)
53
54#define profile_pc(regs) PT_REGS_IP(regs)
55
56struct user_desc;
57
58static inline int ptrace_get_thread_area(struct task_struct *child, int idx,
59 struct user_desc __user *user_desc)
60{
61 return -ENOSYS;
62}
63
64static inline int ptrace_set_thread_area(struct task_struct *child, int idx,
65 struct user_desc __user *user_desc)
66{
67 return -ENOSYS;
68}
69
70extern long arch_prctl(struct task_struct *task, int code,
71 unsigned long __user *addr);
72#endif
diff --git a/arch/um/include/sysdep-x86_64/archsetjmp.h b/arch/um/sys-x86_64/shared/sysdep/archsetjmp.h
index 2af8f12ca161..2af8f12ca161 100644
--- a/arch/um/include/sysdep-x86_64/archsetjmp.h
+++ b/arch/um/sys-x86_64/shared/sysdep/archsetjmp.h
diff --git a/arch/um/include/sysdep-x86_64/barrier.h b/arch/um/sys-x86_64/shared/sysdep/barrier.h
index 7b610befdc8f..7b610befdc8f 100644
--- a/arch/um/include/sysdep-x86_64/barrier.h
+++ b/arch/um/sys-x86_64/shared/sysdep/barrier.h
diff --git a/arch/um/include/sysdep-x86_64/checksum.h b/arch/um/sys-x86_64/shared/sysdep/checksum.h
index a5be9031ea85..a5be9031ea85 100644
--- a/arch/um/include/sysdep-x86_64/checksum.h
+++ b/arch/um/sys-x86_64/shared/sysdep/checksum.h
diff --git a/arch/um/include/sysdep-x86_64/faultinfo.h b/arch/um/sys-x86_64/shared/sysdep/faultinfo.h
index cb917b0d5660..cb917b0d5660 100644
--- a/arch/um/include/sysdep-x86_64/faultinfo.h
+++ b/arch/um/sys-x86_64/shared/sysdep/faultinfo.h
diff --git a/arch/um/sys-x86_64/shared/sysdep/host_ldt.h b/arch/um/sys-x86_64/shared/sysdep/host_ldt.h
new file mode 100644
index 000000000000..e8b1be1e154f
--- /dev/null
+++ b/arch/um/sys-x86_64/shared/sysdep/host_ldt.h
@@ -0,0 +1,38 @@
1#ifndef __ASM_HOST_LDT_X86_64_H
2#define __ASM_HOST_LDT_X86_64_H
3
4#include <asm/ldt.h>
5
6/*
7 * macros stolen from include/asm-x86_64/desc.h
8 */
9#define LDT_entry_a(info) \
10 ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff))
11
12/* Don't allow setting of the lm bit. It is useless anyways because
13 * 64bit system calls require __USER_CS. */
14#define LDT_entry_b(info) \
15 (((info)->base_addr & 0xff000000) | \
16 (((info)->base_addr & 0x00ff0000) >> 16) | \
17 ((info)->limit & 0xf0000) | \
18 (((info)->read_exec_only ^ 1) << 9) | \
19 ((info)->contents << 10) | \
20 (((info)->seg_not_present ^ 1) << 15) | \
21 ((info)->seg_32bit << 22) | \
22 ((info)->limit_in_pages << 23) | \
23 ((info)->useable << 20) | \
24 /* ((info)->lm << 21) | */ \
25 0x7000)
26
27#define LDT_empty(info) (\
28 (info)->base_addr == 0 && \
29 (info)->limit == 0 && \
30 (info)->contents == 0 && \
31 (info)->read_exec_only == 1 && \
32 (info)->seg_32bit == 0 && \
33 (info)->limit_in_pages == 0 && \
34 (info)->seg_not_present == 1 && \
35 (info)->useable == 0 && \
36 (info)->lm == 0)
37
38#endif
diff --git a/arch/um/include/sysdep-x86_64/kernel-offsets.h b/arch/um/sys-x86_64/shared/sysdep/kernel-offsets.h
index a307237b7964..a307237b7964 100644
--- a/arch/um/include/sysdep-x86_64/kernel-offsets.h
+++ b/arch/um/sys-x86_64/shared/sysdep/kernel-offsets.h
diff --git a/arch/um/include/sysdep-x86_64/ptrace.h b/arch/um/sys-x86_64/shared/sysdep/ptrace.h
index 9ea44d111f33..fdba5457947a 100644
--- a/arch/um/include/sysdep-x86_64/ptrace.h
+++ b/arch/um/sys-x86_64/shared/sysdep/ptrace.h
@@ -8,7 +8,6 @@
8#ifndef __SYSDEP_X86_64_PTRACE_H 8#ifndef __SYSDEP_X86_64_PTRACE_H
9#define __SYSDEP_X86_64_PTRACE_H 9#define __SYSDEP_X86_64_PTRACE_H
10 10
11#include "uml-config.h"
12#include "user_constants.h" 11#include "user_constants.h"
13#include "sysdep/faultinfo.h" 12#include "sysdep/faultinfo.h"
14 13
diff --git a/arch/um/include/sysdep-x86_64/ptrace_user.h b/arch/um/sys-x86_64/shared/sysdep/ptrace_user.h
index 4dbccdb58f48..4dbccdb58f48 100644
--- a/arch/um/include/sysdep-x86_64/ptrace_user.h
+++ b/arch/um/sys-x86_64/shared/sysdep/ptrace_user.h
diff --git a/arch/um/include/sysdep-x86_64/sc.h b/arch/um/sys-x86_64/shared/sysdep/sc.h
index 8aee45b07434..8aee45b07434 100644
--- a/arch/um/include/sysdep-x86_64/sc.h
+++ b/arch/um/sys-x86_64/shared/sysdep/sc.h
diff --git a/arch/um/include/sysdep-x86_64/sigcontext.h b/arch/um/sys-x86_64/shared/sysdep/sigcontext.h
index 0155133b1458..0155133b1458 100644
--- a/arch/um/include/sysdep-x86_64/sigcontext.h
+++ b/arch/um/sys-x86_64/shared/sysdep/sigcontext.h
diff --git a/arch/um/include/sysdep-x86_64/skas_ptrace.h b/arch/um/sys-x86_64/shared/sysdep/skas_ptrace.h
index 95db4be786e4..95db4be786e4 100644
--- a/arch/um/include/sysdep-x86_64/skas_ptrace.h
+++ b/arch/um/sys-x86_64/shared/sysdep/skas_ptrace.h
diff --git a/arch/um/include/sysdep-x86_64/stub.h b/arch/um/sys-x86_64/shared/sysdep/stub.h
index 655f9c2de3ac..3432aa249970 100644
--- a/arch/um/include/sysdep-x86_64/stub.h
+++ b/arch/um/sys-x86_64/shared/sysdep/stub.h
@@ -12,7 +12,6 @@
12#include "as-layout.h" 12#include "as-layout.h"
13#include "stub-data.h" 13#include "stub-data.h"
14#include "kern_constants.h" 14#include "kern_constants.h"
15#include "uml-config.h"
16 15
17extern void stub_segv_handler(int sig); 16extern void stub_segv_handler(int sig);
18extern void stub_clone_handler(void); 17extern void stub_clone_handler(void);
diff --git a/arch/um/include/sysdep-x86_64/syscalls.h b/arch/um/sys-x86_64/shared/sysdep/syscalls.h
index 7cfb0b085655..7cfb0b085655 100644
--- a/arch/um/include/sysdep-x86_64/syscalls.h
+++ b/arch/um/sys-x86_64/shared/sysdep/syscalls.h
diff --git a/arch/um/sys-x86_64/shared/sysdep/system.h b/arch/um/sys-x86_64/shared/sysdep/system.h
new file mode 100644
index 000000000000..d1b93c436200
--- /dev/null
+++ b/arch/um/sys-x86_64/shared/sysdep/system.h
@@ -0,0 +1,132 @@
1#ifndef _ASM_X86_SYSTEM_H_
2#define _ASM_X86_SYSTEM_H_
3
4#include <asm/asm.h>
5#include <asm/segment.h>
6#include <asm/cpufeature.h>
7#include <asm/cmpxchg.h>
8#include <asm/nops.h>
9
10#include <linux/kernel.h>
11#include <linux/irqflags.h>
12
13/* entries in ARCH_DLINFO: */
14#ifdef CONFIG_IA32_EMULATION
15# define AT_VECTOR_SIZE_ARCH 2
16#else
17# define AT_VECTOR_SIZE_ARCH 1
18#endif
19
20extern unsigned long arch_align_stack(unsigned long sp);
21
22void default_idle(void);
23
24/*
25 * Force strict CPU ordering.
26 * And yes, this is required on UP too when we're talking
27 * to devices.
28 */
29#ifdef CONFIG_X86_32
30/*
31 * Some non-Intel clones support out of order store. wmb() ceases to be a
32 * nop for these.
33 */
34#define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2)
35#define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)
36#define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
37#else
38#define mb() asm volatile("mfence":::"memory")
39#define rmb() asm volatile("lfence":::"memory")
40#define wmb() asm volatile("sfence" ::: "memory")
41#endif
42
43/**
44 * read_barrier_depends - Flush all pending reads that subsequents reads
45 * depend on.
46 *
47 * No data-dependent reads from memory-like regions are ever reordered
48 * over this barrier. All reads preceding this primitive are guaranteed
49 * to access memory (but not necessarily other CPUs' caches) before any
50 * reads following this primitive that depend on the data return by
51 * any of the preceding reads. This primitive is much lighter weight than
52 * rmb() on most CPUs, and is never heavier weight than is
53 * rmb().
54 *
55 * These ordering constraints are respected by both the local CPU
56 * and the compiler.
57 *
58 * Ordering is not guaranteed by anything other than these primitives,
59 * not even by data dependencies. See the documentation for
60 * memory_barrier() for examples and URLs to more information.
61 *
62 * For example, the following code would force ordering (the initial
63 * value of "a" is zero, "b" is one, and "p" is "&a"):
64 *
65 * <programlisting>
66 * CPU 0 CPU 1
67 *
68 * b = 2;
69 * memory_barrier();
70 * p = &b; q = p;
71 * read_barrier_depends();
72 * d = *q;
73 * </programlisting>
74 *
75 * because the read of "*q" depends on the read of "p" and these
76 * two reads are separated by a read_barrier_depends(). However,
77 * the following code, with the same initial values for "a" and "b":
78 *
79 * <programlisting>
80 * CPU 0 CPU 1
81 *
82 * a = 2;
83 * memory_barrier();
84 * b = 3; y = b;
85 * read_barrier_depends();
86 * x = a;
87 * </programlisting>
88 *
89 * does not enforce ordering, since there is no data dependency between
90 * the read of "a" and the read of "b". Therefore, on some CPUs, such
91 * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb()
92 * in cases like this where there are no data dependencies.
93 **/
94
95#define read_barrier_depends() do { } while (0)
96
97#ifdef CONFIG_SMP
98#define smp_mb() mb()
99#ifdef CONFIG_X86_PPRO_FENCE
100# define smp_rmb() rmb()
101#else
102# define smp_rmb() barrier()
103#endif
104#ifdef CONFIG_X86_OOSTORE
105# define smp_wmb() wmb()
106#else
107# define smp_wmb() barrier()
108#endif
109#define smp_read_barrier_depends() read_barrier_depends()
110#define set_mb(var, value) do { (void)xchg(&var, value); } while (0)
111#else
112#define smp_mb() barrier()
113#define smp_rmb() barrier()
114#define smp_wmb() barrier()
115#define smp_read_barrier_depends() do { } while (0)
116#define set_mb(var, value) do { var = value; barrier(); } while (0)
117#endif
118
119/*
120 * Stop RDTSC speculation. This is needed when you need to use RDTSC
121 * (or get_cycles or vread that possibly accesses the TSC) in a defined
122 * code region.
123 *
124 * (Could use an alternative three way for this if there was one.)
125 */
126static inline void rdtsc_barrier(void)
127{
128 alternative(ASM_NOP3, "mfence", X86_FEATURE_MFENCE_RDTSC);
129 alternative(ASM_NOP3, "lfence", X86_FEATURE_LFENCE_RDTSC);
130}
131
132#endif
diff --git a/arch/um/include/sysdep-x86_64/tls.h b/arch/um/sys-x86_64/shared/sysdep/tls.h
index 35f19f25bd3b..18c000d0357a 100644
--- a/arch/um/include/sysdep-x86_64/tls.h
+++ b/arch/um/sys-x86_64/shared/sysdep/tls.h
@@ -22,7 +22,7 @@ typedef struct um_dup_user_desc {
22 22
23# else /* __KERNEL__ */ 23# else /* __KERNEL__ */
24 24
25# include <asm/ldt.h> 25# include <ldt.h>
26typedef struct user_desc user_desc_t; 26typedef struct user_desc user_desc_t;
27 27
28# endif /* __KERNEL__ */ 28# endif /* __KERNEL__ */
diff --git a/arch/um/sys-x86_64/shared/sysdep/vm-flags.h b/arch/um/sys-x86_64/shared/sysdep/vm-flags.h
new file mode 100644
index 000000000000..3213edfa7888
--- /dev/null
+++ b/arch/um/sys-x86_64/shared/sysdep/vm-flags.h
@@ -0,0 +1,33 @@
1/*
2 * Copyright (C) 2004 Jeff Dike (jdike@addtoit.com)
3 * Copyright 2003 PathScale, Inc.
4 * Licensed under the GPL
5 */
6
7#ifndef __VM_FLAGS_X86_64_H
8#define __VM_FLAGS_X86_64_H
9
10#define __VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
11 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
12#define __VM_STACK_FLAGS (VM_GROWSDOWN | VM_READ | VM_WRITE | \
13 VM_EXEC | VM_MAYREAD | VM_MAYWRITE | \
14 VM_MAYEXEC)
15
16extern unsigned long vm_stack_flags, vm_stack_flags32;
17extern unsigned long vm_data_default_flags, vm_data_default_flags32;
18extern unsigned long vm_force_exec32;
19
20#ifdef TIF_IA32
21#define VM_DATA_DEFAULT_FLAGS \
22 (test_thread_flag(TIF_IA32) ? vm_data_default_flags32 : \
23 vm_data_default_flags)
24
25#define VM_STACK_DEFAULT_FLAGS \
26 (test_thread_flag(TIF_IA32) ? vm_stack_flags32 : vm_stack_flags)
27#endif
28
29#define VM_DATA_DEFAULT_FLAGS vm_data_default_flags
30
31#define VM_STACK_DEFAULT_FLAGS vm_stack_flags
32
33#endif
diff --git a/arch/um/sys-x86_64/stub.S b/arch/um/sys-x86_64/stub.S
index 568768763155..6d9edf9fabce 100644
--- a/arch/um/sys-x86_64/stub.S
+++ b/arch/um/sys-x86_64/stub.S
@@ -1,4 +1,3 @@
1#include "uml-config.h"
2#include "as-layout.h" 1#include "as-layout.h"
3 2
4 .globl syscall_stub 3 .globl syscall_stub
diff --git a/arch/um/sys-x86_64/syscall_table.c b/arch/um/sys-x86_64/syscall_table.c
index 32f5fbe2d0d2..dd21d69715e6 100644
--- a/arch/um/sys-x86_64/syscall_table.c
+++ b/arch/um/sys-x86_64/syscall_table.c
@@ -41,12 +41,12 @@
41#define stub_rt_sigreturn sys_rt_sigreturn 41#define stub_rt_sigreturn sys_rt_sigreturn
42 42
43#define __SYSCALL(nr, sym) extern asmlinkage void sym(void) ; 43#define __SYSCALL(nr, sym) extern asmlinkage void sym(void) ;
44#undef ASM_X86__UNISTD_64_H 44#undef _ASM_X86_UNISTD_64_H
45#include <asm-x86/unistd_64.h> 45#include "../../x86/include/asm/unistd_64.h"
46 46
47#undef __SYSCALL 47#undef __SYSCALL
48#define __SYSCALL(nr, sym) [ nr ] = sym, 48#define __SYSCALL(nr, sym) [ nr ] = sym,
49#undef ASM_X86__UNISTD_64_H 49#undef _ASM_X86_UNISTD_64_H
50 50
51typedef void (*sys_call_ptr_t)(void); 51typedef void (*sys_call_ptr_t)(void);
52 52
@@ -64,7 +64,7 @@ extern void sys_ni_syscall(void);
64 */ 64 */
65 65
66sys_call_ptr_t sys_call_table[] __cacheline_aligned = { 66sys_call_ptr_t sys_call_table[] __cacheline_aligned = {
67#include <asm-x86/unistd_64.h> 67#include "../../x86/include/asm/unistd_64.h"
68}; 68};
69 69
70int syscall_table_size = sizeof(sys_call_table); 70int syscall_table_size = sizeof(sys_call_table);
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 5b9b12321ad1..350bee1d54dc 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -116,6 +116,9 @@ config GENERIC_TIME_VSYSCALL
116config ARCH_HAS_CPU_RELAX 116config ARCH_HAS_CPU_RELAX
117 def_bool y 117 def_bool y
118 118
119config ARCH_HAS_DEFAULT_IDLE
120 def_bool y
121
119config ARCH_HAS_CACHE_LINE_SIZE 122config ARCH_HAS_CACHE_LINE_SIZE
120 def_bool y 123 def_bool y
121 124
@@ -1635,6 +1638,8 @@ source "arch/x86/kernel/cpu/cpufreq/Kconfig"
1635 1638
1636source "drivers/cpuidle/Kconfig" 1639source "drivers/cpuidle/Kconfig"
1637 1640
1641source "drivers/idle/Kconfig"
1642
1638endmenu 1643endmenu
1639 1644
1640 1645
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index f5631da585b6..d1a47adb5aec 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -110,16 +110,16 @@ KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
110mcore-y := arch/x86/mach-default/ 110mcore-y := arch/x86/mach-default/
111 111
112# Voyager subarch support 112# Voyager subarch support
113mflags-$(CONFIG_X86_VOYAGER) := -Iinclude/asm-x86/mach-voyager 113mflags-$(CONFIG_X86_VOYAGER) := -Iarch/x86/include/asm/mach-voyager
114mcore-$(CONFIG_X86_VOYAGER) := arch/x86/mach-voyager/ 114mcore-$(CONFIG_X86_VOYAGER) := arch/x86/mach-voyager/
115 115
116# generic subarchitecture 116# generic subarchitecture
117mflags-$(CONFIG_X86_GENERICARCH):= -Iinclude/asm-x86/mach-generic 117mflags-$(CONFIG_X86_GENERICARCH):= -Iarch/x86/include/asm/mach-generic
118fcore-$(CONFIG_X86_GENERICARCH) += arch/x86/mach-generic/ 118fcore-$(CONFIG_X86_GENERICARCH) += arch/x86/mach-generic/
119mcore-$(CONFIG_X86_GENERICARCH) := arch/x86/mach-default/ 119mcore-$(CONFIG_X86_GENERICARCH) := arch/x86/mach-default/
120 120
121# default subarch .h files 121# default subarch .h files
122mflags-y += -Iinclude/asm-x86/mach-default 122mflags-y += -Iarch/x86/include/asm/mach-default
123 123
124# 64 bit does not support subarch support - clear sub arch variables 124# 64 bit does not support subarch support - clear sub arch variables
125fcore-$(CONFIG_X86_64) := 125fcore-$(CONFIG_X86_64) :=
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index 5780d361105b..da062216948a 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -16,7 +16,7 @@
16 */ 16 */
17#undef CONFIG_PARAVIRT 17#undef CONFIG_PARAVIRT
18#ifdef CONFIG_X86_32 18#ifdef CONFIG_X86_32
19#define ASM_X86__DESC_H 1 19#define _ASM_X86_DESC_H 1
20#endif 20#endif
21 21
22#ifdef CONFIG_X86_64 22#ifdef CONFIG_X86_64
diff --git a/arch/x86/boot/video-bios.c b/arch/x86/boot/video-bios.c
index 49f26aaaebc8..3fa979c9c363 100644
--- a/arch/x86/boot/video-bios.c
+++ b/arch/x86/boot/video-bios.c
@@ -17,7 +17,7 @@
17#include "boot.h" 17#include "boot.h"
18#include "video.h" 18#include "video.h"
19 19
20__videocard video_bios; 20static __videocard video_bios;
21 21
22/* Set a conventional BIOS mode */ 22/* Set a conventional BIOS mode */
23static int set_bios_mode(u8 mode); 23static int set_bios_mode(u8 mode);
@@ -119,7 +119,7 @@ static int bios_probe(void)
119 return nmodes; 119 return nmodes;
120} 120}
121 121
122__videocard video_bios = 122static __videocard video_bios =
123{ 123{
124 .card_name = "BIOS", 124 .card_name = "BIOS",
125 .probe = bios_probe, 125 .probe = bios_probe,
diff --git a/arch/x86/boot/video-vesa.c b/arch/x86/boot/video-vesa.c
index 99b3079dc6ab..75115849af33 100644
--- a/arch/x86/boot/video-vesa.c
+++ b/arch/x86/boot/video-vesa.c
@@ -20,7 +20,7 @@
20static struct vesa_general_info vginfo; 20static struct vesa_general_info vginfo;
21static struct vesa_mode_info vminfo; 21static struct vesa_mode_info vminfo;
22 22
23__videocard video_vesa; 23static __videocard video_vesa;
24 24
25#ifndef _WAKEUP 25#ifndef _WAKEUP
26static void vesa_store_mode_params_graphics(void); 26static void vesa_store_mode_params_graphics(void);
@@ -293,7 +293,7 @@ void vesa_store_edid(void)
293 293
294#endif /* not _WAKEUP */ 294#endif /* not _WAKEUP */
295 295
296__videocard video_vesa = 296static __videocard video_vesa =
297{ 297{
298 .card_name = "VESA", 298 .card_name = "VESA",
299 .probe = vesa_probe, 299 .probe = vesa_probe,
diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild
new file mode 100644
index 000000000000..4a8e80cdcfa5
--- /dev/null
+++ b/arch/x86/include/asm/Kbuild
@@ -0,0 +1,24 @@
1include include/asm-generic/Kbuild.asm
2
3header-y += boot.h
4header-y += bootparam.h
5header-y += debugreg.h
6header-y += ldt.h
7header-y += msr-index.h
8header-y += prctl.h
9header-y += ptrace-abi.h
10header-y += sigcontext32.h
11header-y += ucontext.h
12header-y += processor-flags.h
13
14unifdef-y += e820.h
15unifdef-y += ist.h
16unifdef-y += mce.h
17unifdef-y += msr.h
18unifdef-y += mtrr.h
19unifdef-y += posix_types_32.h
20unifdef-y += posix_types_64.h
21unifdef-y += unistd_32.h
22unifdef-y += unistd_64.h
23unifdef-y += vm86.h
24unifdef-y += vsyscall.h
diff --git a/arch/x86/include/asm/a.out-core.h b/arch/x86/include/asm/a.out-core.h
new file mode 100644
index 000000000000..37822206083e
--- /dev/null
+++ b/arch/x86/include/asm/a.out-core.h
@@ -0,0 +1,73 @@
1/* a.out coredump register dumper
2 *
3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11
12#ifndef _ASM_X86_A_OUT_CORE_H
13#define _ASM_X86_A_OUT_CORE_H
14
15#ifdef __KERNEL__
16#ifdef CONFIG_X86_32
17
18#include <linux/user.h>
19#include <linux/elfcore.h>
20
21/*
22 * fill in the user structure for an a.out core dump
23 */
24static inline void aout_dump_thread(struct pt_regs *regs, struct user *dump)
25{
26 u16 gs;
27
28/* changed the size calculations - should hopefully work better. lbt */
29 dump->magic = CMAGIC;
30 dump->start_code = 0;
31 dump->start_stack = regs->sp & ~(PAGE_SIZE - 1);
32 dump->u_tsize = ((unsigned long)current->mm->end_code) >> PAGE_SHIFT;
33 dump->u_dsize = ((unsigned long)(current->mm->brk + (PAGE_SIZE - 1)))
34 >> PAGE_SHIFT;
35 dump->u_dsize -= dump->u_tsize;
36 dump->u_ssize = 0;
37 dump->u_debugreg[0] = current->thread.debugreg0;
38 dump->u_debugreg[1] = current->thread.debugreg1;
39 dump->u_debugreg[2] = current->thread.debugreg2;
40 dump->u_debugreg[3] = current->thread.debugreg3;
41 dump->u_debugreg[4] = 0;
42 dump->u_debugreg[5] = 0;
43 dump->u_debugreg[6] = current->thread.debugreg6;
44 dump->u_debugreg[7] = current->thread.debugreg7;
45
46 if (dump->start_stack < TASK_SIZE)
47 dump->u_ssize = ((unsigned long)(TASK_SIZE - dump->start_stack))
48 >> PAGE_SHIFT;
49
50 dump->regs.bx = regs->bx;
51 dump->regs.cx = regs->cx;
52 dump->regs.dx = regs->dx;
53 dump->regs.si = regs->si;
54 dump->regs.di = regs->di;
55 dump->regs.bp = regs->bp;
56 dump->regs.ax = regs->ax;
57 dump->regs.ds = (u16)regs->ds;
58 dump->regs.es = (u16)regs->es;
59 dump->regs.fs = (u16)regs->fs;
60 savesegment(gs, gs);
61 dump->regs.orig_ax = regs->orig_ax;
62 dump->regs.ip = regs->ip;
63 dump->regs.cs = (u16)regs->cs;
64 dump->regs.flags = regs->flags;
65 dump->regs.sp = regs->sp;
66 dump->regs.ss = (u16)regs->ss;
67
68 dump->u_fpvalid = dump_fpu(regs, &dump->i387);
69}
70
71#endif /* CONFIG_X86_32 */
72#endif /* __KERNEL__ */
73#endif /* _ASM_X86_A_OUT_CORE_H */
diff --git a/arch/x86/include/asm/a.out.h b/arch/x86/include/asm/a.out.h
new file mode 100644
index 000000000000..4684f97a5bbd
--- /dev/null
+++ b/arch/x86/include/asm/a.out.h
@@ -0,0 +1,20 @@
1#ifndef _ASM_X86_A_OUT_H
2#define _ASM_X86_A_OUT_H
3
4struct exec
5{
6 unsigned int a_info; /* Use macros N_MAGIC, etc for access */
7 unsigned a_text; /* length of text, in bytes */
8 unsigned a_data; /* length of data, in bytes */
9 unsigned a_bss; /* length of uninitialized data area for file, in bytes */
10 unsigned a_syms; /* length of symbol table data in file, in bytes */
11 unsigned a_entry; /* start address */
12 unsigned a_trsize; /* length of relocation info for text, in bytes */
13 unsigned a_drsize; /* length of relocation info for data, in bytes */
14};
15
16#define N_TRSIZE(a) ((a).a_trsize)
17#define N_DRSIZE(a) ((a).a_drsize)
18#define N_SYMSIZE(a) ((a).a_syms)
19
20#endif /* _ASM_X86_A_OUT_H */
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
new file mode 100644
index 000000000000..8d676d8ecde9
--- /dev/null
+++ b/arch/x86/include/asm/acpi.h
@@ -0,0 +1,178 @@
1#ifndef _ASM_X86_ACPI_H
2#define _ASM_X86_ACPI_H
3
4/*
5 * Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
6 * Copyright (C) 2001 Patrick Mochel <mochel@osdl.org>
7 *
8 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 *
24 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25 */
26#include <acpi/pdc_intel.h>
27
28#include <asm/numa.h>
29#include <asm/processor.h>
30#include <asm/mmu.h>
31#include <asm/mpspec.h>
32
33#define COMPILER_DEPENDENT_INT64 long long
34#define COMPILER_DEPENDENT_UINT64 unsigned long long
35
36/*
37 * Calling conventions:
38 *
39 * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads)
40 * ACPI_EXTERNAL_XFACE - External ACPI interfaces
41 * ACPI_INTERNAL_XFACE - Internal ACPI interfaces
42 * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces
43 */
44#define ACPI_SYSTEM_XFACE
45#define ACPI_EXTERNAL_XFACE
46#define ACPI_INTERNAL_XFACE
47#define ACPI_INTERNAL_VAR_XFACE
48
49/* Asm macros */
50
51#define ACPI_ASM_MACROS
52#define BREAKPOINT3
53#define ACPI_DISABLE_IRQS() local_irq_disable()
54#define ACPI_ENABLE_IRQS() local_irq_enable()
55#define ACPI_FLUSH_CPU_CACHE() wbinvd()
56
57int __acpi_acquire_global_lock(unsigned int *lock);
58int __acpi_release_global_lock(unsigned int *lock);
59
60#define ACPI_ACQUIRE_GLOBAL_LOCK(facs, Acq) \
61 ((Acq) = __acpi_acquire_global_lock(&facs->global_lock))
62
63#define ACPI_RELEASE_GLOBAL_LOCK(facs, Acq) \
64 ((Acq) = __acpi_release_global_lock(&facs->global_lock))
65
66/*
67 * Math helper asm macros
68 */
69#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \
70 asm("divl %2;" \
71 : "=a"(q32), "=d"(r32) \
72 : "r"(d32), \
73 "0"(n_lo), "1"(n_hi))
74
75
76#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \
77 asm("shrl $1,%2 ;" \
78 "rcrl $1,%3;" \
79 : "=r"(n_hi), "=r"(n_lo) \
80 : "0"(n_hi), "1"(n_lo))
81
82#ifdef CONFIG_ACPI
83extern int acpi_lapic;
84extern int acpi_ioapic;
85extern int acpi_noirq;
86extern int acpi_strict;
87extern int acpi_disabled;
88extern int acpi_ht;
89extern int acpi_pci_disabled;
90extern int acpi_skip_timer_override;
91extern int acpi_use_timer_override;
92
93extern u8 acpi_sci_flags;
94extern int acpi_sci_override_gsi;
95void acpi_pic_sci_set_trigger(unsigned int, u16);
96
97static inline void disable_acpi(void)
98{
99 acpi_disabled = 1;
100 acpi_ht = 0;
101 acpi_pci_disabled = 1;
102 acpi_noirq = 1;
103}
104
105/* Fixmap pages to reserve for ACPI boot-time tables (see fixmap.h) */
106#define FIX_ACPI_PAGES 4
107
108extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq);
109
110static inline void acpi_noirq_set(void) { acpi_noirq = 1; }
111static inline void acpi_disable_pci(void)
112{
113 acpi_pci_disabled = 1;
114 acpi_noirq_set();
115}
116extern int acpi_irq_balance_set(char *str);
117
118/* routines for saving/restoring kernel state */
119extern int acpi_save_state_mem(void);
120extern void acpi_restore_state_mem(void);
121
122extern unsigned long acpi_wakeup_address;
123
124/* early initialization routine */
125extern void acpi_reserve_bootmem(void);
126
127/*
128 * Check if the CPU can handle C2 and deeper
129 */
130static inline unsigned int acpi_processor_cstate_check(unsigned int max_cstate)
131{
132 /*
133 * Early models (<=5) of AMD Opterons are not supposed to go into
134 * C2 state.
135 *
136 * Steppings 0x0A and later are good
137 */
138 if (boot_cpu_data.x86 == 0x0F &&
139 boot_cpu_data.x86_vendor == X86_VENDOR_AMD &&
140 boot_cpu_data.x86_model <= 0x05 &&
141 boot_cpu_data.x86_mask < 0x0A)
142 return 1;
143 else if (boot_cpu_has(X86_FEATURE_AMDC1E))
144 return 1;
145 else
146 return max_cstate;
147}
148
149#else /* !CONFIG_ACPI */
150
151#define acpi_lapic 0
152#define acpi_ioapic 0
153static inline void acpi_noirq_set(void) { }
154static inline void acpi_disable_pci(void) { }
155static inline void disable_acpi(void) { }
156
157#endif /* !CONFIG_ACPI */
158
159#define ARCH_HAS_POWER_INIT 1
160
161struct bootnode;
162
163#ifdef CONFIG_ACPI_NUMA
164extern int acpi_numa;
165extern int acpi_scan_nodes(unsigned long start, unsigned long end);
166#define NR_NODE_MEMBLKS (MAX_NUMNODES*2)
167extern void acpi_fake_nodes(const struct bootnode *fake_nodes,
168 int num_nodes);
169#else
170static inline void acpi_fake_nodes(const struct bootnode *fake_nodes,
171 int num_nodes)
172{
173}
174#endif
175
176#define acpi_unlazy_tlb(x) leave_mm(x)
177
178#endif /* _ASM_X86_ACPI_H */
diff --git a/arch/x86/include/asm/agp.h b/arch/x86/include/asm/agp.h
new file mode 100644
index 000000000000..9825cd64c9b6
--- /dev/null
+++ b/arch/x86/include/asm/agp.h
@@ -0,0 +1,35 @@
1#ifndef _ASM_X86_AGP_H
2#define _ASM_X86_AGP_H
3
4#include <asm/pgtable.h>
5#include <asm/cacheflush.h>
6
7/*
8 * Functions to keep the agpgart mappings coherent with the MMU. The
9 * GART gives the CPU a physical alias of pages in memory. The alias
10 * region is mapped uncacheable. Make sure there are no conflicting
11 * mappings with different cachability attributes for the same
12 * page. This avoids data corruption on some CPUs.
13 */
14
15#define map_page_into_agp(page) set_pages_uc(page, 1)
16#define unmap_page_from_agp(page) set_pages_wb(page, 1)
17
18/*
19 * Could use CLFLUSH here if the cpu supports it. But then it would
20 * need to be called for each cacheline of the whole page so it may
21 * not be worth it. Would need a page for it.
22 */
23#define flush_agp_cache() wbinvd()
24
25/* Convert a physical address to an address suitable for the GART. */
26#define phys_to_gart(x) (x)
27#define gart_to_phys(x) (x)
28
29/* GATT allocation. Returns/accepts GATT kernel virtual address. */
30#define alloc_gatt_pages(order) \
31 ((char *)__get_free_pages(GFP_KERNEL, (order)))
32#define free_gatt_pages(table, order) \
33 free_pages((unsigned long)(table), (order))
34
35#endif /* _ASM_X86_AGP_H */
diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h
new file mode 100644
index 000000000000..e2077d343c33
--- /dev/null
+++ b/arch/x86/include/asm/alternative-asm.h
@@ -0,0 +1,22 @@
1#ifdef __ASSEMBLY__
2
3#ifdef CONFIG_X86_32
4# define X86_ALIGN .long
5#else
6# define X86_ALIGN .quad
7#endif
8
9#ifdef CONFIG_SMP
10 .macro LOCK_PREFIX
111: lock
12 .section .smp_locks,"a"
13 .align 4
14 X86_ALIGN 1b
15 .previous
16 .endm
17#else
18 .macro LOCK_PREFIX
19 .endm
20#endif
21
22#endif /* __ASSEMBLY__ */
diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h
new file mode 100644
index 000000000000..f6aa18eadf71
--- /dev/null
+++ b/arch/x86/include/asm/alternative.h
@@ -0,0 +1,183 @@
1#ifndef _ASM_X86_ALTERNATIVE_H
2#define _ASM_X86_ALTERNATIVE_H
3
4#include <linux/types.h>
5#include <linux/stddef.h>
6#include <asm/asm.h>
7
8/*
9 * Alternative inline assembly for SMP.
10 *
11 * The LOCK_PREFIX macro defined here replaces the LOCK and
12 * LOCK_PREFIX macros used everywhere in the source tree.
13 *
14 * SMP alternatives use the same data structures as the other
15 * alternatives and the X86_FEATURE_UP flag to indicate the case of a
16 * UP system running a SMP kernel. The existing apply_alternatives()
17 * works fine for patching a SMP kernel for UP.
18 *
19 * The SMP alternative tables can be kept after boot and contain both
20 * UP and SMP versions of the instructions to allow switching back to
21 * SMP at runtime, when hotplugging in a new CPU, which is especially
22 * useful in virtualized environments.
23 *
24 * The very common lock prefix is handled as special case in a
25 * separate table which is a pure address list without replacement ptr
26 * and size information. That keeps the table sizes small.
27 */
28
29#ifdef CONFIG_SMP
30#define LOCK_PREFIX \
31 ".section .smp_locks,\"a\"\n" \
32 _ASM_ALIGN "\n" \
33 _ASM_PTR "661f\n" /* address */ \
34 ".previous\n" \
35 "661:\n\tlock; "
36
37#else /* ! CONFIG_SMP */
38#define LOCK_PREFIX ""
39#endif
40
41/* This must be included *after* the definition of LOCK_PREFIX */
42#include <asm/cpufeature.h>
43
44struct alt_instr {
45 u8 *instr; /* original instruction */
46 u8 *replacement;
47 u8 cpuid; /* cpuid bit set for replacement */
48 u8 instrlen; /* length of original instruction */
49 u8 replacementlen; /* length of new instruction, <= instrlen */
50 u8 pad1;
51#ifdef CONFIG_X86_64
52 u32 pad2;
53#endif
54};
55
56extern void alternative_instructions(void);
57extern void apply_alternatives(struct alt_instr *start, struct alt_instr *end);
58
59struct module;
60
61#ifdef CONFIG_SMP
62extern void alternatives_smp_module_add(struct module *mod, char *name,
63 void *locks, void *locks_end,
64 void *text, void *text_end);
65extern void alternatives_smp_module_del(struct module *mod);
66extern void alternatives_smp_switch(int smp);
67#else
68static inline void alternatives_smp_module_add(struct module *mod, char *name,
69 void *locks, void *locks_end,
70 void *text, void *text_end) {}
71static inline void alternatives_smp_module_del(struct module *mod) {}
72static inline void alternatives_smp_switch(int smp) {}
73#endif /* CONFIG_SMP */
74
75const unsigned char *const *find_nop_table(void);
76
77/*
78 * Alternative instructions for different CPU types or capabilities.
79 *
80 * This allows to use optimized instructions even on generic binary
81 * kernels.
82 *
83 * length of oldinstr must be longer or equal the length of newinstr
84 * It can be padded with nops as needed.
85 *
86 * For non barrier like inlines please define new variants
87 * without volatile and memory clobber.
88 */
89#define alternative(oldinstr, newinstr, feature) \
90 asm volatile ("661:\n\t" oldinstr "\n662:\n" \
91 ".section .altinstructions,\"a\"\n" \
92 _ASM_ALIGN "\n" \
93 _ASM_PTR "661b\n" /* label */ \
94 _ASM_PTR "663f\n" /* new instruction */ \
95 " .byte %c0\n" /* feature bit */ \
96 " .byte 662b-661b\n" /* sourcelen */ \
97 " .byte 664f-663f\n" /* replacementlen */ \
98 ".previous\n" \
99 ".section .altinstr_replacement,\"ax\"\n" \
100 "663:\n\t" newinstr "\n664:\n" /* replacement */ \
101 ".previous" :: "i" (feature) : "memory")
102
103/*
104 * Alternative inline assembly with input.
105 *
106 * Pecularities:
107 * No memory clobber here.
108 * Argument numbers start with 1.
109 * Best is to use constraints that are fixed size (like (%1) ... "r")
110 * If you use variable sized constraints like "m" or "g" in the
111 * replacement make sure to pad to the worst case length.
112 */
113#define alternative_input(oldinstr, newinstr, feature, input...) \
114 asm volatile ("661:\n\t" oldinstr "\n662:\n" \
115 ".section .altinstructions,\"a\"\n" \
116 _ASM_ALIGN "\n" \
117 _ASM_PTR "661b\n" /* label */ \
118 _ASM_PTR "663f\n" /* new instruction */ \
119 " .byte %c0\n" /* feature bit */ \
120 " .byte 662b-661b\n" /* sourcelen */ \
121 " .byte 664f-663f\n" /* replacementlen */ \
122 ".previous\n" \
123 ".section .altinstr_replacement,\"ax\"\n" \
124 "663:\n\t" newinstr "\n664:\n" /* replacement */ \
125 ".previous" :: "i" (feature), ##input)
126
127/* Like alternative_input, but with a single output argument */
128#define alternative_io(oldinstr, newinstr, feature, output, input...) \
129 asm volatile ("661:\n\t" oldinstr "\n662:\n" \
130 ".section .altinstructions,\"a\"\n" \
131 _ASM_ALIGN "\n" \
132 _ASM_PTR "661b\n" /* label */ \
133 _ASM_PTR "663f\n" /* new instruction */ \
134 " .byte %c[feat]\n" /* feature bit */ \
135 " .byte 662b-661b\n" /* sourcelen */ \
136 " .byte 664f-663f\n" /* replacementlen */ \
137 ".previous\n" \
138 ".section .altinstr_replacement,\"ax\"\n" \
139 "663:\n\t" newinstr "\n664:\n" /* replacement */ \
140 ".previous" : output : [feat] "i" (feature), ##input)
141
142/*
143 * use this macro(s) if you need more than one output parameter
144 * in alternative_io
145 */
146#define ASM_OUTPUT2(a, b) a, b
147
148struct paravirt_patch_site;
149#ifdef CONFIG_PARAVIRT
150void apply_paravirt(struct paravirt_patch_site *start,
151 struct paravirt_patch_site *end);
152#else
153static inline void apply_paravirt(struct paravirt_patch_site *start,
154 struct paravirt_patch_site *end)
155{}
156#define __parainstructions NULL
157#define __parainstructions_end NULL
158#endif
159
160extern void add_nops(void *insns, unsigned int len);
161
162/*
163 * Clear and restore the kernel write-protection flag on the local CPU.
164 * Allows the kernel to edit read-only pages.
165 * Side-effect: any interrupt handler running between save and restore will have
166 * the ability to write to read-only pages.
167 *
168 * Warning:
169 * Code patching in the UP case is safe if NMIs and MCE handlers are stopped and
170 * no thread can be preempted in the instructions being modified (no iret to an
171 * invalid instruction possible) or if the instructions are changed from a
172 * consistent state to another consistent state atomically.
173 * More care must be taken when modifying code in the SMP case because of
174 * Intel's errata.
175 * On the local CPU you need to be protected again NMI or MCE handlers seeing an
176 * inconsistent instruction while you patch.
177 * The _early version expects the memory to already be RW.
178 */
179
180extern void *text_poke(void *addr, const void *opcode, size_t len);
181extern void *text_poke_early(void *addr, const void *opcode, size_t len);
182
183#endif /* _ASM_X86_ALTERNATIVE_H */
diff --git a/arch/x86/include/asm/amd_iommu.h b/arch/x86/include/asm/amd_iommu.h
new file mode 100644
index 000000000000..f712344329bc
--- /dev/null
+++ b/arch/x86/include/asm/amd_iommu.h
@@ -0,0 +1,35 @@
1/*
2 * Copyright (C) 2007-2008 Advanced Micro Devices, Inc.
3 * Author: Joerg Roedel <joerg.roedel@amd.com>
4 * Leo Duran <leo.duran@amd.com>
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 as published
8 * by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20#ifndef _ASM_X86_AMD_IOMMU_H
21#define _ASM_X86_AMD_IOMMU_H
22
23#include <linux/irqreturn.h>
24
25#ifdef CONFIG_AMD_IOMMU
26extern int amd_iommu_init(void);
27extern int amd_iommu_init_dma_ops(void);
28extern void amd_iommu_detect(void);
29extern irqreturn_t amd_iommu_int_handler(int irq, void *data);
30#else
31static inline int amd_iommu_init(void) { return -ENODEV; }
32static inline void amd_iommu_detect(void) { }
33#endif
34
35#endif /* _ASM_X86_AMD_IOMMU_H */
diff --git a/arch/x86/include/asm/amd_iommu_types.h b/arch/x86/include/asm/amd_iommu_types.h
new file mode 100644
index 000000000000..1a30c0440c6b
--- /dev/null
+++ b/arch/x86/include/asm/amd_iommu_types.h
@@ -0,0 +1,404 @@
1/*
2 * Copyright (C) 2007-2008 Advanced Micro Devices, Inc.
3 * Author: Joerg Roedel <joerg.roedel@amd.com>
4 * Leo Duran <leo.duran@amd.com>
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 as published
8 * by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20#ifndef _ASM_X86_AMD_IOMMU_TYPES_H
21#define _ASM_X86_AMD_IOMMU_TYPES_H
22
23#include <linux/types.h>
24#include <linux/list.h>
25#include <linux/spinlock.h>
26
27/*
28 * some size calculation constants
29 */
30#define DEV_TABLE_ENTRY_SIZE 32
31#define ALIAS_TABLE_ENTRY_SIZE 2
32#define RLOOKUP_TABLE_ENTRY_SIZE (sizeof(void *))
33
34/* Length of the MMIO region for the AMD IOMMU */
35#define MMIO_REGION_LENGTH 0x4000
36
37/* Capability offsets used by the driver */
38#define MMIO_CAP_HDR_OFFSET 0x00
39#define MMIO_RANGE_OFFSET 0x0c
40#define MMIO_MISC_OFFSET 0x10
41
42/* Masks, shifts and macros to parse the device range capability */
43#define MMIO_RANGE_LD_MASK 0xff000000
44#define MMIO_RANGE_FD_MASK 0x00ff0000
45#define MMIO_RANGE_BUS_MASK 0x0000ff00
46#define MMIO_RANGE_LD_SHIFT 24
47#define MMIO_RANGE_FD_SHIFT 16
48#define MMIO_RANGE_BUS_SHIFT 8
49#define MMIO_GET_LD(x) (((x) & MMIO_RANGE_LD_MASK) >> MMIO_RANGE_LD_SHIFT)
50#define MMIO_GET_FD(x) (((x) & MMIO_RANGE_FD_MASK) >> MMIO_RANGE_FD_SHIFT)
51#define MMIO_GET_BUS(x) (((x) & MMIO_RANGE_BUS_MASK) >> MMIO_RANGE_BUS_SHIFT)
52#define MMIO_MSI_NUM(x) ((x) & 0x1f)
53
54/* Flag masks for the AMD IOMMU exclusion range */
55#define MMIO_EXCL_ENABLE_MASK 0x01ULL
56#define MMIO_EXCL_ALLOW_MASK 0x02ULL
57
58/* Used offsets into the MMIO space */
59#define MMIO_DEV_TABLE_OFFSET 0x0000
60#define MMIO_CMD_BUF_OFFSET 0x0008
61#define MMIO_EVT_BUF_OFFSET 0x0010
62#define MMIO_CONTROL_OFFSET 0x0018
63#define MMIO_EXCL_BASE_OFFSET 0x0020
64#define MMIO_EXCL_LIMIT_OFFSET 0x0028
65#define MMIO_CMD_HEAD_OFFSET 0x2000
66#define MMIO_CMD_TAIL_OFFSET 0x2008
67#define MMIO_EVT_HEAD_OFFSET 0x2010
68#define MMIO_EVT_TAIL_OFFSET 0x2018
69#define MMIO_STATUS_OFFSET 0x2020
70
71/* MMIO status bits */
72#define MMIO_STATUS_COM_WAIT_INT_MASK 0x04
73
74/* event logging constants */
75#define EVENT_ENTRY_SIZE 0x10
76#define EVENT_TYPE_SHIFT 28
77#define EVENT_TYPE_MASK 0xf
78#define EVENT_TYPE_ILL_DEV 0x1
79#define EVENT_TYPE_IO_FAULT 0x2
80#define EVENT_TYPE_DEV_TAB_ERR 0x3
81#define EVENT_TYPE_PAGE_TAB_ERR 0x4
82#define EVENT_TYPE_ILL_CMD 0x5
83#define EVENT_TYPE_CMD_HARD_ERR 0x6
84#define EVENT_TYPE_IOTLB_INV_TO 0x7
85#define EVENT_TYPE_INV_DEV_REQ 0x8
86#define EVENT_DEVID_MASK 0xffff
87#define EVENT_DEVID_SHIFT 0
88#define EVENT_DOMID_MASK 0xffff
89#define EVENT_DOMID_SHIFT 0
90#define EVENT_FLAGS_MASK 0xfff
91#define EVENT_FLAGS_SHIFT 0x10
92
93/* feature control bits */
94#define CONTROL_IOMMU_EN 0x00ULL
95#define CONTROL_HT_TUN_EN 0x01ULL
96#define CONTROL_EVT_LOG_EN 0x02ULL
97#define CONTROL_EVT_INT_EN 0x03ULL
98#define CONTROL_COMWAIT_EN 0x04ULL
99#define CONTROL_PASSPW_EN 0x08ULL
100#define CONTROL_RESPASSPW_EN 0x09ULL
101#define CONTROL_COHERENT_EN 0x0aULL
102#define CONTROL_ISOC_EN 0x0bULL
103#define CONTROL_CMDBUF_EN 0x0cULL
104#define CONTROL_PPFLOG_EN 0x0dULL
105#define CONTROL_PPFINT_EN 0x0eULL
106
107/* command specific defines */
108#define CMD_COMPL_WAIT 0x01
109#define CMD_INV_DEV_ENTRY 0x02
110#define CMD_INV_IOMMU_PAGES 0x03
111
112#define CMD_COMPL_WAIT_STORE_MASK 0x01
113#define CMD_COMPL_WAIT_INT_MASK 0x02
114#define CMD_INV_IOMMU_PAGES_SIZE_MASK 0x01
115#define CMD_INV_IOMMU_PAGES_PDE_MASK 0x02
116
117#define CMD_INV_IOMMU_ALL_PAGES_ADDRESS 0x7fffffffffffffffULL
118
119/* macros and definitions for device table entries */
120#define DEV_ENTRY_VALID 0x00
121#define DEV_ENTRY_TRANSLATION 0x01
122#define DEV_ENTRY_IR 0x3d
123#define DEV_ENTRY_IW 0x3e
124#define DEV_ENTRY_NO_PAGE_FAULT 0x62
125#define DEV_ENTRY_EX 0x67
126#define DEV_ENTRY_SYSMGT1 0x68
127#define DEV_ENTRY_SYSMGT2 0x69
128#define DEV_ENTRY_INIT_PASS 0xb8
129#define DEV_ENTRY_EINT_PASS 0xb9
130#define DEV_ENTRY_NMI_PASS 0xba
131#define DEV_ENTRY_LINT0_PASS 0xbe
132#define DEV_ENTRY_LINT1_PASS 0xbf
133#define DEV_ENTRY_MODE_MASK 0x07
134#define DEV_ENTRY_MODE_SHIFT 0x09
135
136/* constants to configure the command buffer */
137#define CMD_BUFFER_SIZE 8192
138#define CMD_BUFFER_ENTRIES 512
139#define MMIO_CMD_SIZE_SHIFT 56
140#define MMIO_CMD_SIZE_512 (0x9ULL << MMIO_CMD_SIZE_SHIFT)
141
142/* constants for event buffer handling */
143#define EVT_BUFFER_SIZE 8192 /* 512 entries */
144#define EVT_LEN_MASK (0x9ULL << 56)
145
146#define PAGE_MODE_1_LEVEL 0x01
147#define PAGE_MODE_2_LEVEL 0x02
148#define PAGE_MODE_3_LEVEL 0x03
149
150#define IOMMU_PDE_NL_0 0x000ULL
151#define IOMMU_PDE_NL_1 0x200ULL
152#define IOMMU_PDE_NL_2 0x400ULL
153#define IOMMU_PDE_NL_3 0x600ULL
154
155#define IOMMU_PTE_L2_INDEX(address) (((address) >> 30) & 0x1ffULL)
156#define IOMMU_PTE_L1_INDEX(address) (((address) >> 21) & 0x1ffULL)
157#define IOMMU_PTE_L0_INDEX(address) (((address) >> 12) & 0x1ffULL)
158
159#define IOMMU_MAP_SIZE_L1 (1ULL << 21)
160#define IOMMU_MAP_SIZE_L2 (1ULL << 30)
161#define IOMMU_MAP_SIZE_L3 (1ULL << 39)
162
163#define IOMMU_PTE_P (1ULL << 0)
164#define IOMMU_PTE_TV (1ULL << 1)
165#define IOMMU_PTE_U (1ULL << 59)
166#define IOMMU_PTE_FC (1ULL << 60)
167#define IOMMU_PTE_IR (1ULL << 61)
168#define IOMMU_PTE_IW (1ULL << 62)
169
170#define IOMMU_L1_PDE(address) \
171 ((address) | IOMMU_PDE_NL_1 | IOMMU_PTE_P | IOMMU_PTE_IR | IOMMU_PTE_IW)
172#define IOMMU_L2_PDE(address) \
173 ((address) | IOMMU_PDE_NL_2 | IOMMU_PTE_P | IOMMU_PTE_IR | IOMMU_PTE_IW)
174
175#define IOMMU_PAGE_MASK (((1ULL << 52) - 1) & ~0xfffULL)
176#define IOMMU_PTE_PRESENT(pte) ((pte) & IOMMU_PTE_P)
177#define IOMMU_PTE_PAGE(pte) (phys_to_virt((pte) & IOMMU_PAGE_MASK))
178#define IOMMU_PTE_MODE(pte) (((pte) >> 9) & 0x07)
179
180#define IOMMU_PROT_MASK 0x03
181#define IOMMU_PROT_IR 0x01
182#define IOMMU_PROT_IW 0x02
183
184/* IOMMU capabilities */
185#define IOMMU_CAP_IOTLB 24
186#define IOMMU_CAP_NPCACHE 26
187
188#define MAX_DOMAIN_ID 65536
189
190/* FIXME: move this macro to <linux/pci.h> */
191#define PCI_BUS(x) (((x) >> 8) & 0xff)
192
193/*
194 * This structure contains generic data for IOMMU protection domains
195 * independent of their use.
196 */
197struct protection_domain {
198 spinlock_t lock; /* mostly used to lock the page table*/
199 u16 id; /* the domain id written to the device table */
200 int mode; /* paging mode (0-6 levels) */
201 u64 *pt_root; /* page table root pointer */
202 void *priv; /* private data */
203};
204
205/*
206 * Data container for a dma_ops specific protection domain
207 */
208struct dma_ops_domain {
209 struct list_head list;
210
211 /* generic protection domain information */
212 struct protection_domain domain;
213
214 /* size of the aperture for the mappings */
215 unsigned long aperture_size;
216
217 /* address we start to search for free addresses */
218 unsigned long next_bit;
219
220 /* address allocation bitmap */
221 unsigned long *bitmap;
222
223 /*
224 * Array of PTE pages for the aperture. In this array we save all the
225 * leaf pages of the domain page table used for the aperture. This way
226 * we don't need to walk the page table to find a specific PTE. We can
227 * just calculate its address in constant time.
228 */
229 u64 **pte_pages;
230
231 /* This will be set to true when TLB needs to be flushed */
232 bool need_flush;
233
234 /*
235 * if this is a preallocated domain, keep the device for which it was
236 * preallocated in this variable
237 */
238 u16 target_dev;
239};
240
241/*
242 * Structure where we save information about one hardware AMD IOMMU in the
243 * system.
244 */
245struct amd_iommu {
246 struct list_head list;
247
248 /* locks the accesses to the hardware */
249 spinlock_t lock;
250
251 /* Pointer to PCI device of this IOMMU */
252 struct pci_dev *dev;
253
254 /*
255 * Capability pointer. There could be more than one IOMMU per PCI
256 * device function if there are more than one AMD IOMMU capability
257 * pointers.
258 */
259 u16 cap_ptr;
260
261 /* physical address of MMIO space */
262 u64 mmio_phys;
263 /* virtual address of MMIO space */
264 u8 *mmio_base;
265
266 /* capabilities of that IOMMU read from ACPI */
267 u32 cap;
268
269 /* pci domain of this IOMMU */
270 u16 pci_seg;
271
272 /* first device this IOMMU handles. read from PCI */
273 u16 first_device;
274 /* last device this IOMMU handles. read from PCI */
275 u16 last_device;
276
277 /* start of exclusion range of that IOMMU */
278 u64 exclusion_start;
279 /* length of exclusion range of that IOMMU */
280 u64 exclusion_length;
281
282 /* command buffer virtual address */
283 u8 *cmd_buf;
284 /* size of command buffer */
285 u32 cmd_buf_size;
286
287 /* event buffer virtual address */
288 u8 *evt_buf;
289 /* size of event buffer */
290 u32 evt_buf_size;
291 /* MSI number for event interrupt */
292 u16 evt_msi_num;
293
294 /* if one, we need to send a completion wait command */
295 int need_sync;
296
297 /* true if interrupts for this IOMMU are already enabled */
298 bool int_enabled;
299
300 /* default dma_ops domain for that IOMMU */
301 struct dma_ops_domain *default_dom;
302};
303
304/*
305 * List with all IOMMUs in the system. This list is not locked because it is
306 * only written and read at driver initialization or suspend time
307 */
308extern struct list_head amd_iommu_list;
309
310/*
311 * Structure defining one entry in the device table
312 */
313struct dev_table_entry {
314 u32 data[8];
315};
316
317/*
318 * One entry for unity mappings parsed out of the ACPI table.
319 */
320struct unity_map_entry {
321 struct list_head list;
322
323 /* starting device id this entry is used for (including) */
324 u16 devid_start;
325 /* end device id this entry is used for (including) */
326 u16 devid_end;
327
328 /* start address to unity map (including) */
329 u64 address_start;
330 /* end address to unity map (including) */
331 u64 address_end;
332
333 /* required protection */
334 int prot;
335};
336
337/*
338 * List of all unity mappings. It is not locked because as runtime it is only
339 * read. It is created at ACPI table parsing time.
340 */
341extern struct list_head amd_iommu_unity_map;
342
343/*
344 * Data structures for device handling
345 */
346
347/*
348 * Device table used by hardware. Read and write accesses by software are
349 * locked with the amd_iommu_pd_table lock.
350 */
351extern struct dev_table_entry *amd_iommu_dev_table;
352
353/*
354 * Alias table to find requestor ids to device ids. Not locked because only
355 * read on runtime.
356 */
357extern u16 *amd_iommu_alias_table;
358
359/*
360 * Reverse lookup table to find the IOMMU which translates a specific device.
361 */
362extern struct amd_iommu **amd_iommu_rlookup_table;
363
364/* size of the dma_ops aperture as power of 2 */
365extern unsigned amd_iommu_aperture_order;
366
367/* largest PCI device id we expect translation requests for */
368extern u16 amd_iommu_last_bdf;
369
370/* data structures for protection domain handling */
371extern struct protection_domain **amd_iommu_pd_table;
372
373/* allocation bitmap for domain ids */
374extern unsigned long *amd_iommu_pd_alloc_bitmap;
375
376/* will be 1 if device isolation is enabled */
377extern int amd_iommu_isolate;
378
379/*
380 * If true, the addresses will be flushed on unmap time, not when
381 * they are reused
382 */
383extern bool amd_iommu_unmap_flush;
384
385/* takes a PCI device id and prints it out in a readable form */
386static inline void print_devid(u16 devid, int nl)
387{
388 int bus = devid >> 8;
389 int dev = devid >> 3 & 0x1f;
390 int fn = devid & 0x07;
391
392 printk("%02x:%02x.%x", bus, dev, fn);
393 if (nl)
394 printk("\n");
395}
396
397/* takes bus and device/function and returns the device id
398 * FIXME: should that be in generic PCI code? */
399static inline u16 calc_devid(u8 bus, u8 devfn)
400{
401 return (((u16)bus) << 8) | devfn;
402}
403
404#endif /* _ASM_X86_AMD_IOMMU_TYPES_H */
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
new file mode 100644
index 000000000000..3b1510b4fc57
--- /dev/null
+++ b/arch/x86/include/asm/apic.h
@@ -0,0 +1,199 @@
1#ifndef _ASM_X86_APIC_H
2#define _ASM_X86_APIC_H
3
4#include <linux/pm.h>
5#include <linux/delay.h>
6
7#include <asm/alternative.h>
8#include <asm/fixmap.h>
9#include <asm/apicdef.h>
10#include <asm/processor.h>
11#include <asm/system.h>
12#include <asm/cpufeature.h>
13#include <asm/msr.h>
14
15#define ARCH_APICTIMER_STOPS_ON_C3 1
16
17/*
18 * Debugging macros
19 */
20#define APIC_QUIET 0
21#define APIC_VERBOSE 1
22#define APIC_DEBUG 2
23
24/*
25 * Define the default level of output to be very little
26 * This can be turned up by using apic=verbose for more
27 * information and apic=debug for _lots_ of information.
28 * apic_verbosity is defined in apic.c
29 */
30#define apic_printk(v, s, a...) do { \
31 if ((v) <= apic_verbosity) \
32 printk(s, ##a); \
33 } while (0)
34
35
36extern void generic_apic_probe(void);
37
38#ifdef CONFIG_X86_LOCAL_APIC
39
40extern unsigned int apic_verbosity;
41extern int local_apic_timer_c2_ok;
42
43extern int disable_apic;
44/*
45 * Basic functions accessing APICs.
46 */
47#ifdef CONFIG_PARAVIRT
48#include <asm/paravirt.h>
49#else
50#define setup_boot_clock setup_boot_APIC_clock
51#define setup_secondary_clock setup_secondary_APIC_clock
52#endif
53
54extern int is_vsmp_box(void);
55extern void xapic_wait_icr_idle(void);
56extern u32 safe_xapic_wait_icr_idle(void);
57extern u64 xapic_icr_read(void);
58extern void xapic_icr_write(u32, u32);
59extern int setup_profiling_timer(unsigned int);
60
61static inline void native_apic_mem_write(u32 reg, u32 v)
62{
63 volatile u32 *addr = (volatile u32 *)(APIC_BASE + reg);
64
65 alternative_io("movl %0, %1", "xchgl %0, %1", X86_FEATURE_11AP,
66 ASM_OUTPUT2("=r" (v), "=m" (*addr)),
67 ASM_OUTPUT2("0" (v), "m" (*addr)));
68}
69
70static inline u32 native_apic_mem_read(u32 reg)
71{
72 return *((volatile u32 *)(APIC_BASE + reg));
73}
74
75static inline void native_apic_msr_write(u32 reg, u32 v)
76{
77 if (reg == APIC_DFR || reg == APIC_ID || reg == APIC_LDR ||
78 reg == APIC_LVR)
79 return;
80
81 wrmsr(APIC_BASE_MSR + (reg >> 4), v, 0);
82}
83
84static inline u32 native_apic_msr_read(u32 reg)
85{
86 u32 low, high;
87
88 if (reg == APIC_DFR)
89 return -1;
90
91 rdmsr(APIC_BASE_MSR + (reg >> 4), low, high);
92 return low;
93}
94
95#ifndef CONFIG_X86_32
96extern int x2apic, x2apic_preenabled;
97extern void check_x2apic(void);
98extern void enable_x2apic(void);
99extern void enable_IR_x2apic(void);
100extern void x2apic_icr_write(u32 low, u32 id);
101static inline int x2apic_enabled(void)
102{
103 int msr, msr2;
104
105 if (!cpu_has_x2apic)
106 return 0;
107
108 rdmsr(MSR_IA32_APICBASE, msr, msr2);
109 if (msr & X2APIC_ENABLE)
110 return 1;
111 return 0;
112}
113#else
114#define x2apic_enabled() 0
115#endif
116
117struct apic_ops {
118 u32 (*read)(u32 reg);
119 void (*write)(u32 reg, u32 v);
120 u64 (*icr_read)(void);
121 void (*icr_write)(u32 low, u32 high);
122 void (*wait_icr_idle)(void);
123 u32 (*safe_wait_icr_idle)(void);
124};
125
126extern struct apic_ops *apic_ops;
127
128#define apic_read (apic_ops->read)
129#define apic_write (apic_ops->write)
130#define apic_icr_read (apic_ops->icr_read)
131#define apic_icr_write (apic_ops->icr_write)
132#define apic_wait_icr_idle (apic_ops->wait_icr_idle)
133#define safe_apic_wait_icr_idle (apic_ops->safe_wait_icr_idle)
134
135extern int get_physical_broadcast(void);
136
137#ifdef CONFIG_X86_64
138static inline void ack_x2APIC_irq(void)
139{
140 /* Docs say use 0 for future compatibility */
141 native_apic_msr_write(APIC_EOI, 0);
142}
143#endif
144
145
146static inline void ack_APIC_irq(void)
147{
148 /*
149 * ack_APIC_irq() actually gets compiled as a single instruction
150 * ... yummie.
151 */
152
153 /* Docs say use 0 for future compatibility */
154 apic_write(APIC_EOI, 0);
155}
156
157extern int lapic_get_maxlvt(void);
158extern void clear_local_APIC(void);
159extern void connect_bsp_APIC(void);
160extern void disconnect_bsp_APIC(int virt_wire_setup);
161extern void disable_local_APIC(void);
162extern void lapic_shutdown(void);
163extern int verify_local_APIC(void);
164extern void cache_APIC_registers(void);
165extern void sync_Arb_IDs(void);
166extern void init_bsp_APIC(void);
167extern void setup_local_APIC(void);
168extern void end_local_APIC_setup(void);
169extern void init_apic_mappings(void);
170extern void setup_boot_APIC_clock(void);
171extern void setup_secondary_APIC_clock(void);
172extern int APIC_init_uniprocessor(void);
173extern void enable_NMI_through_LVT0(void);
174
175/*
176 * On 32bit this is mach-xxx local
177 */
178#ifdef CONFIG_X86_64
179extern void early_init_lapic_mapping(void);
180extern int apic_is_clustered_box(void);
181#else
182static inline int apic_is_clustered_box(void)
183{
184 return 0;
185}
186#endif
187
188extern u8 setup_APIC_eilvt_mce(u8 vector, u8 msg_type, u8 mask);
189extern u8 setup_APIC_eilvt_ibs(u8 vector, u8 msg_type, u8 mask);
190
191
192#else /* !CONFIG_X86_LOCAL_APIC */
193static inline void lapic_shutdown(void) { }
194#define local_apic_timer_c2_ok 1
195static inline void init_apic_mappings(void) { }
196
197#endif /* !CONFIG_X86_LOCAL_APIC */
198
199#endif /* _ASM_X86_APIC_H */
diff --git a/arch/x86/include/asm/apicdef.h b/arch/x86/include/asm/apicdef.h
new file mode 100644
index 000000000000..63134e31e8b9
--- /dev/null
+++ b/arch/x86/include/asm/apicdef.h
@@ -0,0 +1,417 @@
1#ifndef _ASM_X86_APICDEF_H
2#define _ASM_X86_APICDEF_H
3
4/*
5 * Constants for various Intel APICs. (local APIC, IOAPIC, etc.)
6 *
7 * Alan Cox <Alan.Cox@linux.org>, 1995.
8 * Ingo Molnar <mingo@redhat.com>, 1999, 2000
9 */
10
11#define APIC_DEFAULT_PHYS_BASE 0xfee00000
12
13#define APIC_ID 0x20
14
15#define APIC_LVR 0x30
16#define APIC_LVR_MASK 0xFF00FF
17#define GET_APIC_VERSION(x) ((x) & 0xFFu)
18#define GET_APIC_MAXLVT(x) (((x) >> 16) & 0xFFu)
19#ifdef CONFIG_X86_32
20# define APIC_INTEGRATED(x) ((x) & 0xF0u)
21#else
22# define APIC_INTEGRATED(x) (1)
23#endif
24#define APIC_XAPIC(x) ((x) >= 0x14)
25#define APIC_TASKPRI 0x80
26#define APIC_TPRI_MASK 0xFFu
27#define APIC_ARBPRI 0x90
28#define APIC_ARBPRI_MASK 0xFFu
29#define APIC_PROCPRI 0xA0
30#define APIC_EOI 0xB0
31#define APIC_EIO_ACK 0x0
32#define APIC_RRR 0xC0
33#define APIC_LDR 0xD0
34#define APIC_LDR_MASK (0xFFu << 24)
35#define GET_APIC_LOGICAL_ID(x) (((x) >> 24) & 0xFFu)
36#define SET_APIC_LOGICAL_ID(x) (((x) << 24))
37#define APIC_ALL_CPUS 0xFFu
38#define APIC_DFR 0xE0
39#define APIC_DFR_CLUSTER 0x0FFFFFFFul
40#define APIC_DFR_FLAT 0xFFFFFFFFul
41#define APIC_SPIV 0xF0
42#define APIC_SPIV_FOCUS_DISABLED (1 << 9)
43#define APIC_SPIV_APIC_ENABLED (1 << 8)
44#define APIC_ISR 0x100
45#define APIC_ISR_NR 0x8 /* Number of 32 bit ISR registers. */
46#define APIC_TMR 0x180
47#define APIC_IRR 0x200
48#define APIC_ESR 0x280
49#define APIC_ESR_SEND_CS 0x00001
50#define APIC_ESR_RECV_CS 0x00002
51#define APIC_ESR_SEND_ACC 0x00004
52#define APIC_ESR_RECV_ACC 0x00008
53#define APIC_ESR_SENDILL 0x00020
54#define APIC_ESR_RECVILL 0x00040
55#define APIC_ESR_ILLREGA 0x00080
56#define APIC_ICR 0x300
57#define APIC_DEST_SELF 0x40000
58#define APIC_DEST_ALLINC 0x80000
59#define APIC_DEST_ALLBUT 0xC0000
60#define APIC_ICR_RR_MASK 0x30000
61#define APIC_ICR_RR_INVALID 0x00000
62#define APIC_ICR_RR_INPROG 0x10000
63#define APIC_ICR_RR_VALID 0x20000
64#define APIC_INT_LEVELTRIG 0x08000
65#define APIC_INT_ASSERT 0x04000
66#define APIC_ICR_BUSY 0x01000
67#define APIC_DEST_LOGICAL 0x00800
68#define APIC_DEST_PHYSICAL 0x00000
69#define APIC_DM_FIXED 0x00000
70#define APIC_DM_LOWEST 0x00100
71#define APIC_DM_SMI 0x00200
72#define APIC_DM_REMRD 0x00300
73#define APIC_DM_NMI 0x00400
74#define APIC_DM_INIT 0x00500
75#define APIC_DM_STARTUP 0x00600
76#define APIC_DM_EXTINT 0x00700
77#define APIC_VECTOR_MASK 0x000FF
78#define APIC_ICR2 0x310
79#define GET_APIC_DEST_FIELD(x) (((x) >> 24) & 0xFF)
80#define SET_APIC_DEST_FIELD(x) ((x) << 24)
81#define APIC_LVTT 0x320
82#define APIC_LVTTHMR 0x330
83#define APIC_LVTPC 0x340
84#define APIC_LVT0 0x350
85#define APIC_LVT_TIMER_BASE_MASK (0x3 << 18)
86#define GET_APIC_TIMER_BASE(x) (((x) >> 18) & 0x3)
87#define SET_APIC_TIMER_BASE(x) (((x) << 18))
88#define APIC_TIMER_BASE_CLKIN 0x0
89#define APIC_TIMER_BASE_TMBASE 0x1
90#define APIC_TIMER_BASE_DIV 0x2
91#define APIC_LVT_TIMER_PERIODIC (1 << 17)
92#define APIC_LVT_MASKED (1 << 16)
93#define APIC_LVT_LEVEL_TRIGGER (1 << 15)
94#define APIC_LVT_REMOTE_IRR (1 << 14)
95#define APIC_INPUT_POLARITY (1 << 13)
96#define APIC_SEND_PENDING (1 << 12)
97#define APIC_MODE_MASK 0x700
98#define GET_APIC_DELIVERY_MODE(x) (((x) >> 8) & 0x7)
99#define SET_APIC_DELIVERY_MODE(x, y) (((x) & ~0x700) | ((y) << 8))
100#define APIC_MODE_FIXED 0x0
101#define APIC_MODE_NMI 0x4
102#define APIC_MODE_EXTINT 0x7
103#define APIC_LVT1 0x360
104#define APIC_LVTERR 0x370
105#define APIC_TMICT 0x380
106#define APIC_TMCCT 0x390
107#define APIC_TDCR 0x3E0
108#define APIC_SELF_IPI 0x3F0
109#define APIC_TDR_DIV_TMBASE (1 << 2)
110#define APIC_TDR_DIV_1 0xB
111#define APIC_TDR_DIV_2 0x0
112#define APIC_TDR_DIV_4 0x1
113#define APIC_TDR_DIV_8 0x2
114#define APIC_TDR_DIV_16 0x3
115#define APIC_TDR_DIV_32 0x8
116#define APIC_TDR_DIV_64 0x9
117#define APIC_TDR_DIV_128 0xA
118#define APIC_EILVT0 0x500
119#define APIC_EILVT_NR_AMD_K8 1 /* # of extended interrupts */
120#define APIC_EILVT_NR_AMD_10H 4
121#define APIC_EILVT_LVTOFF(x) (((x) >> 4) & 0xF)
122#define APIC_EILVT_MSG_FIX 0x0
123#define APIC_EILVT_MSG_SMI 0x2
124#define APIC_EILVT_MSG_NMI 0x4
125#define APIC_EILVT_MSG_EXT 0x7
126#define APIC_EILVT_MASKED (1 << 16)
127#define APIC_EILVT1 0x510
128#define APIC_EILVT2 0x520
129#define APIC_EILVT3 0x530
130
131#define APIC_BASE (fix_to_virt(FIX_APIC_BASE))
132#define APIC_BASE_MSR 0x800
133#define X2APIC_ENABLE (1UL << 10)
134
135#ifdef CONFIG_X86_32
136# define MAX_IO_APICS 64
137#else
138# define MAX_IO_APICS 128
139# define MAX_LOCAL_APIC 32768
140#endif
141
142/*
143 * All x86-64 systems are xAPIC compatible.
144 * In the following, "apicid" is a physical APIC ID.
145 */
146#define XAPIC_DEST_CPUS_SHIFT 4
147#define XAPIC_DEST_CPUS_MASK ((1u << XAPIC_DEST_CPUS_SHIFT) - 1)
148#define XAPIC_DEST_CLUSTER_MASK (XAPIC_DEST_CPUS_MASK << XAPIC_DEST_CPUS_SHIFT)
149#define APIC_CLUSTER(apicid) ((apicid) & XAPIC_DEST_CLUSTER_MASK)
150#define APIC_CLUSTERID(apicid) (APIC_CLUSTER(apicid) >> XAPIC_DEST_CPUS_SHIFT)
151#define APIC_CPUID(apicid) ((apicid) & XAPIC_DEST_CPUS_MASK)
152#define NUM_APIC_CLUSTERS ((BAD_APICID + 1) >> XAPIC_DEST_CPUS_SHIFT)
153
154/*
155 * the local APIC register structure, memory mapped. Not terribly well
156 * tested, but we might eventually use this one in the future - the
157 * problem why we cannot use it right now is the P5 APIC, it has an
158 * errata which cannot take 8-bit reads and writes, only 32-bit ones ...
159 */
160#define u32 unsigned int
161
162struct local_apic {
163
164/*000*/ struct { u32 __reserved[4]; } __reserved_01;
165
166/*010*/ struct { u32 __reserved[4]; } __reserved_02;
167
168/*020*/ struct { /* APIC ID Register */
169 u32 __reserved_1 : 24,
170 phys_apic_id : 4,
171 __reserved_2 : 4;
172 u32 __reserved[3];
173 } id;
174
175/*030*/ const
176 struct { /* APIC Version Register */
177 u32 version : 8,
178 __reserved_1 : 8,
179 max_lvt : 8,
180 __reserved_2 : 8;
181 u32 __reserved[3];
182 } version;
183
184/*040*/ struct { u32 __reserved[4]; } __reserved_03;
185
186/*050*/ struct { u32 __reserved[4]; } __reserved_04;
187
188/*060*/ struct { u32 __reserved[4]; } __reserved_05;
189
190/*070*/ struct { u32 __reserved[4]; } __reserved_06;
191
192/*080*/ struct { /* Task Priority Register */
193 u32 priority : 8,
194 __reserved_1 : 24;
195 u32 __reserved_2[3];
196 } tpr;
197
198/*090*/ const
199 struct { /* Arbitration Priority Register */
200 u32 priority : 8,
201 __reserved_1 : 24;
202 u32 __reserved_2[3];
203 } apr;
204
205/*0A0*/ const
206 struct { /* Processor Priority Register */
207 u32 priority : 8,
208 __reserved_1 : 24;
209 u32 __reserved_2[3];
210 } ppr;
211
212/*0B0*/ struct { /* End Of Interrupt Register */
213 u32 eoi;
214 u32 __reserved[3];
215 } eoi;
216
217/*0C0*/ struct { u32 __reserved[4]; } __reserved_07;
218
219/*0D0*/ struct { /* Logical Destination Register */
220 u32 __reserved_1 : 24,
221 logical_dest : 8;
222 u32 __reserved_2[3];
223 } ldr;
224
225/*0E0*/ struct { /* Destination Format Register */
226 u32 __reserved_1 : 28,
227 model : 4;
228 u32 __reserved_2[3];
229 } dfr;
230
231/*0F0*/ struct { /* Spurious Interrupt Vector Register */
232 u32 spurious_vector : 8,
233 apic_enabled : 1,
234 focus_cpu : 1,
235 __reserved_2 : 22;
236 u32 __reserved_3[3];
237 } svr;
238
239/*100*/ struct { /* In Service Register */
240/*170*/ u32 bitfield;
241 u32 __reserved[3];
242 } isr [8];
243
244/*180*/ struct { /* Trigger Mode Register */
245/*1F0*/ u32 bitfield;
246 u32 __reserved[3];
247 } tmr [8];
248
249/*200*/ struct { /* Interrupt Request Register */
250/*270*/ u32 bitfield;
251 u32 __reserved[3];
252 } irr [8];
253
254/*280*/ union { /* Error Status Register */
255 struct {
256 u32 send_cs_error : 1,
257 receive_cs_error : 1,
258 send_accept_error : 1,
259 receive_accept_error : 1,
260 __reserved_1 : 1,
261 send_illegal_vector : 1,
262 receive_illegal_vector : 1,
263 illegal_register_address : 1,
264 __reserved_2 : 24;
265 u32 __reserved_3[3];
266 } error_bits;
267 struct {
268 u32 errors;
269 u32 __reserved_3[3];
270 } all_errors;
271 } esr;
272
273/*290*/ struct { u32 __reserved[4]; } __reserved_08;
274
275/*2A0*/ struct { u32 __reserved[4]; } __reserved_09;
276
277/*2B0*/ struct { u32 __reserved[4]; } __reserved_10;
278
279/*2C0*/ struct { u32 __reserved[4]; } __reserved_11;
280
281/*2D0*/ struct { u32 __reserved[4]; } __reserved_12;
282
283/*2E0*/ struct { u32 __reserved[4]; } __reserved_13;
284
285/*2F0*/ struct { u32 __reserved[4]; } __reserved_14;
286
287/*300*/ struct { /* Interrupt Command Register 1 */
288 u32 vector : 8,
289 delivery_mode : 3,
290 destination_mode : 1,
291 delivery_status : 1,
292 __reserved_1 : 1,
293 level : 1,
294 trigger : 1,
295 __reserved_2 : 2,
296 shorthand : 2,
297 __reserved_3 : 12;
298 u32 __reserved_4[3];
299 } icr1;
300
301/*310*/ struct { /* Interrupt Command Register 2 */
302 union {
303 u32 __reserved_1 : 24,
304 phys_dest : 4,
305 __reserved_2 : 4;
306 u32 __reserved_3 : 24,
307 logical_dest : 8;
308 } dest;
309 u32 __reserved_4[3];
310 } icr2;
311
312/*320*/ struct { /* LVT - Timer */
313 u32 vector : 8,
314 __reserved_1 : 4,
315 delivery_status : 1,
316 __reserved_2 : 3,
317 mask : 1,
318 timer_mode : 1,
319 __reserved_3 : 14;
320 u32 __reserved_4[3];
321 } lvt_timer;
322
323/*330*/ struct { /* LVT - Thermal Sensor */
324 u32 vector : 8,
325 delivery_mode : 3,
326 __reserved_1 : 1,
327 delivery_status : 1,
328 __reserved_2 : 3,
329 mask : 1,
330 __reserved_3 : 15;
331 u32 __reserved_4[3];
332 } lvt_thermal;
333
334/*340*/ struct { /* LVT - Performance Counter */
335 u32 vector : 8,
336 delivery_mode : 3,
337 __reserved_1 : 1,
338 delivery_status : 1,
339 __reserved_2 : 3,
340 mask : 1,
341 __reserved_3 : 15;
342 u32 __reserved_4[3];
343 } lvt_pc;
344
345/*350*/ struct { /* LVT - LINT0 */
346 u32 vector : 8,
347 delivery_mode : 3,
348 __reserved_1 : 1,
349 delivery_status : 1,
350 polarity : 1,
351 remote_irr : 1,
352 trigger : 1,
353 mask : 1,
354 __reserved_2 : 15;
355 u32 __reserved_3[3];
356 } lvt_lint0;
357
358/*360*/ struct { /* LVT - LINT1 */
359 u32 vector : 8,
360 delivery_mode : 3,
361 __reserved_1 : 1,
362 delivery_status : 1,
363 polarity : 1,
364 remote_irr : 1,
365 trigger : 1,
366 mask : 1,
367 __reserved_2 : 15;
368 u32 __reserved_3[3];
369 } lvt_lint1;
370
371/*370*/ struct { /* LVT - Error */
372 u32 vector : 8,
373 __reserved_1 : 4,
374 delivery_status : 1,
375 __reserved_2 : 3,
376 mask : 1,
377 __reserved_3 : 15;
378 u32 __reserved_4[3];
379 } lvt_error;
380
381/*380*/ struct { /* Timer Initial Count Register */
382 u32 initial_count;
383 u32 __reserved_2[3];
384 } timer_icr;
385
386/*390*/ const
387 struct { /* Timer Current Count Register */
388 u32 curr_count;
389 u32 __reserved_2[3];
390 } timer_ccr;
391
392/*3A0*/ struct { u32 __reserved[4]; } __reserved_16;
393
394/*3B0*/ struct { u32 __reserved[4]; } __reserved_17;
395
396/*3C0*/ struct { u32 __reserved[4]; } __reserved_18;
397
398/*3D0*/ struct { u32 __reserved[4]; } __reserved_19;
399
400/*3E0*/ struct { /* Timer Divide Configuration Register */
401 u32 divisor : 4,
402 __reserved_1 : 28;
403 u32 __reserved_2[3];
404 } timer_dcr;
405
406/*3F0*/ struct { u32 __reserved[4]; } __reserved_20;
407
408} __attribute__ ((packed));
409
410#undef u32
411
412#ifdef CONFIG_X86_32
413 #define BAD_APICID 0xFFu
414#else
415 #define BAD_APICID 0xFFFFu
416#endif
417#endif /* _ASM_X86_APICDEF_H */
diff --git a/arch/x86/include/asm/arch_hooks.h b/arch/x86/include/asm/arch_hooks.h
new file mode 100644
index 000000000000..cbd4957838a6
--- /dev/null
+++ b/arch/x86/include/asm/arch_hooks.h
@@ -0,0 +1,26 @@
1#ifndef _ASM_X86_ARCH_HOOKS_H
2#define _ASM_X86_ARCH_HOOKS_H
3
4#include <linux/interrupt.h>
5
6/*
7 * linux/include/asm/arch_hooks.h
8 *
9 * define the architecture specific hooks
10 */
11
12/* these aren't arch hooks, they are generic routines
13 * that can be used by the hooks */
14extern void init_ISA_irqs(void);
15extern irqreturn_t timer_interrupt(int irq, void *dev_id);
16
17/* these are the defined hooks */
18extern void intr_init_hook(void);
19extern void pre_intr_init_hook(void);
20extern void pre_setup_arch_hook(void);
21extern void trap_init_hook(void);
22extern void pre_time_init_hook(void);
23extern void time_init_hook(void);
24extern void mca_nmi_hook(void);
25
26#endif /* _ASM_X86_ARCH_HOOKS_H */
diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
new file mode 100644
index 000000000000..56be78f582f0
--- /dev/null
+++ b/arch/x86/include/asm/asm.h
@@ -0,0 +1,47 @@
1#ifndef _ASM_X86_ASM_H
2#define _ASM_X86_ASM_H
3
4#ifdef __ASSEMBLY__
5# define __ASM_FORM(x) x
6# define __ASM_EX_SEC .section __ex_table
7#else
8# define __ASM_FORM(x) " " #x " "
9# define __ASM_EX_SEC " .section __ex_table,\"a\"\n"
10#endif
11
12#ifdef CONFIG_X86_32
13# define __ASM_SEL(a,b) __ASM_FORM(a)
14#else
15# define __ASM_SEL(a,b) __ASM_FORM(b)
16#endif
17
18#define __ASM_SIZE(inst) __ASM_SEL(inst##l, inst##q)
19#define __ASM_REG(reg) __ASM_SEL(e##reg, r##reg)
20
21#define _ASM_PTR __ASM_SEL(.long, .quad)
22#define _ASM_ALIGN __ASM_SEL(.balign 4, .balign 8)
23
24#define _ASM_MOV __ASM_SIZE(mov)
25#define _ASM_INC __ASM_SIZE(inc)
26#define _ASM_DEC __ASM_SIZE(dec)
27#define _ASM_ADD __ASM_SIZE(add)
28#define _ASM_SUB __ASM_SIZE(sub)
29#define _ASM_XADD __ASM_SIZE(xadd)
30
31#define _ASM_AX __ASM_REG(ax)
32#define _ASM_BX __ASM_REG(bx)
33#define _ASM_CX __ASM_REG(cx)
34#define _ASM_DX __ASM_REG(dx)
35#define _ASM_SP __ASM_REG(sp)
36#define _ASM_BP __ASM_REG(bp)
37#define _ASM_SI __ASM_REG(si)
38#define _ASM_DI __ASM_REG(di)
39
40/* Exception table entry */
41# define _ASM_EXTABLE(from,to) \
42 __ASM_EX_SEC \
43 _ASM_ALIGN "\n" \
44 _ASM_PTR #from "," #to "\n" \
45 " .previous\n"
46
47#endif /* _ASM_X86_ASM_H */
diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
new file mode 100644
index 000000000000..4e1b8873c474
--- /dev/null
+++ b/arch/x86/include/asm/atomic.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "atomic_32.h"
3#else
4# include "atomic_64.h"
5#endif
diff --git a/arch/x86/include/asm/atomic_32.h b/arch/x86/include/asm/atomic_32.h
new file mode 100644
index 000000000000..ad5b9f6ecddf
--- /dev/null
+++ b/arch/x86/include/asm/atomic_32.h
@@ -0,0 +1,259 @@
1#ifndef _ASM_X86_ATOMIC_32_H
2#define _ASM_X86_ATOMIC_32_H
3
4#include <linux/compiler.h>
5#include <asm/processor.h>
6#include <asm/cmpxchg.h>
7
8/*
9 * Atomic operations that C can't guarantee us. Useful for
10 * resource counting etc..
11 */
12
13/*
14 * Make sure gcc doesn't try to be clever and move things around
15 * on us. We need to use _exactly_ the address the user gave us,
16 * not some alias that contains the same information.
17 */
18typedef struct {
19 int counter;
20} atomic_t;
21
22#define ATOMIC_INIT(i) { (i) }
23
24/**
25 * atomic_read - read atomic variable
26 * @v: pointer of type atomic_t
27 *
28 * Atomically reads the value of @v.
29 */
30#define atomic_read(v) ((v)->counter)
31
32/**
33 * atomic_set - set atomic variable
34 * @v: pointer of type atomic_t
35 * @i: required value
36 *
37 * Atomically sets the value of @v to @i.
38 */
39#define atomic_set(v, i) (((v)->counter) = (i))
40
41/**
42 * atomic_add - add integer to atomic variable
43 * @i: integer value to add
44 * @v: pointer of type atomic_t
45 *
46 * Atomically adds @i to @v.
47 */
48static inline void atomic_add(int i, atomic_t *v)
49{
50 asm volatile(LOCK_PREFIX "addl %1,%0"
51 : "+m" (v->counter)
52 : "ir" (i));
53}
54
55/**
56 * atomic_sub - subtract integer from atomic variable
57 * @i: integer value to subtract
58 * @v: pointer of type atomic_t
59 *
60 * Atomically subtracts @i from @v.
61 */
62static inline void atomic_sub(int i, atomic_t *v)
63{
64 asm volatile(LOCK_PREFIX "subl %1,%0"
65 : "+m" (v->counter)
66 : "ir" (i));
67}
68
69/**
70 * atomic_sub_and_test - subtract value from variable and test result
71 * @i: integer value to subtract
72 * @v: pointer of type atomic_t
73 *
74 * Atomically subtracts @i from @v and returns
75 * true if the result is zero, or false for all
76 * other cases.
77 */
78static inline int atomic_sub_and_test(int i, atomic_t *v)
79{
80 unsigned char c;
81
82 asm volatile(LOCK_PREFIX "subl %2,%0; sete %1"
83 : "+m" (v->counter), "=qm" (c)
84 : "ir" (i) : "memory");
85 return c;
86}
87
88/**
89 * atomic_inc - increment atomic variable
90 * @v: pointer of type atomic_t
91 *
92 * Atomically increments @v by 1.
93 */
94static inline void atomic_inc(atomic_t *v)
95{
96 asm volatile(LOCK_PREFIX "incl %0"
97 : "+m" (v->counter));
98}
99
100/**
101 * atomic_dec - decrement atomic variable
102 * @v: pointer of type atomic_t
103 *
104 * Atomically decrements @v by 1.
105 */
106static inline void atomic_dec(atomic_t *v)
107{
108 asm volatile(LOCK_PREFIX "decl %0"
109 : "+m" (v->counter));
110}
111
112/**
113 * atomic_dec_and_test - decrement and test
114 * @v: pointer of type atomic_t
115 *
116 * Atomically decrements @v by 1 and
117 * returns true if the result is 0, or false for all other
118 * cases.
119 */
120static inline int atomic_dec_and_test(atomic_t *v)
121{
122 unsigned char c;
123
124 asm volatile(LOCK_PREFIX "decl %0; sete %1"
125 : "+m" (v->counter), "=qm" (c)
126 : : "memory");
127 return c != 0;
128}
129
130/**
131 * atomic_inc_and_test - increment and test
132 * @v: pointer of type atomic_t
133 *
134 * Atomically increments @v by 1
135 * and returns true if the result is zero, or false for all
136 * other cases.
137 */
138static inline int atomic_inc_and_test(atomic_t *v)
139{
140 unsigned char c;
141
142 asm volatile(LOCK_PREFIX "incl %0; sete %1"
143 : "+m" (v->counter), "=qm" (c)
144 : : "memory");
145 return c != 0;
146}
147
148/**
149 * atomic_add_negative - add and test if negative
150 * @v: pointer of type atomic_t
151 * @i: integer value to add
152 *
153 * Atomically adds @i to @v and returns true
154 * if the result is negative, or false when
155 * result is greater than or equal to zero.
156 */
157static inline int atomic_add_negative(int i, atomic_t *v)
158{
159 unsigned char c;
160
161 asm volatile(LOCK_PREFIX "addl %2,%0; sets %1"
162 : "+m" (v->counter), "=qm" (c)
163 : "ir" (i) : "memory");
164 return c;
165}
166
167/**
168 * atomic_add_return - add integer and return
169 * @v: pointer of type atomic_t
170 * @i: integer value to add
171 *
172 * Atomically adds @i to @v and returns @i + @v
173 */
174static inline int atomic_add_return(int i, atomic_t *v)
175{
176 int __i;
177#ifdef CONFIG_M386
178 unsigned long flags;
179 if (unlikely(boot_cpu_data.x86 <= 3))
180 goto no_xadd;
181#endif
182 /* Modern 486+ processor */
183 __i = i;
184 asm volatile(LOCK_PREFIX "xaddl %0, %1"
185 : "+r" (i), "+m" (v->counter)
186 : : "memory");
187 return i + __i;
188
189#ifdef CONFIG_M386
190no_xadd: /* Legacy 386 processor */
191 local_irq_save(flags);
192 __i = atomic_read(v);
193 atomic_set(v, i + __i);
194 local_irq_restore(flags);
195 return i + __i;
196#endif
197}
198
199/**
200 * atomic_sub_return - subtract integer and return
201 * @v: pointer of type atomic_t
202 * @i: integer value to subtract
203 *
204 * Atomically subtracts @i from @v and returns @v - @i
205 */
206static inline int atomic_sub_return(int i, atomic_t *v)
207{
208 return atomic_add_return(-i, v);
209}
210
211#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
212#define atomic_xchg(v, new) (xchg(&((v)->counter), (new)))
213
214/**
215 * atomic_add_unless - add unless the number is already a given value
216 * @v: pointer of type atomic_t
217 * @a: the amount to add to v...
218 * @u: ...unless v is equal to u.
219 *
220 * Atomically adds @a to @v, so long as @v was not already @u.
221 * Returns non-zero if @v was not @u, and zero otherwise.
222 */
223static inline int atomic_add_unless(atomic_t *v, int a, int u)
224{
225 int c, old;
226 c = atomic_read(v);
227 for (;;) {
228 if (unlikely(c == (u)))
229 break;
230 old = atomic_cmpxchg((v), c, c + (a));
231 if (likely(old == c))
232 break;
233 c = old;
234 }
235 return c != (u);
236}
237
238#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
239
240#define atomic_inc_return(v) (atomic_add_return(1, v))
241#define atomic_dec_return(v) (atomic_sub_return(1, v))
242
243/* These are x86-specific, used by some header files */
244#define atomic_clear_mask(mask, addr) \
245 asm volatile(LOCK_PREFIX "andl %0,%1" \
246 : : "r" (~(mask)), "m" (*(addr)) : "memory")
247
248#define atomic_set_mask(mask, addr) \
249 asm volatile(LOCK_PREFIX "orl %0,%1" \
250 : : "r" (mask), "m" (*(addr)) : "memory")
251
252/* Atomic operations are already serializing on x86 */
253#define smp_mb__before_atomic_dec() barrier()
254#define smp_mb__after_atomic_dec() barrier()
255#define smp_mb__before_atomic_inc() barrier()
256#define smp_mb__after_atomic_inc() barrier()
257
258#include <asm-generic/atomic.h>
259#endif /* _ASM_X86_ATOMIC_32_H */
diff --git a/arch/x86/include/asm/atomic_64.h b/arch/x86/include/asm/atomic_64.h
new file mode 100644
index 000000000000..279d2a731f3f
--- /dev/null
+++ b/arch/x86/include/asm/atomic_64.h
@@ -0,0 +1,473 @@
1#ifndef _ASM_X86_ATOMIC_64_H
2#define _ASM_X86_ATOMIC_64_H
3
4#include <asm/alternative.h>
5#include <asm/cmpxchg.h>
6
7/* atomic_t should be 32 bit signed type */
8
9/*
10 * Atomic operations that C can't guarantee us. Useful for
11 * resource counting etc..
12 */
13
14/*
15 * Make sure gcc doesn't try to be clever and move things around
16 * on us. We need to use _exactly_ the address the user gave us,
17 * not some alias that contains the same information.
18 */
19typedef struct {
20 int counter;
21} atomic_t;
22
23#define ATOMIC_INIT(i) { (i) }
24
25/**
26 * atomic_read - read atomic variable
27 * @v: pointer of type atomic_t
28 *
29 * Atomically reads the value of @v.
30 */
31#define atomic_read(v) ((v)->counter)
32
33/**
34 * atomic_set - set atomic variable
35 * @v: pointer of type atomic_t
36 * @i: required value
37 *
38 * Atomically sets the value of @v to @i.
39 */
40#define atomic_set(v, i) (((v)->counter) = (i))
41
42/**
43 * atomic_add - add integer to atomic variable
44 * @i: integer value to add
45 * @v: pointer of type atomic_t
46 *
47 * Atomically adds @i to @v.
48 */
49static inline void atomic_add(int i, atomic_t *v)
50{
51 asm volatile(LOCK_PREFIX "addl %1,%0"
52 : "=m" (v->counter)
53 : "ir" (i), "m" (v->counter));
54}
55
56/**
57 * atomic_sub - subtract the atomic variable
58 * @i: integer value to subtract
59 * @v: pointer of type atomic_t
60 *
61 * Atomically subtracts @i from @v.
62 */
63static inline void atomic_sub(int i, atomic_t *v)
64{
65 asm volatile(LOCK_PREFIX "subl %1,%0"
66 : "=m" (v->counter)
67 : "ir" (i), "m" (v->counter));
68}
69
70/**
71 * atomic_sub_and_test - subtract value from variable and test result
72 * @i: integer value to subtract
73 * @v: pointer of type atomic_t
74 *
75 * Atomically subtracts @i from @v and returns
76 * true if the result is zero, or false for all
77 * other cases.
78 */
79static inline int atomic_sub_and_test(int i, atomic_t *v)
80{
81 unsigned char c;
82
83 asm volatile(LOCK_PREFIX "subl %2,%0; sete %1"
84 : "=m" (v->counter), "=qm" (c)
85 : "ir" (i), "m" (v->counter) : "memory");
86 return c;
87}
88
89/**
90 * atomic_inc - increment atomic variable
91 * @v: pointer of type atomic_t
92 *
93 * Atomically increments @v by 1.
94 */
95static inline void atomic_inc(atomic_t *v)
96{
97 asm volatile(LOCK_PREFIX "incl %0"
98 : "=m" (v->counter)
99 : "m" (v->counter));
100}
101
102/**
103 * atomic_dec - decrement atomic variable
104 * @v: pointer of type atomic_t
105 *
106 * Atomically decrements @v by 1.
107 */
108static inline void atomic_dec(atomic_t *v)
109{
110 asm volatile(LOCK_PREFIX "decl %0"
111 : "=m" (v->counter)
112 : "m" (v->counter));
113}
114
115/**
116 * atomic_dec_and_test - decrement and test
117 * @v: pointer of type atomic_t
118 *
119 * Atomically decrements @v by 1 and
120 * returns true if the result is 0, or false for all other
121 * cases.
122 */
123static inline int atomic_dec_and_test(atomic_t *v)
124{
125 unsigned char c;
126
127 asm volatile(LOCK_PREFIX "decl %0; sete %1"
128 : "=m" (v->counter), "=qm" (c)
129 : "m" (v->counter) : "memory");
130 return c != 0;
131}
132
133/**
134 * atomic_inc_and_test - increment and test
135 * @v: pointer of type atomic_t
136 *
137 * Atomically increments @v by 1
138 * and returns true if the result is zero, or false for all
139 * other cases.
140 */
141static inline int atomic_inc_and_test(atomic_t *v)
142{
143 unsigned char c;
144
145 asm volatile(LOCK_PREFIX "incl %0; sete %1"
146 : "=m" (v->counter), "=qm" (c)
147 : "m" (v->counter) : "memory");
148 return c != 0;
149}
150
151/**
152 * atomic_add_negative - add and test if negative
153 * @i: integer value to add
154 * @v: pointer of type atomic_t
155 *
156 * Atomically adds @i to @v and returns true
157 * if the result is negative, or false when
158 * result is greater than or equal to zero.
159 */
160static inline int atomic_add_negative(int i, atomic_t *v)
161{
162 unsigned char c;
163
164 asm volatile(LOCK_PREFIX "addl %2,%0; sets %1"
165 : "=m" (v->counter), "=qm" (c)
166 : "ir" (i), "m" (v->counter) : "memory");
167 return c;
168}
169
170/**
171 * atomic_add_return - add and return
172 * @i: integer value to add
173 * @v: pointer of type atomic_t
174 *
175 * Atomically adds @i to @v and returns @i + @v
176 */
177static inline int atomic_add_return(int i, atomic_t *v)
178{
179 int __i = i;
180 asm volatile(LOCK_PREFIX "xaddl %0, %1"
181 : "+r" (i), "+m" (v->counter)
182 : : "memory");
183 return i + __i;
184}
185
186static inline int atomic_sub_return(int i, atomic_t *v)
187{
188 return atomic_add_return(-i, v);
189}
190
191#define atomic_inc_return(v) (atomic_add_return(1, v))
192#define atomic_dec_return(v) (atomic_sub_return(1, v))
193
194/* An 64bit atomic type */
195
196typedef struct {
197 long counter;
198} atomic64_t;
199
200#define ATOMIC64_INIT(i) { (i) }
201
202/**
203 * atomic64_read - read atomic64 variable
204 * @v: pointer of type atomic64_t
205 *
206 * Atomically reads the value of @v.
207 * Doesn't imply a read memory barrier.
208 */
209#define atomic64_read(v) ((v)->counter)
210
211/**
212 * atomic64_set - set atomic64 variable
213 * @v: pointer to type atomic64_t
214 * @i: required value
215 *
216 * Atomically sets the value of @v to @i.
217 */
218#define atomic64_set(v, i) (((v)->counter) = (i))
219
220/**
221 * atomic64_add - add integer to atomic64 variable
222 * @i: integer value to add
223 * @v: pointer to type atomic64_t
224 *
225 * Atomically adds @i to @v.
226 */
227static inline void atomic64_add(long i, atomic64_t *v)
228{
229 asm volatile(LOCK_PREFIX "addq %1,%0"
230 : "=m" (v->counter)
231 : "er" (i), "m" (v->counter));
232}
233
234/**
235 * atomic64_sub - subtract the atomic64 variable
236 * @i: integer value to subtract
237 * @v: pointer to type atomic64_t
238 *
239 * Atomically subtracts @i from @v.
240 */
241static inline void atomic64_sub(long i, atomic64_t *v)
242{
243 asm volatile(LOCK_PREFIX "subq %1,%0"
244 : "=m" (v->counter)
245 : "er" (i), "m" (v->counter));
246}
247
248/**
249 * atomic64_sub_and_test - subtract value from variable and test result
250 * @i: integer value to subtract
251 * @v: pointer to type atomic64_t
252 *
253 * Atomically subtracts @i from @v and returns
254 * true if the result is zero, or false for all
255 * other cases.
256 */
257static inline int atomic64_sub_and_test(long i, atomic64_t *v)
258{
259 unsigned char c;
260
261 asm volatile(LOCK_PREFIX "subq %2,%0; sete %1"
262 : "=m" (v->counter), "=qm" (c)
263 : "er" (i), "m" (v->counter) : "memory");
264 return c;
265}
266
267/**
268 * atomic64_inc - increment atomic64 variable
269 * @v: pointer to type atomic64_t
270 *
271 * Atomically increments @v by 1.
272 */
273static inline void atomic64_inc(atomic64_t *v)
274{
275 asm volatile(LOCK_PREFIX "incq %0"
276 : "=m" (v->counter)
277 : "m" (v->counter));
278}
279
280/**
281 * atomic64_dec - decrement atomic64 variable
282 * @v: pointer to type atomic64_t
283 *
284 * Atomically decrements @v by 1.
285 */
286static inline void atomic64_dec(atomic64_t *v)
287{
288 asm volatile(LOCK_PREFIX "decq %0"
289 : "=m" (v->counter)
290 : "m" (v->counter));
291}
292
293/**
294 * atomic64_dec_and_test - decrement and test
295 * @v: pointer to type atomic64_t
296 *
297 * Atomically decrements @v by 1 and
298 * returns true if the result is 0, or false for all other
299 * cases.
300 */
301static inline int atomic64_dec_and_test(atomic64_t *v)
302{
303 unsigned char c;
304
305 asm volatile(LOCK_PREFIX "decq %0; sete %1"
306 : "=m" (v->counter), "=qm" (c)
307 : "m" (v->counter) : "memory");
308 return c != 0;
309}
310
311/**
312 * atomic64_inc_and_test - increment and test
313 * @v: pointer to type atomic64_t
314 *
315 * Atomically increments @v by 1
316 * and returns true if the result is zero, or false for all
317 * other cases.
318 */
319static inline int atomic64_inc_and_test(atomic64_t *v)
320{
321 unsigned char c;
322
323 asm volatile(LOCK_PREFIX "incq %0; sete %1"
324 : "=m" (v->counter), "=qm" (c)
325 : "m" (v->counter) : "memory");
326 return c != 0;
327}
328
329/**
330 * atomic64_add_negative - add and test if negative
331 * @i: integer value to add
332 * @v: pointer to type atomic64_t
333 *
334 * Atomically adds @i to @v and returns true
335 * if the result is negative, or false when
336 * result is greater than or equal to zero.
337 */
338static inline int atomic64_add_negative(long i, atomic64_t *v)
339{
340 unsigned char c;
341
342 asm volatile(LOCK_PREFIX "addq %2,%0; sets %1"
343 : "=m" (v->counter), "=qm" (c)
344 : "er" (i), "m" (v->counter) : "memory");
345 return c;
346}
347
348/**
349 * atomic64_add_return - add and return
350 * @i: integer value to add
351 * @v: pointer to type atomic64_t
352 *
353 * Atomically adds @i to @v and returns @i + @v
354 */
355static inline long atomic64_add_return(long i, atomic64_t *v)
356{
357 long __i = i;
358 asm volatile(LOCK_PREFIX "xaddq %0, %1;"
359 : "+r" (i), "+m" (v->counter)
360 : : "memory");
361 return i + __i;
362}
363
364static inline long atomic64_sub_return(long i, atomic64_t *v)
365{
366 return atomic64_add_return(-i, v);
367}
368
369#define atomic64_inc_return(v) (atomic64_add_return(1, (v)))
370#define atomic64_dec_return(v) (atomic64_sub_return(1, (v)))
371
372#define atomic64_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
373#define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
374
375#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
376#define atomic_xchg(v, new) (xchg(&((v)->counter), (new)))
377
378/**
379 * atomic_add_unless - add unless the number is a given value
380 * @v: pointer of type atomic_t
381 * @a: the amount to add to v...
382 * @u: ...unless v is equal to u.
383 *
384 * Atomically adds @a to @v, so long as it was not @u.
385 * Returns non-zero if @v was not @u, and zero otherwise.
386 */
387static inline int atomic_add_unless(atomic_t *v, int a, int u)
388{
389 int c, old;
390 c = atomic_read(v);
391 for (;;) {
392 if (unlikely(c == (u)))
393 break;
394 old = atomic_cmpxchg((v), c, c + (a));
395 if (likely(old == c))
396 break;
397 c = old;
398 }
399 return c != (u);
400}
401
402#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
403
404/**
405 * atomic64_add_unless - add unless the number is a given value
406 * @v: pointer of type atomic64_t
407 * @a: the amount to add to v...
408 * @u: ...unless v is equal to u.
409 *
410 * Atomically adds @a to @v, so long as it was not @u.
411 * Returns non-zero if @v was not @u, and zero otherwise.
412 */
413static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
414{
415 long c, old;
416 c = atomic64_read(v);
417 for (;;) {
418 if (unlikely(c == (u)))
419 break;
420 old = atomic64_cmpxchg((v), c, c + (a));
421 if (likely(old == c))
422 break;
423 c = old;
424 }
425 return c != (u);
426}
427
428/**
429 * atomic_inc_short - increment of a short integer
430 * @v: pointer to type int
431 *
432 * Atomically adds 1 to @v
433 * Returns the new value of @u
434 */
435static inline short int atomic_inc_short(short int *v)
436{
437 asm(LOCK_PREFIX "addw $1, %0" : "+m" (*v));
438 return *v;
439}
440
441/**
442 * atomic_or_long - OR of two long integers
443 * @v1: pointer to type unsigned long
444 * @v2: pointer to type unsigned long
445 *
446 * Atomically ORs @v1 and @v2
447 * Returns the result of the OR
448 */
449static inline void atomic_or_long(unsigned long *v1, unsigned long v2)
450{
451 asm(LOCK_PREFIX "orq %1, %0" : "+m" (*v1) : "r" (v2));
452}
453
454#define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
455
456/* These are x86-specific, used by some header files */
457#define atomic_clear_mask(mask, addr) \
458 asm volatile(LOCK_PREFIX "andl %0,%1" \
459 : : "r" (~(mask)), "m" (*(addr)) : "memory")
460
461#define atomic_set_mask(mask, addr) \
462 asm volatile(LOCK_PREFIX "orl %0,%1" \
463 : : "r" ((unsigned)(mask)), "m" (*(addr)) \
464 : "memory")
465
466/* Atomic operations are already serializing on x86 */
467#define smp_mb__before_atomic_dec() barrier()
468#define smp_mb__after_atomic_dec() barrier()
469#define smp_mb__before_atomic_inc() barrier()
470#define smp_mb__after_atomic_inc() barrier()
471
472#include <asm-generic/atomic.h>
473#endif /* _ASM_X86_ATOMIC_64_H */
diff --git a/arch/x86/include/asm/auxvec.h b/arch/x86/include/asm/auxvec.h
new file mode 100644
index 000000000000..1316b4c35425
--- /dev/null
+++ b/arch/x86/include/asm/auxvec.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_X86_AUXVEC_H
2#define _ASM_X86_AUXVEC_H
3/*
4 * Architecture-neutral AT_ values in 0-17, leave some room
5 * for more of them, start the x86-specific ones at 32.
6 */
7#ifdef __i386__
8#define AT_SYSINFO 32
9#endif
10#define AT_SYSINFO_EHDR 33
11
12#endif /* _ASM_X86_AUXVEC_H */
diff --git a/arch/x86/include/asm/bigsmp/apic.h b/arch/x86/include/asm/bigsmp/apic.h
new file mode 100644
index 000000000000..1d9543b9d358
--- /dev/null
+++ b/arch/x86/include/asm/bigsmp/apic.h
@@ -0,0 +1,139 @@
1#ifndef __ASM_MACH_APIC_H
2#define __ASM_MACH_APIC_H
3
4#define xapic_phys_to_log_apicid(cpu) (per_cpu(x86_bios_cpu_apicid, cpu))
5#define esr_disable (1)
6
7static inline int apic_id_registered(void)
8{
9 return (1);
10}
11
12static inline cpumask_t target_cpus(void)
13{
14#ifdef CONFIG_SMP
15 return cpu_online_map;
16#else
17 return cpumask_of_cpu(0);
18#endif
19}
20
21#undef APIC_DEST_LOGICAL
22#define APIC_DEST_LOGICAL 0
23#define APIC_DFR_VALUE (APIC_DFR_FLAT)
24#define INT_DELIVERY_MODE (dest_Fixed)
25#define INT_DEST_MODE (0) /* phys delivery to target proc */
26#define NO_BALANCE_IRQ (0)
27#define WAKE_SECONDARY_VIA_INIT
28
29
30static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
31{
32 return (0);
33}
34
35static inline unsigned long check_apicid_present(int bit)
36{
37 return (1);
38}
39
40static inline unsigned long calculate_ldr(int cpu)
41{
42 unsigned long val, id;
43 val = apic_read(APIC_LDR) & ~APIC_LDR_MASK;
44 id = xapic_phys_to_log_apicid(cpu);
45 val |= SET_APIC_LOGICAL_ID(id);
46 return val;
47}
48
49/*
50 * Set up the logical destination ID.
51 *
52 * Intel recommends to set DFR, LDR and TPR before enabling
53 * an APIC. See e.g. "AP-388 82489DX User's Manual" (Intel
54 * document number 292116). So here it goes...
55 */
56static inline void init_apic_ldr(void)
57{
58 unsigned long val;
59 int cpu = smp_processor_id();
60
61 apic_write(APIC_DFR, APIC_DFR_VALUE);
62 val = calculate_ldr(cpu);
63 apic_write(APIC_LDR, val);
64}
65
66static inline void setup_apic_routing(void)
67{
68 printk("Enabling APIC mode: %s. Using %d I/O APICs\n",
69 "Physflat", nr_ioapics);
70}
71
72static inline int multi_timer_check(int apic, int irq)
73{
74 return (0);
75}
76
77static inline int apicid_to_node(int logical_apicid)
78{
79 return apicid_2_node[hard_smp_processor_id()];
80}
81
82static inline int cpu_present_to_apicid(int mps_cpu)
83{
84 if (mps_cpu < NR_CPUS)
85 return (int) per_cpu(x86_bios_cpu_apicid, mps_cpu);
86
87 return BAD_APICID;
88}
89
90static inline physid_mask_t apicid_to_cpu_present(int phys_apicid)
91{
92 return physid_mask_of_physid(phys_apicid);
93}
94
95extern u8 cpu_2_logical_apicid[];
96/* Mapping from cpu number to logical apicid */
97static inline int cpu_to_logical_apicid(int cpu)
98{
99 if (cpu >= NR_CPUS)
100 return BAD_APICID;
101 return cpu_physical_id(cpu);
102}
103
104static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
105{
106 /* For clustered we don't have a good way to do this yet - hack */
107 return physids_promote(0xFFL);
108}
109
110static inline void setup_portio_remap(void)
111{
112}
113
114static inline void enable_apic_mode(void)
115{
116}
117
118static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
119{
120 return (1);
121}
122
123/* As we are using single CPU as destination, pick only one CPU here */
124static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
125{
126 int cpu;
127 int apicid;
128
129 cpu = first_cpu(cpumask);
130 apicid = cpu_to_logical_apicid(cpu);
131 return apicid;
132}
133
134static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
135{
136 return cpuid_apic >> index_msb;
137}
138
139#endif /* __ASM_MACH_APIC_H */
diff --git a/arch/x86/include/asm/bigsmp/apicdef.h b/arch/x86/include/asm/bigsmp/apicdef.h
new file mode 100644
index 000000000000..392c3f5ef2fe
--- /dev/null
+++ b/arch/x86/include/asm/bigsmp/apicdef.h
@@ -0,0 +1,13 @@
1#ifndef __ASM_MACH_APICDEF_H
2#define __ASM_MACH_APICDEF_H
3
4#define APIC_ID_MASK (0xFF<<24)
5
6static inline unsigned get_apic_id(unsigned long x)
7{
8 return (((x)>>24)&0xFF);
9}
10
11#define GET_APIC_ID(x) get_apic_id(x)
12
13#endif
diff --git a/arch/x86/include/asm/bigsmp/ipi.h b/arch/x86/include/asm/bigsmp/ipi.h
new file mode 100644
index 000000000000..9404c535b7ec
--- /dev/null
+++ b/arch/x86/include/asm/bigsmp/ipi.h
@@ -0,0 +1,25 @@
1#ifndef __ASM_MACH_IPI_H
2#define __ASM_MACH_IPI_H
3
4void send_IPI_mask_sequence(cpumask_t mask, int vector);
5
6static inline void send_IPI_mask(cpumask_t mask, int vector)
7{
8 send_IPI_mask_sequence(mask, vector);
9}
10
11static inline void send_IPI_allbutself(int vector)
12{
13 cpumask_t mask = cpu_online_map;
14 cpu_clear(smp_processor_id(), mask);
15
16 if (!cpus_empty(mask))
17 send_IPI_mask(mask, vector);
18}
19
20static inline void send_IPI_all(int vector)
21{
22 send_IPI_mask(cpu_online_map, vector);
23}
24
25#endif /* __ASM_MACH_IPI_H */
diff --git a/arch/x86/include/asm/bios_ebda.h b/arch/x86/include/asm/bios_ebda.h
new file mode 100644
index 000000000000..3c7521063d3f
--- /dev/null
+++ b/arch/x86/include/asm/bios_ebda.h
@@ -0,0 +1,36 @@
1#ifndef _ASM_X86_BIOS_EBDA_H
2#define _ASM_X86_BIOS_EBDA_H
3
4#include <asm/io.h>
5
6/*
7 * there is a real-mode segmented pointer pointing to the
8 * 4K EBDA area at 0x40E.
9 */
10static inline unsigned int get_bios_ebda(void)
11{
12 unsigned int address = *(unsigned short *)phys_to_virt(0x40E);
13 address <<= 4;
14 return address; /* 0 means none */
15}
16
17void reserve_ebda_region(void);
18
19#ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION
20/*
21 * This is obviously not a great place for this, but we want to be
22 * able to scatter it around anywhere in the kernel.
23 */
24void check_for_bios_corruption(void);
25void start_periodic_check_for_corruption(void);
26#else
27static inline void check_for_bios_corruption(void)
28{
29}
30
31static inline void start_periodic_check_for_corruption(void)
32{
33}
34#endif
35
36#endif /* _ASM_X86_BIOS_EBDA_H */
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
new file mode 100644
index 000000000000..360010322711
--- /dev/null
+++ b/arch/x86/include/asm/bitops.h
@@ -0,0 +1,451 @@
1#ifndef _ASM_X86_BITOPS_H
2#define _ASM_X86_BITOPS_H
3
4/*
5 * Copyright 1992, Linus Torvalds.
6 */
7
8#ifndef _LINUX_BITOPS_H
9#error only <linux/bitops.h> can be included directly
10#endif
11
12#include <linux/compiler.h>
13#include <asm/alternative.h>
14
15/*
16 * These have to be done with inline assembly: that way the bit-setting
17 * is guaranteed to be atomic. All bit operations return 0 if the bit
18 * was cleared before the operation and != 0 if it was not.
19 *
20 * bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1).
21 */
22
23#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
24/* Technically wrong, but this avoids compilation errors on some gcc
25 versions. */
26#define BITOP_ADDR(x) "=m" (*(volatile long *) (x))
27#else
28#define BITOP_ADDR(x) "+m" (*(volatile long *) (x))
29#endif
30
31#define ADDR BITOP_ADDR(addr)
32
33/*
34 * We do the locked ops that don't return the old value as
35 * a mask operation on a byte.
36 */
37#define IS_IMMEDIATE(nr) (__builtin_constant_p(nr))
38#define CONST_MASK_ADDR(nr, addr) BITOP_ADDR((void *)(addr) + ((nr)>>3))
39#define CONST_MASK(nr) (1 << ((nr) & 7))
40
41/**
42 * set_bit - Atomically set a bit in memory
43 * @nr: the bit to set
44 * @addr: the address to start counting from
45 *
46 * This function is atomic and may not be reordered. See __set_bit()
47 * if you do not require the atomic guarantees.
48 *
49 * Note: there are no guarantees that this function will not be reordered
50 * on non x86 architectures, so if you are writing portable code,
51 * make sure not to rely on its reordering guarantees.
52 *
53 * Note that @nr may be almost arbitrarily large; this function is not
54 * restricted to acting on a single-word quantity.
55 */
56static inline void set_bit(unsigned int nr, volatile unsigned long *addr)
57{
58 if (IS_IMMEDIATE(nr)) {
59 asm volatile(LOCK_PREFIX "orb %1,%0"
60 : CONST_MASK_ADDR(nr, addr)
61 : "iq" ((u8)CONST_MASK(nr))
62 : "memory");
63 } else {
64 asm volatile(LOCK_PREFIX "bts %1,%0"
65 : BITOP_ADDR(addr) : "Ir" (nr) : "memory");
66 }
67}
68
69/**
70 * __set_bit - Set a bit in memory
71 * @nr: the bit to set
72 * @addr: the address to start counting from
73 *
74 * Unlike set_bit(), this function is non-atomic and may be reordered.
75 * If it's called on the same region of memory simultaneously, the effect
76 * may be that only one operation succeeds.
77 */
78static inline void __set_bit(int nr, volatile unsigned long *addr)
79{
80 asm volatile("bts %1,%0" : ADDR : "Ir" (nr) : "memory");
81}
82
83/**
84 * clear_bit - Clears a bit in memory
85 * @nr: Bit to clear
86 * @addr: Address to start counting from
87 *
88 * clear_bit() is atomic and may not be reordered. However, it does
89 * not contain a memory barrier, so if it is used for locking purposes,
90 * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
91 * in order to ensure changes are visible on other processors.
92 */
93static inline void clear_bit(int nr, volatile unsigned long *addr)
94{
95 if (IS_IMMEDIATE(nr)) {
96 asm volatile(LOCK_PREFIX "andb %1,%0"
97 : CONST_MASK_ADDR(nr, addr)
98 : "iq" ((u8)~CONST_MASK(nr)));
99 } else {
100 asm volatile(LOCK_PREFIX "btr %1,%0"
101 : BITOP_ADDR(addr)
102 : "Ir" (nr));
103 }
104}
105
106/*
107 * clear_bit_unlock - Clears a bit in memory
108 * @nr: Bit to clear
109 * @addr: Address to start counting from
110 *
111 * clear_bit() is atomic and implies release semantics before the memory
112 * operation. It can be used for an unlock.
113 */
114static inline void clear_bit_unlock(unsigned nr, volatile unsigned long *addr)
115{
116 barrier();
117 clear_bit(nr, addr);
118}
119
120static inline void __clear_bit(int nr, volatile unsigned long *addr)
121{
122 asm volatile("btr %1,%0" : ADDR : "Ir" (nr));
123}
124
125/*
126 * __clear_bit_unlock - Clears a bit in memory
127 * @nr: Bit to clear
128 * @addr: Address to start counting from
129 *
130 * __clear_bit() is non-atomic and implies release semantics before the memory
131 * operation. It can be used for an unlock if no other CPUs can concurrently
132 * modify other bits in the word.
133 *
134 * No memory barrier is required here, because x86 cannot reorder stores past
135 * older loads. Same principle as spin_unlock.
136 */
137static inline void __clear_bit_unlock(unsigned nr, volatile unsigned long *addr)
138{
139 barrier();
140 __clear_bit(nr, addr);
141}
142
143#define smp_mb__before_clear_bit() barrier()
144#define smp_mb__after_clear_bit() barrier()
145
146/**
147 * __change_bit - Toggle a bit in memory
148 * @nr: the bit to change
149 * @addr: the address to start counting from
150 *
151 * Unlike change_bit(), this function is non-atomic and may be reordered.
152 * If it's called on the same region of memory simultaneously, the effect
153 * may be that only one operation succeeds.
154 */
155static inline void __change_bit(int nr, volatile unsigned long *addr)
156{
157 asm volatile("btc %1,%0" : ADDR : "Ir" (nr));
158}
159
160/**
161 * change_bit - Toggle a bit in memory
162 * @nr: Bit to change
163 * @addr: Address to start counting from
164 *
165 * change_bit() is atomic and may not be reordered.
166 * Note that @nr may be almost arbitrarily large; this function is not
167 * restricted to acting on a single-word quantity.
168 */
169static inline void change_bit(int nr, volatile unsigned long *addr)
170{
171 asm volatile(LOCK_PREFIX "btc %1,%0" : ADDR : "Ir" (nr));
172}
173
174/**
175 * test_and_set_bit - Set a bit and return its old value
176 * @nr: Bit to set
177 * @addr: Address to count from
178 *
179 * This operation is atomic and cannot be reordered.
180 * It also implies a memory barrier.
181 */
182static inline int test_and_set_bit(int nr, volatile unsigned long *addr)
183{
184 int oldbit;
185
186 asm volatile(LOCK_PREFIX "bts %2,%1\n\t"
187 "sbb %0,%0" : "=r" (oldbit), ADDR : "Ir" (nr) : "memory");
188
189 return oldbit;
190}
191
192/**
193 * test_and_set_bit_lock - Set a bit and return its old value for lock
194 * @nr: Bit to set
195 * @addr: Address to count from
196 *
197 * This is the same as test_and_set_bit on x86.
198 */
199static inline int test_and_set_bit_lock(int nr, volatile unsigned long *addr)
200{
201 return test_and_set_bit(nr, addr);
202}
203
204/**
205 * __test_and_set_bit - Set a bit and return its old value
206 * @nr: Bit to set
207 * @addr: Address to count from
208 *
209 * This operation is non-atomic and can be reordered.
210 * If two examples of this operation race, one can appear to succeed
211 * but actually fail. You must protect multiple accesses with a lock.
212 */
213static inline int __test_and_set_bit(int nr, volatile unsigned long *addr)
214{
215 int oldbit;
216
217 asm("bts %2,%1\n\t"
218 "sbb %0,%0"
219 : "=r" (oldbit), ADDR
220 : "Ir" (nr));
221 return oldbit;
222}
223
224/**
225 * test_and_clear_bit - Clear a bit and return its old value
226 * @nr: Bit to clear
227 * @addr: Address to count from
228 *
229 * This operation is atomic and cannot be reordered.
230 * It also implies a memory barrier.
231 */
232static inline int test_and_clear_bit(int nr, volatile unsigned long *addr)
233{
234 int oldbit;
235
236 asm volatile(LOCK_PREFIX "btr %2,%1\n\t"
237 "sbb %0,%0"
238 : "=r" (oldbit), ADDR : "Ir" (nr) : "memory");
239
240 return oldbit;
241}
242
243/**
244 * __test_and_clear_bit - Clear a bit and return its old value
245 * @nr: Bit to clear
246 * @addr: Address to count from
247 *
248 * This operation is non-atomic and can be reordered.
249 * If two examples of this operation race, one can appear to succeed
250 * but actually fail. You must protect multiple accesses with a lock.
251 */
252static inline int __test_and_clear_bit(int nr, volatile unsigned long *addr)
253{
254 int oldbit;
255
256 asm volatile("btr %2,%1\n\t"
257 "sbb %0,%0"
258 : "=r" (oldbit), ADDR
259 : "Ir" (nr));
260 return oldbit;
261}
262
263/* WARNING: non atomic and it can be reordered! */
264static inline int __test_and_change_bit(int nr, volatile unsigned long *addr)
265{
266 int oldbit;
267
268 asm volatile("btc %2,%1\n\t"
269 "sbb %0,%0"
270 : "=r" (oldbit), ADDR
271 : "Ir" (nr) : "memory");
272
273 return oldbit;
274}
275
276/**
277 * test_and_change_bit - Change a bit and return its old value
278 * @nr: Bit to change
279 * @addr: Address to count from
280 *
281 * This operation is atomic and cannot be reordered.
282 * It also implies a memory barrier.
283 */
284static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
285{
286 int oldbit;
287
288 asm volatile(LOCK_PREFIX "btc %2,%1\n\t"
289 "sbb %0,%0"
290 : "=r" (oldbit), ADDR : "Ir" (nr) : "memory");
291
292 return oldbit;
293}
294
295static inline int constant_test_bit(int nr, const volatile unsigned long *addr)
296{
297 return ((1UL << (nr % BITS_PER_LONG)) &
298 (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0;
299}
300
301static inline int variable_test_bit(int nr, volatile const unsigned long *addr)
302{
303 int oldbit;
304
305 asm volatile("bt %2,%1\n\t"
306 "sbb %0,%0"
307 : "=r" (oldbit)
308 : "m" (*(unsigned long *)addr), "Ir" (nr));
309
310 return oldbit;
311}
312
313#if 0 /* Fool kernel-doc since it doesn't do macros yet */
314/**
315 * test_bit - Determine whether a bit is set
316 * @nr: bit number to test
317 * @addr: Address to start counting from
318 */
319static int test_bit(int nr, const volatile unsigned long *addr);
320#endif
321
322#define test_bit(nr, addr) \
323 (__builtin_constant_p((nr)) \
324 ? constant_test_bit((nr), (addr)) \
325 : variable_test_bit((nr), (addr)))
326
327/**
328 * __ffs - find first set bit in word
329 * @word: The word to search
330 *
331 * Undefined if no bit exists, so code should check against 0 first.
332 */
333static inline unsigned long __ffs(unsigned long word)
334{
335 asm("bsf %1,%0"
336 : "=r" (word)
337 : "rm" (word));
338 return word;
339}
340
341/**
342 * ffz - find first zero bit in word
343 * @word: The word to search
344 *
345 * Undefined if no zero exists, so code should check against ~0UL first.
346 */
347static inline unsigned long ffz(unsigned long word)
348{
349 asm("bsf %1,%0"
350 : "=r" (word)
351 : "r" (~word));
352 return word;
353}
354
355/*
356 * __fls: find last set bit in word
357 * @word: The word to search
358 *
359 * Undefined if no set bit exists, so code should check against 0 first.
360 */
361static inline unsigned long __fls(unsigned long word)
362{
363 asm("bsr %1,%0"
364 : "=r" (word)
365 : "rm" (word));
366 return word;
367}
368
369#ifdef __KERNEL__
370/**
371 * ffs - find first set bit in word
372 * @x: the word to search
373 *
374 * This is defined the same way as the libc and compiler builtin ffs
375 * routines, therefore differs in spirit from the other bitops.
376 *
377 * ffs(value) returns 0 if value is 0 or the position of the first
378 * set bit if value is nonzero. The first (least significant) bit
379 * is at position 1.
380 */
381static inline int ffs(int x)
382{
383 int r;
384#ifdef CONFIG_X86_CMOV
385 asm("bsfl %1,%0\n\t"
386 "cmovzl %2,%0"
387 : "=r" (r) : "rm" (x), "r" (-1));
388#else
389 asm("bsfl %1,%0\n\t"
390 "jnz 1f\n\t"
391 "movl $-1,%0\n"
392 "1:" : "=r" (r) : "rm" (x));
393#endif
394 return r + 1;
395}
396
397/**
398 * fls - find last set bit in word
399 * @x: the word to search
400 *
401 * This is defined in a similar way as the libc and compiler builtin
402 * ffs, but returns the position of the most significant set bit.
403 *
404 * fls(value) returns 0 if value is 0 or the position of the last
405 * set bit if value is nonzero. The last (most significant) bit is
406 * at position 32.
407 */
408static inline int fls(int x)
409{
410 int r;
411#ifdef CONFIG_X86_CMOV
412 asm("bsrl %1,%0\n\t"
413 "cmovzl %2,%0"
414 : "=&r" (r) : "rm" (x), "rm" (-1));
415#else
416 asm("bsrl %1,%0\n\t"
417 "jnz 1f\n\t"
418 "movl $-1,%0\n"
419 "1:" : "=r" (r) : "rm" (x));
420#endif
421 return r + 1;
422}
423#endif /* __KERNEL__ */
424
425#undef ADDR
426
427#ifdef __KERNEL__
428
429#include <asm-generic/bitops/sched.h>
430
431#define ARCH_HAS_FAST_MULTIPLIER 1
432
433#include <asm-generic/bitops/hweight.h>
434
435#endif /* __KERNEL__ */
436
437#include <asm-generic/bitops/fls64.h>
438
439#ifdef __KERNEL__
440
441#include <asm-generic/bitops/ext2-non-atomic.h>
442
443#define ext2_set_bit_atomic(lock, nr, addr) \
444 test_and_set_bit((nr), (unsigned long *)(addr))
445#define ext2_clear_bit_atomic(lock, nr, addr) \
446 test_and_clear_bit((nr), (unsigned long *)(addr))
447
448#include <asm-generic/bitops/minix.h>
449
450#endif /* __KERNEL__ */
451#endif /* _ASM_X86_BITOPS_H */
diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h
new file mode 100644
index 000000000000..dd61616cb73d
--- /dev/null
+++ b/arch/x86/include/asm/boot.h
@@ -0,0 +1,26 @@
1#ifndef _ASM_X86_BOOT_H
2#define _ASM_X86_BOOT_H
3
4/* Don't touch these, unless you really know what you're doing. */
5#define DEF_SYSSEG 0x1000
6#define DEF_SYSSIZE 0x7F00
7
8/* Internal svga startup constants */
9#define NORMAL_VGA 0xffff /* 80x25 mode */
10#define EXTENDED_VGA 0xfffe /* 80x50 mode */
11#define ASK_VGA 0xfffd /* ask for it at bootup */
12
13/* Physical address where kernel should be loaded. */
14#define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \
15 + (CONFIG_PHYSICAL_ALIGN - 1)) \
16 & ~(CONFIG_PHYSICAL_ALIGN - 1))
17
18#ifdef CONFIG_X86_64
19#define BOOT_HEAP_SIZE 0x7000
20#define BOOT_STACK_SIZE 0x4000
21#else
22#define BOOT_HEAP_SIZE 0x4000
23#define BOOT_STACK_SIZE 0x1000
24#endif
25
26#endif /* _ASM_X86_BOOT_H */
diff --git a/arch/x86/include/asm/bootparam.h b/arch/x86/include/asm/bootparam.h
new file mode 100644
index 000000000000..433adaebf9b6
--- /dev/null
+++ b/arch/x86/include/asm/bootparam.h
@@ -0,0 +1,111 @@
1#ifndef _ASM_X86_BOOTPARAM_H
2#define _ASM_X86_BOOTPARAM_H
3
4#include <linux/types.h>
5#include <linux/screen_info.h>
6#include <linux/apm_bios.h>
7#include <linux/edd.h>
8#include <asm/e820.h>
9#include <asm/ist.h>
10#include <video/edid.h>
11
12/* setup data types */
13#define SETUP_NONE 0
14#define SETUP_E820_EXT 1
15
16/* extensible setup data list node */
17struct setup_data {
18 __u64 next;
19 __u32 type;
20 __u32 len;
21 __u8 data[0];
22};
23
24struct setup_header {
25 __u8 setup_sects;
26 __u16 root_flags;
27 __u32 syssize;
28 __u16 ram_size;
29#define RAMDISK_IMAGE_START_MASK 0x07FF
30#define RAMDISK_PROMPT_FLAG 0x8000
31#define RAMDISK_LOAD_FLAG 0x4000
32 __u16 vid_mode;
33 __u16 root_dev;
34 __u16 boot_flag;
35 __u16 jump;
36 __u32 header;
37 __u16 version;
38 __u32 realmode_swtch;
39 __u16 start_sys;
40 __u16 kernel_version;
41 __u8 type_of_loader;
42 __u8 loadflags;
43#define LOADED_HIGH (1<<0)
44#define QUIET_FLAG (1<<5)
45#define KEEP_SEGMENTS (1<<6)
46#define CAN_USE_HEAP (1<<7)
47 __u16 setup_move_size;
48 __u32 code32_start;
49 __u32 ramdisk_image;
50 __u32 ramdisk_size;
51 __u32 bootsect_kludge;
52 __u16 heap_end_ptr;
53 __u16 _pad1;
54 __u32 cmd_line_ptr;
55 __u32 initrd_addr_max;
56 __u32 kernel_alignment;
57 __u8 relocatable_kernel;
58 __u8 _pad2[3];
59 __u32 cmdline_size;
60 __u32 hardware_subarch;
61 __u64 hardware_subarch_data;
62 __u32 payload_offset;
63 __u32 payload_length;
64 __u64 setup_data;
65} __attribute__((packed));
66
67struct sys_desc_table {
68 __u16 length;
69 __u8 table[14];
70};
71
72struct efi_info {
73 __u32 efi_loader_signature;
74 __u32 efi_systab;
75 __u32 efi_memdesc_size;
76 __u32 efi_memdesc_version;
77 __u32 efi_memmap;
78 __u32 efi_memmap_size;
79 __u32 efi_systab_hi;
80 __u32 efi_memmap_hi;
81};
82
83/* The so-called "zeropage" */
84struct boot_params {
85 struct screen_info screen_info; /* 0x000 */
86 struct apm_bios_info apm_bios_info; /* 0x040 */
87 __u8 _pad2[12]; /* 0x054 */
88 struct ist_info ist_info; /* 0x060 */
89 __u8 _pad3[16]; /* 0x070 */
90 __u8 hd0_info[16]; /* obsolete! */ /* 0x080 */
91 __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */
92 struct sys_desc_table sys_desc_table; /* 0x0a0 */
93 __u8 _pad4[144]; /* 0x0b0 */
94 struct edid_info edid_info; /* 0x140 */
95 struct efi_info efi_info; /* 0x1c0 */
96 __u32 alt_mem_k; /* 0x1e0 */
97 __u32 scratch; /* Scratch field! */ /* 0x1e4 */
98 __u8 e820_entries; /* 0x1e8 */
99 __u8 eddbuf_entries; /* 0x1e9 */
100 __u8 edd_mbr_sig_buf_entries; /* 0x1ea */
101 __u8 _pad6[6]; /* 0x1eb */
102 struct setup_header hdr; /* setup header */ /* 0x1f1 */
103 __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)];
104 __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX]; /* 0x290 */
105 struct e820entry e820_map[E820MAX]; /* 0x2d0 */
106 __u8 _pad8[48]; /* 0xcd0 */
107 struct edd_info eddbuf[EDDMAXNR]; /* 0xd00 */
108 __u8 _pad9[276]; /* 0xeec */
109} __attribute__((packed));
110
111#endif /* _ASM_X86_BOOTPARAM_H */
diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h
new file mode 100644
index 000000000000..3def2065fcea
--- /dev/null
+++ b/arch/x86/include/asm/bug.h
@@ -0,0 +1,39 @@
1#ifndef _ASM_X86_BUG_H
2#define _ASM_X86_BUG_H
3
4#ifdef CONFIG_BUG
5#define HAVE_ARCH_BUG
6
7#ifdef CONFIG_DEBUG_BUGVERBOSE
8
9#ifdef CONFIG_X86_32
10# define __BUG_C0 "2:\t.long 1b, %c0\n"
11#else
12# define __BUG_C0 "2:\t.quad 1b, %c0\n"
13#endif
14
15#define BUG() \
16do { \
17 asm volatile("1:\tud2\n" \
18 ".pushsection __bug_table,\"a\"\n" \
19 __BUG_C0 \
20 "\t.word %c1, 0\n" \
21 "\t.org 2b+%c2\n" \
22 ".popsection" \
23 : : "i" (__FILE__), "i" (__LINE__), \
24 "i" (sizeof(struct bug_entry))); \
25 for (;;) ; \
26} while (0)
27
28#else
29#define BUG() \
30do { \
31 asm volatile("ud2"); \
32 for (;;) ; \
33} while (0)
34#endif
35
36#endif /* !CONFIG_BUG */
37
38#include <asm-generic/bug.h>
39#endif /* _ASM_X86_BUG_H */
diff --git a/arch/x86/include/asm/bugs.h b/arch/x86/include/asm/bugs.h
new file mode 100644
index 000000000000..08abf639075f
--- /dev/null
+++ b/arch/x86/include/asm/bugs.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_X86_BUGS_H
2#define _ASM_X86_BUGS_H
3
4extern void check_bugs(void);
5
6#if defined(CONFIG_CPU_SUP_INTEL) && defined(CONFIG_X86_32)
7int ppro_with_ram_bug(void);
8#else
9static inline int ppro_with_ram_bug(void) { return 0; }
10#endif
11
12#endif /* _ASM_X86_BUGS_H */
diff --git a/arch/x86/include/asm/byteorder.h b/arch/x86/include/asm/byteorder.h
new file mode 100644
index 000000000000..e02ae2d89acf
--- /dev/null
+++ b/arch/x86/include/asm/byteorder.h
@@ -0,0 +1,81 @@
1#ifndef _ASM_X86_BYTEORDER_H
2#define _ASM_X86_BYTEORDER_H
3
4#include <asm/types.h>
5#include <linux/compiler.h>
6
7#ifdef __GNUC__
8
9#ifdef __i386__
10
11static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
12{
13#ifdef CONFIG_X86_BSWAP
14 asm("bswap %0" : "=r" (x) : "0" (x));
15#else
16 asm("xchgb %b0,%h0\n\t" /* swap lower bytes */
17 "rorl $16,%0\n\t" /* swap words */
18 "xchgb %b0,%h0" /* swap higher bytes */
19 : "=q" (x)
20 : "0" (x));
21#endif
22 return x;
23}
24
25static inline __attribute_const__ __u64 ___arch__swab64(__u64 val)
26{
27 union {
28 struct {
29 __u32 a;
30 __u32 b;
31 } s;
32 __u64 u;
33 } v;
34 v.u = val;
35#ifdef CONFIG_X86_BSWAP
36 asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
37 : "=r" (v.s.a), "=r" (v.s.b)
38 : "0" (v.s.a), "1" (v.s.b));
39#else
40 v.s.a = ___arch__swab32(v.s.a);
41 v.s.b = ___arch__swab32(v.s.b);
42 asm("xchgl %0,%1"
43 : "=r" (v.s.a), "=r" (v.s.b)
44 : "0" (v.s.a), "1" (v.s.b));
45#endif
46 return v.u;
47}
48
49#else /* __i386__ */
50
51static inline __attribute_const__ __u64 ___arch__swab64(__u64 x)
52{
53 asm("bswapq %0"
54 : "=r" (x)
55 : "0" (x));
56 return x;
57}
58
59static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
60{
61 asm("bswapl %0"
62 : "=r" (x)
63 : "0" (x));
64 return x;
65}
66
67#endif
68
69/* Do not define swab16. Gcc is smart enough to recognize "C" version and
70 convert it into rotation or exhange. */
71
72#define __arch__swab64(x) ___arch__swab64(x)
73#define __arch__swab32(x) ___arch__swab32(x)
74
75#define __BYTEORDER_HAS_U64__
76
77#endif /* __GNUC__ */
78
79#include <linux/byteorder/little_endian.h>
80
81#endif /* _ASM_X86_BYTEORDER_H */
diff --git a/arch/x86/include/asm/cache.h b/arch/x86/include/asm/cache.h
new file mode 100644
index 000000000000..5d367caa0e36
--- /dev/null
+++ b/arch/x86/include/asm/cache.h
@@ -0,0 +1,20 @@
1#ifndef _ASM_X86_CACHE_H
2#define _ASM_X86_CACHE_H
3
4/* L1 cache line size */
5#define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
6#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
7
8#define __read_mostly __attribute__((__section__(".data.read_mostly")))
9
10#ifdef CONFIG_X86_VSMP
11/* vSMP Internode cacheline shift */
12#define INTERNODE_CACHE_SHIFT (12)
13#ifdef CONFIG_SMP
14#define __cacheline_aligned_in_smp \
15 __attribute__((__aligned__(1 << (INTERNODE_CACHE_SHIFT)))) \
16 __attribute__((__section__(".data.page_aligned")))
17#endif
18#endif
19
20#endif /* _ASM_X86_CACHE_H */
diff --git a/arch/x86/include/asm/cacheflush.h b/arch/x86/include/asm/cacheflush.h
new file mode 100644
index 000000000000..2f8466540fb5
--- /dev/null
+++ b/arch/x86/include/asm/cacheflush.h
@@ -0,0 +1,118 @@
1#ifndef _ASM_X86_CACHEFLUSH_H
2#define _ASM_X86_CACHEFLUSH_H
3
4/* Keep includes the same across arches. */
5#include <linux/mm.h>
6
7/* Caches aren't brain-dead on the intel. */
8#define flush_cache_all() do { } while (0)
9#define flush_cache_mm(mm) do { } while (0)
10#define flush_cache_dup_mm(mm) do { } while (0)
11#define flush_cache_range(vma, start, end) do { } while (0)
12#define flush_cache_page(vma, vmaddr, pfn) do { } while (0)
13#define flush_dcache_page(page) do { } while (0)
14#define flush_dcache_mmap_lock(mapping) do { } while (0)
15#define flush_dcache_mmap_unlock(mapping) do { } while (0)
16#define flush_icache_range(start, end) do { } while (0)
17#define flush_icache_page(vma, pg) do { } while (0)
18#define flush_icache_user_range(vma, pg, adr, len) do { } while (0)
19#define flush_cache_vmap(start, end) do { } while (0)
20#define flush_cache_vunmap(start, end) do { } while (0)
21
22#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
23 memcpy((dst), (src), (len))
24#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
25 memcpy((dst), (src), (len))
26
27#define PG_non_WB PG_arch_1
28PAGEFLAG(NonWB, non_WB)
29
30/*
31 * The set_memory_* API can be used to change various attributes of a virtual
32 * address range. The attributes include:
33 * Cachability : UnCached, WriteCombining, WriteBack
34 * Executability : eXeutable, NoteXecutable
35 * Read/Write : ReadOnly, ReadWrite
36 * Presence : NotPresent
37 *
38 * Within a catagory, the attributes are mutually exclusive.
39 *
40 * The implementation of this API will take care of various aspects that
41 * are associated with changing such attributes, such as:
42 * - Flushing TLBs
43 * - Flushing CPU caches
44 * - Making sure aliases of the memory behind the mapping don't violate
45 * coherency rules as defined by the CPU in the system.
46 *
47 * What this API does not do:
48 * - Provide exclusion between various callers - including callers that
49 * operation on other mappings of the same physical page
50 * - Restore default attributes when a page is freed
51 * - Guarantee that mappings other than the requested one are
52 * in any state, other than that these do not violate rules for
53 * the CPU you have. Do not depend on any effects on other mappings,
54 * CPUs other than the one you have may have more relaxed rules.
55 * The caller is required to take care of these.
56 */
57
58int _set_memory_uc(unsigned long addr, int numpages);
59int _set_memory_wc(unsigned long addr, int numpages);
60int _set_memory_wb(unsigned long addr, int numpages);
61int set_memory_uc(unsigned long addr, int numpages);
62int set_memory_wc(unsigned long addr, int numpages);
63int set_memory_wb(unsigned long addr, int numpages);
64int set_memory_x(unsigned long addr, int numpages);
65int set_memory_nx(unsigned long addr, int numpages);
66int set_memory_ro(unsigned long addr, int numpages);
67int set_memory_rw(unsigned long addr, int numpages);
68int set_memory_np(unsigned long addr, int numpages);
69int set_memory_4k(unsigned long addr, int numpages);
70
71int set_memory_array_uc(unsigned long *addr, int addrinarray);
72int set_memory_array_wb(unsigned long *addr, int addrinarray);
73
74/*
75 * For legacy compatibility with the old APIs, a few functions
76 * are provided that work on a "struct page".
77 * These functions operate ONLY on the 1:1 kernel mapping of the
78 * memory that the struct page represents, and internally just
79 * call the set_memory_* function. See the description of the
80 * set_memory_* function for more details on conventions.
81 *
82 * These APIs should be considered *deprecated* and are likely going to
83 * be removed in the future.
84 * The reason for this is the implicit operation on the 1:1 mapping only,
85 * making this not a generally useful API.
86 *
87 * Specifically, many users of the old APIs had a virtual address,
88 * called virt_to_page() or vmalloc_to_page() on that address to
89 * get a struct page* that the old API required.
90 * To convert these cases, use set_memory_*() on the original
91 * virtual address, do not use these functions.
92 */
93
94int set_pages_uc(struct page *page, int numpages);
95int set_pages_wb(struct page *page, int numpages);
96int set_pages_x(struct page *page, int numpages);
97int set_pages_nx(struct page *page, int numpages);
98int set_pages_ro(struct page *page, int numpages);
99int set_pages_rw(struct page *page, int numpages);
100
101
102void clflush_cache_range(void *addr, unsigned int size);
103
104#ifdef CONFIG_DEBUG_RODATA
105void mark_rodata_ro(void);
106extern const int rodata_test_data;
107#endif
108
109#ifdef CONFIG_DEBUG_RODATA_TEST
110int rodata_test(void);
111#else
112static inline int rodata_test(void)
113{
114 return 0;
115}
116#endif
117
118#endif /* _ASM_X86_CACHEFLUSH_H */
diff --git a/arch/x86/include/asm/calgary.h b/arch/x86/include/asm/calgary.h
new file mode 100644
index 000000000000..b03bedb62aa7
--- /dev/null
+++ b/arch/x86/include/asm/calgary.h
@@ -0,0 +1,72 @@
1/*
2 * Derived from include/asm-powerpc/iommu.h
3 *
4 * Copyright IBM Corporation, 2006-2007
5 *
6 * Author: Jon Mason <jdmason@us.ibm.com>
7 * Author: Muli Ben-Yehuda <muli@il.ibm.com>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
24#ifndef _ASM_X86_CALGARY_H
25#define _ASM_X86_CALGARY_H
26
27#include <linux/spinlock.h>
28#include <linux/device.h>
29#include <linux/dma-mapping.h>
30#include <linux/timer.h>
31#include <asm/types.h>
32
33struct iommu_table {
34 struct cal_chipset_ops *chip_ops; /* chipset specific funcs */
35 unsigned long it_base; /* mapped address of tce table */
36 unsigned long it_hint; /* Hint for next alloc */
37 unsigned long *it_map; /* A simple allocation bitmap for now */
38 void __iomem *bbar; /* Bridge BAR */
39 u64 tar_val; /* Table Address Register */
40 struct timer_list watchdog_timer;
41 spinlock_t it_lock; /* Protects it_map */
42 unsigned int it_size; /* Size of iommu table in entries */
43 unsigned char it_busno; /* Bus number this table belongs to */
44};
45
46struct cal_chipset_ops {
47 void (*handle_quirks)(struct iommu_table *tbl, struct pci_dev *dev);
48 void (*tce_cache_blast)(struct iommu_table *tbl);
49 void (*dump_error_regs)(struct iommu_table *tbl);
50};
51
52#define TCE_TABLE_SIZE_UNSPECIFIED ~0
53#define TCE_TABLE_SIZE_64K 0
54#define TCE_TABLE_SIZE_128K 1
55#define TCE_TABLE_SIZE_256K 2
56#define TCE_TABLE_SIZE_512K 3
57#define TCE_TABLE_SIZE_1M 4
58#define TCE_TABLE_SIZE_2M 5
59#define TCE_TABLE_SIZE_4M 6
60#define TCE_TABLE_SIZE_8M 7
61
62extern int use_calgary;
63
64#ifdef CONFIG_CALGARY_IOMMU
65extern int calgary_iommu_init(void);
66extern void detect_calgary(void);
67#else
68static inline int calgary_iommu_init(void) { return 1; }
69static inline void detect_calgary(void) { return; }
70#endif
71
72#endif /* _ASM_X86_CALGARY_H */
diff --git a/arch/x86/include/asm/calling.h b/arch/x86/include/asm/calling.h
new file mode 100644
index 000000000000..2bc162e0ec6e
--- /dev/null
+++ b/arch/x86/include/asm/calling.h
@@ -0,0 +1,170 @@
1/*
2 * Some macros to handle stack frames in assembly.
3 */
4
5#define R15 0
6#define R14 8
7#define R13 16
8#define R12 24
9#define RBP 32
10#define RBX 40
11
12/* arguments: interrupts/non tracing syscalls only save upto here*/
13#define R11 48
14#define R10 56
15#define R9 64
16#define R8 72
17#define RAX 80
18#define RCX 88
19#define RDX 96
20#define RSI 104
21#define RDI 112
22#define ORIG_RAX 120 /* + error_code */
23/* end of arguments */
24
25/* cpu exception frame or undefined in case of fast syscall. */
26#define RIP 128
27#define CS 136
28#define EFLAGS 144
29#define RSP 152
30#define SS 160
31
32#define ARGOFFSET R11
33#define SWFRAME ORIG_RAX
34
35 .macro SAVE_ARGS addskip=0, norcx=0, nor891011=0
36 subq $9*8+\addskip, %rsp
37 CFI_ADJUST_CFA_OFFSET 9*8+\addskip
38 movq %rdi, 8*8(%rsp)
39 CFI_REL_OFFSET rdi, 8*8
40 movq %rsi, 7*8(%rsp)
41 CFI_REL_OFFSET rsi, 7*8
42 movq %rdx, 6*8(%rsp)
43 CFI_REL_OFFSET rdx, 6*8
44 .if \norcx
45 .else
46 movq %rcx, 5*8(%rsp)
47 CFI_REL_OFFSET rcx, 5*8
48 .endif
49 movq %rax, 4*8(%rsp)
50 CFI_REL_OFFSET rax, 4*8
51 .if \nor891011
52 .else
53 movq %r8, 3*8(%rsp)
54 CFI_REL_OFFSET r8, 3*8
55 movq %r9, 2*8(%rsp)
56 CFI_REL_OFFSET r9, 2*8
57 movq %r10, 1*8(%rsp)
58 CFI_REL_OFFSET r10, 1*8
59 movq %r11, (%rsp)
60 CFI_REL_OFFSET r11, 0*8
61 .endif
62 .endm
63
64#define ARG_SKIP 9*8
65
66 .macro RESTORE_ARGS skiprax=0, addskip=0, skiprcx=0, skipr11=0, \
67 skipr8910=0, skiprdx=0
68 .if \skipr11
69 .else
70 movq (%rsp), %r11
71 CFI_RESTORE r11
72 .endif
73 .if \skipr8910
74 .else
75 movq 1*8(%rsp), %r10
76 CFI_RESTORE r10
77 movq 2*8(%rsp), %r9
78 CFI_RESTORE r9
79 movq 3*8(%rsp), %r8
80 CFI_RESTORE r8
81 .endif
82 .if \skiprax
83 .else
84 movq 4*8(%rsp), %rax
85 CFI_RESTORE rax
86 .endif
87 .if \skiprcx
88 .else
89 movq 5*8(%rsp), %rcx
90 CFI_RESTORE rcx
91 .endif
92 .if \skiprdx
93 .else
94 movq 6*8(%rsp), %rdx
95 CFI_RESTORE rdx
96 .endif
97 movq 7*8(%rsp), %rsi
98 CFI_RESTORE rsi
99 movq 8*8(%rsp), %rdi
100 CFI_RESTORE rdi
101 .if ARG_SKIP+\addskip > 0
102 addq $ARG_SKIP+\addskip, %rsp
103 CFI_ADJUST_CFA_OFFSET -(ARG_SKIP+\addskip)
104 .endif
105 .endm
106
107 .macro LOAD_ARGS offset, skiprax=0
108 movq \offset(%rsp), %r11
109 movq \offset+8(%rsp), %r10
110 movq \offset+16(%rsp), %r9
111 movq \offset+24(%rsp), %r8
112 movq \offset+40(%rsp), %rcx
113 movq \offset+48(%rsp), %rdx
114 movq \offset+56(%rsp), %rsi
115 movq \offset+64(%rsp), %rdi
116 .if \skiprax
117 .else
118 movq \offset+72(%rsp), %rax
119 .endif
120 .endm
121
122#define REST_SKIP 6*8
123
124 .macro SAVE_REST
125 subq $REST_SKIP, %rsp
126 CFI_ADJUST_CFA_OFFSET REST_SKIP
127 movq %rbx, 5*8(%rsp)
128 CFI_REL_OFFSET rbx, 5*8
129 movq %rbp, 4*8(%rsp)
130 CFI_REL_OFFSET rbp, 4*8
131 movq %r12, 3*8(%rsp)
132 CFI_REL_OFFSET r12, 3*8
133 movq %r13, 2*8(%rsp)
134 CFI_REL_OFFSET r13, 2*8
135 movq %r14, 1*8(%rsp)
136 CFI_REL_OFFSET r14, 1*8
137 movq %r15, (%rsp)
138 CFI_REL_OFFSET r15, 0*8
139 .endm
140
141 .macro RESTORE_REST
142 movq (%rsp), %r15
143 CFI_RESTORE r15
144 movq 1*8(%rsp), %r14
145 CFI_RESTORE r14
146 movq 2*8(%rsp), %r13
147 CFI_RESTORE r13
148 movq 3*8(%rsp), %r12
149 CFI_RESTORE r12
150 movq 4*8(%rsp), %rbp
151 CFI_RESTORE rbp
152 movq 5*8(%rsp), %rbx
153 CFI_RESTORE rbx
154 addq $REST_SKIP, %rsp
155 CFI_ADJUST_CFA_OFFSET -(REST_SKIP)
156 .endm
157
158 .macro SAVE_ALL
159 SAVE_ARGS
160 SAVE_REST
161 .endm
162
163 .macro RESTORE_ALL addskip=0
164 RESTORE_REST
165 RESTORE_ARGS 0, \addskip
166 .endm
167
168 .macro icebp
169 .byte 0xf1
170 .endm
diff --git a/arch/x86/include/asm/checksum.h b/arch/x86/include/asm/checksum.h
new file mode 100644
index 000000000000..848850fd7d62
--- /dev/null
+++ b/arch/x86/include/asm/checksum.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "checksum_32.h"
3#else
4# include "checksum_64.h"
5#endif
diff --git a/arch/x86/include/asm/checksum_32.h b/arch/x86/include/asm/checksum_32.h
new file mode 100644
index 000000000000..7c5ef8b14d92
--- /dev/null
+++ b/arch/x86/include/asm/checksum_32.h
@@ -0,0 +1,189 @@
1#ifndef _ASM_X86_CHECKSUM_32_H
2#define _ASM_X86_CHECKSUM_32_H
3
4#include <linux/in6.h>
5
6#include <asm/uaccess.h>
7
8/*
9 * computes the checksum of a memory block at buff, length len,
10 * and adds in "sum" (32-bit)
11 *
12 * returns a 32-bit number suitable for feeding into itself
13 * or csum_tcpudp_magic
14 *
15 * this function must be called with even lengths, except
16 * for the last fragment, which may be odd
17 *
18 * it's best to have buff aligned on a 32-bit boundary
19 */
20asmlinkage __wsum csum_partial(const void *buff, int len, __wsum sum);
21
22/*
23 * the same as csum_partial, but copies from src while it
24 * checksums, and handles user-space pointer exceptions correctly, when needed.
25 *
26 * here even more important to align src and dst on a 32-bit (or even
27 * better 64-bit) boundary
28 */
29
30asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst,
31 int len, __wsum sum,
32 int *src_err_ptr, int *dst_err_ptr);
33
34/*
35 * Note: when you get a NULL pointer exception here this means someone
36 * passed in an incorrect kernel address to one of these functions.
37 *
38 * If you use these functions directly please don't forget the
39 * access_ok().
40 */
41static inline __wsum csum_partial_copy_nocheck(const void *src, void *dst,
42 int len, __wsum sum)
43{
44 return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL);
45}
46
47static inline __wsum csum_partial_copy_from_user(const void __user *src,
48 void *dst,
49 int len, __wsum sum,
50 int *err_ptr)
51{
52 might_sleep();
53 return csum_partial_copy_generic((__force void *)src, dst,
54 len, sum, err_ptr, NULL);
55}
56
57/*
58 * This is a version of ip_compute_csum() optimized for IP headers,
59 * which always checksum on 4 octet boundaries.
60 *
61 * By Jorge Cwik <jorge@laser.satlink.net>, adapted for linux by
62 * Arnt Gulbrandsen.
63 */
64static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
65{
66 unsigned int sum;
67
68 asm volatile("movl (%1), %0 ;\n"
69 "subl $4, %2 ;\n"
70 "jbe 2f ;\n"
71 "addl 4(%1), %0 ;\n"
72 "adcl 8(%1), %0 ;\n"
73 "adcl 12(%1), %0;\n"
74 "1: adcl 16(%1), %0 ;\n"
75 "lea 4(%1), %1 ;\n"
76 "decl %2 ;\n"
77 "jne 1b ;\n"
78 "adcl $0, %0 ;\n"
79 "movl %0, %2 ;\n"
80 "shrl $16, %0 ;\n"
81 "addw %w2, %w0 ;\n"
82 "adcl $0, %0 ;\n"
83 "notl %0 ;\n"
84 "2: ;\n"
85 /* Since the input registers which are loaded with iph and ihl
86 are modified, we must also specify them as outputs, or gcc
87 will assume they contain their original values. */
88 : "=r" (sum), "=r" (iph), "=r" (ihl)
89 : "1" (iph), "2" (ihl)
90 : "memory");
91 return (__force __sum16)sum;
92}
93
94/*
95 * Fold a partial checksum
96 */
97
98static inline __sum16 csum_fold(__wsum sum)
99{
100 asm("addl %1, %0 ;\n"
101 "adcl $0xffff, %0 ;\n"
102 : "=r" (sum)
103 : "r" ((__force u32)sum << 16),
104 "0" ((__force u32)sum & 0xffff0000));
105 return (__force __sum16)(~(__force u32)sum >> 16);
106}
107
108static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
109 unsigned short len,
110 unsigned short proto,
111 __wsum sum)
112{
113 asm("addl %1, %0 ;\n"
114 "adcl %2, %0 ;\n"
115 "adcl %3, %0 ;\n"
116 "adcl $0, %0 ;\n"
117 : "=r" (sum)
118 : "g" (daddr), "g"(saddr),
119 "g" ((len + proto) << 8), "0" (sum));
120 return sum;
121}
122
123/*
124 * computes the checksum of the TCP/UDP pseudo-header
125 * returns a 16-bit checksum, already complemented
126 */
127static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
128 unsigned short len,
129 unsigned short proto,
130 __wsum sum)
131{
132 return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
133}
134
135/*
136 * this routine is used for miscellaneous IP-like checksums, mainly
137 * in icmp.c
138 */
139
140static inline __sum16 ip_compute_csum(const void *buff, int len)
141{
142 return csum_fold(csum_partial(buff, len, 0));
143}
144
145#define _HAVE_ARCH_IPV6_CSUM
146static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
147 const struct in6_addr *daddr,
148 __u32 len, unsigned short proto,
149 __wsum sum)
150{
151 asm("addl 0(%1), %0 ;\n"
152 "adcl 4(%1), %0 ;\n"
153 "adcl 8(%1), %0 ;\n"
154 "adcl 12(%1), %0 ;\n"
155 "adcl 0(%2), %0 ;\n"
156 "adcl 4(%2), %0 ;\n"
157 "adcl 8(%2), %0 ;\n"
158 "adcl 12(%2), %0 ;\n"
159 "adcl %3, %0 ;\n"
160 "adcl %4, %0 ;\n"
161 "adcl $0, %0 ;\n"
162 : "=&r" (sum)
163 : "r" (saddr), "r" (daddr),
164 "r" (htonl(len)), "r" (htonl(proto)), "0" (sum));
165
166 return csum_fold(sum);
167}
168
169/*
170 * Copy and checksum to user
171 */
172#define HAVE_CSUM_COPY_USER
173static inline __wsum csum_and_copy_to_user(const void *src,
174 void __user *dst,
175 int len, __wsum sum,
176 int *err_ptr)
177{
178 might_sleep();
179 if (access_ok(VERIFY_WRITE, dst, len))
180 return csum_partial_copy_generic(src, (__force void *)dst,
181 len, sum, NULL, err_ptr);
182
183 if (len)
184 *err_ptr = -EFAULT;
185
186 return (__force __wsum)-1; /* invalid checksum */
187}
188
189#endif /* _ASM_X86_CHECKSUM_32_H */
diff --git a/arch/x86/include/asm/checksum_64.h b/arch/x86/include/asm/checksum_64.h
new file mode 100644
index 000000000000..9bfdc41629ec
--- /dev/null
+++ b/arch/x86/include/asm/checksum_64.h
@@ -0,0 +1,191 @@
1#ifndef _ASM_X86_CHECKSUM_64_H
2#define _ASM_X86_CHECKSUM_64_H
3
4/*
5 * Checksums for x86-64
6 * Copyright 2002 by Andi Kleen, SuSE Labs
7 * with some code from asm-x86/checksum.h
8 */
9
10#include <linux/compiler.h>
11#include <asm/uaccess.h>
12#include <asm/byteorder.h>
13
14/**
15 * csum_fold - Fold and invert a 32bit checksum.
16 * sum: 32bit unfolded sum
17 *
18 * Fold a 32bit running checksum to 16bit and invert it. This is usually
19 * the last step before putting a checksum into a packet.
20 * Make sure not to mix with 64bit checksums.
21 */
22static inline __sum16 csum_fold(__wsum sum)
23{
24 asm(" addl %1,%0\n"
25 " adcl $0xffff,%0"
26 : "=r" (sum)
27 : "r" ((__force u32)sum << 16),
28 "0" ((__force u32)sum & 0xffff0000));
29 return (__force __sum16)(~(__force u32)sum >> 16);
30}
31
32/*
33 * This is a version of ip_compute_csum() optimized for IP headers,
34 * which always checksum on 4 octet boundaries.
35 *
36 * By Jorge Cwik <jorge@laser.satlink.net>, adapted for linux by
37 * Arnt Gulbrandsen.
38 */
39
40/**
41 * ip_fast_csum - Compute the IPv4 header checksum efficiently.
42 * iph: ipv4 header
43 * ihl: length of header / 4
44 */
45static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
46{
47 unsigned int sum;
48
49 asm(" movl (%1), %0\n"
50 " subl $4, %2\n"
51 " jbe 2f\n"
52 " addl 4(%1), %0\n"
53 " adcl 8(%1), %0\n"
54 " adcl 12(%1), %0\n"
55 "1: adcl 16(%1), %0\n"
56 " lea 4(%1), %1\n"
57 " decl %2\n"
58 " jne 1b\n"
59 " adcl $0, %0\n"
60 " movl %0, %2\n"
61 " shrl $16, %0\n"
62 " addw %w2, %w0\n"
63 " adcl $0, %0\n"
64 " notl %0\n"
65 "2:"
66 /* Since the input registers which are loaded with iph and ihl
67 are modified, we must also specify them as outputs, or gcc
68 will assume they contain their original values. */
69 : "=r" (sum), "=r" (iph), "=r" (ihl)
70 : "1" (iph), "2" (ihl)
71 : "memory");
72 return (__force __sum16)sum;
73}
74
75/**
76 * csum_tcpup_nofold - Compute an IPv4 pseudo header checksum.
77 * @saddr: source address
78 * @daddr: destination address
79 * @len: length of packet
80 * @proto: ip protocol of packet
81 * @sum: initial sum to be added in (32bit unfolded)
82 *
83 * Returns the pseudo header checksum the input data. Result is
84 * 32bit unfolded.
85 */
86static inline __wsum
87csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
88 unsigned short proto, __wsum sum)
89{
90 asm(" addl %1, %0\n"
91 " adcl %2, %0\n"
92 " adcl %3, %0\n"
93 " adcl $0, %0\n"
94 : "=r" (sum)
95 : "g" (daddr), "g" (saddr),
96 "g" ((len + proto)<<8), "0" (sum));
97 return sum;
98}
99
100
101/**
102 * csum_tcpup_magic - Compute an IPv4 pseudo header checksum.
103 * @saddr: source address
104 * @daddr: destination address
105 * @len: length of packet
106 * @proto: ip protocol of packet
107 * @sum: initial sum to be added in (32bit unfolded)
108 *
109 * Returns the 16bit pseudo header checksum the input data already
110 * complemented and ready to be filled in.
111 */
112static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
113 unsigned short len,
114 unsigned short proto, __wsum sum)
115{
116 return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
117}
118
119/**
120 * csum_partial - Compute an internet checksum.
121 * @buff: buffer to be checksummed
122 * @len: length of buffer.
123 * @sum: initial sum to be added in (32bit unfolded)
124 *
125 * Returns the 32bit unfolded internet checksum of the buffer.
126 * Before filling it in it needs to be csum_fold()'ed.
127 * buff should be aligned to a 64bit boundary if possible.
128 */
129extern __wsum csum_partial(const void *buff, int len, __wsum sum);
130
131#define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER 1
132#define HAVE_CSUM_COPY_USER 1
133
134
135/* Do not call this directly. Use the wrappers below */
136extern __wsum csum_partial_copy_generic(const void *src, const void *dst,
137 int len, __wsum sum,
138 int *src_err_ptr, int *dst_err_ptr);
139
140
141extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
142 int len, __wsum isum, int *errp);
143extern __wsum csum_partial_copy_to_user(const void *src, void __user *dst,
144 int len, __wsum isum, int *errp);
145extern __wsum csum_partial_copy_nocheck(const void *src, void *dst,
146 int len, __wsum sum);
147
148/* Old names. To be removed. */
149#define csum_and_copy_to_user csum_partial_copy_to_user
150#define csum_and_copy_from_user csum_partial_copy_from_user
151
152/**
153 * ip_compute_csum - Compute an 16bit IP checksum.
154 * @buff: buffer address.
155 * @len: length of buffer.
156 *
157 * Returns the 16bit folded/inverted checksum of the passed buffer.
158 * Ready to fill in.
159 */
160extern __sum16 ip_compute_csum(const void *buff, int len);
161
162/**
163 * csum_ipv6_magic - Compute checksum of an IPv6 pseudo header.
164 * @saddr: source address
165 * @daddr: destination address
166 * @len: length of packet
167 * @proto: protocol of packet
168 * @sum: initial sum (32bit unfolded) to be added in
169 *
170 * Computes an IPv6 pseudo header checksum. This sum is added the checksum
171 * into UDP/TCP packets and contains some link layer information.
172 * Returns the unfolded 32bit checksum.
173 */
174
175struct in6_addr;
176
177#define _HAVE_ARCH_IPV6_CSUM 1
178extern __sum16
179csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
180 __u32 len, unsigned short proto, __wsum sum);
181
182static inline unsigned add32_with_carry(unsigned a, unsigned b)
183{
184 asm("addl %2,%0\n\t"
185 "adcl $0,%0"
186 : "=r" (a)
187 : "0" (a), "r" (b));
188 return a;
189}
190
191#endif /* _ASM_X86_CHECKSUM_64_H */
diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h
new file mode 100644
index 000000000000..a460fa088d4c
--- /dev/null
+++ b/arch/x86/include/asm/cmpxchg.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "cmpxchg_32.h"
3#else
4# include "cmpxchg_64.h"
5#endif
diff --git a/arch/x86/include/asm/cmpxchg_32.h b/arch/x86/include/asm/cmpxchg_32.h
new file mode 100644
index 000000000000..82ceb788a981
--- /dev/null
+++ b/arch/x86/include/asm/cmpxchg_32.h
@@ -0,0 +1,344 @@
1#ifndef _ASM_X86_CMPXCHG_32_H
2#define _ASM_X86_CMPXCHG_32_H
3
4#include <linux/bitops.h> /* for LOCK_PREFIX */
5
6/*
7 * Note: if you use set64_bit(), __cmpxchg64(), or their variants, you
8 * you need to test for the feature in boot_cpu_data.
9 */
10
11#define xchg(ptr, v) \
12 ((__typeof__(*(ptr)))__xchg((unsigned long)(v), (ptr), sizeof(*(ptr))))
13
14struct __xchg_dummy {
15 unsigned long a[100];
16};
17#define __xg(x) ((struct __xchg_dummy *)(x))
18
19/*
20 * The semantics of XCHGCMP8B are a bit strange, this is why
21 * there is a loop and the loading of %%eax and %%edx has to
22 * be inside. This inlines well in most cases, the cached
23 * cost is around ~38 cycles. (in the future we might want
24 * to do an SIMD/3DNOW!/MMX/FPU 64-bit store here, but that
25 * might have an implicit FPU-save as a cost, so it's not
26 * clear which path to go.)
27 *
28 * cmpxchg8b must be used with the lock prefix here to allow
29 * the instruction to be executed atomically, see page 3-102
30 * of the instruction set reference 24319102.pdf. We need
31 * the reader side to see the coherent 64bit value.
32 */
33static inline void __set_64bit(unsigned long long *ptr,
34 unsigned int low, unsigned int high)
35{
36 asm volatile("\n1:\t"
37 "movl (%0), %%eax\n\t"
38 "movl 4(%0), %%edx\n\t"
39 LOCK_PREFIX "cmpxchg8b (%0)\n\t"
40 "jnz 1b"
41 : /* no outputs */
42 : "D"(ptr),
43 "b"(low),
44 "c"(high)
45 : "ax", "dx", "memory");
46}
47
48static inline void __set_64bit_constant(unsigned long long *ptr,
49 unsigned long long value)
50{
51 __set_64bit(ptr, (unsigned int)value, (unsigned int)(value >> 32));
52}
53
54#define ll_low(x) *(((unsigned int *)&(x)) + 0)
55#define ll_high(x) *(((unsigned int *)&(x)) + 1)
56
57static inline void __set_64bit_var(unsigned long long *ptr,
58 unsigned long long value)
59{
60 __set_64bit(ptr, ll_low(value), ll_high(value));
61}
62
63#define set_64bit(ptr, value) \
64 (__builtin_constant_p((value)) \
65 ? __set_64bit_constant((ptr), (value)) \
66 : __set_64bit_var((ptr), (value)))
67
68#define _set_64bit(ptr, value) \
69 (__builtin_constant_p(value) \
70 ? __set_64bit(ptr, (unsigned int)(value), \
71 (unsigned int)((value) >> 32)) \
72 : __set_64bit(ptr, ll_low((value)), ll_high((value))))
73
74/*
75 * Note: no "lock" prefix even on SMP: xchg always implies lock anyway
76 * Note 2: xchg has side effect, so that attribute volatile is necessary,
77 * but generally the primitive is invalid, *ptr is output argument. --ANK
78 */
79static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
80 int size)
81{
82 switch (size) {
83 case 1:
84 asm volatile("xchgb %b0,%1"
85 : "=q" (x)
86 : "m" (*__xg(ptr)), "0" (x)
87 : "memory");
88 break;
89 case 2:
90 asm volatile("xchgw %w0,%1"
91 : "=r" (x)
92 : "m" (*__xg(ptr)), "0" (x)
93 : "memory");
94 break;
95 case 4:
96 asm volatile("xchgl %0,%1"
97 : "=r" (x)
98 : "m" (*__xg(ptr)), "0" (x)
99 : "memory");
100 break;
101 }
102 return x;
103}
104
105/*
106 * Atomic compare and exchange. Compare OLD with MEM, if identical,
107 * store NEW in MEM. Return the initial value in MEM. Success is
108 * indicated by comparing RETURN with OLD.
109 */
110
111#ifdef CONFIG_X86_CMPXCHG
112#define __HAVE_ARCH_CMPXCHG 1
113#define cmpxchg(ptr, o, n) \
114 ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
115 (unsigned long)(n), \
116 sizeof(*(ptr))))
117#define sync_cmpxchg(ptr, o, n) \
118 ((__typeof__(*(ptr)))__sync_cmpxchg((ptr), (unsigned long)(o), \
119 (unsigned long)(n), \
120 sizeof(*(ptr))))
121#define cmpxchg_local(ptr, o, n) \
122 ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \
123 (unsigned long)(n), \
124 sizeof(*(ptr))))
125#endif
126
127#ifdef CONFIG_X86_CMPXCHG64
128#define cmpxchg64(ptr, o, n) \
129 ((__typeof__(*(ptr)))__cmpxchg64((ptr), (unsigned long long)(o), \
130 (unsigned long long)(n)))
131#define cmpxchg64_local(ptr, o, n) \
132 ((__typeof__(*(ptr)))__cmpxchg64_local((ptr), (unsigned long long)(o), \
133 (unsigned long long)(n)))
134#endif
135
136static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
137 unsigned long new, int size)
138{
139 unsigned long prev;
140 switch (size) {
141 case 1:
142 asm volatile(LOCK_PREFIX "cmpxchgb %b1,%2"
143 : "=a"(prev)
144 : "q"(new), "m"(*__xg(ptr)), "0"(old)
145 : "memory");
146 return prev;
147 case 2:
148 asm volatile(LOCK_PREFIX "cmpxchgw %w1,%2"
149 : "=a"(prev)
150 : "r"(new), "m"(*__xg(ptr)), "0"(old)
151 : "memory");
152 return prev;
153 case 4:
154 asm volatile(LOCK_PREFIX "cmpxchgl %1,%2"
155 : "=a"(prev)
156 : "r"(new), "m"(*__xg(ptr)), "0"(old)
157 : "memory");
158 return prev;
159 }
160 return old;
161}
162
163/*
164 * Always use locked operations when touching memory shared with a
165 * hypervisor, since the system may be SMP even if the guest kernel
166 * isn't.
167 */
168static inline unsigned long __sync_cmpxchg(volatile void *ptr,
169 unsigned long old,
170 unsigned long new, int size)
171{
172 unsigned long prev;
173 switch (size) {
174 case 1:
175 asm volatile("lock; cmpxchgb %b1,%2"
176 : "=a"(prev)
177 : "q"(new), "m"(*__xg(ptr)), "0"(old)
178 : "memory");
179 return prev;
180 case 2:
181 asm volatile("lock; cmpxchgw %w1,%2"
182 : "=a"(prev)
183 : "r"(new), "m"(*__xg(ptr)), "0"(old)
184 : "memory");
185 return prev;
186 case 4:
187 asm volatile("lock; cmpxchgl %1,%2"
188 : "=a"(prev)
189 : "r"(new), "m"(*__xg(ptr)), "0"(old)
190 : "memory");
191 return prev;
192 }
193 return old;
194}
195
196static inline unsigned long __cmpxchg_local(volatile void *ptr,
197 unsigned long old,
198 unsigned long new, int size)
199{
200 unsigned long prev;
201 switch (size) {
202 case 1:
203 asm volatile("cmpxchgb %b1,%2"
204 : "=a"(prev)
205 : "q"(new), "m"(*__xg(ptr)), "0"(old)
206 : "memory");
207 return prev;
208 case 2:
209 asm volatile("cmpxchgw %w1,%2"
210 : "=a"(prev)
211 : "r"(new), "m"(*__xg(ptr)), "0"(old)
212 : "memory");
213 return prev;
214 case 4:
215 asm volatile("cmpxchgl %1,%2"
216 : "=a"(prev)
217 : "r"(new), "m"(*__xg(ptr)), "0"(old)
218 : "memory");
219 return prev;
220 }
221 return old;
222}
223
224static inline unsigned long long __cmpxchg64(volatile void *ptr,
225 unsigned long long old,
226 unsigned long long new)
227{
228 unsigned long long prev;
229 asm volatile(LOCK_PREFIX "cmpxchg8b %3"
230 : "=A"(prev)
231 : "b"((unsigned long)new),
232 "c"((unsigned long)(new >> 32)),
233 "m"(*__xg(ptr)),
234 "0"(old)
235 : "memory");
236 return prev;
237}
238
239static inline unsigned long long __cmpxchg64_local(volatile void *ptr,
240 unsigned long long old,
241 unsigned long long new)
242{
243 unsigned long long prev;
244 asm volatile("cmpxchg8b %3"
245 : "=A"(prev)
246 : "b"((unsigned long)new),
247 "c"((unsigned long)(new >> 32)),
248 "m"(*__xg(ptr)),
249 "0"(old)
250 : "memory");
251 return prev;
252}
253
254#ifndef CONFIG_X86_CMPXCHG
255/*
256 * Building a kernel capable running on 80386. It may be necessary to
257 * simulate the cmpxchg on the 80386 CPU. For that purpose we define
258 * a function for each of the sizes we support.
259 */
260
261extern unsigned long cmpxchg_386_u8(volatile void *, u8, u8);
262extern unsigned long cmpxchg_386_u16(volatile void *, u16, u16);
263extern unsigned long cmpxchg_386_u32(volatile void *, u32, u32);
264
265static inline unsigned long cmpxchg_386(volatile void *ptr, unsigned long old,
266 unsigned long new, int size)
267{
268 switch (size) {
269 case 1:
270 return cmpxchg_386_u8(ptr, old, new);
271 case 2:
272 return cmpxchg_386_u16(ptr, old, new);
273 case 4:
274 return cmpxchg_386_u32(ptr, old, new);
275 }
276 return old;
277}
278
279#define cmpxchg(ptr, o, n) \
280({ \
281 __typeof__(*(ptr)) __ret; \
282 if (likely(boot_cpu_data.x86 > 3)) \
283 __ret = (__typeof__(*(ptr)))__cmpxchg((ptr), \
284 (unsigned long)(o), (unsigned long)(n), \
285 sizeof(*(ptr))); \
286 else \
287 __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \
288 (unsigned long)(o), (unsigned long)(n), \
289 sizeof(*(ptr))); \
290 __ret; \
291})
292#define cmpxchg_local(ptr, o, n) \
293({ \
294 __typeof__(*(ptr)) __ret; \
295 if (likely(boot_cpu_data.x86 > 3)) \
296 __ret = (__typeof__(*(ptr)))__cmpxchg_local((ptr), \
297 (unsigned long)(o), (unsigned long)(n), \
298 sizeof(*(ptr))); \
299 else \
300 __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \
301 (unsigned long)(o), (unsigned long)(n), \
302 sizeof(*(ptr))); \
303 __ret; \
304})
305#endif
306
307#ifndef CONFIG_X86_CMPXCHG64
308/*
309 * Building a kernel capable running on 80386 and 80486. It may be necessary
310 * to simulate the cmpxchg8b on the 80386 and 80486 CPU.
311 */
312
313extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64);
314
315#define cmpxchg64(ptr, o, n) \
316({ \
317 __typeof__(*(ptr)) __ret; \
318 if (likely(boot_cpu_data.x86 > 4)) \
319 __ret = (__typeof__(*(ptr)))__cmpxchg64((ptr), \
320 (unsigned long long)(o), \
321 (unsigned long long)(n)); \
322 else \
323 __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \
324 (unsigned long long)(o), \
325 (unsigned long long)(n)); \
326 __ret; \
327})
328#define cmpxchg64_local(ptr, o, n) \
329({ \
330 __typeof__(*(ptr)) __ret; \
331 if (likely(boot_cpu_data.x86 > 4)) \
332 __ret = (__typeof__(*(ptr)))__cmpxchg64_local((ptr), \
333 (unsigned long long)(o), \
334 (unsigned long long)(n)); \
335 else \
336 __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \
337 (unsigned long long)(o), \
338 (unsigned long long)(n)); \
339 __ret; \
340})
341
342#endif
343
344#endif /* _ASM_X86_CMPXCHG_32_H */
diff --git a/arch/x86/include/asm/cmpxchg_64.h b/arch/x86/include/asm/cmpxchg_64.h
new file mode 100644
index 000000000000..52de72e0de8c
--- /dev/null
+++ b/arch/x86/include/asm/cmpxchg_64.h
@@ -0,0 +1,185 @@
1#ifndef _ASM_X86_CMPXCHG_64_H
2#define _ASM_X86_CMPXCHG_64_H
3
4#include <asm/alternative.h> /* Provides LOCK_PREFIX */
5
6#define xchg(ptr, v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v), \
7 (ptr), sizeof(*(ptr))))
8
9#define __xg(x) ((volatile long *)(x))
10
11static inline void set_64bit(volatile unsigned long *ptr, unsigned long val)
12{
13 *ptr = val;
14}
15
16#define _set_64bit set_64bit
17
18/*
19 * Note: no "lock" prefix even on SMP: xchg always implies lock anyway
20 * Note 2: xchg has side effect, so that attribute volatile is necessary,
21 * but generally the primitive is invalid, *ptr is output argument. --ANK
22 */
23static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
24 int size)
25{
26 switch (size) {
27 case 1:
28 asm volatile("xchgb %b0,%1"
29 : "=q" (x)
30 : "m" (*__xg(ptr)), "0" (x)
31 : "memory");
32 break;
33 case 2:
34 asm volatile("xchgw %w0,%1"
35 : "=r" (x)
36 : "m" (*__xg(ptr)), "0" (x)
37 : "memory");
38 break;
39 case 4:
40 asm volatile("xchgl %k0,%1"
41 : "=r" (x)
42 : "m" (*__xg(ptr)), "0" (x)
43 : "memory");
44 break;
45 case 8:
46 asm volatile("xchgq %0,%1"
47 : "=r" (x)
48 : "m" (*__xg(ptr)), "0" (x)
49 : "memory");
50 break;
51 }
52 return x;
53}
54
55/*
56 * Atomic compare and exchange. Compare OLD with MEM, if identical,
57 * store NEW in MEM. Return the initial value in MEM. Success is
58 * indicated by comparing RETURN with OLD.
59 */
60
61#define __HAVE_ARCH_CMPXCHG 1
62
63static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
64 unsigned long new, int size)
65{
66 unsigned long prev;
67 switch (size) {
68 case 1:
69 asm volatile(LOCK_PREFIX "cmpxchgb %b1,%2"
70 : "=a"(prev)
71 : "q"(new), "m"(*__xg(ptr)), "0"(old)
72 : "memory");
73 return prev;
74 case 2:
75 asm volatile(LOCK_PREFIX "cmpxchgw %w1,%2"
76 : "=a"(prev)
77 : "r"(new), "m"(*__xg(ptr)), "0"(old)
78 : "memory");
79 return prev;
80 case 4:
81 asm volatile(LOCK_PREFIX "cmpxchgl %k1,%2"
82 : "=a"(prev)
83 : "r"(new), "m"(*__xg(ptr)), "0"(old)
84 : "memory");
85 return prev;
86 case 8:
87 asm volatile(LOCK_PREFIX "cmpxchgq %1,%2"
88 : "=a"(prev)
89 : "r"(new), "m"(*__xg(ptr)), "0"(old)
90 : "memory");
91 return prev;
92 }
93 return old;
94}
95
96/*
97 * Always use locked operations when touching memory shared with a
98 * hypervisor, since the system may be SMP even if the guest kernel
99 * isn't.
100 */
101static inline unsigned long __sync_cmpxchg(volatile void *ptr,
102 unsigned long old,
103 unsigned long new, int size)
104{
105 unsigned long prev;
106 switch (size) {
107 case 1:
108 asm volatile("lock; cmpxchgb %b1,%2"
109 : "=a"(prev)
110 : "q"(new), "m"(*__xg(ptr)), "0"(old)
111 : "memory");
112 return prev;
113 case 2:
114 asm volatile("lock; cmpxchgw %w1,%2"
115 : "=a"(prev)
116 : "r"(new), "m"(*__xg(ptr)), "0"(old)
117 : "memory");
118 return prev;
119 case 4:
120 asm volatile("lock; cmpxchgl %1,%2"
121 : "=a"(prev)
122 : "r"(new), "m"(*__xg(ptr)), "0"(old)
123 : "memory");
124 return prev;
125 }
126 return old;
127}
128
129static inline unsigned long __cmpxchg_local(volatile void *ptr,
130 unsigned long old,
131 unsigned long new, int size)
132{
133 unsigned long prev;
134 switch (size) {
135 case 1:
136 asm volatile("cmpxchgb %b1,%2"
137 : "=a"(prev)
138 : "q"(new), "m"(*__xg(ptr)), "0"(old)
139 : "memory");
140 return prev;
141 case 2:
142 asm volatile("cmpxchgw %w1,%2"
143 : "=a"(prev)
144 : "r"(new), "m"(*__xg(ptr)), "0"(old)
145 : "memory");
146 return prev;
147 case 4:
148 asm volatile("cmpxchgl %k1,%2"
149 : "=a"(prev)
150 : "r"(new), "m"(*__xg(ptr)), "0"(old)
151 : "memory");
152 return prev;
153 case 8:
154 asm volatile("cmpxchgq %1,%2"
155 : "=a"(prev)
156 : "r"(new), "m"(*__xg(ptr)), "0"(old)
157 : "memory");
158 return prev;
159 }
160 return old;
161}
162
163#define cmpxchg(ptr, o, n) \
164 ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
165 (unsigned long)(n), sizeof(*(ptr))))
166#define cmpxchg64(ptr, o, n) \
167({ \
168 BUILD_BUG_ON(sizeof(*(ptr)) != 8); \
169 cmpxchg((ptr), (o), (n)); \
170})
171#define cmpxchg_local(ptr, o, n) \
172 ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \
173 (unsigned long)(n), \
174 sizeof(*(ptr))))
175#define sync_cmpxchg(ptr, o, n) \
176 ((__typeof__(*(ptr)))__sync_cmpxchg((ptr), (unsigned long)(o), \
177 (unsigned long)(n), \
178 sizeof(*(ptr))))
179#define cmpxchg64_local(ptr, o, n) \
180({ \
181 BUILD_BUG_ON(sizeof(*(ptr)) != 8); \
182 cmpxchg_local((ptr), (o), (n)); \
183})
184
185#endif /* _ASM_X86_CMPXCHG_64_H */
diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h
new file mode 100644
index 000000000000..9a9c7bdc923d
--- /dev/null
+++ b/arch/x86/include/asm/compat.h
@@ -0,0 +1,218 @@
1#ifndef _ASM_X86_COMPAT_H
2#define _ASM_X86_COMPAT_H
3
4/*
5 * Architecture specific compatibility types
6 */
7#include <linux/types.h>
8#include <linux/sched.h>
9#include <asm/user32.h>
10
11#define COMPAT_USER_HZ 100
12
13typedef u32 compat_size_t;
14typedef s32 compat_ssize_t;
15typedef s32 compat_time_t;
16typedef s32 compat_clock_t;
17typedef s32 compat_pid_t;
18typedef u16 __compat_uid_t;
19typedef u16 __compat_gid_t;
20typedef u32 __compat_uid32_t;
21typedef u32 __compat_gid32_t;
22typedef u16 compat_mode_t;
23typedef u32 compat_ino_t;
24typedef u16 compat_dev_t;
25typedef s32 compat_off_t;
26typedef s64 compat_loff_t;
27typedef u16 compat_nlink_t;
28typedef u16 compat_ipc_pid_t;
29typedef s32 compat_daddr_t;
30typedef u32 compat_caddr_t;
31typedef __kernel_fsid_t compat_fsid_t;
32typedef s32 compat_timer_t;
33typedef s32 compat_key_t;
34
35typedef s32 compat_int_t;
36typedef s32 compat_long_t;
37typedef s64 __attribute__((aligned(4))) compat_s64;
38typedef u32 compat_uint_t;
39typedef u32 compat_ulong_t;
40typedef u64 __attribute__((aligned(4))) compat_u64;
41
42struct compat_timespec {
43 compat_time_t tv_sec;
44 s32 tv_nsec;
45};
46
47struct compat_timeval {
48 compat_time_t tv_sec;
49 s32 tv_usec;
50};
51
52struct compat_stat {
53 compat_dev_t st_dev;
54 u16 __pad1;
55 compat_ino_t st_ino;
56 compat_mode_t st_mode;
57 compat_nlink_t st_nlink;
58 __compat_uid_t st_uid;
59 __compat_gid_t st_gid;
60 compat_dev_t st_rdev;
61 u16 __pad2;
62 u32 st_size;
63 u32 st_blksize;
64 u32 st_blocks;
65 u32 st_atime;
66 u32 st_atime_nsec;
67 u32 st_mtime;
68 u32 st_mtime_nsec;
69 u32 st_ctime;
70 u32 st_ctime_nsec;
71 u32 __unused4;
72 u32 __unused5;
73};
74
75struct compat_flock {
76 short l_type;
77 short l_whence;
78 compat_off_t l_start;
79 compat_off_t l_len;
80 compat_pid_t l_pid;
81};
82
83#define F_GETLK64 12 /* using 'struct flock64' */
84#define F_SETLK64 13
85#define F_SETLKW64 14
86
87/*
88 * IA32 uses 4 byte alignment for 64 bit quantities,
89 * so we need to pack this structure.
90 */
91struct compat_flock64 {
92 short l_type;
93 short l_whence;
94 compat_loff_t l_start;
95 compat_loff_t l_len;
96 compat_pid_t l_pid;
97} __attribute__((packed));
98
99struct compat_statfs {
100 int f_type;
101 int f_bsize;
102 int f_blocks;
103 int f_bfree;
104 int f_bavail;
105 int f_files;
106 int f_ffree;
107 compat_fsid_t f_fsid;
108 int f_namelen; /* SunOS ignores this field. */
109 int f_frsize;
110 int f_spare[5];
111};
112
113#define COMPAT_RLIM_OLD_INFINITY 0x7fffffff
114#define COMPAT_RLIM_INFINITY 0xffffffff
115
116typedef u32 compat_old_sigset_t; /* at least 32 bits */
117
118#define _COMPAT_NSIG 64
119#define _COMPAT_NSIG_BPW 32
120
121typedef u32 compat_sigset_word;
122
123#define COMPAT_OFF_T_MAX 0x7fffffff
124#define COMPAT_LOFF_T_MAX 0x7fffffffffffffffL
125
126struct compat_ipc64_perm {
127 compat_key_t key;
128 __compat_uid32_t uid;
129 __compat_gid32_t gid;
130 __compat_uid32_t cuid;
131 __compat_gid32_t cgid;
132 unsigned short mode;
133 unsigned short __pad1;
134 unsigned short seq;
135 unsigned short __pad2;
136 compat_ulong_t unused1;
137 compat_ulong_t unused2;
138};
139
140struct compat_semid64_ds {
141 struct compat_ipc64_perm sem_perm;
142 compat_time_t sem_otime;
143 compat_ulong_t __unused1;
144 compat_time_t sem_ctime;
145 compat_ulong_t __unused2;
146 compat_ulong_t sem_nsems;
147 compat_ulong_t __unused3;
148 compat_ulong_t __unused4;
149};
150
151struct compat_msqid64_ds {
152 struct compat_ipc64_perm msg_perm;
153 compat_time_t msg_stime;
154 compat_ulong_t __unused1;
155 compat_time_t msg_rtime;
156 compat_ulong_t __unused2;
157 compat_time_t msg_ctime;
158 compat_ulong_t __unused3;
159 compat_ulong_t msg_cbytes;
160 compat_ulong_t msg_qnum;
161 compat_ulong_t msg_qbytes;
162 compat_pid_t msg_lspid;
163 compat_pid_t msg_lrpid;
164 compat_ulong_t __unused4;
165 compat_ulong_t __unused5;
166};
167
168struct compat_shmid64_ds {
169 struct compat_ipc64_perm shm_perm;
170 compat_size_t shm_segsz;
171 compat_time_t shm_atime;
172 compat_ulong_t __unused1;
173 compat_time_t shm_dtime;
174 compat_ulong_t __unused2;
175 compat_time_t shm_ctime;
176 compat_ulong_t __unused3;
177 compat_pid_t shm_cpid;
178 compat_pid_t shm_lpid;
179 compat_ulong_t shm_nattch;
180 compat_ulong_t __unused4;
181 compat_ulong_t __unused5;
182};
183
184/*
185 * The type of struct elf_prstatus.pr_reg in compatible core dumps.
186 */
187typedef struct user_regs_struct32 compat_elf_gregset_t;
188
189/*
190 * A pointer passed in from user mode. This should not
191 * be used for syscall parameters, just declare them
192 * as pointers because the syscall entry code will have
193 * appropriately converted them already.
194 */
195typedef u32 compat_uptr_t;
196
197static inline void __user *compat_ptr(compat_uptr_t uptr)
198{
199 return (void __user *)(unsigned long)uptr;
200}
201
202static inline compat_uptr_t ptr_to_compat(void __user *uptr)
203{
204 return (u32)(unsigned long)uptr;
205}
206
207static inline void __user *compat_alloc_user_space(long len)
208{
209 struct pt_regs *regs = task_pt_regs(current);
210 return (void __user *)regs->sp - len;
211}
212
213static inline int is_compat_task(void)
214{
215 return current_thread_info()->status & TS_COMPAT;
216}
217
218#endif /* _ASM_X86_COMPAT_H */
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h
new file mode 100644
index 000000000000..bae482df6039
--- /dev/null
+++ b/arch/x86/include/asm/cpu.h
@@ -0,0 +1,20 @@
1#ifndef _ASM_X86_CPU_H
2#define _ASM_X86_CPU_H
3
4#include <linux/device.h>
5#include <linux/cpu.h>
6#include <linux/topology.h>
7#include <linux/nodemask.h>
8#include <linux/percpu.h>
9
10struct x86_cpu {
11 struct cpu cpu;
12};
13
14#ifdef CONFIG_HOTPLUG_CPU
15extern int arch_register_cpu(int num);
16extern void arch_unregister_cpu(int);
17#endif
18
19DECLARE_PER_CPU(int, cpu_state);
20#endif /* _ASM_X86_CPU_H */
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
new file mode 100644
index 000000000000..f73e95d75b45
--- /dev/null
+++ b/arch/x86/include/asm/cpufeature.h
@@ -0,0 +1,271 @@
1/*
2 * Defines x86 CPU feature bits
3 */
4#ifndef _ASM_X86_CPUFEATURE_H
5#define _ASM_X86_CPUFEATURE_H
6
7#include <asm/required-features.h>
8
9#define NCAPINTS 9 /* N 32-bit words worth of info */
10
11/*
12 * Note: If the comment begins with a quoted string, that string is used
13 * in /proc/cpuinfo instead of the macro name. If the string is "",
14 * this feature bit is not displayed in /proc/cpuinfo at all.
15 */
16
17/* Intel-defined CPU features, CPUID level 0x00000001 (edx), word 0 */
18#define X86_FEATURE_FPU (0*32+ 0) /* Onboard FPU */
19#define X86_FEATURE_VME (0*32+ 1) /* Virtual Mode Extensions */
20#define X86_FEATURE_DE (0*32+ 2) /* Debugging Extensions */
21#define X86_FEATURE_PSE (0*32+ 3) /* Page Size Extensions */
22#define X86_FEATURE_TSC (0*32+ 4) /* Time Stamp Counter */
23#define X86_FEATURE_MSR (0*32+ 5) /* Model-Specific Registers */
24#define X86_FEATURE_PAE (0*32+ 6) /* Physical Address Extensions */
25#define X86_FEATURE_MCE (0*32+ 7) /* Machine Check Architecture */
26#define X86_FEATURE_CX8 (0*32+ 8) /* CMPXCHG8 instruction */
27#define X86_FEATURE_APIC (0*32+ 9) /* Onboard APIC */
28#define X86_FEATURE_SEP (0*32+11) /* SYSENTER/SYSEXIT */
29#define X86_FEATURE_MTRR (0*32+12) /* Memory Type Range Registers */
30#define X86_FEATURE_PGE (0*32+13) /* Page Global Enable */
31#define X86_FEATURE_MCA (0*32+14) /* Machine Check Architecture */
32#define X86_FEATURE_CMOV (0*32+15) /* CMOV instructions */
33 /* (plus FCMOVcc, FCOMI with FPU) */
34#define X86_FEATURE_PAT (0*32+16) /* Page Attribute Table */
35#define X86_FEATURE_PSE36 (0*32+17) /* 36-bit PSEs */
36#define X86_FEATURE_PN (0*32+18) /* Processor serial number */
37#define X86_FEATURE_CLFLSH (0*32+19) /* "clflush" CLFLUSH instruction */
38#define X86_FEATURE_DS (0*32+21) /* "dts" Debug Store */
39#define X86_FEATURE_ACPI (0*32+22) /* ACPI via MSR */
40#define X86_FEATURE_MMX (0*32+23) /* Multimedia Extensions */
41#define X86_FEATURE_FXSR (0*32+24) /* FXSAVE/FXRSTOR, CR4.OSFXSR */
42#define X86_FEATURE_XMM (0*32+25) /* "sse" */
43#define X86_FEATURE_XMM2 (0*32+26) /* "sse2" */
44#define X86_FEATURE_SELFSNOOP (0*32+27) /* "ss" CPU self snoop */
45#define X86_FEATURE_HT (0*32+28) /* Hyper-Threading */
46#define X86_FEATURE_ACC (0*32+29) /* "tm" Automatic clock control */
47#define X86_FEATURE_IA64 (0*32+30) /* IA-64 processor */
48#define X86_FEATURE_PBE (0*32+31) /* Pending Break Enable */
49
50/* AMD-defined CPU features, CPUID level 0x80000001, word 1 */
51/* Don't duplicate feature flags which are redundant with Intel! */
52#define X86_FEATURE_SYSCALL (1*32+11) /* SYSCALL/SYSRET */
53#define X86_FEATURE_MP (1*32+19) /* MP Capable. */
54#define X86_FEATURE_NX (1*32+20) /* Execute Disable */
55#define X86_FEATURE_MMXEXT (1*32+22) /* AMD MMX extensions */
56#define X86_FEATURE_FXSR_OPT (1*32+25) /* FXSAVE/FXRSTOR optimizations */
57#define X86_FEATURE_GBPAGES (1*32+26) /* "pdpe1gb" GB pages */
58#define X86_FEATURE_RDTSCP (1*32+27) /* RDTSCP */
59#define X86_FEATURE_LM (1*32+29) /* Long Mode (x86-64) */
60#define X86_FEATURE_3DNOWEXT (1*32+30) /* AMD 3DNow! extensions */
61#define X86_FEATURE_3DNOW (1*32+31) /* 3DNow! */
62
63/* Transmeta-defined CPU features, CPUID level 0x80860001, word 2 */
64#define X86_FEATURE_RECOVERY (2*32+ 0) /* CPU in recovery mode */
65#define X86_FEATURE_LONGRUN (2*32+ 1) /* Longrun power control */
66#define X86_FEATURE_LRTI (2*32+ 3) /* LongRun table interface */
67
68/* Other features, Linux-defined mapping, word 3 */
69/* This range is used for feature bits which conflict or are synthesized */
70#define X86_FEATURE_CXMMX (3*32+ 0) /* Cyrix MMX extensions */
71#define X86_FEATURE_K6_MTRR (3*32+ 1) /* AMD K6 nonstandard MTRRs */
72#define X86_FEATURE_CYRIX_ARR (3*32+ 2) /* Cyrix ARRs (= MTRRs) */
73#define X86_FEATURE_CENTAUR_MCR (3*32+ 3) /* Centaur MCRs (= MTRRs) */
74/* cpu types for specific tunings: */
75#define X86_FEATURE_K8 (3*32+ 4) /* "" Opteron, Athlon64 */
76#define X86_FEATURE_K7 (3*32+ 5) /* "" Athlon */
77#define X86_FEATURE_P3 (3*32+ 6) /* "" P3 */
78#define X86_FEATURE_P4 (3*32+ 7) /* "" P4 */
79#define X86_FEATURE_CONSTANT_TSC (3*32+ 8) /* TSC ticks at a constant rate */
80#define X86_FEATURE_UP (3*32+ 9) /* smp kernel running on up */
81#define X86_FEATURE_FXSAVE_LEAK (3*32+10) /* "" FXSAVE leaks FOP/FIP/FOP */
82#define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */
83#define X86_FEATURE_NOPL (3*32+20) /* The NOPL (0F 1F) instructions */
84#define X86_FEATURE_PEBS (3*32+12) /* Precise-Event Based Sampling */
85#define X86_FEATURE_BTS (3*32+13) /* Branch Trace Store */
86#define X86_FEATURE_SYSCALL32 (3*32+14) /* "" syscall in ia32 userspace */
87#define X86_FEATURE_SYSENTER32 (3*32+15) /* "" sysenter in ia32 userspace */
88#define X86_FEATURE_REP_GOOD (3*32+16) /* rep microcode works well */
89#define X86_FEATURE_MFENCE_RDTSC (3*32+17) /* "" Mfence synchronizes RDTSC */
90#define X86_FEATURE_LFENCE_RDTSC (3*32+18) /* "" Lfence synchronizes RDTSC */
91#define X86_FEATURE_11AP (3*32+19) /* "" Bad local APIC aka 11AP */
92#define X86_FEATURE_NOPL (3*32+20) /* The NOPL (0F 1F) instructions */
93#define X86_FEATURE_AMDC1E (3*32+21) /* AMD C1E detected */
94#define X86_FEATURE_XTOPOLOGY (3*32+21) /* cpu topology enum extensions */
95
96/* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
97#define X86_FEATURE_XMM3 (4*32+ 0) /* "pni" SSE-3 */
98#define X86_FEATURE_PCLMULQDQ (4*32+ 1) /* PCLMULQDQ instruction */
99#define X86_FEATURE_DTES64 (4*32+ 2) /* 64-bit Debug Store */
100#define X86_FEATURE_MWAIT (4*32+ 3) /* "monitor" Monitor/Mwait support */
101#define X86_FEATURE_DSCPL (4*32+ 4) /* "ds_cpl" CPL Qual. Debug Store */
102#define X86_FEATURE_VMX (4*32+ 5) /* Hardware virtualization */
103#define X86_FEATURE_SMX (4*32+ 6) /* Safer mode */
104#define X86_FEATURE_EST (4*32+ 7) /* Enhanced SpeedStep */
105#define X86_FEATURE_TM2 (4*32+ 8) /* Thermal Monitor 2 */
106#define X86_FEATURE_SSSE3 (4*32+ 9) /* Supplemental SSE-3 */
107#define X86_FEATURE_CID (4*32+10) /* Context ID */
108#define X86_FEATURE_FMA (4*32+12) /* Fused multiply-add */
109#define X86_FEATURE_CX16 (4*32+13) /* CMPXCHG16B */
110#define X86_FEATURE_XTPR (4*32+14) /* Send Task Priority Messages */
111#define X86_FEATURE_PDCM (4*32+15) /* Performance Capabilities */
112#define X86_FEATURE_DCA (4*32+18) /* Direct Cache Access */
113#define X86_FEATURE_XMM4_1 (4*32+19) /* "sse4_1" SSE-4.1 */
114#define X86_FEATURE_XMM4_2 (4*32+20) /* "sse4_2" SSE-4.2 */
115#define X86_FEATURE_X2APIC (4*32+21) /* x2APIC */
116#define X86_FEATURE_AES (4*32+25) /* AES instructions */
117#define X86_FEATURE_XSAVE (4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */
118#define X86_FEATURE_OSXSAVE (4*32+27) /* "" XSAVE enabled in the OS */
119#define X86_FEATURE_AVX (4*32+28) /* Advanced Vector Extensions */
120
121/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
122#define X86_FEATURE_XSTORE (5*32+ 2) /* "rng" RNG present (xstore) */
123#define X86_FEATURE_XSTORE_EN (5*32+ 3) /* "rng_en" RNG enabled */
124#define X86_FEATURE_XCRYPT (5*32+ 6) /* "ace" on-CPU crypto (xcrypt) */
125#define X86_FEATURE_XCRYPT_EN (5*32+ 7) /* "ace_en" on-CPU crypto enabled */
126#define X86_FEATURE_ACE2 (5*32+ 8) /* Advanced Cryptography Engine v2 */
127#define X86_FEATURE_ACE2_EN (5*32+ 9) /* ACE v2 enabled */
128#define X86_FEATURE_PHE (5*32+10) /* PadLock Hash Engine */
129#define X86_FEATURE_PHE_EN (5*32+11) /* PHE enabled */
130#define X86_FEATURE_PMM (5*32+12) /* PadLock Montgomery Multiplier */
131#define X86_FEATURE_PMM_EN (5*32+13) /* PMM enabled */
132
133/* More extended AMD flags: CPUID level 0x80000001, ecx, word 6 */
134#define X86_FEATURE_LAHF_LM (6*32+ 0) /* LAHF/SAHF in long mode */
135#define X86_FEATURE_CMP_LEGACY (6*32+ 1) /* If yes HyperThreading not valid */
136#define X86_FEATURE_SVM (6*32+ 2) /* Secure virtual machine */
137#define X86_FEATURE_EXTAPIC (6*32+ 3) /* Extended APIC space */
138#define X86_FEATURE_CR8_LEGACY (6*32+ 4) /* CR8 in 32-bit mode */
139#define X86_FEATURE_ABM (6*32+ 5) /* Advanced bit manipulation */
140#define X86_FEATURE_SSE4A (6*32+ 6) /* SSE-4A */
141#define X86_FEATURE_MISALIGNSSE (6*32+ 7) /* Misaligned SSE mode */
142#define X86_FEATURE_3DNOWPREFETCH (6*32+ 8) /* 3DNow prefetch instructions */
143#define X86_FEATURE_OSVW (6*32+ 9) /* OS Visible Workaround */
144#define X86_FEATURE_IBS (6*32+10) /* Instruction Based Sampling */
145#define X86_FEATURE_SSE5 (6*32+11) /* SSE-5 */
146#define X86_FEATURE_SKINIT (6*32+12) /* SKINIT/STGI instructions */
147#define X86_FEATURE_WDT (6*32+13) /* Watchdog timer */
148
149/*
150 * Auxiliary flags: Linux defined - For features scattered in various
151 * CPUID levels like 0x6, 0xA etc
152 */
153#define X86_FEATURE_IDA (7*32+ 0) /* Intel Dynamic Acceleration */
154
155/* Virtualization flags: Linux defined */
156#define X86_FEATURE_TPR_SHADOW (8*32+ 0) /* Intel TPR Shadow */
157#define X86_FEATURE_VNMI (8*32+ 1) /* Intel Virtual NMI */
158#define X86_FEATURE_FLEXPRIORITY (8*32+ 2) /* Intel FlexPriority */
159#define X86_FEATURE_EPT (8*32+ 3) /* Intel Extended Page Table */
160#define X86_FEATURE_VPID (8*32+ 4) /* Intel Virtual Processor ID */
161
162#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
163
164#include <linux/bitops.h>
165
166extern const char * const x86_cap_flags[NCAPINTS*32];
167extern const char * const x86_power_flags[32];
168
169#define test_cpu_cap(c, bit) \
170 test_bit(bit, (unsigned long *)((c)->x86_capability))
171
172#define cpu_has(c, bit) \
173 (__builtin_constant_p(bit) && \
174 ( (((bit)>>5)==0 && (1UL<<((bit)&31) & REQUIRED_MASK0)) || \
175 (((bit)>>5)==1 && (1UL<<((bit)&31) & REQUIRED_MASK1)) || \
176 (((bit)>>5)==2 && (1UL<<((bit)&31) & REQUIRED_MASK2)) || \
177 (((bit)>>5)==3 && (1UL<<((bit)&31) & REQUIRED_MASK3)) || \
178 (((bit)>>5)==4 && (1UL<<((bit)&31) & REQUIRED_MASK4)) || \
179 (((bit)>>5)==5 && (1UL<<((bit)&31) & REQUIRED_MASK5)) || \
180 (((bit)>>5)==6 && (1UL<<((bit)&31) & REQUIRED_MASK6)) || \
181 (((bit)>>5)==7 && (1UL<<((bit)&31) & REQUIRED_MASK7)) ) \
182 ? 1 : \
183 test_cpu_cap(c, bit))
184
185#define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
186
187#define set_cpu_cap(c, bit) set_bit(bit, (unsigned long *)((c)->x86_capability))
188#define clear_cpu_cap(c, bit) clear_bit(bit, (unsigned long *)((c)->x86_capability))
189#define setup_clear_cpu_cap(bit) do { \
190 clear_cpu_cap(&boot_cpu_data, bit); \
191 set_bit(bit, (unsigned long *)cleared_cpu_caps); \
192} while (0)
193#define setup_force_cpu_cap(bit) do { \
194 set_cpu_cap(&boot_cpu_data, bit); \
195 clear_bit(bit, (unsigned long *)cleared_cpu_caps); \
196} while (0)
197
198#define cpu_has_fpu boot_cpu_has(X86_FEATURE_FPU)
199#define cpu_has_vme boot_cpu_has(X86_FEATURE_VME)
200#define cpu_has_de boot_cpu_has(X86_FEATURE_DE)
201#define cpu_has_pse boot_cpu_has(X86_FEATURE_PSE)
202#define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC)
203#define cpu_has_pae boot_cpu_has(X86_FEATURE_PAE)
204#define cpu_has_pge boot_cpu_has(X86_FEATURE_PGE)
205#define cpu_has_apic boot_cpu_has(X86_FEATURE_APIC)
206#define cpu_has_sep boot_cpu_has(X86_FEATURE_SEP)
207#define cpu_has_mtrr boot_cpu_has(X86_FEATURE_MTRR)
208#define cpu_has_mmx boot_cpu_has(X86_FEATURE_MMX)
209#define cpu_has_fxsr boot_cpu_has(X86_FEATURE_FXSR)
210#define cpu_has_xmm boot_cpu_has(X86_FEATURE_XMM)
211#define cpu_has_xmm2 boot_cpu_has(X86_FEATURE_XMM2)
212#define cpu_has_xmm3 boot_cpu_has(X86_FEATURE_XMM3)
213#define cpu_has_ht boot_cpu_has(X86_FEATURE_HT)
214#define cpu_has_mp boot_cpu_has(X86_FEATURE_MP)
215#define cpu_has_nx boot_cpu_has(X86_FEATURE_NX)
216#define cpu_has_k6_mtrr boot_cpu_has(X86_FEATURE_K6_MTRR)
217#define cpu_has_cyrix_arr boot_cpu_has(X86_FEATURE_CYRIX_ARR)
218#define cpu_has_centaur_mcr boot_cpu_has(X86_FEATURE_CENTAUR_MCR)
219#define cpu_has_xstore boot_cpu_has(X86_FEATURE_XSTORE)
220#define cpu_has_xstore_enabled boot_cpu_has(X86_FEATURE_XSTORE_EN)
221#define cpu_has_xcrypt boot_cpu_has(X86_FEATURE_XCRYPT)
222#define cpu_has_xcrypt_enabled boot_cpu_has(X86_FEATURE_XCRYPT_EN)
223#define cpu_has_ace2 boot_cpu_has(X86_FEATURE_ACE2)
224#define cpu_has_ace2_enabled boot_cpu_has(X86_FEATURE_ACE2_EN)
225#define cpu_has_phe boot_cpu_has(X86_FEATURE_PHE)
226#define cpu_has_phe_enabled boot_cpu_has(X86_FEATURE_PHE_EN)
227#define cpu_has_pmm boot_cpu_has(X86_FEATURE_PMM)
228#define cpu_has_pmm_enabled boot_cpu_has(X86_FEATURE_PMM_EN)
229#define cpu_has_ds boot_cpu_has(X86_FEATURE_DS)
230#define cpu_has_pebs boot_cpu_has(X86_FEATURE_PEBS)
231#define cpu_has_clflush boot_cpu_has(X86_FEATURE_CLFLSH)
232#define cpu_has_bts boot_cpu_has(X86_FEATURE_BTS)
233#define cpu_has_gbpages boot_cpu_has(X86_FEATURE_GBPAGES)
234#define cpu_has_arch_perfmon boot_cpu_has(X86_FEATURE_ARCH_PERFMON)
235#define cpu_has_pat boot_cpu_has(X86_FEATURE_PAT)
236#define cpu_has_xmm4_1 boot_cpu_has(X86_FEATURE_XMM4_1)
237#define cpu_has_xmm4_2 boot_cpu_has(X86_FEATURE_XMM4_2)
238#define cpu_has_x2apic boot_cpu_has(X86_FEATURE_X2APIC)
239#define cpu_has_xsave boot_cpu_has(X86_FEATURE_XSAVE)
240
241#if defined(CONFIG_X86_INVLPG) || defined(CONFIG_X86_64)
242# define cpu_has_invlpg 1
243#else
244# define cpu_has_invlpg (boot_cpu_data.x86 > 3)
245#endif
246
247#ifdef CONFIG_X86_64
248
249#undef cpu_has_vme
250#define cpu_has_vme 0
251
252#undef cpu_has_pae
253#define cpu_has_pae ___BUG___
254
255#undef cpu_has_mp
256#define cpu_has_mp 1
257
258#undef cpu_has_k6_mtrr
259#define cpu_has_k6_mtrr 0
260
261#undef cpu_has_cyrix_arr
262#define cpu_has_cyrix_arr 0
263
264#undef cpu_has_centaur_mcr
265#define cpu_has_centaur_mcr 0
266
267#endif /* CONFIG_X86_64 */
268
269#endif /* defined(__KERNEL__) && !defined(__ASSEMBLY__) */
270
271#endif /* _ASM_X86_CPUFEATURE_H */
diff --git a/arch/x86/include/asm/cputime.h b/arch/x86/include/asm/cputime.h
new file mode 100644
index 000000000000..6d68ad7e0ea3
--- /dev/null
+++ b/arch/x86/include/asm/cputime.h
@@ -0,0 +1 @@
#include <asm-generic/cputime.h>
diff --git a/arch/x86/include/asm/current.h b/arch/x86/include/asm/current.h
new file mode 100644
index 000000000000..0930b4f8d672
--- /dev/null
+++ b/arch/x86/include/asm/current.h
@@ -0,0 +1,39 @@
1#ifndef _ASM_X86_CURRENT_H
2#define _ASM_X86_CURRENT_H
3
4#ifdef CONFIG_X86_32
5#include <linux/compiler.h>
6#include <asm/percpu.h>
7
8struct task_struct;
9
10DECLARE_PER_CPU(struct task_struct *, current_task);
11static __always_inline struct task_struct *get_current(void)
12{
13 return x86_read_percpu(current_task);
14}
15
16#else /* X86_32 */
17
18#ifndef __ASSEMBLY__
19#include <asm/pda.h>
20
21struct task_struct;
22
23static __always_inline struct task_struct *get_current(void)
24{
25 return read_pda(pcurrent);
26}
27
28#else /* __ASSEMBLY__ */
29
30#include <asm/asm-offsets.h>
31#define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg
32
33#endif /* __ASSEMBLY__ */
34
35#endif /* X86_32 */
36
37#define current get_current()
38
39#endif /* _ASM_X86_CURRENT_H */
diff --git a/arch/x86/include/asm/debugreg.h b/arch/x86/include/asm/debugreg.h
new file mode 100644
index 000000000000..3ea6f37be9e2
--- /dev/null
+++ b/arch/x86/include/asm/debugreg.h
@@ -0,0 +1,70 @@
1#ifndef _ASM_X86_DEBUGREG_H
2#define _ASM_X86_DEBUGREG_H
3
4
5/* Indicate the register numbers for a number of the specific
6 debug registers. Registers 0-3 contain the addresses we wish to trap on */
7#define DR_FIRSTADDR 0 /* u_debugreg[DR_FIRSTADDR] */
8#define DR_LASTADDR 3 /* u_debugreg[DR_LASTADDR] */
9
10#define DR_STATUS 6 /* u_debugreg[DR_STATUS] */
11#define DR_CONTROL 7 /* u_debugreg[DR_CONTROL] */
12
13/* Define a few things for the status register. We can use this to determine
14 which debugging register was responsible for the trap. The other bits
15 are either reserved or not of interest to us. */
16
17#define DR_TRAP0 (0x1) /* db0 */
18#define DR_TRAP1 (0x2) /* db1 */
19#define DR_TRAP2 (0x4) /* db2 */
20#define DR_TRAP3 (0x8) /* db3 */
21
22#define DR_STEP (0x4000) /* single-step */
23#define DR_SWITCH (0x8000) /* task switch */
24
25/* Now define a bunch of things for manipulating the control register.
26 The top two bytes of the control register consist of 4 fields of 4
27 bits - each field corresponds to one of the four debug registers,
28 and indicates what types of access we trap on, and how large the data
29 field is that we are looking at */
30
31#define DR_CONTROL_SHIFT 16 /* Skip this many bits in ctl register */
32#define DR_CONTROL_SIZE 4 /* 4 control bits per register */
33
34#define DR_RW_EXECUTE (0x0) /* Settings for the access types to trap on */
35#define DR_RW_WRITE (0x1)
36#define DR_RW_READ (0x3)
37
38#define DR_LEN_1 (0x0) /* Settings for data length to trap on */
39#define DR_LEN_2 (0x4)
40#define DR_LEN_4 (0xC)
41#define DR_LEN_8 (0x8)
42
43/* The low byte to the control register determine which registers are
44 enabled. There are 4 fields of two bits. One bit is "local", meaning
45 that the processor will reset the bit after a task switch and the other
46 is global meaning that we have to explicitly reset the bit. With linux,
47 you can use either one, since we explicitly zero the register when we enter
48 kernel mode. */
49
50#define DR_LOCAL_ENABLE_SHIFT 0 /* Extra shift to the local enable bit */
51#define DR_GLOBAL_ENABLE_SHIFT 1 /* Extra shift to the global enable bit */
52#define DR_ENABLE_SIZE 2 /* 2 enable bits per register */
53
54#define DR_LOCAL_ENABLE_MASK (0x55) /* Set local bits for all 4 regs */
55#define DR_GLOBAL_ENABLE_MASK (0xAA) /* Set global bits for all 4 regs */
56
57/* The second byte to the control register has a few special things.
58 We can slow the instruction pipeline for instructions coming via the
59 gdt or the ldt if we want to. I am not sure why this is an advantage */
60
61#ifdef __i386__
62#define DR_CONTROL_RESERVED (0xFC00) /* Reserved by Intel */
63#else
64#define DR_CONTROL_RESERVED (0xFFFFFFFF0000FC00UL) /* Reserved */
65#endif
66
67#define DR_LOCAL_SLOWDOWN (0x100) /* Local slow the pipeline */
68#define DR_GLOBAL_SLOWDOWN (0x200) /* Global slow the pipeline */
69
70#endif /* _ASM_X86_DEBUGREG_H */
diff --git a/arch/x86/include/asm/delay.h b/arch/x86/include/asm/delay.h
new file mode 100644
index 000000000000..409a649204aa
--- /dev/null
+++ b/arch/x86/include/asm/delay.h
@@ -0,0 +1,31 @@
1#ifndef _ASM_X86_DELAY_H
2#define _ASM_X86_DELAY_H
3
4/*
5 * Copyright (C) 1993 Linus Torvalds
6 *
7 * Delay routines calling functions in arch/x86/lib/delay.c
8 */
9
10/* Undefined functions to get compile-time errors */
11extern void __bad_udelay(void);
12extern void __bad_ndelay(void);
13
14extern void __udelay(unsigned long usecs);
15extern void __ndelay(unsigned long nsecs);
16extern void __const_udelay(unsigned long xloops);
17extern void __delay(unsigned long loops);
18
19/* 0x10c7 is 2**32 / 1000000 (rounded up) */
20#define udelay(n) (__builtin_constant_p(n) ? \
21 ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) : \
22 __udelay(n))
23
24/* 0x5 is 2**32 / 1000000000 (rounded up) */
25#define ndelay(n) (__builtin_constant_p(n) ? \
26 ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
27 __ndelay(n))
28
29void use_tsc_delay(void);
30
31#endif /* _ASM_X86_DELAY_H */
diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
new file mode 100644
index 000000000000..e6b82b17b072
--- /dev/null
+++ b/arch/x86/include/asm/desc.h
@@ -0,0 +1,409 @@
1#ifndef _ASM_X86_DESC_H
2#define _ASM_X86_DESC_H
3
4#ifndef __ASSEMBLY__
5#include <asm/desc_defs.h>
6#include <asm/ldt.h>
7#include <asm/mmu.h>
8#include <linux/smp.h>
9
10static inline void fill_ldt(struct desc_struct *desc,
11 const struct user_desc *info)
12{
13 desc->limit0 = info->limit & 0x0ffff;
14 desc->base0 = info->base_addr & 0x0000ffff;
15
16 desc->base1 = (info->base_addr & 0x00ff0000) >> 16;
17 desc->type = (info->read_exec_only ^ 1) << 1;
18 desc->type |= info->contents << 2;
19 desc->s = 1;
20 desc->dpl = 0x3;
21 desc->p = info->seg_not_present ^ 1;
22 desc->limit = (info->limit & 0xf0000) >> 16;
23 desc->avl = info->useable;
24 desc->d = info->seg_32bit;
25 desc->g = info->limit_in_pages;
26 desc->base2 = (info->base_addr & 0xff000000) >> 24;
27 /*
28 * Don't allow setting of the lm bit. It is useless anyway
29 * because 64bit system calls require __USER_CS:
30 */
31 desc->l = 0;
32}
33
34extern struct desc_ptr idt_descr;
35extern gate_desc idt_table[];
36
37struct gdt_page {
38 struct desc_struct gdt[GDT_ENTRIES];
39} __attribute__((aligned(PAGE_SIZE)));
40DECLARE_PER_CPU(struct gdt_page, gdt_page);
41
42static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu)
43{
44 return per_cpu(gdt_page, cpu).gdt;
45}
46
47#ifdef CONFIG_X86_64
48
49static inline void pack_gate(gate_desc *gate, unsigned type, unsigned long func,
50 unsigned dpl, unsigned ist, unsigned seg)
51{
52 gate->offset_low = PTR_LOW(func);
53 gate->segment = __KERNEL_CS;
54 gate->ist = ist;
55 gate->p = 1;
56 gate->dpl = dpl;
57 gate->zero0 = 0;
58 gate->zero1 = 0;
59 gate->type = type;
60 gate->offset_middle = PTR_MIDDLE(func);
61 gate->offset_high = PTR_HIGH(func);
62}
63
64#else
65static inline void pack_gate(gate_desc *gate, unsigned char type,
66 unsigned long base, unsigned dpl, unsigned flags,
67 unsigned short seg)
68{
69 gate->a = (seg << 16) | (base & 0xffff);
70 gate->b = (base & 0xffff0000) |
71 (((0x80 | type | (dpl << 5)) & 0xff) << 8);
72}
73
74#endif
75
76static inline int desc_empty(const void *ptr)
77{
78 const u32 *desc = ptr;
79 return !(desc[0] | desc[1]);
80}
81
82#ifdef CONFIG_PARAVIRT
83#include <asm/paravirt.h>
84#else
85#define load_TR_desc() native_load_tr_desc()
86#define load_gdt(dtr) native_load_gdt(dtr)
87#define load_idt(dtr) native_load_idt(dtr)
88#define load_tr(tr) asm volatile("ltr %0"::"m" (tr))
89#define load_ldt(ldt) asm volatile("lldt %0"::"m" (ldt))
90
91#define store_gdt(dtr) native_store_gdt(dtr)
92#define store_idt(dtr) native_store_idt(dtr)
93#define store_tr(tr) (tr = native_store_tr())
94#define store_ldt(ldt) asm("sldt %0":"=m" (ldt))
95
96#define load_TLS(t, cpu) native_load_tls(t, cpu)
97#define set_ldt native_set_ldt
98
99#define write_ldt_entry(dt, entry, desc) \
100 native_write_ldt_entry(dt, entry, desc)
101#define write_gdt_entry(dt, entry, desc, type) \
102 native_write_gdt_entry(dt, entry, desc, type)
103#define write_idt_entry(dt, entry, g) \
104 native_write_idt_entry(dt, entry, g)
105
106static inline void paravirt_alloc_ldt(struct desc_struct *ldt, unsigned entries)
107{
108}
109
110static inline void paravirt_free_ldt(struct desc_struct *ldt, unsigned entries)
111{
112}
113#endif /* CONFIG_PARAVIRT */
114
115static inline void native_write_idt_entry(gate_desc *idt, int entry,
116 const gate_desc *gate)
117{
118 memcpy(&idt[entry], gate, sizeof(*gate));
119}
120
121static inline void native_write_ldt_entry(struct desc_struct *ldt, int entry,
122 const void *desc)
123{
124 memcpy(&ldt[entry], desc, 8);
125}
126
127static inline void native_write_gdt_entry(struct desc_struct *gdt, int entry,
128 const void *desc, int type)
129{
130 unsigned int size;
131 switch (type) {
132 case DESC_TSS:
133 size = sizeof(tss_desc);
134 break;
135 case DESC_LDT:
136 size = sizeof(ldt_desc);
137 break;
138 default:
139 size = sizeof(struct desc_struct);
140 break;
141 }
142 memcpy(&gdt[entry], desc, size);
143}
144
145static inline void pack_descriptor(struct desc_struct *desc, unsigned long base,
146 unsigned long limit, unsigned char type,
147 unsigned char flags)
148{
149 desc->a = ((base & 0xffff) << 16) | (limit & 0xffff);
150 desc->b = (base & 0xff000000) | ((base & 0xff0000) >> 16) |
151 (limit & 0x000f0000) | ((type & 0xff) << 8) |
152 ((flags & 0xf) << 20);
153 desc->p = 1;
154}
155
156
157static inline void set_tssldt_descriptor(void *d, unsigned long addr,
158 unsigned type, unsigned size)
159{
160#ifdef CONFIG_X86_64
161 struct ldttss_desc64 *desc = d;
162 memset(desc, 0, sizeof(*desc));
163 desc->limit0 = size & 0xFFFF;
164 desc->base0 = PTR_LOW(addr);
165 desc->base1 = PTR_MIDDLE(addr) & 0xFF;
166 desc->type = type;
167 desc->p = 1;
168 desc->limit1 = (size >> 16) & 0xF;
169 desc->base2 = (PTR_MIDDLE(addr) >> 8) & 0xFF;
170 desc->base3 = PTR_HIGH(addr);
171#else
172 pack_descriptor((struct desc_struct *)d, addr, size, 0x80 | type, 0);
173#endif
174}
175
176static inline void __set_tss_desc(unsigned cpu, unsigned int entry, void *addr)
177{
178 struct desc_struct *d = get_cpu_gdt_table(cpu);
179 tss_desc tss;
180
181 /*
182 * sizeof(unsigned long) coming from an extra "long" at the end
183 * of the iobitmap. See tss_struct definition in processor.h
184 *
185 * -1? seg base+limit should be pointing to the address of the
186 * last valid byte
187 */
188 set_tssldt_descriptor(&tss, (unsigned long)addr, DESC_TSS,
189 IO_BITMAP_OFFSET + IO_BITMAP_BYTES +
190 sizeof(unsigned long) - 1);
191 write_gdt_entry(d, entry, &tss, DESC_TSS);
192}
193
194#define set_tss_desc(cpu, addr) __set_tss_desc(cpu, GDT_ENTRY_TSS, addr)
195
196static inline void native_set_ldt(const void *addr, unsigned int entries)
197{
198 if (likely(entries == 0))
199 asm volatile("lldt %w0"::"q" (0));
200 else {
201 unsigned cpu = smp_processor_id();
202 ldt_desc ldt;
203
204 set_tssldt_descriptor(&ldt, (unsigned long)addr, DESC_LDT,
205 entries * LDT_ENTRY_SIZE - 1);
206 write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_LDT,
207 &ldt, DESC_LDT);
208 asm volatile("lldt %w0"::"q" (GDT_ENTRY_LDT*8));
209 }
210}
211
212static inline void native_load_tr_desc(void)
213{
214 asm volatile("ltr %w0"::"q" (GDT_ENTRY_TSS*8));
215}
216
217static inline void native_load_gdt(const struct desc_ptr *dtr)
218{
219 asm volatile("lgdt %0"::"m" (*dtr));
220}
221
222static inline void native_load_idt(const struct desc_ptr *dtr)
223{
224 asm volatile("lidt %0"::"m" (*dtr));
225}
226
227static inline void native_store_gdt(struct desc_ptr *dtr)
228{
229 asm volatile("sgdt %0":"=m" (*dtr));
230}
231
232static inline void native_store_idt(struct desc_ptr *dtr)
233{
234 asm volatile("sidt %0":"=m" (*dtr));
235}
236
237static inline unsigned long native_store_tr(void)
238{
239 unsigned long tr;
240 asm volatile("str %0":"=r" (tr));
241 return tr;
242}
243
244static inline void native_load_tls(struct thread_struct *t, unsigned int cpu)
245{
246 unsigned int i;
247 struct desc_struct *gdt = get_cpu_gdt_table(cpu);
248
249 for (i = 0; i < GDT_ENTRY_TLS_ENTRIES; i++)
250 gdt[GDT_ENTRY_TLS_MIN + i] = t->tls_array[i];
251}
252
253#define _LDT_empty(info) \
254 ((info)->base_addr == 0 && \
255 (info)->limit == 0 && \
256 (info)->contents == 0 && \
257 (info)->read_exec_only == 1 && \
258 (info)->seg_32bit == 0 && \
259 (info)->limit_in_pages == 0 && \
260 (info)->seg_not_present == 1 && \
261 (info)->useable == 0)
262
263#ifdef CONFIG_X86_64
264#define LDT_empty(info) (_LDT_empty(info) && ((info)->lm == 0))
265#else
266#define LDT_empty(info) (_LDT_empty(info))
267#endif
268
269static inline void clear_LDT(void)
270{
271 set_ldt(NULL, 0);
272}
273
274/*
275 * load one particular LDT into the current CPU
276 */
277static inline void load_LDT_nolock(mm_context_t *pc)
278{
279 set_ldt(pc->ldt, pc->size);
280}
281
282static inline void load_LDT(mm_context_t *pc)
283{
284 preempt_disable();
285 load_LDT_nolock(pc);
286 preempt_enable();
287}
288
289static inline unsigned long get_desc_base(const struct desc_struct *desc)
290{
291 return desc->base0 | ((desc->base1) << 16) | ((desc->base2) << 24);
292}
293
294static inline unsigned long get_desc_limit(const struct desc_struct *desc)
295{
296 return desc->limit0 | (desc->limit << 16);
297}
298
299static inline void _set_gate(int gate, unsigned type, void *addr,
300 unsigned dpl, unsigned ist, unsigned seg)
301{
302 gate_desc s;
303 pack_gate(&s, type, (unsigned long)addr, dpl, ist, seg);
304 /*
305 * does not need to be atomic because it is only done once at
306 * setup time
307 */
308 write_idt_entry(idt_table, gate, &s);
309}
310
311/*
312 * This needs to use 'idt_table' rather than 'idt', and
313 * thus use the _nonmapped_ version of the IDT, as the
314 * Pentium F0 0F bugfix can have resulted in the mapped
315 * IDT being write-protected.
316 */
317static inline void set_intr_gate(unsigned int n, void *addr)
318{
319 BUG_ON((unsigned)n > 0xFF);
320 _set_gate(n, GATE_INTERRUPT, addr, 0, 0, __KERNEL_CS);
321}
322
323#define SYS_VECTOR_FREE 0
324#define SYS_VECTOR_ALLOCED 1
325
326extern int first_system_vector;
327extern char system_vectors[];
328
329static inline void alloc_system_vector(int vector)
330{
331 if (system_vectors[vector] == SYS_VECTOR_FREE) {
332 system_vectors[vector] = SYS_VECTOR_ALLOCED;
333 if (first_system_vector > vector)
334 first_system_vector = vector;
335 } else
336 BUG();
337}
338
339static inline void alloc_intr_gate(unsigned int n, void *addr)
340{
341 alloc_system_vector(n);
342 set_intr_gate(n, addr);
343}
344
345/*
346 * This routine sets up an interrupt gate at directory privilege level 3.
347 */
348static inline void set_system_intr_gate(unsigned int n, void *addr)
349{
350 BUG_ON((unsigned)n > 0xFF);
351 _set_gate(n, GATE_INTERRUPT, addr, 0x3, 0, __KERNEL_CS);
352}
353
354static inline void set_system_trap_gate(unsigned int n, void *addr)
355{
356 BUG_ON((unsigned)n > 0xFF);
357 _set_gate(n, GATE_TRAP, addr, 0x3, 0, __KERNEL_CS);
358}
359
360static inline void set_trap_gate(unsigned int n, void *addr)
361{
362 BUG_ON((unsigned)n > 0xFF);
363 _set_gate(n, GATE_TRAP, addr, 0, 0, __KERNEL_CS);
364}
365
366static inline void set_task_gate(unsigned int n, unsigned int gdt_entry)
367{
368 BUG_ON((unsigned)n > 0xFF);
369 _set_gate(n, GATE_TASK, (void *)0, 0, 0, (gdt_entry<<3));
370}
371
372static inline void set_intr_gate_ist(int n, void *addr, unsigned ist)
373{
374 BUG_ON((unsigned)n > 0xFF);
375 _set_gate(n, GATE_INTERRUPT, addr, 0, ist, __KERNEL_CS);
376}
377
378static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
379{
380 BUG_ON((unsigned)n > 0xFF);
381 _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
382}
383
384#else
385/*
386 * GET_DESC_BASE reads the descriptor base of the specified segment.
387 *
388 * Args:
389 * idx - descriptor index
390 * gdt - GDT pointer
391 * base - 32bit register to which the base will be written
392 * lo_w - lo word of the "base" register
393 * lo_b - lo byte of the "base" register
394 * hi_b - hi byte of the low word of the "base" register
395 *
396 * Example:
397 * GET_DESC_BASE(GDT_ENTRY_ESPFIX_SS, %ebx, %eax, %ax, %al, %ah)
398 * Will read the base address of GDT_ENTRY_ESPFIX_SS and put it into %eax.
399 */
400#define GET_DESC_BASE(idx, gdt, base, lo_w, lo_b, hi_b) \
401 movb idx * 8 + 4(gdt), lo_b; \
402 movb idx * 8 + 7(gdt), hi_b; \
403 shll $16, base; \
404 movw idx * 8 + 2(gdt), lo_w;
405
406
407#endif /* __ASSEMBLY__ */
408
409#endif /* _ASM_X86_DESC_H */
diff --git a/arch/x86/include/asm/desc_defs.h b/arch/x86/include/asm/desc_defs.h
new file mode 100644
index 000000000000..a6adefa28b94
--- /dev/null
+++ b/arch/x86/include/asm/desc_defs.h
@@ -0,0 +1,95 @@
1/* Written 2000 by Andi Kleen */
2#ifndef _ASM_X86_DESC_DEFS_H
3#define _ASM_X86_DESC_DEFS_H
4
5/*
6 * Segment descriptor structure definitions, usable from both x86_64 and i386
7 * archs.
8 */
9
10#ifndef __ASSEMBLY__
11
12#include <linux/types.h>
13
14/*
15 * FIXME: Acessing the desc_struct through its fields is more elegant,
16 * and should be the one valid thing to do. However, a lot of open code
17 * still touches the a and b acessors, and doing this allow us to do it
18 * incrementally. We keep the signature as a struct, rather than an union,
19 * so we can get rid of it transparently in the future -- glommer
20 */
21/* 8 byte segment descriptor */
22struct desc_struct {
23 union {
24 struct {
25 unsigned int a;
26 unsigned int b;
27 };
28 struct {
29 u16 limit0;
30 u16 base0;
31 unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
32 unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
33 };
34 };
35} __attribute__((packed));
36
37enum {
38 GATE_INTERRUPT = 0xE,
39 GATE_TRAP = 0xF,
40 GATE_CALL = 0xC,
41 GATE_TASK = 0x5,
42};
43
44/* 16byte gate */
45struct gate_struct64 {
46 u16 offset_low;
47 u16 segment;
48 unsigned ist : 3, zero0 : 5, type : 5, dpl : 2, p : 1;
49 u16 offset_middle;
50 u32 offset_high;
51 u32 zero1;
52} __attribute__((packed));
53
54#define PTR_LOW(x) ((unsigned long long)(x) & 0xFFFF)
55#define PTR_MIDDLE(x) (((unsigned long long)(x) >> 16) & 0xFFFF)
56#define PTR_HIGH(x) ((unsigned long long)(x) >> 32)
57
58enum {
59 DESC_TSS = 0x9,
60 DESC_LDT = 0x2,
61 DESCTYPE_S = 0x10, /* !system */
62};
63
64/* LDT or TSS descriptor in the GDT. 16 bytes. */
65struct ldttss_desc64 {
66 u16 limit0;
67 u16 base0;
68 unsigned base1 : 8, type : 5, dpl : 2, p : 1;
69 unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8;
70 u32 base3;
71 u32 zero1;
72} __attribute__((packed));
73
74#ifdef CONFIG_X86_64
75typedef struct gate_struct64 gate_desc;
76typedef struct ldttss_desc64 ldt_desc;
77typedef struct ldttss_desc64 tss_desc;
78#define gate_offset(g) ((g).offset_low | ((unsigned long)(g).offset_middle << 16) | ((unsigned long)(g).offset_high << 32))
79#define gate_segment(g) ((g).segment)
80#else
81typedef struct desc_struct gate_desc;
82typedef struct desc_struct ldt_desc;
83typedef struct desc_struct tss_desc;
84#define gate_offset(g) (((g).b & 0xffff0000) | ((g).a & 0x0000ffff))
85#define gate_segment(g) ((g).a >> 16)
86#endif
87
88struct desc_ptr {
89 unsigned short size;
90 unsigned long address;
91} __attribute__((packed)) ;
92
93#endif /* !__ASSEMBLY__ */
94
95#endif /* _ASM_X86_DESC_DEFS_H */
diff --git a/arch/x86/include/asm/device.h b/arch/x86/include/asm/device.h
new file mode 100644
index 000000000000..3c034f48fdb0
--- /dev/null
+++ b/arch/x86/include/asm/device.h
@@ -0,0 +1,16 @@
1#ifndef _ASM_X86_DEVICE_H
2#define _ASM_X86_DEVICE_H
3
4struct dev_archdata {
5#ifdef CONFIG_ACPI
6 void *acpi_handle;
7#endif
8#ifdef CONFIG_X86_64
9struct dma_mapping_ops *dma_ops;
10#endif
11#ifdef CONFIG_DMAR
12 void *iommu; /* hook for IOMMU specific extension */
13#endif
14};
15
16#endif /* _ASM_X86_DEVICE_H */
diff --git a/arch/x86/include/asm/div64.h b/arch/x86/include/asm/div64.h
new file mode 100644
index 000000000000..9a2d644c08ef
--- /dev/null
+++ b/arch/x86/include/asm/div64.h
@@ -0,0 +1,60 @@
1#ifndef _ASM_X86_DIV64_H
2#define _ASM_X86_DIV64_H
3
4#ifdef CONFIG_X86_32
5
6#include <linux/types.h>
7
8/*
9 * do_div() is NOT a C function. It wants to return
10 * two values (the quotient and the remainder), but
11 * since that doesn't work very well in C, what it
12 * does is:
13 *
14 * - modifies the 64-bit dividend _in_place_
15 * - returns the 32-bit remainder
16 *
17 * This ends up being the most efficient "calling
18 * convention" on x86.
19 */
20#define do_div(n, base) \
21({ \
22 unsigned long __upper, __low, __high, __mod, __base; \
23 __base = (base); \
24 asm("":"=a" (__low), "=d" (__high) : "A" (n)); \
25 __upper = __high; \
26 if (__high) { \
27 __upper = __high % (__base); \
28 __high = __high / (__base); \
29 } \
30 asm("divl %2":"=a" (__low), "=d" (__mod) \
31 : "rm" (__base), "0" (__low), "1" (__upper)); \
32 asm("":"=A" (n) : "a" (__low), "d" (__high)); \
33 __mod; \
34})
35
36static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
37{
38 union {
39 u64 v64;
40 u32 v32[2];
41 } d = { dividend };
42 u32 upper;
43
44 upper = d.v32[1];
45 d.v32[1] = 0;
46 if (upper >= divisor) {
47 d.v32[1] = upper / divisor;
48 upper %= divisor;
49 }
50 asm ("divl %2" : "=a" (d.v32[0]), "=d" (*remainder) :
51 "rm" (divisor), "0" (d.v32[0]), "1" (upper));
52 return d.v64;
53}
54#define div_u64_rem div_u64_rem
55
56#else
57# include <asm-generic/div64.h>
58#endif /* CONFIG_X86_32 */
59
60#endif /* _ASM_X86_DIV64_H */
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
new file mode 100644
index 000000000000..4a5397bfce27
--- /dev/null
+++ b/arch/x86/include/asm/dma-mapping.h
@@ -0,0 +1,308 @@
1#ifndef _ASM_X86_DMA_MAPPING_H
2#define _ASM_X86_DMA_MAPPING_H
3
4/*
5 * IOMMU interface. See Documentation/DMA-mapping.txt and DMA-API.txt for
6 * documentation.
7 */
8
9#include <linux/scatterlist.h>
10#include <asm/io.h>
11#include <asm/swiotlb.h>
12#include <asm-generic/dma-coherent.h>
13
14extern dma_addr_t bad_dma_address;
15extern int iommu_merge;
16extern struct device x86_dma_fallback_dev;
17extern int panic_on_overflow;
18
19struct dma_mapping_ops {
20 int (*mapping_error)(struct device *dev,
21 dma_addr_t dma_addr);
22 void* (*alloc_coherent)(struct device *dev, size_t size,
23 dma_addr_t *dma_handle, gfp_t gfp);
24 void (*free_coherent)(struct device *dev, size_t size,
25 void *vaddr, dma_addr_t dma_handle);
26 dma_addr_t (*map_single)(struct device *hwdev, phys_addr_t ptr,
27 size_t size, int direction);
28 void (*unmap_single)(struct device *dev, dma_addr_t addr,
29 size_t size, int direction);
30 void (*sync_single_for_cpu)(struct device *hwdev,
31 dma_addr_t dma_handle, size_t size,
32 int direction);
33 void (*sync_single_for_device)(struct device *hwdev,
34 dma_addr_t dma_handle, size_t size,
35 int direction);
36 void (*sync_single_range_for_cpu)(struct device *hwdev,
37 dma_addr_t dma_handle, unsigned long offset,
38 size_t size, int direction);
39 void (*sync_single_range_for_device)(struct device *hwdev,
40 dma_addr_t dma_handle, unsigned long offset,
41 size_t size, int direction);
42 void (*sync_sg_for_cpu)(struct device *hwdev,
43 struct scatterlist *sg, int nelems,
44 int direction);
45 void (*sync_sg_for_device)(struct device *hwdev,
46 struct scatterlist *sg, int nelems,
47 int direction);
48 int (*map_sg)(struct device *hwdev, struct scatterlist *sg,
49 int nents, int direction);
50 void (*unmap_sg)(struct device *hwdev,
51 struct scatterlist *sg, int nents,
52 int direction);
53 int (*dma_supported)(struct device *hwdev, u64 mask);
54 int is_phys;
55};
56
57extern struct dma_mapping_ops *dma_ops;
58
59static inline struct dma_mapping_ops *get_dma_ops(struct device *dev)
60{
61#ifdef CONFIG_X86_32
62 return dma_ops;
63#else
64 if (unlikely(!dev) || !dev->archdata.dma_ops)
65 return dma_ops;
66 else
67 return dev->archdata.dma_ops;
68#endif /* _ASM_X86_DMA_MAPPING_H */
69}
70
71/* Make sure we keep the same behaviour */
72static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
73{
74#ifdef CONFIG_X86_32
75 return 0;
76#else
77 struct dma_mapping_ops *ops = get_dma_ops(dev);
78 if (ops->mapping_error)
79 return ops->mapping_error(dev, dma_addr);
80
81 return (dma_addr == bad_dma_address);
82#endif
83}
84
85#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
86#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
87#define dma_is_consistent(d, h) (1)
88
89extern int dma_supported(struct device *hwdev, u64 mask);
90extern int dma_set_mask(struct device *dev, u64 mask);
91
92extern void *dma_generic_alloc_coherent(struct device *dev, size_t size,
93 dma_addr_t *dma_addr, gfp_t flag);
94
95static inline dma_addr_t
96dma_map_single(struct device *hwdev, void *ptr, size_t size,
97 int direction)
98{
99 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
100
101 BUG_ON(!valid_dma_direction(direction));
102 return ops->map_single(hwdev, virt_to_phys(ptr), size, direction);
103}
104
105static inline void
106dma_unmap_single(struct device *dev, dma_addr_t addr, size_t size,
107 int direction)
108{
109 struct dma_mapping_ops *ops = get_dma_ops(dev);
110
111 BUG_ON(!valid_dma_direction(direction));
112 if (ops->unmap_single)
113 ops->unmap_single(dev, addr, size, direction);
114}
115
116static inline int
117dma_map_sg(struct device *hwdev, struct scatterlist *sg,
118 int nents, int direction)
119{
120 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121
122 BUG_ON(!valid_dma_direction(direction));
123 return ops->map_sg(hwdev, sg, nents, direction);
124}
125
126static inline void
127dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
128 int direction)
129{
130 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
131
132 BUG_ON(!valid_dma_direction(direction));
133 if (ops->unmap_sg)
134 ops->unmap_sg(hwdev, sg, nents, direction);
135}
136
137static inline void
138dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
139 size_t size, int direction)
140{
141 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
142
143 BUG_ON(!valid_dma_direction(direction));
144 if (ops->sync_single_for_cpu)
145 ops->sync_single_for_cpu(hwdev, dma_handle, size, direction);
146 flush_write_buffers();
147}
148
149static inline void
150dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle,
151 size_t size, int direction)
152{
153 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
154
155 BUG_ON(!valid_dma_direction(direction));
156 if (ops->sync_single_for_device)
157 ops->sync_single_for_device(hwdev, dma_handle, size, direction);
158 flush_write_buffers();
159}
160
161static inline void
162dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
163 unsigned long offset, size_t size, int direction)
164{
165 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
166
167 BUG_ON(!valid_dma_direction(direction));
168 if (ops->sync_single_range_for_cpu)
169 ops->sync_single_range_for_cpu(hwdev, dma_handle, offset,
170 size, direction);
171 flush_write_buffers();
172}
173
174static inline void
175dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle,
176 unsigned long offset, size_t size,
177 int direction)
178{
179 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
180
181 BUG_ON(!valid_dma_direction(direction));
182 if (ops->sync_single_range_for_device)
183 ops->sync_single_range_for_device(hwdev, dma_handle,
184 offset, size, direction);
185 flush_write_buffers();
186}
187
188static inline void
189dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg,
190 int nelems, int direction)
191{
192 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
193
194 BUG_ON(!valid_dma_direction(direction));
195 if (ops->sync_sg_for_cpu)
196 ops->sync_sg_for_cpu(hwdev, sg, nelems, direction);
197 flush_write_buffers();
198}
199
200static inline void
201dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg,
202 int nelems, int direction)
203{
204 struct dma_mapping_ops *ops = get_dma_ops(hwdev);
205
206 BUG_ON(!valid_dma_direction(direction));
207 if (ops->sync_sg_for_device)
208 ops->sync_sg_for_device(hwdev, sg, nelems, direction);
209
210 flush_write_buffers();
211}
212
213static inline dma_addr_t dma_map_page(struct device *dev, struct page *page,
214 size_t offset, size_t size,
215 int direction)
216{
217 struct dma_mapping_ops *ops = get_dma_ops(dev);
218
219 BUG_ON(!valid_dma_direction(direction));
220 return ops->map_single(dev, page_to_phys(page) + offset,
221 size, direction);
222}
223
224static inline void dma_unmap_page(struct device *dev, dma_addr_t addr,
225 size_t size, int direction)
226{
227 dma_unmap_single(dev, addr, size, direction);
228}
229
230static inline void
231dma_cache_sync(struct device *dev, void *vaddr, size_t size,
232 enum dma_data_direction dir)
233{
234 flush_write_buffers();
235}
236
237static inline int dma_get_cache_alignment(void)
238{
239 /* no easy way to get cache size on all x86, so return the
240 * maximum possible, to be safe */
241 return boot_cpu_data.x86_clflush_size;
242}
243
244static inline unsigned long dma_alloc_coherent_mask(struct device *dev,
245 gfp_t gfp)
246{
247 unsigned long dma_mask = 0;
248
249 dma_mask = dev->coherent_dma_mask;
250 if (!dma_mask)
251 dma_mask = (gfp & GFP_DMA) ? DMA_24BIT_MASK : DMA_32BIT_MASK;
252
253 return dma_mask;
254}
255
256static inline gfp_t dma_alloc_coherent_gfp_flags(struct device *dev, gfp_t gfp)
257{
258#ifdef CONFIG_X86_64
259 unsigned long dma_mask = dma_alloc_coherent_mask(dev, gfp);
260
261 if (dma_mask <= DMA_32BIT_MASK && !(gfp & GFP_DMA))
262 gfp |= GFP_DMA32;
263#endif
264 return gfp;
265}
266
267static inline void *
268dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
269 gfp_t gfp)
270{
271 struct dma_mapping_ops *ops = get_dma_ops(dev);
272 void *memory;
273
274 gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32);
275
276 if (dma_alloc_from_coherent(dev, size, dma_handle, &memory))
277 return memory;
278
279 if (!dev) {
280 dev = &x86_dma_fallback_dev;
281 gfp |= GFP_DMA;
282 }
283
284 if (!is_device_dma_capable(dev))
285 return NULL;
286
287 if (!ops->alloc_coherent)
288 return NULL;
289
290 return ops->alloc_coherent(dev, size, dma_handle,
291 dma_alloc_coherent_gfp_flags(dev, gfp));
292}
293
294static inline void dma_free_coherent(struct device *dev, size_t size,
295 void *vaddr, dma_addr_t bus)
296{
297 struct dma_mapping_ops *ops = get_dma_ops(dev);
298
299 WARN_ON(irqs_disabled()); /* for portability */
300
301 if (dma_release_from_coherent(dev, get_order(size), vaddr))
302 return;
303
304 if (ops->free_coherent)
305 ops->free_coherent(dev, size, vaddr, bus);
306}
307
308#endif
diff --git a/arch/x86/include/asm/dma.h b/arch/x86/include/asm/dma.h
new file mode 100644
index 000000000000..ca1098a7e580
--- /dev/null
+++ b/arch/x86/include/asm/dma.h
@@ -0,0 +1,318 @@
1/*
2 * linux/include/asm/dma.h: Defines for using and allocating dma channels.
3 * Written by Hennus Bergman, 1992.
4 * High DMA channel support & info by Hannu Savolainen
5 * and John Boyd, Nov. 1992.
6 */
7
8#ifndef _ASM_X86_DMA_H
9#define _ASM_X86_DMA_H
10
11#include <linux/spinlock.h> /* And spinlocks */
12#include <asm/io.h> /* need byte IO */
13#include <linux/delay.h>
14
15#ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
16#define dma_outb outb_p
17#else
18#define dma_outb outb
19#endif
20
21#define dma_inb inb
22
23/*
24 * NOTES about DMA transfers:
25 *
26 * controller 1: channels 0-3, byte operations, ports 00-1F
27 * controller 2: channels 4-7, word operations, ports C0-DF
28 *
29 * - ALL registers are 8 bits only, regardless of transfer size
30 * - channel 4 is not used - cascades 1 into 2.
31 * - channels 0-3 are byte - addresses/counts are for physical bytes
32 * - channels 5-7 are word - addresses/counts are for physical words
33 * - transfers must not cross physical 64K (0-3) or 128K (5-7) boundaries
34 * - transfer count loaded to registers is 1 less than actual count
35 * - controller 2 offsets are all even (2x offsets for controller 1)
36 * - page registers for 5-7 don't use data bit 0, represent 128K pages
37 * - page registers for 0-3 use bit 0, represent 64K pages
38 *
39 * DMA transfers are limited to the lower 16MB of _physical_ memory.
40 * Note that addresses loaded into registers must be _physical_ addresses,
41 * not logical addresses (which may differ if paging is active).
42 *
43 * Address mapping for channels 0-3:
44 *
45 * A23 ... A16 A15 ... A8 A7 ... A0 (Physical addresses)
46 * | ... | | ... | | ... |
47 * | ... | | ... | | ... |
48 * | ... | | ... | | ... |
49 * P7 ... P0 A7 ... A0 A7 ... A0
50 * | Page | Addr MSB | Addr LSB | (DMA registers)
51 *
52 * Address mapping for channels 5-7:
53 *
54 * A23 ... A17 A16 A15 ... A9 A8 A7 ... A1 A0 (Physical addresses)
55 * | ... | \ \ ... \ \ \ ... \ \
56 * | ... | \ \ ... \ \ \ ... \ (not used)
57 * | ... | \ \ ... \ \ \ ... \
58 * P7 ... P1 (0) A7 A6 ... A0 A7 A6 ... A0
59 * | Page | Addr MSB | Addr LSB | (DMA registers)
60 *
61 * Again, channels 5-7 transfer _physical_ words (16 bits), so addresses
62 * and counts _must_ be word-aligned (the lowest address bit is _ignored_ at
63 * the hardware level, so odd-byte transfers aren't possible).
64 *
65 * Transfer count (_not # bytes_) is limited to 64K, represented as actual
66 * count - 1 : 64K => 0xFFFF, 1 => 0x0000. Thus, count is always 1 or more,
67 * and up to 128K bytes may be transferred on channels 5-7 in one operation.
68 *
69 */
70
71#define MAX_DMA_CHANNELS 8
72
73#ifdef CONFIG_X86_32
74
75/* The maximum address that we can perform a DMA transfer to on this platform */
76#define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x1000000)
77
78#else
79
80/* 16MB ISA DMA zone */
81#define MAX_DMA_PFN ((16 * 1024 * 1024) >> PAGE_SHIFT)
82
83/* 4GB broken PCI/AGP hardware bus master zone */
84#define MAX_DMA32_PFN ((4UL * 1024 * 1024 * 1024) >> PAGE_SHIFT)
85
86/* Compat define for old dma zone */
87#define MAX_DMA_ADDRESS ((unsigned long)__va(MAX_DMA_PFN << PAGE_SHIFT))
88
89#endif
90
91/* 8237 DMA controllers */
92#define IO_DMA1_BASE 0x00 /* 8 bit slave DMA, channels 0..3 */
93#define IO_DMA2_BASE 0xC0 /* 16 bit master DMA, ch 4(=slave input)..7 */
94
95/* DMA controller registers */
96#define DMA1_CMD_REG 0x08 /* command register (w) */
97#define DMA1_STAT_REG 0x08 /* status register (r) */
98#define DMA1_REQ_REG 0x09 /* request register (w) */
99#define DMA1_MASK_REG 0x0A /* single-channel mask (w) */
100#define DMA1_MODE_REG 0x0B /* mode register (w) */
101#define DMA1_CLEAR_FF_REG 0x0C /* clear pointer flip-flop (w) */
102#define DMA1_TEMP_REG 0x0D /* Temporary Register (r) */
103#define DMA1_RESET_REG 0x0D /* Master Clear (w) */
104#define DMA1_CLR_MASK_REG 0x0E /* Clear Mask */
105#define DMA1_MASK_ALL_REG 0x0F /* all-channels mask (w) */
106
107#define DMA2_CMD_REG 0xD0 /* command register (w) */
108#define DMA2_STAT_REG 0xD0 /* status register (r) */
109#define DMA2_REQ_REG 0xD2 /* request register (w) */
110#define DMA2_MASK_REG 0xD4 /* single-channel mask (w) */
111#define DMA2_MODE_REG 0xD6 /* mode register (w) */
112#define DMA2_CLEAR_FF_REG 0xD8 /* clear pointer flip-flop (w) */
113#define DMA2_TEMP_REG 0xDA /* Temporary Register (r) */
114#define DMA2_RESET_REG 0xDA /* Master Clear (w) */
115#define DMA2_CLR_MASK_REG 0xDC /* Clear Mask */
116#define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */
117
118#define DMA_ADDR_0 0x00 /* DMA address registers */
119#define DMA_ADDR_1 0x02
120#define DMA_ADDR_2 0x04
121#define DMA_ADDR_3 0x06
122#define DMA_ADDR_4 0xC0
123#define DMA_ADDR_5 0xC4
124#define DMA_ADDR_6 0xC8
125#define DMA_ADDR_7 0xCC
126
127#define DMA_CNT_0 0x01 /* DMA count registers */
128#define DMA_CNT_1 0x03
129#define DMA_CNT_2 0x05
130#define DMA_CNT_3 0x07
131#define DMA_CNT_4 0xC2
132#define DMA_CNT_5 0xC6
133#define DMA_CNT_6 0xCA
134#define DMA_CNT_7 0xCE
135
136#define DMA_PAGE_0 0x87 /* DMA page registers */
137#define DMA_PAGE_1 0x83
138#define DMA_PAGE_2 0x81
139#define DMA_PAGE_3 0x82
140#define DMA_PAGE_5 0x8B
141#define DMA_PAGE_6 0x89
142#define DMA_PAGE_7 0x8A
143
144/* I/O to memory, no autoinit, increment, single mode */
145#define DMA_MODE_READ 0x44
146/* memory to I/O, no autoinit, increment, single mode */
147#define DMA_MODE_WRITE 0x48
148/* pass thru DREQ->HRQ, DACK<-HLDA only */
149#define DMA_MODE_CASCADE 0xC0
150
151#define DMA_AUTOINIT 0x10
152
153
154extern spinlock_t dma_spin_lock;
155
156static inline unsigned long claim_dma_lock(void)
157{
158 unsigned long flags;
159 spin_lock_irqsave(&dma_spin_lock, flags);
160 return flags;
161}
162
163static inline void release_dma_lock(unsigned long flags)
164{
165 spin_unlock_irqrestore(&dma_spin_lock, flags);
166}
167
168/* enable/disable a specific DMA channel */
169static inline void enable_dma(unsigned int dmanr)
170{
171 if (dmanr <= 3)
172 dma_outb(dmanr, DMA1_MASK_REG);
173 else
174 dma_outb(dmanr & 3, DMA2_MASK_REG);
175}
176
177static inline void disable_dma(unsigned int dmanr)
178{
179 if (dmanr <= 3)
180 dma_outb(dmanr | 4, DMA1_MASK_REG);
181 else
182 dma_outb((dmanr & 3) | 4, DMA2_MASK_REG);
183}
184
185/* Clear the 'DMA Pointer Flip Flop'.
186 * Write 0 for LSB/MSB, 1 for MSB/LSB access.
187 * Use this once to initialize the FF to a known state.
188 * After that, keep track of it. :-)
189 * --- In order to do that, the DMA routines below should ---
190 * --- only be used while holding the DMA lock ! ---
191 */
192static inline void clear_dma_ff(unsigned int dmanr)
193{
194 if (dmanr <= 3)
195 dma_outb(0, DMA1_CLEAR_FF_REG);
196 else
197 dma_outb(0, DMA2_CLEAR_FF_REG);
198}
199
200/* set mode (above) for a specific DMA channel */
201static inline void set_dma_mode(unsigned int dmanr, char mode)
202{
203 if (dmanr <= 3)
204 dma_outb(mode | dmanr, DMA1_MODE_REG);
205 else
206 dma_outb(mode | (dmanr & 3), DMA2_MODE_REG);
207}
208
209/* Set only the page register bits of the transfer address.
210 * This is used for successive transfers when we know the contents of
211 * the lower 16 bits of the DMA current address register, but a 64k boundary
212 * may have been crossed.
213 */
214static inline void set_dma_page(unsigned int dmanr, char pagenr)
215{
216 switch (dmanr) {
217 case 0:
218 dma_outb(pagenr, DMA_PAGE_0);
219 break;
220 case 1:
221 dma_outb(pagenr, DMA_PAGE_1);
222 break;
223 case 2:
224 dma_outb(pagenr, DMA_PAGE_2);
225 break;
226 case 3:
227 dma_outb(pagenr, DMA_PAGE_3);
228 break;
229 case 5:
230 dma_outb(pagenr & 0xfe, DMA_PAGE_5);
231 break;
232 case 6:
233 dma_outb(pagenr & 0xfe, DMA_PAGE_6);
234 break;
235 case 7:
236 dma_outb(pagenr & 0xfe, DMA_PAGE_7);
237 break;
238 }
239}
240
241
242/* Set transfer address & page bits for specific DMA channel.
243 * Assumes dma flipflop is clear.
244 */
245static inline void set_dma_addr(unsigned int dmanr, unsigned int a)
246{
247 set_dma_page(dmanr, a>>16);
248 if (dmanr <= 3) {
249 dma_outb(a & 0xff, ((dmanr & 3) << 1) + IO_DMA1_BASE);
250 dma_outb((a >> 8) & 0xff, ((dmanr & 3) << 1) + IO_DMA1_BASE);
251 } else {
252 dma_outb((a >> 1) & 0xff, ((dmanr & 3) << 2) + IO_DMA2_BASE);
253 dma_outb((a >> 9) & 0xff, ((dmanr & 3) << 2) + IO_DMA2_BASE);
254 }
255}
256
257
258/* Set transfer size (max 64k for DMA0..3, 128k for DMA5..7) for
259 * a specific DMA channel.
260 * You must ensure the parameters are valid.
261 * NOTE: from a manual: "the number of transfers is one more
262 * than the initial word count"! This is taken into account.
263 * Assumes dma flip-flop is clear.
264 * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7.
265 */
266static inline void set_dma_count(unsigned int dmanr, unsigned int count)
267{
268 count--;
269 if (dmanr <= 3) {
270 dma_outb(count & 0xff, ((dmanr & 3) << 1) + 1 + IO_DMA1_BASE);
271 dma_outb((count >> 8) & 0xff,
272 ((dmanr & 3) << 1) + 1 + IO_DMA1_BASE);
273 } else {
274 dma_outb((count >> 1) & 0xff,
275 ((dmanr & 3) << 2) + 2 + IO_DMA2_BASE);
276 dma_outb((count >> 9) & 0xff,
277 ((dmanr & 3) << 2) + 2 + IO_DMA2_BASE);
278 }
279}
280
281
282/* Get DMA residue count. After a DMA transfer, this
283 * should return zero. Reading this while a DMA transfer is
284 * still in progress will return unpredictable results.
285 * If called before the channel has been used, it may return 1.
286 * Otherwise, it returns the number of _bytes_ left to transfer.
287 *
288 * Assumes DMA flip-flop is clear.
289 */
290static inline int get_dma_residue(unsigned int dmanr)
291{
292 unsigned int io_port;
293 /* using short to get 16-bit wrap around */
294 unsigned short count;
295
296 io_port = (dmanr <= 3) ? ((dmanr & 3) << 1) + 1 + IO_DMA1_BASE
297 : ((dmanr & 3) << 2) + 2 + IO_DMA2_BASE;
298
299 count = 1 + dma_inb(io_port);
300 count += dma_inb(io_port) << 8;
301
302 return (dmanr <= 3) ? count : (count << 1);
303}
304
305
306/* These are in kernel/dma.c: */
307extern int request_dma(unsigned int dmanr, const char *device_id);
308extern void free_dma(unsigned int dmanr);
309
310/* From PCI */
311
312#ifdef CONFIG_PCI
313extern int isa_dma_bridge_buggy;
314#else
315#define isa_dma_bridge_buggy (0)
316#endif
317
318#endif /* _ASM_X86_DMA_H */
diff --git a/arch/x86/include/asm/dmi.h b/arch/x86/include/asm/dmi.h
new file mode 100644
index 000000000000..bc68212c6bc0
--- /dev/null
+++ b/arch/x86/include/asm/dmi.h
@@ -0,0 +1,26 @@
1#ifndef _ASM_X86_DMI_H
2#define _ASM_X86_DMI_H
3
4#include <asm/io.h>
5
6#define DMI_MAX_DATA 2048
7
8extern int dmi_alloc_index;
9extern char dmi_alloc_data[DMI_MAX_DATA];
10
11/* This is so early that there is no good way to allocate dynamic memory.
12 Allocate data in an BSS array. */
13static inline void *dmi_alloc(unsigned len)
14{
15 int idx = dmi_alloc_index;
16 if ((dmi_alloc_index + len) > DMI_MAX_DATA)
17 return NULL;
18 dmi_alloc_index += len;
19 return dmi_alloc_data + idx;
20}
21
22/* Use early IO mappings for DMI because it's initialized early */
23#define dmi_ioremap early_ioremap
24#define dmi_iounmap early_iounmap
25
26#endif /* _ASM_X86_DMI_H */
diff --git a/arch/x86/include/asm/ds.h b/arch/x86/include/asm/ds.h
new file mode 100644
index 000000000000..72c5a190bf48
--- /dev/null
+++ b/arch/x86/include/asm/ds.h
@@ -0,0 +1,238 @@
1/*
2 * Debug Store (DS) support
3 *
4 * This provides a low-level interface to the hardware's Debug Store
5 * feature that is used for branch trace store (BTS) and
6 * precise-event based sampling (PEBS).
7 *
8 * It manages:
9 * - per-thread and per-cpu allocation of BTS and PEBS
10 * - buffer memory allocation (optional)
11 * - buffer overflow handling
12 * - buffer access
13 *
14 * It assumes:
15 * - get_task_struct on all parameter tasks
16 * - current is allowed to trace parameter tasks
17 *
18 *
19 * Copyright (C) 2007-2008 Intel Corporation.
20 * Markus Metzger <markus.t.metzger@intel.com>, 2007-2008
21 */
22
23#ifndef _ASM_X86_DS_H
24#define _ASM_X86_DS_H
25
26#ifdef CONFIG_X86_DS
27
28#include <linux/types.h>
29#include <linux/init.h>
30
31
32struct task_struct;
33
34/*
35 * Request BTS or PEBS
36 *
37 * Due to alignement constraints, the actual buffer may be slightly
38 * smaller than the requested or provided buffer.
39 *
40 * Returns 0 on success; -Eerrno otherwise
41 *
42 * task: the task to request recording for;
43 * NULL for per-cpu recording on the current cpu
44 * base: the base pointer for the (non-pageable) buffer;
45 * NULL if buffer allocation requested
46 * size: the size of the requested or provided buffer
47 * ovfl: pointer to a function to be called on buffer overflow;
48 * NULL if cyclic buffer requested
49 */
50typedef void (*ds_ovfl_callback_t)(struct task_struct *);
51extern int ds_request_bts(struct task_struct *task, void *base, size_t size,
52 ds_ovfl_callback_t ovfl);
53extern int ds_request_pebs(struct task_struct *task, void *base, size_t size,
54 ds_ovfl_callback_t ovfl);
55
56/*
57 * Release BTS or PEBS resources
58 *
59 * Frees buffers allocated on ds_request.
60 *
61 * Returns 0 on success; -Eerrno otherwise
62 *
63 * task: the task to release resources for;
64 * NULL to release resources for the current cpu
65 */
66extern int ds_release_bts(struct task_struct *task);
67extern int ds_release_pebs(struct task_struct *task);
68
69/*
70 * Return the (array) index of the write pointer.
71 * (assuming an array of BTS/PEBS records)
72 *
73 * Returns -Eerrno on error
74 *
75 * task: the task to access;
76 * NULL to access the current cpu
77 * pos (out): if not NULL, will hold the result
78 */
79extern int ds_get_bts_index(struct task_struct *task, size_t *pos);
80extern int ds_get_pebs_index(struct task_struct *task, size_t *pos);
81
82/*
83 * Return the (array) index one record beyond the end of the array.
84 * (assuming an array of BTS/PEBS records)
85 *
86 * Returns -Eerrno on error
87 *
88 * task: the task to access;
89 * NULL to access the current cpu
90 * pos (out): if not NULL, will hold the result
91 */
92extern int ds_get_bts_end(struct task_struct *task, size_t *pos);
93extern int ds_get_pebs_end(struct task_struct *task, size_t *pos);
94
95/*
96 * Provide a pointer to the BTS/PEBS record at parameter index.
97 * (assuming an array of BTS/PEBS records)
98 *
99 * The pointer points directly into the buffer. The user is
100 * responsible for copying the record.
101 *
102 * Returns the size of a single record on success; -Eerrno on error
103 *
104 * task: the task to access;
105 * NULL to access the current cpu
106 * index: the index of the requested record
107 * record (out): pointer to the requested record
108 */
109extern int ds_access_bts(struct task_struct *task,
110 size_t index, const void **record);
111extern int ds_access_pebs(struct task_struct *task,
112 size_t index, const void **record);
113
114/*
115 * Write one or more BTS/PEBS records at the write pointer index and
116 * advance the write pointer.
117 *
118 * If size is not a multiple of the record size, trailing bytes are
119 * zeroed out.
120 *
121 * May result in one or more overflow notifications.
122 *
123 * If called during overflow handling, that is, with index >=
124 * interrupt threshold, the write will wrap around.
125 *
126 * An overflow notification is given if and when the interrupt
127 * threshold is reached during or after the write.
128 *
129 * Returns the number of bytes written or -Eerrno.
130 *
131 * task: the task to access;
132 * NULL to access the current cpu
133 * buffer: the buffer to write
134 * size: the size of the buffer
135 */
136extern int ds_write_bts(struct task_struct *task,
137 const void *buffer, size_t size);
138extern int ds_write_pebs(struct task_struct *task,
139 const void *buffer, size_t size);
140
141/*
142 * Same as ds_write_bts/pebs, but omit ownership checks.
143 *
144 * This is needed to have some other task than the owner of the
145 * BTS/PEBS buffer or the parameter task itself write into the
146 * respective buffer.
147 */
148extern int ds_unchecked_write_bts(struct task_struct *task,
149 const void *buffer, size_t size);
150extern int ds_unchecked_write_pebs(struct task_struct *task,
151 const void *buffer, size_t size);
152
153/*
154 * Reset the write pointer of the BTS/PEBS buffer.
155 *
156 * Returns 0 on success; -Eerrno on error
157 *
158 * task: the task to access;
159 * NULL to access the current cpu
160 */
161extern int ds_reset_bts(struct task_struct *task);
162extern int ds_reset_pebs(struct task_struct *task);
163
164/*
165 * Clear the BTS/PEBS buffer and reset the write pointer.
166 * The entire buffer will be zeroed out.
167 *
168 * Returns 0 on success; -Eerrno on error
169 *
170 * task: the task to access;
171 * NULL to access the current cpu
172 */
173extern int ds_clear_bts(struct task_struct *task);
174extern int ds_clear_pebs(struct task_struct *task);
175
176/*
177 * Provide the PEBS counter reset value.
178 *
179 * Returns 0 on success; -Eerrno on error
180 *
181 * task: the task to access;
182 * NULL to access the current cpu
183 * value (out): the counter reset value
184 */
185extern int ds_get_pebs_reset(struct task_struct *task, u64 *value);
186
187/*
188 * Set the PEBS counter reset value.
189 *
190 * Returns 0 on success; -Eerrno on error
191 *
192 * task: the task to access;
193 * NULL to access the current cpu
194 * value: the new counter reset value
195 */
196extern int ds_set_pebs_reset(struct task_struct *task, u64 value);
197
198/*
199 * Initialization
200 */
201struct cpuinfo_x86;
202extern void __cpuinit ds_init_intel(struct cpuinfo_x86 *);
203
204
205
206/*
207 * The DS context - part of struct thread_struct.
208 */
209struct ds_context {
210 /* pointer to the DS configuration; goes into MSR_IA32_DS_AREA */
211 unsigned char *ds;
212 /* the owner of the BTS and PEBS configuration, respectively */
213 struct task_struct *owner[2];
214 /* buffer overflow notification function for BTS and PEBS */
215 ds_ovfl_callback_t callback[2];
216 /* the original buffer address */
217 void *buffer[2];
218 /* the number of allocated pages for on-request allocated buffers */
219 unsigned int pages[2];
220 /* use count */
221 unsigned long count;
222 /* a pointer to the context location inside the thread_struct
223 * or the per_cpu context array */
224 struct ds_context **this;
225 /* a pointer to the task owning this context, or NULL, if the
226 * context is owned by a cpu */
227 struct task_struct *task;
228};
229
230/* called by exit_thread() to free leftover contexts */
231extern void ds_free(struct ds_context *context);
232
233#else /* CONFIG_X86_DS */
234
235#define ds_init_intel(config) do {} while (0)
236
237#endif /* CONFIG_X86_DS */
238#endif /* _ASM_X86_DS_H */
diff --git a/arch/x86/include/asm/dwarf2.h b/arch/x86/include/asm/dwarf2.h
new file mode 100644
index 000000000000..804b6e6be929
--- /dev/null
+++ b/arch/x86/include/asm/dwarf2.h
@@ -0,0 +1,61 @@
1#ifndef _ASM_X86_DWARF2_H
2#define _ASM_X86_DWARF2_H
3
4#ifndef __ASSEMBLY__
5#warning "asm/dwarf2.h should be only included in pure assembly files"
6#endif
7
8/*
9 Macros for dwarf2 CFI unwind table entries.
10 See "as.info" for details on these pseudo ops. Unfortunately
11 they are only supported in very new binutils, so define them
12 away for older version.
13 */
14
15#ifdef CONFIG_AS_CFI
16
17#define CFI_STARTPROC .cfi_startproc
18#define CFI_ENDPROC .cfi_endproc
19#define CFI_DEF_CFA .cfi_def_cfa
20#define CFI_DEF_CFA_REGISTER .cfi_def_cfa_register
21#define CFI_DEF_CFA_OFFSET .cfi_def_cfa_offset
22#define CFI_ADJUST_CFA_OFFSET .cfi_adjust_cfa_offset
23#define CFI_OFFSET .cfi_offset
24#define CFI_REL_OFFSET .cfi_rel_offset
25#define CFI_REGISTER .cfi_register
26#define CFI_RESTORE .cfi_restore
27#define CFI_REMEMBER_STATE .cfi_remember_state
28#define CFI_RESTORE_STATE .cfi_restore_state
29#define CFI_UNDEFINED .cfi_undefined
30
31#ifdef CONFIG_AS_CFI_SIGNAL_FRAME
32#define CFI_SIGNAL_FRAME .cfi_signal_frame
33#else
34#define CFI_SIGNAL_FRAME
35#endif
36
37#else
38
39/* Due to the structure of pre-exisiting code, don't use assembler line
40 comment character # to ignore the arguments. Instead, use a dummy macro. */
41.macro cfi_ignore a=0, b=0, c=0, d=0
42.endm
43
44#define CFI_STARTPROC cfi_ignore
45#define CFI_ENDPROC cfi_ignore
46#define CFI_DEF_CFA cfi_ignore
47#define CFI_DEF_CFA_REGISTER cfi_ignore
48#define CFI_DEF_CFA_OFFSET cfi_ignore
49#define CFI_ADJUST_CFA_OFFSET cfi_ignore
50#define CFI_OFFSET cfi_ignore
51#define CFI_REL_OFFSET cfi_ignore
52#define CFI_REGISTER cfi_ignore
53#define CFI_RESTORE cfi_ignore
54#define CFI_REMEMBER_STATE cfi_ignore
55#define CFI_RESTORE_STATE cfi_ignore
56#define CFI_UNDEFINED cfi_ignore
57#define CFI_SIGNAL_FRAME cfi_ignore
58
59#endif
60
61#endif /* _ASM_X86_DWARF2_H */
diff --git a/arch/x86/include/asm/e820.h b/arch/x86/include/asm/e820.h
new file mode 100644
index 000000000000..3d8ceddbd407
--- /dev/null
+++ b/arch/x86/include/asm/e820.h
@@ -0,0 +1,146 @@
1#ifndef _ASM_X86_E820_H
2#define _ASM_X86_E820_H
3#define E820MAP 0x2d0 /* our map */
4#define E820MAX 128 /* number of entries in E820MAP */
5
6/*
7 * Legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the
8 * constrained space in the zeropage. If we have more nodes than
9 * that, and if we've booted off EFI firmware, then the EFI tables
10 * passed us from the EFI firmware can list more nodes. Size our
11 * internal memory map tables to have room for these additional
12 * nodes, based on up to three entries per node for which the
13 * kernel was built: MAX_NUMNODES == (1 << CONFIG_NODES_SHIFT),
14 * plus E820MAX, allowing space for the possible duplicate E820
15 * entries that might need room in the same arrays, prior to the
16 * call to sanitize_e820_map() to remove duplicates. The allowance
17 * of three memory map entries per node is "enough" entries for
18 * the initial hardware platform motivating this mechanism to make
19 * use of additional EFI map entries. Future platforms may want
20 * to allow more than three entries per node or otherwise refine
21 * this size.
22 */
23
24/*
25 * Odd: 'make headers_check' complains about numa.h if I try
26 * to collapse the next two #ifdef lines to a single line:
27 * #if defined(__KERNEL__) && defined(CONFIG_EFI)
28 */
29#ifdef __KERNEL__
30#ifdef CONFIG_EFI
31#include <linux/numa.h>
32#define E820_X_MAX (E820MAX + 3 * MAX_NUMNODES)
33#else /* ! CONFIG_EFI */
34#define E820_X_MAX E820MAX
35#endif
36#else /* ! __KERNEL__ */
37#define E820_X_MAX E820MAX
38#endif
39
40#define E820NR 0x1e8 /* # entries in E820MAP */
41
42#define E820_RAM 1
43#define E820_RESERVED 2
44#define E820_ACPI 3
45#define E820_NVS 4
46#define E820_UNUSABLE 5
47
48/* reserved RAM used by kernel itself */
49#define E820_RESERVED_KERN 128
50
51#ifndef __ASSEMBLY__
52struct e820entry {
53 __u64 addr; /* start of memory segment */
54 __u64 size; /* size of memory segment */
55 __u32 type; /* type of memory segment */
56} __attribute__((packed));
57
58struct e820map {
59 __u32 nr_map;
60 struct e820entry map[E820_X_MAX];
61};
62
63#ifdef __KERNEL__
64/* see comment in arch/x86/kernel/e820.c */
65extern struct e820map e820;
66extern struct e820map e820_saved;
67
68extern unsigned long pci_mem_start;
69extern int e820_any_mapped(u64 start, u64 end, unsigned type);
70extern int e820_all_mapped(u64 start, u64 end, unsigned type);
71extern void e820_add_region(u64 start, u64 size, int type);
72extern void e820_print_map(char *who);
73extern int
74sanitize_e820_map(struct e820entry *biosmap, int max_nr_map, int *pnr_map);
75extern u64 e820_update_range(u64 start, u64 size, unsigned old_type,
76 unsigned new_type);
77extern u64 e820_remove_range(u64 start, u64 size, unsigned old_type,
78 int checktype);
79extern void update_e820(void);
80extern void e820_setup_gap(void);
81extern int e820_search_gap(unsigned long *gapstart, unsigned long *gapsize,
82 unsigned long start_addr, unsigned long long end_addr);
83struct setup_data;
84extern void parse_e820_ext(struct setup_data *data, unsigned long pa_data);
85
86#if defined(CONFIG_X86_64) || \
87 (defined(CONFIG_X86_32) && defined(CONFIG_HIBERNATION))
88extern void e820_mark_nosave_regions(unsigned long limit_pfn);
89#else
90static inline void e820_mark_nosave_regions(unsigned long limit_pfn)
91{
92}
93#endif
94
95#ifdef CONFIG_MEMTEST
96extern void early_memtest(unsigned long start, unsigned long end);
97#else
98static inline void early_memtest(unsigned long start, unsigned long end)
99{
100}
101#endif
102
103extern unsigned long end_user_pfn;
104
105extern u64 find_e820_area(u64 start, u64 end, u64 size, u64 align);
106extern u64 find_e820_area_size(u64 start, u64 *sizep, u64 align);
107extern void reserve_early(u64 start, u64 end, char *name);
108extern void reserve_early_overlap_ok(u64 start, u64 end, char *name);
109extern void free_early(u64 start, u64 end);
110extern void early_res_to_bootmem(u64 start, u64 end);
111extern u64 early_reserve_e820(u64 startt, u64 sizet, u64 align);
112
113extern unsigned long e820_end_of_ram_pfn(void);
114extern unsigned long e820_end_of_low_ram_pfn(void);
115extern int e820_find_active_region(const struct e820entry *ei,
116 unsigned long start_pfn,
117 unsigned long last_pfn,
118 unsigned long *ei_startpfn,
119 unsigned long *ei_endpfn);
120extern void e820_register_active_regions(int nid, unsigned long start_pfn,
121 unsigned long end_pfn);
122extern u64 e820_hole_size(u64 start, u64 end);
123extern void finish_e820_parsing(void);
124extern void e820_reserve_resources(void);
125extern void e820_reserve_resources_late(void);
126extern void setup_memory_map(void);
127extern char *default_machine_specific_memory_setup(void);
128extern char *machine_specific_memory_setup(void);
129extern char *memory_setup(void);
130#endif /* __KERNEL__ */
131#endif /* __ASSEMBLY__ */
132
133#define ISA_START_ADDRESS 0xa0000
134#define ISA_END_ADDRESS 0x100000
135#define is_ISA_range(s, e) ((s) >= ISA_START_ADDRESS && (e) < ISA_END_ADDRESS)
136
137#define BIOS_BEGIN 0x000a0000
138#define BIOS_END 0x00100000
139
140#ifdef __KERNEL__
141#include <linux/ioport.h>
142
143#define HIGH_MEMORY (1024*1024)
144#endif /* __KERNEL__ */
145
146#endif /* _ASM_X86_E820_H */
diff --git a/arch/x86/include/asm/edac.h b/arch/x86/include/asm/edac.h
new file mode 100644
index 000000000000..e9b57ecc70c5
--- /dev/null
+++ b/arch/x86/include/asm/edac.h
@@ -0,0 +1,18 @@
1#ifndef _ASM_X86_EDAC_H
2#define _ASM_X86_EDAC_H
3
4/* ECC atomic, DMA, SMP and interrupt safe scrub function */
5
6static inline void atomic_scrub(void *va, u32 size)
7{
8 u32 i, *virt_addr = va;
9
10 /*
11 * Very carefully read and write to memory atomically so we
12 * are interrupt, DMA and SMP safe.
13 */
14 for (i = 0; i < size / 4; i++, virt_addr++)
15 asm volatile("lock; addl $0, %0"::"m" (*virt_addr));
16}
17
18#endif /* _ASM_X86_EDAC_H */
diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
new file mode 100644
index 000000000000..a2e545c91c35
--- /dev/null
+++ b/arch/x86/include/asm/efi.h
@@ -0,0 +1,110 @@
1#ifndef _ASM_X86_EFI_H
2#define _ASM_X86_EFI_H
3
4#ifdef CONFIG_X86_32
5
6extern unsigned long asmlinkage efi_call_phys(void *, ...);
7
8#define efi_call_phys0(f) efi_call_phys(f)
9#define efi_call_phys1(f, a1) efi_call_phys(f, a1)
10#define efi_call_phys2(f, a1, a2) efi_call_phys(f, a1, a2)
11#define efi_call_phys3(f, a1, a2, a3) efi_call_phys(f, a1, a2, a3)
12#define efi_call_phys4(f, a1, a2, a3, a4) \
13 efi_call_phys(f, a1, a2, a3, a4)
14#define efi_call_phys5(f, a1, a2, a3, a4, a5) \
15 efi_call_phys(f, a1, a2, a3, a4, a5)
16#define efi_call_phys6(f, a1, a2, a3, a4, a5, a6) \
17 efi_call_phys(f, a1, a2, a3, a4, a5, a6)
18/*
19 * Wrap all the virtual calls in a way that forces the parameters on the stack.
20 */
21
22#define efi_call_virt(f, args...) \
23 ((efi_##f##_t __attribute__((regparm(0)))*)efi.systab->runtime->f)(args)
24
25#define efi_call_virt0(f) efi_call_virt(f)
26#define efi_call_virt1(f, a1) efi_call_virt(f, a1)
27#define efi_call_virt2(f, a1, a2) efi_call_virt(f, a1, a2)
28#define efi_call_virt3(f, a1, a2, a3) efi_call_virt(f, a1, a2, a3)
29#define efi_call_virt4(f, a1, a2, a3, a4) \
30 efi_call_virt(f, a1, a2, a3, a4)
31#define efi_call_virt5(f, a1, a2, a3, a4, a5) \
32 efi_call_virt(f, a1, a2, a3, a4, a5)
33#define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \
34 efi_call_virt(f, a1, a2, a3, a4, a5, a6)
35
36#define efi_ioremap(addr, size) ioremap_cache(addr, size)
37
38#else /* !CONFIG_X86_32 */
39
40#define MAX_EFI_IO_PAGES 100
41
42extern u64 efi_call0(void *fp);
43extern u64 efi_call1(void *fp, u64 arg1);
44extern u64 efi_call2(void *fp, u64 arg1, u64 arg2);
45extern u64 efi_call3(void *fp, u64 arg1, u64 arg2, u64 arg3);
46extern u64 efi_call4(void *fp, u64 arg1, u64 arg2, u64 arg3, u64 arg4);
47extern u64 efi_call5(void *fp, u64 arg1, u64 arg2, u64 arg3,
48 u64 arg4, u64 arg5);
49extern u64 efi_call6(void *fp, u64 arg1, u64 arg2, u64 arg3,
50 u64 arg4, u64 arg5, u64 arg6);
51
52#define efi_call_phys0(f) \
53 efi_call0((void *)(f))
54#define efi_call_phys1(f, a1) \
55 efi_call1((void *)(f), (u64)(a1))
56#define efi_call_phys2(f, a1, a2) \
57 efi_call2((void *)(f), (u64)(a1), (u64)(a2))
58#define efi_call_phys3(f, a1, a2, a3) \
59 efi_call3((void *)(f), (u64)(a1), (u64)(a2), (u64)(a3))
60#define efi_call_phys4(f, a1, a2, a3, a4) \
61 efi_call4((void *)(f), (u64)(a1), (u64)(a2), (u64)(a3), \
62 (u64)(a4))
63#define efi_call_phys5(f, a1, a2, a3, a4, a5) \
64 efi_call5((void *)(f), (u64)(a1), (u64)(a2), (u64)(a3), \
65 (u64)(a4), (u64)(a5))
66#define efi_call_phys6(f, a1, a2, a3, a4, a5, a6) \
67 efi_call6((void *)(f), (u64)(a1), (u64)(a2), (u64)(a3), \
68 (u64)(a4), (u64)(a5), (u64)(a6))
69
70#define efi_call_virt0(f) \
71 efi_call0((void *)(efi.systab->runtime->f))
72#define efi_call_virt1(f, a1) \
73 efi_call1((void *)(efi.systab->runtime->f), (u64)(a1))
74#define efi_call_virt2(f, a1, a2) \
75 efi_call2((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2))
76#define efi_call_virt3(f, a1, a2, a3) \
77 efi_call3((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
78 (u64)(a3))
79#define efi_call_virt4(f, a1, a2, a3, a4) \
80 efi_call4((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
81 (u64)(a3), (u64)(a4))
82#define efi_call_virt5(f, a1, a2, a3, a4, a5) \
83 efi_call5((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
84 (u64)(a3), (u64)(a4), (u64)(a5))
85#define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \
86 efi_call6((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
87 (u64)(a3), (u64)(a4), (u64)(a5), (u64)(a6))
88
89extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size);
90
91#endif /* CONFIG_X86_32 */
92
93extern void efi_reserve_early(void);
94extern void efi_call_phys_prelog(void);
95extern void efi_call_phys_epilog(void);
96
97#ifndef CONFIG_EFI
98/*
99 * IF EFI is not configured, have the EFI calls return -ENOSYS.
100 */
101#define efi_call0(_f) (-ENOSYS)
102#define efi_call1(_f, _a1) (-ENOSYS)
103#define efi_call2(_f, _a1, _a2) (-ENOSYS)
104#define efi_call3(_f, _a1, _a2, _a3) (-ENOSYS)
105#define efi_call4(_f, _a1, _a2, _a3, _a4) (-ENOSYS)
106#define efi_call5(_f, _a1, _a2, _a3, _a4, _a5) (-ENOSYS)
107#define efi_call6(_f, _a1, _a2, _a3, _a4, _a5, _a6) (-ENOSYS)
108#endif /* CONFIG_EFI */
109
110#endif /* _ASM_X86_EFI_H */
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
new file mode 100644
index 000000000000..40ca1bea7916
--- /dev/null
+++ b/arch/x86/include/asm/elf.h
@@ -0,0 +1,336 @@
1#ifndef _ASM_X86_ELF_H
2#define _ASM_X86_ELF_H
3
4/*
5 * ELF register definitions..
6 */
7
8#include <asm/ptrace.h>
9#include <asm/user.h>
10#include <asm/auxvec.h>
11
12typedef unsigned long elf_greg_t;
13
14#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
15typedef elf_greg_t elf_gregset_t[ELF_NGREG];
16
17typedef struct user_i387_struct elf_fpregset_t;
18
19#ifdef __i386__
20
21typedef struct user_fxsr_struct elf_fpxregset_t;
22
23#define R_386_NONE 0
24#define R_386_32 1
25#define R_386_PC32 2
26#define R_386_GOT32 3
27#define R_386_PLT32 4
28#define R_386_COPY 5
29#define R_386_GLOB_DAT 6
30#define R_386_JMP_SLOT 7
31#define R_386_RELATIVE 8
32#define R_386_GOTOFF 9
33#define R_386_GOTPC 10
34#define R_386_NUM 11
35
36/*
37 * These are used to set parameters in the core dumps.
38 */
39#define ELF_CLASS ELFCLASS32
40#define ELF_DATA ELFDATA2LSB
41#define ELF_ARCH EM_386
42
43#else
44
45/* x86-64 relocation types */
46#define R_X86_64_NONE 0 /* No reloc */
47#define R_X86_64_64 1 /* Direct 64 bit */
48#define R_X86_64_PC32 2 /* PC relative 32 bit signed */
49#define R_X86_64_GOT32 3 /* 32 bit GOT entry */
50#define R_X86_64_PLT32 4 /* 32 bit PLT address */
51#define R_X86_64_COPY 5 /* Copy symbol at runtime */
52#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */
53#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */
54#define R_X86_64_RELATIVE 8 /* Adjust by program base */
55#define R_X86_64_GOTPCREL 9 /* 32 bit signed pc relative
56 offset to GOT */
57#define R_X86_64_32 10 /* Direct 32 bit zero extended */
58#define R_X86_64_32S 11 /* Direct 32 bit sign extended */
59#define R_X86_64_16 12 /* Direct 16 bit zero extended */
60#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */
61#define R_X86_64_8 14 /* Direct 8 bit sign extended */
62#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */
63
64#define R_X86_64_NUM 16
65
66/*
67 * These are used to set parameters in the core dumps.
68 */
69#define ELF_CLASS ELFCLASS64
70#define ELF_DATA ELFDATA2LSB
71#define ELF_ARCH EM_X86_64
72
73#endif
74
75#include <asm/vdso.h>
76
77extern unsigned int vdso_enabled;
78
79/*
80 * This is used to ensure we don't load something for the wrong architecture.
81 */
82#define elf_check_arch_ia32(x) \
83 (((x)->e_machine == EM_386) || ((x)->e_machine == EM_486))
84
85#include <asm/processor.h>
86#include <asm/system.h>
87
88#ifdef CONFIG_X86_32
89#include <asm/desc.h>
90
91#define elf_check_arch(x) elf_check_arch_ia32(x)
92
93/* SVR4/i386 ABI (pages 3-31, 3-32) says that when the program starts %edx
94 contains a pointer to a function which might be registered using `atexit'.
95 This provides a mean for the dynamic linker to call DT_FINI functions for
96 shared libraries that have been loaded before the code runs.
97
98 A value of 0 tells we have no such handler.
99
100 We might as well make sure everything else is cleared too (except for %esp),
101 just to make things more deterministic.
102 */
103#define ELF_PLAT_INIT(_r, load_addr) \
104 do { \
105 _r->bx = 0; _r->cx = 0; _r->dx = 0; \
106 _r->si = 0; _r->di = 0; _r->bp = 0; \
107 _r->ax = 0; \
108} while (0)
109
110/*
111 * regs is struct pt_regs, pr_reg is elf_gregset_t (which is
112 * now struct_user_regs, they are different)
113 */
114
115#define ELF_CORE_COPY_REGS(pr_reg, regs) \
116do { \
117 pr_reg[0] = regs->bx; \
118 pr_reg[1] = regs->cx; \
119 pr_reg[2] = regs->dx; \
120 pr_reg[3] = regs->si; \
121 pr_reg[4] = regs->di; \
122 pr_reg[5] = regs->bp; \
123 pr_reg[6] = regs->ax; \
124 pr_reg[7] = regs->ds & 0xffff; \
125 pr_reg[8] = regs->es & 0xffff; \
126 pr_reg[9] = regs->fs & 0xffff; \
127 savesegment(gs, pr_reg[10]); \
128 pr_reg[11] = regs->orig_ax; \
129 pr_reg[12] = regs->ip; \
130 pr_reg[13] = regs->cs & 0xffff; \
131 pr_reg[14] = regs->flags; \
132 pr_reg[15] = regs->sp; \
133 pr_reg[16] = regs->ss & 0xffff; \
134} while (0);
135
136#define ELF_PLATFORM (utsname()->machine)
137#define set_personality_64bit() do { } while (0)
138
139#else /* CONFIG_X86_32 */
140
141/*
142 * This is used to ensure we don't load something for the wrong architecture.
143 */
144#define elf_check_arch(x) \
145 ((x)->e_machine == EM_X86_64)
146
147#define compat_elf_check_arch(x) elf_check_arch_ia32(x)
148
149static inline void start_ia32_thread(struct pt_regs *regs, u32 ip, u32 sp)
150{
151 loadsegment(fs, 0);
152 loadsegment(ds, __USER32_DS);
153 loadsegment(es, __USER32_DS);
154 load_gs_index(0);
155 regs->ip = ip;
156 regs->sp = sp;
157 regs->flags = X86_EFLAGS_IF;
158 regs->cs = __USER32_CS;
159 regs->ss = __USER32_DS;
160}
161
162static inline void elf_common_init(struct thread_struct *t,
163 struct pt_regs *regs, const u16 ds)
164{
165 regs->ax = regs->bx = regs->cx = regs->dx = 0;
166 regs->si = regs->di = regs->bp = 0;
167 regs->r8 = regs->r9 = regs->r10 = regs->r11 = 0;
168 regs->r12 = regs->r13 = regs->r14 = regs->r15 = 0;
169 t->fs = t->gs = 0;
170 t->fsindex = t->gsindex = 0;
171 t->ds = t->es = ds;
172}
173
174#define ELF_PLAT_INIT(_r, load_addr) \
175do { \
176 elf_common_init(&current->thread, _r, 0); \
177 clear_thread_flag(TIF_IA32); \
178} while (0)
179
180#define COMPAT_ELF_PLAT_INIT(regs, load_addr) \
181 elf_common_init(&current->thread, regs, __USER_DS)
182
183#define compat_start_thread(regs, ip, sp) \
184do { \
185 start_ia32_thread(regs, ip, sp); \
186 set_fs(USER_DS); \
187} while (0)
188
189#define COMPAT_SET_PERSONALITY(ex) \
190do { \
191 if (test_thread_flag(TIF_IA32)) \
192 clear_thread_flag(TIF_ABI_PENDING); \
193 else \
194 set_thread_flag(TIF_ABI_PENDING); \
195 current->personality |= force_personality32; \
196} while (0)
197
198#define COMPAT_ELF_PLATFORM ("i686")
199
200/*
201 * regs is struct pt_regs, pr_reg is elf_gregset_t (which is
202 * now struct_user_regs, they are different). Assumes current is the process
203 * getting dumped.
204 */
205
206#define ELF_CORE_COPY_REGS(pr_reg, regs) \
207do { \
208 unsigned v; \
209 (pr_reg)[0] = (regs)->r15; \
210 (pr_reg)[1] = (regs)->r14; \
211 (pr_reg)[2] = (regs)->r13; \
212 (pr_reg)[3] = (regs)->r12; \
213 (pr_reg)[4] = (regs)->bp; \
214 (pr_reg)[5] = (regs)->bx; \
215 (pr_reg)[6] = (regs)->r11; \
216 (pr_reg)[7] = (regs)->r10; \
217 (pr_reg)[8] = (regs)->r9; \
218 (pr_reg)[9] = (regs)->r8; \
219 (pr_reg)[10] = (regs)->ax; \
220 (pr_reg)[11] = (regs)->cx; \
221 (pr_reg)[12] = (regs)->dx; \
222 (pr_reg)[13] = (regs)->si; \
223 (pr_reg)[14] = (regs)->di; \
224 (pr_reg)[15] = (regs)->orig_ax; \
225 (pr_reg)[16] = (regs)->ip; \
226 (pr_reg)[17] = (regs)->cs; \
227 (pr_reg)[18] = (regs)->flags; \
228 (pr_reg)[19] = (regs)->sp; \
229 (pr_reg)[20] = (regs)->ss; \
230 (pr_reg)[21] = current->thread.fs; \
231 (pr_reg)[22] = current->thread.gs; \
232 asm("movl %%ds,%0" : "=r" (v)); (pr_reg)[23] = v; \
233 asm("movl %%es,%0" : "=r" (v)); (pr_reg)[24] = v; \
234 asm("movl %%fs,%0" : "=r" (v)); (pr_reg)[25] = v; \
235 asm("movl %%gs,%0" : "=r" (v)); (pr_reg)[26] = v; \
236} while (0);
237
238/* I'm not sure if we can use '-' here */
239#define ELF_PLATFORM ("x86_64")
240extern void set_personality_64bit(void);
241extern unsigned int sysctl_vsyscall32;
242extern int force_personality32;
243
244#endif /* !CONFIG_X86_32 */
245
246#define CORE_DUMP_USE_REGSET
247#define USE_ELF_CORE_DUMP
248#define ELF_EXEC_PAGESIZE 4096
249
250/* This is the location that an ET_DYN program is loaded if exec'ed. Typical
251 use of this is to invoke "./ld.so someprog" to test out a new version of
252 the loader. We need to make sure that it is out of the way of the program
253 that it will "exec", and that there is sufficient room for the brk. */
254
255#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
256
257/* This yields a mask that user programs can use to figure out what
258 instruction set this CPU supports. This could be done in user space,
259 but it's not easy, and we've already done it here. */
260
261#define ELF_HWCAP (boot_cpu_data.x86_capability[0])
262
263/* This yields a string that ld.so will use to load implementation
264 specific libraries for optimization. This is more specific in
265 intent than poking at uname or /proc/cpuinfo.
266
267 For the moment, we have only optimizations for the Intel generations,
268 but that could change... */
269
270#define SET_PERSONALITY(ex) set_personality_64bit()
271
272/*
273 * An executable for which elf_read_implies_exec() returns TRUE will
274 * have the READ_IMPLIES_EXEC personality flag set automatically.
275 */
276#define elf_read_implies_exec(ex, executable_stack) \
277 (executable_stack != EXSTACK_DISABLE_X)
278
279struct task_struct;
280
281#define ARCH_DLINFO_IA32(vdso_enabled) \
282do { \
283 if (vdso_enabled) { \
284 NEW_AUX_ENT(AT_SYSINFO, VDSO_ENTRY); \
285 NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_CURRENT_BASE); \
286 } \
287} while (0)
288
289#ifdef CONFIG_X86_32
290
291#define VDSO_HIGH_BASE (__fix_to_virt(FIX_VDSO))
292
293#define ARCH_DLINFO ARCH_DLINFO_IA32(vdso_enabled)
294
295/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */
296
297#else /* CONFIG_X86_32 */
298
299#define VDSO_HIGH_BASE 0xffffe000U /* CONFIG_COMPAT_VDSO address */
300
301/* 1GB for 64bit, 8MB for 32bit */
302#define STACK_RND_MASK (test_thread_flag(TIF_IA32) ? 0x7ff : 0x3fffff)
303
304#define ARCH_DLINFO \
305do { \
306 if (vdso_enabled) \
307 NEW_AUX_ENT(AT_SYSINFO_EHDR, \
308 (unsigned long)current->mm->context.vdso); \
309} while (0)
310
311#define AT_SYSINFO 32
312
313#define COMPAT_ARCH_DLINFO ARCH_DLINFO_IA32(sysctl_vsyscall32)
314
315#define COMPAT_ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
316
317#endif /* !CONFIG_X86_32 */
318
319#define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso)
320
321#define VDSO_ENTRY \
322 ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall))
323
324struct linux_binprm;
325
326#define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
327extern int arch_setup_additional_pages(struct linux_binprm *bprm,
328 int executable_stack);
329
330extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
331#define compat_arch_setup_additional_pages syscall32_setup_pages
332
333extern unsigned long arch_randomize_brk(struct mm_struct *mm);
334#define arch_randomize_brk arch_randomize_brk
335
336#endif /* _ASM_X86_ELF_H */
diff --git a/arch/x86/include/asm/emergency-restart.h b/arch/x86/include/asm/emergency-restart.h
new file mode 100644
index 000000000000..94826cf87455
--- /dev/null
+++ b/arch/x86/include/asm/emergency-restart.h
@@ -0,0 +1,18 @@
1#ifndef _ASM_X86_EMERGENCY_RESTART_H
2#define _ASM_X86_EMERGENCY_RESTART_H
3
4enum reboot_type {
5 BOOT_TRIPLE = 't',
6 BOOT_KBD = 'k',
7#ifdef CONFIG_X86_32
8 BOOT_BIOS = 'b',
9#endif
10 BOOT_ACPI = 'a',
11 BOOT_EFI = 'e'
12};
13
14extern enum reboot_type reboot_type;
15
16extern void machine_emergency_restart(void);
17
18#endif /* _ASM_X86_EMERGENCY_RESTART_H */
diff --git a/arch/x86/include/asm/errno.h b/arch/x86/include/asm/errno.h
new file mode 100644
index 000000000000..4c82b503d92f
--- /dev/null
+++ b/arch/x86/include/asm/errno.h
@@ -0,0 +1 @@
#include <asm-generic/errno.h>
diff --git a/arch/x86/include/asm/es7000/apic.h b/arch/x86/include/asm/es7000/apic.h
new file mode 100644
index 000000000000..380f0b4f17ed
--- /dev/null
+++ b/arch/x86/include/asm/es7000/apic.h
@@ -0,0 +1,193 @@
1#ifndef __ASM_ES7000_APIC_H
2#define __ASM_ES7000_APIC_H
3
4#define xapic_phys_to_log_apicid(cpu) per_cpu(x86_bios_cpu_apicid, cpu)
5#define esr_disable (1)
6
7static inline int apic_id_registered(void)
8{
9 return (1);
10}
11
12static inline cpumask_t target_cpus(void)
13{
14#if defined CONFIG_ES7000_CLUSTERED_APIC
15 return CPU_MASK_ALL;
16#else
17 return cpumask_of_cpu(smp_processor_id());
18#endif
19}
20
21#if defined CONFIG_ES7000_CLUSTERED_APIC
22#define APIC_DFR_VALUE (APIC_DFR_CLUSTER)
23#define INT_DELIVERY_MODE (dest_LowestPrio)
24#define INT_DEST_MODE (1) /* logical delivery broadcast to all procs */
25#define NO_BALANCE_IRQ (1)
26#undef WAKE_SECONDARY_VIA_INIT
27#define WAKE_SECONDARY_VIA_MIP
28#else
29#define APIC_DFR_VALUE (APIC_DFR_FLAT)
30#define INT_DELIVERY_MODE (dest_Fixed)
31#define INT_DEST_MODE (0) /* phys delivery to target procs */
32#define NO_BALANCE_IRQ (0)
33#undef APIC_DEST_LOGICAL
34#define APIC_DEST_LOGICAL 0x0
35#define WAKE_SECONDARY_VIA_INIT
36#endif
37
38static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
39{
40 return 0;
41}
42static inline unsigned long check_apicid_present(int bit)
43{
44 return physid_isset(bit, phys_cpu_present_map);
45}
46
47#define apicid_cluster(apicid) (apicid & 0xF0)
48
49static inline unsigned long calculate_ldr(int cpu)
50{
51 unsigned long id;
52 id = xapic_phys_to_log_apicid(cpu);
53 return (SET_APIC_LOGICAL_ID(id));
54}
55
56/*
57 * Set up the logical destination ID.
58 *
59 * Intel recommends to set DFR, LdR and TPR before enabling
60 * an APIC. See e.g. "AP-388 82489DX User's Manual" (Intel
61 * document number 292116). So here it goes...
62 */
63static inline void init_apic_ldr(void)
64{
65 unsigned long val;
66 int cpu = smp_processor_id();
67
68 apic_write(APIC_DFR, APIC_DFR_VALUE);
69 val = calculate_ldr(cpu);
70 apic_write(APIC_LDR, val);
71}
72
73#ifndef CONFIG_X86_GENERICARCH
74extern void enable_apic_mode(void);
75#endif
76
77extern int apic_version [MAX_APICS];
78static inline void setup_apic_routing(void)
79{
80 int apic = per_cpu(x86_bios_cpu_apicid, smp_processor_id());
81 printk("Enabling APIC mode: %s. Using %d I/O APICs, target cpus %lx\n",
82 (apic_version[apic] == 0x14) ?
83 "Physical Cluster" : "Logical Cluster", nr_ioapics, cpus_addr(target_cpus())[0]);
84}
85
86static inline int multi_timer_check(int apic, int irq)
87{
88 return 0;
89}
90
91static inline int apicid_to_node(int logical_apicid)
92{
93 return 0;
94}
95
96
97static inline int cpu_present_to_apicid(int mps_cpu)
98{
99 if (!mps_cpu)
100 return boot_cpu_physical_apicid;
101 else if (mps_cpu < NR_CPUS)
102 return (int) per_cpu(x86_bios_cpu_apicid, mps_cpu);
103 else
104 return BAD_APICID;
105}
106
107static inline physid_mask_t apicid_to_cpu_present(int phys_apicid)
108{
109 static int id = 0;
110 physid_mask_t mask;
111 mask = physid_mask_of_physid(id);
112 ++id;
113 return mask;
114}
115
116extern u8 cpu_2_logical_apicid[];
117/* Mapping from cpu number to logical apicid */
118static inline int cpu_to_logical_apicid(int cpu)
119{
120#ifdef CONFIG_SMP
121 if (cpu >= NR_CPUS)
122 return BAD_APICID;
123 return (int)cpu_2_logical_apicid[cpu];
124#else
125 return logical_smp_processor_id();
126#endif
127}
128
129static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
130{
131 /* For clustered we don't have a good way to do this yet - hack */
132 return physids_promote(0xff);
133}
134
135
136static inline void setup_portio_remap(void)
137{
138}
139
140extern unsigned int boot_cpu_physical_apicid;
141static inline int check_phys_apicid_present(int cpu_physical_apicid)
142{
143 boot_cpu_physical_apicid = read_apic_id();
144 return (1);
145}
146
147static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
148{
149 int num_bits_set;
150 int cpus_found = 0;
151 int cpu;
152 int apicid;
153
154 num_bits_set = cpus_weight(cpumask);
155 /* Return id to all */
156 if (num_bits_set == NR_CPUS)
157#if defined CONFIG_ES7000_CLUSTERED_APIC
158 return 0xFF;
159#else
160 return cpu_to_logical_apicid(0);
161#endif
162 /*
163 * The cpus in the mask must all be on the apic cluster. If are not
164 * on the same apicid cluster return default value of TARGET_CPUS.
165 */
166 cpu = first_cpu(cpumask);
167 apicid = cpu_to_logical_apicid(cpu);
168 while (cpus_found < num_bits_set) {
169 if (cpu_isset(cpu, cpumask)) {
170 int new_apicid = cpu_to_logical_apicid(cpu);
171 if (apicid_cluster(apicid) !=
172 apicid_cluster(new_apicid)){
173 printk ("%s: Not a valid mask!\n", __func__);
174#if defined CONFIG_ES7000_CLUSTERED_APIC
175 return 0xFF;
176#else
177 return cpu_to_logical_apicid(0);
178#endif
179 }
180 apicid = new_apicid;
181 cpus_found++;
182 }
183 cpu++;
184 }
185 return apicid;
186}
187
188static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
189{
190 return cpuid_apic >> index_msb;
191}
192
193#endif /* __ASM_ES7000_APIC_H */
diff --git a/arch/x86/include/asm/es7000/apicdef.h b/arch/x86/include/asm/es7000/apicdef.h
new file mode 100644
index 000000000000..8b234a3cb851
--- /dev/null
+++ b/arch/x86/include/asm/es7000/apicdef.h
@@ -0,0 +1,13 @@
1#ifndef __ASM_ES7000_APICDEF_H
2#define __ASM_ES7000_APICDEF_H
3
4#define APIC_ID_MASK (0xFF<<24)
5
6static inline unsigned get_apic_id(unsigned long x)
7{
8 return (((x)>>24)&0xFF);
9}
10
11#define GET_APIC_ID(x) get_apic_id(x)
12
13#endif
diff --git a/arch/x86/include/asm/es7000/ipi.h b/arch/x86/include/asm/es7000/ipi.h
new file mode 100644
index 000000000000..632a955fcc0a
--- /dev/null
+++ b/arch/x86/include/asm/es7000/ipi.h
@@ -0,0 +1,24 @@
1#ifndef __ASM_ES7000_IPI_H
2#define __ASM_ES7000_IPI_H
3
4void send_IPI_mask_sequence(cpumask_t mask, int vector);
5
6static inline void send_IPI_mask(cpumask_t mask, int vector)
7{
8 send_IPI_mask_sequence(mask, vector);
9}
10
11static inline void send_IPI_allbutself(int vector)
12{
13 cpumask_t mask = cpu_online_map;
14 cpu_clear(smp_processor_id(), mask);
15 if (!cpus_empty(mask))
16 send_IPI_mask(mask, vector);
17}
18
19static inline void send_IPI_all(int vector)
20{
21 send_IPI_mask(cpu_online_map, vector);
22}
23
24#endif /* __ASM_ES7000_IPI_H */
diff --git a/arch/x86/include/asm/es7000/mpparse.h b/arch/x86/include/asm/es7000/mpparse.h
new file mode 100644
index 000000000000..ed5a3caae141
--- /dev/null
+++ b/arch/x86/include/asm/es7000/mpparse.h
@@ -0,0 +1,30 @@
1#ifndef __ASM_ES7000_MPPARSE_H
2#define __ASM_ES7000_MPPARSE_H
3
4#include <linux/acpi.h>
5
6extern int parse_unisys_oem (char *oemptr);
7extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
8extern void unmap_unisys_acpi_oem_table(unsigned long oem_addr);
9extern void setup_unisys(void);
10
11#ifndef CONFIG_X86_GENERICARCH
12extern int acpi_madt_oem_check(char *oem_id, char *oem_table_id);
13extern int mps_oem_check(struct mp_config_table *mpc, char *oem,
14 char *productid);
15#endif
16
17#ifdef CONFIG_ACPI
18
19static inline int es7000_check_dsdt(void)
20{
21 struct acpi_table_header header;
22
23 if (ACPI_SUCCESS(acpi_get_table_header(ACPI_SIG_DSDT, 0, &header)) &&
24 !strncmp(header.oem_id, "UNISYS", 6))
25 return 1;
26 return 0;
27}
28#endif
29
30#endif /* __ASM_MACH_MPPARSE_H */
diff --git a/arch/x86/include/asm/es7000/wakecpu.h b/arch/x86/include/asm/es7000/wakecpu.h
new file mode 100644
index 000000000000..3ffc5a7bf667
--- /dev/null
+++ b/arch/x86/include/asm/es7000/wakecpu.h
@@ -0,0 +1,59 @@
1#ifndef __ASM_ES7000_WAKECPU_H
2#define __ASM_ES7000_WAKECPU_H
3
4/*
5 * This file copes with machines that wakeup secondary CPUs by the
6 * INIT, INIT, STARTUP sequence.
7 */
8
9#ifdef CONFIG_ES7000_CLUSTERED_APIC
10#define WAKE_SECONDARY_VIA_MIP
11#else
12#define WAKE_SECONDARY_VIA_INIT
13#endif
14
15#ifdef WAKE_SECONDARY_VIA_MIP
16extern int es7000_start_cpu(int cpu, unsigned long eip);
17static inline int
18wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
19{
20 int boot_error = 0;
21 boot_error = es7000_start_cpu(phys_apicid, start_eip);
22 return boot_error;
23}
24#endif
25
26#define TRAMPOLINE_LOW phys_to_virt(0x467)
27#define TRAMPOLINE_HIGH phys_to_virt(0x469)
28
29#define boot_cpu_apicid boot_cpu_physical_apicid
30
31static inline void wait_for_init_deassert(atomic_t *deassert)
32{
33#ifdef WAKE_SECONDARY_VIA_INIT
34 while (!atomic_read(deassert))
35 cpu_relax();
36#endif
37 return;
38}
39
40/* Nothing to do for most platforms, since cleared by the INIT cycle */
41static inline void smp_callin_clear_local_apic(void)
42{
43}
44
45static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
46{
47}
48
49static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
50{
51}
52
53#if APIC_DEBUG
54 #define inquire_remote_apic(apicid) __inquire_remote_apic(apicid)
55#else
56 #define inquire_remote_apic(apicid) {}
57#endif
58
59#endif /* __ASM_MACH_WAKECPU_H */
diff --git a/arch/x86/include/asm/fb.h b/arch/x86/include/asm/fb.h
new file mode 100644
index 000000000000..53018464aea6
--- /dev/null
+++ b/arch/x86/include/asm/fb.h
@@ -0,0 +1,21 @@
1#ifndef _ASM_X86_FB_H
2#define _ASM_X86_FB_H
3
4#include <linux/fb.h>
5#include <linux/fs.h>
6#include <asm/page.h>
7
8static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
9 unsigned long off)
10{
11 if (boot_cpu_data.x86 > 3)
12 pgprot_val(vma->vm_page_prot) |= _PAGE_PCD;
13}
14
15#ifdef CONFIG_X86_32
16extern int fb_is_primary_device(struct fb_info *info);
17#else
18static inline int fb_is_primary_device(struct fb_info *info) { return 0; }
19#endif
20
21#endif /* _ASM_X86_FB_H */
diff --git a/arch/x86/include/asm/fcntl.h b/arch/x86/include/asm/fcntl.h
new file mode 100644
index 000000000000..46ab12db5739
--- /dev/null
+++ b/arch/x86/include/asm/fcntl.h
@@ -0,0 +1 @@
#include <asm-generic/fcntl.h>
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
new file mode 100644
index 000000000000..8668a94f850e
--- /dev/null
+++ b/arch/x86/include/asm/fixmap.h
@@ -0,0 +1,68 @@
1#ifndef _ASM_X86_FIXMAP_H
2#define _ASM_X86_FIXMAP_H
3
4#ifdef CONFIG_X86_32
5# include "fixmap_32.h"
6#else
7# include "fixmap_64.h"
8#endif
9
10extern int fixmaps_set;
11
12void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
13void native_set_fixmap(enum fixed_addresses idx,
14 unsigned long phys, pgprot_t flags);
15
16#ifndef CONFIG_PARAVIRT
17static inline void __set_fixmap(enum fixed_addresses idx,
18 unsigned long phys, pgprot_t flags)
19{
20 native_set_fixmap(idx, phys, flags);
21}
22#endif
23
24#define set_fixmap(idx, phys) \
25 __set_fixmap(idx, phys, PAGE_KERNEL)
26
27/*
28 * Some hardware wants to get fixmapped without caching.
29 */
30#define set_fixmap_nocache(idx, phys) \
31 __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
32
33#define clear_fixmap(idx) \
34 __set_fixmap(idx, 0, __pgprot(0))
35
36#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
37#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
38
39extern void __this_fixmap_does_not_exist(void);
40
41/*
42 * 'index to address' translation. If anyone tries to use the idx
43 * directly without translation, we catch the bug with a NULL-deference
44 * kernel oops. Illegal ranges of incoming indices are caught too.
45 */
46static __always_inline unsigned long fix_to_virt(const unsigned int idx)
47{
48 /*
49 * this branch gets completely eliminated after inlining,
50 * except when someone tries to use fixaddr indices in an
51 * illegal way. (such as mixing up address types or using
52 * out-of-range indices).
53 *
54 * If it doesn't get removed, the linker will complain
55 * loudly with a reasonably clear error message..
56 */
57 if (idx >= __end_of_fixed_addresses)
58 __this_fixmap_does_not_exist();
59
60 return __fix_to_virt(idx);
61}
62
63static inline unsigned long virt_to_fix(const unsigned long vaddr)
64{
65 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
66 return __virt_to_fix(vaddr);
67}
68#endif /* _ASM_X86_FIXMAP_H */
diff --git a/arch/x86/include/asm/fixmap_32.h b/arch/x86/include/asm/fixmap_32.h
new file mode 100644
index 000000000000..09f29ab5c139
--- /dev/null
+++ b/arch/x86/include/asm/fixmap_32.h
@@ -0,0 +1,123 @@
1/*
2 * fixmap.h: compile-time virtual memory allocation
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 1998 Ingo Molnar
9 *
10 * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999
11 */
12
13#ifndef _ASM_X86_FIXMAP_32_H
14#define _ASM_X86_FIXMAP_32_H
15
16
17/* used by vmalloc.c, vsyscall.lds.S.
18 *
19 * Leave one empty page between vmalloc'ed areas and
20 * the start of the fixmap.
21 */
22extern unsigned long __FIXADDR_TOP;
23#define FIXADDR_USER_START __fix_to_virt(FIX_VDSO)
24#define FIXADDR_USER_END __fix_to_virt(FIX_VDSO - 1)
25
26#ifndef __ASSEMBLY__
27#include <linux/kernel.h>
28#include <asm/acpi.h>
29#include <asm/apicdef.h>
30#include <asm/page.h>
31#ifdef CONFIG_HIGHMEM
32#include <linux/threads.h>
33#include <asm/kmap_types.h>
34#endif
35
36/*
37 * Here we define all the compile-time 'special' virtual
38 * addresses. The point is to have a constant address at
39 * compile time, but to set the physical address only
40 * in the boot process. We allocate these special addresses
41 * from the end of virtual memory (0xfffff000) backwards.
42 * Also this lets us do fail-safe vmalloc(), we
43 * can guarantee that these special addresses and
44 * vmalloc()-ed addresses never overlap.
45 *
46 * these 'compile-time allocated' memory buffers are
47 * fixed-size 4k pages. (or larger if used with an increment
48 * highger than 1) use fixmap_set(idx,phys) to associate
49 * physical memory with fixmap indices.
50 *
51 * TLB entries of such buffers will not be flushed across
52 * task switches.
53 */
54enum fixed_addresses {
55 FIX_HOLE,
56 FIX_VDSO,
57 FIX_DBGP_BASE,
58 FIX_EARLYCON_MEM_BASE,
59#ifdef CONFIG_X86_LOCAL_APIC
60 FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
61#endif
62#ifdef CONFIG_X86_IO_APIC
63 FIX_IO_APIC_BASE_0,
64 FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1,
65#endif
66#ifdef CONFIG_X86_VISWS_APIC
67 FIX_CO_CPU, /* Cobalt timer */
68 FIX_CO_APIC, /* Cobalt APIC Redirection Table */
69 FIX_LI_PCIA, /* Lithium PCI Bridge A */
70 FIX_LI_PCIB, /* Lithium PCI Bridge B */
71#endif
72#ifdef CONFIG_X86_F00F_BUG
73 FIX_F00F_IDT, /* Virtual mapping for IDT */
74#endif
75#ifdef CONFIG_X86_CYCLONE_TIMER
76 FIX_CYCLONE_TIMER, /*cyclone timer register*/
77#endif
78#ifdef CONFIG_HIGHMEM
79 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
80 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
81#endif
82#ifdef CONFIG_PCI_MMCONFIG
83 FIX_PCIE_MCFG,
84#endif
85#ifdef CONFIG_PARAVIRT
86 FIX_PARAVIRT_BOOTMAP,
87#endif
88 __end_of_permanent_fixed_addresses,
89 /*
90 * 256 temporary boot-time mappings, used by early_ioremap(),
91 * before ioremap() is functional.
92 *
93 * We round it up to the next 256 pages boundary so that we
94 * can have a single pgd entry and a single pte table:
95 */
96#define NR_FIX_BTMAPS 64
97#define FIX_BTMAPS_SLOTS 4
98 FIX_BTMAP_END = __end_of_permanent_fixed_addresses + 256 -
99 (__end_of_permanent_fixed_addresses & 255),
100 FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_SLOTS - 1,
101 FIX_WP_TEST,
102#ifdef CONFIG_ACPI
103 FIX_ACPI_BEGIN,
104 FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
105#endif
106#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
107 FIX_OHCI1394_BASE,
108#endif
109 __end_of_fixed_addresses
110};
111
112extern void reserve_top_address(unsigned long reserve);
113
114
115#define FIXADDR_TOP ((unsigned long)__FIXADDR_TOP)
116
117#define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT)
118#define __FIXADDR_BOOT_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
119#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
120#define FIXADDR_BOOT_START (FIXADDR_TOP - __FIXADDR_BOOT_SIZE)
121
122#endif /* !__ASSEMBLY__ */
123#endif /* _ASM_X86_FIXMAP_32_H */
diff --git a/arch/x86/include/asm/fixmap_64.h b/arch/x86/include/asm/fixmap_64.h
new file mode 100644
index 000000000000..00a30ab9b1a5
--- /dev/null
+++ b/arch/x86/include/asm/fixmap_64.h
@@ -0,0 +1,83 @@
1/*
2 * fixmap.h: compile-time virtual memory allocation
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 1998 Ingo Molnar
9 */
10
11#ifndef _ASM_X86_FIXMAP_64_H
12#define _ASM_X86_FIXMAP_64_H
13
14#include <linux/kernel.h>
15#include <asm/acpi.h>
16#include <asm/apicdef.h>
17#include <asm/page.h>
18#include <asm/vsyscall.h>
19#include <asm/efi.h>
20
21/*
22 * Here we define all the compile-time 'special' virtual
23 * addresses. The point is to have a constant address at
24 * compile time, but to set the physical address only
25 * in the boot process.
26 *
27 * These 'compile-time allocated' memory buffers are
28 * fixed-size 4k pages (or larger if used with an increment
29 * higher than 1). Use set_fixmap(idx,phys) to associate
30 * physical memory with fixmap indices.
31 *
32 * TLB entries of such buffers will not be flushed across
33 * task switches.
34 */
35
36enum fixed_addresses {
37 VSYSCALL_LAST_PAGE,
38 VSYSCALL_FIRST_PAGE = VSYSCALL_LAST_PAGE
39 + ((VSYSCALL_END-VSYSCALL_START) >> PAGE_SHIFT) - 1,
40 VSYSCALL_HPET,
41 FIX_DBGP_BASE,
42 FIX_EARLYCON_MEM_BASE,
43 FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
44 FIX_IO_APIC_BASE_0,
45 FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS - 1,
46 FIX_EFI_IO_MAP_LAST_PAGE,
47 FIX_EFI_IO_MAP_FIRST_PAGE = FIX_EFI_IO_MAP_LAST_PAGE
48 + MAX_EFI_IO_PAGES - 1,
49#ifdef CONFIG_PARAVIRT
50 FIX_PARAVIRT_BOOTMAP,
51#endif
52 __end_of_permanent_fixed_addresses,
53#ifdef CONFIG_ACPI
54 FIX_ACPI_BEGIN,
55 FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
56#endif
57#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
58 FIX_OHCI1394_BASE,
59#endif
60 /*
61 * 256 temporary boot-time mappings, used by early_ioremap(),
62 * before ioremap() is functional.
63 *
64 * We round it up to the next 256 pages boundary so that we
65 * can have a single pgd entry and a single pte table:
66 */
67#define NR_FIX_BTMAPS 64
68#define FIX_BTMAPS_SLOTS 4
69 FIX_BTMAP_END = __end_of_permanent_fixed_addresses + 256 -
70 (__end_of_permanent_fixed_addresses & 255),
71 FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_SLOTS - 1,
72 __end_of_fixed_addresses
73};
74
75#define FIXADDR_TOP (VSYSCALL_END-PAGE_SIZE)
76#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
77#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
78
79/* Only covers 32bit vsyscalls currently. Need another set for 64bit. */
80#define FIXADDR_USER_START ((unsigned long)VSYSCALL32_VSYSCALL)
81#define FIXADDR_USER_END (FIXADDR_USER_START + PAGE_SIZE)
82
83#endif /* _ASM_X86_FIXMAP_64_H */
diff --git a/arch/x86/include/asm/floppy.h b/arch/x86/include/asm/floppy.h
new file mode 100644
index 000000000000..dbe82a5c5eac
--- /dev/null
+++ b/arch/x86/include/asm/floppy.h
@@ -0,0 +1,281 @@
1/*
2 * Architecture specific parts of the Floppy driver
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 1995
9 */
10#ifndef _ASM_X86_FLOPPY_H
11#define _ASM_X86_FLOPPY_H
12
13#include <linux/vmalloc.h>
14
15/*
16 * The DMA channel used by the floppy controller cannot access data at
17 * addresses >= 16MB
18 *
19 * Went back to the 1MB limit, as some people had problems with the floppy
20 * driver otherwise. It doesn't matter much for performance anyway, as most
21 * floppy accesses go through the track buffer.
22 */
23#define _CROSS_64KB(a, s, vdma) \
24 (!(vdma) && \
25 ((unsigned long)(a)/K_64 != ((unsigned long)(a) + (s) - 1) / K_64))
26
27#define CROSS_64KB(a, s) _CROSS_64KB(a, s, use_virtual_dma & 1)
28
29
30#define SW fd_routine[use_virtual_dma & 1]
31#define CSW fd_routine[can_use_virtual_dma & 1]
32
33
34#define fd_inb(port) inb_p(port)
35#define fd_outb(value, port) outb_p(value, port)
36
37#define fd_request_dma() CSW._request_dma(FLOPPY_DMA, "floppy")
38#define fd_free_dma() CSW._free_dma(FLOPPY_DMA)
39#define fd_enable_irq() enable_irq(FLOPPY_IRQ)
40#define fd_disable_irq() disable_irq(FLOPPY_IRQ)
41#define fd_free_irq() free_irq(FLOPPY_IRQ, NULL)
42#define fd_get_dma_residue() SW._get_dma_residue(FLOPPY_DMA)
43#define fd_dma_mem_alloc(size) SW._dma_mem_alloc(size)
44#define fd_dma_setup(addr, size, mode, io) SW._dma_setup(addr, size, mode, io)
45
46#define FLOPPY_CAN_FALLBACK_ON_NODMA
47
48static int virtual_dma_count;
49static int virtual_dma_residue;
50static char *virtual_dma_addr;
51static int virtual_dma_mode;
52static int doing_pdma;
53
54static irqreturn_t floppy_hardint(int irq, void *dev_id)
55{
56 unsigned char st;
57
58#undef TRACE_FLPY_INT
59
60#ifdef TRACE_FLPY_INT
61 static int calls;
62 static int bytes;
63 static int dma_wait;
64#endif
65 if (!doing_pdma)
66 return floppy_interrupt(irq, dev_id);
67
68#ifdef TRACE_FLPY_INT
69 if (!calls)
70 bytes = virtual_dma_count;
71#endif
72
73 {
74 int lcount;
75 char *lptr;
76
77 st = 1;
78 for (lcount = virtual_dma_count, lptr = virtual_dma_addr;
79 lcount; lcount--, lptr++) {
80 st = inb(virtual_dma_port + 4) & 0xa0;
81 if (st != 0xa0)
82 break;
83 if (virtual_dma_mode)
84 outb_p(*lptr, virtual_dma_port + 5);
85 else
86 *lptr = inb_p(virtual_dma_port + 5);
87 }
88 virtual_dma_count = lcount;
89 virtual_dma_addr = lptr;
90 st = inb(virtual_dma_port + 4);
91 }
92
93#ifdef TRACE_FLPY_INT
94 calls++;
95#endif
96 if (st == 0x20)
97 return IRQ_HANDLED;
98 if (!(st & 0x20)) {
99 virtual_dma_residue += virtual_dma_count;
100 virtual_dma_count = 0;
101#ifdef TRACE_FLPY_INT
102 printk("count=%x, residue=%x calls=%d bytes=%d dma_wait=%d\n",
103 virtual_dma_count, virtual_dma_residue, calls, bytes,
104 dma_wait);
105 calls = 0;
106 dma_wait = 0;
107#endif
108 doing_pdma = 0;
109 floppy_interrupt(irq, dev_id);
110 return IRQ_HANDLED;
111 }
112#ifdef TRACE_FLPY_INT
113 if (!virtual_dma_count)
114 dma_wait++;
115#endif
116 return IRQ_HANDLED;
117}
118
119static void fd_disable_dma(void)
120{
121 if (!(can_use_virtual_dma & 1))
122 disable_dma(FLOPPY_DMA);
123 doing_pdma = 0;
124 virtual_dma_residue += virtual_dma_count;
125 virtual_dma_count = 0;
126}
127
128static int vdma_request_dma(unsigned int dmanr, const char *device_id)
129{
130 return 0;
131}
132
133static void vdma_nop(unsigned int dummy)
134{
135}
136
137
138static int vdma_get_dma_residue(unsigned int dummy)
139{
140 return virtual_dma_count + virtual_dma_residue;
141}
142
143
144static int fd_request_irq(void)
145{
146 if (can_use_virtual_dma)
147 return request_irq(FLOPPY_IRQ, floppy_hardint,
148 IRQF_DISABLED, "floppy", NULL);
149 else
150 return request_irq(FLOPPY_IRQ, floppy_interrupt,
151 IRQF_DISABLED, "floppy", NULL);
152}
153
154static unsigned long dma_mem_alloc(unsigned long size)
155{
156 return __get_dma_pages(GFP_KERNEL|__GFP_NORETRY, get_order(size));
157}
158
159
160static unsigned long vdma_mem_alloc(unsigned long size)
161{
162 return (unsigned long)vmalloc(size);
163
164}
165
166#define nodma_mem_alloc(size) vdma_mem_alloc(size)
167
168static void _fd_dma_mem_free(unsigned long addr, unsigned long size)
169{
170 if ((unsigned long)addr >= (unsigned long)high_memory)
171 vfree((void *)addr);
172 else
173 free_pages(addr, get_order(size));
174}
175
176#define fd_dma_mem_free(addr, size) _fd_dma_mem_free(addr, size)
177
178static void _fd_chose_dma_mode(char *addr, unsigned long size)
179{
180 if (can_use_virtual_dma == 2) {
181 if ((unsigned long)addr >= (unsigned long)high_memory ||
182 isa_virt_to_bus(addr) >= 0x1000000 ||
183 _CROSS_64KB(addr, size, 0))
184 use_virtual_dma = 1;
185 else
186 use_virtual_dma = 0;
187 } else {
188 use_virtual_dma = can_use_virtual_dma & 1;
189 }
190}
191
192#define fd_chose_dma_mode(addr, size) _fd_chose_dma_mode(addr, size)
193
194
195static int vdma_dma_setup(char *addr, unsigned long size, int mode, int io)
196{
197 doing_pdma = 1;
198 virtual_dma_port = io;
199 virtual_dma_mode = (mode == DMA_MODE_WRITE);
200 virtual_dma_addr = addr;
201 virtual_dma_count = size;
202 virtual_dma_residue = 0;
203 return 0;
204}
205
206static int hard_dma_setup(char *addr, unsigned long size, int mode, int io)
207{
208#ifdef FLOPPY_SANITY_CHECK
209 if (CROSS_64KB(addr, size)) {
210 printk("DMA crossing 64-K boundary %p-%p\n", addr, addr+size);
211 return -1;
212 }
213#endif
214 /* actual, physical DMA */
215 doing_pdma = 0;
216 clear_dma_ff(FLOPPY_DMA);
217 set_dma_mode(FLOPPY_DMA, mode);
218 set_dma_addr(FLOPPY_DMA, isa_virt_to_bus(addr));
219 set_dma_count(FLOPPY_DMA, size);
220 enable_dma(FLOPPY_DMA);
221 return 0;
222}
223
224static struct fd_routine_l {
225 int (*_request_dma)(unsigned int dmanr, const char *device_id);
226 void (*_free_dma)(unsigned int dmanr);
227 int (*_get_dma_residue)(unsigned int dummy);
228 unsigned long (*_dma_mem_alloc)(unsigned long size);
229 int (*_dma_setup)(char *addr, unsigned long size, int mode, int io);
230} fd_routine[] = {
231 {
232 request_dma,
233 free_dma,
234 get_dma_residue,
235 dma_mem_alloc,
236 hard_dma_setup
237 },
238 {
239 vdma_request_dma,
240 vdma_nop,
241 vdma_get_dma_residue,
242 vdma_mem_alloc,
243 vdma_dma_setup
244 }
245};
246
247
248static int FDC1 = 0x3f0;
249static int FDC2 = -1;
250
251/*
252 * Floppy types are stored in the rtc's CMOS RAM and so rtc_lock
253 * is needed to prevent corrupted CMOS RAM in case "insmod floppy"
254 * coincides with another rtc CMOS user. Paul G.
255 */
256#define FLOPPY0_TYPE \
257({ \
258 unsigned long flags; \
259 unsigned char val; \
260 spin_lock_irqsave(&rtc_lock, flags); \
261 val = (CMOS_READ(0x10) >> 4) & 15; \
262 spin_unlock_irqrestore(&rtc_lock, flags); \
263 val; \
264})
265
266#define FLOPPY1_TYPE \
267({ \
268 unsigned long flags; \
269 unsigned char val; \
270 spin_lock_irqsave(&rtc_lock, flags); \
271 val = CMOS_READ(0x10) & 15; \
272 spin_unlock_irqrestore(&rtc_lock, flags); \
273 val; \
274})
275
276#define N_FDC 2
277#define N_DRIVE 8
278
279#define EXTRA_FLOPPY_PARAMS
280
281#endif /* _ASM_X86_FLOPPY_H */
diff --git a/arch/x86/include/asm/frame.h b/arch/x86/include/asm/frame.h
new file mode 100644
index 000000000000..06850a7194e1
--- /dev/null
+++ b/arch/x86/include/asm/frame.h
@@ -0,0 +1,27 @@
1#ifdef __ASSEMBLY__
2
3#include <asm/dwarf2.h>
4
5/* The annotation hides the frame from the unwinder and makes it look
6 like a ordinary ebp save/restore. This avoids some special cases for
7 frame pointer later */
8#ifdef CONFIG_FRAME_POINTER
9 .macro FRAME
10 pushl %ebp
11 CFI_ADJUST_CFA_OFFSET 4
12 CFI_REL_OFFSET ebp,0
13 movl %esp,%ebp
14 .endm
15 .macro ENDFRAME
16 popl %ebp
17 CFI_ADJUST_CFA_OFFSET -4
18 CFI_RESTORE ebp
19 .endm
20#else
21 .macro FRAME
22 .endm
23 .macro ENDFRAME
24 .endm
25#endif
26
27#endif /* __ASSEMBLY__ */
diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h
new file mode 100644
index 000000000000..47f7e65e6c1d
--- /dev/null
+++ b/arch/x86/include/asm/ftrace.h
@@ -0,0 +1,24 @@
1#ifndef _ASM_X86_FTRACE_H
2#define _ASM_X86_FTRACE_H
3
4#ifdef CONFIG_FTRACE
5#define MCOUNT_ADDR ((long)(mcount))
6#define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */
7
8#ifndef __ASSEMBLY__
9extern void mcount(void);
10
11static inline unsigned long ftrace_call_adjust(unsigned long addr)
12{
13 /*
14 * call mcount is "e8 <4 byte offset>"
15 * The addr points to the 4 byte offset and the caller of this
16 * function wants the pointer to e8. Simply subtract one.
17 */
18 return addr - 1;
19}
20#endif
21
22#endif /* CONFIG_FTRACE */
23
24#endif /* _ASM_X86_FTRACE_H */
diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h
new file mode 100644
index 000000000000..1f11ce44e956
--- /dev/null
+++ b/arch/x86/include/asm/futex.h
@@ -0,0 +1,140 @@
1#ifndef _ASM_X86_FUTEX_H
2#define _ASM_X86_FUTEX_H
3
4#ifdef __KERNEL__
5
6#include <linux/futex.h>
7#include <linux/uaccess.h>
8
9#include <asm/asm.h>
10#include <asm/errno.h>
11#include <asm/processor.h>
12#include <asm/system.h>
13
14#define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \
15 asm volatile("1:\t" insn "\n" \
16 "2:\t.section .fixup,\"ax\"\n" \
17 "3:\tmov\t%3, %1\n" \
18 "\tjmp\t2b\n" \
19 "\t.previous\n" \
20 _ASM_EXTABLE(1b, 3b) \
21 : "=r" (oldval), "=r" (ret), "+m" (*uaddr) \
22 : "i" (-EFAULT), "0" (oparg), "1" (0))
23
24#define __futex_atomic_op2(insn, ret, oldval, uaddr, oparg) \
25 asm volatile("1:\tmovl %2, %0\n" \
26 "\tmovl\t%0, %3\n" \
27 "\t" insn "\n" \
28 "2:\t" LOCK_PREFIX "cmpxchgl %3, %2\n" \
29 "\tjnz\t1b\n" \
30 "3:\t.section .fixup,\"ax\"\n" \
31 "4:\tmov\t%5, %1\n" \
32 "\tjmp\t3b\n" \
33 "\t.previous\n" \
34 _ASM_EXTABLE(1b, 4b) \
35 _ASM_EXTABLE(2b, 4b) \
36 : "=&a" (oldval), "=&r" (ret), \
37 "+m" (*uaddr), "=&r" (tem) \
38 : "r" (oparg), "i" (-EFAULT), "1" (0))
39
40static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr)
41{
42 int op = (encoded_op >> 28) & 7;
43 int cmp = (encoded_op >> 24) & 15;
44 int oparg = (encoded_op << 8) >> 20;
45 int cmparg = (encoded_op << 20) >> 20;
46 int oldval = 0, ret, tem;
47
48 if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
49 oparg = 1 << oparg;
50
51 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
52 return -EFAULT;
53
54#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_BSWAP)
55 /* Real i386 machines can only support FUTEX_OP_SET */
56 if (op != FUTEX_OP_SET && boot_cpu_data.x86 == 3)
57 return -ENOSYS;
58#endif
59
60 pagefault_disable();
61
62 switch (op) {
63 case FUTEX_OP_SET:
64 __futex_atomic_op1("xchgl %0, %2", ret, oldval, uaddr, oparg);
65 break;
66 case FUTEX_OP_ADD:
67 __futex_atomic_op1(LOCK_PREFIX "xaddl %0, %2", ret, oldval,
68 uaddr, oparg);
69 break;
70 case FUTEX_OP_OR:
71 __futex_atomic_op2("orl %4, %3", ret, oldval, uaddr, oparg);
72 break;
73 case FUTEX_OP_ANDN:
74 __futex_atomic_op2("andl %4, %3", ret, oldval, uaddr, ~oparg);
75 break;
76 case FUTEX_OP_XOR:
77 __futex_atomic_op2("xorl %4, %3", ret, oldval, uaddr, oparg);
78 break;
79 default:
80 ret = -ENOSYS;
81 }
82
83 pagefault_enable();
84
85 if (!ret) {
86 switch (cmp) {
87 case FUTEX_OP_CMP_EQ:
88 ret = (oldval == cmparg);
89 break;
90 case FUTEX_OP_CMP_NE:
91 ret = (oldval != cmparg);
92 break;
93 case FUTEX_OP_CMP_LT:
94 ret = (oldval < cmparg);
95 break;
96 case FUTEX_OP_CMP_GE:
97 ret = (oldval >= cmparg);
98 break;
99 case FUTEX_OP_CMP_LE:
100 ret = (oldval <= cmparg);
101 break;
102 case FUTEX_OP_CMP_GT:
103 ret = (oldval > cmparg);
104 break;
105 default:
106 ret = -ENOSYS;
107 }
108 }
109 return ret;
110}
111
112static inline int futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval,
113 int newval)
114{
115
116#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_BSWAP)
117 /* Real i386 machines have no cmpxchg instruction */
118 if (boot_cpu_data.x86 == 3)
119 return -ENOSYS;
120#endif
121
122 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
123 return -EFAULT;
124
125 asm volatile("1:\t" LOCK_PREFIX "cmpxchgl %3, %1\n"
126 "2:\t.section .fixup, \"ax\"\n"
127 "3:\tmov %2, %0\n"
128 "\tjmp 2b\n"
129 "\t.previous\n"
130 _ASM_EXTABLE(1b, 3b)
131 : "=a" (oldval), "+m" (*uaddr)
132 : "i" (-EFAULT), "r" (newval), "0" (oldval)
133 : "memory"
134 );
135
136 return oldval;
137}
138
139#endif
140#endif /* _ASM_X86_FUTEX_H */
diff --git a/arch/x86/include/asm/gart.h b/arch/x86/include/asm/gart.h
new file mode 100644
index 000000000000..74252264433d
--- /dev/null
+++ b/arch/x86/include/asm/gart.h
@@ -0,0 +1,73 @@
1#ifndef _ASM_X86_GART_H
2#define _ASM_X86_GART_H
3
4#include <asm/e820.h>
5
6extern void set_up_gart_resume(u32, u32);
7
8extern int fallback_aper_order;
9extern int fallback_aper_force;
10extern int fix_aperture;
11
12/* PTE bits. */
13#define GPTE_VALID 1
14#define GPTE_COHERENT 2
15
16/* Aperture control register bits. */
17#define GARTEN (1<<0)
18#define DISGARTCPU (1<<4)
19#define DISGARTIO (1<<5)
20
21/* GART cache control register bits. */
22#define INVGART (1<<0)
23#define GARTPTEERR (1<<1)
24
25/* K8 On-cpu GART registers */
26#define AMD64_GARTAPERTURECTL 0x90
27#define AMD64_GARTAPERTUREBASE 0x94
28#define AMD64_GARTTABLEBASE 0x98
29#define AMD64_GARTCACHECTL 0x9c
30#define AMD64_GARTEN (1<<0)
31
32extern int agp_amd64_init(void);
33
34static inline void enable_gart_translation(struct pci_dev *dev, u64 addr)
35{
36 u32 tmp, ctl;
37
38 /* address of the mappings table */
39 addr >>= 12;
40 tmp = (u32) addr<<4;
41 tmp &= ~0xf;
42 pci_write_config_dword(dev, AMD64_GARTTABLEBASE, tmp);
43
44 /* Enable GART translation for this hammer. */
45 pci_read_config_dword(dev, AMD64_GARTAPERTURECTL, &ctl);
46 ctl |= GARTEN;
47 ctl &= ~(DISGARTCPU | DISGARTIO);
48 pci_write_config_dword(dev, AMD64_GARTAPERTURECTL, ctl);
49}
50
51static inline int aperture_valid(u64 aper_base, u32 aper_size, u32 min_size)
52{
53 if (!aper_base)
54 return 0;
55
56 if (aper_base + aper_size > 0x100000000ULL) {
57 printk(KERN_INFO "Aperture beyond 4GB. Ignoring.\n");
58 return 0;
59 }
60 if (e820_any_mapped(aper_base, aper_base + aper_size, E820_RAM)) {
61 printk(KERN_INFO "Aperture pointing to e820 RAM. Ignoring.\n");
62 return 0;
63 }
64 if (aper_size < min_size) {
65 printk(KERN_INFO "Aperture too small (%d MB) than (%d MB)\n",
66 aper_size>>20, min_size>>20);
67 return 0;
68 }
69
70 return 1;
71}
72
73#endif /* _ASM_X86_GART_H */
diff --git a/arch/x86/include/asm/genapic.h b/arch/x86/include/asm/genapic.h
new file mode 100644
index 000000000000..d48bee663a6f
--- /dev/null
+++ b/arch/x86/include/asm/genapic.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "genapic_32.h"
3#else
4# include "genapic_64.h"
5#endif
diff --git a/arch/x86/include/asm/genapic_32.h b/arch/x86/include/asm/genapic_32.h
new file mode 100644
index 000000000000..5cbd4fcc06fd
--- /dev/null
+++ b/arch/x86/include/asm/genapic_32.h
@@ -0,0 +1,126 @@
1#ifndef _ASM_X86_GENAPIC_32_H
2#define _ASM_X86_GENAPIC_32_H
3
4#include <asm/mpspec.h>
5
6/*
7 * Generic APIC driver interface.
8 *
9 * An straight forward mapping of the APIC related parts of the
10 * x86 subarchitecture interface to a dynamic object.
11 *
12 * This is used by the "generic" x86 subarchitecture.
13 *
14 * Copyright 2003 Andi Kleen, SuSE Labs.
15 */
16
17struct mpc_config_bus;
18struct mp_config_table;
19struct mpc_config_processor;
20
21struct genapic {
22 char *name;
23 int (*probe)(void);
24
25 int (*apic_id_registered)(void);
26 cpumask_t (*target_cpus)(void);
27 int int_delivery_mode;
28 int int_dest_mode;
29 int ESR_DISABLE;
30 int apic_destination_logical;
31 unsigned long (*check_apicid_used)(physid_mask_t bitmap, int apicid);
32 unsigned long (*check_apicid_present)(int apicid);
33 int no_balance_irq;
34 int no_ioapic_check;
35 void (*init_apic_ldr)(void);
36 physid_mask_t (*ioapic_phys_id_map)(physid_mask_t map);
37
38 void (*setup_apic_routing)(void);
39 int (*multi_timer_check)(int apic, int irq);
40 int (*apicid_to_node)(int logical_apicid);
41 int (*cpu_to_logical_apicid)(int cpu);
42 int (*cpu_present_to_apicid)(int mps_cpu);
43 physid_mask_t (*apicid_to_cpu_present)(int phys_apicid);
44 void (*setup_portio_remap)(void);
45 int (*check_phys_apicid_present)(int boot_cpu_physical_apicid);
46 void (*enable_apic_mode)(void);
47 u32 (*phys_pkg_id)(u32 cpuid_apic, int index_msb);
48
49 /* mpparse */
50 /* When one of the next two hooks returns 1 the genapic
51 is switched to this. Essentially they are additional probe
52 functions. */
53 int (*mps_oem_check)(struct mp_config_table *mpc, char *oem,
54 char *productid);
55 int (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id);
56
57 unsigned (*get_apic_id)(unsigned long x);
58 unsigned long apic_id_mask;
59 unsigned int (*cpu_mask_to_apicid)(cpumask_t cpumask);
60 cpumask_t (*vector_allocation_domain)(int cpu);
61
62#ifdef CONFIG_SMP
63 /* ipi */
64 void (*send_IPI_mask)(cpumask_t mask, int vector);
65 void (*send_IPI_allbutself)(int vector);
66 void (*send_IPI_all)(int vector);
67#endif
68};
69
70#define APICFUNC(x) .x = x,
71
72/* More functions could be probably marked IPIFUNC and save some space
73 in UP GENERICARCH kernels, but I don't have the nerve right now
74 to untangle this mess. -AK */
75#ifdef CONFIG_SMP
76#define IPIFUNC(x) APICFUNC(x)
77#else
78#define IPIFUNC(x)
79#endif
80
81#define APIC_INIT(aname, aprobe) \
82{ \
83 .name = aname, \
84 .probe = aprobe, \
85 .int_delivery_mode = INT_DELIVERY_MODE, \
86 .int_dest_mode = INT_DEST_MODE, \
87 .no_balance_irq = NO_BALANCE_IRQ, \
88 .ESR_DISABLE = esr_disable, \
89 .apic_destination_logical = APIC_DEST_LOGICAL, \
90 APICFUNC(apic_id_registered) \
91 APICFUNC(target_cpus) \
92 APICFUNC(check_apicid_used) \
93 APICFUNC(check_apicid_present) \
94 APICFUNC(init_apic_ldr) \
95 APICFUNC(ioapic_phys_id_map) \
96 APICFUNC(setup_apic_routing) \
97 APICFUNC(multi_timer_check) \
98 APICFUNC(apicid_to_node) \
99 APICFUNC(cpu_to_logical_apicid) \
100 APICFUNC(cpu_present_to_apicid) \
101 APICFUNC(apicid_to_cpu_present) \
102 APICFUNC(setup_portio_remap) \
103 APICFUNC(check_phys_apicid_present) \
104 APICFUNC(mps_oem_check) \
105 APICFUNC(get_apic_id) \
106 .apic_id_mask = APIC_ID_MASK, \
107 APICFUNC(cpu_mask_to_apicid) \
108 APICFUNC(vector_allocation_domain) \
109 APICFUNC(acpi_madt_oem_check) \
110 IPIFUNC(send_IPI_mask) \
111 IPIFUNC(send_IPI_allbutself) \
112 IPIFUNC(send_IPI_all) \
113 APICFUNC(enable_apic_mode) \
114 APICFUNC(phys_pkg_id) \
115}
116
117extern struct genapic *genapic;
118
119enum uv_system_type {UV_NONE, UV_LEGACY_APIC, UV_X2APIC, UV_NON_UNIQUE_APIC};
120#define get_uv_system_type() UV_NONE
121#define is_uv_system() 0
122#define uv_wakeup_secondary(a, b) 1
123#define uv_system_init() do {} while (0)
124
125
126#endif /* _ASM_X86_GENAPIC_32_H */
diff --git a/arch/x86/include/asm/genapic_64.h b/arch/x86/include/asm/genapic_64.h
new file mode 100644
index 000000000000..13c4e96199ea
--- /dev/null
+++ b/arch/x86/include/asm/genapic_64.h
@@ -0,0 +1,58 @@
1#ifndef _ASM_X86_GENAPIC_64_H
2#define _ASM_X86_GENAPIC_64_H
3
4/*
5 * Copyright 2004 James Cleverdon, IBM.
6 * Subject to the GNU Public License, v.2
7 *
8 * Generic APIC sub-arch data struct.
9 *
10 * Hacked for x86-64 by James Cleverdon from i386 architecture code by
11 * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and
12 * James Cleverdon.
13 */
14
15struct genapic {
16 char *name;
17 int (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id);
18 u32 int_delivery_mode;
19 u32 int_dest_mode;
20 int (*apic_id_registered)(void);
21 cpumask_t (*target_cpus)(void);
22 cpumask_t (*vector_allocation_domain)(int cpu);
23 void (*init_apic_ldr)(void);
24 /* ipi */
25 void (*send_IPI_mask)(cpumask_t mask, int vector);
26 void (*send_IPI_allbutself)(int vector);
27 void (*send_IPI_all)(int vector);
28 void (*send_IPI_self)(int vector);
29 /* */
30 unsigned int (*cpu_mask_to_apicid)(cpumask_t cpumask);
31 unsigned int (*phys_pkg_id)(int index_msb);
32 unsigned int (*get_apic_id)(unsigned long x);
33 unsigned long (*set_apic_id)(unsigned int id);
34 unsigned long apic_id_mask;
35};
36
37extern struct genapic *genapic;
38
39extern struct genapic apic_flat;
40extern struct genapic apic_physflat;
41extern struct genapic apic_x2apic_cluster;
42extern struct genapic apic_x2apic_phys;
43extern int acpi_madt_oem_check(char *, char *);
44
45extern void apic_send_IPI_self(int vector);
46enum uv_system_type {UV_NONE, UV_LEGACY_APIC, UV_X2APIC, UV_NON_UNIQUE_APIC};
47extern enum uv_system_type get_uv_system_type(void);
48extern int is_uv_system(void);
49
50extern struct genapic apic_x2apic_uv_x;
51DECLARE_PER_CPU(int, x2apic_extra_bits);
52extern void uv_cpu_init(void);
53extern void uv_system_init(void);
54extern int uv_wakeup_secondary(int phys_apicid, unsigned int start_rip);
55
56extern void setup_apic_routing(void);
57
58#endif /* _ASM_X86_GENAPIC_64_H */
diff --git a/arch/x86/include/asm/geode.h b/arch/x86/include/asm/geode.h
new file mode 100644
index 000000000000..ad3c2ed75481
--- /dev/null
+++ b/arch/x86/include/asm/geode.h
@@ -0,0 +1,253 @@
1/*
2 * AMD Geode definitions
3 * Copyright (C) 2006, Advanced Micro Devices, Inc.
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 2 of the GNU General Public License
7 * as published by the Free Software Foundation.
8 */
9
10#ifndef _ASM_X86_GEODE_H
11#define _ASM_X86_GEODE_H
12
13#include <asm/processor.h>
14#include <linux/io.h>
15
16/* Generic southbridge functions */
17
18#define GEODE_DEV_PMS 0
19#define GEODE_DEV_ACPI 1
20#define GEODE_DEV_GPIO 2
21#define GEODE_DEV_MFGPT 3
22
23extern int geode_get_dev_base(unsigned int dev);
24
25/* Useful macros */
26#define geode_pms_base() geode_get_dev_base(GEODE_DEV_PMS)
27#define geode_acpi_base() geode_get_dev_base(GEODE_DEV_ACPI)
28#define geode_gpio_base() geode_get_dev_base(GEODE_DEV_GPIO)
29#define geode_mfgpt_base() geode_get_dev_base(GEODE_DEV_MFGPT)
30
31/* MSRS */
32
33#define MSR_GLIU_P2D_RO0 0x10000029
34
35#define MSR_LX_GLD_MSR_CONFIG 0x48002001
36#define MSR_LX_MSR_PADSEL 0x48002011 /* NOT 0x48000011; the data
37 * sheet has the wrong value */
38#define MSR_GLCP_SYS_RSTPLL 0x4C000014
39#define MSR_GLCP_DOTPLL 0x4C000015
40
41#define MSR_LBAR_SMB 0x5140000B
42#define MSR_LBAR_GPIO 0x5140000C
43#define MSR_LBAR_MFGPT 0x5140000D
44#define MSR_LBAR_ACPI 0x5140000E
45#define MSR_LBAR_PMS 0x5140000F
46
47#define MSR_DIVIL_SOFT_RESET 0x51400017
48
49#define MSR_PIC_YSEL_LOW 0x51400020
50#define MSR_PIC_YSEL_HIGH 0x51400021
51#define MSR_PIC_ZSEL_LOW 0x51400022
52#define MSR_PIC_ZSEL_HIGH 0x51400023
53#define MSR_PIC_IRQM_LPC 0x51400025
54
55#define MSR_MFGPT_IRQ 0x51400028
56#define MSR_MFGPT_NR 0x51400029
57#define MSR_MFGPT_SETUP 0x5140002B
58
59#define MSR_LX_SPARE_MSR 0x80000011 /* DC-specific */
60
61#define MSR_GX_GLD_MSR_CONFIG 0xC0002001
62#define MSR_GX_MSR_PADSEL 0xC0002011
63
64/* Resource Sizes */
65
66#define LBAR_GPIO_SIZE 0xFF
67#define LBAR_MFGPT_SIZE 0x40
68#define LBAR_ACPI_SIZE 0x40
69#define LBAR_PMS_SIZE 0x80
70
71/* ACPI registers (PMS block) */
72
73/*
74 * PM1_EN is only valid when VSA is enabled for 16 bit reads.
75 * When VSA is not enabled, *always* read both PM1_STS and PM1_EN
76 * with a 32 bit read at offset 0x0
77 */
78
79#define PM1_STS 0x00
80#define PM1_EN 0x02
81#define PM1_CNT 0x08
82#define PM2_CNT 0x0C
83#define PM_TMR 0x10
84#define PM_GPE0_STS 0x18
85#define PM_GPE0_EN 0x1C
86
87/* PMC registers (PMS block) */
88
89#define PM_SSD 0x00
90#define PM_SCXA 0x04
91#define PM_SCYA 0x08
92#define PM_OUT_SLPCTL 0x0C
93#define PM_SCLK 0x10
94#define PM_SED 0x1
95#define PM_SCXD 0x18
96#define PM_SCYD 0x1C
97#define PM_IN_SLPCTL 0x20
98#define PM_WKD 0x30
99#define PM_WKXD 0x34
100#define PM_RD 0x38
101#define PM_WKXA 0x3C
102#define PM_FSD 0x40
103#define PM_TSD 0x44
104#define PM_PSD 0x48
105#define PM_NWKD 0x4C
106#define PM_AWKD 0x50
107#define PM_SSC 0x54
108
109/* VSA2 magic values */
110
111#define VSA_VRC_INDEX 0xAC1C
112#define VSA_VRC_DATA 0xAC1E
113#define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */
114#define VSA_VR_SIGNATURE 0x0003
115#define VSA_VR_MEM_SIZE 0x0200
116#define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */
117#define GSW_VSA_SIG 0x534d /* General Software signature */
118/* GPIO */
119
120#define GPIO_OUTPUT_VAL 0x00
121#define GPIO_OUTPUT_ENABLE 0x04
122#define GPIO_OUTPUT_OPEN_DRAIN 0x08
123#define GPIO_OUTPUT_INVERT 0x0C
124#define GPIO_OUTPUT_AUX1 0x10
125#define GPIO_OUTPUT_AUX2 0x14
126#define GPIO_PULL_UP 0x18
127#define GPIO_PULL_DOWN 0x1C
128#define GPIO_INPUT_ENABLE 0x20
129#define GPIO_INPUT_INVERT 0x24
130#define GPIO_INPUT_FILTER 0x28
131#define GPIO_INPUT_EVENT_COUNT 0x2C
132#define GPIO_READ_BACK 0x30
133#define GPIO_INPUT_AUX1 0x34
134#define GPIO_EVENTS_ENABLE 0x38
135#define GPIO_LOCK_ENABLE 0x3C
136#define GPIO_POSITIVE_EDGE_EN 0x40
137#define GPIO_NEGATIVE_EDGE_EN 0x44
138#define GPIO_POSITIVE_EDGE_STS 0x48
139#define GPIO_NEGATIVE_EDGE_STS 0x4C
140
141#define GPIO_MAP_X 0xE0
142#define GPIO_MAP_Y 0xE4
143#define GPIO_MAP_Z 0xE8
144#define GPIO_MAP_W 0xEC
145
146static inline u32 geode_gpio(unsigned int nr)
147{
148 BUG_ON(nr > 28);
149 return 1 << nr;
150}
151
152extern void geode_gpio_set(u32, unsigned int);
153extern void geode_gpio_clear(u32, unsigned int);
154extern int geode_gpio_isset(u32, unsigned int);
155extern void geode_gpio_setup_event(unsigned int, int, int);
156extern void geode_gpio_set_irq(unsigned int, unsigned int);
157
158static inline void geode_gpio_event_irq(unsigned int gpio, int pair)
159{
160 geode_gpio_setup_event(gpio, pair, 0);
161}
162
163static inline void geode_gpio_event_pme(unsigned int gpio, int pair)
164{
165 geode_gpio_setup_event(gpio, pair, 1);
166}
167
168/* Specific geode tests */
169
170static inline int is_geode_gx(void)
171{
172 return ((boot_cpu_data.x86_vendor == X86_VENDOR_NSC) &&
173 (boot_cpu_data.x86 == 5) &&
174 (boot_cpu_data.x86_model == 5));
175}
176
177static inline int is_geode_lx(void)
178{
179 return ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) &&
180 (boot_cpu_data.x86 == 5) &&
181 (boot_cpu_data.x86_model == 10));
182}
183
184static inline int is_geode(void)
185{
186 return (is_geode_gx() || is_geode_lx());
187}
188
189#ifdef CONFIG_MGEODE_LX
190extern int geode_has_vsa2(void);
191#else
192static inline int geode_has_vsa2(void)
193{
194 return 0;
195}
196#endif
197
198/* MFGPTs */
199
200#define MFGPT_MAX_TIMERS 8
201#define MFGPT_TIMER_ANY (-1)
202
203#define MFGPT_DOMAIN_WORKING 1
204#define MFGPT_DOMAIN_STANDBY 2
205#define MFGPT_DOMAIN_ANY (MFGPT_DOMAIN_WORKING | MFGPT_DOMAIN_STANDBY)
206
207#define MFGPT_CMP1 0
208#define MFGPT_CMP2 1
209
210#define MFGPT_EVENT_IRQ 0
211#define MFGPT_EVENT_NMI 1
212#define MFGPT_EVENT_RESET 3
213
214#define MFGPT_REG_CMP1 0
215#define MFGPT_REG_CMP2 2
216#define MFGPT_REG_COUNTER 4
217#define MFGPT_REG_SETUP 6
218
219#define MFGPT_SETUP_CNTEN (1 << 15)
220#define MFGPT_SETUP_CMP2 (1 << 14)
221#define MFGPT_SETUP_CMP1 (1 << 13)
222#define MFGPT_SETUP_SETUP (1 << 12)
223#define MFGPT_SETUP_STOPEN (1 << 11)
224#define MFGPT_SETUP_EXTEN (1 << 10)
225#define MFGPT_SETUP_REVEN (1 << 5)
226#define MFGPT_SETUP_CLKSEL (1 << 4)
227
228static inline void geode_mfgpt_write(int timer, u16 reg, u16 value)
229{
230 u32 base = geode_get_dev_base(GEODE_DEV_MFGPT);
231 outw(value, base + reg + (timer * 8));
232}
233
234static inline u16 geode_mfgpt_read(int timer, u16 reg)
235{
236 u32 base = geode_get_dev_base(GEODE_DEV_MFGPT);
237 return inw(base + reg + (timer * 8));
238}
239
240extern int geode_mfgpt_toggle_event(int timer, int cmp, int event, int enable);
241extern int geode_mfgpt_set_irq(int timer, int cmp, int *irq, int enable);
242extern int geode_mfgpt_alloc_timer(int timer, int domain);
243
244#define geode_mfgpt_setup_irq(t, c, i) geode_mfgpt_set_irq((t), (c), (i), 1)
245#define geode_mfgpt_release_irq(t, c, i) geode_mfgpt_set_irq((t), (c), (i), 0)
246
247#ifdef CONFIG_GEODE_MFGPT_TIMER
248extern int __init mfgpt_timer_setup(void);
249#else
250static inline int mfgpt_timer_setup(void) { return 0; }
251#endif
252
253#endif /* _ASM_X86_GEODE_H */
diff --git a/arch/x86/include/asm/gpio.h b/arch/x86/include/asm/gpio.h
new file mode 100644
index 000000000000..49dbfdfa50f9
--- /dev/null
+++ b/arch/x86/include/asm/gpio.h
@@ -0,0 +1,56 @@
1/*
2 * Generic GPIO API implementation for x86.
3 *
4 * Derived from the generic GPIO API for powerpc:
5 *
6 * Copyright (c) 2007-2008 MontaVista Software, Inc.
7 *
8 * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 */
15
16#ifndef _ASM_X86_GPIO_H
17#define _ASM_X86_GPIO_H
18
19#include <asm-generic/gpio.h>
20
21#ifdef CONFIG_GPIOLIB
22
23/*
24 * Just call gpiolib.
25 */
26static inline int gpio_get_value(unsigned int gpio)
27{
28 return __gpio_get_value(gpio);
29}
30
31static inline void gpio_set_value(unsigned int gpio, int value)
32{
33 __gpio_set_value(gpio, value);
34}
35
36static inline int gpio_cansleep(unsigned int gpio)
37{
38 return __gpio_cansleep(gpio);
39}
40
41/*
42 * Not implemented, yet.
43 */
44static inline int gpio_to_irq(unsigned int gpio)
45{
46 return -ENOSYS;
47}
48
49static inline int irq_to_gpio(unsigned int irq)
50{
51 return -EINVAL;
52}
53
54#endif /* CONFIG_GPIOLIB */
55
56#endif /* _ASM_X86_GPIO_H */
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h
new file mode 100644
index 000000000000..000787df66e6
--- /dev/null
+++ b/arch/x86/include/asm/hardirq.h
@@ -0,0 +1,11 @@
1#ifdef CONFIG_X86_32
2# include "hardirq_32.h"
3#else
4# include "hardirq_64.h"
5#endif
6
7extern u64 arch_irq_stat_cpu(unsigned int cpu);
8#define arch_irq_stat_cpu arch_irq_stat_cpu
9
10extern u64 arch_irq_stat(void);
11#define arch_irq_stat arch_irq_stat
diff --git a/arch/x86/include/asm/hardirq_32.h b/arch/x86/include/asm/hardirq_32.h
new file mode 100644
index 000000000000..5ca135e72f2b
--- /dev/null
+++ b/arch/x86/include/asm/hardirq_32.h
@@ -0,0 +1,28 @@
1#ifndef _ASM_X86_HARDIRQ_32_H
2#define _ASM_X86_HARDIRQ_32_H
3
4#include <linux/threads.h>
5#include <linux/irq.h>
6
7typedef struct {
8 unsigned int __softirq_pending;
9 unsigned long idle_timestamp;
10 unsigned int __nmi_count; /* arch dependent */
11 unsigned int apic_timer_irqs; /* arch dependent */
12 unsigned int irq0_irqs;
13 unsigned int irq_resched_count;
14 unsigned int irq_call_count;
15 unsigned int irq_tlb_count;
16 unsigned int irq_thermal_count;
17 unsigned int irq_spurious_count;
18} ____cacheline_aligned irq_cpustat_t;
19
20DECLARE_PER_CPU(irq_cpustat_t, irq_stat);
21
22#define __ARCH_IRQ_STAT
23#define __IRQ_STAT(cpu, member) (per_cpu(irq_stat, cpu).member)
24
25void ack_bad_irq(unsigned int irq);
26#include <linux/irq_cpustat.h>
27
28#endif /* _ASM_X86_HARDIRQ_32_H */
diff --git a/arch/x86/include/asm/hardirq_64.h b/arch/x86/include/asm/hardirq_64.h
new file mode 100644
index 000000000000..1ba381fc51d3
--- /dev/null
+++ b/arch/x86/include/asm/hardirq_64.h
@@ -0,0 +1,23 @@
1#ifndef _ASM_X86_HARDIRQ_64_H
2#define _ASM_X86_HARDIRQ_64_H
3
4#include <linux/threads.h>
5#include <linux/irq.h>
6#include <asm/pda.h>
7#include <asm/apic.h>
8
9/* We can have at most NR_VECTORS irqs routed to a cpu at a time */
10#define MAX_HARDIRQS_PER_CPU NR_VECTORS
11
12#define __ARCH_IRQ_STAT 1
13
14#define local_softirq_pending() read_pda(__softirq_pending)
15
16#define __ARCH_SET_SOFTIRQ_PENDING 1
17
18#define set_softirq_pending(x) write_pda(__softirq_pending, (x))
19#define or_softirq_pending(x) or_pda(__softirq_pending, (x))
20
21extern void ack_bad_irq(unsigned int irq);
22
23#endif /* _ASM_X86_HARDIRQ_64_H */
diff --git a/arch/x86/include/asm/highmem.h b/arch/x86/include/asm/highmem.h
new file mode 100644
index 000000000000..a3b3b7c3027b
--- /dev/null
+++ b/arch/x86/include/asm/highmem.h
@@ -0,0 +1,82 @@
1/*
2 * highmem.h: virtual kernel memory mappings for high memory
3 *
4 * Used in CONFIG_HIGHMEM systems for memory pages which
5 * are not addressable by direct kernel virtual addresses.
6 *
7 * Copyright (C) 1999 Gerhard Wichert, Siemens AG
8 * Gerhard.Wichert@pdb.siemens.de
9 *
10 *
11 * Redesigned the x86 32-bit VM architecture to deal with
12 * up to 16 Terabyte physical memory. With current x86 CPUs
13 * we now support up to 64 Gigabytes physical RAM.
14 *
15 * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
16 */
17
18#ifndef _ASM_X86_HIGHMEM_H
19#define _ASM_X86_HIGHMEM_H
20
21#ifdef __KERNEL__
22
23#include <linux/interrupt.h>
24#include <linux/threads.h>
25#include <asm/kmap_types.h>
26#include <asm/tlbflush.h>
27#include <asm/paravirt.h>
28
29/* declarations for highmem.c */
30extern unsigned long highstart_pfn, highend_pfn;
31
32extern pte_t *kmap_pte;
33extern pgprot_t kmap_prot;
34extern pte_t *pkmap_page_table;
35
36/*
37 * Right now we initialize only a single pte table. It can be extended
38 * easily, subsequent pte tables have to be allocated in one physical
39 * chunk of RAM.
40 */
41/*
42 * Ordering is:
43 *
44 * FIXADDR_TOP
45 * fixed_addresses
46 * FIXADDR_START
47 * temp fixed addresses
48 * FIXADDR_BOOT_START
49 * Persistent kmap area
50 * PKMAP_BASE
51 * VMALLOC_END
52 * Vmalloc area
53 * VMALLOC_START
54 * high_memory
55 */
56#define LAST_PKMAP_MASK (LAST_PKMAP-1)
57#define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT)
58#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
59
60extern void *kmap_high(struct page *page);
61extern void kunmap_high(struct page *page);
62
63void *kmap(struct page *page);
64void kunmap(struct page *page);
65void *kmap_atomic_prot(struct page *page, enum km_type type, pgprot_t prot);
66void *kmap_atomic(struct page *page, enum km_type type);
67void kunmap_atomic(void *kvaddr, enum km_type type);
68void *kmap_atomic_pfn(unsigned long pfn, enum km_type type);
69struct page *kmap_atomic_to_page(void *ptr);
70
71#ifndef CONFIG_PARAVIRT
72#define kmap_atomic_pte(page, type) kmap_atomic(page, type)
73#endif
74
75#define flush_cache_kmaps() do { } while (0)
76
77extern void add_highpages_with_active_regions(int nid, unsigned long start_pfn,
78 unsigned long end_pfn);
79
80#endif /* __KERNEL__ */
81
82#endif /* _ASM_X86_HIGHMEM_H */
diff --git a/arch/x86/include/asm/hpet.h b/arch/x86/include/asm/hpet.h
new file mode 100644
index 000000000000..1c22cb05ad6a
--- /dev/null
+++ b/arch/x86/include/asm/hpet.h
@@ -0,0 +1,114 @@
1#ifndef _ASM_X86_HPET_H
2#define _ASM_X86_HPET_H
3
4#include <linux/msi.h>
5
6#ifdef CONFIG_HPET_TIMER
7
8#define HPET_MMAP_SIZE 1024
9
10#define HPET_ID 0x000
11#define HPET_PERIOD 0x004
12#define HPET_CFG 0x010
13#define HPET_STATUS 0x020
14#define HPET_COUNTER 0x0f0
15
16#define HPET_Tn_CFG(n) (0x100 + 0x20 * n)
17#define HPET_Tn_CMP(n) (0x108 + 0x20 * n)
18#define HPET_Tn_ROUTE(n) (0x110 + 0x20 * n)
19
20#define HPET_T0_CFG 0x100
21#define HPET_T0_CMP 0x108
22#define HPET_T0_ROUTE 0x110
23#define HPET_T1_CFG 0x120
24#define HPET_T1_CMP 0x128
25#define HPET_T1_ROUTE 0x130
26#define HPET_T2_CFG 0x140
27#define HPET_T2_CMP 0x148
28#define HPET_T2_ROUTE 0x150
29
30#define HPET_ID_REV 0x000000ff
31#define HPET_ID_NUMBER 0x00001f00
32#define HPET_ID_64BIT 0x00002000
33#define HPET_ID_LEGSUP 0x00008000
34#define HPET_ID_VENDOR 0xffff0000
35#define HPET_ID_NUMBER_SHIFT 8
36#define HPET_ID_VENDOR_SHIFT 16
37
38#define HPET_ID_VENDOR_8086 0x8086
39
40#define HPET_CFG_ENABLE 0x001
41#define HPET_CFG_LEGACY 0x002
42#define HPET_LEGACY_8254 2
43#define HPET_LEGACY_RTC 8
44
45#define HPET_TN_LEVEL 0x0002
46#define HPET_TN_ENABLE 0x0004
47#define HPET_TN_PERIODIC 0x0008
48#define HPET_TN_PERIODIC_CAP 0x0010
49#define HPET_TN_64BIT_CAP 0x0020
50#define HPET_TN_SETVAL 0x0040
51#define HPET_TN_32BIT 0x0100
52#define HPET_TN_ROUTE 0x3e00
53#define HPET_TN_FSB 0x4000
54#define HPET_TN_FSB_CAP 0x8000
55#define HPET_TN_ROUTE_SHIFT 9
56
57/* Max HPET Period is 10^8 femto sec as in HPET spec */
58#define HPET_MAX_PERIOD 100000000UL
59/*
60 * Min HPET period is 10^5 femto sec just for safety. If it is less than this,
61 * then 32 bit HPET counter wrapsaround in less than 0.5 sec.
62 */
63#define HPET_MIN_PERIOD 100000UL
64
65/* hpet memory map physical address */
66extern unsigned long hpet_address;
67extern unsigned long force_hpet_address;
68extern int hpet_force_user;
69extern int is_hpet_enabled(void);
70extern int hpet_enable(void);
71extern void hpet_disable(void);
72extern unsigned long hpet_readl(unsigned long a);
73extern void force_hpet_resume(void);
74
75extern void hpet_msi_unmask(unsigned int irq);
76extern void hpet_msi_mask(unsigned int irq);
77extern void hpet_msi_write(unsigned int irq, struct msi_msg *msg);
78extern void hpet_msi_read(unsigned int irq, struct msi_msg *msg);
79
80#ifdef CONFIG_PCI_MSI
81extern int arch_setup_hpet_msi(unsigned int irq);
82#else
83static inline int arch_setup_hpet_msi(unsigned int irq)
84{
85 return -EINVAL;
86}
87#endif
88
89#ifdef CONFIG_HPET_EMULATE_RTC
90
91#include <linux/interrupt.h>
92
93typedef irqreturn_t (*rtc_irq_handler)(int interrupt, void *cookie);
94extern int hpet_mask_rtc_irq_bit(unsigned long bit_mask);
95extern int hpet_set_rtc_irq_bit(unsigned long bit_mask);
96extern int hpet_set_alarm_time(unsigned char hrs, unsigned char min,
97 unsigned char sec);
98extern int hpet_set_periodic_freq(unsigned long freq);
99extern int hpet_rtc_dropped_irq(void);
100extern int hpet_rtc_timer_init(void);
101extern irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id);
102extern int hpet_register_irq_handler(rtc_irq_handler handler);
103extern void hpet_unregister_irq_handler(rtc_irq_handler handler);
104
105#endif /* CONFIG_HPET_EMULATE_RTC */
106
107#else /* CONFIG_HPET_TIMER */
108
109static inline int hpet_enable(void) { return 0; }
110static inline int is_hpet_enabled(void) { return 0; }
111#define hpet_readl(a) 0
112
113#endif
114#endif /* _ASM_X86_HPET_H */
diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h
new file mode 100644
index 000000000000..439a9acc132d
--- /dev/null
+++ b/arch/x86/include/asm/hugetlb.h
@@ -0,0 +1,93 @@
1#ifndef _ASM_X86_HUGETLB_H
2#define _ASM_X86_HUGETLB_H
3
4#include <asm/page.h>
5
6
7static inline int is_hugepage_only_range(struct mm_struct *mm,
8 unsigned long addr,
9 unsigned long len) {
10 return 0;
11}
12
13/*
14 * If the arch doesn't supply something else, assume that hugepage
15 * size aligned regions are ok without further preparation.
16 */
17static inline int prepare_hugepage_range(struct file *file,
18 unsigned long addr, unsigned long len)
19{
20 struct hstate *h = hstate_file(file);
21 if (len & ~huge_page_mask(h))
22 return -EINVAL;
23 if (addr & ~huge_page_mask(h))
24 return -EINVAL;
25 return 0;
26}
27
28static inline void hugetlb_prefault_arch_hook(struct mm_struct *mm) {
29}
30
31static inline void hugetlb_free_pgd_range(struct mmu_gather *tlb,
32 unsigned long addr, unsigned long end,
33 unsigned long floor,
34 unsigned long ceiling)
35{
36 free_pgd_range(tlb, addr, end, floor, ceiling);
37}
38
39static inline void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
40 pte_t *ptep, pte_t pte)
41{
42 set_pte_at(mm, addr, ptep, pte);
43}
44
45static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
46 unsigned long addr, pte_t *ptep)
47{
48 return ptep_get_and_clear(mm, addr, ptep);
49}
50
51static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
52 unsigned long addr, pte_t *ptep)
53{
54}
55
56static inline int huge_pte_none(pte_t pte)
57{
58 return pte_none(pte);
59}
60
61static inline pte_t huge_pte_wrprotect(pte_t pte)
62{
63 return pte_wrprotect(pte);
64}
65
66static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
67 unsigned long addr, pte_t *ptep)
68{
69 ptep_set_wrprotect(mm, addr, ptep);
70}
71
72static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
73 unsigned long addr, pte_t *ptep,
74 pte_t pte, int dirty)
75{
76 return ptep_set_access_flags(vma, addr, ptep, pte, dirty);
77}
78
79static inline pte_t huge_ptep_get(pte_t *ptep)
80{
81 return *ptep;
82}
83
84static inline int arch_prepare_hugepage(struct page *page)
85{
86 return 0;
87}
88
89static inline void arch_release_hugepage(struct page *page)
90{
91}
92
93#endif /* _ASM_X86_HUGETLB_H */
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
new file mode 100644
index 000000000000..b97aecb0b61d
--- /dev/null
+++ b/arch/x86/include/asm/hw_irq.h
@@ -0,0 +1,131 @@
1#ifndef _ASM_X86_HW_IRQ_H
2#define _ASM_X86_HW_IRQ_H
3
4/*
5 * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
6 *
7 * moved some of the old arch/i386/kernel/irq.h to here. VY
8 *
9 * IRQ/IPI changes taken from work by Thomas Radke
10 * <tomsoft@informatik.tu-chemnitz.de>
11 *
12 * hacked by Andi Kleen for x86-64.
13 * unified by tglx
14 */
15
16#include <asm/irq_vectors.h>
17
18#ifndef __ASSEMBLY__
19
20#include <linux/percpu.h>
21#include <linux/profile.h>
22#include <linux/smp.h>
23
24#include <asm/atomic.h>
25#include <asm/irq.h>
26#include <asm/sections.h>
27
28#define platform_legacy_irq(irq) ((irq) < 16)
29
30/* Interrupt handlers registered during init_IRQ */
31extern void apic_timer_interrupt(void);
32extern void error_interrupt(void);
33extern void spurious_interrupt(void);
34extern void thermal_interrupt(void);
35extern void reschedule_interrupt(void);
36
37extern void invalidate_interrupt(void);
38extern void invalidate_interrupt0(void);
39extern void invalidate_interrupt1(void);
40extern void invalidate_interrupt2(void);
41extern void invalidate_interrupt3(void);
42extern void invalidate_interrupt4(void);
43extern void invalidate_interrupt5(void);
44extern void invalidate_interrupt6(void);
45extern void invalidate_interrupt7(void);
46
47extern void irq_move_cleanup_interrupt(void);
48extern void threshold_interrupt(void);
49
50extern void call_function_interrupt(void);
51extern void call_function_single_interrupt(void);
52
53/* PIC specific functions */
54extern void disable_8259A_irq(unsigned int irq);
55extern void enable_8259A_irq(unsigned int irq);
56extern int i8259A_irq_pending(unsigned int irq);
57extern void make_8259A_irq(unsigned int irq);
58extern void init_8259A(int aeoi);
59
60/* IOAPIC */
61#define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs))
62extern unsigned long io_apic_irqs;
63
64extern void init_VISWS_APIC_irqs(void);
65extern void setup_IO_APIC(void);
66extern void disable_IO_APIC(void);
67extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn);
68extern void setup_ioapic_dest(void);
69
70#ifdef CONFIG_X86_64
71extern void enable_IO_APIC(void);
72#endif
73
74/* IPI functions */
75#ifdef CONFIG_X86_32
76extern void send_IPI_self(int vector);
77#endif
78extern void send_IPI(int dest, int vector);
79
80/* Statistics */
81extern atomic_t irq_err_count;
82extern atomic_t irq_mis_count;
83
84/* EISA */
85extern void eisa_set_level_irq(unsigned int irq);
86
87/* Voyager functions */
88extern asmlinkage void vic_cpi_interrupt(void);
89extern asmlinkage void vic_sys_interrupt(void);
90extern asmlinkage void vic_cmn_interrupt(void);
91extern asmlinkage void qic_timer_interrupt(void);
92extern asmlinkage void qic_invalidate_interrupt(void);
93extern asmlinkage void qic_reschedule_interrupt(void);
94extern asmlinkage void qic_enable_irq_interrupt(void);
95extern asmlinkage void qic_call_function_interrupt(void);
96
97/* SMP */
98extern void smp_apic_timer_interrupt(struct pt_regs *);
99extern void smp_spurious_interrupt(struct pt_regs *);
100extern void smp_error_interrupt(struct pt_regs *);
101#ifdef CONFIG_X86_SMP
102extern void smp_reschedule_interrupt(struct pt_regs *);
103extern void smp_call_function_interrupt(struct pt_regs *);
104extern void smp_call_function_single_interrupt(struct pt_regs *);
105#ifdef CONFIG_X86_32
106extern void smp_invalidate_interrupt(struct pt_regs *);
107#else
108extern asmlinkage void smp_invalidate_interrupt(struct pt_regs *);
109#endif
110#endif
111
112#ifdef CONFIG_X86_32
113extern void (*const interrupt[NR_VECTORS])(void);
114#endif
115
116typedef int vector_irq_t[NR_VECTORS];
117DECLARE_PER_CPU(vector_irq_t, vector_irq);
118
119#ifdef CONFIG_X86_IO_APIC
120extern void lock_vector_lock(void);
121extern void unlock_vector_lock(void);
122extern void __setup_vector_irq(int cpu);
123#else
124static inline void lock_vector_lock(void) {}
125static inline void unlock_vector_lock(void) {}
126static inline void __setup_vector_irq(int cpu) {}
127#endif
128
129#endif /* !ASSEMBLY_ */
130
131#endif /* _ASM_X86_HW_IRQ_H */
diff --git a/arch/x86/include/asm/hypertransport.h b/arch/x86/include/asm/hypertransport.h
new file mode 100644
index 000000000000..334b1a885d9c
--- /dev/null
+++ b/arch/x86/include/asm/hypertransport.h
@@ -0,0 +1,45 @@
1#ifndef _ASM_X86_HYPERTRANSPORT_H
2#define _ASM_X86_HYPERTRANSPORT_H
3
4/*
5 * Constants for x86 Hypertransport Interrupts.
6 */
7
8#define HT_IRQ_LOW_BASE 0xf8000000
9
10#define HT_IRQ_LOW_VECTOR_SHIFT 16
11#define HT_IRQ_LOW_VECTOR_MASK 0x00ff0000
12#define HT_IRQ_LOW_VECTOR(v) \
13 (((v) << HT_IRQ_LOW_VECTOR_SHIFT) & HT_IRQ_LOW_VECTOR_MASK)
14
15#define HT_IRQ_LOW_DEST_ID_SHIFT 8
16#define HT_IRQ_LOW_DEST_ID_MASK 0x0000ff00
17#define HT_IRQ_LOW_DEST_ID(v) \
18 (((v) << HT_IRQ_LOW_DEST_ID_SHIFT) & HT_IRQ_LOW_DEST_ID_MASK)
19
20#define HT_IRQ_LOW_DM_PHYSICAL 0x0000000
21#define HT_IRQ_LOW_DM_LOGICAL 0x0000040
22
23#define HT_IRQ_LOW_RQEOI_EDGE 0x0000000
24#define HT_IRQ_LOW_RQEOI_LEVEL 0x0000020
25
26
27#define HT_IRQ_LOW_MT_FIXED 0x0000000
28#define HT_IRQ_LOW_MT_ARBITRATED 0x0000004
29#define HT_IRQ_LOW_MT_SMI 0x0000008
30#define HT_IRQ_LOW_MT_NMI 0x000000c
31#define HT_IRQ_LOW_MT_INIT 0x0000010
32#define HT_IRQ_LOW_MT_STARTUP 0x0000014
33#define HT_IRQ_LOW_MT_EXTINT 0x0000018
34#define HT_IRQ_LOW_MT_LINT1 0x000008c
35#define HT_IRQ_LOW_MT_LINT0 0x0000098
36
37#define HT_IRQ_LOW_IRQ_MASKED 0x0000001
38
39
40#define HT_IRQ_HIGH_DEST_ID_SHIFT 0
41#define HT_IRQ_HIGH_DEST_ID_MASK 0x00ffffff
42#define HT_IRQ_HIGH_DEST_ID(v) \
43 ((((v) >> 8) << HT_IRQ_HIGH_DEST_ID_SHIFT) & HT_IRQ_HIGH_DEST_ID_MASK)
44
45#endif /* _ASM_X86_HYPERTRANSPORT_H */
diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
new file mode 100644
index 000000000000..48f0004db8c9
--- /dev/null
+++ b/arch/x86/include/asm/i387.h
@@ -0,0 +1,400 @@
1/*
2 * Copyright (C) 1994 Linus Torvalds
3 *
4 * Pentium III FXSR, SSE support
5 * General FPU state handling cleanups
6 * Gareth Hughes <gareth@valinux.com>, May 2000
7 * x86-64 work by Andi Kleen 2002
8 */
9
10#ifndef _ASM_X86_I387_H
11#define _ASM_X86_I387_H
12
13#include <linux/sched.h>
14#include <linux/kernel_stat.h>
15#include <linux/regset.h>
16#include <linux/hardirq.h>
17#include <asm/asm.h>
18#include <asm/processor.h>
19#include <asm/sigcontext.h>
20#include <asm/user.h>
21#include <asm/uaccess.h>
22#include <asm/xsave.h>
23
24extern unsigned int sig_xstate_size;
25extern void fpu_init(void);
26extern void mxcsr_feature_mask_init(void);
27extern int init_fpu(struct task_struct *child);
28extern asmlinkage void math_state_restore(void);
29extern void init_thread_xstate(void);
30extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);
31
32extern user_regset_active_fn fpregs_active, xfpregs_active;
33extern user_regset_get_fn fpregs_get, xfpregs_get, fpregs_soft_get;
34extern user_regset_set_fn fpregs_set, xfpregs_set, fpregs_soft_set;
35
36extern struct _fpx_sw_bytes fx_sw_reserved;
37#ifdef CONFIG_IA32_EMULATION
38extern unsigned int sig_xstate_ia32_size;
39extern struct _fpx_sw_bytes fx_sw_reserved_ia32;
40struct _fpstate_ia32;
41struct _xstate_ia32;
42extern int save_i387_xstate_ia32(void __user *buf);
43extern int restore_i387_xstate_ia32(void __user *buf);
44#endif
45
46#define X87_FSW_ES (1 << 7) /* Exception Summary */
47
48#ifdef CONFIG_X86_64
49
50/* Ignore delayed exceptions from user space */
51static inline void tolerant_fwait(void)
52{
53 asm volatile("1: fwait\n"
54 "2:\n"
55 _ASM_EXTABLE(1b, 2b));
56}
57
58static inline int fxrstor_checking(struct i387_fxsave_struct *fx)
59{
60 int err;
61
62 asm volatile("1: rex64/fxrstor (%[fx])\n\t"
63 "2:\n"
64 ".section .fixup,\"ax\"\n"
65 "3: movl $-1,%[err]\n"
66 " jmp 2b\n"
67 ".previous\n"
68 _ASM_EXTABLE(1b, 3b)
69 : [err] "=r" (err)
70#if 0 /* See comment in __save_init_fpu() below. */
71 : [fx] "r" (fx), "m" (*fx), "0" (0));
72#else
73 : [fx] "cdaSDb" (fx), "m" (*fx), "0" (0));
74#endif
75 return err;
76}
77
78static inline int restore_fpu_checking(struct task_struct *tsk)
79{
80 if (task_thread_info(tsk)->status & TS_XSAVE)
81 return xrstor_checking(&tsk->thread.xstate->xsave);
82 else
83 return fxrstor_checking(&tsk->thread.xstate->fxsave);
84}
85
86/* AMD CPUs don't save/restore FDP/FIP/FOP unless an exception
87 is pending. Clear the x87 state here by setting it to fixed
88 values. The kernel data segment can be sometimes 0 and sometimes
89 new user value. Both should be ok.
90 Use the PDA as safe address because it should be already in L1. */
91static inline void clear_fpu_state(struct task_struct *tsk)
92{
93 struct xsave_struct *xstate = &tsk->thread.xstate->xsave;
94 struct i387_fxsave_struct *fx = &tsk->thread.xstate->fxsave;
95
96 /*
97 * xsave header may indicate the init state of the FP.
98 */
99 if ((task_thread_info(tsk)->status & TS_XSAVE) &&
100 !(xstate->xsave_hdr.xstate_bv & XSTATE_FP))
101 return;
102
103 if (unlikely(fx->swd & X87_FSW_ES))
104 asm volatile("fnclex");
105 alternative_input(ASM_NOP8 ASM_NOP2,
106 " emms\n" /* clear stack tags */
107 " fildl %%gs:0", /* load to clear state */
108 X86_FEATURE_FXSAVE_LEAK);
109}
110
111static inline int fxsave_user(struct i387_fxsave_struct __user *fx)
112{
113 int err;
114
115 asm volatile("1: rex64/fxsave (%[fx])\n\t"
116 "2:\n"
117 ".section .fixup,\"ax\"\n"
118 "3: movl $-1,%[err]\n"
119 " jmp 2b\n"
120 ".previous\n"
121 _ASM_EXTABLE(1b, 3b)
122 : [err] "=r" (err), "=m" (*fx)
123#if 0 /* See comment in __fxsave_clear() below. */
124 : [fx] "r" (fx), "0" (0));
125#else
126 : [fx] "cdaSDb" (fx), "0" (0));
127#endif
128 if (unlikely(err) &&
129 __clear_user(fx, sizeof(struct i387_fxsave_struct)))
130 err = -EFAULT;
131 /* No need to clear here because the caller clears USED_MATH */
132 return err;
133}
134
135static inline void fxsave(struct task_struct *tsk)
136{
137 /* Using "rex64; fxsave %0" is broken because, if the memory operand
138 uses any extended registers for addressing, a second REX prefix
139 will be generated (to the assembler, rex64 followed by semicolon
140 is a separate instruction), and hence the 64-bitness is lost. */
141#if 0
142 /* Using "fxsaveq %0" would be the ideal choice, but is only supported
143 starting with gas 2.16. */
144 __asm__ __volatile__("fxsaveq %0"
145 : "=m" (tsk->thread.xstate->fxsave));
146#elif 0
147 /* Using, as a workaround, the properly prefixed form below isn't
148 accepted by any binutils version so far released, complaining that
149 the same type of prefix is used twice if an extended register is
150 needed for addressing (fix submitted to mainline 2005-11-21). */
151 __asm__ __volatile__("rex64/fxsave %0"
152 : "=m" (tsk->thread.xstate->fxsave));
153#else
154 /* This, however, we can work around by forcing the compiler to select
155 an addressing mode that doesn't require extended registers. */
156 __asm__ __volatile__("rex64/fxsave (%1)"
157 : "=m" (tsk->thread.xstate->fxsave)
158 : "cdaSDb" (&tsk->thread.xstate->fxsave));
159#endif
160}
161
162static inline void __save_init_fpu(struct task_struct *tsk)
163{
164 if (task_thread_info(tsk)->status & TS_XSAVE)
165 xsave(tsk);
166 else
167 fxsave(tsk);
168
169 clear_fpu_state(tsk);
170 task_thread_info(tsk)->status &= ~TS_USEDFPU;
171}
172
173#else /* CONFIG_X86_32 */
174
175extern void finit(void);
176
177static inline void tolerant_fwait(void)
178{
179 asm volatile("fnclex ; fwait");
180}
181
182static inline void restore_fpu(struct task_struct *tsk)
183{
184 if (task_thread_info(tsk)->status & TS_XSAVE) {
185 xrstor_checking(&tsk->thread.xstate->xsave);
186 return;
187 }
188 /*
189 * The "nop" is needed to make the instructions the same
190 * length.
191 */
192 alternative_input(
193 "nop ; frstor %1",
194 "fxrstor %1",
195 X86_FEATURE_FXSR,
196 "m" (tsk->thread.xstate->fxsave));
197}
198
199/* We need a safe address that is cheap to find and that is already
200 in L1 during context switch. The best choices are unfortunately
201 different for UP and SMP */
202#ifdef CONFIG_SMP
203#define safe_address (__per_cpu_offset[0])
204#else
205#define safe_address (kstat_cpu(0).cpustat.user)
206#endif
207
208/*
209 * These must be called with preempt disabled
210 */
211static inline void __save_init_fpu(struct task_struct *tsk)
212{
213 if (task_thread_info(tsk)->status & TS_XSAVE) {
214 struct xsave_struct *xstate = &tsk->thread.xstate->xsave;
215 struct i387_fxsave_struct *fx = &tsk->thread.xstate->fxsave;
216
217 xsave(tsk);
218
219 /*
220 * xsave header may indicate the init state of the FP.
221 */
222 if (!(xstate->xsave_hdr.xstate_bv & XSTATE_FP))
223 goto end;
224
225 if (unlikely(fx->swd & X87_FSW_ES))
226 asm volatile("fnclex");
227
228 /*
229 * we can do a simple return here or be paranoid :)
230 */
231 goto clear_state;
232 }
233
234 /* Use more nops than strictly needed in case the compiler
235 varies code */
236 alternative_input(
237 "fnsave %[fx] ;fwait;" GENERIC_NOP8 GENERIC_NOP4,
238 "fxsave %[fx]\n"
239 "bt $7,%[fsw] ; jnc 1f ; fnclex\n1:",
240 X86_FEATURE_FXSR,
241 [fx] "m" (tsk->thread.xstate->fxsave),
242 [fsw] "m" (tsk->thread.xstate->fxsave.swd) : "memory");
243clear_state:
244 /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
245 is pending. Clear the x87 state here by setting it to fixed
246 values. safe_address is a random variable that should be in L1 */
247 alternative_input(
248 GENERIC_NOP8 GENERIC_NOP2,
249 "emms\n\t" /* clear stack tags */
250 "fildl %[addr]", /* set F?P to defined value */
251 X86_FEATURE_FXSAVE_LEAK,
252 [addr] "m" (safe_address));
253end:
254 task_thread_info(tsk)->status &= ~TS_USEDFPU;
255}
256
257#endif /* CONFIG_X86_64 */
258
259/*
260 * Signal frame handlers...
261 */
262extern int save_i387_xstate(void __user *buf);
263extern int restore_i387_xstate(void __user *buf);
264
265static inline void __unlazy_fpu(struct task_struct *tsk)
266{
267 if (task_thread_info(tsk)->status & TS_USEDFPU) {
268 __save_init_fpu(tsk);
269 stts();
270 } else
271 tsk->fpu_counter = 0;
272}
273
274static inline void __clear_fpu(struct task_struct *tsk)
275{
276 if (task_thread_info(tsk)->status & TS_USEDFPU) {
277 tolerant_fwait();
278 task_thread_info(tsk)->status &= ~TS_USEDFPU;
279 stts();
280 }
281}
282
283static inline void kernel_fpu_begin(void)
284{
285 struct thread_info *me = current_thread_info();
286 preempt_disable();
287 if (me->status & TS_USEDFPU)
288 __save_init_fpu(me->task);
289 else
290 clts();
291}
292
293static inline void kernel_fpu_end(void)
294{
295 stts();
296 preempt_enable();
297}
298
299/*
300 * Some instructions like VIA's padlock instructions generate a spurious
301 * DNA fault but don't modify SSE registers. And these instructions
302 * get used from interrupt context aswell. To prevent these kernel instructions
303 * in interrupt context interact wrongly with other user/kernel fpu usage, we
304 * should use them only in the context of irq_ts_save/restore()
305 */
306static inline int irq_ts_save(void)
307{
308 /*
309 * If we are in process context, we are ok to take a spurious DNA fault.
310 * Otherwise, doing clts() in process context require pre-emption to
311 * be disabled or some heavy lifting like kernel_fpu_begin()
312 */
313 if (!in_interrupt())
314 return 0;
315
316 if (read_cr0() & X86_CR0_TS) {
317 clts();
318 return 1;
319 }
320
321 return 0;
322}
323
324static inline void irq_ts_restore(int TS_state)
325{
326 if (TS_state)
327 stts();
328}
329
330#ifdef CONFIG_X86_64
331
332static inline void save_init_fpu(struct task_struct *tsk)
333{
334 __save_init_fpu(tsk);
335 stts();
336}
337
338#define unlazy_fpu __unlazy_fpu
339#define clear_fpu __clear_fpu
340
341#else /* CONFIG_X86_32 */
342
343/*
344 * These disable preemption on their own and are safe
345 */
346static inline void save_init_fpu(struct task_struct *tsk)
347{
348 preempt_disable();
349 __save_init_fpu(tsk);
350 stts();
351 preempt_enable();
352}
353
354static inline void unlazy_fpu(struct task_struct *tsk)
355{
356 preempt_disable();
357 __unlazy_fpu(tsk);
358 preempt_enable();
359}
360
361static inline void clear_fpu(struct task_struct *tsk)
362{
363 preempt_disable();
364 __clear_fpu(tsk);
365 preempt_enable();
366}
367
368#endif /* CONFIG_X86_64 */
369
370/*
371 * i387 state interaction
372 */
373static inline unsigned short get_fpu_cwd(struct task_struct *tsk)
374{
375 if (cpu_has_fxsr) {
376 return tsk->thread.xstate->fxsave.cwd;
377 } else {
378 return (unsigned short)tsk->thread.xstate->fsave.cwd;
379 }
380}
381
382static inline unsigned short get_fpu_swd(struct task_struct *tsk)
383{
384 if (cpu_has_fxsr) {
385 return tsk->thread.xstate->fxsave.swd;
386 } else {
387 return (unsigned short)tsk->thread.xstate->fsave.swd;
388 }
389}
390
391static inline unsigned short get_fpu_mxcsr(struct task_struct *tsk)
392{
393 if (cpu_has_xmm) {
394 return tsk->thread.xstate->fxsave.mxcsr;
395 } else {
396 return MXCSR_DEFAULT;
397 }
398}
399
400#endif /* _ASM_X86_I387_H */
diff --git a/arch/x86/include/asm/i8253.h b/arch/x86/include/asm/i8253.h
new file mode 100644
index 000000000000..1edbf89680fd
--- /dev/null
+++ b/arch/x86/include/asm/i8253.h
@@ -0,0 +1,18 @@
1#ifndef _ASM_X86_I8253_H
2#define _ASM_X86_I8253_H
3
4/* i8253A PIT registers */
5#define PIT_MODE 0x43
6#define PIT_CH0 0x40
7#define PIT_CH2 0x42
8
9extern spinlock_t i8253_lock;
10
11extern struct clock_event_device *global_clock_event;
12
13extern void setup_pit_timer(void);
14
15#define inb_pit inb_p
16#define outb_pit outb_p
17
18#endif /* _ASM_X86_I8253_H */
diff --git a/arch/x86/include/asm/i8259.h b/arch/x86/include/asm/i8259.h
new file mode 100644
index 000000000000..58d7091eeb1f
--- /dev/null
+++ b/arch/x86/include/asm/i8259.h
@@ -0,0 +1,63 @@
1#ifndef _ASM_X86_I8259_H
2#define _ASM_X86_I8259_H
3
4#include <linux/delay.h>
5
6extern unsigned int cached_irq_mask;
7
8#define __byte(x, y) (((unsigned char *)&(y))[x])
9#define cached_master_mask (__byte(0, cached_irq_mask))
10#define cached_slave_mask (__byte(1, cached_irq_mask))
11
12/* i8259A PIC registers */
13#define PIC_MASTER_CMD 0x20
14#define PIC_MASTER_IMR 0x21
15#define PIC_MASTER_ISR PIC_MASTER_CMD
16#define PIC_MASTER_POLL PIC_MASTER_ISR
17#define PIC_MASTER_OCW3 PIC_MASTER_ISR
18#define PIC_SLAVE_CMD 0xa0
19#define PIC_SLAVE_IMR 0xa1
20
21/* i8259A PIC related value */
22#define PIC_CASCADE_IR 2
23#define MASTER_ICW4_DEFAULT 0x01
24#define SLAVE_ICW4_DEFAULT 0x01
25#define PIC_ICW4_AEOI 2
26
27extern spinlock_t i8259A_lock;
28
29extern void init_8259A(int auto_eoi);
30extern void enable_8259A_irq(unsigned int irq);
31extern void disable_8259A_irq(unsigned int irq);
32extern unsigned int startup_8259A_irq(unsigned int irq);
33
34/* the PIC may need a careful delay on some platforms, hence specific calls */
35static inline unsigned char inb_pic(unsigned int port)
36{
37 unsigned char value = inb(port);
38
39 /*
40 * delay for some accesses to PIC on motherboard or in chipset
41 * must be at least one microsecond, so be safe here:
42 */
43 udelay(2);
44
45 return value;
46}
47
48static inline void outb_pic(unsigned char value, unsigned int port)
49{
50 outb(value, port);
51 /*
52 * delay for some accesses to PIC on motherboard or in chipset
53 * must be at least one microsecond, so be safe here:
54 */
55 udelay(2);
56}
57
58extern struct irq_chip i8259A_chip;
59
60extern void mask_8259A(void);
61extern void unmask_8259A(void);
62
63#endif /* _ASM_X86_I8259_H */
diff --git a/arch/x86/include/asm/ia32.h b/arch/x86/include/asm/ia32.h
new file mode 100644
index 000000000000..97989c0e534c
--- /dev/null
+++ b/arch/x86/include/asm/ia32.h
@@ -0,0 +1,170 @@
1#ifndef _ASM_X86_IA32_H
2#define _ASM_X86_IA32_H
3
4
5#ifdef CONFIG_IA32_EMULATION
6
7#include <linux/compat.h>
8
9/*
10 * 32 bit structures for IA32 support.
11 */
12
13#include <asm/sigcontext32.h>
14
15/* signal.h */
16struct sigaction32 {
17 unsigned int sa_handler; /* Really a pointer, but need to deal
18 with 32 bits */
19 unsigned int sa_flags;
20 unsigned int sa_restorer; /* Another 32 bit pointer */
21 compat_sigset_t sa_mask; /* A 32 bit mask */
22};
23
24struct old_sigaction32 {
25 unsigned int sa_handler; /* Really a pointer, but need to deal
26 with 32 bits */
27 compat_old_sigset_t sa_mask; /* A 32 bit mask */
28 unsigned int sa_flags;
29 unsigned int sa_restorer; /* Another 32 bit pointer */
30};
31
32typedef struct sigaltstack_ia32 {
33 unsigned int ss_sp;
34 int ss_flags;
35 unsigned int ss_size;
36} stack_ia32_t;
37
38struct ucontext_ia32 {
39 unsigned int uc_flags;
40 unsigned int uc_link;
41 stack_ia32_t uc_stack;
42 struct sigcontext_ia32 uc_mcontext;
43 compat_sigset_t uc_sigmask; /* mask last for extensibility */
44};
45
46/* This matches struct stat64 in glibc2.2, hence the absolutely
47 * insane amounts of padding around dev_t's.
48 */
49struct stat64 {
50 unsigned long long st_dev;
51 unsigned char __pad0[4];
52
53#define STAT64_HAS_BROKEN_ST_INO 1
54 unsigned int __st_ino;
55
56 unsigned int st_mode;
57 unsigned int st_nlink;
58
59 unsigned int st_uid;
60 unsigned int st_gid;
61
62 unsigned long long st_rdev;
63 unsigned char __pad3[4];
64
65 long long st_size;
66 unsigned int st_blksize;
67
68 long long st_blocks;/* Number 512-byte blocks allocated */
69
70 unsigned st_atime;
71 unsigned st_atime_nsec;
72 unsigned st_mtime;
73 unsigned st_mtime_nsec;
74 unsigned st_ctime;
75 unsigned st_ctime_nsec;
76
77 unsigned long long st_ino;
78} __attribute__((packed));
79
80typedef struct compat_siginfo {
81 int si_signo;
82 int si_errno;
83 int si_code;
84
85 union {
86 int _pad[((128 / sizeof(int)) - 3)];
87
88 /* kill() */
89 struct {
90 unsigned int _pid; /* sender's pid */
91 unsigned int _uid; /* sender's uid */
92 } _kill;
93
94 /* POSIX.1b timers */
95 struct {
96 compat_timer_t _tid; /* timer id */
97 int _overrun; /* overrun count */
98 compat_sigval_t _sigval; /* same as below */
99 int _sys_private; /* not to be passed to user */
100 int _overrun_incr; /* amount to add to overrun */
101 } _timer;
102
103 /* POSIX.1b signals */
104 struct {
105 unsigned int _pid; /* sender's pid */
106 unsigned int _uid; /* sender's uid */
107 compat_sigval_t _sigval;
108 } _rt;
109
110 /* SIGCHLD */
111 struct {
112 unsigned int _pid; /* which child */
113 unsigned int _uid; /* sender's uid */
114 int _status; /* exit code */
115 compat_clock_t _utime;
116 compat_clock_t _stime;
117 } _sigchld;
118
119 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
120 struct {
121 unsigned int _addr; /* faulting insn/memory ref. */
122 } _sigfault;
123
124 /* SIGPOLL */
125 struct {
126 int _band; /* POLL_IN, POLL_OUT, POLL_MSG */
127 int _fd;
128 } _sigpoll;
129 } _sifields;
130} compat_siginfo_t;
131
132struct sigframe32 {
133 u32 pretcode;
134 int sig;
135 struct sigcontext_ia32 sc;
136 struct _fpstate_ia32 fpstate;
137 unsigned int extramask[_COMPAT_NSIG_WORDS-1];
138};
139
140struct rt_sigframe32 {
141 u32 pretcode;
142 int sig;
143 u32 pinfo;
144 u32 puc;
145 compat_siginfo_t info;
146 struct ucontext_ia32 uc;
147 struct _fpstate_ia32 fpstate;
148};
149
150struct ustat32 {
151 __u32 f_tfree;
152 compat_ino_t f_tinode;
153 char f_fname[6];
154 char f_fpack[6];
155};
156
157#define IA32_STACK_TOP IA32_PAGE_OFFSET
158
159#ifdef __KERNEL__
160struct linux_binprm;
161extern int ia32_setup_arg_pages(struct linux_binprm *bprm,
162 unsigned long stack_top, int exec_stack);
163struct mm_struct;
164extern void ia32_pick_mmap_layout(struct mm_struct *mm);
165
166#endif
167
168#endif /* !CONFIG_IA32_SUPPORT */
169
170#endif /* _ASM_X86_IA32_H */
diff --git a/arch/x86/include/asm/ia32_unistd.h b/arch/x86/include/asm/ia32_unistd.h
new file mode 100644
index 000000000000..976f6ecd2ce6
--- /dev/null
+++ b/arch/x86/include/asm/ia32_unistd.h
@@ -0,0 +1,18 @@
1#ifndef _ASM_X86_IA32_UNISTD_H
2#define _ASM_X86_IA32_UNISTD_H
3
4/*
5 * This file contains the system call numbers of the ia32 port,
6 * this is for the kernel only.
7 * Only add syscalls here where some part of the kernel needs to know
8 * the number. This should be otherwise in sync with asm-x86/unistd_32.h. -AK
9 */
10
11#define __NR_ia32_restart_syscall 0
12#define __NR_ia32_exit 1
13#define __NR_ia32_read 3
14#define __NR_ia32_write 4
15#define __NR_ia32_sigreturn 119
16#define __NR_ia32_rt_sigreturn 173
17
18#endif /* _ASM_X86_IA32_UNISTD_H */
diff --git a/arch/x86/include/asm/idle.h b/arch/x86/include/asm/idle.h
new file mode 100644
index 000000000000..44c89c3a23e9
--- /dev/null
+++ b/arch/x86/include/asm/idle.h
@@ -0,0 +1,16 @@
1#ifndef _ASM_X86_IDLE_H
2#define _ASM_X86_IDLE_H
3
4#define IDLE_START 1
5#define IDLE_END 2
6
7struct notifier_block;
8void idle_notifier_register(struct notifier_block *n);
9void idle_notifier_unregister(struct notifier_block *n);
10
11void enter_idle(void);
12void exit_idle(void);
13
14void c1e_remove_cpu(int cpu);
15
16#endif /* _ASM_X86_IDLE_H */
diff --git a/arch/x86/include/asm/intel_arch_perfmon.h b/arch/x86/include/asm/intel_arch_perfmon.h
new file mode 100644
index 000000000000..fa0fd068bc2e
--- /dev/null
+++ b/arch/x86/include/asm/intel_arch_perfmon.h
@@ -0,0 +1,31 @@
1#ifndef _ASM_X86_INTEL_ARCH_PERFMON_H
2#define _ASM_X86_INTEL_ARCH_PERFMON_H
3
4#define MSR_ARCH_PERFMON_PERFCTR0 0xc1
5#define MSR_ARCH_PERFMON_PERFCTR1 0xc2
6
7#define MSR_ARCH_PERFMON_EVENTSEL0 0x186
8#define MSR_ARCH_PERFMON_EVENTSEL1 0x187
9
10#define ARCH_PERFMON_EVENTSEL0_ENABLE (1 << 22)
11#define ARCH_PERFMON_EVENTSEL_INT (1 << 20)
12#define ARCH_PERFMON_EVENTSEL_OS (1 << 17)
13#define ARCH_PERFMON_EVENTSEL_USR (1 << 16)
14
15#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL (0x3c)
16#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_UMASK (0x00 << 8)
17#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_INDEX (0)
18#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_PRESENT \
19 (1 << (ARCH_PERFMON_UNHALTED_CORE_CYCLES_INDEX))
20
21union cpuid10_eax {
22 struct {
23 unsigned int version_id:8;
24 unsigned int num_counters:8;
25 unsigned int bit_width:8;
26 unsigned int mask_length:8;
27 } split;
28 unsigned int full;
29};
30
31#endif /* _ASM_X86_INTEL_ARCH_PERFMON_H */
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
new file mode 100644
index 000000000000..5618a103f395
--- /dev/null
+++ b/arch/x86/include/asm/io.h
@@ -0,0 +1,91 @@
1#ifndef _ASM_X86_IO_H
2#define _ASM_X86_IO_H
3
4#define ARCH_HAS_IOREMAP_WC
5
6#include <linux/compiler.h>
7
8#define build_mmio_read(name, size, type, reg, barrier) \
9static inline type name(const volatile void __iomem *addr) \
10{ type ret; asm volatile("mov" size " %1,%0":reg (ret) \
11:"m" (*(volatile type __force *)addr) barrier); return ret; }
12
13#define build_mmio_write(name, size, type, reg, barrier) \
14static inline void name(type val, volatile void __iomem *addr) \
15{ asm volatile("mov" size " %0,%1": :reg (val), \
16"m" (*(volatile type __force *)addr) barrier); }
17
18build_mmio_read(readb, "b", unsigned char, "=q", :"memory")
19build_mmio_read(readw, "w", unsigned short, "=r", :"memory")
20build_mmio_read(readl, "l", unsigned int, "=r", :"memory")
21
22build_mmio_read(__readb, "b", unsigned char, "=q", )
23build_mmio_read(__readw, "w", unsigned short, "=r", )
24build_mmio_read(__readl, "l", unsigned int, "=r", )
25
26build_mmio_write(writeb, "b", unsigned char, "q", :"memory")
27build_mmio_write(writew, "w", unsigned short, "r", :"memory")
28build_mmio_write(writel, "l", unsigned int, "r", :"memory")
29
30build_mmio_write(__writeb, "b", unsigned char, "q", )
31build_mmio_write(__writew, "w", unsigned short, "r", )
32build_mmio_write(__writel, "l", unsigned int, "r", )
33
34#define readb_relaxed(a) __readb(a)
35#define readw_relaxed(a) __readw(a)
36#define readl_relaxed(a) __readl(a)
37#define __raw_readb __readb
38#define __raw_readw __readw
39#define __raw_readl __readl
40
41#define __raw_writeb __writeb
42#define __raw_writew __writew
43#define __raw_writel __writel
44
45#define mmiowb() barrier()
46
47#ifdef CONFIG_X86_64
48build_mmio_read(readq, "q", unsigned long, "=r", :"memory")
49build_mmio_read(__readq, "q", unsigned long, "=r", )
50build_mmio_write(writeq, "q", unsigned long, "r", :"memory")
51build_mmio_write(__writeq, "q", unsigned long, "r", )
52
53#define readq_relaxed(a) __readq(a)
54#define __raw_readq __readq
55#define __raw_writeq writeq
56
57/* Let people know we have them */
58#define readq readq
59#define writeq writeq
60#endif
61
62extern int iommu_bio_merge;
63
64#ifdef CONFIG_X86_32
65# include "io_32.h"
66#else
67# include "io_64.h"
68#endif
69
70extern void *xlate_dev_mem_ptr(unsigned long phys);
71extern void unxlate_dev_mem_ptr(unsigned long phys, void *addr);
72
73extern int ioremap_change_attr(unsigned long vaddr, unsigned long size,
74 unsigned long prot_val);
75extern void __iomem *ioremap_wc(unsigned long offset, unsigned long size);
76
77/*
78 * early_ioremap() and early_iounmap() are for temporary early boot-time
79 * mappings, before the real ioremap() is functional.
80 * A boot-time mapping is currently limited to at most 16 pages.
81 */
82extern void early_ioremap_init(void);
83extern void early_ioremap_clear(void);
84extern void early_ioremap_reset(void);
85extern void *early_ioremap(unsigned long offset, unsigned long size);
86extern void *early_memremap(unsigned long offset, unsigned long size);
87extern void early_iounmap(void *addr, unsigned long size);
88extern void __iomem *fix_ioremap(unsigned idx, unsigned long phys);
89
90
91#endif /* _ASM_X86_IO_H */
diff --git a/arch/x86/include/asm/io_32.h b/arch/x86/include/asm/io_32.h
new file mode 100644
index 000000000000..d8e242e1b396
--- /dev/null
+++ b/arch/x86/include/asm/io_32.h
@@ -0,0 +1,284 @@
1#ifndef _ASM_X86_IO_32_H
2#define _ASM_X86_IO_32_H
3
4#include <linux/string.h>
5#include <linux/compiler.h>
6
7/*
8 * This file contains the definitions for the x86 IO instructions
9 * inb/inw/inl/outb/outw/outl and the "string versions" of the same
10 * (insb/insw/insl/outsb/outsw/outsl). You can also use "pausing"
11 * versions of the single-IO instructions (inb_p/inw_p/..).
12 *
13 * This file is not meant to be obfuscating: it's just complicated
14 * to (a) handle it all in a way that makes gcc able to optimize it
15 * as well as possible and (b) trying to avoid writing the same thing
16 * over and over again with slight variations and possibly making a
17 * mistake somewhere.
18 */
19
20/*
21 * Thanks to James van Artsdalen for a better timing-fix than
22 * the two short jumps: using outb's to a nonexistent port seems
23 * to guarantee better timings even on fast machines.
24 *
25 * On the other hand, I'd like to be sure of a non-existent port:
26 * I feel a bit unsafe about using 0x80 (should be safe, though)
27 *
28 * Linus
29 */
30
31 /*
32 * Bit simplified and optimized by Jan Hubicka
33 * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999.
34 *
35 * isa_memset_io, isa_memcpy_fromio, isa_memcpy_toio added,
36 * isa_read[wl] and isa_write[wl] fixed
37 * - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
38 */
39
40#define IO_SPACE_LIMIT 0xffff
41
42#define XQUAD_PORTIO_BASE 0xfe400000
43#define XQUAD_PORTIO_QUAD 0x40000 /* 256k per quad. */
44
45#ifdef __KERNEL__
46
47#include <asm-generic/iomap.h>
48
49#include <linux/vmalloc.h>
50
51/*
52 * Convert a virtual cached pointer to an uncached pointer
53 */
54#define xlate_dev_kmem_ptr(p) p
55
56/**
57 * virt_to_phys - map virtual addresses to physical
58 * @address: address to remap
59 *
60 * The returned physical address is the physical (CPU) mapping for
61 * the memory address given. It is only valid to use this function on
62 * addresses directly mapped or allocated via kmalloc.
63 *
64 * This function does not give bus mappings for DMA transfers. In
65 * almost all conceivable cases a device driver should not be using
66 * this function
67 */
68
69static inline unsigned long virt_to_phys(volatile void *address)
70{
71 return __pa(address);
72}
73
74/**
75 * phys_to_virt - map physical address to virtual
76 * @address: address to remap
77 *
78 * The returned virtual address is a current CPU mapping for
79 * the memory address given. It is only valid to use this function on
80 * addresses that have a kernel mapping
81 *
82 * This function does not handle bus mappings for DMA transfers. In
83 * almost all conceivable cases a device driver should not be using
84 * this function
85 */
86
87static inline void *phys_to_virt(unsigned long address)
88{
89 return __va(address);
90}
91
92/*
93 * Change "struct page" to physical address.
94 */
95#define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
96
97/**
98 * ioremap - map bus memory into CPU space
99 * @offset: bus address of the memory
100 * @size: size of the resource to map
101 *
102 * ioremap performs a platform specific sequence of operations to
103 * make bus memory CPU accessible via the readb/readw/readl/writeb/
104 * writew/writel functions and the other mmio helpers. The returned
105 * address is not guaranteed to be usable directly as a virtual
106 * address.
107 *
108 * If the area you are trying to map is a PCI BAR you should have a
109 * look at pci_iomap().
110 */
111extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size);
112extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size);
113extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size,
114 unsigned long prot_val);
115
116/*
117 * The default ioremap() behavior is non-cached:
118 */
119static inline void __iomem *ioremap(resource_size_t offset, unsigned long size)
120{
121 return ioremap_nocache(offset, size);
122}
123
124extern void iounmap(volatile void __iomem *addr);
125
126/*
127 * ISA I/O bus memory addresses are 1:1 with the physical address.
128 */
129#define isa_virt_to_bus virt_to_phys
130#define isa_page_to_bus page_to_phys
131#define isa_bus_to_virt phys_to_virt
132
133/*
134 * However PCI ones are not necessarily 1:1 and therefore these interfaces
135 * are forbidden in portable PCI drivers.
136 *
137 * Allow them on x86 for legacy drivers, though.
138 */
139#define virt_to_bus virt_to_phys
140#define bus_to_virt phys_to_virt
141
142static inline void
143memset_io(volatile void __iomem *addr, unsigned char val, int count)
144{
145 memset((void __force *)addr, val, count);
146}
147
148static inline void
149memcpy_fromio(void *dst, const volatile void __iomem *src, int count)
150{
151 __memcpy(dst, (const void __force *)src, count);
152}
153
154static inline void
155memcpy_toio(volatile void __iomem *dst, const void *src, int count)
156{
157 __memcpy((void __force *)dst, src, count);
158}
159
160/*
161 * ISA space is 'always mapped' on a typical x86 system, no need to
162 * explicitly ioremap() it. The fact that the ISA IO space is mapped
163 * to PAGE_OFFSET is pure coincidence - it does not mean ISA values
164 * are physical addresses. The following constant pointer can be
165 * used as the IO-area pointer (it can be iounmapped as well, so the
166 * analogy with PCI is quite large):
167 */
168#define __ISA_IO_base ((char __iomem *)(PAGE_OFFSET))
169
170/*
171 * Cache management
172 *
173 * This needed for two cases
174 * 1. Out of order aware processors
175 * 2. Accidentally out of order processors (PPro errata #51)
176 */
177
178#if defined(CONFIG_X86_OOSTORE) || defined(CONFIG_X86_PPRO_FENCE)
179
180static inline void flush_write_buffers(void)
181{
182 asm volatile("lock; addl $0,0(%%esp)": : :"memory");
183}
184
185#else
186
187#define flush_write_buffers() do { } while (0)
188
189#endif
190
191#endif /* __KERNEL__ */
192
193extern void native_io_delay(void);
194
195extern int io_delay_type;
196extern void io_delay_init(void);
197
198#if defined(CONFIG_PARAVIRT)
199#include <asm/paravirt.h>
200#else
201
202static inline void slow_down_io(void)
203{
204 native_io_delay();
205#ifdef REALLY_SLOW_IO
206 native_io_delay();
207 native_io_delay();
208 native_io_delay();
209#endif
210}
211
212#endif
213
214#define __BUILDIO(bwl, bw, type) \
215static inline void out##bwl(unsigned type value, int port) \
216{ \
217 out##bwl##_local(value, port); \
218} \
219 \
220static inline unsigned type in##bwl(int port) \
221{ \
222 return in##bwl##_local(port); \
223}
224
225#define BUILDIO(bwl, bw, type) \
226static inline void out##bwl##_local(unsigned type value, int port) \
227{ \
228 asm volatile("out" #bwl " %" #bw "0, %w1" \
229 : : "a"(value), "Nd"(port)); \
230} \
231 \
232static inline unsigned type in##bwl##_local(int port) \
233{ \
234 unsigned type value; \
235 asm volatile("in" #bwl " %w1, %" #bw "0" \
236 : "=a"(value) : "Nd"(port)); \
237 return value; \
238} \
239 \
240static inline void out##bwl##_local_p(unsigned type value, int port) \
241{ \
242 out##bwl##_local(value, port); \
243 slow_down_io(); \
244} \
245 \
246static inline unsigned type in##bwl##_local_p(int port) \
247{ \
248 unsigned type value = in##bwl##_local(port); \
249 slow_down_io(); \
250 return value; \
251} \
252 \
253__BUILDIO(bwl, bw, type) \
254 \
255static inline void out##bwl##_p(unsigned type value, int port) \
256{ \
257 out##bwl(value, port); \
258 slow_down_io(); \
259} \
260 \
261static inline unsigned type in##bwl##_p(int port) \
262{ \
263 unsigned type value = in##bwl(port); \
264 slow_down_io(); \
265 return value; \
266} \
267 \
268static inline void outs##bwl(int port, const void *addr, unsigned long count) \
269{ \
270 asm volatile("rep; outs" #bwl \
271 : "+S"(addr), "+c"(count) : "d"(port)); \
272} \
273 \
274static inline void ins##bwl(int port, void *addr, unsigned long count) \
275{ \
276 asm volatile("rep; ins" #bwl \
277 : "+D"(addr), "+c"(count) : "d"(port)); \
278}
279
280BUILDIO(b, b, char)
281BUILDIO(w, w, short)
282BUILDIO(l, , int)
283
284#endif /* _ASM_X86_IO_32_H */
diff --git a/arch/x86/include/asm/io_64.h b/arch/x86/include/asm/io_64.h
new file mode 100644
index 000000000000..fea325a1122f
--- /dev/null
+++ b/arch/x86/include/asm/io_64.h
@@ -0,0 +1,244 @@
1#ifndef _ASM_X86_IO_64_H
2#define _ASM_X86_IO_64_H
3
4
5/*
6 * This file contains the definitions for the x86 IO instructions
7 * inb/inw/inl/outb/outw/outl and the "string versions" of the same
8 * (insb/insw/insl/outsb/outsw/outsl). You can also use "pausing"
9 * versions of the single-IO instructions (inb_p/inw_p/..).
10 *
11 * This file is not meant to be obfuscating: it's just complicated
12 * to (a) handle it all in a way that makes gcc able to optimize it
13 * as well as possible and (b) trying to avoid writing the same thing
14 * over and over again with slight variations and possibly making a
15 * mistake somewhere.
16 */
17
18/*
19 * Thanks to James van Artsdalen for a better timing-fix than
20 * the two short jumps: using outb's to a nonexistent port seems
21 * to guarantee better timings even on fast machines.
22 *
23 * On the other hand, I'd like to be sure of a non-existent port:
24 * I feel a bit unsafe about using 0x80 (should be safe, though)
25 *
26 * Linus
27 */
28
29 /*
30 * Bit simplified and optimized by Jan Hubicka
31 * Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999.
32 *
33 * isa_memset_io, isa_memcpy_fromio, isa_memcpy_toio added,
34 * isa_read[wl] and isa_write[wl] fixed
35 * - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
36 */
37
38extern void native_io_delay(void);
39
40extern int io_delay_type;
41extern void io_delay_init(void);
42
43#if defined(CONFIG_PARAVIRT)
44#include <asm/paravirt.h>
45#else
46
47static inline void slow_down_io(void)
48{
49 native_io_delay();
50#ifdef REALLY_SLOW_IO
51 native_io_delay();
52 native_io_delay();
53 native_io_delay();
54#endif
55}
56#endif
57
58/*
59 * Talk about misusing macros..
60 */
61#define __OUT1(s, x) \
62static inline void out##s(unsigned x value, unsigned short port) {
63
64#define __OUT2(s, s1, s2) \
65asm volatile ("out" #s " %" s1 "0,%" s2 "1"
66
67#ifndef REALLY_SLOW_IO
68#define REALLY_SLOW_IO
69#define UNSET_REALLY_SLOW_IO
70#endif
71
72#define __OUT(s, s1, x) \
73 __OUT1(s, x) __OUT2(s, s1, "w") : : "a" (value), "Nd" (port)); \
74 } \
75 __OUT1(s##_p, x) __OUT2(s, s1, "w") : : "a" (value), "Nd" (port)); \
76 slow_down_io(); \
77}
78
79#define __IN1(s) \
80static inline RETURN_TYPE in##s(unsigned short port) \
81{ \
82 RETURN_TYPE _v;
83
84#define __IN2(s, s1, s2) \
85 asm volatile ("in" #s " %" s2 "1,%" s1 "0"
86
87#define __IN(s, s1, i...) \
88 __IN1(s) __IN2(s, s1, "w") : "=a" (_v) : "Nd" (port), ##i); \
89 return _v; \
90 } \
91 __IN1(s##_p) __IN2(s, s1, "w") : "=a" (_v) : "Nd" (port), ##i); \
92 slow_down_io(); \
93 return _v; }
94
95#ifdef UNSET_REALLY_SLOW_IO
96#undef REALLY_SLOW_IO
97#endif
98
99#define __INS(s) \
100static inline void ins##s(unsigned short port, void *addr, \
101 unsigned long count) \
102{ \
103 asm volatile ("rep ; ins" #s \
104 : "=D" (addr), "=c" (count) \
105 : "d" (port), "0" (addr), "1" (count)); \
106}
107
108#define __OUTS(s) \
109static inline void outs##s(unsigned short port, const void *addr, \
110 unsigned long count) \
111{ \
112 asm volatile ("rep ; outs" #s \
113 : "=S" (addr), "=c" (count) \
114 : "d" (port), "0" (addr), "1" (count)); \
115}
116
117#define RETURN_TYPE unsigned char
118__IN(b, "")
119#undef RETURN_TYPE
120#define RETURN_TYPE unsigned short
121__IN(w, "")
122#undef RETURN_TYPE
123#define RETURN_TYPE unsigned int
124__IN(l, "")
125#undef RETURN_TYPE
126
127__OUT(b, "b", char)
128__OUT(w, "w", short)
129__OUT(l, , int)
130
131__INS(b)
132__INS(w)
133__INS(l)
134
135__OUTS(b)
136__OUTS(w)
137__OUTS(l)
138
139#define IO_SPACE_LIMIT 0xffff
140
141#if defined(__KERNEL__) && defined(__x86_64__)
142
143#include <linux/vmalloc.h>
144
145#ifndef __i386__
146/*
147 * Change virtual addresses to physical addresses and vv.
148 * These are pretty trivial
149 */
150static inline unsigned long virt_to_phys(volatile void *address)
151{
152 return __pa(address);
153}
154
155static inline void *phys_to_virt(unsigned long address)
156{
157 return __va(address);
158}
159#endif
160
161/*
162 * Change "struct page" to physical address.
163 */
164#define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
165
166#include <asm-generic/iomap.h>
167
168/*
169 * This one maps high address device memory and turns off caching for that area.
170 * it's useful if some control registers are in such an area and write combining
171 * or read caching is not desirable:
172 */
173extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size);
174extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size);
175extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size,
176 unsigned long prot_val);
177
178/*
179 * The default ioremap() behavior is non-cached:
180 */
181static inline void __iomem *ioremap(resource_size_t offset, unsigned long size)
182{
183 return ioremap_nocache(offset, size);
184}
185
186extern void iounmap(volatile void __iomem *addr);
187
188extern void __iomem *fix_ioremap(unsigned idx, unsigned long phys);
189
190/*
191 * ISA I/O bus memory addresses are 1:1 with the physical address.
192 */
193#define isa_virt_to_bus virt_to_phys
194#define isa_page_to_bus page_to_phys
195#define isa_bus_to_virt phys_to_virt
196
197/*
198 * However PCI ones are not necessarily 1:1 and therefore these interfaces
199 * are forbidden in portable PCI drivers.
200 *
201 * Allow them on x86 for legacy drivers, though.
202 */
203#define virt_to_bus virt_to_phys
204#define bus_to_virt phys_to_virt
205
206void __memcpy_fromio(void *, unsigned long, unsigned);
207void __memcpy_toio(unsigned long, const void *, unsigned);
208
209static inline void memcpy_fromio(void *to, const volatile void __iomem *from,
210 unsigned len)
211{
212 __memcpy_fromio(to, (unsigned long)from, len);
213}
214
215static inline void memcpy_toio(volatile void __iomem *to, const void *from,
216 unsigned len)
217{
218 __memcpy_toio((unsigned long)to, from, len);
219}
220
221void memset_io(volatile void __iomem *a, int b, size_t c);
222
223/*
224 * ISA space is 'always mapped' on a typical x86 system, no need to
225 * explicitly ioremap() it. The fact that the ISA IO space is mapped
226 * to PAGE_OFFSET is pure coincidence - it does not mean ISA values
227 * are physical addresses. The following constant pointer can be
228 * used as the IO-area pointer (it can be iounmapped as well, so the
229 * analogy with PCI is quite large):
230 */
231#define __ISA_IO_base ((char __iomem *)(PAGE_OFFSET))
232
233#define flush_write_buffers()
234
235#define BIO_VMERGE_BOUNDARY iommu_bio_merge
236
237/*
238 * Convert a virtual cached pointer to an uncached pointer
239 */
240#define xlate_dev_kmem_ptr(p) p
241
242#endif /* __KERNEL__ */
243
244#endif /* _ASM_X86_IO_64_H */
diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h
new file mode 100644
index 000000000000..6afd9933a7dd
--- /dev/null
+++ b/arch/x86/include/asm/io_apic.h
@@ -0,0 +1,204 @@
1#ifndef _ASM_X86_IO_APIC_H
2#define _ASM_X86_IO_APIC_H
3
4#include <linux/types.h>
5#include <asm/mpspec.h>
6#include <asm/apicdef.h>
7#include <asm/irq_vectors.h>
8
9/*
10 * Intel IO-APIC support for SMP and UP systems.
11 *
12 * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar
13 */
14
15/* I/O Unit Redirection Table */
16#define IO_APIC_REDIR_VECTOR_MASK 0x000FF
17#define IO_APIC_REDIR_DEST_LOGICAL 0x00800
18#define IO_APIC_REDIR_DEST_PHYSICAL 0x00000
19#define IO_APIC_REDIR_SEND_PENDING (1 << 12)
20#define IO_APIC_REDIR_REMOTE_IRR (1 << 14)
21#define IO_APIC_REDIR_LEVEL_TRIGGER (1 << 15)
22#define IO_APIC_REDIR_MASKED (1 << 16)
23
24/*
25 * The structure of the IO-APIC:
26 */
27union IO_APIC_reg_00 {
28 u32 raw;
29 struct {
30 u32 __reserved_2 : 14,
31 LTS : 1,
32 delivery_type : 1,
33 __reserved_1 : 8,
34 ID : 8;
35 } __attribute__ ((packed)) bits;
36};
37
38union IO_APIC_reg_01 {
39 u32 raw;
40 struct {
41 u32 version : 8,
42 __reserved_2 : 7,
43 PRQ : 1,
44 entries : 8,
45 __reserved_1 : 8;
46 } __attribute__ ((packed)) bits;
47};
48
49union IO_APIC_reg_02 {
50 u32 raw;
51 struct {
52 u32 __reserved_2 : 24,
53 arbitration : 4,
54 __reserved_1 : 4;
55 } __attribute__ ((packed)) bits;
56};
57
58union IO_APIC_reg_03 {
59 u32 raw;
60 struct {
61 u32 boot_DT : 1,
62 __reserved_1 : 31;
63 } __attribute__ ((packed)) bits;
64};
65
66enum ioapic_irq_destination_types {
67 dest_Fixed = 0,
68 dest_LowestPrio = 1,
69 dest_SMI = 2,
70 dest__reserved_1 = 3,
71 dest_NMI = 4,
72 dest_INIT = 5,
73 dest__reserved_2 = 6,
74 dest_ExtINT = 7
75};
76
77struct IO_APIC_route_entry {
78 __u32 vector : 8,
79 delivery_mode : 3, /* 000: FIXED
80 * 001: lowest prio
81 * 111: ExtINT
82 */
83 dest_mode : 1, /* 0: physical, 1: logical */
84 delivery_status : 1,
85 polarity : 1,
86 irr : 1,
87 trigger : 1, /* 0: edge, 1: level */
88 mask : 1, /* 0: enabled, 1: disabled */
89 __reserved_2 : 15;
90
91 __u32 __reserved_3 : 24,
92 dest : 8;
93} __attribute__ ((packed));
94
95struct IR_IO_APIC_route_entry {
96 __u64 vector : 8,
97 zero : 3,
98 index2 : 1,
99 delivery_status : 1,
100 polarity : 1,
101 irr : 1,
102 trigger : 1,
103 mask : 1,
104 reserved : 31,
105 format : 1,
106 index : 15;
107} __attribute__ ((packed));
108
109#ifdef CONFIG_X86_IO_APIC
110
111/*
112 * # of IO-APICs and # of IRQ routing registers
113 */
114extern int nr_ioapics;
115extern int nr_ioapic_registers[MAX_IO_APICS];
116
117/*
118 * MP-BIOS irq configuration table structures:
119 */
120
121#define MP_MAX_IOAPIC_PIN 127
122
123struct mp_config_ioapic {
124 unsigned long mp_apicaddr;
125 unsigned int mp_apicid;
126 unsigned char mp_type;
127 unsigned char mp_apicver;
128 unsigned char mp_flags;
129};
130
131struct mp_config_intsrc {
132 unsigned int mp_dstapic;
133 unsigned char mp_type;
134 unsigned char mp_irqtype;
135 unsigned short mp_irqflag;
136 unsigned char mp_srcbus;
137 unsigned char mp_srcbusirq;
138 unsigned char mp_dstirq;
139};
140
141/* I/O APIC entries */
142extern struct mp_config_ioapic mp_ioapics[MAX_IO_APICS];
143
144/* # of MP IRQ source entries */
145extern int mp_irq_entries;
146
147/* MP IRQ source entries */
148extern struct mp_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
149
150/* non-0 if default (table-less) MP configuration */
151extern int mpc_default_type;
152
153/* Older SiS APIC requires we rewrite the index register */
154extern int sis_apic_bug;
155
156/* 1 if "noapic" boot option passed */
157extern int skip_ioapic_setup;
158
159/* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */
160extern int timer_through_8259;
161
162static inline void disable_ioapic_setup(void)
163{
164 skip_ioapic_setup = 1;
165}
166
167/*
168 * If we use the IO-APIC for IRQ routing, disable automatic
169 * assignment of PCI IRQ's.
170 */
171#define io_apic_assign_pci_irqs \
172 (mp_irq_entries && !skip_ioapic_setup && io_apic_irqs)
173
174#ifdef CONFIG_ACPI
175extern int io_apic_get_unique_id(int ioapic, int apic_id);
176extern int io_apic_get_version(int ioapic);
177extern int io_apic_get_redir_entries(int ioapic);
178extern int io_apic_set_pci_routing(int ioapic, int pin, int irq,
179 int edge_level, int active_high_low);
180#endif /* CONFIG_ACPI */
181
182extern int (*ioapic_renumber_irq)(int ioapic, int irq);
183extern void ioapic_init_mappings(void);
184
185#ifdef CONFIG_X86_64
186extern int save_mask_IO_APIC_setup(void);
187extern void restore_IO_APIC_setup(void);
188extern void reinit_intr_remapped_IO_APIC(int);
189#endif
190
191extern int probe_nr_irqs(void);
192
193#else /* !CONFIG_X86_IO_APIC */
194#define io_apic_assign_pci_irqs 0
195static const int timer_through_8259 = 0;
196static inline void ioapic_init_mappings(void) { }
197
198static inline int probe_nr_irqs(void)
199{
200 return NR_IRQS;
201}
202#endif
203
204#endif /* _ASM_X86_IO_APIC_H */
diff --git a/arch/x86/include/asm/ioctl.h b/arch/x86/include/asm/ioctl.h
new file mode 100644
index 000000000000..b279fe06dfe5
--- /dev/null
+++ b/arch/x86/include/asm/ioctl.h
@@ -0,0 +1 @@
#include <asm-generic/ioctl.h>
diff --git a/arch/x86/include/asm/ioctls.h b/arch/x86/include/asm/ioctls.h
new file mode 100644
index 000000000000..0d5b23b7b06e
--- /dev/null
+++ b/arch/x86/include/asm/ioctls.h
@@ -0,0 +1,94 @@
1#ifndef _ASM_X86_IOCTLS_H
2#define _ASM_X86_IOCTLS_H
3
4#include <asm/ioctl.h>
5
6/* 0x54 is just a magic number to make these relatively unique ('T') */
7
8#define TCGETS 0x5401
9#define TCSETS 0x5402 /* Clashes with SNDCTL_TMR_START sound ioctl */
10#define TCSETSW 0x5403
11#define TCSETSF 0x5404
12#define TCGETA 0x5405
13#define TCSETA 0x5406
14#define TCSETAW 0x5407
15#define TCSETAF 0x5408
16#define TCSBRK 0x5409
17#define TCXONC 0x540A
18#define TCFLSH 0x540B
19#define TIOCEXCL 0x540C
20#define TIOCNXCL 0x540D
21#define TIOCSCTTY 0x540E
22#define TIOCGPGRP 0x540F
23#define TIOCSPGRP 0x5410
24#define TIOCOUTQ 0x5411
25#define TIOCSTI 0x5412
26#define TIOCGWINSZ 0x5413
27#define TIOCSWINSZ 0x5414
28#define TIOCMGET 0x5415
29#define TIOCMBIS 0x5416
30#define TIOCMBIC 0x5417
31#define TIOCMSET 0x5418
32#define TIOCGSOFTCAR 0x5419
33#define TIOCSSOFTCAR 0x541A
34#define FIONREAD 0x541B
35#define TIOCINQ FIONREAD
36#define TIOCLINUX 0x541C
37#define TIOCCONS 0x541D
38#define TIOCGSERIAL 0x541E
39#define TIOCSSERIAL 0x541F
40#define TIOCPKT 0x5420
41#define FIONBIO 0x5421
42#define TIOCNOTTY 0x5422
43#define TIOCSETD 0x5423
44#define TIOCGETD 0x5424
45#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
46/* #define TIOCTTYGSTRUCT 0x5426 - Former debugging-only ioctl */
47#define TIOCSBRK 0x5427 /* BSD compatibility */
48#define TIOCCBRK 0x5428 /* BSD compatibility */
49#define TIOCGSID 0x5429 /* Return the session ID of FD */
50#define TCGETS2 _IOR('T', 0x2A, struct termios2)
51#define TCSETS2 _IOW('T', 0x2B, struct termios2)
52#define TCSETSW2 _IOW('T', 0x2C, struct termios2)
53#define TCSETSF2 _IOW('T', 0x2D, struct termios2)
54#define TIOCGRS485 0x542E
55#define TIOCSRS485 0x542F
56#define TIOCGPTN _IOR('T', 0x30, unsigned int)
57 /* Get Pty Number (of pty-mux device) */
58#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
59#define TCGETX 0x5432 /* SYS5 TCGETX compatibility */
60#define TCSETX 0x5433
61#define TCSETXF 0x5434
62#define TCSETXW 0x5435
63
64#define FIONCLEX 0x5450
65#define FIOCLEX 0x5451
66#define FIOASYNC 0x5452
67#define TIOCSERCONFIG 0x5453
68#define TIOCSERGWILD 0x5454
69#define TIOCSERSWILD 0x5455
70#define TIOCGLCKTRMIOS 0x5456
71#define TIOCSLCKTRMIOS 0x5457
72#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
73#define TIOCSERGETLSR 0x5459 /* Get line status register */
74#define TIOCSERGETMULTI 0x545A /* Get multiport config */
75#define TIOCSERSETMULTI 0x545B /* Set multiport config */
76
77#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
78#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
79#define TIOCGHAYESESP 0x545E /* Get Hayes ESP configuration */
80#define TIOCSHAYESESP 0x545F /* Set Hayes ESP configuration */
81#define FIOQSIZE 0x5460
82
83/* Used for packet mode */
84#define TIOCPKT_DATA 0
85#define TIOCPKT_FLUSHREAD 1
86#define TIOCPKT_FLUSHWRITE 2
87#define TIOCPKT_STOP 4
88#define TIOCPKT_START 8
89#define TIOCPKT_NOSTOP 16
90#define TIOCPKT_DOSTOP 32
91
92#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
93
94#endif /* _ASM_X86_IOCTLS_H */
diff --git a/arch/x86/include/asm/iommu.h b/arch/x86/include/asm/iommu.h
new file mode 100644
index 000000000000..98e28ea8cd16
--- /dev/null
+++ b/arch/x86/include/asm/iommu.h
@@ -0,0 +1,50 @@
1#ifndef _ASM_X86_IOMMU_H
2#define _ASM_X86_IOMMU_H
3
4extern void pci_iommu_shutdown(void);
5extern void no_iommu_init(void);
6extern struct dma_mapping_ops nommu_dma_ops;
7extern int force_iommu, no_iommu;
8extern int iommu_detected;
9extern int dmar_disabled;
10extern int forbid_dac;
11
12extern unsigned long iommu_nr_pages(unsigned long addr, unsigned long len);
13
14/* 10 seconds */
15#define DMAR_OPERATION_TIMEOUT ((cycles_t) tsc_khz*10*1000)
16
17#ifdef CONFIG_GART_IOMMU
18extern int gart_iommu_aperture;
19extern int gart_iommu_aperture_allowed;
20extern int gart_iommu_aperture_disabled;
21
22extern void early_gart_iommu_check(void);
23extern void gart_iommu_init(void);
24extern void gart_iommu_shutdown(void);
25extern void __init gart_parse_options(char *);
26extern void gart_iommu_hole_init(void);
27
28#else
29#define gart_iommu_aperture 0
30#define gart_iommu_aperture_allowed 0
31#define gart_iommu_aperture_disabled 1
32
33static inline void early_gart_iommu_check(void)
34{
35}
36static inline void gart_iommu_init(void)
37{
38}
39static inline void gart_iommu_shutdown(void)
40{
41}
42static inline void gart_parse_options(char *options)
43{
44}
45static inline void gart_iommu_hole_init(void)
46{
47}
48#endif
49
50#endif /* _ASM_X86_IOMMU_H */
diff --git a/arch/x86/include/asm/ipcbuf.h b/arch/x86/include/asm/ipcbuf.h
new file mode 100644
index 000000000000..ee678fd51594
--- /dev/null
+++ b/arch/x86/include/asm/ipcbuf.h
@@ -0,0 +1,28 @@
1#ifndef _ASM_X86_IPCBUF_H
2#define _ASM_X86_IPCBUF_H
3
4/*
5 * The ipc64_perm structure for x86 architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 32-bit mode_t and seq
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct ipc64_perm {
15 __kernel_key_t key;
16 __kernel_uid32_t uid;
17 __kernel_gid32_t gid;
18 __kernel_uid32_t cuid;
19 __kernel_gid32_t cgid;
20 __kernel_mode_t mode;
21 unsigned short __pad1;
22 unsigned short seq;
23 unsigned short __pad2;
24 unsigned long __unused1;
25 unsigned long __unused2;
26};
27
28#endif /* _ASM_X86_IPCBUF_H */
diff --git a/arch/x86/include/asm/ipi.h b/arch/x86/include/asm/ipi.h
new file mode 100644
index 000000000000..f89dffb28aa9
--- /dev/null
+++ b/arch/x86/include/asm/ipi.h
@@ -0,0 +1,138 @@
1#ifndef _ASM_X86_IPI_H
2#define _ASM_X86_IPI_H
3
4/*
5 * Copyright 2004 James Cleverdon, IBM.
6 * Subject to the GNU Public License, v.2
7 *
8 * Generic APIC InterProcessor Interrupt code.
9 *
10 * Moved to include file by James Cleverdon from
11 * arch/x86-64/kernel/smp.c
12 *
13 * Copyrights from kernel/smp.c:
14 *
15 * (c) 1995 Alan Cox, Building #3 <alan@redhat.com>
16 * (c) 1998-99, 2000 Ingo Molnar <mingo@redhat.com>
17 * (c) 2002,2003 Andi Kleen, SuSE Labs.
18 * Subject to the GNU Public License, v.2
19 */
20
21#include <asm/hw_irq.h>
22#include <asm/apic.h>
23#include <asm/smp.h>
24
25/*
26 * the following functions deal with sending IPIs between CPUs.
27 *
28 * We use 'broadcast', CPU->CPU IPIs and self-IPIs too.
29 */
30
31static inline unsigned int __prepare_ICR(unsigned int shortcut, int vector,
32 unsigned int dest)
33{
34 unsigned int icr = shortcut | dest;
35
36 switch (vector) {
37 default:
38 icr |= APIC_DM_FIXED | vector;
39 break;
40 case NMI_VECTOR:
41 icr |= APIC_DM_NMI;
42 break;
43 }
44 return icr;
45}
46
47static inline int __prepare_ICR2(unsigned int mask)
48{
49 return SET_APIC_DEST_FIELD(mask);
50}
51
52static inline void __xapic_wait_icr_idle(void)
53{
54 while (native_apic_mem_read(APIC_ICR) & APIC_ICR_BUSY)
55 cpu_relax();
56}
57
58static inline void __send_IPI_shortcut(unsigned int shortcut, int vector,
59 unsigned int dest)
60{
61 /*
62 * Subtle. In the case of the 'never do double writes' workaround
63 * we have to lock out interrupts to be safe. As we don't care
64 * of the value read we use an atomic rmw access to avoid costly
65 * cli/sti. Otherwise we use an even cheaper single atomic write
66 * to the APIC.
67 */
68 unsigned int cfg;
69
70 /*
71 * Wait for idle.
72 */
73 __xapic_wait_icr_idle();
74
75 /*
76 * No need to touch the target chip field
77 */
78 cfg = __prepare_ICR(shortcut, vector, dest);
79
80 /*
81 * Send the IPI. The write to APIC_ICR fires this off.
82 */
83 native_apic_mem_write(APIC_ICR, cfg);
84}
85
86/*
87 * This is used to send an IPI with no shorthand notation (the destination is
88 * specified in bits 56 to 63 of the ICR).
89 */
90static inline void __send_IPI_dest_field(unsigned int mask, int vector,
91 unsigned int dest)
92{
93 unsigned long cfg;
94
95 /*
96 * Wait for idle.
97 */
98 if (unlikely(vector == NMI_VECTOR))
99 safe_apic_wait_icr_idle();
100 else
101 __xapic_wait_icr_idle();
102
103 /*
104 * prepare target chip field
105 */
106 cfg = __prepare_ICR2(mask);
107 native_apic_mem_write(APIC_ICR2, cfg);
108
109 /*
110 * program the ICR
111 */
112 cfg = __prepare_ICR(0, vector, dest);
113
114 /*
115 * Send the IPI. The write to APIC_ICR fires this off.
116 */
117 native_apic_mem_write(APIC_ICR, cfg);
118}
119
120static inline void send_IPI_mask_sequence(cpumask_t mask, int vector)
121{
122 unsigned long flags;
123 unsigned long query_cpu;
124
125 /*
126 * Hack. The clustered APIC addressing mode doesn't allow us to send
127 * to an arbitrary mask, so I do a unicast to each CPU instead.
128 * - mbligh
129 */
130 local_irq_save(flags);
131 for_each_cpu_mask_nr(query_cpu, mask) {
132 __send_IPI_dest_field(per_cpu(x86_cpu_to_apicid, query_cpu),
133 vector, APIC_DEST_PHYSICAL);
134 }
135 local_irq_restore(flags);
136}
137
138#endif /* _ASM_X86_IPI_H */
diff --git a/arch/x86/include/asm/irq.h b/arch/x86/include/asm/irq.h
new file mode 100644
index 000000000000..bae0eda95486
--- /dev/null
+++ b/arch/x86/include/asm/irq.h
@@ -0,0 +1,50 @@
1#ifndef _ASM_X86_IRQ_H
2#define _ASM_X86_IRQ_H
3/*
4 * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
5 *
6 * IRQ/IPI changes taken from work by Thomas Radke
7 * <tomsoft@informatik.tu-chemnitz.de>
8 */
9
10#include <asm/apicdef.h>
11#include <asm/irq_vectors.h>
12
13static inline int irq_canonicalize(int irq)
14{
15 return ((irq == 2) ? 9 : irq);
16}
17
18#ifdef CONFIG_X86_LOCAL_APIC
19# define ARCH_HAS_NMI_WATCHDOG
20#endif
21
22#ifdef CONFIG_4KSTACKS
23 extern void irq_ctx_init(int cpu);
24 extern void irq_ctx_exit(int cpu);
25# define __ARCH_HAS_DO_SOFTIRQ
26#else
27# define irq_ctx_init(cpu) do { } while (0)
28# define irq_ctx_exit(cpu) do { } while (0)
29# ifdef CONFIG_X86_64
30# define __ARCH_HAS_DO_SOFTIRQ
31# endif
32#endif
33
34#ifdef CONFIG_IRQBALANCE
35extern int irqbalance_disable(char *str);
36#endif
37
38#ifdef CONFIG_HOTPLUG_CPU
39#include <linux/cpumask.h>
40extern void fixup_irqs(cpumask_t map);
41#endif
42
43extern unsigned int do_IRQ(struct pt_regs *regs);
44extern void init_IRQ(void);
45extern void native_init_IRQ(void);
46
47/* Interrupt vector management */
48extern DECLARE_BITMAP(used_vectors, NR_VECTORS);
49
50#endif /* _ASM_X86_IRQ_H */
diff --git a/arch/x86/include/asm/irq_regs.h b/arch/x86/include/asm/irq_regs.h
new file mode 100644
index 000000000000..89c898ab298b
--- /dev/null
+++ b/arch/x86/include/asm/irq_regs.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "irq_regs_32.h"
3#else
4# include "irq_regs_64.h"
5#endif
diff --git a/arch/x86/include/asm/irq_regs_32.h b/arch/x86/include/asm/irq_regs_32.h
new file mode 100644
index 000000000000..af2f02d27fc7
--- /dev/null
+++ b/arch/x86/include/asm/irq_regs_32.h
@@ -0,0 +1,29 @@
1/*
2 * Per-cpu current frame pointer - the location of the last exception frame on
3 * the stack, stored in the per-cpu area.
4 *
5 * Jeremy Fitzhardinge <jeremy@goop.org>
6 */
7#ifndef _ASM_X86_IRQ_REGS_32_H
8#define _ASM_X86_IRQ_REGS_32_H
9
10#include <asm/percpu.h>
11
12DECLARE_PER_CPU(struct pt_regs *, irq_regs);
13
14static inline struct pt_regs *get_irq_regs(void)
15{
16 return x86_read_percpu(irq_regs);
17}
18
19static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs)
20{
21 struct pt_regs *old_regs;
22
23 old_regs = get_irq_regs();
24 x86_write_percpu(irq_regs, new_regs);
25
26 return old_regs;
27}
28
29#endif /* _ASM_X86_IRQ_REGS_32_H */
diff --git a/arch/x86/include/asm/irq_regs_64.h b/arch/x86/include/asm/irq_regs_64.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/arch/x86/include/asm/irq_regs_64.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h
new file mode 100644
index 000000000000..20e1fd588dbf
--- /dev/null
+++ b/arch/x86/include/asm/irq_remapping.h
@@ -0,0 +1,8 @@
1#ifndef _ASM_X86_IRQ_REMAPPING_H
2#define _ASM_X86_IRQ_REMAPPING_H
3
4extern int x2apic;
5
6#define IRTE_DEST(dest) ((x2apic) ? dest : dest << 8)
7
8#endif /* _ASM_X86_IRQ_REMAPPING_H */
diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h
new file mode 100644
index 000000000000..d843ed0e9b2e
--- /dev/null
+++ b/arch/x86/include/asm/irq_vectors.h
@@ -0,0 +1,164 @@
1#ifndef _ASM_X86_IRQ_VECTORS_H
2#define _ASM_X86_IRQ_VECTORS_H
3
4#include <linux/threads.h>
5
6#define NMI_VECTOR 0x02
7
8/*
9 * IDT vectors usable for external interrupt sources start
10 * at 0x20:
11 */
12#define FIRST_EXTERNAL_VECTOR 0x20
13
14#ifdef CONFIG_X86_32
15# define SYSCALL_VECTOR 0x80
16#else
17# define IA32_SYSCALL_VECTOR 0x80
18#endif
19
20/*
21 * Reserve the lowest usable priority level 0x20 - 0x2f for triggering
22 * cleanup after irq migration.
23 */
24#define IRQ_MOVE_CLEANUP_VECTOR FIRST_EXTERNAL_VECTOR
25
26/*
27 * Vectors 0x30-0x3f are used for ISA interrupts.
28 */
29#define IRQ0_VECTOR (FIRST_EXTERNAL_VECTOR + 0x10)
30#define IRQ1_VECTOR (IRQ0_VECTOR + 1)
31#define IRQ2_VECTOR (IRQ0_VECTOR + 2)
32#define IRQ3_VECTOR (IRQ0_VECTOR + 3)
33#define IRQ4_VECTOR (IRQ0_VECTOR + 4)
34#define IRQ5_VECTOR (IRQ0_VECTOR + 5)
35#define IRQ6_VECTOR (IRQ0_VECTOR + 6)
36#define IRQ7_VECTOR (IRQ0_VECTOR + 7)
37#define IRQ8_VECTOR (IRQ0_VECTOR + 8)
38#define IRQ9_VECTOR (IRQ0_VECTOR + 9)
39#define IRQ10_VECTOR (IRQ0_VECTOR + 10)
40#define IRQ11_VECTOR (IRQ0_VECTOR + 11)
41#define IRQ12_VECTOR (IRQ0_VECTOR + 12)
42#define IRQ13_VECTOR (IRQ0_VECTOR + 13)
43#define IRQ14_VECTOR (IRQ0_VECTOR + 14)
44#define IRQ15_VECTOR (IRQ0_VECTOR + 15)
45
46/*
47 * Special IRQ vectors used by the SMP architecture, 0xf0-0xff
48 *
49 * some of the following vectors are 'rare', they are merged
50 * into a single vector (CALL_FUNCTION_VECTOR) to save vector space.
51 * TLB, reschedule and local APIC vectors are performance-critical.
52 *
53 * Vectors 0xf0-0xfa are free (reserved for future Linux use).
54 */
55#ifdef CONFIG_X86_32
56
57# define SPURIOUS_APIC_VECTOR 0xff
58# define ERROR_APIC_VECTOR 0xfe
59# define INVALIDATE_TLB_VECTOR 0xfd
60# define RESCHEDULE_VECTOR 0xfc
61# define CALL_FUNCTION_VECTOR 0xfb
62# define CALL_FUNCTION_SINGLE_VECTOR 0xfa
63# define THERMAL_APIC_VECTOR 0xf0
64
65#else
66
67#define SPURIOUS_APIC_VECTOR 0xff
68#define ERROR_APIC_VECTOR 0xfe
69#define RESCHEDULE_VECTOR 0xfd
70#define CALL_FUNCTION_VECTOR 0xfc
71#define CALL_FUNCTION_SINGLE_VECTOR 0xfb
72#define THERMAL_APIC_VECTOR 0xfa
73#define THRESHOLD_APIC_VECTOR 0xf9
74#define UV_BAU_MESSAGE 0xf8
75#define INVALIDATE_TLB_VECTOR_END 0xf7
76#define INVALIDATE_TLB_VECTOR_START 0xf0 /* f0-f7 used for TLB flush */
77
78#define NUM_INVALIDATE_TLB_VECTORS 8
79
80#endif
81
82/*
83 * Local APIC timer IRQ vector is on a different priority level,
84 * to work around the 'lost local interrupt if more than 2 IRQ
85 * sources per level' errata.
86 */
87#define LOCAL_TIMER_VECTOR 0xef
88
89/*
90 * First APIC vector available to drivers: (vectors 0x30-0xee) we
91 * start at 0x31(0x41) to spread out vectors evenly between priority
92 * levels. (0x80 is the syscall vector)
93 */
94#define FIRST_DEVICE_VECTOR (IRQ15_VECTOR + 2)
95
96#define NR_VECTORS 256
97
98#define FPU_IRQ 13
99
100#define FIRST_VM86_IRQ 3
101#define LAST_VM86_IRQ 15
102#define invalid_vm86_irq(irq) ((irq) < 3 || (irq) > 15)
103
104#ifdef CONFIG_X86_64
105# if NR_CPUS < MAX_IO_APICS
106# define NR_IRQS (NR_VECTORS + (32 * NR_CPUS))
107# else
108# define NR_IRQS (NR_VECTORS + (32 * MAX_IO_APICS))
109# endif
110
111#elif !defined(CONFIG_X86_VOYAGER)
112
113# if defined(CONFIG_X86_IO_APIC) || defined(CONFIG_PARAVIRT) || defined(CONFIG_X86_VISWS)
114
115# define NR_IRQS 224
116
117# else /* IO_APIC || PARAVIRT */
118
119# define NR_IRQS 16
120
121# endif
122
123#else /* !VISWS && !VOYAGER */
124
125# define NR_IRQS 224
126
127#endif /* VISWS */
128
129/* Voyager specific defines */
130/* These define the CPIs we use in linux */
131#define VIC_CPI_LEVEL0 0
132#define VIC_CPI_LEVEL1 1
133/* now the fake CPIs */
134#define VIC_TIMER_CPI 2
135#define VIC_INVALIDATE_CPI 3
136#define VIC_RESCHEDULE_CPI 4
137#define VIC_ENABLE_IRQ_CPI 5
138#define VIC_CALL_FUNCTION_CPI 6
139#define VIC_CALL_FUNCTION_SINGLE_CPI 7
140
141/* Now the QIC CPIs: Since we don't need the two initial levels,
142 * these are 2 less than the VIC CPIs */
143#define QIC_CPI_OFFSET 1
144#define QIC_TIMER_CPI (VIC_TIMER_CPI - QIC_CPI_OFFSET)
145#define QIC_INVALIDATE_CPI (VIC_INVALIDATE_CPI - QIC_CPI_OFFSET)
146#define QIC_RESCHEDULE_CPI (VIC_RESCHEDULE_CPI - QIC_CPI_OFFSET)
147#define QIC_ENABLE_IRQ_CPI (VIC_ENABLE_IRQ_CPI - QIC_CPI_OFFSET)
148#define QIC_CALL_FUNCTION_CPI (VIC_CALL_FUNCTION_CPI - QIC_CPI_OFFSET)
149#define QIC_CALL_FUNCTION_SINGLE_CPI (VIC_CALL_FUNCTION_SINGLE_CPI - QIC_CPI_OFFSET)
150
151#define VIC_START_FAKE_CPI VIC_TIMER_CPI
152#define VIC_END_FAKE_CPI VIC_CALL_FUNCTION_SINGLE_CPI
153
154/* this is the SYS_INT CPI. */
155#define VIC_SYS_INT 8
156#define VIC_CMN_INT 15
157
158/* This is the boot CPI for alternate processors. It gets overwritten
159 * by the above once the system has activated all available processors */
160#define VIC_CPU_BOOT_CPI VIC_CPI_LEVEL0
161#define VIC_CPU_BOOT_ERRATA_CPI (VIC_CPI_LEVEL0 + 8)
162
163
164#endif /* _ASM_X86_IRQ_VECTORS_H */
diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h
new file mode 100644
index 000000000000..2bdab21f0898
--- /dev/null
+++ b/arch/x86/include/asm/irqflags.h
@@ -0,0 +1,211 @@
1#ifndef _X86_IRQFLAGS_H_
2#define _X86_IRQFLAGS_H_
3
4#include <asm/processor-flags.h>
5
6#ifndef __ASSEMBLY__
7/*
8 * Interrupt control:
9 */
10
11static inline unsigned long native_save_fl(void)
12{
13 unsigned long flags;
14
15 asm volatile("# __raw_save_flags\n\t"
16 "pushf ; pop %0"
17 : "=g" (flags)
18 : /* no input */
19 : "memory");
20
21 return flags;
22}
23
24static inline void native_restore_fl(unsigned long flags)
25{
26 asm volatile("push %0 ; popf"
27 : /* no output */
28 :"g" (flags)
29 :"memory", "cc");
30}
31
32static inline void native_irq_disable(void)
33{
34 asm volatile("cli": : :"memory");
35}
36
37static inline void native_irq_enable(void)
38{
39 asm volatile("sti": : :"memory");
40}
41
42static inline void native_safe_halt(void)
43{
44 asm volatile("sti; hlt": : :"memory");
45}
46
47static inline void native_halt(void)
48{
49 asm volatile("hlt": : :"memory");
50}
51
52#endif
53
54#ifdef CONFIG_PARAVIRT
55#include <asm/paravirt.h>
56#else
57#ifndef __ASSEMBLY__
58
59static inline unsigned long __raw_local_save_flags(void)
60{
61 return native_save_fl();
62}
63
64static inline void raw_local_irq_restore(unsigned long flags)
65{
66 native_restore_fl(flags);
67}
68
69static inline void raw_local_irq_disable(void)
70{
71 native_irq_disable();
72}
73
74static inline void raw_local_irq_enable(void)
75{
76 native_irq_enable();
77}
78
79/*
80 * Used in the idle loop; sti takes one instruction cycle
81 * to complete:
82 */
83static inline void raw_safe_halt(void)
84{
85 native_safe_halt();
86}
87
88/*
89 * Used when interrupts are already enabled or to
90 * shutdown the processor:
91 */
92static inline void halt(void)
93{
94 native_halt();
95}
96
97/*
98 * For spinlocks, etc:
99 */
100static inline unsigned long __raw_local_irq_save(void)
101{
102 unsigned long flags = __raw_local_save_flags();
103
104 raw_local_irq_disable();
105
106 return flags;
107}
108#else
109
110#define ENABLE_INTERRUPTS(x) sti
111#define DISABLE_INTERRUPTS(x) cli
112
113#ifdef CONFIG_X86_64
114#define SWAPGS swapgs
115/*
116 * Currently paravirt can't handle swapgs nicely when we
117 * don't have a stack we can rely on (such as a user space
118 * stack). So we either find a way around these or just fault
119 * and emulate if a guest tries to call swapgs directly.
120 *
121 * Either way, this is a good way to document that we don't
122 * have a reliable stack. x86_64 only.
123 */
124#define SWAPGS_UNSAFE_STACK swapgs
125
126#define PARAVIRT_ADJUST_EXCEPTION_FRAME /* */
127
128#define INTERRUPT_RETURN iretq
129#define USERGS_SYSRET64 \
130 swapgs; \
131 sysretq;
132#define USERGS_SYSRET32 \
133 swapgs; \
134 sysretl
135#define ENABLE_INTERRUPTS_SYSEXIT32 \
136 swapgs; \
137 sti; \
138 sysexit
139
140#else
141#define INTERRUPT_RETURN iret
142#define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
143#define GET_CR0_INTO_EAX movl %cr0, %eax
144#endif
145
146
147#endif /* __ASSEMBLY__ */
148#endif /* CONFIG_PARAVIRT */
149
150#ifndef __ASSEMBLY__
151#define raw_local_save_flags(flags) \
152 do { (flags) = __raw_local_save_flags(); } while (0)
153
154#define raw_local_irq_save(flags) \
155 do { (flags) = __raw_local_irq_save(); } while (0)
156
157static inline int raw_irqs_disabled_flags(unsigned long flags)
158{
159 return !(flags & X86_EFLAGS_IF);
160}
161
162static inline int raw_irqs_disabled(void)
163{
164 unsigned long flags = __raw_local_save_flags();
165
166 return raw_irqs_disabled_flags(flags);
167}
168
169#else
170
171#ifdef CONFIG_X86_64
172#define ARCH_LOCKDEP_SYS_EXIT call lockdep_sys_exit_thunk
173#define ARCH_LOCKDEP_SYS_EXIT_IRQ \
174 TRACE_IRQS_ON; \
175 sti; \
176 SAVE_REST; \
177 LOCKDEP_SYS_EXIT; \
178 RESTORE_REST; \
179 cli; \
180 TRACE_IRQS_OFF;
181
182#else
183#define ARCH_LOCKDEP_SYS_EXIT \
184 pushl %eax; \
185 pushl %ecx; \
186 pushl %edx; \
187 call lockdep_sys_exit; \
188 popl %edx; \
189 popl %ecx; \
190 popl %eax;
191
192#define ARCH_LOCKDEP_SYS_EXIT_IRQ
193#endif
194
195#ifdef CONFIG_TRACE_IRQFLAGS
196# define TRACE_IRQS_ON call trace_hardirqs_on_thunk;
197# define TRACE_IRQS_OFF call trace_hardirqs_off_thunk;
198#else
199# define TRACE_IRQS_ON
200# define TRACE_IRQS_OFF
201#endif
202#ifdef CONFIG_DEBUG_LOCK_ALLOC
203# define LOCKDEP_SYS_EXIT ARCH_LOCKDEP_SYS_EXIT
204# define LOCKDEP_SYS_EXIT_IRQ ARCH_LOCKDEP_SYS_EXIT_IRQ
205# else
206# define LOCKDEP_SYS_EXIT
207# define LOCKDEP_SYS_EXIT_IRQ
208# endif
209
210#endif /* __ASSEMBLY__ */
211#endif
diff --git a/arch/x86/include/asm/ist.h b/arch/x86/include/asm/ist.h
new file mode 100644
index 000000000000..7e5dff1de0e9
--- /dev/null
+++ b/arch/x86/include/asm/ist.h
@@ -0,0 +1,34 @@
1#ifndef _ASM_X86_IST_H
2#define _ASM_X86_IST_H
3
4/*
5 * Include file for the interface to IST BIOS
6 * Copyright 2002 Andy Grover <andrew.grover@intel.com>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2, or (at your option) any
11 * later version.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 */
18
19
20#include <linux/types.h>
21
22struct ist_info {
23 __u32 signature;
24 __u32 command;
25 __u32 event;
26 __u32 perf_level;
27};
28
29#ifdef __KERNEL__
30
31extern struct ist_info ist_info;
32
33#endif /* __KERNEL__ */
34#endif /* _ASM_X86_IST_H */
diff --git a/arch/x86/include/asm/k8.h b/arch/x86/include/asm/k8.h
new file mode 100644
index 000000000000..54c8cc53b24d
--- /dev/null
+++ b/arch/x86/include/asm/k8.h
@@ -0,0 +1,15 @@
1#ifndef _ASM_X86_K8_H
2#define _ASM_X86_K8_H
3
4#include <linux/pci.h>
5
6extern struct pci_device_id k8_nb_ids[];
7
8extern int early_is_k8_nb(u32 value);
9extern struct pci_dev **k8_northbridges;
10extern int num_k8_northbridges;
11extern int cache_k8_northbridges(void);
12extern void k8_flush_garts(void);
13extern int k8_scan_nodes(unsigned long start, unsigned long end);
14
15#endif /* _ASM_X86_K8_H */
diff --git a/arch/x86/include/asm/kdebug.h b/arch/x86/include/asm/kdebug.h
new file mode 100644
index 000000000000..fa7c0b974761
--- /dev/null
+++ b/arch/x86/include/asm/kdebug.h
@@ -0,0 +1,37 @@
1#ifndef _ASM_X86_KDEBUG_H
2#define _ASM_X86_KDEBUG_H
3
4#include <linux/notifier.h>
5
6struct pt_regs;
7
8/* Grossly misnamed. */
9enum die_val {
10 DIE_OOPS = 1,
11 DIE_INT3,
12 DIE_DEBUG,
13 DIE_PANIC,
14 DIE_NMI,
15 DIE_DIE,
16 DIE_NMIWATCHDOG,
17 DIE_KERNELDEBUG,
18 DIE_TRAP,
19 DIE_GPF,
20 DIE_CALL,
21 DIE_NMI_IPI,
22 DIE_PAGE_FAULT,
23 DIE_NMIUNKNOWN,
24};
25
26extern void printk_address(unsigned long address, int reliable);
27extern void die(const char *, struct pt_regs *,long);
28extern int __must_check __die(const char *, struct pt_regs *, long);
29extern void show_registers(struct pt_regs *regs);
30extern void show_trace(struct task_struct *t, struct pt_regs *regs,
31 unsigned long *sp, unsigned long bp);
32extern void __show_regs(struct pt_regs *regs, int all);
33extern void show_regs(struct pt_regs *regs);
34extern unsigned long oops_begin(void);
35extern void oops_end(unsigned long, struct pt_regs *, int signr);
36
37#endif /* _ASM_X86_KDEBUG_H */
diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
new file mode 100644
index 000000000000..a1f22771a15a
--- /dev/null
+++ b/arch/x86/include/asm/kexec.h
@@ -0,0 +1,175 @@
1#ifndef _ASM_X86_KEXEC_H
2#define _ASM_X86_KEXEC_H
3
4#ifdef CONFIG_X86_32
5# define PA_CONTROL_PAGE 0
6# define VA_CONTROL_PAGE 1
7# define PA_PGD 2
8# define VA_PGD 3
9# define PA_PTE_0 4
10# define VA_PTE_0 5
11# define PA_PTE_1 6
12# define VA_PTE_1 7
13# define PA_SWAP_PAGE 8
14# ifdef CONFIG_X86_PAE
15# define PA_PMD_0 9
16# define VA_PMD_0 10
17# define PA_PMD_1 11
18# define VA_PMD_1 12
19# define PAGES_NR 13
20# else
21# define PAGES_NR 9
22# endif
23#else
24# define PA_CONTROL_PAGE 0
25# define VA_CONTROL_PAGE 1
26# define PA_PGD 2
27# define VA_PGD 3
28# define PA_PUD_0 4
29# define VA_PUD_0 5
30# define PA_PMD_0 6
31# define VA_PMD_0 7
32# define PA_PTE_0 8
33# define VA_PTE_0 9
34# define PA_PUD_1 10
35# define VA_PUD_1 11
36# define PA_PMD_1 12
37# define VA_PMD_1 13
38# define PA_PTE_1 14
39# define VA_PTE_1 15
40# define PA_TABLE_PAGE 16
41# define PAGES_NR 17
42#endif
43
44#ifdef CONFIG_X86_32
45# define KEXEC_CONTROL_CODE_MAX_SIZE 2048
46#endif
47
48#ifndef __ASSEMBLY__
49
50#include <linux/string.h>
51
52#include <asm/page.h>
53#include <asm/ptrace.h>
54
55/*
56 * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return.
57 * I.e. Maximum page that is mapped directly into kernel memory,
58 * and kmap is not required.
59 *
60 * So far x86_64 is limited to 40 physical address bits.
61 */
62#ifdef CONFIG_X86_32
63/* Maximum physical address we can use pages from */
64# define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)
65/* Maximum address we can reach in physical address mode */
66# define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)
67/* Maximum address we can use for the control code buffer */
68# define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE
69
70# define KEXEC_CONTROL_PAGE_SIZE 4096
71
72/* The native architecture */
73# define KEXEC_ARCH KEXEC_ARCH_386
74
75/* We can also handle crash dumps from 64 bit kernel. */
76# define vmcore_elf_check_arch_cross(x) ((x)->e_machine == EM_X86_64)
77#else
78/* Maximum physical address we can use pages from */
79# define KEXEC_SOURCE_MEMORY_LIMIT (0xFFFFFFFFFFUL)
80/* Maximum address we can reach in physical address mode */
81# define KEXEC_DESTINATION_MEMORY_LIMIT (0xFFFFFFFFFFUL)
82/* Maximum address we can use for the control pages */
83# define KEXEC_CONTROL_MEMORY_LIMIT (0xFFFFFFFFFFUL)
84
85/* Allocate one page for the pdp and the second for the code */
86# define KEXEC_CONTROL_PAGE_SIZE (4096UL + 4096UL)
87
88/* The native architecture */
89# define KEXEC_ARCH KEXEC_ARCH_X86_64
90#endif
91
92/*
93 * CPU does not save ss and sp on stack if execution is already
94 * running in kernel mode at the time of NMI occurrence. This code
95 * fixes it.
96 */
97static inline void crash_fixup_ss_esp(struct pt_regs *newregs,
98 struct pt_regs *oldregs)
99{
100#ifdef CONFIG_X86_32
101 newregs->sp = (unsigned long)&(oldregs->sp);
102 asm volatile("xorl %%eax, %%eax\n\t"
103 "movw %%ss, %%ax\n\t"
104 :"=a"(newregs->ss));
105#endif
106}
107
108/*
109 * This function is responsible for capturing register states if coming
110 * via panic otherwise just fix up the ss and sp if coming via kernel
111 * mode exception.
112 */
113static inline void crash_setup_regs(struct pt_regs *newregs,
114 struct pt_regs *oldregs)
115{
116 if (oldregs) {
117 memcpy(newregs, oldregs, sizeof(*newregs));
118 crash_fixup_ss_esp(newregs, oldregs);
119 } else {
120#ifdef CONFIG_X86_32
121 asm volatile("movl %%ebx,%0" : "=m"(newregs->bx));
122 asm volatile("movl %%ecx,%0" : "=m"(newregs->cx));
123 asm volatile("movl %%edx,%0" : "=m"(newregs->dx));
124 asm volatile("movl %%esi,%0" : "=m"(newregs->si));
125 asm volatile("movl %%edi,%0" : "=m"(newregs->di));
126 asm volatile("movl %%ebp,%0" : "=m"(newregs->bp));
127 asm volatile("movl %%eax,%0" : "=m"(newregs->ax));
128 asm volatile("movl %%esp,%0" : "=m"(newregs->sp));
129 asm volatile("movl %%ss, %%eax;" :"=a"(newregs->ss));
130 asm volatile("movl %%cs, %%eax;" :"=a"(newregs->cs));
131 asm volatile("movl %%ds, %%eax;" :"=a"(newregs->ds));
132 asm volatile("movl %%es, %%eax;" :"=a"(newregs->es));
133 asm volatile("pushfl; popl %0" :"=m"(newregs->flags));
134#else
135 asm volatile("movq %%rbx,%0" : "=m"(newregs->bx));
136 asm volatile("movq %%rcx,%0" : "=m"(newregs->cx));
137 asm volatile("movq %%rdx,%0" : "=m"(newregs->dx));
138 asm volatile("movq %%rsi,%0" : "=m"(newregs->si));
139 asm volatile("movq %%rdi,%0" : "=m"(newregs->di));
140 asm volatile("movq %%rbp,%0" : "=m"(newregs->bp));
141 asm volatile("movq %%rax,%0" : "=m"(newregs->ax));
142 asm volatile("movq %%rsp,%0" : "=m"(newregs->sp));
143 asm volatile("movq %%r8,%0" : "=m"(newregs->r8));
144 asm volatile("movq %%r9,%0" : "=m"(newregs->r9));
145 asm volatile("movq %%r10,%0" : "=m"(newregs->r10));
146 asm volatile("movq %%r11,%0" : "=m"(newregs->r11));
147 asm volatile("movq %%r12,%0" : "=m"(newregs->r12));
148 asm volatile("movq %%r13,%0" : "=m"(newregs->r13));
149 asm volatile("movq %%r14,%0" : "=m"(newregs->r14));
150 asm volatile("movq %%r15,%0" : "=m"(newregs->r15));
151 asm volatile("movl %%ss, %%eax;" :"=a"(newregs->ss));
152 asm volatile("movl %%cs, %%eax;" :"=a"(newregs->cs));
153 asm volatile("pushfq; popq %0" :"=m"(newregs->flags));
154#endif
155 newregs->ip = (unsigned long)current_text_addr();
156 }
157}
158
159#ifdef CONFIG_X86_32
160asmlinkage unsigned long
161relocate_kernel(unsigned long indirection_page,
162 unsigned long control_page,
163 unsigned long start_address,
164 unsigned int has_pae,
165 unsigned int preserve_context);
166#else
167NORET_TYPE void
168relocate_kernel(unsigned long indirection_page,
169 unsigned long page_list,
170 unsigned long start_address) ATTRIB_NORET;
171#endif
172
173#endif /* __ASSEMBLY__ */
174
175#endif /* _ASM_X86_KEXEC_H */
diff --git a/arch/x86/include/asm/kgdb.h b/arch/x86/include/asm/kgdb.h
new file mode 100644
index 000000000000..e6c6c808489f
--- /dev/null
+++ b/arch/x86/include/asm/kgdb.h
@@ -0,0 +1,79 @@
1#ifndef _ASM_X86_KGDB_H
2#define _ASM_X86_KGDB_H
3
4/*
5 * Copyright (C) 2001-2004 Amit S. Kale
6 * Copyright (C) 2008 Wind River Systems, Inc.
7 */
8
9/*
10 * BUFMAX defines the maximum number of characters in inbound/outbound
11 * buffers at least NUMREGBYTES*2 are needed for register packets
12 * Longer buffer is needed to list all threads
13 */
14#define BUFMAX 1024
15
16/*
17 * Note that this register image is in a different order than
18 * the register image that Linux produces at interrupt time.
19 *
20 * Linux's register image is defined by struct pt_regs in ptrace.h.
21 * Just why GDB uses a different order is a historical mystery.
22 */
23#ifdef CONFIG_X86_32
24enum regnames {
25 GDB_AX, /* 0 */
26 GDB_CX, /* 1 */
27 GDB_DX, /* 2 */
28 GDB_BX, /* 3 */
29 GDB_SP, /* 4 */
30 GDB_BP, /* 5 */
31 GDB_SI, /* 6 */
32 GDB_DI, /* 7 */
33 GDB_PC, /* 8 also known as eip */
34 GDB_PS, /* 9 also known as eflags */
35 GDB_CS, /* 10 */
36 GDB_SS, /* 11 */
37 GDB_DS, /* 12 */
38 GDB_ES, /* 13 */
39 GDB_FS, /* 14 */
40 GDB_GS, /* 15 */
41};
42#define NUMREGBYTES ((GDB_GS+1)*4)
43#else /* ! CONFIG_X86_32 */
44enum regnames64 {
45 GDB_AX, /* 0 */
46 GDB_BX, /* 1 */
47 GDB_CX, /* 2 */
48 GDB_DX, /* 3 */
49 GDB_SI, /* 4 */
50 GDB_DI, /* 5 */
51 GDB_BP, /* 6 */
52 GDB_SP, /* 7 */
53 GDB_R8, /* 8 */
54 GDB_R9, /* 9 */
55 GDB_R10, /* 10 */
56 GDB_R11, /* 11 */
57 GDB_R12, /* 12 */
58 GDB_R13, /* 13 */
59 GDB_R14, /* 14 */
60 GDB_R15, /* 15 */
61 GDB_PC, /* 16 */
62};
63
64enum regnames32 {
65 GDB_PS = 34,
66 GDB_CS,
67 GDB_SS,
68};
69#define NUMREGBYTES ((GDB_SS+1)*4)
70#endif /* CONFIG_X86_32 */
71
72static inline void arch_kgdb_breakpoint(void)
73{
74 asm(" int $3");
75}
76#define BREAK_INSTR_SIZE 1
77#define CACHE_FLUSH_IS_SAFE 1
78
79#endif /* _ASM_X86_KGDB_H */
diff --git a/arch/x86/include/asm/kmap_types.h b/arch/x86/include/asm/kmap_types.h
new file mode 100644
index 000000000000..5759c165a5cf
--- /dev/null
+++ b/arch/x86/include/asm/kmap_types.h
@@ -0,0 +1,29 @@
1#ifndef _ASM_X86_KMAP_TYPES_H
2#define _ASM_X86_KMAP_TYPES_H
3
4#if defined(CONFIG_X86_32) && defined(CONFIG_DEBUG_HIGHMEM)
5# define D(n) __KM_FENCE_##n ,
6#else
7# define D(n)
8#endif
9
10enum km_type {
11D(0) KM_BOUNCE_READ,
12D(1) KM_SKB_SUNRPC_DATA,
13D(2) KM_SKB_DATA_SOFTIRQ,
14D(3) KM_USER0,
15D(4) KM_USER1,
16D(5) KM_BIO_SRC_IRQ,
17D(6) KM_BIO_DST_IRQ,
18D(7) KM_PTE0,
19D(8) KM_PTE1,
20D(9) KM_IRQ0,
21D(10) KM_IRQ1,
22D(11) KM_SOFTIRQ0,
23D(12) KM_SOFTIRQ1,
24D(13) KM_TYPE_NR
25};
26
27#undef D
28
29#endif /* _ASM_X86_KMAP_TYPES_H */
diff --git a/arch/x86/include/asm/kprobes.h b/arch/x86/include/asm/kprobes.h
new file mode 100644
index 000000000000..4fe681de1e76
--- /dev/null
+++ b/arch/x86/include/asm/kprobes.h
@@ -0,0 +1,88 @@
1#ifndef _ASM_X86_KPROBES_H
2#define _ASM_X86_KPROBES_H
3/*
4 * Kernel Probes (KProbes)
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 * Copyright (C) IBM Corporation, 2002, 2004
21 *
22 * See arch/x86/kernel/kprobes.c for x86 kprobes history.
23 */
24#include <linux/types.h>
25#include <linux/ptrace.h>
26#include <linux/percpu.h>
27
28#define __ARCH_WANT_KPROBES_INSN_SLOT
29
30struct pt_regs;
31struct kprobe;
32
33typedef u8 kprobe_opcode_t;
34#define BREAKPOINT_INSTRUCTION 0xcc
35#define RELATIVEJUMP_INSTRUCTION 0xe9
36#define MAX_INSN_SIZE 16
37#define MAX_STACK_SIZE 64
38#define MIN_STACK_SIZE(ADDR) \
39 (((MAX_STACK_SIZE) < (((unsigned long)current_thread_info()) + \
40 THREAD_SIZE - (unsigned long)(ADDR))) \
41 ? (MAX_STACK_SIZE) \
42 : (((unsigned long)current_thread_info()) + \
43 THREAD_SIZE - (unsigned long)(ADDR)))
44
45#define flush_insn_slot(p) do { } while (0)
46
47extern const int kretprobe_blacklist_size;
48
49void arch_remove_kprobe(struct kprobe *p);
50void kretprobe_trampoline(void);
51
52/* Architecture specific copy of original instruction*/
53struct arch_specific_insn {
54 /* copy of the original instruction */
55 kprobe_opcode_t *insn;
56 /*
57 * boostable = -1: This instruction type is not boostable.
58 * boostable = 0: This instruction type is boostable.
59 * boostable = 1: This instruction has been boosted: we have
60 * added a relative jump after the instruction copy in insn,
61 * so no single-step and fixup are needed (unless there's
62 * a post_handler or break_handler).
63 */
64 int boostable;
65};
66
67struct prev_kprobe {
68 struct kprobe *kp;
69 unsigned long status;
70 unsigned long old_flags;
71 unsigned long saved_flags;
72};
73
74/* per-cpu kprobe control block */
75struct kprobe_ctlblk {
76 unsigned long kprobe_status;
77 unsigned long kprobe_old_flags;
78 unsigned long kprobe_saved_flags;
79 unsigned long *jprobe_saved_sp;
80 struct pt_regs jprobe_saved_regs;
81 kprobe_opcode_t jprobes_stack[MAX_STACK_SIZE];
82 struct prev_kprobe prev_kprobe;
83};
84
85extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
86extern int kprobe_exceptions_notify(struct notifier_block *self,
87 unsigned long val, void *data);
88#endif /* _ASM_X86_KPROBES_H */
diff --git a/arch/x86/include/asm/kvm.h b/arch/x86/include/asm/kvm.h
new file mode 100644
index 000000000000..b95162af0bf6
--- /dev/null
+++ b/arch/x86/include/asm/kvm.h
@@ -0,0 +1,211 @@
1#ifndef _ASM_X86_KVM_H
2#define _ASM_X86_KVM_H
3
4/*
5 * KVM x86 specific structures and definitions
6 *
7 */
8
9#include <asm/types.h>
10#include <linux/ioctl.h>
11
12/* Architectural interrupt line count. */
13#define KVM_NR_INTERRUPTS 256
14
15struct kvm_memory_alias {
16 __u32 slot; /* this has a different namespace than memory slots */
17 __u32 flags;
18 __u64 guest_phys_addr;
19 __u64 memory_size;
20 __u64 target_phys_addr;
21};
22
23/* for KVM_GET_IRQCHIP and KVM_SET_IRQCHIP */
24struct kvm_pic_state {
25 __u8 last_irr; /* edge detection */
26 __u8 irr; /* interrupt request register */
27 __u8 imr; /* interrupt mask register */
28 __u8 isr; /* interrupt service register */
29 __u8 priority_add; /* highest irq priority */
30 __u8 irq_base;
31 __u8 read_reg_select;
32 __u8 poll;
33 __u8 special_mask;
34 __u8 init_state;
35 __u8 auto_eoi;
36 __u8 rotate_on_auto_eoi;
37 __u8 special_fully_nested_mode;
38 __u8 init4; /* true if 4 byte init */
39 __u8 elcr; /* PIIX edge/trigger selection */
40 __u8 elcr_mask;
41};
42
43#define KVM_IOAPIC_NUM_PINS 24
44struct kvm_ioapic_state {
45 __u64 base_address;
46 __u32 ioregsel;
47 __u32 id;
48 __u32 irr;
49 __u32 pad;
50 union {
51 __u64 bits;
52 struct {
53 __u8 vector;
54 __u8 delivery_mode:3;
55 __u8 dest_mode:1;
56 __u8 delivery_status:1;
57 __u8 polarity:1;
58 __u8 remote_irr:1;
59 __u8 trig_mode:1;
60 __u8 mask:1;
61 __u8 reserve:7;
62 __u8 reserved[4];
63 __u8 dest_id;
64 } fields;
65 } redirtbl[KVM_IOAPIC_NUM_PINS];
66};
67
68#define KVM_IRQCHIP_PIC_MASTER 0
69#define KVM_IRQCHIP_PIC_SLAVE 1
70#define KVM_IRQCHIP_IOAPIC 2
71
72/* for KVM_GET_REGS and KVM_SET_REGS */
73struct kvm_regs {
74 /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */
75 __u64 rax, rbx, rcx, rdx;
76 __u64 rsi, rdi, rsp, rbp;
77 __u64 r8, r9, r10, r11;
78 __u64 r12, r13, r14, r15;
79 __u64 rip, rflags;
80};
81
82/* for KVM_GET_LAPIC and KVM_SET_LAPIC */
83#define KVM_APIC_REG_SIZE 0x400
84struct kvm_lapic_state {
85 char regs[KVM_APIC_REG_SIZE];
86};
87
88struct kvm_segment {
89 __u64 base;
90 __u32 limit;
91 __u16 selector;
92 __u8 type;
93 __u8 present, dpl, db, s, l, g, avl;
94 __u8 unusable;
95 __u8 padding;
96};
97
98struct kvm_dtable {
99 __u64 base;
100 __u16 limit;
101 __u16 padding[3];
102};
103
104
105/* for KVM_GET_SREGS and KVM_SET_SREGS */
106struct kvm_sregs {
107 /* out (KVM_GET_SREGS) / in (KVM_SET_SREGS) */
108 struct kvm_segment cs, ds, es, fs, gs, ss;
109 struct kvm_segment tr, ldt;
110 struct kvm_dtable gdt, idt;
111 __u64 cr0, cr2, cr3, cr4, cr8;
112 __u64 efer;
113 __u64 apic_base;
114 __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
115};
116
117/* for KVM_GET_FPU and KVM_SET_FPU */
118struct kvm_fpu {
119 __u8 fpr[8][16];
120 __u16 fcw;
121 __u16 fsw;
122 __u8 ftwx; /* in fxsave format */
123 __u8 pad1;
124 __u16 last_opcode;
125 __u64 last_ip;
126 __u64 last_dp;
127 __u8 xmm[16][16];
128 __u32 mxcsr;
129 __u32 pad2;
130};
131
132struct kvm_msr_entry {
133 __u32 index;
134 __u32 reserved;
135 __u64 data;
136};
137
138/* for KVM_GET_MSRS and KVM_SET_MSRS */
139struct kvm_msrs {
140 __u32 nmsrs; /* number of msrs in entries */
141 __u32 pad;
142
143 struct kvm_msr_entry entries[0];
144};
145
146/* for KVM_GET_MSR_INDEX_LIST */
147struct kvm_msr_list {
148 __u32 nmsrs; /* number of msrs in entries */
149 __u32 indices[0];
150};
151
152
153struct kvm_cpuid_entry {
154 __u32 function;
155 __u32 eax;
156 __u32 ebx;
157 __u32 ecx;
158 __u32 edx;
159 __u32 padding;
160};
161
162/* for KVM_SET_CPUID */
163struct kvm_cpuid {
164 __u32 nent;
165 __u32 padding;
166 struct kvm_cpuid_entry entries[0];
167};
168
169struct kvm_cpuid_entry2 {
170 __u32 function;
171 __u32 index;
172 __u32 flags;
173 __u32 eax;
174 __u32 ebx;
175 __u32 ecx;
176 __u32 edx;
177 __u32 padding[3];
178};
179
180#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX 1
181#define KVM_CPUID_FLAG_STATEFUL_FUNC 2
182#define KVM_CPUID_FLAG_STATE_READ_NEXT 4
183
184/* for KVM_SET_CPUID2 */
185struct kvm_cpuid2 {
186 __u32 nent;
187 __u32 padding;
188 struct kvm_cpuid_entry2 entries[0];
189};
190
191/* for KVM_GET_PIT and KVM_SET_PIT */
192struct kvm_pit_channel_state {
193 __u32 count; /* can be 65536 */
194 __u16 latched_count;
195 __u8 count_latched;
196 __u8 status_latched;
197 __u8 status;
198 __u8 read_state;
199 __u8 write_state;
200 __u8 write_latch;
201 __u8 rw_mode;
202 __u8 mode;
203 __u8 bcd;
204 __u8 gate;
205 __s64 count_load_time;
206};
207
208struct kvm_pit_state {
209 struct kvm_pit_channel_state channels[3];
210};
211#endif /* _ASM_X86_KVM_H */
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
new file mode 100644
index 000000000000..65679d006337
--- /dev/null
+++ b/arch/x86/include/asm/kvm_host.h
@@ -0,0 +1,752 @@
1/*
2 * Kernel-based Virtual Machine driver for Linux
3 *
4 * This header defines architecture specific interfaces, x86 version
5 *
6 * This work is licensed under the terms of the GNU GPL, version 2. See
7 * the COPYING file in the top-level directory.
8 *
9 */
10
11#ifndef _ASM_X86_KVM_HOST_H
12#define _ASM_X86_KVM_HOST_H
13
14#include <linux/types.h>
15#include <linux/mm.h>
16#include <linux/mmu_notifier.h>
17
18#include <linux/kvm.h>
19#include <linux/kvm_para.h>
20#include <linux/kvm_types.h>
21
22#include <asm/pvclock-abi.h>
23#include <asm/desc.h>
24
25#define KVM_MAX_VCPUS 16
26#define KVM_MEMORY_SLOTS 32
27/* memory slots that does not exposed to userspace */
28#define KVM_PRIVATE_MEM_SLOTS 4
29
30#define KVM_PIO_PAGE_OFFSET 1
31#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
32
33#define CR3_PAE_RESERVED_BITS ((X86_CR3_PWT | X86_CR3_PCD) - 1)
34#define CR3_NONPAE_RESERVED_BITS ((PAGE_SIZE-1) & ~(X86_CR3_PWT | X86_CR3_PCD))
35#define CR3_L_MODE_RESERVED_BITS (CR3_NONPAE_RESERVED_BITS | \
36 0xFFFFFF0000000000ULL)
37
38#define KVM_GUEST_CR0_MASK \
39 (X86_CR0_PG | X86_CR0_PE | X86_CR0_WP | X86_CR0_NE \
40 | X86_CR0_NW | X86_CR0_CD)
41#define KVM_VM_CR0_ALWAYS_ON \
42 (X86_CR0_PG | X86_CR0_PE | X86_CR0_WP | X86_CR0_NE | X86_CR0_TS \
43 | X86_CR0_MP)
44#define KVM_GUEST_CR4_MASK \
45 (X86_CR4_VME | X86_CR4_PSE | X86_CR4_PAE | X86_CR4_PGE | X86_CR4_VMXE)
46#define KVM_PMODE_VM_CR4_ALWAYS_ON (X86_CR4_PAE | X86_CR4_VMXE)
47#define KVM_RMODE_VM_CR4_ALWAYS_ON (X86_CR4_VME | X86_CR4_PAE | X86_CR4_VMXE)
48
49#define INVALID_PAGE (~(hpa_t)0)
50#define UNMAPPED_GVA (~(gpa_t)0)
51
52/* shadow tables are PAE even on non-PAE hosts */
53#define KVM_HPAGE_SHIFT 21
54#define KVM_HPAGE_SIZE (1UL << KVM_HPAGE_SHIFT)
55#define KVM_HPAGE_MASK (~(KVM_HPAGE_SIZE - 1))
56
57#define KVM_PAGES_PER_HPAGE (KVM_HPAGE_SIZE / PAGE_SIZE)
58
59#define DE_VECTOR 0
60#define DB_VECTOR 1
61#define BP_VECTOR 3
62#define OF_VECTOR 4
63#define BR_VECTOR 5
64#define UD_VECTOR 6
65#define NM_VECTOR 7
66#define DF_VECTOR 8
67#define TS_VECTOR 10
68#define NP_VECTOR 11
69#define SS_VECTOR 12
70#define GP_VECTOR 13
71#define PF_VECTOR 14
72#define MF_VECTOR 16
73#define MC_VECTOR 18
74
75#define SELECTOR_TI_MASK (1 << 2)
76#define SELECTOR_RPL_MASK 0x03
77
78#define IOPL_SHIFT 12
79
80#define KVM_ALIAS_SLOTS 4
81
82#define KVM_PERMILLE_MMU_PAGES 20
83#define KVM_MIN_ALLOC_MMU_PAGES 64
84#define KVM_MMU_HASH_SHIFT 10
85#define KVM_NUM_MMU_PAGES (1 << KVM_MMU_HASH_SHIFT)
86#define KVM_MIN_FREE_MMU_PAGES 5
87#define KVM_REFILL_PAGES 25
88#define KVM_MAX_CPUID_ENTRIES 40
89#define KVM_NR_VAR_MTRR 8
90
91extern spinlock_t kvm_lock;
92extern struct list_head vm_list;
93
94struct kvm_vcpu;
95struct kvm;
96
97enum kvm_reg {
98 VCPU_REGS_RAX = 0,
99 VCPU_REGS_RCX = 1,
100 VCPU_REGS_RDX = 2,
101 VCPU_REGS_RBX = 3,
102 VCPU_REGS_RSP = 4,
103 VCPU_REGS_RBP = 5,
104 VCPU_REGS_RSI = 6,
105 VCPU_REGS_RDI = 7,
106#ifdef CONFIG_X86_64
107 VCPU_REGS_R8 = 8,
108 VCPU_REGS_R9 = 9,
109 VCPU_REGS_R10 = 10,
110 VCPU_REGS_R11 = 11,
111 VCPU_REGS_R12 = 12,
112 VCPU_REGS_R13 = 13,
113 VCPU_REGS_R14 = 14,
114 VCPU_REGS_R15 = 15,
115#endif
116 VCPU_REGS_RIP,
117 NR_VCPU_REGS
118};
119
120enum {
121 VCPU_SREG_ES,
122 VCPU_SREG_CS,
123 VCPU_SREG_SS,
124 VCPU_SREG_DS,
125 VCPU_SREG_FS,
126 VCPU_SREG_GS,
127 VCPU_SREG_TR,
128 VCPU_SREG_LDTR,
129};
130
131#include <asm/kvm_x86_emulate.h>
132
133#define KVM_NR_MEM_OBJS 40
134
135struct kvm_guest_debug {
136 int enabled;
137 unsigned long bp[4];
138 int singlestep;
139};
140
141/*
142 * We don't want allocation failures within the mmu code, so we preallocate
143 * enough memory for a single page fault in a cache.
144 */
145struct kvm_mmu_memory_cache {
146 int nobjs;
147 void *objects[KVM_NR_MEM_OBJS];
148};
149
150#define NR_PTE_CHAIN_ENTRIES 5
151
152struct kvm_pte_chain {
153 u64 *parent_ptes[NR_PTE_CHAIN_ENTRIES];
154 struct hlist_node link;
155};
156
157/*
158 * kvm_mmu_page_role, below, is defined as:
159 *
160 * bits 0:3 - total guest paging levels (2-4, or zero for real mode)
161 * bits 4:7 - page table level for this shadow (1-4)
162 * bits 8:9 - page table quadrant for 2-level guests
163 * bit 16 - "metaphysical" - gfn is not a real page (huge page/real mode)
164 * bits 17:19 - common access permissions for all ptes in this shadow page
165 */
166union kvm_mmu_page_role {
167 unsigned word;
168 struct {
169 unsigned glevels:4;
170 unsigned level:4;
171 unsigned quadrant:2;
172 unsigned pad_for_nice_hex_output:6;
173 unsigned metaphysical:1;
174 unsigned access:3;
175 unsigned invalid:1;
176 };
177};
178
179struct kvm_mmu_page {
180 struct list_head link;
181 struct hlist_node hash_link;
182
183 /*
184 * The following two entries are used to key the shadow page in the
185 * hash table.
186 */
187 gfn_t gfn;
188 union kvm_mmu_page_role role;
189
190 u64 *spt;
191 /* hold the gfn of each spte inside spt */
192 gfn_t *gfns;
193 unsigned long slot_bitmap; /* One bit set per slot which has memory
194 * in this shadow page.
195 */
196 int multimapped; /* More than one parent_pte? */
197 int root_count; /* Currently serving as active root */
198 bool unsync;
199 bool unsync_children;
200 union {
201 u64 *parent_pte; /* !multimapped */
202 struct hlist_head parent_ptes; /* multimapped, kvm_pte_chain */
203 };
204 DECLARE_BITMAP(unsync_child_bitmap, 512);
205};
206
207struct kvm_pv_mmu_op_buffer {
208 void *ptr;
209 unsigned len;
210 unsigned processed;
211 char buf[512] __aligned(sizeof(long));
212};
213
214/*
215 * x86 supports 3 paging modes (4-level 64-bit, 3-level 64-bit, and 2-level
216 * 32-bit). The kvm_mmu structure abstracts the details of the current mmu
217 * mode.
218 */
219struct kvm_mmu {
220 void (*new_cr3)(struct kvm_vcpu *vcpu);
221 int (*page_fault)(struct kvm_vcpu *vcpu, gva_t gva, u32 err);
222 void (*free)(struct kvm_vcpu *vcpu);
223 gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva);
224 void (*prefetch_page)(struct kvm_vcpu *vcpu,
225 struct kvm_mmu_page *page);
226 int (*sync_page)(struct kvm_vcpu *vcpu,
227 struct kvm_mmu_page *sp);
228 void (*invlpg)(struct kvm_vcpu *vcpu, gva_t gva);
229 hpa_t root_hpa;
230 int root_level;
231 int shadow_root_level;
232
233 u64 *pae_root;
234};
235
236struct kvm_vcpu_arch {
237 u64 host_tsc;
238 int interrupt_window_open;
239 unsigned long irq_summary; /* bit vector: 1 per word in irq_pending */
240 DECLARE_BITMAP(irq_pending, KVM_NR_INTERRUPTS);
241 /*
242 * rip and regs accesses must go through
243 * kvm_{register,rip}_{read,write} functions.
244 */
245 unsigned long regs[NR_VCPU_REGS];
246 u32 regs_avail;
247 u32 regs_dirty;
248
249 unsigned long cr0;
250 unsigned long cr2;
251 unsigned long cr3;
252 unsigned long cr4;
253 unsigned long cr8;
254 u64 pdptrs[4]; /* pae */
255 u64 shadow_efer;
256 u64 apic_base;
257 struct kvm_lapic *apic; /* kernel irqchip context */
258 int mp_state;
259 int sipi_vector;
260 u64 ia32_misc_enable_msr;
261 bool tpr_access_reporting;
262
263 struct kvm_mmu mmu;
264 /* only needed in kvm_pv_mmu_op() path, but it's hot so
265 * put it here to avoid allocation */
266 struct kvm_pv_mmu_op_buffer mmu_op_buffer;
267
268 struct kvm_mmu_memory_cache mmu_pte_chain_cache;
269 struct kvm_mmu_memory_cache mmu_rmap_desc_cache;
270 struct kvm_mmu_memory_cache mmu_page_cache;
271 struct kvm_mmu_memory_cache mmu_page_header_cache;
272
273 gfn_t last_pt_write_gfn;
274 int last_pt_write_count;
275 u64 *last_pte_updated;
276 gfn_t last_pte_gfn;
277
278 struct {
279 gfn_t gfn; /* presumed gfn during guest pte update */
280 pfn_t pfn; /* pfn corresponding to that gfn */
281 int largepage;
282 unsigned long mmu_seq;
283 } update_pte;
284
285 struct i387_fxsave_struct host_fx_image;
286 struct i387_fxsave_struct guest_fx_image;
287
288 gva_t mmio_fault_cr2;
289 struct kvm_pio_request pio;
290 void *pio_data;
291
292 struct kvm_queued_exception {
293 bool pending;
294 bool has_error_code;
295 u8 nr;
296 u32 error_code;
297 } exception;
298
299 struct kvm_queued_interrupt {
300 bool pending;
301 u8 nr;
302 } interrupt;
303
304 struct {
305 int active;
306 u8 save_iopl;
307 struct kvm_save_segment {
308 u16 selector;
309 unsigned long base;
310 u32 limit;
311 u32 ar;
312 } tr, es, ds, fs, gs;
313 } rmode;
314 int halt_request; /* real mode on Intel only */
315
316 int cpuid_nent;
317 struct kvm_cpuid_entry2 cpuid_entries[KVM_MAX_CPUID_ENTRIES];
318 /* emulate context */
319
320 struct x86_emulate_ctxt emulate_ctxt;
321
322 gpa_t time;
323 struct pvclock_vcpu_time_info hv_clock;
324 unsigned int hv_clock_tsc_khz;
325 unsigned int time_offset;
326 struct page *time_page;
327
328 bool nmi_pending;
329 bool nmi_injected;
330
331 u64 mtrr[0x100];
332};
333
334struct kvm_mem_alias {
335 gfn_t base_gfn;
336 unsigned long npages;
337 gfn_t target_gfn;
338};
339
340struct kvm_arch{
341 int naliases;
342 struct kvm_mem_alias aliases[KVM_ALIAS_SLOTS];
343
344 unsigned int n_free_mmu_pages;
345 unsigned int n_requested_mmu_pages;
346 unsigned int n_alloc_mmu_pages;
347 struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
348 /*
349 * Hash table of struct kvm_mmu_page.
350 */
351 struct list_head active_mmu_pages;
352 struct list_head assigned_dev_head;
353 struct dmar_domain *intel_iommu_domain;
354 struct kvm_pic *vpic;
355 struct kvm_ioapic *vioapic;
356 struct kvm_pit *vpit;
357 struct hlist_head irq_ack_notifier_list;
358
359 int round_robin_prev_vcpu;
360 unsigned int tss_addr;
361 struct page *apic_access_page;
362
363 gpa_t wall_clock;
364
365 struct page *ept_identity_pagetable;
366 bool ept_identity_pagetable_done;
367};
368
369struct kvm_vm_stat {
370 u32 mmu_shadow_zapped;
371 u32 mmu_pte_write;
372 u32 mmu_pte_updated;
373 u32 mmu_pde_zapped;
374 u32 mmu_flooded;
375 u32 mmu_recycled;
376 u32 mmu_cache_miss;
377 u32 mmu_unsync;
378 u32 remote_tlb_flush;
379 u32 lpages;
380};
381
382struct kvm_vcpu_stat {
383 u32 pf_fixed;
384 u32 pf_guest;
385 u32 tlb_flush;
386 u32 invlpg;
387
388 u32 exits;
389 u32 io_exits;
390 u32 mmio_exits;
391 u32 signal_exits;
392 u32 irq_window_exits;
393 u32 nmi_window_exits;
394 u32 halt_exits;
395 u32 halt_wakeup;
396 u32 request_irq_exits;
397 u32 irq_exits;
398 u32 host_state_reload;
399 u32 efer_reload;
400 u32 fpu_reload;
401 u32 insn_emulation;
402 u32 insn_emulation_fail;
403 u32 hypercalls;
404 u32 irq_injections;
405};
406
407struct descriptor_table {
408 u16 limit;
409 unsigned long base;
410} __attribute__((packed));
411
412struct kvm_x86_ops {
413 int (*cpu_has_kvm_support)(void); /* __init */
414 int (*disabled_by_bios)(void); /* __init */
415 void (*hardware_enable)(void *dummy); /* __init */
416 void (*hardware_disable)(void *dummy);
417 void (*check_processor_compatibility)(void *rtn);
418 int (*hardware_setup)(void); /* __init */
419 void (*hardware_unsetup)(void); /* __exit */
420 bool (*cpu_has_accelerated_tpr)(void);
421
422 /* Create, but do not attach this VCPU */
423 struct kvm_vcpu *(*vcpu_create)(struct kvm *kvm, unsigned id);
424 void (*vcpu_free)(struct kvm_vcpu *vcpu);
425 int (*vcpu_reset)(struct kvm_vcpu *vcpu);
426
427 void (*prepare_guest_switch)(struct kvm_vcpu *vcpu);
428 void (*vcpu_load)(struct kvm_vcpu *vcpu, int cpu);
429 void (*vcpu_put)(struct kvm_vcpu *vcpu);
430
431 int (*set_guest_debug)(struct kvm_vcpu *vcpu,
432 struct kvm_debug_guest *dbg);
433 void (*guest_debug_pre)(struct kvm_vcpu *vcpu);
434 int (*get_msr)(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata);
435 int (*set_msr)(struct kvm_vcpu *vcpu, u32 msr_index, u64 data);
436 u64 (*get_segment_base)(struct kvm_vcpu *vcpu, int seg);
437 void (*get_segment)(struct kvm_vcpu *vcpu,
438 struct kvm_segment *var, int seg);
439 int (*get_cpl)(struct kvm_vcpu *vcpu);
440 void (*set_segment)(struct kvm_vcpu *vcpu,
441 struct kvm_segment *var, int seg);
442 void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l);
443 void (*decache_cr4_guest_bits)(struct kvm_vcpu *vcpu);
444 void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0);
445 void (*set_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3);
446 void (*set_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4);
447 void (*set_efer)(struct kvm_vcpu *vcpu, u64 efer);
448 void (*get_idt)(struct kvm_vcpu *vcpu, struct descriptor_table *dt);
449 void (*set_idt)(struct kvm_vcpu *vcpu, struct descriptor_table *dt);
450 void (*get_gdt)(struct kvm_vcpu *vcpu, struct descriptor_table *dt);
451 void (*set_gdt)(struct kvm_vcpu *vcpu, struct descriptor_table *dt);
452 unsigned long (*get_dr)(struct kvm_vcpu *vcpu, int dr);
453 void (*set_dr)(struct kvm_vcpu *vcpu, int dr, unsigned long value,
454 int *exception);
455 void (*cache_reg)(struct kvm_vcpu *vcpu, enum kvm_reg reg);
456 unsigned long (*get_rflags)(struct kvm_vcpu *vcpu);
457 void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags);
458
459 void (*tlb_flush)(struct kvm_vcpu *vcpu);
460
461 void (*run)(struct kvm_vcpu *vcpu, struct kvm_run *run);
462 int (*handle_exit)(struct kvm_run *run, struct kvm_vcpu *vcpu);
463 void (*skip_emulated_instruction)(struct kvm_vcpu *vcpu);
464 void (*patch_hypercall)(struct kvm_vcpu *vcpu,
465 unsigned char *hypercall_addr);
466 int (*get_irq)(struct kvm_vcpu *vcpu);
467 void (*set_irq)(struct kvm_vcpu *vcpu, int vec);
468 void (*queue_exception)(struct kvm_vcpu *vcpu, unsigned nr,
469 bool has_error_code, u32 error_code);
470 bool (*exception_injected)(struct kvm_vcpu *vcpu);
471 void (*inject_pending_irq)(struct kvm_vcpu *vcpu);
472 void (*inject_pending_vectors)(struct kvm_vcpu *vcpu,
473 struct kvm_run *run);
474
475 int (*set_tss_addr)(struct kvm *kvm, unsigned int addr);
476 int (*get_tdp_level)(void);
477};
478
479extern struct kvm_x86_ops *kvm_x86_ops;
480
481int kvm_mmu_module_init(void);
482void kvm_mmu_module_exit(void);
483
484void kvm_mmu_destroy(struct kvm_vcpu *vcpu);
485int kvm_mmu_create(struct kvm_vcpu *vcpu);
486int kvm_mmu_setup(struct kvm_vcpu *vcpu);
487void kvm_mmu_set_nonpresent_ptes(u64 trap_pte, u64 notrap_pte);
488void kvm_mmu_set_base_ptes(u64 base_pte);
489void kvm_mmu_set_mask_ptes(u64 user_mask, u64 accessed_mask,
490 u64 dirty_mask, u64 nx_mask, u64 x_mask);
491
492int kvm_mmu_reset_context(struct kvm_vcpu *vcpu);
493void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot);
494void kvm_mmu_zap_all(struct kvm *kvm);
495unsigned int kvm_mmu_calculate_mmu_pages(struct kvm *kvm);
496void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int kvm_nr_mmu_pages);
497
498int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3);
499
500int emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa,
501 const void *val, int bytes);
502int kvm_pv_mmu_op(struct kvm_vcpu *vcpu, unsigned long bytes,
503 gpa_t addr, unsigned long *ret);
504
505extern bool tdp_enabled;
506
507enum emulation_result {
508 EMULATE_DONE, /* no further processing */
509 EMULATE_DO_MMIO, /* kvm_run filled with mmio request */
510 EMULATE_FAIL, /* can't emulate this instruction */
511};
512
513#define EMULTYPE_NO_DECODE (1 << 0)
514#define EMULTYPE_TRAP_UD (1 << 1)
515int emulate_instruction(struct kvm_vcpu *vcpu, struct kvm_run *run,
516 unsigned long cr2, u16 error_code, int emulation_type);
517void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context);
518void realmode_lgdt(struct kvm_vcpu *vcpu, u16 size, unsigned long address);
519void realmode_lidt(struct kvm_vcpu *vcpu, u16 size, unsigned long address);
520void realmode_lmsw(struct kvm_vcpu *vcpu, unsigned long msw,
521 unsigned long *rflags);
522
523unsigned long realmode_get_cr(struct kvm_vcpu *vcpu, int cr);
524void realmode_set_cr(struct kvm_vcpu *vcpu, int cr, unsigned long value,
525 unsigned long *rflags);
526void kvm_enable_efer_bits(u64);
527int kvm_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *data);
528int kvm_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data);
529
530struct x86_emulate_ctxt;
531
532int kvm_emulate_pio(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
533 int size, unsigned port);
534int kvm_emulate_pio_string(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
535 int size, unsigned long count, int down,
536 gva_t address, int rep, unsigned port);
537void kvm_emulate_cpuid(struct kvm_vcpu *vcpu);
538int kvm_emulate_halt(struct kvm_vcpu *vcpu);
539int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address);
540int emulate_clts(struct kvm_vcpu *vcpu);
541int emulator_get_dr(struct x86_emulate_ctxt *ctxt, int dr,
542 unsigned long *dest);
543int emulator_set_dr(struct x86_emulate_ctxt *ctxt, int dr,
544 unsigned long value);
545
546void kvm_get_segment(struct kvm_vcpu *vcpu, struct kvm_segment *var, int seg);
547int kvm_load_segment_descriptor(struct kvm_vcpu *vcpu, u16 selector,
548 int type_bits, int seg);
549
550int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason);
551
552void kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0);
553void kvm_set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3);
554void kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4);
555void kvm_set_cr8(struct kvm_vcpu *vcpu, unsigned long cr8);
556unsigned long kvm_get_cr8(struct kvm_vcpu *vcpu);
557void kvm_lmsw(struct kvm_vcpu *vcpu, unsigned long msw);
558void kvm_get_cs_db_l_bits(struct kvm_vcpu *vcpu, int *db, int *l);
559
560int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata);
561int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data);
562
563void kvm_queue_exception(struct kvm_vcpu *vcpu, unsigned nr);
564void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code);
565void kvm_inject_page_fault(struct kvm_vcpu *vcpu, unsigned long cr2,
566 u32 error_code);
567
568void kvm_pic_set_irq(void *opaque, int irq, int level);
569
570void kvm_inject_nmi(struct kvm_vcpu *vcpu);
571
572void fx_init(struct kvm_vcpu *vcpu);
573
574int emulator_read_std(unsigned long addr,
575 void *val,
576 unsigned int bytes,
577 struct kvm_vcpu *vcpu);
578int emulator_write_emulated(unsigned long addr,
579 const void *val,
580 unsigned int bytes,
581 struct kvm_vcpu *vcpu);
582
583unsigned long segment_base(u16 selector);
584
585void kvm_mmu_flush_tlb(struct kvm_vcpu *vcpu);
586void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
587 const u8 *new, int bytes);
588int kvm_mmu_unprotect_page_virt(struct kvm_vcpu *vcpu, gva_t gva);
589void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
590int kvm_mmu_load(struct kvm_vcpu *vcpu);
591void kvm_mmu_unload(struct kvm_vcpu *vcpu);
592void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu);
593
594int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
595
596int kvm_fix_hypercall(struct kvm_vcpu *vcpu);
597
598int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t gva, u32 error_code);
599void kvm_mmu_invlpg(struct kvm_vcpu *vcpu, gva_t gva);
600
601void kvm_enable_tdp(void);
602void kvm_disable_tdp(void);
603
604int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3);
605int complete_pio(struct kvm_vcpu *vcpu);
606
607static inline struct kvm_mmu_page *page_header(hpa_t shadow_page)
608{
609 struct page *page = pfn_to_page(shadow_page >> PAGE_SHIFT);
610
611 return (struct kvm_mmu_page *)page_private(page);
612}
613
614static inline u16 kvm_read_fs(void)
615{
616 u16 seg;
617 asm("mov %%fs, %0" : "=g"(seg));
618 return seg;
619}
620
621static inline u16 kvm_read_gs(void)
622{
623 u16 seg;
624 asm("mov %%gs, %0" : "=g"(seg));
625 return seg;
626}
627
628static inline u16 kvm_read_ldt(void)
629{
630 u16 ldt;
631 asm("sldt %0" : "=g"(ldt));
632 return ldt;
633}
634
635static inline void kvm_load_fs(u16 sel)
636{
637 asm("mov %0, %%fs" : : "rm"(sel));
638}
639
640static inline void kvm_load_gs(u16 sel)
641{
642 asm("mov %0, %%gs" : : "rm"(sel));
643}
644
645static inline void kvm_load_ldt(u16 sel)
646{
647 asm("lldt %0" : : "rm"(sel));
648}
649
650static inline void kvm_get_idt(struct descriptor_table *table)
651{
652 asm("sidt %0" : "=m"(*table));
653}
654
655static inline void kvm_get_gdt(struct descriptor_table *table)
656{
657 asm("sgdt %0" : "=m"(*table));
658}
659
660static inline unsigned long kvm_read_tr_base(void)
661{
662 u16 tr;
663 asm("str %0" : "=g"(tr));
664 return segment_base(tr);
665}
666
667#ifdef CONFIG_X86_64
668static inline unsigned long read_msr(unsigned long msr)
669{
670 u64 value;
671
672 rdmsrl(msr, value);
673 return value;
674}
675#endif
676
677static inline void kvm_fx_save(struct i387_fxsave_struct *image)
678{
679 asm("fxsave (%0)":: "r" (image));
680}
681
682static inline void kvm_fx_restore(struct i387_fxsave_struct *image)
683{
684 asm("fxrstor (%0)":: "r" (image));
685}
686
687static inline void kvm_fx_finit(void)
688{
689 asm("finit");
690}
691
692static inline u32 get_rdx_init_val(void)
693{
694 return 0x600; /* P6 family */
695}
696
697static inline void kvm_inject_gp(struct kvm_vcpu *vcpu, u32 error_code)
698{
699 kvm_queue_exception_e(vcpu, GP_VECTOR, error_code);
700}
701
702#define ASM_VMX_VMCLEAR_RAX ".byte 0x66, 0x0f, 0xc7, 0x30"
703#define ASM_VMX_VMLAUNCH ".byte 0x0f, 0x01, 0xc2"
704#define ASM_VMX_VMRESUME ".byte 0x0f, 0x01, 0xc3"
705#define ASM_VMX_VMPTRLD_RAX ".byte 0x0f, 0xc7, 0x30"
706#define ASM_VMX_VMREAD_RDX_RAX ".byte 0x0f, 0x78, 0xd0"
707#define ASM_VMX_VMWRITE_RAX_RDX ".byte 0x0f, 0x79, 0xd0"
708#define ASM_VMX_VMWRITE_RSP_RDX ".byte 0x0f, 0x79, 0xd4"
709#define ASM_VMX_VMXOFF ".byte 0x0f, 0x01, 0xc4"
710#define ASM_VMX_VMXON_RAX ".byte 0xf3, 0x0f, 0xc7, 0x30"
711#define ASM_VMX_INVEPT ".byte 0x66, 0x0f, 0x38, 0x80, 0x08"
712#define ASM_VMX_INVVPID ".byte 0x66, 0x0f, 0x38, 0x81, 0x08"
713
714#define MSR_IA32_TIME_STAMP_COUNTER 0x010
715
716#define TSS_IOPB_BASE_OFFSET 0x66
717#define TSS_BASE_SIZE 0x68
718#define TSS_IOPB_SIZE (65536 / 8)
719#define TSS_REDIRECTION_SIZE (256 / 8)
720#define RMODE_TSS_SIZE \
721 (TSS_BASE_SIZE + TSS_REDIRECTION_SIZE + TSS_IOPB_SIZE + 1)
722
723enum {
724 TASK_SWITCH_CALL = 0,
725 TASK_SWITCH_IRET = 1,
726 TASK_SWITCH_JMP = 2,
727 TASK_SWITCH_GATE = 3,
728};
729
730/*
731 * Hardware virtualization extension instructions may fault if a
732 * reboot turns off virtualization while processes are running.
733 * Trap the fault and ignore the instruction if that happens.
734 */
735asmlinkage void kvm_handle_fault_on_reboot(void);
736
737#define __kvm_handle_fault_on_reboot(insn) \
738 "666: " insn "\n\t" \
739 ".pushsection .fixup, \"ax\" \n" \
740 "667: \n\t" \
741 __ASM_SIZE(push) " $666b \n\t" \
742 "jmp kvm_handle_fault_on_reboot \n\t" \
743 ".popsection \n\t" \
744 ".pushsection __ex_table, \"a\" \n\t" \
745 _ASM_PTR " 666b, 667b \n\t" \
746 ".popsection"
747
748#define KVM_ARCH_WANT_MMU_NOTIFIER
749int kvm_unmap_hva(struct kvm *kvm, unsigned long hva);
750int kvm_age_hva(struct kvm *kvm, unsigned long hva);
751
752#endif /* _ASM_X86_KVM_HOST_H */
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
new file mode 100644
index 000000000000..b8a3305ae093
--- /dev/null
+++ b/arch/x86/include/asm/kvm_para.h
@@ -0,0 +1,147 @@
1#ifndef _ASM_X86_KVM_PARA_H
2#define _ASM_X86_KVM_PARA_H
3
4/* This CPUID returns the signature 'KVMKVMKVM' in ebx, ecx, and edx. It
5 * should be used to determine that a VM is running under KVM.
6 */
7#define KVM_CPUID_SIGNATURE 0x40000000
8
9/* This CPUID returns a feature bitmap in eax. Before enabling a particular
10 * paravirtualization, the appropriate feature bit should be checked.
11 */
12#define KVM_CPUID_FEATURES 0x40000001
13#define KVM_FEATURE_CLOCKSOURCE 0
14#define KVM_FEATURE_NOP_IO_DELAY 1
15#define KVM_FEATURE_MMU_OP 2
16
17#define MSR_KVM_WALL_CLOCK 0x11
18#define MSR_KVM_SYSTEM_TIME 0x12
19
20#define KVM_MAX_MMU_OP_BATCH 32
21
22/* Operations for KVM_HC_MMU_OP */
23#define KVM_MMU_OP_WRITE_PTE 1
24#define KVM_MMU_OP_FLUSH_TLB 2
25#define KVM_MMU_OP_RELEASE_PT 3
26
27/* Payload for KVM_HC_MMU_OP */
28struct kvm_mmu_op_header {
29 __u32 op;
30 __u32 pad;
31};
32
33struct kvm_mmu_op_write_pte {
34 struct kvm_mmu_op_header header;
35 __u64 pte_phys;
36 __u64 pte_val;
37};
38
39struct kvm_mmu_op_flush_tlb {
40 struct kvm_mmu_op_header header;
41};
42
43struct kvm_mmu_op_release_pt {
44 struct kvm_mmu_op_header header;
45 __u64 pt_phys;
46};
47
48#ifdef __KERNEL__
49#include <asm/processor.h>
50
51extern void kvmclock_init(void);
52
53
54/* This instruction is vmcall. On non-VT architectures, it will generate a
55 * trap that we will then rewrite to the appropriate instruction.
56 */
57#define KVM_HYPERCALL ".byte 0x0f,0x01,0xc1"
58
59/* For KVM hypercalls, a three-byte sequence of either the vmrun or the vmmrun
60 * instruction. The hypervisor may replace it with something else but only the
61 * instructions are guaranteed to be supported.
62 *
63 * Up to four arguments may be passed in rbx, rcx, rdx, and rsi respectively.
64 * The hypercall number should be placed in rax and the return value will be
65 * placed in rax. No other registers will be clobbered unless explicited
66 * noted by the particular hypercall.
67 */
68
69static inline long kvm_hypercall0(unsigned int nr)
70{
71 long ret;
72 asm volatile(KVM_HYPERCALL
73 : "=a"(ret)
74 : "a"(nr)
75 : "memory");
76 return ret;
77}
78
79static inline long kvm_hypercall1(unsigned int nr, unsigned long p1)
80{
81 long ret;
82 asm volatile(KVM_HYPERCALL
83 : "=a"(ret)
84 : "a"(nr), "b"(p1)
85 : "memory");
86 return ret;
87}
88
89static inline long kvm_hypercall2(unsigned int nr, unsigned long p1,
90 unsigned long p2)
91{
92 long ret;
93 asm volatile(KVM_HYPERCALL
94 : "=a"(ret)
95 : "a"(nr), "b"(p1), "c"(p2)
96 : "memory");
97 return ret;
98}
99
100static inline long kvm_hypercall3(unsigned int nr, unsigned long p1,
101 unsigned long p2, unsigned long p3)
102{
103 long ret;
104 asm volatile(KVM_HYPERCALL
105 : "=a"(ret)
106 : "a"(nr), "b"(p1), "c"(p2), "d"(p3)
107 : "memory");
108 return ret;
109}
110
111static inline long kvm_hypercall4(unsigned int nr, unsigned long p1,
112 unsigned long p2, unsigned long p3,
113 unsigned long p4)
114{
115 long ret;
116 asm volatile(KVM_HYPERCALL
117 : "=a"(ret)
118 : "a"(nr), "b"(p1), "c"(p2), "d"(p3), "S"(p4)
119 : "memory");
120 return ret;
121}
122
123static inline int kvm_para_available(void)
124{
125 unsigned int eax, ebx, ecx, edx;
126 char signature[13];
127
128 cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
129 memcpy(signature + 0, &ebx, 4);
130 memcpy(signature + 4, &ecx, 4);
131 memcpy(signature + 8, &edx, 4);
132 signature[12] = 0;
133
134 if (strcmp(signature, "KVMKVMKVM") == 0)
135 return 1;
136
137 return 0;
138}
139
140static inline unsigned int kvm_arch_para_features(void)
141{
142 return cpuid_eax(KVM_CPUID_FEATURES);
143}
144
145#endif
146
147#endif /* _ASM_X86_KVM_PARA_H */
diff --git a/arch/x86/include/asm/kvm_x86_emulate.h b/arch/x86/include/asm/kvm_x86_emulate.h
new file mode 100644
index 000000000000..25179a29f208
--- /dev/null
+++ b/arch/x86/include/asm/kvm_x86_emulate.h
@@ -0,0 +1,184 @@
1/******************************************************************************
2 * x86_emulate.h
3 *
4 * Generic x86 (32-bit and 64-bit) instruction decoder and emulator.
5 *
6 * Copyright (c) 2005 Keir Fraser
7 *
8 * From: xen-unstable 10676:af9809f51f81a3c43f276f00c81a52ef558afda4
9 */
10
11#ifndef _ASM_X86_KVM_X86_EMULATE_H
12#define _ASM_X86_KVM_X86_EMULATE_H
13
14struct x86_emulate_ctxt;
15
16/*
17 * x86_emulate_ops:
18 *
19 * These operations represent the instruction emulator's interface to memory.
20 * There are two categories of operation: those that act on ordinary memory
21 * regions (*_std), and those that act on memory regions known to require
22 * special treatment or emulation (*_emulated).
23 *
24 * The emulator assumes that an instruction accesses only one 'emulated memory'
25 * location, that this location is the given linear faulting address (cr2), and
26 * that this is one of the instruction's data operands. Instruction fetches and
27 * stack operations are assumed never to access emulated memory. The emulator
28 * automatically deduces which operand of a string-move operation is accessing
29 * emulated memory, and assumes that the other operand accesses normal memory.
30 *
31 * NOTES:
32 * 1. The emulator isn't very smart about emulated vs. standard memory.
33 * 'Emulated memory' access addresses should be checked for sanity.
34 * 'Normal memory' accesses may fault, and the caller must arrange to
35 * detect and handle reentrancy into the emulator via recursive faults.
36 * Accesses may be unaligned and may cross page boundaries.
37 * 2. If the access fails (cannot emulate, or a standard access faults) then
38 * it is up to the memop to propagate the fault to the guest VM via
39 * some out-of-band mechanism, unknown to the emulator. The memop signals
40 * failure by returning X86EMUL_PROPAGATE_FAULT to the emulator, which will
41 * then immediately bail.
42 * 3. Valid access sizes are 1, 2, 4 and 8 bytes. On x86/32 systems only
43 * cmpxchg8b_emulated need support 8-byte accesses.
44 * 4. The emulator cannot handle 64-bit mode emulation on an x86/32 system.
45 */
46/* Access completed successfully: continue emulation as normal. */
47#define X86EMUL_CONTINUE 0
48/* Access is unhandleable: bail from emulation and return error to caller. */
49#define X86EMUL_UNHANDLEABLE 1
50/* Terminate emulation but return success to the caller. */
51#define X86EMUL_PROPAGATE_FAULT 2 /* propagate a generated fault to guest */
52#define X86EMUL_RETRY_INSTR 2 /* retry the instruction for some reason */
53#define X86EMUL_CMPXCHG_FAILED 2 /* cmpxchg did not see expected value */
54struct x86_emulate_ops {
55 /*
56 * read_std: Read bytes of standard (non-emulated/special) memory.
57 * Used for instruction fetch, stack operations, and others.
58 * @addr: [IN ] Linear address from which to read.
59 * @val: [OUT] Value read from memory, zero-extended to 'u_long'.
60 * @bytes: [IN ] Number of bytes to read from memory.
61 */
62 int (*read_std)(unsigned long addr, void *val,
63 unsigned int bytes, struct kvm_vcpu *vcpu);
64
65 /*
66 * read_emulated: Read bytes from emulated/special memory area.
67 * @addr: [IN ] Linear address from which to read.
68 * @val: [OUT] Value read from memory, zero-extended to 'u_long'.
69 * @bytes: [IN ] Number of bytes to read from memory.
70 */
71 int (*read_emulated)(unsigned long addr,
72 void *val,
73 unsigned int bytes,
74 struct kvm_vcpu *vcpu);
75
76 /*
77 * write_emulated: Read bytes from emulated/special memory area.
78 * @addr: [IN ] Linear address to which to write.
79 * @val: [IN ] Value to write to memory (low-order bytes used as
80 * required).
81 * @bytes: [IN ] Number of bytes to write to memory.
82 */
83 int (*write_emulated)(unsigned long addr,
84 const void *val,
85 unsigned int bytes,
86 struct kvm_vcpu *vcpu);
87
88 /*
89 * cmpxchg_emulated: Emulate an atomic (LOCKed) CMPXCHG operation on an
90 * emulated/special memory area.
91 * @addr: [IN ] Linear address to access.
92 * @old: [IN ] Value expected to be current at @addr.
93 * @new: [IN ] Value to write to @addr.
94 * @bytes: [IN ] Number of bytes to access using CMPXCHG.
95 */
96 int (*cmpxchg_emulated)(unsigned long addr,
97 const void *old,
98 const void *new,
99 unsigned int bytes,
100 struct kvm_vcpu *vcpu);
101
102};
103
104/* Type, address-of, and value of an instruction's operand. */
105struct operand {
106 enum { OP_REG, OP_MEM, OP_IMM, OP_NONE } type;
107 unsigned int bytes;
108 unsigned long val, orig_val, *ptr;
109};
110
111struct fetch_cache {
112 u8 data[15];
113 unsigned long start;
114 unsigned long end;
115};
116
117struct decode_cache {
118 u8 twobyte;
119 u8 b;
120 u8 lock_prefix;
121 u8 rep_prefix;
122 u8 op_bytes;
123 u8 ad_bytes;
124 u8 rex_prefix;
125 struct operand src;
126 struct operand dst;
127 bool has_seg_override;
128 u8 seg_override;
129 unsigned int d;
130 unsigned long regs[NR_VCPU_REGS];
131 unsigned long eip;
132 /* modrm */
133 u8 modrm;
134 u8 modrm_mod;
135 u8 modrm_reg;
136 u8 modrm_rm;
137 u8 use_modrm_ea;
138 bool rip_relative;
139 unsigned long modrm_ea;
140 void *modrm_ptr;
141 unsigned long modrm_val;
142 struct fetch_cache fetch;
143};
144
145struct x86_emulate_ctxt {
146 /* Register state before/after emulation. */
147 struct kvm_vcpu *vcpu;
148
149 /* Linear faulting address (if emulating a page-faulting instruction) */
150 unsigned long eflags;
151
152 /* Emulated execution mode, represented by an X86EMUL_MODE value. */
153 int mode;
154
155 u32 cs_base;
156
157 /* decode cache */
158
159 struct decode_cache decode;
160};
161
162/* Repeat String Operation Prefix */
163#define REPE_PREFIX 1
164#define REPNE_PREFIX 2
165
166/* Execution mode, passed to the emulator. */
167#define X86EMUL_MODE_REAL 0 /* Real mode. */
168#define X86EMUL_MODE_PROT16 2 /* 16-bit protected mode. */
169#define X86EMUL_MODE_PROT32 4 /* 32-bit protected mode. */
170#define X86EMUL_MODE_PROT64 8 /* 64-bit (long) mode. */
171
172/* Host execution mode. */
173#if defined(__i386__)
174#define X86EMUL_MODE_HOST X86EMUL_MODE_PROT32
175#elif defined(CONFIG_X86_64)
176#define X86EMUL_MODE_HOST X86EMUL_MODE_PROT64
177#endif
178
179int x86_decode_insn(struct x86_emulate_ctxt *ctxt,
180 struct x86_emulate_ops *ops);
181int x86_emulate_insn(struct x86_emulate_ctxt *ctxt,
182 struct x86_emulate_ops *ops);
183
184#endif /* _ASM_X86_KVM_X86_EMULATE_H */
diff --git a/arch/x86/include/asm/ldt.h b/arch/x86/include/asm/ldt.h
new file mode 100644
index 000000000000..46727eb37bfe
--- /dev/null
+++ b/arch/x86/include/asm/ldt.h
@@ -0,0 +1,40 @@
1/*
2 * ldt.h
3 *
4 * Definitions of structures used with the modify_ldt system call.
5 */
6#ifndef _ASM_X86_LDT_H
7#define _ASM_X86_LDT_H
8
9/* Maximum number of LDT entries supported. */
10#define LDT_ENTRIES 8192
11/* The size of each LDT entry. */
12#define LDT_ENTRY_SIZE 8
13
14#ifndef __ASSEMBLY__
15/*
16 * Note on 64bit base and limit is ignored and you cannot set DS/ES/CS
17 * not to the default values if you still want to do syscalls. This
18 * call is more for 32bit mode therefore.
19 */
20struct user_desc {
21 unsigned int entry_number;
22 unsigned int base_addr;
23 unsigned int limit;
24 unsigned int seg_32bit:1;
25 unsigned int contents:2;
26 unsigned int read_exec_only:1;
27 unsigned int limit_in_pages:1;
28 unsigned int seg_not_present:1;
29 unsigned int useable:1;
30#ifdef __x86_64__
31 unsigned int lm:1;
32#endif
33};
34
35#define MODIFY_LDT_CONTENTS_DATA 0
36#define MODIFY_LDT_CONTENTS_STACK 1
37#define MODIFY_LDT_CONTENTS_CODE 2
38
39#endif /* !__ASSEMBLY__ */
40#endif /* _ASM_X86_LDT_H */
diff --git a/arch/x86/include/asm/lguest.h b/arch/x86/include/asm/lguest.h
new file mode 100644
index 000000000000..d28a507cef39
--- /dev/null
+++ b/arch/x86/include/asm/lguest.h
@@ -0,0 +1,94 @@
1#ifndef _ASM_X86_LGUEST_H
2#define _ASM_X86_LGUEST_H
3
4#define GDT_ENTRY_LGUEST_CS 10
5#define GDT_ENTRY_LGUEST_DS 11
6#define LGUEST_CS (GDT_ENTRY_LGUEST_CS * 8)
7#define LGUEST_DS (GDT_ENTRY_LGUEST_DS * 8)
8
9#ifndef __ASSEMBLY__
10#include <asm/desc.h>
11
12#define GUEST_PL 1
13
14/* Every guest maps the core switcher code. */
15#define SHARED_SWITCHER_PAGES \
16 DIV_ROUND_UP(end_switcher_text - start_switcher_text, PAGE_SIZE)
17/* Pages for switcher itself, then two pages per cpu */
18#define TOTAL_SWITCHER_PAGES (SHARED_SWITCHER_PAGES + 2 * NR_CPUS)
19
20/* We map at -4M for ease of mapping into the guest (one PTE page). */
21#define SWITCHER_ADDR 0xFFC00000
22
23/* Found in switcher.S */
24extern unsigned long default_idt_entries[];
25
26/* Declarations for definitions in lguest_guest.S */
27extern char lguest_noirq_start[], lguest_noirq_end[];
28extern const char lgstart_cli[], lgend_cli[];
29extern const char lgstart_sti[], lgend_sti[];
30extern const char lgstart_popf[], lgend_popf[];
31extern const char lgstart_pushf[], lgend_pushf[];
32extern const char lgstart_iret[], lgend_iret[];
33
34extern void lguest_iret(void);
35extern void lguest_init(void);
36
37struct lguest_regs {
38 /* Manually saved part. */
39 unsigned long eax, ebx, ecx, edx;
40 unsigned long esi, edi, ebp;
41 unsigned long gs;
42 unsigned long fs, ds, es;
43 unsigned long trapnum, errcode;
44 /* Trap pushed part */
45 unsigned long eip;
46 unsigned long cs;
47 unsigned long eflags;
48 unsigned long esp;
49 unsigned long ss;
50};
51
52/* This is a guest-specific page (mapped ro) into the guest. */
53struct lguest_ro_state {
54 /* Host information we need to restore when we switch back. */
55 u32 host_cr3;
56 struct desc_ptr host_idt_desc;
57 struct desc_ptr host_gdt_desc;
58 u32 host_sp;
59
60 /* Fields which are used when guest is running. */
61 struct desc_ptr guest_idt_desc;
62 struct desc_ptr guest_gdt_desc;
63 struct x86_hw_tss guest_tss;
64 struct desc_struct guest_idt[IDT_ENTRIES];
65 struct desc_struct guest_gdt[GDT_ENTRIES];
66};
67
68struct lg_cpu_arch {
69 /* The GDT entries copied into lguest_ro_state when running. */
70 struct desc_struct gdt[GDT_ENTRIES];
71
72 /* The IDT entries: some copied into lguest_ro_state when running. */
73 struct desc_struct idt[IDT_ENTRIES];
74
75 /* The address of the last guest-visible pagefault (ie. cr2). */
76 unsigned long last_pagefault;
77};
78
79static inline void lguest_set_ts(void)
80{
81 u32 cr0;
82
83 cr0 = read_cr0();
84 if (!(cr0 & 8))
85 write_cr0(cr0 | 8);
86}
87
88/* Full 4G segment descriptors, suitable for CS and DS. */
89#define FULL_EXEC_SEGMENT ((struct desc_struct){ { {0x0000ffff, 0x00cf9b00} } })
90#define FULL_SEGMENT ((struct desc_struct){ { {0x0000ffff, 0x00cf9300} } })
91
92#endif /* __ASSEMBLY__ */
93
94#endif /* _ASM_X86_LGUEST_H */
diff --git a/arch/x86/include/asm/lguest_hcall.h b/arch/x86/include/asm/lguest_hcall.h
new file mode 100644
index 000000000000..43894428c3c2
--- /dev/null
+++ b/arch/x86/include/asm/lguest_hcall.h
@@ -0,0 +1,71 @@
1/* Architecture specific portion of the lguest hypercalls */
2#ifndef _ASM_X86_LGUEST_HCALL_H
3#define _ASM_X86_LGUEST_HCALL_H
4
5#define LHCALL_FLUSH_ASYNC 0
6#define LHCALL_LGUEST_INIT 1
7#define LHCALL_SHUTDOWN 2
8#define LHCALL_LOAD_GDT 3
9#define LHCALL_NEW_PGTABLE 4
10#define LHCALL_FLUSH_TLB 5
11#define LHCALL_LOAD_IDT_ENTRY 6
12#define LHCALL_SET_STACK 7
13#define LHCALL_TS 8
14#define LHCALL_SET_CLOCKEVENT 9
15#define LHCALL_HALT 10
16#define LHCALL_SET_PTE 14
17#define LHCALL_SET_PMD 15
18#define LHCALL_LOAD_TLS 16
19#define LHCALL_NOTIFY 17
20
21#define LGUEST_TRAP_ENTRY 0x1F
22
23/* Argument number 3 to LHCALL_LGUEST_SHUTDOWN */
24#define LGUEST_SHUTDOWN_POWEROFF 1
25#define LGUEST_SHUTDOWN_RESTART 2
26
27#ifndef __ASSEMBLY__
28#include <asm/hw_irq.h>
29
30/*G:031 But first, how does our Guest contact the Host to ask for privileged
31 * operations? There are two ways: the direct way is to make a "hypercall",
32 * to make requests of the Host Itself.
33 *
34 * Our hypercall mechanism uses the highest unused trap code (traps 32 and
35 * above are used by real hardware interrupts). Fifteen hypercalls are
36 * available: the hypercall number is put in the %eax register, and the
37 * arguments (when required) are placed in %edx, %ebx and %ecx. If a return
38 * value makes sense, it's returned in %eax.
39 *
40 * Grossly invalid calls result in Sudden Death at the hands of the vengeful
41 * Host, rather than returning failure. This reflects Winston Churchill's
42 * definition of a gentleman: "someone who is only rude intentionally". */
43static inline unsigned long
44hcall(unsigned long call,
45 unsigned long arg1, unsigned long arg2, unsigned long arg3)
46{
47 /* "int" is the Intel instruction to trigger a trap. */
48 asm volatile("int $" __stringify(LGUEST_TRAP_ENTRY)
49 /* The call in %eax (aka "a") might be overwritten */
50 : "=a"(call)
51 /* The arguments are in %eax, %edx, %ebx & %ecx */
52 : "a"(call), "d"(arg1), "b"(arg2), "c"(arg3)
53 /* "memory" means this might write somewhere in memory.
54 * This isn't true for all calls, but it's safe to tell
55 * gcc that it might happen so it doesn't get clever. */
56 : "memory");
57 return call;
58}
59/*:*/
60
61/* Can't use our min() macro here: needs to be a constant */
62#define LGUEST_IRQS (NR_IRQS < 32 ? NR_IRQS: 32)
63
64#define LHCALL_RING_SIZE 64
65struct hcall_args {
66 /* These map directly onto eax, ebx, ecx, edx in struct lguest_regs */
67 unsigned long arg0, arg2, arg3, arg1;
68};
69
70#endif /* !__ASSEMBLY__ */
71#endif /* _ASM_X86_LGUEST_HCALL_H */
diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
new file mode 100644
index 000000000000..f61ee8f937e4
--- /dev/null
+++ b/arch/x86/include/asm/linkage.h
@@ -0,0 +1,61 @@
1#ifndef _ASM_X86_LINKAGE_H
2#define _ASM_X86_LINKAGE_H
3
4#undef notrace
5#define notrace __attribute__((no_instrument_function))
6
7#ifdef CONFIG_X86_64
8#define __ALIGN .p2align 4,,15
9#define __ALIGN_STR ".p2align 4,,15"
10#endif
11
12#ifdef CONFIG_X86_32
13#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
14/*
15 * For 32-bit UML - mark functions implemented in assembly that use
16 * regparm input parameters:
17 */
18#define asmregparm __attribute__((regparm(3)))
19
20/*
21 * Make sure the compiler doesn't do anything stupid with the
22 * arguments on the stack - they are owned by the *caller*, not
23 * the callee. This just fools gcc into not spilling into them,
24 * and keeps it from doing tailcall recursion and/or using the
25 * stack slots for temporaries, since they are live and "used"
26 * all the way to the end of the function.
27 *
28 * NOTE! On x86-64, all the arguments are in registers, so this
29 * only matters on a 32-bit kernel.
30 */
31#define asmlinkage_protect(n, ret, args...) \
32 __asmlinkage_protect##n(ret, ##args)
33#define __asmlinkage_protect_n(ret, args...) \
34 __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args)
35#define __asmlinkage_protect0(ret) \
36 __asmlinkage_protect_n(ret)
37#define __asmlinkage_protect1(ret, arg1) \
38 __asmlinkage_protect_n(ret, "g" (arg1))
39#define __asmlinkage_protect2(ret, arg1, arg2) \
40 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2))
41#define __asmlinkage_protect3(ret, arg1, arg2, arg3) \
42 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3))
43#define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \
44 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \
45 "g" (arg4))
46#define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \
47 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \
48 "g" (arg4), "g" (arg5))
49#define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \
50 __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \
51 "g" (arg4), "g" (arg5), "g" (arg6))
52
53#endif
54
55#ifdef CONFIG_X86_ALIGNMENT_16
56#define __ALIGN .align 16,0x90
57#define __ALIGN_STR ".align 16,0x90"
58#endif
59
60#endif /* _ASM_X86_LINKAGE_H */
61
diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h
new file mode 100644
index 000000000000..47b9b6f19057
--- /dev/null
+++ b/arch/x86/include/asm/local.h
@@ -0,0 +1,235 @@
1#ifndef _ASM_X86_LOCAL_H
2#define _ASM_X86_LOCAL_H
3
4#include <linux/percpu.h>
5
6#include <asm/system.h>
7#include <asm/atomic.h>
8#include <asm/asm.h>
9
10typedef struct {
11 atomic_long_t a;
12} local_t;
13
14#define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
15
16#define local_read(l) atomic_long_read(&(l)->a)
17#define local_set(l, i) atomic_long_set(&(l)->a, (i))
18
19static inline void local_inc(local_t *l)
20{
21 asm volatile(_ASM_INC "%0"
22 : "+m" (l->a.counter));
23}
24
25static inline void local_dec(local_t *l)
26{
27 asm volatile(_ASM_DEC "%0"
28 : "+m" (l->a.counter));
29}
30
31static inline void local_add(long i, local_t *l)
32{
33 asm volatile(_ASM_ADD "%1,%0"
34 : "+m" (l->a.counter)
35 : "ir" (i));
36}
37
38static inline void local_sub(long i, local_t *l)
39{
40 asm volatile(_ASM_SUB "%1,%0"
41 : "+m" (l->a.counter)
42 : "ir" (i));
43}
44
45/**
46 * local_sub_and_test - subtract value from variable and test result
47 * @i: integer value to subtract
48 * @l: pointer to type local_t
49 *
50 * Atomically subtracts @i from @l and returns
51 * true if the result is zero, or false for all
52 * other cases.
53 */
54static inline int local_sub_and_test(long i, local_t *l)
55{
56 unsigned char c;
57
58 asm volatile(_ASM_SUB "%2,%0; sete %1"
59 : "+m" (l->a.counter), "=qm" (c)
60 : "ir" (i) : "memory");
61 return c;
62}
63
64/**
65 * local_dec_and_test - decrement and test
66 * @l: pointer to type local_t
67 *
68 * Atomically decrements @l by 1 and
69 * returns true if the result is 0, or false for all other
70 * cases.
71 */
72static inline int local_dec_and_test(local_t *l)
73{
74 unsigned char c;
75
76 asm volatile(_ASM_DEC "%0; sete %1"
77 : "+m" (l->a.counter), "=qm" (c)
78 : : "memory");
79 return c != 0;
80}
81
82/**
83 * local_inc_and_test - increment and test
84 * @l: pointer to type local_t
85 *
86 * Atomically increments @l by 1
87 * and returns true if the result is zero, or false for all
88 * other cases.
89 */
90static inline int local_inc_and_test(local_t *l)
91{
92 unsigned char c;
93
94 asm volatile(_ASM_INC "%0; sete %1"
95 : "+m" (l->a.counter), "=qm" (c)
96 : : "memory");
97 return c != 0;
98}
99
100/**
101 * local_add_negative - add and test if negative
102 * @i: integer value to add
103 * @l: pointer to type local_t
104 *
105 * Atomically adds @i to @l and returns true
106 * if the result is negative, or false when
107 * result is greater than or equal to zero.
108 */
109static inline int local_add_negative(long i, local_t *l)
110{
111 unsigned char c;
112
113 asm volatile(_ASM_ADD "%2,%0; sets %1"
114 : "+m" (l->a.counter), "=qm" (c)
115 : "ir" (i) : "memory");
116 return c;
117}
118
119/**
120 * local_add_return - add and return
121 * @i: integer value to add
122 * @l: pointer to type local_t
123 *
124 * Atomically adds @i to @l and returns @i + @l
125 */
126static inline long local_add_return(long i, local_t *l)
127{
128 long __i;
129#ifdef CONFIG_M386
130 unsigned long flags;
131 if (unlikely(boot_cpu_data.x86 <= 3))
132 goto no_xadd;
133#endif
134 /* Modern 486+ processor */
135 __i = i;
136 asm volatile(_ASM_XADD "%0, %1;"
137 : "+r" (i), "+m" (l->a.counter)
138 : : "memory");
139 return i + __i;
140
141#ifdef CONFIG_M386
142no_xadd: /* Legacy 386 processor */
143 local_irq_save(flags);
144 __i = local_read(l);
145 local_set(l, i + __i);
146 local_irq_restore(flags);
147 return i + __i;
148#endif
149}
150
151static inline long local_sub_return(long i, local_t *l)
152{
153 return local_add_return(-i, l);
154}
155
156#define local_inc_return(l) (local_add_return(1, l))
157#define local_dec_return(l) (local_sub_return(1, l))
158
159#define local_cmpxchg(l, o, n) \
160 (cmpxchg_local(&((l)->a.counter), (o), (n)))
161/* Always has a lock prefix */
162#define local_xchg(l, n) (xchg(&((l)->a.counter), (n)))
163
164/**
165 * local_add_unless - add unless the number is a given value
166 * @l: pointer of type local_t
167 * @a: the amount to add to l...
168 * @u: ...unless l is equal to u.
169 *
170 * Atomically adds @a to @l, so long as it was not @u.
171 * Returns non-zero if @l was not @u, and zero otherwise.
172 */
173#define local_add_unless(l, a, u) \
174({ \
175 long c, old; \
176 c = local_read((l)); \
177 for (;;) { \
178 if (unlikely(c == (u))) \
179 break; \
180 old = local_cmpxchg((l), c, c + (a)); \
181 if (likely(old == c)) \
182 break; \
183 c = old; \
184 } \
185 c != (u); \
186})
187#define local_inc_not_zero(l) local_add_unless((l), 1, 0)
188
189/* On x86_32, these are no better than the atomic variants.
190 * On x86-64 these are better than the atomic variants on SMP kernels
191 * because they dont use a lock prefix.
192 */
193#define __local_inc(l) local_inc(l)
194#define __local_dec(l) local_dec(l)
195#define __local_add(i, l) local_add((i), (l))
196#define __local_sub(i, l) local_sub((i), (l))
197
198/* Use these for per-cpu local_t variables: on some archs they are
199 * much more efficient than these naive implementations. Note they take
200 * a variable, not an address.
201 *
202 * X86_64: This could be done better if we moved the per cpu data directly
203 * after GS.
204 */
205
206/* Need to disable preemption for the cpu local counters otherwise we could
207 still access a variable of a previous CPU in a non atomic way. */
208#define cpu_local_wrap_v(l) \
209({ \
210 local_t res__; \
211 preempt_disable(); \
212 res__ = (l); \
213 preempt_enable(); \
214 res__; \
215})
216#define cpu_local_wrap(l) \
217({ \
218 preempt_disable(); \
219 (l); \
220 preempt_enable(); \
221}) \
222
223#define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var((l))))
224#define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var((l)), (i)))
225#define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var((l))))
226#define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var((l))))
227#define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var((l))))
228#define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var((l))))
229
230#define __cpu_local_inc(l) cpu_local_inc((l))
231#define __cpu_local_dec(l) cpu_local_dec((l))
232#define __cpu_local_add(i, l) cpu_local_add((i), (l))
233#define __cpu_local_sub(i, l) cpu_local_sub((i), (l))
234
235#endif /* _ASM_X86_LOCAL_H */
diff --git a/arch/x86/include/asm/mach-default/apm.h b/arch/x86/include/asm/mach-default/apm.h
new file mode 100644
index 000000000000..20370c6db74b
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/apm.h
@@ -0,0 +1,73 @@
1/*
2 * Machine specific APM BIOS functions for generic.
3 * Split out from apm.c by Osamu Tomita <tomita@cinet.co.jp>
4 */
5
6#ifndef _ASM_X86_MACH_DEFAULT_APM_H
7#define _ASM_X86_MACH_DEFAULT_APM_H
8
9#ifdef APM_ZERO_SEGS
10# define APM_DO_ZERO_SEGS \
11 "pushl %%ds\n\t" \
12 "pushl %%es\n\t" \
13 "xorl %%edx, %%edx\n\t" \
14 "mov %%dx, %%ds\n\t" \
15 "mov %%dx, %%es\n\t" \
16 "mov %%dx, %%fs\n\t" \
17 "mov %%dx, %%gs\n\t"
18# define APM_DO_POP_SEGS \
19 "popl %%es\n\t" \
20 "popl %%ds\n\t"
21#else
22# define APM_DO_ZERO_SEGS
23# define APM_DO_POP_SEGS
24#endif
25
26static inline void apm_bios_call_asm(u32 func, u32 ebx_in, u32 ecx_in,
27 u32 *eax, u32 *ebx, u32 *ecx,
28 u32 *edx, u32 *esi)
29{
30 /*
31 * N.B. We do NOT need a cld after the BIOS call
32 * because we always save and restore the flags.
33 */
34 __asm__ __volatile__(APM_DO_ZERO_SEGS
35 "pushl %%edi\n\t"
36 "pushl %%ebp\n\t"
37 "lcall *%%cs:apm_bios_entry\n\t"
38 "setc %%al\n\t"
39 "popl %%ebp\n\t"
40 "popl %%edi\n\t"
41 APM_DO_POP_SEGS
42 : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx),
43 "=S" (*esi)
44 : "a" (func), "b" (ebx_in), "c" (ecx_in)
45 : "memory", "cc");
46}
47
48static inline u8 apm_bios_call_simple_asm(u32 func, u32 ebx_in,
49 u32 ecx_in, u32 *eax)
50{
51 int cx, dx, si;
52 u8 error;
53
54 /*
55 * N.B. We do NOT need a cld after the BIOS call
56 * because we always save and restore the flags.
57 */
58 __asm__ __volatile__(APM_DO_ZERO_SEGS
59 "pushl %%edi\n\t"
60 "pushl %%ebp\n\t"
61 "lcall *%%cs:apm_bios_entry\n\t"
62 "setc %%bl\n\t"
63 "popl %%ebp\n\t"
64 "popl %%edi\n\t"
65 APM_DO_POP_SEGS
66 : "=a" (*eax), "=b" (error), "=c" (cx), "=d" (dx),
67 "=S" (si)
68 : "a" (func), "b" (ebx_in), "c" (ecx_in)
69 : "memory", "cc");
70 return error;
71}
72
73#endif /* _ASM_X86_MACH_DEFAULT_APM_H */
diff --git a/arch/x86/include/asm/mach-default/do_timer.h b/arch/x86/include/asm/mach-default/do_timer.h
new file mode 100644
index 000000000000..23ecda0b28a0
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/do_timer.h
@@ -0,0 +1,16 @@
1/* defines for inline arch setup functions */
2#include <linux/clockchips.h>
3
4#include <asm/i8259.h>
5#include <asm/i8253.h>
6
7/**
8 * do_timer_interrupt_hook - hook into timer tick
9 *
10 * Call the pit clock event handler. see asm/i8253.h
11 **/
12
13static inline void do_timer_interrupt_hook(void)
14{
15 global_clock_event->event_handler(global_clock_event);
16}
diff --git a/arch/x86/include/asm/mach-default/entry_arch.h b/arch/x86/include/asm/mach-default/entry_arch.h
new file mode 100644
index 000000000000..6b1add8e31dd
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/entry_arch.h
@@ -0,0 +1,36 @@
1/*
2 * This file is designed to contain the BUILD_INTERRUPT specifications for
3 * all of the extra named interrupt vectors used by the architecture.
4 * Usually this is the Inter Process Interrupts (IPIs)
5 */
6
7/*
8 * The following vectors are part of the Linux architecture, there
9 * is no hardware IRQ pin equivalent for them, they are triggered
10 * through the ICC by us (IPIs)
11 */
12#ifdef CONFIG_X86_SMP
13BUILD_INTERRUPT(reschedule_interrupt,RESCHEDULE_VECTOR)
14BUILD_INTERRUPT(invalidate_interrupt,INVALIDATE_TLB_VECTOR)
15BUILD_INTERRUPT(call_function_interrupt,CALL_FUNCTION_VECTOR)
16BUILD_INTERRUPT(call_function_single_interrupt,CALL_FUNCTION_SINGLE_VECTOR)
17BUILD_INTERRUPT(irq_move_cleanup_interrupt,IRQ_MOVE_CLEANUP_VECTOR)
18#endif
19
20/*
21 * every pentium local APIC has two 'local interrupts', with a
22 * soft-definable vector attached to both interrupts, one of
23 * which is a timer interrupt, the other one is error counter
24 * overflow. Linux uses the local APIC timer interrupt to get
25 * a much simpler SMP time architecture:
26 */
27#ifdef CONFIG_X86_LOCAL_APIC
28BUILD_INTERRUPT(apic_timer_interrupt,LOCAL_TIMER_VECTOR)
29BUILD_INTERRUPT(error_interrupt,ERROR_APIC_VECTOR)
30BUILD_INTERRUPT(spurious_interrupt,SPURIOUS_APIC_VECTOR)
31
32#ifdef CONFIG_X86_MCE_P4THERMAL
33BUILD_INTERRUPT(thermal_interrupt,THERMAL_APIC_VECTOR)
34#endif
35
36#endif
diff --git a/arch/x86/include/asm/mach-default/mach_apic.h b/arch/x86/include/asm/mach-default/mach_apic.h
new file mode 100644
index 000000000000..ff3a6c236c00
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_apic.h
@@ -0,0 +1,156 @@
1#ifndef _ASM_X86_MACH_DEFAULT_MACH_APIC_H
2#define _ASM_X86_MACH_DEFAULT_MACH_APIC_H
3
4#ifdef CONFIG_X86_LOCAL_APIC
5
6#include <mach_apicdef.h>
7#include <asm/smp.h>
8
9#define APIC_DFR_VALUE (APIC_DFR_FLAT)
10
11static inline cpumask_t target_cpus(void)
12{
13#ifdef CONFIG_SMP
14 return cpu_online_map;
15#else
16 return cpumask_of_cpu(0);
17#endif
18}
19
20#define NO_BALANCE_IRQ (0)
21#define esr_disable (0)
22
23#ifdef CONFIG_X86_64
24#include <asm/genapic.h>
25#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
26#define INT_DEST_MODE (genapic->int_dest_mode)
27#define TARGET_CPUS (genapic->target_cpus())
28#define apic_id_registered (genapic->apic_id_registered)
29#define init_apic_ldr (genapic->init_apic_ldr)
30#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
31#define phys_pkg_id (genapic->phys_pkg_id)
32#define vector_allocation_domain (genapic->vector_allocation_domain)
33#define read_apic_id() (GET_APIC_ID(apic_read(APIC_ID)))
34#define send_IPI_self (genapic->send_IPI_self)
35extern void setup_apic_routing(void);
36#else
37#define INT_DELIVERY_MODE dest_LowestPrio
38#define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */
39#define TARGET_CPUS (target_cpus())
40/*
41 * Set up the logical destination ID.
42 *
43 * Intel recommends to set DFR, LDR and TPR before enabling
44 * an APIC. See e.g. "AP-388 82489DX User's Manual" (Intel
45 * document number 292116). So here it goes...
46 */
47static inline void init_apic_ldr(void)
48{
49 unsigned long val;
50
51 apic_write(APIC_DFR, APIC_DFR_VALUE);
52 val = apic_read(APIC_LDR) & ~APIC_LDR_MASK;
53 val |= SET_APIC_LOGICAL_ID(1UL << smp_processor_id());
54 apic_write(APIC_LDR, val);
55}
56
57static inline int apic_id_registered(void)
58{
59 return physid_isset(read_apic_id(), phys_cpu_present_map);
60}
61
62static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
63{
64 return cpus_addr(cpumask)[0];
65}
66
67static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
68{
69 return cpuid_apic >> index_msb;
70}
71
72static inline void setup_apic_routing(void)
73{
74#ifdef CONFIG_X86_IO_APIC
75 printk("Enabling APIC mode: %s. Using %d I/O APICs\n",
76 "Flat", nr_ioapics);
77#endif
78}
79
80static inline int apicid_to_node(int logical_apicid)
81{
82#ifdef CONFIG_SMP
83 return apicid_2_node[hard_smp_processor_id()];
84#else
85 return 0;
86#endif
87}
88
89static inline cpumask_t vector_allocation_domain(int cpu)
90{
91 /* Careful. Some cpus do not strictly honor the set of cpus
92 * specified in the interrupt destination when using lowest
93 * priority interrupt delivery mode.
94 *
95 * In particular there was a hyperthreading cpu observed to
96 * deliver interrupts to the wrong hyperthread when only one
97 * hyperthread was specified in the interrupt desitination.
98 */
99 cpumask_t domain = { { [0] = APIC_ALL_CPUS, } };
100 return domain;
101}
102#endif
103
104static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
105{
106 return physid_isset(apicid, bitmap);
107}
108
109static inline unsigned long check_apicid_present(int bit)
110{
111 return physid_isset(bit, phys_cpu_present_map);
112}
113
114static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
115{
116 return phys_map;
117}
118
119static inline int multi_timer_check(int apic, int irq)
120{
121 return 0;
122}
123
124/* Mapping from cpu number to logical apicid */
125static inline int cpu_to_logical_apicid(int cpu)
126{
127 return 1 << cpu;
128}
129
130static inline int cpu_present_to_apicid(int mps_cpu)
131{
132 if (mps_cpu < NR_CPUS && cpu_present(mps_cpu))
133 return (int)per_cpu(x86_bios_cpu_apicid, mps_cpu);
134 else
135 return BAD_APICID;
136}
137
138static inline physid_mask_t apicid_to_cpu_present(int phys_apicid)
139{
140 return physid_mask_of_physid(phys_apicid);
141}
142
143static inline void setup_portio_remap(void)
144{
145}
146
147static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
148{
149 return physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map);
150}
151
152static inline void enable_apic_mode(void)
153{
154}
155#endif /* CONFIG_X86_LOCAL_APIC */
156#endif /* _ASM_X86_MACH_DEFAULT_MACH_APIC_H */
diff --git a/arch/x86/include/asm/mach-default/mach_apicdef.h b/arch/x86/include/asm/mach-default/mach_apicdef.h
new file mode 100644
index 000000000000..53179936d6c6
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_apicdef.h
@@ -0,0 +1,24 @@
1#ifndef _ASM_X86_MACH_DEFAULT_MACH_APICDEF_H
2#define _ASM_X86_MACH_DEFAULT_MACH_APICDEF_H
3
4#include <asm/apic.h>
5
6#ifdef CONFIG_X86_64
7#define APIC_ID_MASK (genapic->apic_id_mask)
8#define GET_APIC_ID(x) (genapic->get_apic_id(x))
9#define SET_APIC_ID(x) (genapic->set_apic_id(x))
10#else
11#define APIC_ID_MASK (0xF<<24)
12static inline unsigned get_apic_id(unsigned long x)
13{
14 unsigned int ver = GET_APIC_VERSION(apic_read(APIC_LVR));
15 if (APIC_XAPIC(ver))
16 return (((x)>>24)&0xFF);
17 else
18 return (((x)>>24)&0xF);
19}
20
21#define GET_APIC_ID(x) get_apic_id(x)
22#endif
23
24#endif /* _ASM_X86_MACH_DEFAULT_MACH_APICDEF_H */
diff --git a/arch/x86/include/asm/mach-default/mach_ipi.h b/arch/x86/include/asm/mach-default/mach_ipi.h
new file mode 100644
index 000000000000..fabca01ebacf
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_ipi.h
@@ -0,0 +1,64 @@
1#ifndef _ASM_X86_MACH_DEFAULT_MACH_IPI_H
2#define _ASM_X86_MACH_DEFAULT_MACH_IPI_H
3
4/* Avoid include hell */
5#define NMI_VECTOR 0x02
6
7void send_IPI_mask_bitmask(cpumask_t mask, int vector);
8void __send_IPI_shortcut(unsigned int shortcut, int vector);
9
10extern int no_broadcast;
11
12#ifdef CONFIG_X86_64
13#include <asm/genapic.h>
14#define send_IPI_mask (genapic->send_IPI_mask)
15#else
16static inline void send_IPI_mask(cpumask_t mask, int vector)
17{
18 send_IPI_mask_bitmask(mask, vector);
19}
20#endif
21
22static inline void __local_send_IPI_allbutself(int vector)
23{
24 if (no_broadcast || vector == NMI_VECTOR) {
25 cpumask_t mask = cpu_online_map;
26
27 cpu_clear(smp_processor_id(), mask);
28 send_IPI_mask(mask, vector);
29 } else
30 __send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
31}
32
33static inline void __local_send_IPI_all(int vector)
34{
35 if (no_broadcast || vector == NMI_VECTOR)
36 send_IPI_mask(cpu_online_map, vector);
37 else
38 __send_IPI_shortcut(APIC_DEST_ALLINC, vector);
39}
40
41#ifdef CONFIG_X86_64
42#define send_IPI_allbutself (genapic->send_IPI_allbutself)
43#define send_IPI_all (genapic->send_IPI_all)
44#else
45static inline void send_IPI_allbutself(int vector)
46{
47 /*
48 * if there are no other CPUs in the system then we get an APIC send
49 * error if we try to broadcast, thus avoid sending IPIs in this case.
50 */
51 if (!(num_online_cpus() > 1))
52 return;
53
54 __local_send_IPI_allbutself(vector);
55 return;
56}
57
58static inline void send_IPI_all(int vector)
59{
60 __local_send_IPI_all(vector);
61}
62#endif
63
64#endif /* _ASM_X86_MACH_DEFAULT_MACH_IPI_H */
diff --git a/arch/x86/include/asm/mach-default/mach_mpparse.h b/arch/x86/include/asm/mach-default/mach_mpparse.h
new file mode 100644
index 000000000000..8c1ea21238a7
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_mpparse.h
@@ -0,0 +1,17 @@
1#ifndef _ASM_X86_MACH_DEFAULT_MACH_MPPARSE_H
2#define _ASM_X86_MACH_DEFAULT_MACH_MPPARSE_H
3
4static inline int mps_oem_check(struct mp_config_table *mpc, char *oem,
5 char *productid)
6{
7 return 0;
8}
9
10/* Hook from generic ACPI tables.c */
11static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
12{
13 return 0;
14}
15
16
17#endif /* _ASM_X86_MACH_DEFAULT_MACH_MPPARSE_H */
diff --git a/arch/x86/include/asm/mach-default/mach_mpspec.h b/arch/x86/include/asm/mach-default/mach_mpspec.h
new file mode 100644
index 000000000000..e85ede686be8
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_mpspec.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_X86_MACH_DEFAULT_MACH_MPSPEC_H
2#define _ASM_X86_MACH_DEFAULT_MACH_MPSPEC_H
3
4#define MAX_IRQ_SOURCES 256
5
6#if CONFIG_BASE_SMALL == 0
7#define MAX_MP_BUSSES 256
8#else
9#define MAX_MP_BUSSES 32
10#endif
11
12#endif /* _ASM_X86_MACH_DEFAULT_MACH_MPSPEC_H */
diff --git a/arch/x86/include/asm/mach-default/mach_timer.h b/arch/x86/include/asm/mach-default/mach_timer.h
new file mode 100644
index 000000000000..853728519ae9
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_timer.h
@@ -0,0 +1,48 @@
1/*
2 * Machine specific calibrate_tsc() for generic.
3 * Split out from timer_tsc.c by Osamu Tomita <tomita@cinet.co.jp>
4 */
5/* ------ Calibrate the TSC -------
6 * Return 2^32 * (1 / (TSC clocks per usec)) for do_fast_gettimeoffset().
7 * Too much 64-bit arithmetic here to do this cleanly in C, and for
8 * accuracy's sake we want to keep the overhead on the CTC speaker (channel 2)
9 * output busy loop as low as possible. We avoid reading the CTC registers
10 * directly because of the awkward 8-bit access mechanism of the 82C54
11 * device.
12 */
13#ifndef _ASM_X86_MACH_DEFAULT_MACH_TIMER_H
14#define _ASM_X86_MACH_DEFAULT_MACH_TIMER_H
15
16#define CALIBRATE_TIME_MSEC 30 /* 30 msecs */
17#define CALIBRATE_LATCH \
18 ((CLOCK_TICK_RATE * CALIBRATE_TIME_MSEC + 1000/2)/1000)
19
20static inline void mach_prepare_counter(void)
21{
22 /* Set the Gate high, disable speaker */
23 outb((inb(0x61) & ~0x02) | 0x01, 0x61);
24
25 /*
26 * Now let's take care of CTC channel 2
27 *
28 * Set the Gate high, program CTC channel 2 for mode 0,
29 * (interrupt on terminal count mode), binary count,
30 * load 5 * LATCH count, (LSB and MSB) to begin countdown.
31 *
32 * Some devices need a delay here.
33 */
34 outb(0xb0, 0x43); /* binary, mode 0, LSB/MSB, Ch 2 */
35 outb_p(CALIBRATE_LATCH & 0xff, 0x42); /* LSB of count */
36 outb_p(CALIBRATE_LATCH >> 8, 0x42); /* MSB of count */
37}
38
39static inline void mach_countup(unsigned long *count_p)
40{
41 unsigned long count = 0;
42 do {
43 count++;
44 } while ((inb_p(0x61) & 0x20) == 0);
45 *count_p = count;
46}
47
48#endif /* _ASM_X86_MACH_DEFAULT_MACH_TIMER_H */
diff --git a/arch/x86/include/asm/mach-default/mach_traps.h b/arch/x86/include/asm/mach-default/mach_traps.h
new file mode 100644
index 000000000000..f7920601e472
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_traps.h
@@ -0,0 +1,33 @@
1/*
2 * Machine specific NMI handling for generic.
3 * Split out from traps.c by Osamu Tomita <tomita@cinet.co.jp>
4 */
5#ifndef _ASM_X86_MACH_DEFAULT_MACH_TRAPS_H
6#define _ASM_X86_MACH_DEFAULT_MACH_TRAPS_H
7
8#include <asm/mc146818rtc.h>
9
10static inline unsigned char get_nmi_reason(void)
11{
12 return inb(0x61);
13}
14
15static inline void reassert_nmi(void)
16{
17 int old_reg = -1;
18
19 if (do_i_have_lock_cmos())
20 old_reg = current_lock_cmos_reg();
21 else
22 lock_cmos(0); /* register doesn't matter here */
23 outb(0x8f, 0x70);
24 inb(0x71); /* dummy */
25 outb(0x0f, 0x70);
26 inb(0x71); /* dummy */
27 if (old_reg >= 0)
28 outb(old_reg, 0x70);
29 else
30 unlock_cmos();
31}
32
33#endif /* _ASM_X86_MACH_DEFAULT_MACH_TRAPS_H */
diff --git a/arch/x86/include/asm/mach-default/mach_wakecpu.h b/arch/x86/include/asm/mach-default/mach_wakecpu.h
new file mode 100644
index 000000000000..d5c0b826a4ff
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/mach_wakecpu.h
@@ -0,0 +1,42 @@
1#ifndef _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
2#define _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H
3
4/*
5 * This file copes with machines that wakeup secondary CPUs by the
6 * INIT, INIT, STARTUP sequence.
7 */
8
9#define WAKE_SECONDARY_VIA_INIT
10
11#define TRAMPOLINE_LOW phys_to_virt(0x467)
12#define TRAMPOLINE_HIGH phys_to_virt(0x469)
13
14#define boot_cpu_apicid boot_cpu_physical_apicid
15
16static inline void wait_for_init_deassert(atomic_t *deassert)
17{
18 while (!atomic_read(deassert))
19 cpu_relax();
20 return;
21}
22
23/* Nothing to do for most platforms, since cleared by the INIT cycle */
24static inline void smp_callin_clear_local_apic(void)
25{
26}
27
28static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
29{
30}
31
32static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
33{
34}
35
36#if APIC_DEBUG
37 #define inquire_remote_apic(apicid) __inquire_remote_apic(apicid)
38#else
39 #define inquire_remote_apic(apicid) {}
40#endif
41
42#endif /* _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H */
diff --git a/arch/x86/include/asm/mach-default/pci-functions.h b/arch/x86/include/asm/mach-default/pci-functions.h
new file mode 100644
index 000000000000..ed0bab427354
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/pci-functions.h
@@ -0,0 +1,19 @@
1/*
2 * PCI BIOS function numbering for conventional PCI BIOS
3 * systems
4 */
5
6#define PCIBIOS_PCI_FUNCTION_ID 0xb1XX
7#define PCIBIOS_PCI_BIOS_PRESENT 0xb101
8#define PCIBIOS_FIND_PCI_DEVICE 0xb102
9#define PCIBIOS_FIND_PCI_CLASS_CODE 0xb103
10#define PCIBIOS_GENERATE_SPECIAL_CYCLE 0xb106
11#define PCIBIOS_READ_CONFIG_BYTE 0xb108
12#define PCIBIOS_READ_CONFIG_WORD 0xb109
13#define PCIBIOS_READ_CONFIG_DWORD 0xb10a
14#define PCIBIOS_WRITE_CONFIG_BYTE 0xb10b
15#define PCIBIOS_WRITE_CONFIG_WORD 0xb10c
16#define PCIBIOS_WRITE_CONFIG_DWORD 0xb10d
17#define PCIBIOS_GET_ROUTING_OPTIONS 0xb10e
18#define PCIBIOS_SET_PCI_HW_INT 0xb10f
19
diff --git a/arch/x86/include/asm/mach-default/setup_arch.h b/arch/x86/include/asm/mach-default/setup_arch.h
new file mode 100644
index 000000000000..38846208b548
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/setup_arch.h
@@ -0,0 +1,3 @@
1/* Hook to call BIOS initialisation function */
2
3/* no action for generic */
diff --git a/arch/x86/include/asm/mach-default/smpboot_hooks.h b/arch/x86/include/asm/mach-default/smpboot_hooks.h
new file mode 100644
index 000000000000..dbab36d64d48
--- /dev/null
+++ b/arch/x86/include/asm/mach-default/smpboot_hooks.h
@@ -0,0 +1,59 @@
1/* two abstractions specific to kernel/smpboot.c, mainly to cater to visws
2 * which needs to alter them. */
3
4static inline void smpboot_clear_io_apic_irqs(void)
5{
6#ifdef CONFIG_X86_IO_APIC
7 io_apic_irqs = 0;
8#endif
9}
10
11static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
12{
13 CMOS_WRITE(0xa, 0xf);
14 local_flush_tlb();
15 pr_debug("1.\n");
16 *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4;
17 pr_debug("2.\n");
18 *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf;
19 pr_debug("3.\n");
20}
21
22static inline void smpboot_restore_warm_reset_vector(void)
23{
24 /*
25 * Install writable page 0 entry to set BIOS data area.
26 */
27 local_flush_tlb();
28
29 /*
30 * Paranoid: Set warm reset code and vector here back
31 * to default values.
32 */
33 CMOS_WRITE(0, 0xf);
34
35 *((volatile long *) phys_to_virt(0x467)) = 0;
36}
37
38static inline void __init smpboot_setup_io_apic(void)
39{
40#ifdef CONFIG_X86_IO_APIC
41 /*
42 * Here we can be sure that there is an IO-APIC in the system. Let's
43 * go and set it up:
44 */
45 if (!skip_ioapic_setup && nr_ioapics)
46 setup_IO_APIC();
47 else {
48 nr_ioapics = 0;
49 localise_nmi_watchdog();
50 }
51#endif
52}
53
54static inline void smpboot_clear_io_apic(void)
55{
56#ifdef CONFIG_X86_IO_APIC
57 nr_ioapics = 0;
58#endif
59}
diff --git a/arch/x86/include/asm/mach-generic/gpio.h b/arch/x86/include/asm/mach-generic/gpio.h
new file mode 100644
index 000000000000..995c45efdb33
--- /dev/null
+++ b/arch/x86/include/asm/mach-generic/gpio.h
@@ -0,0 +1,15 @@
1#ifndef _ASM_X86_MACH_GENERIC_GPIO_H
2#define _ASM_X86_MACH_GENERIC_GPIO_H
3
4int gpio_request(unsigned gpio, const char *label);
5void gpio_free(unsigned gpio);
6int gpio_direction_input(unsigned gpio);
7int gpio_direction_output(unsigned gpio, int value);
8int gpio_get_value(unsigned gpio);
9void gpio_set_value(unsigned gpio, int value);
10int gpio_to_irq(unsigned gpio);
11int irq_to_gpio(unsigned irq);
12
13#include <asm-generic/gpio.h> /* cansleep wrappers */
14
15#endif /* _ASM_X86_MACH_GENERIC_GPIO_H */
diff --git a/arch/x86/include/asm/mach-generic/mach_apic.h b/arch/x86/include/asm/mach-generic/mach_apic.h
new file mode 100644
index 000000000000..5180bd7478fb
--- /dev/null
+++ b/arch/x86/include/asm/mach-generic/mach_apic.h
@@ -0,0 +1,33 @@
1#ifndef _ASM_X86_MACH_GENERIC_MACH_APIC_H
2#define _ASM_X86_MACH_GENERIC_MACH_APIC_H
3
4#include <asm/genapic.h>
5
6#define esr_disable (genapic->ESR_DISABLE)
7#define NO_BALANCE_IRQ (genapic->no_balance_irq)
8#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
9#define INT_DEST_MODE (genapic->int_dest_mode)
10#undef APIC_DEST_LOGICAL
11#define APIC_DEST_LOGICAL (genapic->apic_destination_logical)
12#define TARGET_CPUS (genapic->target_cpus())
13#define apic_id_registered (genapic->apic_id_registered)
14#define init_apic_ldr (genapic->init_apic_ldr)
15#define ioapic_phys_id_map (genapic->ioapic_phys_id_map)
16#define setup_apic_routing (genapic->setup_apic_routing)
17#define multi_timer_check (genapic->multi_timer_check)
18#define apicid_to_node (genapic->apicid_to_node)
19#define cpu_to_logical_apicid (genapic->cpu_to_logical_apicid)
20#define cpu_present_to_apicid (genapic->cpu_present_to_apicid)
21#define apicid_to_cpu_present (genapic->apicid_to_cpu_present)
22#define setup_portio_remap (genapic->setup_portio_remap)
23#define check_apicid_present (genapic->check_apicid_present)
24#define check_phys_apicid_present (genapic->check_phys_apicid_present)
25#define check_apicid_used (genapic->check_apicid_used)
26#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
27#define vector_allocation_domain (genapic->vector_allocation_domain)
28#define enable_apic_mode (genapic->enable_apic_mode)
29#define phys_pkg_id (genapic->phys_pkg_id)
30
31extern void generic_bigsmp_probe(void);
32
33#endif /* _ASM_X86_MACH_GENERIC_MACH_APIC_H */
diff --git a/arch/x86/include/asm/mach-generic/mach_apicdef.h b/arch/x86/include/asm/mach-generic/mach_apicdef.h
new file mode 100644
index 000000000000..68041f3802f4
--- /dev/null
+++ b/arch/x86/include/asm/mach-generic/mach_apicdef.h
@@ -0,0 +1,11 @@
1#ifndef _ASM_X86_MACH_GENERIC_MACH_APICDEF_H
2#define _ASM_X86_MACH_GENERIC_MACH_APICDEF_H
3
4#ifndef APIC_DEFINITION
5#include <asm/genapic.h>
6
7#define GET_APIC_ID (genapic->get_apic_id)
8#define APIC_ID_MASK (genapic->apic_id_mask)
9#endif
10
11#endif /* _ASM_X86_MACH_GENERIC_MACH_APICDEF_H */
diff --git a/arch/x86/include/asm/mach-generic/mach_ipi.h b/arch/x86/include/asm/mach-generic/mach_ipi.h
new file mode 100644
index 000000000000..ffd637e3c3d9
--- /dev/null
+++ b/arch/x86/include/asm/mach-generic/mach_ipi.h
@@ -0,0 +1,10 @@
1#ifndef _ASM_X86_MACH_GENERIC_MACH_IPI_H
2#define _ASM_X86_MACH_GENERIC_MACH_IPI_H
3
4#include <asm/genapic.h>
5
6#define send_IPI_mask (genapic->send_IPI_mask)
7#define send_IPI_allbutself (genapic->send_IPI_allbutself)
8#define send_IPI_all (genapic->send_IPI_all)
9
10#endif /* _ASM_X86_MACH_GENERIC_MACH_IPI_H */
diff --git a/arch/x86/include/asm/mach-generic/mach_mpparse.h b/arch/x86/include/asm/mach-generic/mach_mpparse.h
new file mode 100644
index 000000000000..048f1d468535
--- /dev/null
+++ b/arch/x86/include/asm/mach-generic/mach_mpparse.h
@@ -0,0 +1,10 @@
1#ifndef _ASM_X86_MACH_GENERIC_MACH_MPPARSE_H
2#define _ASM_X86_MACH_GENERIC_MACH_MPPARSE_H
3
4
5extern int mps_oem_check(struct mp_config_table *mpc, char *oem,
6 char *productid);
7
8extern int acpi_madt_oem_check(char *oem_id, char *oem_table_id);
9
10#endif /* _ASM_X86_MACH_GENERIC_MACH_MPPARSE_H */
diff --git a/arch/x86/include/asm/mach-generic/mach_mpspec.h b/arch/x86/include/asm/mach-generic/mach_mpspec.h
new file mode 100644
index 000000000000..bbab5ccfd4fe
--- /dev/null
+++ b/arch/x86/include/asm/mach-generic/mach_mpspec.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_X86_MACH_GENERIC_MACH_MPSPEC_H
2#define _ASM_X86_MACH_GENERIC_MACH_MPSPEC_H
3
4#define MAX_IRQ_SOURCES 256
5
6/* Summit or generic (i.e. installer) kernels need lots of bus entries. */
7/* Maximum 256 PCI busses, plus 1 ISA bus in each of 4 cabinets. */
8#define MAX_MP_BUSSES 260
9
10extern void numaq_mps_oem_check(struct mp_config_table *mpc, char *oem,
11 char *productid);
12#endif /* _ASM_X86_MACH_GENERIC_MACH_MPSPEC_H */
diff --git a/arch/x86/include/asm/mach-rdc321x/gpio.h b/arch/x86/include/asm/mach-rdc321x/gpio.h
new file mode 100644
index 000000000000..c210ab5788b0
--- /dev/null
+++ b/arch/x86/include/asm/mach-rdc321x/gpio.h
@@ -0,0 +1,60 @@
1#ifndef _ASM_X86_MACH_RDC321X_GPIO_H
2#define _ASM_X86_MACH_RDC321X_GPIO_H
3
4#include <linux/kernel.h>
5
6extern int rdc_gpio_get_value(unsigned gpio);
7extern void rdc_gpio_set_value(unsigned gpio, int value);
8extern int rdc_gpio_direction_input(unsigned gpio);
9extern int rdc_gpio_direction_output(unsigned gpio, int value);
10extern int rdc_gpio_request(unsigned gpio, const char *label);
11extern void rdc_gpio_free(unsigned gpio);
12extern void __init rdc321x_gpio_setup(void);
13
14/* Wrappers for the arch-neutral GPIO API */
15
16static inline int gpio_request(unsigned gpio, const char *label)
17{
18 return rdc_gpio_request(gpio, label);
19}
20
21static inline void gpio_free(unsigned gpio)
22{
23 might_sleep();
24 rdc_gpio_free(gpio);
25}
26
27static inline int gpio_direction_input(unsigned gpio)
28{
29 return rdc_gpio_direction_input(gpio);
30}
31
32static inline int gpio_direction_output(unsigned gpio, int value)
33{
34 return rdc_gpio_direction_output(gpio, value);
35}
36
37static inline int gpio_get_value(unsigned gpio)
38{
39 return rdc_gpio_get_value(gpio);
40}
41
42static inline void gpio_set_value(unsigned gpio, int value)
43{
44 rdc_gpio_set_value(gpio, value);
45}
46
47static inline int gpio_to_irq(unsigned gpio)
48{
49 return gpio;
50}
51
52static inline int irq_to_gpio(unsigned irq)
53{
54 return irq;
55}
56
57/* For cansleep */
58#include <asm-generic/gpio.h>
59
60#endif /* _ASM_X86_MACH_RDC321X_GPIO_H */
diff --git a/arch/x86/include/asm/mach-rdc321x/rdc321x_defs.h b/arch/x86/include/asm/mach-rdc321x/rdc321x_defs.h
new file mode 100644
index 000000000000..c8e9c8bed3d0
--- /dev/null
+++ b/arch/x86/include/asm/mach-rdc321x/rdc321x_defs.h
@@ -0,0 +1,12 @@
1#define PFX "rdc321x: "
2
3/* General purpose configuration and data registers */
4#define RDC3210_CFGREG_ADDR 0x0CF8
5#define RDC3210_CFGREG_DATA 0x0CFC
6
7#define RDC321X_GPIO_CTRL_REG1 0x48
8#define RDC321X_GPIO_CTRL_REG2 0x84
9#define RDC321X_GPIO_DATA_REG1 0x4c
10#define RDC321X_GPIO_DATA_REG2 0x88
11
12#define RDC321X_MAX_GPIO 58
diff --git a/arch/x86/include/asm/mach-voyager/do_timer.h b/arch/x86/include/asm/mach-voyager/do_timer.h
new file mode 100644
index 000000000000..9e5a459fd15b
--- /dev/null
+++ b/arch/x86/include/asm/mach-voyager/do_timer.h
@@ -0,0 +1,17 @@
1/* defines for inline arch setup functions */
2#include <linux/clockchips.h>
3
4#include <asm/voyager.h>
5#include <asm/i8253.h>
6
7/**
8 * do_timer_interrupt_hook - hook into timer tick
9 *
10 * Call the pit clock event handler. see asm/i8253.h
11 **/
12static inline void do_timer_interrupt_hook(void)
13{
14 global_clock_event->event_handler(global_clock_event);
15 voyager_timer_interrupt();
16}
17
diff --git a/arch/x86/include/asm/mach-voyager/entry_arch.h b/arch/x86/include/asm/mach-voyager/entry_arch.h
new file mode 100644
index 000000000000..ae52624b5937
--- /dev/null
+++ b/arch/x86/include/asm/mach-voyager/entry_arch.h
@@ -0,0 +1,26 @@
1/* -*- mode: c; c-basic-offset: 8 -*- */
2
3/* Copyright (C) 2002
4 *
5 * Author: James.Bottomley@HansenPartnership.com
6 *
7 * linux/arch/i386/voyager/entry_arch.h
8 *
9 * This file builds the VIC and QIC CPI gates
10 */
11
12/* initialise the voyager interrupt gates
13 *
14 * This uses the macros in irq.h to set up assembly jump gates. The
15 * calls are then redirected to the same routine with smp_ prefixed */
16BUILD_INTERRUPT(vic_sys_interrupt, VIC_SYS_INT)
17BUILD_INTERRUPT(vic_cmn_interrupt, VIC_CMN_INT)
18BUILD_INTERRUPT(vic_cpi_interrupt, VIC_CPI_LEVEL0);
19
20/* do all the QIC interrupts */
21BUILD_INTERRUPT(qic_timer_interrupt, QIC_TIMER_CPI);
22BUILD_INTERRUPT(qic_invalidate_interrupt, QIC_INVALIDATE_CPI);
23BUILD_INTERRUPT(qic_reschedule_interrupt, QIC_RESCHEDULE_CPI);
24BUILD_INTERRUPT(qic_enable_irq_interrupt, QIC_ENABLE_IRQ_CPI);
25BUILD_INTERRUPT(qic_call_function_interrupt, QIC_CALL_FUNCTION_CPI);
26BUILD_INTERRUPT(qic_call_function_single_interrupt, QIC_CALL_FUNCTION_SINGLE_CPI);
diff --git a/arch/x86/include/asm/mach-voyager/setup_arch.h b/arch/x86/include/asm/mach-voyager/setup_arch.h
new file mode 100644
index 000000000000..71729ca05cd7
--- /dev/null
+++ b/arch/x86/include/asm/mach-voyager/setup_arch.h
@@ -0,0 +1,12 @@
1#include <asm/voyager.h>
2#include <asm/setup.h>
3#define VOYAGER_BIOS_INFO ((struct voyager_bios_info *) \
4 (&boot_params.apm_bios_info))
5
6/* Hook to call BIOS initialisation function */
7
8/* for voyager, pass the voyager BIOS/SUS info area to the detection
9 * routines */
10
11#define ARCH_SETUP voyager_detect(VOYAGER_BIOS_INFO);
12
diff --git a/arch/x86/include/asm/math_emu.h b/arch/x86/include/asm/math_emu.h
new file mode 100644
index 000000000000..5a65b107ad58
--- /dev/null
+++ b/arch/x86/include/asm/math_emu.h
@@ -0,0 +1,31 @@
1#ifndef _ASM_X86_MATH_EMU_H
2#define _ASM_X86_MATH_EMU_H
3
4/* This structure matches the layout of the data saved to the stack
5 following a device-not-present interrupt, part of it saved
6 automatically by the 80386/80486.
7 */
8struct info {
9 long ___orig_eip;
10 long ___ebx;
11 long ___ecx;
12 long ___edx;
13 long ___esi;
14 long ___edi;
15 long ___ebp;
16 long ___eax;
17 long ___ds;
18 long ___es;
19 long ___fs;
20 long ___orig_eax;
21 long ___eip;
22 long ___cs;
23 long ___eflags;
24 long ___esp;
25 long ___ss;
26 long ___vm86_es; /* This and the following only in vm86 mode */
27 long ___vm86_ds;
28 long ___vm86_fs;
29 long ___vm86_gs;
30};
31#endif /* _ASM_X86_MATH_EMU_H */
diff --git a/arch/x86/include/asm/mc146818rtc.h b/arch/x86/include/asm/mc146818rtc.h
new file mode 100644
index 000000000000..01fdf5674e24
--- /dev/null
+++ b/arch/x86/include/asm/mc146818rtc.h
@@ -0,0 +1,104 @@
1/*
2 * Machine dependent access functions for RTC registers.
3 */
4#ifndef _ASM_X86_MC146818RTC_H
5#define _ASM_X86_MC146818RTC_H
6
7#include <asm/io.h>
8#include <asm/system.h>
9#include <asm/processor.h>
10#include <linux/mc146818rtc.h>
11
12#ifndef RTC_PORT
13#define RTC_PORT(x) (0x70 + (x))
14#define RTC_ALWAYS_BCD 1 /* RTC operates in binary mode */
15#endif
16
17#if defined(CONFIG_X86_32) && defined(__HAVE_ARCH_CMPXCHG)
18/*
19 * This lock provides nmi access to the CMOS/RTC registers. It has some
20 * special properties. It is owned by a CPU and stores the index register
21 * currently being accessed (if owned). The idea here is that it works
22 * like a normal lock (normally). However, in an NMI, the NMI code will
23 * first check to see if its CPU owns the lock, meaning that the NMI
24 * interrupted during the read/write of the device. If it does, it goes ahead
25 * and performs the access and then restores the index register. If it does
26 * not, it locks normally.
27 *
28 * Note that since we are working with NMIs, we need this lock even in
29 * a non-SMP machine just to mark that the lock is owned.
30 *
31 * This only works with compare-and-swap. There is no other way to
32 * atomically claim the lock and set the owner.
33 */
34#include <linux/smp.h>
35extern volatile unsigned long cmos_lock;
36
37/*
38 * All of these below must be called with interrupts off, preempt
39 * disabled, etc.
40 */
41
42static inline void lock_cmos(unsigned char reg)
43{
44 unsigned long new;
45 new = ((smp_processor_id() + 1) << 8) | reg;
46 for (;;) {
47 if (cmos_lock) {
48 cpu_relax();
49 continue;
50 }
51 if (__cmpxchg(&cmos_lock, 0, new, sizeof(cmos_lock)) == 0)
52 return;
53 }
54}
55
56static inline void unlock_cmos(void)
57{
58 cmos_lock = 0;
59}
60
61static inline int do_i_have_lock_cmos(void)
62{
63 return (cmos_lock >> 8) == (smp_processor_id() + 1);
64}
65
66static inline unsigned char current_lock_cmos_reg(void)
67{
68 return cmos_lock & 0xff;
69}
70
71#define lock_cmos_prefix(reg) \
72 do { \
73 unsigned long cmos_flags; \
74 local_irq_save(cmos_flags); \
75 lock_cmos(reg)
76
77#define lock_cmos_suffix(reg) \
78 unlock_cmos(); \
79 local_irq_restore(cmos_flags); \
80 } while (0)
81#else
82#define lock_cmos_prefix(reg) do {} while (0)
83#define lock_cmos_suffix(reg) do {} while (0)
84#define lock_cmos(reg)
85#define unlock_cmos()
86#define do_i_have_lock_cmos() 0
87#define current_lock_cmos_reg() 0
88#endif
89
90/*
91 * The yet supported machines all access the RTC index register via
92 * an ISA port access but the way to access the date register differs ...
93 */
94#define CMOS_READ(addr) rtc_cmos_read(addr)
95#define CMOS_WRITE(val, addr) rtc_cmos_write(val, addr)
96unsigned char rtc_cmos_read(unsigned char addr);
97void rtc_cmos_write(unsigned char val, unsigned char addr);
98
99extern int mach_set_rtc_mmss(unsigned long nowtime);
100extern unsigned long mach_get_cmos_time(void);
101
102#define RTC_IRQ 8
103
104#endif /* _ASM_X86_MC146818RTC_H */
diff --git a/arch/x86/include/asm/mca.h b/arch/x86/include/asm/mca.h
new file mode 100644
index 000000000000..eedbb6cc1efb
--- /dev/null
+++ b/arch/x86/include/asm/mca.h
@@ -0,0 +1,43 @@
1/* -*- mode: c; c-basic-offset: 8 -*- */
2
3/* Platform specific MCA defines */
4#ifndef _ASM_X86_MCA_H
5#define _ASM_X86_MCA_H
6
7/* Maximal number of MCA slots - actually, some machines have less, but
8 * they all have sufficient number of POS registers to cover 8.
9 */
10#define MCA_MAX_SLOT_NR 8
11
12/* Most machines have only one MCA bus. The only multiple bus machines
13 * I know have at most two */
14#define MAX_MCA_BUSSES 2
15
16#define MCA_PRIMARY_BUS 0
17#define MCA_SECONDARY_BUS 1
18
19/* Dummy slot numbers on primary MCA for integrated functions */
20#define MCA_INTEGSCSI (MCA_MAX_SLOT_NR)
21#define MCA_INTEGVIDEO (MCA_MAX_SLOT_NR+1)
22#define MCA_MOTHERBOARD (MCA_MAX_SLOT_NR+2)
23
24/* Dummy POS values for integrated functions */
25#define MCA_DUMMY_POS_START 0x10000
26#define MCA_INTEGSCSI_POS (MCA_DUMMY_POS_START+1)
27#define MCA_INTEGVIDEO_POS (MCA_DUMMY_POS_START+2)
28#define MCA_MOTHERBOARD_POS (MCA_DUMMY_POS_START+3)
29
30/* MCA registers */
31
32#define MCA_MOTHERBOARD_SETUP_REG 0x94
33#define MCA_ADAPTER_SETUP_REG 0x96
34#define MCA_POS_REG(n) (0x100+(n))
35
36#define MCA_ENABLED 0x01 /* POS 2, set if adapter enabled */
37
38/* Max number of adapters, including both slots and various integrated
39 * things.
40 */
41#define MCA_NUMADAPTERS (MCA_MAX_SLOT_NR+3)
42
43#endif /* _ASM_X86_MCA_H */
diff --git a/arch/x86/include/asm/mca_dma.h b/arch/x86/include/asm/mca_dma.h
new file mode 100644
index 000000000000..45271aef82dd
--- /dev/null
+++ b/arch/x86/include/asm/mca_dma.h
@@ -0,0 +1,201 @@
1#ifndef _ASM_X86_MCA_DMA_H
2#define _ASM_X86_MCA_DMA_H
3
4#include <asm/io.h>
5#include <linux/ioport.h>
6
7/*
8 * Microchannel specific DMA stuff. DMA on an MCA machine is fairly similar to
9 * standard PC dma, but it certainly has its quirks. DMA register addresses
10 * are in a different place and there are some added functions. Most of this
11 * should be pretty obvious on inspection. Note that the user must divide
12 * count by 2 when using 16-bit dma; that is not handled by these functions.
13 *
14 * Ramen Noodles are yummy.
15 *
16 * 1998 Tymm Twillman <tymm@computer.org>
17 */
18
19/*
20 * Registers that are used by the DMA controller; FN is the function register
21 * (tell the controller what to do) and EXE is the execution register (how
22 * to do it)
23 */
24
25#define MCA_DMA_REG_FN 0x18
26#define MCA_DMA_REG_EXE 0x1A
27
28/*
29 * Functions that the DMA controller can do
30 */
31
32#define MCA_DMA_FN_SET_IO 0x00
33#define MCA_DMA_FN_SET_ADDR 0x20
34#define MCA_DMA_FN_GET_ADDR 0x30
35#define MCA_DMA_FN_SET_COUNT 0x40
36#define MCA_DMA_FN_GET_COUNT 0x50
37#define MCA_DMA_FN_GET_STATUS 0x60
38#define MCA_DMA_FN_SET_MODE 0x70
39#define MCA_DMA_FN_SET_ARBUS 0x80
40#define MCA_DMA_FN_MASK 0x90
41#define MCA_DMA_FN_RESET_MASK 0xA0
42#define MCA_DMA_FN_MASTER_CLEAR 0xD0
43
44/*
45 * Modes (used by setting MCA_DMA_FN_MODE in the function register)
46 *
47 * Note that the MODE_READ is read from memory (write to device), and
48 * MODE_WRITE is vice-versa.
49 */
50
51#define MCA_DMA_MODE_XFER 0x04 /* read by default */
52#define MCA_DMA_MODE_READ 0x04 /* same as XFER */
53#define MCA_DMA_MODE_WRITE 0x08 /* OR with MODE_XFER to use */
54#define MCA_DMA_MODE_IO 0x01 /* DMA from IO register */
55#define MCA_DMA_MODE_16 0x40 /* 16 bit xfers */
56
57
58/**
59 * mca_enable_dma - channel to enable DMA on
60 * @dmanr: DMA channel
61 *
62 * Enable the MCA bus DMA on a channel. This can be called from
63 * IRQ context.
64 */
65
66static inline void mca_enable_dma(unsigned int dmanr)
67{
68 outb(MCA_DMA_FN_RESET_MASK | dmanr, MCA_DMA_REG_FN);
69}
70
71/**
72 * mca_disble_dma - channel to disable DMA on
73 * @dmanr: DMA channel
74 *
75 * Enable the MCA bus DMA on a channel. This can be called from
76 * IRQ context.
77 */
78
79static inline void mca_disable_dma(unsigned int dmanr)
80{
81 outb(MCA_DMA_FN_MASK | dmanr, MCA_DMA_REG_FN);
82}
83
84/**
85 * mca_set_dma_addr - load a 24bit DMA address
86 * @dmanr: DMA channel
87 * @a: 24bit bus address
88 *
89 * Load the address register in the DMA controller. This has a 24bit
90 * limitation (16Mb).
91 */
92
93static inline void mca_set_dma_addr(unsigned int dmanr, unsigned int a)
94{
95 outb(MCA_DMA_FN_SET_ADDR | dmanr, MCA_DMA_REG_FN);
96 outb(a & 0xff, MCA_DMA_REG_EXE);
97 outb((a >> 8) & 0xff, MCA_DMA_REG_EXE);
98 outb((a >> 16) & 0xff, MCA_DMA_REG_EXE);
99}
100
101/**
102 * mca_get_dma_addr - load a 24bit DMA address
103 * @dmanr: DMA channel
104 *
105 * Read the address register in the DMA controller. This has a 24bit
106 * limitation (16Mb). The return is a bus address.
107 */
108
109static inline unsigned int mca_get_dma_addr(unsigned int dmanr)
110{
111 unsigned int addr;
112
113 outb(MCA_DMA_FN_GET_ADDR | dmanr, MCA_DMA_REG_FN);
114 addr = inb(MCA_DMA_REG_EXE);
115 addr |= inb(MCA_DMA_REG_EXE) << 8;
116 addr |= inb(MCA_DMA_REG_EXE) << 16;
117
118 return addr;
119}
120
121/**
122 * mca_set_dma_count - load a 16bit transfer count
123 * @dmanr: DMA channel
124 * @count: count
125 *
126 * Set the DMA count for this channel. This can be up to 64Kbytes.
127 * Setting a count of zero will not do what you expect.
128 */
129
130static inline void mca_set_dma_count(unsigned int dmanr, unsigned int count)
131{
132 count--; /* transfers one more than count -- correct for this */
133
134 outb(MCA_DMA_FN_SET_COUNT | dmanr, MCA_DMA_REG_FN);
135 outb(count & 0xff, MCA_DMA_REG_EXE);
136 outb((count >> 8) & 0xff, MCA_DMA_REG_EXE);
137}
138
139/**
140 * mca_get_dma_residue - get the remaining bytes to transfer
141 * @dmanr: DMA channel
142 *
143 * This function returns the number of bytes left to transfer
144 * on this DMA channel.
145 */
146
147static inline unsigned int mca_get_dma_residue(unsigned int dmanr)
148{
149 unsigned short count;
150
151 outb(MCA_DMA_FN_GET_COUNT | dmanr, MCA_DMA_REG_FN);
152 count = 1 + inb(MCA_DMA_REG_EXE);
153 count += inb(MCA_DMA_REG_EXE) << 8;
154
155 return count;
156}
157
158/**
159 * mca_set_dma_io - set the port for an I/O transfer
160 * @dmanr: DMA channel
161 * @io_addr: an I/O port number
162 *
163 * Unlike the ISA bus DMA controllers the DMA on MCA bus can transfer
164 * with an I/O port target.
165 */
166
167static inline void mca_set_dma_io(unsigned int dmanr, unsigned int io_addr)
168{
169 /*
170 * DMA from a port address -- set the io address
171 */
172
173 outb(MCA_DMA_FN_SET_IO | dmanr, MCA_DMA_REG_FN);
174 outb(io_addr & 0xff, MCA_DMA_REG_EXE);
175 outb((io_addr >> 8) & 0xff, MCA_DMA_REG_EXE);
176}
177
178/**
179 * mca_set_dma_mode - set the DMA mode
180 * @dmanr: DMA channel
181 * @mode: mode to set
182 *
183 * The DMA controller supports several modes. The mode values you can
184 * set are-
185 *
186 * %MCA_DMA_MODE_READ when reading from the DMA device.
187 *
188 * %MCA_DMA_MODE_WRITE to writing to the DMA device.
189 *
190 * %MCA_DMA_MODE_IO to do DMA to or from an I/O port.
191 *
192 * %MCA_DMA_MODE_16 to do 16bit transfers.
193 */
194
195static inline void mca_set_dma_mode(unsigned int dmanr, unsigned int mode)
196{
197 outb(MCA_DMA_FN_SET_MODE | dmanr, MCA_DMA_REG_FN);
198 outb(mode, MCA_DMA_REG_EXE);
199}
200
201#endif /* _ASM_X86_MCA_DMA_H */
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
new file mode 100644
index 000000000000..1d6e17c2f23a
--- /dev/null
+++ b/arch/x86/include/asm/mce.h
@@ -0,0 +1,130 @@
1#ifndef _ASM_X86_MCE_H
2#define _ASM_X86_MCE_H
3
4#ifdef __x86_64__
5
6#include <asm/ioctls.h>
7#include <asm/types.h>
8
9/*
10 * Machine Check support for x86
11 */
12
13#define MCG_CTL_P (1UL<<8) /* MCG_CAP register available */
14
15#define MCG_STATUS_RIPV (1UL<<0) /* restart ip valid */
16#define MCG_STATUS_EIPV (1UL<<1) /* ip points to correct instruction */
17#define MCG_STATUS_MCIP (1UL<<2) /* machine check in progress */
18
19#define MCI_STATUS_VAL (1UL<<63) /* valid error */
20#define MCI_STATUS_OVER (1UL<<62) /* previous errors lost */
21#define MCI_STATUS_UC (1UL<<61) /* uncorrected error */
22#define MCI_STATUS_EN (1UL<<60) /* error enabled */
23#define MCI_STATUS_MISCV (1UL<<59) /* misc error reg. valid */
24#define MCI_STATUS_ADDRV (1UL<<58) /* addr reg. valid */
25#define MCI_STATUS_PCC (1UL<<57) /* processor context corrupt */
26
27/* Fields are zero when not available */
28struct mce {
29 __u64 status;
30 __u64 misc;
31 __u64 addr;
32 __u64 mcgstatus;
33 __u64 ip;
34 __u64 tsc; /* cpu time stamp counter */
35 __u64 res1; /* for future extension */
36 __u64 res2; /* dito. */
37 __u8 cs; /* code segment */
38 __u8 bank; /* machine check bank */
39 __u8 cpu; /* cpu that raised the error */
40 __u8 finished; /* entry is valid */
41 __u32 pad;
42};
43
44/*
45 * This structure contains all data related to the MCE log. Also
46 * carries a signature to make it easier to find from external
47 * debugging tools. Each entry is only valid when its finished flag
48 * is set.
49 */
50
51#define MCE_LOG_LEN 32
52
53struct mce_log {
54 char signature[12]; /* "MACHINECHECK" */
55 unsigned len; /* = MCE_LOG_LEN */
56 unsigned next;
57 unsigned flags;
58 unsigned pad0;
59 struct mce entry[MCE_LOG_LEN];
60};
61
62#define MCE_OVERFLOW 0 /* bit 0 in flags means overflow */
63
64#define MCE_LOG_SIGNATURE "MACHINECHECK"
65
66#define MCE_GET_RECORD_LEN _IOR('M', 1, int)
67#define MCE_GET_LOG_LEN _IOR('M', 2, int)
68#define MCE_GETCLEAR_FLAGS _IOR('M', 3, int)
69
70/* Software defined banks */
71#define MCE_EXTENDED_BANK 128
72#define MCE_THERMAL_BANK MCE_EXTENDED_BANK + 0
73
74#define K8_MCE_THRESHOLD_BASE (MCE_EXTENDED_BANK + 1) /* MCE_AMD */
75#define K8_MCE_THRESHOLD_BANK_0 (MCE_THRESHOLD_BASE + 0 * 9)
76#define K8_MCE_THRESHOLD_BANK_1 (MCE_THRESHOLD_BASE + 1 * 9)
77#define K8_MCE_THRESHOLD_BANK_2 (MCE_THRESHOLD_BASE + 2 * 9)
78#define K8_MCE_THRESHOLD_BANK_3 (MCE_THRESHOLD_BASE + 3 * 9)
79#define K8_MCE_THRESHOLD_BANK_4 (MCE_THRESHOLD_BASE + 4 * 9)
80#define K8_MCE_THRESHOLD_BANK_5 (MCE_THRESHOLD_BASE + 5 * 9)
81#define K8_MCE_THRESHOLD_DRAM_ECC (MCE_THRESHOLD_BANK_4 + 0)
82
83#endif /* __x86_64__ */
84
85#ifdef __KERNEL__
86
87#ifdef CONFIG_X86_32
88extern int mce_disabled;
89#else /* CONFIG_X86_32 */
90
91#include <asm/atomic.h>
92
93void mce_log(struct mce *m);
94DECLARE_PER_CPU(struct sys_device, device_mce);
95extern void (*threshold_cpu_callback)(unsigned long action, unsigned int cpu);
96
97#ifdef CONFIG_X86_MCE_INTEL
98void mce_intel_feature_init(struct cpuinfo_x86 *c);
99#else
100static inline void mce_intel_feature_init(struct cpuinfo_x86 *c) { }
101#endif
102
103#ifdef CONFIG_X86_MCE_AMD
104void mce_amd_feature_init(struct cpuinfo_x86 *c);
105#else
106static inline void mce_amd_feature_init(struct cpuinfo_x86 *c) { }
107#endif
108
109void mce_log_therm_throt_event(unsigned int cpu, __u64 status);
110
111extern atomic_t mce_entry;
112
113extern void do_machine_check(struct pt_regs *, long);
114extern int mce_notify_user(void);
115
116#endif /* !CONFIG_X86_32 */
117
118
119
120#ifdef CONFIG_X86_MCE
121extern void mcheck_init(struct cpuinfo_x86 *c);
122#else
123#define mcheck_init(c) do { } while (0)
124#endif
125extern void stop_mce(void);
126extern void restart_mce(void);
127
128#endif /* __KERNEL__ */
129
130#endif /* _ASM_X86_MCE_H */
diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h
new file mode 100644
index 000000000000..c882664716c1
--- /dev/null
+++ b/arch/x86/include/asm/microcode.h
@@ -0,0 +1,47 @@
1#ifndef _ASM_X86_MICROCODE_H
2#define _ASM_X86_MICROCODE_H
3
4struct cpu_signature {
5 unsigned int sig;
6 unsigned int pf;
7 unsigned int rev;
8};
9
10struct device;
11
12struct microcode_ops {
13 int (*request_microcode_user) (int cpu, const void __user *buf, size_t size);
14 int (*request_microcode_fw) (int cpu, struct device *device);
15
16 void (*apply_microcode) (int cpu);
17
18 int (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
19 void (*microcode_fini_cpu) (int cpu);
20};
21
22struct ucode_cpu_info {
23 struct cpu_signature cpu_sig;
24 int valid;
25 void *mc;
26};
27extern struct ucode_cpu_info ucode_cpu_info[];
28
29#ifdef CONFIG_MICROCODE_INTEL
30extern struct microcode_ops * __init init_intel_microcode(void);
31#else
32static inline struct microcode_ops * __init init_intel_microcode(void)
33{
34 return NULL;
35}
36#endif /* CONFIG_MICROCODE_INTEL */
37
38#ifdef CONFIG_MICROCODE_AMD
39extern struct microcode_ops * __init init_amd_microcode(void);
40#else
41static inline struct microcode_ops * __init init_amd_microcode(void)
42{
43 return NULL;
44}
45#endif
46
47#endif /* _ASM_X86_MICROCODE_H */
diff --git a/arch/x86/include/asm/mman.h b/arch/x86/include/asm/mman.h
new file mode 100644
index 000000000000..90bc4108a4fd
--- /dev/null
+++ b/arch/x86/include/asm/mman.h
@@ -0,0 +1,20 @@
1#ifndef _ASM_X86_MMAN_H
2#define _ASM_X86_MMAN_H
3
4#include <asm-generic/mman.h>
5
6#define MAP_32BIT 0x40 /* only give out 32bit addresses */
7
8#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
9#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
10#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
11#define MAP_LOCKED 0x2000 /* pages are locked */
12#define MAP_NORESERVE 0x4000 /* don't check for reservations */
13#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
14#define MAP_NONBLOCK 0x10000 /* do not block on IO */
15#define MAP_STACK 0x20000 /* give out an address that is best suited for process/thread stacks */
16
17#define MCL_CURRENT 1 /* lock all current mappings */
18#define MCL_FUTURE 2 /* lock all future mappings */
19
20#endif /* _ASM_X86_MMAN_H */
diff --git a/arch/x86/include/asm/mmconfig.h b/arch/x86/include/asm/mmconfig.h
new file mode 100644
index 000000000000..9b119da1d105
--- /dev/null
+++ b/arch/x86/include/asm/mmconfig.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_X86_MMCONFIG_H
2#define _ASM_X86_MMCONFIG_H
3
4#ifdef CONFIG_PCI_MMCONFIG
5extern void __cpuinit fam10h_check_enable_mmcfg(void);
6extern void __cpuinit check_enable_amd_mmconf_dmi(void);
7#else
8static inline void fam10h_check_enable_mmcfg(void) { }
9static inline void check_enable_amd_mmconf_dmi(void) { }
10#endif
11
12#endif /* _ASM_X86_MMCONFIG_H */
diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
new file mode 100644
index 000000000000..80a1dee5bea5
--- /dev/null
+++ b/arch/x86/include/asm/mmu.h
@@ -0,0 +1,26 @@
1#ifndef _ASM_X86_MMU_H
2#define _ASM_X86_MMU_H
3
4#include <linux/spinlock.h>
5#include <linux/mutex.h>
6
7/*
8 * The x86 doesn't have a mmu context, but
9 * we put the segment information here.
10 */
11typedef struct {
12 void *ldt;
13 int size;
14 struct mutex lock;
15 void *vdso;
16} mm_context_t;
17
18#ifdef CONFIG_SMP
19void leave_mm(int cpu);
20#else
21static inline void leave_mm(int cpu)
22{
23}
24#endif
25
26#endif /* _ASM_X86_MMU_H */
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
new file mode 100644
index 000000000000..8aeeb3fd73db
--- /dev/null
+++ b/arch/x86/include/asm/mmu_context.h
@@ -0,0 +1,37 @@
1#ifndef _ASM_X86_MMU_CONTEXT_H
2#define _ASM_X86_MMU_CONTEXT_H
3
4#include <asm/desc.h>
5#include <asm/atomic.h>
6#include <asm/pgalloc.h>
7#include <asm/tlbflush.h>
8#include <asm/paravirt.h>
9#ifndef CONFIG_PARAVIRT
10#include <asm-generic/mm_hooks.h>
11
12static inline void paravirt_activate_mm(struct mm_struct *prev,
13 struct mm_struct *next)
14{
15}
16#endif /* !CONFIG_PARAVIRT */
17
18/*
19 * Used for LDT copy/destruction.
20 */
21int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
22void destroy_context(struct mm_struct *mm);
23
24#ifdef CONFIG_X86_32
25# include "mmu_context_32.h"
26#else
27# include "mmu_context_64.h"
28#endif
29
30#define activate_mm(prev, next) \
31do { \
32 paravirt_activate_mm((prev), (next)); \
33 switch_mm((prev), (next), NULL); \
34} while (0);
35
36
37#endif /* _ASM_X86_MMU_CONTEXT_H */
diff --git a/arch/x86/include/asm/mmu_context_32.h b/arch/x86/include/asm/mmu_context_32.h
new file mode 100644
index 000000000000..8e10015781fb
--- /dev/null
+++ b/arch/x86/include/asm/mmu_context_32.h
@@ -0,0 +1,56 @@
1#ifndef _ASM_X86_MMU_CONTEXT_32_H
2#define _ASM_X86_MMU_CONTEXT_32_H
3
4static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
5{
6#ifdef CONFIG_SMP
7 unsigned cpu = smp_processor_id();
8 if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_OK)
9 per_cpu(cpu_tlbstate, cpu).state = TLBSTATE_LAZY;
10#endif
11}
12
13static inline void switch_mm(struct mm_struct *prev,
14 struct mm_struct *next,
15 struct task_struct *tsk)
16{
17 int cpu = smp_processor_id();
18
19 if (likely(prev != next)) {
20 /* stop flush ipis for the previous mm */
21 cpu_clear(cpu, prev->cpu_vm_mask);
22#ifdef CONFIG_SMP
23 per_cpu(cpu_tlbstate, cpu).state = TLBSTATE_OK;
24 per_cpu(cpu_tlbstate, cpu).active_mm = next;
25#endif
26 cpu_set(cpu, next->cpu_vm_mask);
27
28 /* Re-load page tables */
29 load_cr3(next->pgd);
30
31 /*
32 * load the LDT, if the LDT is different:
33 */
34 if (unlikely(prev->context.ldt != next->context.ldt))
35 load_LDT_nolock(&next->context);
36 }
37#ifdef CONFIG_SMP
38 else {
39 per_cpu(cpu_tlbstate, cpu).state = TLBSTATE_OK;
40 BUG_ON(per_cpu(cpu_tlbstate, cpu).active_mm != next);
41
42 if (!cpu_test_and_set(cpu, next->cpu_vm_mask)) {
43 /* We were in lazy tlb mode and leave_mm disabled
44 * tlb flush IPI delivery. We must reload %cr3.
45 */
46 load_cr3(next->pgd);
47 load_LDT_nolock(&next->context);
48 }
49 }
50#endif
51}
52
53#define deactivate_mm(tsk, mm) \
54 asm("movl %0,%%gs": :"r" (0));
55
56#endif /* _ASM_X86_MMU_CONTEXT_32_H */
diff --git a/arch/x86/include/asm/mmu_context_64.h b/arch/x86/include/asm/mmu_context_64.h
new file mode 100644
index 000000000000..677d36e9540a
--- /dev/null
+++ b/arch/x86/include/asm/mmu_context_64.h
@@ -0,0 +1,54 @@
1#ifndef _ASM_X86_MMU_CONTEXT_64_H
2#define _ASM_X86_MMU_CONTEXT_64_H
3
4#include <asm/pda.h>
5
6static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
7{
8#ifdef CONFIG_SMP
9 if (read_pda(mmu_state) == TLBSTATE_OK)
10 write_pda(mmu_state, TLBSTATE_LAZY);
11#endif
12}
13
14static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
15 struct task_struct *tsk)
16{
17 unsigned cpu = smp_processor_id();
18 if (likely(prev != next)) {
19 /* stop flush ipis for the previous mm */
20 cpu_clear(cpu, prev->cpu_vm_mask);
21#ifdef CONFIG_SMP
22 write_pda(mmu_state, TLBSTATE_OK);
23 write_pda(active_mm, next);
24#endif
25 cpu_set(cpu, next->cpu_vm_mask);
26 load_cr3(next->pgd);
27
28 if (unlikely(next->context.ldt != prev->context.ldt))
29 load_LDT_nolock(&next->context);
30 }
31#ifdef CONFIG_SMP
32 else {
33 write_pda(mmu_state, TLBSTATE_OK);
34 if (read_pda(active_mm) != next)
35 BUG();
36 if (!cpu_test_and_set(cpu, next->cpu_vm_mask)) {
37 /* We were in lazy tlb mode and leave_mm disabled
38 * tlb flush IPI delivery. We must reload CR3
39 * to make sure to use no freed page tables.
40 */
41 load_cr3(next->pgd);
42 load_LDT_nolock(&next->context);
43 }
44 }
45#endif
46}
47
48#define deactivate_mm(tsk, mm) \
49do { \
50 load_gs_index(0); \
51 asm volatile("movl %0,%%fs"::"r"(0)); \
52} while (0)
53
54#endif /* _ASM_X86_MMU_CONTEXT_64_H */
diff --git a/arch/x86/include/asm/mmx.h b/arch/x86/include/asm/mmx.h
new file mode 100644
index 000000000000..5cbf3135b971
--- /dev/null
+++ b/arch/x86/include/asm/mmx.h
@@ -0,0 +1,14 @@
1#ifndef _ASM_X86_MMX_H
2#define _ASM_X86_MMX_H
3
4/*
5 * MMX 3Dnow! helper operations
6 */
7
8#include <linux/types.h>
9
10extern void *_mmx_memcpy(void *to, const void *from, size_t size);
11extern void mmx_clear_page(void *page);
12extern void mmx_copy_page(void *to, void *from);
13
14#endif /* _ASM_X86_MMX_H */
diff --git a/arch/x86/include/asm/mmzone.h b/arch/x86/include/asm/mmzone.h
new file mode 100644
index 000000000000..64217ea16a36
--- /dev/null
+++ b/arch/x86/include/asm/mmzone.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "mmzone_32.h"
3#else
4# include "mmzone_64.h"
5#endif
diff --git a/arch/x86/include/asm/mmzone_32.h b/arch/x86/include/asm/mmzone_32.h
new file mode 100644
index 000000000000..485bdf059ffb
--- /dev/null
+++ b/arch/x86/include/asm/mmzone_32.h
@@ -0,0 +1,134 @@
1/*
2 * Written by Pat Gaughen (gone@us.ibm.com) Mar 2002
3 *
4 */
5
6#ifndef _ASM_X86_MMZONE_32_H
7#define _ASM_X86_MMZONE_32_H
8
9#include <asm/smp.h>
10
11#ifdef CONFIG_NUMA
12extern struct pglist_data *node_data[];
13#define NODE_DATA(nid) (node_data[nid])
14
15#include <asm/numaq.h>
16/* summit or generic arch */
17#include <asm/srat.h>
18
19extern int get_memcfg_numa_flat(void);
20/*
21 * This allows any one NUMA architecture to be compiled
22 * for, and still fall back to the flat function if it
23 * fails.
24 */
25static inline void get_memcfg_numa(void)
26{
27
28 if (get_memcfg_numaq())
29 return;
30 if (get_memcfg_from_srat())
31 return;
32 get_memcfg_numa_flat();
33}
34
35extern int early_pfn_to_nid(unsigned long pfn);
36
37#else /* !CONFIG_NUMA */
38
39#define get_memcfg_numa get_memcfg_numa_flat
40
41#endif /* CONFIG_NUMA */
42
43#ifdef CONFIG_DISCONTIGMEM
44
45/*
46 * generic node memory support, the following assumptions apply:
47 *
48 * 1) memory comes in 64Mb contigious chunks which are either present or not
49 * 2) we will not have more than 64Gb in total
50 *
51 * for now assume that 64Gb is max amount of RAM for whole system
52 * 64Gb / 4096bytes/page = 16777216 pages
53 */
54#define MAX_NR_PAGES 16777216
55#define MAX_ELEMENTS 1024
56#define PAGES_PER_ELEMENT (MAX_NR_PAGES/MAX_ELEMENTS)
57
58extern s8 physnode_map[];
59
60static inline int pfn_to_nid(unsigned long pfn)
61{
62#ifdef CONFIG_NUMA
63 return((int) physnode_map[(pfn) / PAGES_PER_ELEMENT]);
64#else
65 return 0;
66#endif
67}
68
69/*
70 * Following are macros that each numa implmentation must define.
71 */
72
73#define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
74#define node_end_pfn(nid) \
75({ \
76 pg_data_t *__pgdat = NODE_DATA(nid); \
77 __pgdat->node_start_pfn + __pgdat->node_spanned_pages; \
78})
79
80static inline int pfn_valid(int pfn)
81{
82 int nid = pfn_to_nid(pfn);
83
84 if (nid >= 0)
85 return (pfn < node_end_pfn(nid));
86 return 0;
87}
88
89#endif /* CONFIG_DISCONTIGMEM */
90
91#ifdef CONFIG_NEED_MULTIPLE_NODES
92
93/*
94 * Following are macros that are specific to this numa platform.
95 */
96#define reserve_bootmem(addr, size, flags) \
97 reserve_bootmem_node(NODE_DATA(0), (addr), (size), (flags))
98#define alloc_bootmem(x) \
99 __alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
100#define alloc_bootmem_nopanic(x) \
101 __alloc_bootmem_node_nopanic(NODE_DATA(0), (x), SMP_CACHE_BYTES, \
102 __pa(MAX_DMA_ADDRESS))
103#define alloc_bootmem_low(x) \
104 __alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES, 0)
105#define alloc_bootmem_pages(x) \
106 __alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
107#define alloc_bootmem_pages_nopanic(x) \
108 __alloc_bootmem_node_nopanic(NODE_DATA(0), (x), PAGE_SIZE, \
109 __pa(MAX_DMA_ADDRESS))
110#define alloc_bootmem_low_pages(x) \
111 __alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0)
112#define alloc_bootmem_node(pgdat, x) \
113({ \
114 struct pglist_data __maybe_unused \
115 *__alloc_bootmem_node__pgdat = (pgdat); \
116 __alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES, \
117 __pa(MAX_DMA_ADDRESS)); \
118})
119#define alloc_bootmem_pages_node(pgdat, x) \
120({ \
121 struct pglist_data __maybe_unused \
122 *__alloc_bootmem_node__pgdat = (pgdat); \
123 __alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, \
124 __pa(MAX_DMA_ADDRESS)); \
125})
126#define alloc_bootmem_low_pages_node(pgdat, x) \
127({ \
128 struct pglist_data __maybe_unused \
129 *__alloc_bootmem_node__pgdat = (pgdat); \
130 __alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0); \
131})
132#endif /* CONFIG_NEED_MULTIPLE_NODES */
133
134#endif /* _ASM_X86_MMZONE_32_H */
diff --git a/arch/x86/include/asm/mmzone_64.h b/arch/x86/include/asm/mmzone_64.h
new file mode 100644
index 000000000000..a5b3817d4b9e
--- /dev/null
+++ b/arch/x86/include/asm/mmzone_64.h
@@ -0,0 +1,51 @@
1/* K8 NUMA support */
2/* Copyright 2002,2003 by Andi Kleen, SuSE Labs */
3/* 2.5 Version loosely based on the NUMAQ Code by Pat Gaughen. */
4#ifndef _ASM_X86_MMZONE_64_H
5#define _ASM_X86_MMZONE_64_H
6
7
8#ifdef CONFIG_NUMA
9
10#include <linux/mmdebug.h>
11
12#include <asm/smp.h>
13
14/* Simple perfect hash to map physical addresses to node numbers */
15struct memnode {
16 int shift;
17 unsigned int mapsize;
18 s16 *map;
19 s16 embedded_map[64 - 8];
20} ____cacheline_aligned; /* total size = 128 bytes */
21extern struct memnode memnode;
22#define memnode_shift memnode.shift
23#define memnodemap memnode.map
24#define memnodemapsize memnode.mapsize
25
26extern struct pglist_data *node_data[];
27
28static inline __attribute__((pure)) int phys_to_nid(unsigned long addr)
29{
30 unsigned nid;
31 VIRTUAL_BUG_ON(!memnodemap);
32 nid = memnodemap[addr >> memnode_shift];
33 VIRTUAL_BUG_ON(nid >= MAX_NUMNODES || !node_data[nid]);
34 return nid;
35}
36
37#define NODE_DATA(nid) (node_data[nid])
38
39#define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
40#define node_end_pfn(nid) (NODE_DATA(nid)->node_start_pfn + \
41 NODE_DATA(nid)->node_spanned_pages)
42
43extern int early_pfn_to_nid(unsigned long pfn);
44
45#ifdef CONFIG_NUMA_EMU
46#define FAKE_NODE_MIN_SIZE (64 * 1024 * 1024)
47#define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
48#endif
49
50#endif
51#endif /* _ASM_X86_MMZONE_64_H */
diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h
new file mode 100644
index 000000000000..47d62743c4d5
--- /dev/null
+++ b/arch/x86/include/asm/module.h
@@ -0,0 +1,80 @@
1#ifndef _ASM_X86_MODULE_H
2#define _ASM_X86_MODULE_H
3
4/* x86_32/64 are simple */
5struct mod_arch_specific {};
6
7#ifdef CONFIG_X86_32
8# define Elf_Shdr Elf32_Shdr
9# define Elf_Sym Elf32_Sym
10# define Elf_Ehdr Elf32_Ehdr
11#else
12# define Elf_Shdr Elf64_Shdr
13# define Elf_Sym Elf64_Sym
14# define Elf_Ehdr Elf64_Ehdr
15#endif
16
17#ifdef CONFIG_X86_64
18/* X86_64 does not define MODULE_PROC_FAMILY */
19#elif defined CONFIG_M386
20#define MODULE_PROC_FAMILY "386 "
21#elif defined CONFIG_M486
22#define MODULE_PROC_FAMILY "486 "
23#elif defined CONFIG_M586
24#define MODULE_PROC_FAMILY "586 "
25#elif defined CONFIG_M586TSC
26#define MODULE_PROC_FAMILY "586TSC "
27#elif defined CONFIG_M586MMX
28#define MODULE_PROC_FAMILY "586MMX "
29#elif defined CONFIG_MCORE2
30#define MODULE_PROC_FAMILY "CORE2 "
31#elif defined CONFIG_M686
32#define MODULE_PROC_FAMILY "686 "
33#elif defined CONFIG_MPENTIUMII
34#define MODULE_PROC_FAMILY "PENTIUMII "
35#elif defined CONFIG_MPENTIUMIII
36#define MODULE_PROC_FAMILY "PENTIUMIII "
37#elif defined CONFIG_MPENTIUMM
38#define MODULE_PROC_FAMILY "PENTIUMM "
39#elif defined CONFIG_MPENTIUM4
40#define MODULE_PROC_FAMILY "PENTIUM4 "
41#elif defined CONFIG_MK6
42#define MODULE_PROC_FAMILY "K6 "
43#elif defined CONFIG_MK7
44#define MODULE_PROC_FAMILY "K7 "
45#elif defined CONFIG_MK8
46#define MODULE_PROC_FAMILY "K8 "
47#elif defined CONFIG_X86_ELAN
48#define MODULE_PROC_FAMILY "ELAN "
49#elif defined CONFIG_MCRUSOE
50#define MODULE_PROC_FAMILY "CRUSOE "
51#elif defined CONFIG_MEFFICEON
52#define MODULE_PROC_FAMILY "EFFICEON "
53#elif defined CONFIG_MWINCHIPC6
54#define MODULE_PROC_FAMILY "WINCHIPC6 "
55#elif defined CONFIG_MWINCHIP3D
56#define MODULE_PROC_FAMILY "WINCHIP3D "
57#elif defined CONFIG_MCYRIXIII
58#define MODULE_PROC_FAMILY "CYRIXIII "
59#elif defined CONFIG_MVIAC3_2
60#define MODULE_PROC_FAMILY "VIAC3-2 "
61#elif defined CONFIG_MVIAC7
62#define MODULE_PROC_FAMILY "VIAC7 "
63#elif defined CONFIG_MGEODEGX1
64#define MODULE_PROC_FAMILY "GEODEGX1 "
65#elif defined CONFIG_MGEODE_LX
66#define MODULE_PROC_FAMILY "GEODE "
67#else
68#error unknown processor family
69#endif
70
71#ifdef CONFIG_X86_32
72# ifdef CONFIG_4KSTACKS
73# define MODULE_STACKSIZE "4KSTACKS "
74# else
75# define MODULE_STACKSIZE ""
76# endif
77# define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_STACKSIZE
78#endif
79
80#endif /* _ASM_X86_MODULE_H */
diff --git a/arch/x86/include/asm/mpspec.h b/arch/x86/include/asm/mpspec.h
new file mode 100644
index 000000000000..91885c28f66b
--- /dev/null
+++ b/arch/x86/include/asm/mpspec.h
@@ -0,0 +1,145 @@
1#ifndef _ASM_X86_MPSPEC_H
2#define _ASM_X86_MPSPEC_H
3
4#include <linux/init.h>
5
6#include <asm/mpspec_def.h>
7
8extern int apic_version[MAX_APICS];
9
10#ifdef CONFIG_X86_32
11#include <mach_mpspec.h>
12
13extern unsigned int def_to_bigsmp;
14extern u8 apicid_2_node[];
15extern int pic_mode;
16
17#ifdef CONFIG_X86_NUMAQ
18extern int mp_bus_id_to_node[MAX_MP_BUSSES];
19extern int mp_bus_id_to_local[MAX_MP_BUSSES];
20extern int quad_local_to_mp_bus_id [NR_CPUS/4][4];
21#endif
22
23#define MAX_APICID 256
24
25#else
26
27#define MAX_MP_BUSSES 256
28/* Each PCI slot may be a combo card with its own bus. 4 IRQ pins per slot. */
29#define MAX_IRQ_SOURCES (MAX_MP_BUSSES * 4)
30
31#endif
32
33extern void early_find_smp_config(void);
34extern void early_get_smp_config(void);
35
36#if defined(CONFIG_MCA) || defined(CONFIG_EISA)
37extern int mp_bus_id_to_type[MAX_MP_BUSSES];
38#endif
39
40extern DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES);
41
42extern unsigned int boot_cpu_physical_apicid;
43extern unsigned int max_physical_apicid;
44extern int smp_found_config;
45extern int mpc_default_type;
46extern unsigned long mp_lapic_addr;
47
48extern void find_smp_config(void);
49extern void get_smp_config(void);
50#ifdef CONFIG_X86_MPPARSE
51extern void early_reserve_e820_mpc_new(void);
52#else
53static inline void early_reserve_e820_mpc_new(void) { }
54#endif
55
56void __cpuinit generic_processor_info(int apicid, int version);
57#ifdef CONFIG_ACPI
58extern void mp_register_ioapic(int id, u32 address, u32 gsi_base);
59extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger,
60 u32 gsi);
61extern void mp_config_acpi_legacy_irqs(void);
62extern int mp_register_gsi(u32 gsi, int edge_level, int active_high_low);
63#ifdef CONFIG_X86_IO_APIC
64extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
65 u32 gsi, int triggering, int polarity);
66#else
67static inline int
68mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
69 u32 gsi, int triggering, int polarity)
70{
71 return 0;
72}
73#endif
74#endif /* CONFIG_ACPI */
75
76#define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
77
78struct physid_mask {
79 unsigned long mask[PHYSID_ARRAY_SIZE];
80};
81
82typedef struct physid_mask physid_mask_t;
83
84#define physid_set(physid, map) set_bit(physid, (map).mask)
85#define physid_clear(physid, map) clear_bit(physid, (map).mask)
86#define physid_isset(physid, map) test_bit(physid, (map).mask)
87#define physid_test_and_set(physid, map) \
88 test_and_set_bit(physid, (map).mask)
89
90#define physids_and(dst, src1, src2) \
91 bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
92
93#define physids_or(dst, src1, src2) \
94 bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
95
96#define physids_clear(map) \
97 bitmap_zero((map).mask, MAX_APICS)
98
99#define physids_complement(dst, src) \
100 bitmap_complement((dst).mask, (src).mask, MAX_APICS)
101
102#define physids_empty(map) \
103 bitmap_empty((map).mask, MAX_APICS)
104
105#define physids_equal(map1, map2) \
106 bitmap_equal((map1).mask, (map2).mask, MAX_APICS)
107
108#define physids_weight(map) \
109 bitmap_weight((map).mask, MAX_APICS)
110
111#define physids_shift_right(d, s, n) \
112 bitmap_shift_right((d).mask, (s).mask, n, MAX_APICS)
113
114#define physids_shift_left(d, s, n) \
115 bitmap_shift_left((d).mask, (s).mask, n, MAX_APICS)
116
117#define physids_coerce(map) ((map).mask[0])
118
119#define physids_promote(physids) \
120 ({ \
121 physid_mask_t __physid_mask = PHYSID_MASK_NONE; \
122 __physid_mask.mask[0] = physids; \
123 __physid_mask; \
124 })
125
126/* Note: will create very large stack frames if physid_mask_t is big */
127#define physid_mask_of_physid(physid) \
128 ({ \
129 physid_mask_t __physid_mask = PHYSID_MASK_NONE; \
130 physid_set(physid, __physid_mask); \
131 __physid_mask; \
132 })
133
134static inline void physid_set_mask_of_physid(int physid, physid_mask_t *map)
135{
136 physids_clear(*map);
137 physid_set(physid, *map);
138}
139
140#define PHYSID_MASK_ALL { {[0 ... PHYSID_ARRAY_SIZE-1] = ~0UL} }
141#define PHYSID_MASK_NONE { {[0 ... PHYSID_ARRAY_SIZE-1] = 0UL} }
142
143extern physid_mask_t phys_cpu_present_map;
144
145#endif /* _ASM_X86_MPSPEC_H */
diff --git a/arch/x86/include/asm/mpspec_def.h b/arch/x86/include/asm/mpspec_def.h
new file mode 100644
index 000000000000..e3ace7d1d35d
--- /dev/null
+++ b/arch/x86/include/asm/mpspec_def.h
@@ -0,0 +1,180 @@
1#ifndef _ASM_X86_MPSPEC_DEF_H
2#define _ASM_X86_MPSPEC_DEF_H
3
4/*
5 * Structure definitions for SMP machines following the
6 * Intel Multiprocessing Specification 1.1 and 1.4.
7 */
8
9/*
10 * This tag identifies where the SMP configuration
11 * information is.
12 */
13
14#define SMP_MAGIC_IDENT (('_'<<24) | ('P'<<16) | ('M'<<8) | '_')
15
16#ifdef CONFIG_X86_32
17# define MAX_MPC_ENTRY 1024
18# define MAX_APICS 256
19#else
20# if NR_CPUS <= 255
21# define MAX_APICS 255
22# else
23# define MAX_APICS 32768
24# endif
25#endif
26
27struct intel_mp_floating {
28 char mpf_signature[4]; /* "_MP_" */
29 unsigned int mpf_physptr; /* Configuration table address */
30 unsigned char mpf_length; /* Our length (paragraphs) */
31 unsigned char mpf_specification;/* Specification version */
32 unsigned char mpf_checksum; /* Checksum (makes sum 0) */
33 unsigned char mpf_feature1; /* Standard or configuration ? */
34 unsigned char mpf_feature2; /* Bit7 set for IMCR|PIC */
35 unsigned char mpf_feature3; /* Unused (0) */
36 unsigned char mpf_feature4; /* Unused (0) */
37 unsigned char mpf_feature5; /* Unused (0) */
38};
39
40#define MPC_SIGNATURE "PCMP"
41
42struct mp_config_table {
43 char mpc_signature[4];
44 unsigned short mpc_length; /* Size of table */
45 char mpc_spec; /* 0x01 */
46 char mpc_checksum;
47 char mpc_oem[8];
48 char mpc_productid[12];
49 unsigned int mpc_oemptr; /* 0 if not present */
50 unsigned short mpc_oemsize; /* 0 if not present */
51 unsigned short mpc_oemcount;
52 unsigned int mpc_lapic; /* APIC address */
53 unsigned int reserved;
54};
55
56/* Followed by entries */
57
58#define MP_PROCESSOR 0
59#define MP_BUS 1
60#define MP_IOAPIC 2
61#define MP_INTSRC 3
62#define MP_LINTSRC 4
63/* Used by IBM NUMA-Q to describe node locality */
64#define MP_TRANSLATION 192
65
66#define CPU_ENABLED 1 /* Processor is available */
67#define CPU_BOOTPROCESSOR 2 /* Processor is the BP */
68
69#define CPU_STEPPING_MASK 0x000F
70#define CPU_MODEL_MASK 0x00F0
71#define CPU_FAMILY_MASK 0x0F00
72
73struct mpc_config_processor {
74 unsigned char mpc_type;
75 unsigned char mpc_apicid; /* Local APIC number */
76 unsigned char mpc_apicver; /* Its versions */
77 unsigned char mpc_cpuflag;
78 unsigned int mpc_cpufeature;
79 unsigned int mpc_featureflag; /* CPUID feature value */
80 unsigned int mpc_reserved[2];
81};
82
83struct mpc_config_bus {
84 unsigned char mpc_type;
85 unsigned char mpc_busid;
86 unsigned char mpc_bustype[6];
87};
88
89/* List of Bus Type string values, Intel MP Spec. */
90#define BUSTYPE_EISA "EISA"
91#define BUSTYPE_ISA "ISA"
92#define BUSTYPE_INTERN "INTERN" /* Internal BUS */
93#define BUSTYPE_MCA "MCA"
94#define BUSTYPE_VL "VL" /* Local bus */
95#define BUSTYPE_PCI "PCI"
96#define BUSTYPE_PCMCIA "PCMCIA"
97#define BUSTYPE_CBUS "CBUS"
98#define BUSTYPE_CBUSII "CBUSII"
99#define BUSTYPE_FUTURE "FUTURE"
100#define BUSTYPE_MBI "MBI"
101#define BUSTYPE_MBII "MBII"
102#define BUSTYPE_MPI "MPI"
103#define BUSTYPE_MPSA "MPSA"
104#define BUSTYPE_NUBUS "NUBUS"
105#define BUSTYPE_TC "TC"
106#define BUSTYPE_VME "VME"
107#define BUSTYPE_XPRESS "XPRESS"
108
109#define MPC_APIC_USABLE 0x01
110
111struct mpc_config_ioapic {
112 unsigned char mpc_type;
113 unsigned char mpc_apicid;
114 unsigned char mpc_apicver;
115 unsigned char mpc_flags;
116 unsigned int mpc_apicaddr;
117};
118
119struct mpc_config_intsrc {
120 unsigned char mpc_type;
121 unsigned char mpc_irqtype;
122 unsigned short mpc_irqflag;
123 unsigned char mpc_srcbus;
124 unsigned char mpc_srcbusirq;
125 unsigned char mpc_dstapic;
126 unsigned char mpc_dstirq;
127};
128
129enum mp_irq_source_types {
130 mp_INT = 0,
131 mp_NMI = 1,
132 mp_SMI = 2,
133 mp_ExtINT = 3
134};
135
136#define MP_IRQDIR_DEFAULT 0
137#define MP_IRQDIR_HIGH 1
138#define MP_IRQDIR_LOW 3
139
140#define MP_APIC_ALL 0xFF
141
142struct mpc_config_lintsrc {
143 unsigned char mpc_type;
144 unsigned char mpc_irqtype;
145 unsigned short mpc_irqflag;
146 unsigned char mpc_srcbusid;
147 unsigned char mpc_srcbusirq;
148 unsigned char mpc_destapic;
149 unsigned char mpc_destapiclint;
150};
151
152#define MPC_OEM_SIGNATURE "_OEM"
153
154struct mp_config_oemtable {
155 char oem_signature[4];
156 unsigned short oem_length; /* Size of table */
157 char oem_rev; /* 0x01 */
158 char oem_checksum;
159 char mpc_oem[8];
160};
161
162/*
163 * Default configurations
164 *
165 * 1 2 CPU ISA 82489DX
166 * 2 2 CPU EISA 82489DX neither IRQ 0 timer nor IRQ 13 DMA chaining
167 * 3 2 CPU EISA 82489DX
168 * 4 2 CPU MCA 82489DX
169 * 5 2 CPU ISA+PCI
170 * 6 2 CPU EISA+PCI
171 * 7 2 CPU MCA+PCI
172 */
173
174enum mp_bustype {
175 MP_BUS_ISA = 1,
176 MP_BUS_EISA,
177 MP_BUS_PCI,
178 MP_BUS_MCA,
179};
180#endif /* _ASM_X86_MPSPEC_DEF_H */
diff --git a/arch/x86/include/asm/msgbuf.h b/arch/x86/include/asm/msgbuf.h
new file mode 100644
index 000000000000..7e4e9481f51c
--- /dev/null
+++ b/arch/x86/include/asm/msgbuf.h
@@ -0,0 +1,39 @@
1#ifndef _ASM_X86_MSGBUF_H
2#define _ASM_X86_MSGBUF_H
3
4/*
5 * The msqid64_ds structure for i386 architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space on i386 is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 *
13 * Pad space on x8664 is left for:
14 * - 2 miscellaneous 64-bit values
15 */
16struct msqid64_ds {
17 struct ipc64_perm msg_perm;
18 __kernel_time_t msg_stime; /* last msgsnd time */
19#ifdef __i386__
20 unsigned long __unused1;
21#endif
22 __kernel_time_t msg_rtime; /* last msgrcv time */
23#ifdef __i386__
24 unsigned long __unused2;
25#endif
26 __kernel_time_t msg_ctime; /* last change time */
27#ifdef __i386__
28 unsigned long __unused3;
29#endif
30 unsigned long msg_cbytes; /* current number of bytes on queue */
31 unsigned long msg_qnum; /* number of messages in queue */
32 unsigned long msg_qbytes; /* max number of bytes on queue */
33 __kernel_pid_t msg_lspid; /* pid of last msgsnd */
34 __kernel_pid_t msg_lrpid; /* last receive pid */
35 unsigned long __unused4;
36 unsigned long __unused5;
37};
38
39#endif /* _ASM_X86_MSGBUF_H */
diff --git a/arch/x86/include/asm/msidef.h b/arch/x86/include/asm/msidef.h
new file mode 100644
index 000000000000..6706b3006f13
--- /dev/null
+++ b/arch/x86/include/asm/msidef.h
@@ -0,0 +1,55 @@
1#ifndef _ASM_X86_MSIDEF_H
2#define _ASM_X86_MSIDEF_H
3
4/*
5 * Constants for Intel APIC based MSI messages.
6 */
7
8/*
9 * Shifts for MSI data
10 */
11
12#define MSI_DATA_VECTOR_SHIFT 0
13#define MSI_DATA_VECTOR_MASK 0x000000ff
14#define MSI_DATA_VECTOR(v) (((v) << MSI_DATA_VECTOR_SHIFT) & \
15 MSI_DATA_VECTOR_MASK)
16
17#define MSI_DATA_DELIVERY_MODE_SHIFT 8
18#define MSI_DATA_DELIVERY_FIXED (0 << MSI_DATA_DELIVERY_MODE_SHIFT)
19#define MSI_DATA_DELIVERY_LOWPRI (1 << MSI_DATA_DELIVERY_MODE_SHIFT)
20
21#define MSI_DATA_LEVEL_SHIFT 14
22#define MSI_DATA_LEVEL_DEASSERT (0 << MSI_DATA_LEVEL_SHIFT)
23#define MSI_DATA_LEVEL_ASSERT (1 << MSI_DATA_LEVEL_SHIFT)
24
25#define MSI_DATA_TRIGGER_SHIFT 15
26#define MSI_DATA_TRIGGER_EDGE (0 << MSI_DATA_TRIGGER_SHIFT)
27#define MSI_DATA_TRIGGER_LEVEL (1 << MSI_DATA_TRIGGER_SHIFT)
28
29/*
30 * Shift/mask fields for msi address
31 */
32
33#define MSI_ADDR_BASE_HI 0
34#define MSI_ADDR_BASE_LO 0xfee00000
35
36#define MSI_ADDR_DEST_MODE_SHIFT 2
37#define MSI_ADDR_DEST_MODE_PHYSICAL (0 << MSI_ADDR_DEST_MODE_SHIFT)
38#define MSI_ADDR_DEST_MODE_LOGICAL (1 << MSI_ADDR_DEST_MODE_SHIFT)
39
40#define MSI_ADDR_REDIRECTION_SHIFT 3
41#define MSI_ADDR_REDIRECTION_CPU (0 << MSI_ADDR_REDIRECTION_SHIFT)
42 /* dedicated cpu */
43#define MSI_ADDR_REDIRECTION_LOWPRI (1 << MSI_ADDR_REDIRECTION_SHIFT)
44 /* lowest priority */
45
46#define MSI_ADDR_DEST_ID_SHIFT 12
47#define MSI_ADDR_DEST_ID_MASK 0x00ffff0
48#define MSI_ADDR_DEST_ID(dest) (((dest) << MSI_ADDR_DEST_ID_SHIFT) & \
49 MSI_ADDR_DEST_ID_MASK)
50
51#define MSI_ADDR_IR_EXT_INT (1 << 4)
52#define MSI_ADDR_IR_SHV (1 << 3)
53#define MSI_ADDR_IR_INDEX1(index) ((index & 0x8000) >> 13)
54#define MSI_ADDR_IR_INDEX2(index) ((index & 0x7fff) << 5)
55#endif /* _ASM_X86_MSIDEF_H */
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
new file mode 100644
index 000000000000..e38859d577a1
--- /dev/null
+++ b/arch/x86/include/asm/msr-index.h
@@ -0,0 +1,332 @@
1#ifndef _ASM_X86_MSR_INDEX_H
2#define _ASM_X86_MSR_INDEX_H
3
4/* CPU model specific register (MSR) numbers */
5
6/* x86-64 specific MSRs */
7#define MSR_EFER 0xc0000080 /* extended feature register */
8#define MSR_STAR 0xc0000081 /* legacy mode SYSCALL target */
9#define MSR_LSTAR 0xc0000082 /* long mode SYSCALL target */
10#define MSR_CSTAR 0xc0000083 /* compat mode SYSCALL target */
11#define MSR_SYSCALL_MASK 0xc0000084 /* EFLAGS mask for syscall */
12#define MSR_FS_BASE 0xc0000100 /* 64bit FS base */
13#define MSR_GS_BASE 0xc0000101 /* 64bit GS base */
14#define MSR_KERNEL_GS_BASE 0xc0000102 /* SwapGS GS shadow */
15
16/* EFER bits: */
17#define _EFER_SCE 0 /* SYSCALL/SYSRET */
18#define _EFER_LME 8 /* Long mode enable */
19#define _EFER_LMA 10 /* Long mode active (read-only) */
20#define _EFER_NX 11 /* No execute enable */
21
22#define EFER_SCE (1<<_EFER_SCE)
23#define EFER_LME (1<<_EFER_LME)
24#define EFER_LMA (1<<_EFER_LMA)
25#define EFER_NX (1<<_EFER_NX)
26
27/* Intel MSRs. Some also available on other CPUs */
28#define MSR_IA32_PERFCTR0 0x000000c1
29#define MSR_IA32_PERFCTR1 0x000000c2
30#define MSR_FSB_FREQ 0x000000cd
31
32#define MSR_MTRRcap 0x000000fe
33#define MSR_IA32_BBL_CR_CTL 0x00000119
34
35#define MSR_IA32_SYSENTER_CS 0x00000174
36#define MSR_IA32_SYSENTER_ESP 0x00000175
37#define MSR_IA32_SYSENTER_EIP 0x00000176
38
39#define MSR_IA32_MCG_CAP 0x00000179
40#define MSR_IA32_MCG_STATUS 0x0000017a
41#define MSR_IA32_MCG_CTL 0x0000017b
42
43#define MSR_IA32_PEBS_ENABLE 0x000003f1
44#define MSR_IA32_DS_AREA 0x00000600
45#define MSR_IA32_PERF_CAPABILITIES 0x00000345
46
47#define MSR_MTRRfix64K_00000 0x00000250
48#define MSR_MTRRfix16K_80000 0x00000258
49#define MSR_MTRRfix16K_A0000 0x00000259
50#define MSR_MTRRfix4K_C0000 0x00000268
51#define MSR_MTRRfix4K_C8000 0x00000269
52#define MSR_MTRRfix4K_D0000 0x0000026a
53#define MSR_MTRRfix4K_D8000 0x0000026b
54#define MSR_MTRRfix4K_E0000 0x0000026c
55#define MSR_MTRRfix4K_E8000 0x0000026d
56#define MSR_MTRRfix4K_F0000 0x0000026e
57#define MSR_MTRRfix4K_F8000 0x0000026f
58#define MSR_MTRRdefType 0x000002ff
59
60#define MSR_IA32_CR_PAT 0x00000277
61
62#define MSR_IA32_DEBUGCTLMSR 0x000001d9
63#define MSR_IA32_LASTBRANCHFROMIP 0x000001db
64#define MSR_IA32_LASTBRANCHTOIP 0x000001dc
65#define MSR_IA32_LASTINTFROMIP 0x000001dd
66#define MSR_IA32_LASTINTTOIP 0x000001de
67
68/* DEBUGCTLMSR bits (others vary by model): */
69#define _DEBUGCTLMSR_LBR 0 /* last branch recording */
70#define _DEBUGCTLMSR_BTF 1 /* single-step on branches */
71
72#define DEBUGCTLMSR_LBR (1UL << _DEBUGCTLMSR_LBR)
73#define DEBUGCTLMSR_BTF (1UL << _DEBUGCTLMSR_BTF)
74
75#define MSR_IA32_MC0_CTL 0x00000400
76#define MSR_IA32_MC0_STATUS 0x00000401
77#define MSR_IA32_MC0_ADDR 0x00000402
78#define MSR_IA32_MC0_MISC 0x00000403
79
80#define MSR_P6_PERFCTR0 0x000000c1
81#define MSR_P6_PERFCTR1 0x000000c2
82#define MSR_P6_EVNTSEL0 0x00000186
83#define MSR_P6_EVNTSEL1 0x00000187
84
85/* AMD64 MSRs. Not complete. See the architecture manual for a more
86 complete list. */
87
88#define MSR_AMD64_NB_CFG 0xc001001f
89#define MSR_AMD64_IBSFETCHCTL 0xc0011030
90#define MSR_AMD64_IBSFETCHLINAD 0xc0011031
91#define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032
92#define MSR_AMD64_IBSOPCTL 0xc0011033
93#define MSR_AMD64_IBSOPRIP 0xc0011034
94#define MSR_AMD64_IBSOPDATA 0xc0011035
95#define MSR_AMD64_IBSOPDATA2 0xc0011036
96#define MSR_AMD64_IBSOPDATA3 0xc0011037
97#define MSR_AMD64_IBSDCLINAD 0xc0011038
98#define MSR_AMD64_IBSDCPHYSAD 0xc0011039
99#define MSR_AMD64_IBSCTL 0xc001103a
100
101/* Fam 10h MSRs */
102#define MSR_FAM10H_MMIO_CONF_BASE 0xc0010058
103#define FAM10H_MMIO_CONF_ENABLE (1<<0)
104#define FAM10H_MMIO_CONF_BUSRANGE_MASK 0xf
105#define FAM10H_MMIO_CONF_BUSRANGE_SHIFT 2
106#define FAM10H_MMIO_CONF_BASE_MASK 0xfffffff
107#define FAM10H_MMIO_CONF_BASE_SHIFT 20
108
109/* K8 MSRs */
110#define MSR_K8_TOP_MEM1 0xc001001a
111#define MSR_K8_TOP_MEM2 0xc001001d
112#define MSR_K8_SYSCFG 0xc0010010
113#define MSR_K8_HWCR 0xc0010015
114#define MSR_K8_INT_PENDING_MSG 0xc0010055
115/* C1E active bits in int pending message */
116#define K8_INTP_C1E_ACTIVE_MASK 0x18000000
117#define MSR_K8_TSEG_ADDR 0xc0010112
118#define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */
119#define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */
120#define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818 /* Mask: RdMem|WrMem */
121
122/* K7 MSRs */
123#define MSR_K7_EVNTSEL0 0xc0010000
124#define MSR_K7_PERFCTR0 0xc0010004
125#define MSR_K7_EVNTSEL1 0xc0010001
126#define MSR_K7_PERFCTR1 0xc0010005
127#define MSR_K7_EVNTSEL2 0xc0010002
128#define MSR_K7_PERFCTR2 0xc0010006
129#define MSR_K7_EVNTSEL3 0xc0010003
130#define MSR_K7_PERFCTR3 0xc0010007
131#define MSR_K7_CLK_CTL 0xc001001b
132#define MSR_K7_HWCR 0xc0010015
133#define MSR_K7_FID_VID_CTL 0xc0010041
134#define MSR_K7_FID_VID_STATUS 0xc0010042
135
136/* K6 MSRs */
137#define MSR_K6_EFER 0xc0000080
138#define MSR_K6_STAR 0xc0000081
139#define MSR_K6_WHCR 0xc0000082
140#define MSR_K6_UWCCR 0xc0000085
141#define MSR_K6_EPMR 0xc0000086
142#define MSR_K6_PSOR 0xc0000087
143#define MSR_K6_PFIR 0xc0000088
144
145/* Centaur-Hauls/IDT defined MSRs. */
146#define MSR_IDT_FCR1 0x00000107
147#define MSR_IDT_FCR2 0x00000108
148#define MSR_IDT_FCR3 0x00000109
149#define MSR_IDT_FCR4 0x0000010a
150
151#define MSR_IDT_MCR0 0x00000110
152#define MSR_IDT_MCR1 0x00000111
153#define MSR_IDT_MCR2 0x00000112
154#define MSR_IDT_MCR3 0x00000113
155#define MSR_IDT_MCR4 0x00000114
156#define MSR_IDT_MCR5 0x00000115
157#define MSR_IDT_MCR6 0x00000116
158#define MSR_IDT_MCR7 0x00000117
159#define MSR_IDT_MCR_CTRL 0x00000120
160
161/* VIA Cyrix defined MSRs*/
162#define MSR_VIA_FCR 0x00001107
163#define MSR_VIA_LONGHAUL 0x0000110a
164#define MSR_VIA_RNG 0x0000110b
165#define MSR_VIA_BCR2 0x00001147
166
167/* Transmeta defined MSRs */
168#define MSR_TMTA_LONGRUN_CTRL 0x80868010
169#define MSR_TMTA_LONGRUN_FLAGS 0x80868011
170#define MSR_TMTA_LRTI_READOUT 0x80868018
171#define MSR_TMTA_LRTI_VOLT_MHZ 0x8086801a
172
173/* Intel defined MSRs. */
174#define MSR_IA32_P5_MC_ADDR 0x00000000
175#define MSR_IA32_P5_MC_TYPE 0x00000001
176#define MSR_IA32_TSC 0x00000010
177#define MSR_IA32_PLATFORM_ID 0x00000017
178#define MSR_IA32_EBL_CR_POWERON 0x0000002a
179#define MSR_IA32_FEATURE_CONTROL 0x0000003a
180
181#define FEATURE_CONTROL_LOCKED (1<<0)
182#define FEATURE_CONTROL_VMXON_ENABLED (1<<2)
183
184#define MSR_IA32_APICBASE 0x0000001b
185#define MSR_IA32_APICBASE_BSP (1<<8)
186#define MSR_IA32_APICBASE_ENABLE (1<<11)
187#define MSR_IA32_APICBASE_BASE (0xfffff<<12)
188
189#define MSR_IA32_UCODE_WRITE 0x00000079
190#define MSR_IA32_UCODE_REV 0x0000008b
191
192#define MSR_IA32_PERF_STATUS 0x00000198
193#define MSR_IA32_PERF_CTL 0x00000199
194
195#define MSR_IA32_MPERF 0x000000e7
196#define MSR_IA32_APERF 0x000000e8
197
198#define MSR_IA32_THERM_CONTROL 0x0000019a
199#define MSR_IA32_THERM_INTERRUPT 0x0000019b
200#define MSR_IA32_THERM_STATUS 0x0000019c
201#define MSR_IA32_MISC_ENABLE 0x000001a0
202
203/* Intel Model 6 */
204#define MSR_P6_EVNTSEL0 0x00000186
205#define MSR_P6_EVNTSEL1 0x00000187
206
207/* P4/Xeon+ specific */
208#define MSR_IA32_MCG_EAX 0x00000180
209#define MSR_IA32_MCG_EBX 0x00000181
210#define MSR_IA32_MCG_ECX 0x00000182
211#define MSR_IA32_MCG_EDX 0x00000183
212#define MSR_IA32_MCG_ESI 0x00000184
213#define MSR_IA32_MCG_EDI 0x00000185
214#define MSR_IA32_MCG_EBP 0x00000186
215#define MSR_IA32_MCG_ESP 0x00000187
216#define MSR_IA32_MCG_EFLAGS 0x00000188
217#define MSR_IA32_MCG_EIP 0x00000189
218#define MSR_IA32_MCG_RESERVED 0x0000018a
219
220/* Pentium IV performance counter MSRs */
221#define MSR_P4_BPU_PERFCTR0 0x00000300
222#define MSR_P4_BPU_PERFCTR1 0x00000301
223#define MSR_P4_BPU_PERFCTR2 0x00000302
224#define MSR_P4_BPU_PERFCTR3 0x00000303
225#define MSR_P4_MS_PERFCTR0 0x00000304
226#define MSR_P4_MS_PERFCTR1 0x00000305
227#define MSR_P4_MS_PERFCTR2 0x00000306
228#define MSR_P4_MS_PERFCTR3 0x00000307
229#define MSR_P4_FLAME_PERFCTR0 0x00000308
230#define MSR_P4_FLAME_PERFCTR1 0x00000309
231#define MSR_P4_FLAME_PERFCTR2 0x0000030a
232#define MSR_P4_FLAME_PERFCTR3 0x0000030b
233#define MSR_P4_IQ_PERFCTR0 0x0000030c
234#define MSR_P4_IQ_PERFCTR1 0x0000030d
235#define MSR_P4_IQ_PERFCTR2 0x0000030e
236#define MSR_P4_IQ_PERFCTR3 0x0000030f
237#define MSR_P4_IQ_PERFCTR4 0x00000310
238#define MSR_P4_IQ_PERFCTR5 0x00000311
239#define MSR_P4_BPU_CCCR0 0x00000360
240#define MSR_P4_BPU_CCCR1 0x00000361
241#define MSR_P4_BPU_CCCR2 0x00000362
242#define MSR_P4_BPU_CCCR3 0x00000363
243#define MSR_P4_MS_CCCR0 0x00000364
244#define MSR_P4_MS_CCCR1 0x00000365
245#define MSR_P4_MS_CCCR2 0x00000366
246#define MSR_P4_MS_CCCR3 0x00000367
247#define MSR_P4_FLAME_CCCR0 0x00000368
248#define MSR_P4_FLAME_CCCR1 0x00000369
249#define MSR_P4_FLAME_CCCR2 0x0000036a
250#define MSR_P4_FLAME_CCCR3 0x0000036b
251#define MSR_P4_IQ_CCCR0 0x0000036c
252#define MSR_P4_IQ_CCCR1 0x0000036d
253#define MSR_P4_IQ_CCCR2 0x0000036e
254#define MSR_P4_IQ_CCCR3 0x0000036f
255#define MSR_P4_IQ_CCCR4 0x00000370
256#define MSR_P4_IQ_CCCR5 0x00000371
257#define MSR_P4_ALF_ESCR0 0x000003ca
258#define MSR_P4_ALF_ESCR1 0x000003cb
259#define MSR_P4_BPU_ESCR0 0x000003b2
260#define MSR_P4_BPU_ESCR1 0x000003b3
261#define MSR_P4_BSU_ESCR0 0x000003a0
262#define MSR_P4_BSU_ESCR1 0x000003a1
263#define MSR_P4_CRU_ESCR0 0x000003b8
264#define MSR_P4_CRU_ESCR1 0x000003b9
265#define MSR_P4_CRU_ESCR2 0x000003cc
266#define MSR_P4_CRU_ESCR3 0x000003cd
267#define MSR_P4_CRU_ESCR4 0x000003e0
268#define MSR_P4_CRU_ESCR5 0x000003e1
269#define MSR_P4_DAC_ESCR0 0x000003a8
270#define MSR_P4_DAC_ESCR1 0x000003a9
271#define MSR_P4_FIRM_ESCR0 0x000003a4
272#define MSR_P4_FIRM_ESCR1 0x000003a5
273#define MSR_P4_FLAME_ESCR0 0x000003a6
274#define MSR_P4_FLAME_ESCR1 0x000003a7
275#define MSR_P4_FSB_ESCR0 0x000003a2
276#define MSR_P4_FSB_ESCR1 0x000003a3
277#define MSR_P4_IQ_ESCR0 0x000003ba
278#define MSR_P4_IQ_ESCR1 0x000003bb
279#define MSR_P4_IS_ESCR0 0x000003b4
280#define MSR_P4_IS_ESCR1 0x000003b5
281#define MSR_P4_ITLB_ESCR0 0x000003b6
282#define MSR_P4_ITLB_ESCR1 0x000003b7
283#define MSR_P4_IX_ESCR0 0x000003c8
284#define MSR_P4_IX_ESCR1 0x000003c9
285#define MSR_P4_MOB_ESCR0 0x000003aa
286#define MSR_P4_MOB_ESCR1 0x000003ab
287#define MSR_P4_MS_ESCR0 0x000003c0
288#define MSR_P4_MS_ESCR1 0x000003c1
289#define MSR_P4_PMH_ESCR0 0x000003ac
290#define MSR_P4_PMH_ESCR1 0x000003ad
291#define MSR_P4_RAT_ESCR0 0x000003bc
292#define MSR_P4_RAT_ESCR1 0x000003bd
293#define MSR_P4_SAAT_ESCR0 0x000003ae
294#define MSR_P4_SAAT_ESCR1 0x000003af
295#define MSR_P4_SSU_ESCR0 0x000003be
296#define MSR_P4_SSU_ESCR1 0x000003bf /* guess: not in manual */
297
298#define MSR_P4_TBPU_ESCR0 0x000003c2
299#define MSR_P4_TBPU_ESCR1 0x000003c3
300#define MSR_P4_TC_ESCR0 0x000003c4
301#define MSR_P4_TC_ESCR1 0x000003c5
302#define MSR_P4_U2L_ESCR0 0x000003b0
303#define MSR_P4_U2L_ESCR1 0x000003b1
304
305/* Intel Core-based CPU performance counters */
306#define MSR_CORE_PERF_FIXED_CTR0 0x00000309
307#define MSR_CORE_PERF_FIXED_CTR1 0x0000030a
308#define MSR_CORE_PERF_FIXED_CTR2 0x0000030b
309#define MSR_CORE_PERF_FIXED_CTR_CTRL 0x0000038d
310#define MSR_CORE_PERF_GLOBAL_STATUS 0x0000038e
311#define MSR_CORE_PERF_GLOBAL_CTRL 0x0000038f
312#define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x00000390
313
314/* Geode defined MSRs */
315#define MSR_GEODE_BUSCONT_CONF0 0x00001900
316
317/* Intel VT MSRs */
318#define MSR_IA32_VMX_BASIC 0x00000480
319#define MSR_IA32_VMX_PINBASED_CTLS 0x00000481
320#define MSR_IA32_VMX_PROCBASED_CTLS 0x00000482
321#define MSR_IA32_VMX_EXIT_CTLS 0x00000483
322#define MSR_IA32_VMX_ENTRY_CTLS 0x00000484
323#define MSR_IA32_VMX_MISC 0x00000485
324#define MSR_IA32_VMX_CR0_FIXED0 0x00000486
325#define MSR_IA32_VMX_CR0_FIXED1 0x00000487
326#define MSR_IA32_VMX_CR4_FIXED0 0x00000488
327#define MSR_IA32_VMX_CR4_FIXED1 0x00000489
328#define MSR_IA32_VMX_VMCS_ENUM 0x0000048a
329#define MSR_IA32_VMX_PROCBASED_CTLS2 0x0000048b
330#define MSR_IA32_VMX_EPT_VPID_CAP 0x0000048c
331
332#endif /* _ASM_X86_MSR_INDEX_H */
diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h
new file mode 100644
index 000000000000..46be2fa7ac26
--- /dev/null
+++ b/arch/x86/include/asm/msr.h
@@ -0,0 +1,247 @@
1#ifndef _ASM_X86_MSR_H
2#define _ASM_X86_MSR_H
3
4#include <asm/msr-index.h>
5
6#ifndef __ASSEMBLY__
7# include <linux/types.h>
8#endif
9
10#ifdef __KERNEL__
11#ifndef __ASSEMBLY__
12
13#include <asm/asm.h>
14#include <asm/errno.h>
15
16static inline unsigned long long native_read_tscp(unsigned int *aux)
17{
18 unsigned long low, high;
19 asm volatile(".byte 0x0f,0x01,0xf9"
20 : "=a" (low), "=d" (high), "=c" (*aux));
21 return low | ((u64)high << 32);
22}
23
24/*
25 * i386 calling convention returns 64-bit value in edx:eax, while
26 * x86_64 returns at rax. Also, the "A" constraint does not really
27 * mean rdx:rax in x86_64, so we need specialized behaviour for each
28 * architecture
29 */
30#ifdef CONFIG_X86_64
31#define DECLARE_ARGS(val, low, high) unsigned low, high
32#define EAX_EDX_VAL(val, low, high) ((low) | ((u64)(high) << 32))
33#define EAX_EDX_ARGS(val, low, high) "a" (low), "d" (high)
34#define EAX_EDX_RET(val, low, high) "=a" (low), "=d" (high)
35#else
36#define DECLARE_ARGS(val, low, high) unsigned long long val
37#define EAX_EDX_VAL(val, low, high) (val)
38#define EAX_EDX_ARGS(val, low, high) "A" (val)
39#define EAX_EDX_RET(val, low, high) "=A" (val)
40#endif
41
42static inline unsigned long long native_read_msr(unsigned int msr)
43{
44 DECLARE_ARGS(val, low, high);
45
46 asm volatile("rdmsr" : EAX_EDX_RET(val, low, high) : "c" (msr));
47 return EAX_EDX_VAL(val, low, high);
48}
49
50static inline unsigned long long native_read_msr_safe(unsigned int msr,
51 int *err)
52{
53 DECLARE_ARGS(val, low, high);
54
55 asm volatile("2: rdmsr ; xor %[err],%[err]\n"
56 "1:\n\t"
57 ".section .fixup,\"ax\"\n\t"
58 "3: mov %[fault],%[err] ; jmp 1b\n\t"
59 ".previous\n\t"
60 _ASM_EXTABLE(2b, 3b)
61 : [err] "=r" (*err), EAX_EDX_RET(val, low, high)
62 : "c" (msr), [fault] "i" (-EFAULT));
63 return EAX_EDX_VAL(val, low, high);
64}
65
66static inline unsigned long long native_read_msr_amd_safe(unsigned int msr,
67 int *err)
68{
69 DECLARE_ARGS(val, low, high);
70
71 asm volatile("2: rdmsr ; xor %0,%0\n"
72 "1:\n\t"
73 ".section .fixup,\"ax\"\n\t"
74 "3: mov %3,%0 ; jmp 1b\n\t"
75 ".previous\n\t"
76 _ASM_EXTABLE(2b, 3b)
77 : "=r" (*err), EAX_EDX_RET(val, low, high)
78 : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT));
79 return EAX_EDX_VAL(val, low, high);
80}
81
82static inline void native_write_msr(unsigned int msr,
83 unsigned low, unsigned high)
84{
85 asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high) : "memory");
86}
87
88static inline int native_write_msr_safe(unsigned int msr,
89 unsigned low, unsigned high)
90{
91 int err;
92 asm volatile("2: wrmsr ; xor %[err],%[err]\n"
93 "1:\n\t"
94 ".section .fixup,\"ax\"\n\t"
95 "3: mov %[fault],%[err] ; jmp 1b\n\t"
96 ".previous\n\t"
97 _ASM_EXTABLE(2b, 3b)
98 : [err] "=a" (err)
99 : "c" (msr), "0" (low), "d" (high),
100 [fault] "i" (-EFAULT)
101 : "memory");
102 return err;
103}
104
105extern unsigned long long native_read_tsc(void);
106
107static __always_inline unsigned long long __native_read_tsc(void)
108{
109 DECLARE_ARGS(val, low, high);
110
111 rdtsc_barrier();
112 asm volatile("rdtsc" : EAX_EDX_RET(val, low, high));
113 rdtsc_barrier();
114
115 return EAX_EDX_VAL(val, low, high);
116}
117
118static inline unsigned long long native_read_pmc(int counter)
119{
120 DECLARE_ARGS(val, low, high);
121
122 asm volatile("rdpmc" : EAX_EDX_RET(val, low, high) : "c" (counter));
123 return EAX_EDX_VAL(val, low, high);
124}
125
126#ifdef CONFIG_PARAVIRT
127#include <asm/paravirt.h>
128#else
129#include <linux/errno.h>
130/*
131 * Access to machine-specific registers (available on 586 and better only)
132 * Note: the rd* operations modify the parameters directly (without using
133 * pointer indirection), this allows gcc to optimize better
134 */
135
136#define rdmsr(msr, val1, val2) \
137do { \
138 u64 __val = native_read_msr((msr)); \
139 (val1) = (u32)__val; \
140 (val2) = (u32)(__val >> 32); \
141} while (0)
142
143static inline void wrmsr(unsigned msr, unsigned low, unsigned high)
144{
145 native_write_msr(msr, low, high);
146}
147
148#define rdmsrl(msr, val) \
149 ((val) = native_read_msr((msr)))
150
151#define wrmsrl(msr, val) \
152 native_write_msr((msr), (u32)((u64)(val)), (u32)((u64)(val) >> 32))
153
154/* wrmsr with exception handling */
155static inline int wrmsr_safe(unsigned msr, unsigned low, unsigned high)
156{
157 return native_write_msr_safe(msr, low, high);
158}
159
160/* rdmsr with exception handling */
161#define rdmsr_safe(msr, p1, p2) \
162({ \
163 int __err; \
164 u64 __val = native_read_msr_safe((msr), &__err); \
165 (*p1) = (u32)__val; \
166 (*p2) = (u32)(__val >> 32); \
167 __err; \
168})
169
170static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
171{
172 int err;
173
174 *p = native_read_msr_safe(msr, &err);
175 return err;
176}
177static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
178{
179 int err;
180
181 *p = native_read_msr_amd_safe(msr, &err);
182 return err;
183}
184
185#define rdtscl(low) \
186 ((low) = (u32)native_read_tsc())
187
188#define rdtscll(val) \
189 ((val) = native_read_tsc())
190
191#define rdpmc(counter, low, high) \
192do { \
193 u64 _l = native_read_pmc((counter)); \
194 (low) = (u32)_l; \
195 (high) = (u32)(_l >> 32); \
196} while (0)
197
198#define rdtscp(low, high, aux) \
199do { \
200 unsigned long long _val = native_read_tscp(&(aux)); \
201 (low) = (u32)_val; \
202 (high) = (u32)(_val >> 32); \
203} while (0)
204
205#define rdtscpll(val, aux) (val) = native_read_tscp(&(aux))
206
207#endif /* !CONFIG_PARAVIRT */
208
209
210#define checking_wrmsrl(msr, val) wrmsr_safe((msr), (u32)(val), \
211 (u32)((val) >> 32))
212
213#define write_tsc(val1, val2) wrmsr(0x10, (val1), (val2))
214
215#define write_rdtscp_aux(val) wrmsr(0xc0000103, (val), 0)
216
217#ifdef CONFIG_SMP
218int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
219int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
220int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
221int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
222#else /* CONFIG_SMP */
223static inline int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
224{
225 rdmsr(msr_no, *l, *h);
226 return 0;
227}
228static inline int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
229{
230 wrmsr(msr_no, l, h);
231 return 0;
232}
233static inline int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no,
234 u32 *l, u32 *h)
235{
236 return rdmsr_safe(msr_no, l, h);
237}
238static inline int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
239{
240 return wrmsr_safe(msr_no, l, h);
241}
242#endif /* CONFIG_SMP */
243#endif /* __ASSEMBLY__ */
244#endif /* __KERNEL__ */
245
246
247#endif /* _ASM_X86_MSR_H */
diff --git a/arch/x86/include/asm/mtrr.h b/arch/x86/include/asm/mtrr.h
new file mode 100644
index 000000000000..7c1e4258b31e
--- /dev/null
+++ b/arch/x86/include/asm/mtrr.h
@@ -0,0 +1,173 @@
1/* Generic MTRR (Memory Type Range Register) ioctls.
2
3 Copyright (C) 1997-1999 Richard Gooch
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public
16 License along with this library; if not, write to the Free
17 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
19 Richard Gooch may be reached by email at rgooch@atnf.csiro.au
20 The postal address is:
21 Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia.
22*/
23#ifndef _ASM_X86_MTRR_H
24#define _ASM_X86_MTRR_H
25
26#include <linux/ioctl.h>
27#include <linux/errno.h>
28
29#define MTRR_IOCTL_BASE 'M'
30
31struct mtrr_sentry {
32 unsigned long base; /* Base address */
33 unsigned int size; /* Size of region */
34 unsigned int type; /* Type of region */
35};
36
37/* Warning: this structure has a different order from i386
38 on x86-64. The 32bit emulation code takes care of that.
39 But you need to use this for 64bit, otherwise your X server
40 will break. */
41
42#ifdef __i386__
43struct mtrr_gentry {
44 unsigned int regnum; /* Register number */
45 unsigned long base; /* Base address */
46 unsigned int size; /* Size of region */
47 unsigned int type; /* Type of region */
48};
49
50#else /* __i386__ */
51
52struct mtrr_gentry {
53 unsigned long base; /* Base address */
54 unsigned int size; /* Size of region */
55 unsigned int regnum; /* Register number */
56 unsigned int type; /* Type of region */
57};
58#endif /* !__i386__ */
59
60/* These are the various ioctls */
61#define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry)
62#define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry)
63#define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry)
64#define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry)
65#define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry)
66#define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry)
67#define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry)
68#define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry)
69#define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry)
70#define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry)
71
72/* These are the region types */
73#define MTRR_TYPE_UNCACHABLE 0
74#define MTRR_TYPE_WRCOMB 1
75/*#define MTRR_TYPE_ 2*/
76/*#define MTRR_TYPE_ 3*/
77#define MTRR_TYPE_WRTHROUGH 4
78#define MTRR_TYPE_WRPROT 5
79#define MTRR_TYPE_WRBACK 6
80#define MTRR_NUM_TYPES 7
81
82#ifdef __KERNEL__
83
84/* The following functions are for use by other drivers */
85# ifdef CONFIG_MTRR
86extern u8 mtrr_type_lookup(u64 addr, u64 end);
87extern void mtrr_save_fixed_ranges(void *);
88extern void mtrr_save_state(void);
89extern int mtrr_add(unsigned long base, unsigned long size,
90 unsigned int type, bool increment);
91extern int mtrr_add_page(unsigned long base, unsigned long size,
92 unsigned int type, bool increment);
93extern int mtrr_del(int reg, unsigned long base, unsigned long size);
94extern int mtrr_del_page(int reg, unsigned long base, unsigned long size);
95extern void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi);
96extern void mtrr_ap_init(void);
97extern void mtrr_bp_init(void);
98extern int mtrr_trim_uncached_memory(unsigned long end_pfn);
99extern int amd_special_default_mtrr(void);
100# else
101static inline u8 mtrr_type_lookup(u64 addr, u64 end)
102{
103 /*
104 * Return no-MTRRs:
105 */
106 return 0xff;
107}
108#define mtrr_save_fixed_ranges(arg) do {} while (0)
109#define mtrr_save_state() do {} while (0)
110static inline int mtrr_add(unsigned long base, unsigned long size,
111 unsigned int type, bool increment)
112{
113 return -ENODEV;
114}
115static inline int mtrr_add_page(unsigned long base, unsigned long size,
116 unsigned int type, bool increment)
117{
118 return -ENODEV;
119}
120static inline int mtrr_del(int reg, unsigned long base, unsigned long size)
121{
122 return -ENODEV;
123}
124static inline int mtrr_del_page(int reg, unsigned long base, unsigned long size)
125{
126 return -ENODEV;
127}
128static inline int mtrr_trim_uncached_memory(unsigned long end_pfn)
129{
130 return 0;
131}
132static inline void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi)
133{
134}
135
136#define mtrr_ap_init() do {} while (0)
137#define mtrr_bp_init() do {} while (0)
138# endif
139
140#ifdef CONFIG_COMPAT
141#include <linux/compat.h>
142
143struct mtrr_sentry32 {
144 compat_ulong_t base; /* Base address */
145 compat_uint_t size; /* Size of region */
146 compat_uint_t type; /* Type of region */
147};
148
149struct mtrr_gentry32 {
150 compat_ulong_t regnum; /* Register number */
151 compat_uint_t base; /* Base address */
152 compat_uint_t size; /* Size of region */
153 compat_uint_t type; /* Type of region */
154};
155
156#define MTRR_IOCTL_BASE 'M'
157
158#define MTRRIOC32_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry32)
159#define MTRRIOC32_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry32)
160#define MTRRIOC32_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry32)
161#define MTRRIOC32_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry32)
162#define MTRRIOC32_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry32)
163#define MTRRIOC32_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry32)
164#define MTRRIOC32_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry32)
165#define MTRRIOC32_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry32)
166#define MTRRIOC32_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry32)
167#define MTRRIOC32_KILL_PAGE_ENTRY \
168 _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry32)
169#endif /* CONFIG_COMPAT */
170
171#endif /* __KERNEL__ */
172
173#endif /* _ASM_X86_MTRR_H */
diff --git a/arch/x86/include/asm/mutex.h b/arch/x86/include/asm/mutex.h
new file mode 100644
index 000000000000..a731b9c573a6
--- /dev/null
+++ b/arch/x86/include/asm/mutex.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "mutex_32.h"
3#else
4# include "mutex_64.h"
5#endif
diff --git a/arch/x86/include/asm/mutex_32.h b/arch/x86/include/asm/mutex_32.h
new file mode 100644
index 000000000000..03f90c8a5a7c
--- /dev/null
+++ b/arch/x86/include/asm/mutex_32.h
@@ -0,0 +1,125 @@
1/*
2 * Assembly implementation of the mutex fastpath, based on atomic
3 * decrement/increment.
4 *
5 * started by Ingo Molnar:
6 *
7 * Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
8 */
9#ifndef _ASM_X86_MUTEX_32_H
10#define _ASM_X86_MUTEX_32_H
11
12#include <asm/alternative.h>
13
14/**
15 * __mutex_fastpath_lock - try to take the lock by moving the count
16 * from 1 to a 0 value
17 * @count: pointer of type atomic_t
18 * @fn: function to call if the original value was not 1
19 *
20 * Change the count from 1 to a value lower than 1, and call <fn> if it
21 * wasn't 1 originally. This function MUST leave the value lower than 1
22 * even when the "1" assertion wasn't true.
23 */
24#define __mutex_fastpath_lock(count, fail_fn) \
25do { \
26 unsigned int dummy; \
27 \
28 typecheck(atomic_t *, count); \
29 typecheck_fn(void (*)(atomic_t *), fail_fn); \
30 \
31 asm volatile(LOCK_PREFIX " decl (%%eax)\n" \
32 " jns 1f \n" \
33 " call " #fail_fn "\n" \
34 "1:\n" \
35 : "=a" (dummy) \
36 : "a" (count) \
37 : "memory", "ecx", "edx"); \
38} while (0)
39
40
41/**
42 * __mutex_fastpath_lock_retval - try to take the lock by moving the count
43 * from 1 to a 0 value
44 * @count: pointer of type atomic_t
45 * @fail_fn: function to call if the original value was not 1
46 *
47 * Change the count from 1 to a value lower than 1, and call <fail_fn> if it
48 * wasn't 1 originally. This function returns 0 if the fastpath succeeds,
49 * or anything the slow path function returns
50 */
51static inline int __mutex_fastpath_lock_retval(atomic_t *count,
52 int (*fail_fn)(atomic_t *))
53{
54 if (unlikely(atomic_dec_return(count) < 0))
55 return fail_fn(count);
56 else
57 return 0;
58}
59
60/**
61 * __mutex_fastpath_unlock - try to promote the mutex from 0 to 1
62 * @count: pointer of type atomic_t
63 * @fail_fn: function to call if the original value was not 0
64 *
65 * try to promote the mutex from 0 to 1. if it wasn't 0, call <fail_fn>.
66 * In the failure case, this function is allowed to either set the value
67 * to 1, or to set it to a value lower than 1.
68 *
69 * If the implementation sets it to a value of lower than 1, the
70 * __mutex_slowpath_needs_to_unlock() macro needs to return 1, it needs
71 * to return 0 otherwise.
72 */
73#define __mutex_fastpath_unlock(count, fail_fn) \
74do { \
75 unsigned int dummy; \
76 \
77 typecheck(atomic_t *, count); \
78 typecheck_fn(void (*)(atomic_t *), fail_fn); \
79 \
80 asm volatile(LOCK_PREFIX " incl (%%eax)\n" \
81 " jg 1f\n" \
82 " call " #fail_fn "\n" \
83 "1:\n" \
84 : "=a" (dummy) \
85 : "a" (count) \
86 : "memory", "ecx", "edx"); \
87} while (0)
88
89#define __mutex_slowpath_needs_to_unlock() 1
90
91/**
92 * __mutex_fastpath_trylock - try to acquire the mutex, without waiting
93 *
94 * @count: pointer of type atomic_t
95 * @fail_fn: fallback function
96 *
97 * Change the count from 1 to a value lower than 1, and return 0 (failure)
98 * if it wasn't 1 originally, or return 1 (success) otherwise. This function
99 * MUST leave the value lower than 1 even when the "1" assertion wasn't true.
100 * Additionally, if the value was < 0 originally, this function must not leave
101 * it to 0 on failure.
102 */
103static inline int __mutex_fastpath_trylock(atomic_t *count,
104 int (*fail_fn)(atomic_t *))
105{
106 /*
107 * We have two variants here. The cmpxchg based one is the best one
108 * because it never induce a false contention state. It is included
109 * here because architectures using the inc/dec algorithms over the
110 * xchg ones are much more likely to support cmpxchg natively.
111 *
112 * If not we fall back to the spinlock based variant - that is
113 * just as efficient (and simpler) as a 'destructive' probing of
114 * the mutex state would be.
115 */
116#ifdef __HAVE_ARCH_CMPXCHG
117 if (likely(atomic_cmpxchg(count, 1, 0) == 1))
118 return 1;
119 return 0;
120#else
121 return fail_fn(count);
122#endif
123}
124
125#endif /* _ASM_X86_MUTEX_32_H */
diff --git a/arch/x86/include/asm/mutex_64.h b/arch/x86/include/asm/mutex_64.h
new file mode 100644
index 000000000000..68a87b0f8e29
--- /dev/null
+++ b/arch/x86/include/asm/mutex_64.h
@@ -0,0 +1,100 @@
1/*
2 * Assembly implementation of the mutex fastpath, based on atomic
3 * decrement/increment.
4 *
5 * started by Ingo Molnar:
6 *
7 * Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
8 */
9#ifndef _ASM_X86_MUTEX_64_H
10#define _ASM_X86_MUTEX_64_H
11
12/**
13 * __mutex_fastpath_lock - decrement and call function if negative
14 * @v: pointer of type atomic_t
15 * @fail_fn: function to call if the result is negative
16 *
17 * Atomically decrements @v and calls <fail_fn> if the result is negative.
18 */
19#define __mutex_fastpath_lock(v, fail_fn) \
20do { \
21 unsigned long dummy; \
22 \
23 typecheck(atomic_t *, v); \
24 typecheck_fn(void (*)(atomic_t *), fail_fn); \
25 \
26 asm volatile(LOCK_PREFIX " decl (%%rdi)\n" \
27 " jns 1f \n" \
28 " call " #fail_fn "\n" \
29 "1:" \
30 : "=D" (dummy) \
31 : "D" (v) \
32 : "rax", "rsi", "rdx", "rcx", \
33 "r8", "r9", "r10", "r11", "memory"); \
34} while (0)
35
36/**
37 * __mutex_fastpath_lock_retval - try to take the lock by moving the count
38 * from 1 to a 0 value
39 * @count: pointer of type atomic_t
40 * @fail_fn: function to call if the original value was not 1
41 *
42 * Change the count from 1 to a value lower than 1, and call <fail_fn> if
43 * it wasn't 1 originally. This function returns 0 if the fastpath succeeds,
44 * or anything the slow path function returns
45 */
46static inline int __mutex_fastpath_lock_retval(atomic_t *count,
47 int (*fail_fn)(atomic_t *))
48{
49 if (unlikely(atomic_dec_return(count) < 0))
50 return fail_fn(count);
51 else
52 return 0;
53}
54
55/**
56 * __mutex_fastpath_unlock - increment and call function if nonpositive
57 * @v: pointer of type atomic_t
58 * @fail_fn: function to call if the result is nonpositive
59 *
60 * Atomically increments @v and calls <fail_fn> if the result is nonpositive.
61 */
62#define __mutex_fastpath_unlock(v, fail_fn) \
63do { \
64 unsigned long dummy; \
65 \
66 typecheck(atomic_t *, v); \
67 typecheck_fn(void (*)(atomic_t *), fail_fn); \
68 \
69 asm volatile(LOCK_PREFIX " incl (%%rdi)\n" \
70 " jg 1f\n" \
71 " call " #fail_fn "\n" \
72 "1:" \
73 : "=D" (dummy) \
74 : "D" (v) \
75 : "rax", "rsi", "rdx", "rcx", \
76 "r8", "r9", "r10", "r11", "memory"); \
77} while (0)
78
79#define __mutex_slowpath_needs_to_unlock() 1
80
81/**
82 * __mutex_fastpath_trylock - try to acquire the mutex, without waiting
83 *
84 * @count: pointer of type atomic_t
85 * @fail_fn: fallback function
86 *
87 * Change the count from 1 to 0 and return 1 (success), or return 0 (failure)
88 * if it wasn't 1 originally. [the fallback function is never used on
89 * x86_64, because all x86_64 CPUs have a CMPXCHG instruction.]
90 */
91static inline int __mutex_fastpath_trylock(atomic_t *count,
92 int (*fail_fn)(atomic_t *))
93{
94 if (likely(atomic_cmpxchg(count, 1, 0) == 1))
95 return 1;
96 else
97 return 0;
98}
99
100#endif /* _ASM_X86_MUTEX_64_H */
diff --git a/arch/x86/include/asm/nmi.h b/arch/x86/include/asm/nmi.h
new file mode 100644
index 000000000000..c45a0a568dff
--- /dev/null
+++ b/arch/x86/include/asm/nmi.h
@@ -0,0 +1,81 @@
1#ifndef _ASM_X86_NMI_H
2#define _ASM_X86_NMI_H
3
4#include <linux/pm.h>
5#include <asm/irq.h>
6#include <asm/io.h>
7
8#ifdef ARCH_HAS_NMI_WATCHDOG
9
10/**
11 * do_nmi_callback
12 *
13 * Check to see if a callback exists and execute it. Return 1
14 * if the handler exists and was handled successfully.
15 */
16int do_nmi_callback(struct pt_regs *regs, int cpu);
17
18extern void die_nmi(char *str, struct pt_regs *regs, int do_panic);
19extern int check_nmi_watchdog(void);
20extern int nmi_watchdog_enabled;
21extern int avail_to_resrv_perfctr_nmi_bit(unsigned int);
22extern int avail_to_resrv_perfctr_nmi(unsigned int);
23extern int reserve_perfctr_nmi(unsigned int);
24extern void release_perfctr_nmi(unsigned int);
25extern int reserve_evntsel_nmi(unsigned int);
26extern void release_evntsel_nmi(unsigned int);
27
28extern void setup_apic_nmi_watchdog(void *);
29extern void stop_apic_nmi_watchdog(void *);
30extern void disable_timer_nmi_watchdog(void);
31extern void enable_timer_nmi_watchdog(void);
32extern int nmi_watchdog_tick(struct pt_regs *regs, unsigned reason);
33extern void cpu_nmi_set_wd_enabled(void);
34
35extern atomic_t nmi_active;
36extern unsigned int nmi_watchdog;
37#define NMI_NONE 0
38#define NMI_IO_APIC 1
39#define NMI_LOCAL_APIC 2
40#define NMI_INVALID 3
41
42struct ctl_table;
43struct file;
44extern int proc_nmi_enabled(struct ctl_table *, int , struct file *,
45 void __user *, size_t *, loff_t *);
46extern int unknown_nmi_panic;
47
48void __trigger_all_cpu_backtrace(void);
49#define trigger_all_cpu_backtrace() __trigger_all_cpu_backtrace()
50
51static inline void localise_nmi_watchdog(void)
52{
53 if (nmi_watchdog == NMI_IO_APIC)
54 nmi_watchdog = NMI_LOCAL_APIC;
55}
56
57/* check if nmi_watchdog is active (ie was specified at boot) */
58static inline int nmi_watchdog_active(void)
59{
60 /*
61 * actually it should be:
62 * return (nmi_watchdog == NMI_LOCAL_APIC ||
63 * nmi_watchdog == NMI_IO_APIC)
64 * but since they are power of two we could use a
65 * cheaper way --cvg
66 */
67 return nmi_watchdog & 0x3;
68}
69#endif
70
71void lapic_watchdog_stop(void);
72int lapic_watchdog_init(unsigned nmi_hz);
73int lapic_wd_event(unsigned nmi_hz);
74unsigned lapic_adjust_nmi_hz(unsigned hz);
75int lapic_watchdog_ok(void);
76void disable_lapic_nmi_watchdog(void);
77void enable_lapic_nmi_watchdog(void);
78void stop_nmi(void);
79void restart_nmi(void);
80
81#endif /* _ASM_X86_NMI_H */
diff --git a/arch/x86/include/asm/nops.h b/arch/x86/include/asm/nops.h
new file mode 100644
index 000000000000..ad2668ee1aa7
--- /dev/null
+++ b/arch/x86/include/asm/nops.h
@@ -0,0 +1,118 @@
1#ifndef _ASM_X86_NOPS_H
2#define _ASM_X86_NOPS_H
3
4/* Define nops for use with alternative() */
5
6/* generic versions from gas
7 1: nop
8 the following instructions are NOT nops in 64-bit mode,
9 for 64-bit mode use K8 or P6 nops instead
10 2: movl %esi,%esi
11 3: leal 0x00(%esi),%esi
12 4: leal 0x00(,%esi,1),%esi
13 6: leal 0x00000000(%esi),%esi
14 7: leal 0x00000000(,%esi,1),%esi
15*/
16#define GENERIC_NOP1 ".byte 0x90\n"
17#define GENERIC_NOP2 ".byte 0x89,0xf6\n"
18#define GENERIC_NOP3 ".byte 0x8d,0x76,0x00\n"
19#define GENERIC_NOP4 ".byte 0x8d,0x74,0x26,0x00\n"
20#define GENERIC_NOP5 GENERIC_NOP1 GENERIC_NOP4
21#define GENERIC_NOP6 ".byte 0x8d,0xb6,0x00,0x00,0x00,0x00\n"
22#define GENERIC_NOP7 ".byte 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00\n"
23#define GENERIC_NOP8 GENERIC_NOP1 GENERIC_NOP7
24
25/* Opteron 64bit nops
26 1: nop
27 2: osp nop
28 3: osp osp nop
29 4: osp osp osp nop
30*/
31#define K8_NOP1 GENERIC_NOP1
32#define K8_NOP2 ".byte 0x66,0x90\n"
33#define K8_NOP3 ".byte 0x66,0x66,0x90\n"
34#define K8_NOP4 ".byte 0x66,0x66,0x66,0x90\n"
35#define K8_NOP5 K8_NOP3 K8_NOP2
36#define K8_NOP6 K8_NOP3 K8_NOP3
37#define K8_NOP7 K8_NOP4 K8_NOP3
38#define K8_NOP8 K8_NOP4 K8_NOP4
39
40/* K7 nops
41 uses eax dependencies (arbitary choice)
42 1: nop
43 2: movl %eax,%eax
44 3: leal (,%eax,1),%eax
45 4: leal 0x00(,%eax,1),%eax
46 6: leal 0x00000000(%eax),%eax
47 7: leal 0x00000000(,%eax,1),%eax
48*/
49#define K7_NOP1 GENERIC_NOP1
50#define K7_NOP2 ".byte 0x8b,0xc0\n"
51#define K7_NOP3 ".byte 0x8d,0x04,0x20\n"
52#define K7_NOP4 ".byte 0x8d,0x44,0x20,0x00\n"
53#define K7_NOP5 K7_NOP4 ASM_NOP1
54#define K7_NOP6 ".byte 0x8d,0x80,0,0,0,0\n"
55#define K7_NOP7 ".byte 0x8D,0x04,0x05,0,0,0,0\n"
56#define K7_NOP8 K7_NOP7 ASM_NOP1
57
58/* P6 nops
59 uses eax dependencies (Intel-recommended choice)
60 1: nop
61 2: osp nop
62 3: nopl (%eax)
63 4: nopl 0x00(%eax)
64 5: nopl 0x00(%eax,%eax,1)
65 6: osp nopl 0x00(%eax,%eax,1)
66 7: nopl 0x00000000(%eax)
67 8: nopl 0x00000000(%eax,%eax,1)
68*/
69#define P6_NOP1 GENERIC_NOP1
70#define P6_NOP2 ".byte 0x66,0x90\n"
71#define P6_NOP3 ".byte 0x0f,0x1f,0x00\n"
72#define P6_NOP4 ".byte 0x0f,0x1f,0x40,0\n"
73#define P6_NOP5 ".byte 0x0f,0x1f,0x44,0x00,0\n"
74#define P6_NOP6 ".byte 0x66,0x0f,0x1f,0x44,0x00,0\n"
75#define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n"
76#define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n"
77
78#if defined(CONFIG_MK7)
79#define ASM_NOP1 K7_NOP1
80#define ASM_NOP2 K7_NOP2
81#define ASM_NOP3 K7_NOP3
82#define ASM_NOP4 K7_NOP4
83#define ASM_NOP5 K7_NOP5
84#define ASM_NOP6 K7_NOP6
85#define ASM_NOP7 K7_NOP7
86#define ASM_NOP8 K7_NOP8
87#elif defined(CONFIG_X86_P6_NOP)
88#define ASM_NOP1 P6_NOP1
89#define ASM_NOP2 P6_NOP2
90#define ASM_NOP3 P6_NOP3
91#define ASM_NOP4 P6_NOP4
92#define ASM_NOP5 P6_NOP5
93#define ASM_NOP6 P6_NOP6
94#define ASM_NOP7 P6_NOP7
95#define ASM_NOP8 P6_NOP8
96#elif defined(CONFIG_X86_64)
97#define ASM_NOP1 K8_NOP1
98#define ASM_NOP2 K8_NOP2
99#define ASM_NOP3 K8_NOP3
100#define ASM_NOP4 K8_NOP4
101#define ASM_NOP5 K8_NOP5
102#define ASM_NOP6 K8_NOP6
103#define ASM_NOP7 K8_NOP7
104#define ASM_NOP8 K8_NOP8
105#else
106#define ASM_NOP1 GENERIC_NOP1
107#define ASM_NOP2 GENERIC_NOP2
108#define ASM_NOP3 GENERIC_NOP3
109#define ASM_NOP4 GENERIC_NOP4
110#define ASM_NOP5 GENERIC_NOP5
111#define ASM_NOP6 GENERIC_NOP6
112#define ASM_NOP7 GENERIC_NOP7
113#define ASM_NOP8 GENERIC_NOP8
114#endif
115
116#define ASM_NOP_MAX 8
117
118#endif /* _ASM_X86_NOPS_H */
diff --git a/arch/x86/include/asm/numa.h b/arch/x86/include/asm/numa.h
new file mode 100644
index 000000000000..27da400d3138
--- /dev/null
+++ b/arch/x86/include/asm/numa.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "numa_32.h"
3#else
4# include "numa_64.h"
5#endif
diff --git a/arch/x86/include/asm/numa_32.h b/arch/x86/include/asm/numa_32.h
new file mode 100644
index 000000000000..e9f5db796244
--- /dev/null
+++ b/arch/x86/include/asm/numa_32.h
@@ -0,0 +1,11 @@
1#ifndef _ASM_X86_NUMA_32_H
2#define _ASM_X86_NUMA_32_H
3
4extern int pxm_to_nid(int pxm);
5extern void numa_remove_cpu(int cpu);
6
7#ifdef CONFIG_NUMA
8extern void set_highmem_pages_init(void);
9#endif
10
11#endif /* _ASM_X86_NUMA_32_H */
diff --git a/arch/x86/include/asm/numa_64.h b/arch/x86/include/asm/numa_64.h
new file mode 100644
index 000000000000..064ed6df4cbe
--- /dev/null
+++ b/arch/x86/include/asm/numa_64.h
@@ -0,0 +1,43 @@
1#ifndef _ASM_X86_NUMA_64_H
2#define _ASM_X86_NUMA_64_H
3
4#include <linux/nodemask.h>
5#include <asm/apicdef.h>
6
7struct bootnode {
8 u64 start;
9 u64 end;
10};
11
12extern int compute_hash_shift(struct bootnode *nodes, int numblks,
13 int *nodeids);
14
15#define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT))
16
17extern void numa_init_array(void);
18extern int numa_off;
19
20extern void srat_reserve_add_area(int nodeid);
21extern int hotadd_percent;
22
23extern s16 apicid_to_node[MAX_LOCAL_APIC];
24
25extern unsigned long numa_free_all_bootmem(void);
26extern void setup_node_bootmem(int nodeid, unsigned long start,
27 unsigned long end);
28
29#ifdef CONFIG_NUMA
30extern void __init init_cpu_to_node(void);
31extern void __cpuinit numa_set_node(int cpu, int node);
32extern void __cpuinit numa_clear_node(int cpu);
33extern void __cpuinit numa_add_cpu(int cpu);
34extern void __cpuinit numa_remove_cpu(int cpu);
35#else
36static inline void init_cpu_to_node(void) { }
37static inline void numa_set_node(int cpu, int node) { }
38static inline void numa_clear_node(int cpu) { }
39static inline void numa_add_cpu(int cpu, int node) { }
40static inline void numa_remove_cpu(int cpu) { }
41#endif
42
43#endif /* _ASM_X86_NUMA_64_H */
diff --git a/arch/x86/include/asm/numaq.h b/arch/x86/include/asm/numaq.h
new file mode 100644
index 000000000000..1e8bd30b4c16
--- /dev/null
+++ b/arch/x86/include/asm/numaq.h
@@ -0,0 +1,169 @@
1/*
2 * Written by: Patricia Gaughen, IBM Corporation
3 *
4 * Copyright (C) 2002, IBM Corp.
5 *
6 * All rights reserved.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
16 * NON INFRINGEMENT. See the GNU General Public License for more
17 * details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 * Send feedback to <gone@us.ibm.com>
24 */
25
26#ifndef _ASM_X86_NUMAQ_H
27#define _ASM_X86_NUMAQ_H
28
29#ifdef CONFIG_X86_NUMAQ
30
31extern int found_numaq;
32extern int get_memcfg_numaq(void);
33
34/*
35 * SYS_CFG_DATA_PRIV_ADDR, struct eachquadmem, and struct sys_cfg_data are the
36 */
37#define SYS_CFG_DATA_PRIV_ADDR 0x0009d000 /* place for scd in private
38 quad space */
39
40/*
41 * Communication area for each processor on lynxer-processor tests.
42 *
43 * NOTE: If you change the size of this eachproc structure you need
44 * to change the definition for EACH_QUAD_SIZE.
45 */
46struct eachquadmem {
47 unsigned int priv_mem_start; /* Starting address of this */
48 /* quad's private memory. */
49 /* This is always 0. */
50 /* In MB. */
51 unsigned int priv_mem_size; /* Size of this quad's */
52 /* private memory. */
53 /* In MB. */
54 unsigned int low_shrd_mem_strp_start;/* Starting address of this */
55 /* quad's low shared block */
56 /* (untranslated). */
57 /* In MB. */
58 unsigned int low_shrd_mem_start; /* Starting address of this */
59 /* quad's low shared memory */
60 /* (untranslated). */
61 /* In MB. */
62 unsigned int low_shrd_mem_size; /* Size of this quad's low */
63 /* shared memory. */
64 /* In MB. */
65 unsigned int lmmio_copb_start; /* Starting address of this */
66 /* quad's local memory */
67 /* mapped I/O in the */
68 /* compatibility OPB. */
69 /* In MB. */
70 unsigned int lmmio_copb_size; /* Size of this quad's local */
71 /* memory mapped I/O in the */
72 /* compatibility OPB. */
73 /* In MB. */
74 unsigned int lmmio_nopb_start; /* Starting address of this */
75 /* quad's local memory */
76 /* mapped I/O in the */
77 /* non-compatibility OPB. */
78 /* In MB. */
79 unsigned int lmmio_nopb_size; /* Size of this quad's local */
80 /* memory mapped I/O in the */
81 /* non-compatibility OPB. */
82 /* In MB. */
83 unsigned int io_apic_0_start; /* Starting address of I/O */
84 /* APIC 0. */
85 unsigned int io_apic_0_sz; /* Size I/O APIC 0. */
86 unsigned int io_apic_1_start; /* Starting address of I/O */
87 /* APIC 1. */
88 unsigned int io_apic_1_sz; /* Size I/O APIC 1. */
89 unsigned int hi_shrd_mem_start; /* Starting address of this */
90 /* quad's high shared memory.*/
91 /* In MB. */
92 unsigned int hi_shrd_mem_size; /* Size of this quad's high */
93 /* shared memory. */
94 /* In MB. */
95 unsigned int mps_table_addr; /* Address of this quad's */
96 /* MPS tables from BIOS, */
97 /* in system space.*/
98 unsigned int lcl_MDC_pio_addr; /* Port-I/O address for */
99 /* local access of MDC. */
100 unsigned int rmt_MDC_mmpio_addr; /* MM-Port-I/O address for */
101 /* remote access of MDC. */
102 unsigned int mm_port_io_start; /* Starting address of this */
103 /* quad's memory mapped Port */
104 /* I/O space. */
105 unsigned int mm_port_io_size; /* Size of this quad's memory*/
106 /* mapped Port I/O space. */
107 unsigned int mm_rmt_io_apic_start; /* Starting address of this */
108 /* quad's memory mapped */
109 /* remote I/O APIC space. */
110 unsigned int mm_rmt_io_apic_size; /* Size of this quad's memory*/
111 /* mapped remote I/O APIC */
112 /* space. */
113 unsigned int mm_isa_start; /* Starting address of this */
114 /* quad's memory mapped ISA */
115 /* space (contains MDC */
116 /* memory space). */
117 unsigned int mm_isa_size; /* Size of this quad's memory*/
118 /* mapped ISA space (contains*/
119 /* MDC memory space). */
120 unsigned int rmt_qmi_addr; /* Remote addr to access QMI.*/
121 unsigned int lcl_qmi_addr; /* Local addr to access QMI. */
122};
123
124/*
125 * Note: This structure must be NOT be changed unless the multiproc and
126 * OS are changed to reflect the new structure.
127 */
128struct sys_cfg_data {
129 unsigned int quad_id;
130 unsigned int bsp_proc_id; /* Boot Strap Processor in this quad. */
131 unsigned int scd_version; /* Version number of this table. */
132 unsigned int first_quad_id;
133 unsigned int quads_present31_0; /* 1 bit for each quad */
134 unsigned int quads_present63_32; /* 1 bit for each quad */
135 unsigned int config_flags;
136 unsigned int boot_flags;
137 unsigned int csr_start_addr; /* Absolute value (not in MB) */
138 unsigned int csr_size; /* Absolute value (not in MB) */
139 unsigned int lcl_apic_start_addr; /* Absolute value (not in MB) */
140 unsigned int lcl_apic_size; /* Absolute value (not in MB) */
141 unsigned int low_shrd_mem_base; /* 0 or 512MB or 1GB */
142 unsigned int low_shrd_mem_quad_offset; /* 0,128M,256M,512M,1G */
143 /* may not be totally populated */
144 unsigned int split_mem_enbl; /* 0 for no low shared memory */
145 unsigned int mmio_sz; /* Size of total system memory mapped I/O */
146 /* (in MB). */
147 unsigned int quad_spin_lock; /* Spare location used for quad */
148 /* bringup. */
149 unsigned int nonzero55; /* For checksumming. */
150 unsigned int nonzeroaa; /* For checksumming. */
151 unsigned int scd_magic_number;
152 unsigned int system_type;
153 unsigned int checksum;
154 /*
155 * memory configuration area for each quad
156 */
157 struct eachquadmem eq[MAX_NUMNODES]; /* indexed by quad id */
158};
159
160void numaq_tsc_disable(void);
161
162#else
163static inline int get_memcfg_numaq(void)
164{
165 return 0;
166}
167#endif /* CONFIG_X86_NUMAQ */
168#endif /* _ASM_X86_NUMAQ_H */
169
diff --git a/arch/x86/include/asm/numaq/apic.h b/arch/x86/include/asm/numaq/apic.h
new file mode 100644
index 000000000000..0bf2a06b7a4e
--- /dev/null
+++ b/arch/x86/include/asm/numaq/apic.h
@@ -0,0 +1,136 @@
1#ifndef __ASM_NUMAQ_APIC_H
2#define __ASM_NUMAQ_APIC_H
3
4#include <asm/io.h>
5#include <linux/mmzone.h>
6#include <linux/nodemask.h>
7
8#define APIC_DFR_VALUE (APIC_DFR_CLUSTER)
9
10static inline cpumask_t target_cpus(void)
11{
12 return CPU_MASK_ALL;
13}
14
15#define NO_BALANCE_IRQ (1)
16#define esr_disable (1)
17
18#define INT_DELIVERY_MODE dest_LowestPrio
19#define INT_DEST_MODE 0 /* physical delivery on LOCAL quad */
20
21static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
22{
23 return physid_isset(apicid, bitmap);
24}
25static inline unsigned long check_apicid_present(int bit)
26{
27 return physid_isset(bit, phys_cpu_present_map);
28}
29#define apicid_cluster(apicid) (apicid & 0xF0)
30
31static inline int apic_id_registered(void)
32{
33 return 1;
34}
35
36static inline void init_apic_ldr(void)
37{
38 /* Already done in NUMA-Q firmware */
39}
40
41static inline void setup_apic_routing(void)
42{
43 printk("Enabling APIC mode: %s. Using %d I/O APICs\n",
44 "NUMA-Q", nr_ioapics);
45}
46
47/*
48 * Skip adding the timer int on secondary nodes, which causes
49 * a small but painful rift in the time-space continuum.
50 */
51static inline int multi_timer_check(int apic, int irq)
52{
53 return apic != 0 && irq == 0;
54}
55
56static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
57{
58 /* We don't have a good way to do this yet - hack */
59 return physids_promote(0xFUL);
60}
61
62/* Mapping from cpu number to logical apicid */
63extern u8 cpu_2_logical_apicid[];
64static inline int cpu_to_logical_apicid(int cpu)
65{
66 if (cpu >= NR_CPUS)
67 return BAD_APICID;
68 return (int)cpu_2_logical_apicid[cpu];
69}
70
71/*
72 * Supporting over 60 cpus on NUMA-Q requires a locality-dependent
73 * cpu to APIC ID relation to properly interact with the intelligent
74 * mode of the cluster controller.
75 */
76static inline int cpu_present_to_apicid(int mps_cpu)
77{
78 if (mps_cpu < 60)
79 return ((mps_cpu >> 2) << 4) | (1 << (mps_cpu & 0x3));
80 else
81 return BAD_APICID;
82}
83
84static inline int apicid_to_node(int logical_apicid)
85{
86 return logical_apicid >> 4;
87}
88
89static inline physid_mask_t apicid_to_cpu_present(int logical_apicid)
90{
91 int node = apicid_to_node(logical_apicid);
92 int cpu = __ffs(logical_apicid & 0xf);
93
94 return physid_mask_of_physid(cpu + 4*node);
95}
96
97extern void *xquad_portio;
98
99static inline void setup_portio_remap(void)
100{
101 int num_quads = num_online_nodes();
102
103 if (num_quads <= 1)
104 return;
105
106 printk("Remapping cross-quad port I/O for %d quads\n", num_quads);
107 xquad_portio = ioremap(XQUAD_PORTIO_BASE, num_quads*XQUAD_PORTIO_QUAD);
108 printk("xquad_portio vaddr 0x%08lx, len %08lx\n",
109 (u_long) xquad_portio, (u_long) num_quads*XQUAD_PORTIO_QUAD);
110}
111
112static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
113{
114 return (1);
115}
116
117static inline void enable_apic_mode(void)
118{
119}
120
121/*
122 * We use physical apicids here, not logical, so just return the default
123 * physical broadcast to stop people from breaking us
124 */
125static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
126{
127 return (int) 0xF;
128}
129
130/* No NUMA-Q box has a HT CPU, but it can't hurt to use the default code. */
131static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
132{
133 return cpuid_apic >> index_msb;
134}
135
136#endif /* __ASM_NUMAQ_APIC_H */
diff --git a/arch/x86/include/asm/numaq/apicdef.h b/arch/x86/include/asm/numaq/apicdef.h
new file mode 100644
index 000000000000..e012a46cc22a
--- /dev/null
+++ b/arch/x86/include/asm/numaq/apicdef.h
@@ -0,0 +1,14 @@
1#ifndef __ASM_NUMAQ_APICDEF_H
2#define __ASM_NUMAQ_APICDEF_H
3
4
5#define APIC_ID_MASK (0xF<<24)
6
7static inline unsigned get_apic_id(unsigned long x)
8{
9 return (((x)>>24)&0x0F);
10}
11
12#define GET_APIC_ID(x) get_apic_id(x)
13
14#endif
diff --git a/arch/x86/include/asm/numaq/ipi.h b/arch/x86/include/asm/numaq/ipi.h
new file mode 100644
index 000000000000..935588d286cf
--- /dev/null
+++ b/arch/x86/include/asm/numaq/ipi.h
@@ -0,0 +1,25 @@
1#ifndef __ASM_NUMAQ_IPI_H
2#define __ASM_NUMAQ_IPI_H
3
4void send_IPI_mask_sequence(cpumask_t, int vector);
5
6static inline void send_IPI_mask(cpumask_t mask, int vector)
7{
8 send_IPI_mask_sequence(mask, vector);
9}
10
11static inline void send_IPI_allbutself(int vector)
12{
13 cpumask_t mask = cpu_online_map;
14 cpu_clear(smp_processor_id(), mask);
15
16 if (!cpus_empty(mask))
17 send_IPI_mask(mask, vector);
18}
19
20static inline void send_IPI_all(int vector)
21{
22 send_IPI_mask(cpu_online_map, vector);
23}
24
25#endif /* __ASM_NUMAQ_IPI_H */
diff --git a/arch/x86/include/asm/numaq/mpparse.h b/arch/x86/include/asm/numaq/mpparse.h
new file mode 100644
index 000000000000..252292e077b6
--- /dev/null
+++ b/arch/x86/include/asm/numaq/mpparse.h
@@ -0,0 +1,7 @@
1#ifndef __ASM_NUMAQ_MPPARSE_H
2#define __ASM_NUMAQ_MPPARSE_H
3
4extern void numaq_mps_oem_check(struct mp_config_table *mpc, char *oem,
5 char *productid);
6
7#endif /* __ASM_NUMAQ_MPPARSE_H */
diff --git a/arch/x86/include/asm/numaq/wakecpu.h b/arch/x86/include/asm/numaq/wakecpu.h
new file mode 100644
index 000000000000..c577bda5b1c5
--- /dev/null
+++ b/arch/x86/include/asm/numaq/wakecpu.h
@@ -0,0 +1,43 @@
1#ifndef __ASM_NUMAQ_WAKECPU_H
2#define __ASM_NUMAQ_WAKECPU_H
3
4/* This file copes with machines that wakeup secondary CPUs by NMIs */
5
6#define WAKE_SECONDARY_VIA_NMI
7
8#define TRAMPOLINE_LOW phys_to_virt(0x8)
9#define TRAMPOLINE_HIGH phys_to_virt(0xa)
10
11#define boot_cpu_apicid boot_cpu_logical_apicid
12
13/* We don't do anything here because we use NMI's to boot instead */
14static inline void wait_for_init_deassert(atomic_t *deassert)
15{
16}
17
18/*
19 * Because we use NMIs rather than the INIT-STARTUP sequence to
20 * bootstrap the CPUs, the APIC may be in a weird state. Kick it.
21 */
22static inline void smp_callin_clear_local_apic(void)
23{
24 clear_local_APIC();
25}
26
27static inline void store_NMI_vector(unsigned short *high, unsigned short *low)
28{
29 printk("Storing NMI vector\n");
30 *high = *((volatile unsigned short *) TRAMPOLINE_HIGH);
31 *low = *((volatile unsigned short *) TRAMPOLINE_LOW);
32}
33
34static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
35{
36 printk("Restoring NMI vector\n");
37 *((volatile unsigned short *) TRAMPOLINE_HIGH) = *high;
38 *((volatile unsigned short *) TRAMPOLINE_LOW) = *low;
39}
40
41#define inquire_remote_apic(apicid) {}
42
43#endif /* __ASM_NUMAQ_WAKECPU_H */
diff --git a/arch/x86/include/asm/olpc.h b/arch/x86/include/asm/olpc.h
new file mode 100644
index 000000000000..834a30295fab
--- /dev/null
+++ b/arch/x86/include/asm/olpc.h
@@ -0,0 +1,132 @@
1/* OLPC machine specific definitions */
2
3#ifndef _ASM_X86_OLPC_H
4#define _ASM_X86_OLPC_H
5
6#include <asm/geode.h>
7
8struct olpc_platform_t {
9 int flags;
10 uint32_t boardrev;
11 int ecver;
12};
13
14#define OLPC_F_PRESENT 0x01
15#define OLPC_F_DCON 0x02
16#define OLPC_F_VSA 0x04
17
18#ifdef CONFIG_OLPC
19
20extern struct olpc_platform_t olpc_platform_info;
21
22/*
23 * OLPC board IDs contain the major build number within the mask 0x0ff0,
24 * and the minor build number withing 0x000f. Pre-builds have a minor
25 * number less than 8, and normal builds start at 8. For example, 0x0B10
26 * is a PreB1, and 0x0C18 is a C1.
27 */
28
29static inline uint32_t olpc_board(uint8_t id)
30{
31 return (id << 4) | 0x8;
32}
33
34static inline uint32_t olpc_board_pre(uint8_t id)
35{
36 return id << 4;
37}
38
39static inline int machine_is_olpc(void)
40{
41 return (olpc_platform_info.flags & OLPC_F_PRESENT) ? 1 : 0;
42}
43
44/*
45 * The DCON is OLPC's Display Controller. It has a number of unique
46 * features that we might want to take advantage of..
47 */
48static inline int olpc_has_dcon(void)
49{
50 return (olpc_platform_info.flags & OLPC_F_DCON) ? 1 : 0;
51}
52
53/*
54 * The VSA is software from AMD that typical Geode bioses will include.
55 * It is used to emulate the PCI bus, VGA, etc. OLPC's Open Firmware does
56 * not include the VSA; instead, PCI is emulated by the kernel.
57 *
58 * The VSA is described further in arch/x86/pci/olpc.c.
59 */
60static inline int olpc_has_vsa(void)
61{
62 return (olpc_platform_info.flags & OLPC_F_VSA) ? 1 : 0;
63}
64
65/*
66 * The "Mass Production" version of OLPC's XO is identified as being model
67 * C2. During the prototype phase, the following models (in chronological
68 * order) were created: A1, B1, B2, B3, B4, C1. The A1 through B2 models
69 * were based on Geode GX CPUs, and models after that were based upon
70 * Geode LX CPUs. There were also some hand-assembled models floating
71 * around, referred to as PreB1, PreB2, etc.
72 */
73static inline int olpc_board_at_least(uint32_t rev)
74{
75 return olpc_platform_info.boardrev >= rev;
76}
77
78#else
79
80static inline int machine_is_olpc(void)
81{
82 return 0;
83}
84
85static inline int olpc_has_dcon(void)
86{
87 return 0;
88}
89
90static inline int olpc_has_vsa(void)
91{
92 return 0;
93}
94
95#endif
96
97/* EC related functions */
98
99extern int olpc_ec_cmd(unsigned char cmd, unsigned char *inbuf, size_t inlen,
100 unsigned char *outbuf, size_t outlen);
101
102extern int olpc_ec_mask_set(uint8_t bits);
103extern int olpc_ec_mask_unset(uint8_t bits);
104
105/* EC commands */
106
107#define EC_FIRMWARE_REV 0x08
108
109/* SCI source values */
110
111#define EC_SCI_SRC_EMPTY 0x00
112#define EC_SCI_SRC_GAME 0x01
113#define EC_SCI_SRC_BATTERY 0x02
114#define EC_SCI_SRC_BATSOC 0x04
115#define EC_SCI_SRC_BATERR 0x08
116#define EC_SCI_SRC_EBOOK 0x10
117#define EC_SCI_SRC_WLAN 0x20
118#define EC_SCI_SRC_ACPWR 0x40
119#define EC_SCI_SRC_ALL 0x7F
120
121/* GPIO assignments */
122
123#define OLPC_GPIO_MIC_AC geode_gpio(1)
124#define OLPC_GPIO_DCON_IRQ geode_gpio(7)
125#define OLPC_GPIO_THRM_ALRM geode_gpio(10)
126#define OLPC_GPIO_SMB_CLK geode_gpio(14)
127#define OLPC_GPIO_SMB_DATA geode_gpio(15)
128#define OLPC_GPIO_WORKAUX geode_gpio(24)
129#define OLPC_GPIO_LID geode_gpio(26)
130#define OLPC_GPIO_ECSCI geode_gpio(27)
131
132#endif /* _ASM_X86_OLPC_H */
diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h
new file mode 100644
index 000000000000..e9873a2e8695
--- /dev/null
+++ b/arch/x86/include/asm/page.h
@@ -0,0 +1,209 @@
1#ifndef _ASM_X86_PAGE_H
2#define _ASM_X86_PAGE_H
3
4#include <linux/const.h>
5
6/* PAGE_SHIFT determines the page size */
7#define PAGE_SHIFT 12
8#define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT)
9#define PAGE_MASK (~(PAGE_SIZE-1))
10
11#ifdef __KERNEL__
12
13#define __PHYSICAL_MASK ((phys_addr_t)(1ULL << __PHYSICAL_MASK_SHIFT) - 1)
14#define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1)
15
16/* Cast PAGE_MASK to a signed type so that it is sign-extended if
17 virtual addresses are 32-bits but physical addresses are larger
18 (ie, 32-bit PAE). */
19#define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK)
20
21/* PTE_PFN_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */
22#define PTE_PFN_MASK ((pteval_t)PHYSICAL_PAGE_MASK)
23
24/* PTE_FLAGS_MASK extracts the flags from a (pte|pmd|pud|pgd)val_t */
25#define PTE_FLAGS_MASK (~PTE_PFN_MASK)
26
27#define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT)
28#define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1))
29
30#define HPAGE_SHIFT PMD_SHIFT
31#define HPAGE_SIZE (_AC(1,UL) << HPAGE_SHIFT)
32#define HPAGE_MASK (~(HPAGE_SIZE - 1))
33#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
34
35#define HUGE_MAX_HSTATE 2
36
37#ifndef __ASSEMBLY__
38#include <linux/types.h>
39#endif
40
41#ifdef CONFIG_X86_64
42#include <asm/page_64.h>
43#else
44#include <asm/page_32.h>
45#endif /* CONFIG_X86_64 */
46
47#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
48
49#define VM_DATA_DEFAULT_FLAGS \
50 (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
51 VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
52
53
54#ifndef __ASSEMBLY__
55
56typedef struct { pgdval_t pgd; } pgd_t;
57typedef struct { pgprotval_t pgprot; } pgprot_t;
58
59extern int page_is_ram(unsigned long pagenr);
60extern int pagerange_is_ram(unsigned long start, unsigned long end);
61extern int devmem_is_allowed(unsigned long pagenr);
62extern void map_devmem(unsigned long pfn, unsigned long size,
63 pgprot_t vma_prot);
64extern void unmap_devmem(unsigned long pfn, unsigned long size,
65 pgprot_t vma_prot);
66
67extern unsigned long max_low_pfn_mapped;
68extern unsigned long max_pfn_mapped;
69
70struct page;
71
72static inline void clear_user_page(void *page, unsigned long vaddr,
73 struct page *pg)
74{
75 clear_page(page);
76}
77
78static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
79 struct page *topage)
80{
81 copy_page(to, from);
82}
83
84#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
85 alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
86#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
87
88static inline pgd_t native_make_pgd(pgdval_t val)
89{
90 return (pgd_t) { val };
91}
92
93static inline pgdval_t native_pgd_val(pgd_t pgd)
94{
95 return pgd.pgd;
96}
97
98#if PAGETABLE_LEVELS >= 3
99#if PAGETABLE_LEVELS == 4
100typedef struct { pudval_t pud; } pud_t;
101
102static inline pud_t native_make_pud(pmdval_t val)
103{
104 return (pud_t) { val };
105}
106
107static inline pudval_t native_pud_val(pud_t pud)
108{
109 return pud.pud;
110}
111#else /* PAGETABLE_LEVELS == 3 */
112#include <asm-generic/pgtable-nopud.h>
113
114static inline pudval_t native_pud_val(pud_t pud)
115{
116 return native_pgd_val(pud.pgd);
117}
118#endif /* PAGETABLE_LEVELS == 4 */
119
120typedef struct { pmdval_t pmd; } pmd_t;
121
122static inline pmd_t native_make_pmd(pmdval_t val)
123{
124 return (pmd_t) { val };
125}
126
127static inline pmdval_t native_pmd_val(pmd_t pmd)
128{
129 return pmd.pmd;
130}
131#else /* PAGETABLE_LEVELS == 2 */
132#include <asm-generic/pgtable-nopmd.h>
133
134static inline pmdval_t native_pmd_val(pmd_t pmd)
135{
136 return native_pgd_val(pmd.pud.pgd);
137}
138#endif /* PAGETABLE_LEVELS >= 3 */
139
140static inline pte_t native_make_pte(pteval_t val)
141{
142 return (pte_t) { .pte = val };
143}
144
145static inline pteval_t native_pte_val(pte_t pte)
146{
147 return pte.pte;
148}
149
150static inline pteval_t native_pte_flags(pte_t pte)
151{
152 return native_pte_val(pte) & PTE_FLAGS_MASK;
153}
154
155#define pgprot_val(x) ((x).pgprot)
156#define __pgprot(x) ((pgprot_t) { (x) } )
157
158#ifdef CONFIG_PARAVIRT
159#include <asm/paravirt.h>
160#else /* !CONFIG_PARAVIRT */
161
162#define pgd_val(x) native_pgd_val(x)
163#define __pgd(x) native_make_pgd(x)
164
165#ifndef __PAGETABLE_PUD_FOLDED
166#define pud_val(x) native_pud_val(x)
167#define __pud(x) native_make_pud(x)
168#endif
169
170#ifndef __PAGETABLE_PMD_FOLDED
171#define pmd_val(x) native_pmd_val(x)
172#define __pmd(x) native_make_pmd(x)
173#endif
174
175#define pte_val(x) native_pte_val(x)
176#define pte_flags(x) native_pte_flags(x)
177#define __pte(x) native_make_pte(x)
178
179#endif /* CONFIG_PARAVIRT */
180
181#define __pa(x) __phys_addr((unsigned long)(x))
182#define __pa_nodebug(x) __phys_addr_nodebug((unsigned long)(x))
183/* __pa_symbol should be used for C visible symbols.
184 This seems to be the official gcc blessed way to do such arithmetic. */
185#define __pa_symbol(x) __pa(__phys_reloc_hide((unsigned long)(x)))
186
187#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
188
189#define __boot_va(x) __va(x)
190#define __boot_pa(x) __pa(x)
191
192/*
193 * virt_to_page(kaddr) returns a valid pointer if and only if
194 * virt_addr_valid(kaddr) returns true.
195 */
196#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
197#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
198extern bool __virt_addr_valid(unsigned long kaddr);
199#define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr))
200
201#endif /* __ASSEMBLY__ */
202
203#include <asm-generic/memory_model.h>
204#include <asm-generic/page.h>
205
206#define __HAVE_ARCH_GATE_AREA 1
207
208#endif /* __KERNEL__ */
209#endif /* _ASM_X86_PAGE_H */
diff --git a/arch/x86/include/asm/page_32.h b/arch/x86/include/asm/page_32.h
new file mode 100644
index 000000000000..bcde0d7b4325
--- /dev/null
+++ b/arch/x86/include/asm/page_32.h
@@ -0,0 +1,136 @@
1#ifndef _ASM_X86_PAGE_32_H
2#define _ASM_X86_PAGE_32_H
3
4/*
5 * This handles the memory map.
6 *
7 * A __PAGE_OFFSET of 0xC0000000 means that the kernel has
8 * a virtual address space of one gigabyte, which limits the
9 * amount of physical memory you can use to about 950MB.
10 *
11 * If you want more physical memory than this then see the CONFIG_HIGHMEM4G
12 * and CONFIG_HIGHMEM64G options in the kernel configuration.
13 */
14#define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
15
16#ifdef CONFIG_4KSTACKS
17#define THREAD_ORDER 0
18#else
19#define THREAD_ORDER 1
20#endif
21#define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)
22
23#define STACKFAULT_STACK 0
24#define DOUBLEFAULT_STACK 1
25#define NMI_STACK 0
26#define DEBUG_STACK 0
27#define MCE_STACK 0
28#define N_EXCEPTION_STACKS 1
29
30#ifdef CONFIG_X86_PAE
31/* 44=32+12, the limit we can fit into an unsigned long pfn */
32#define __PHYSICAL_MASK_SHIFT 44
33#define __VIRTUAL_MASK_SHIFT 32
34#define PAGETABLE_LEVELS 3
35
36#ifndef __ASSEMBLY__
37typedef u64 pteval_t;
38typedef u64 pmdval_t;
39typedef u64 pudval_t;
40typedef u64 pgdval_t;
41typedef u64 pgprotval_t;
42
43typedef union {
44 struct {
45 unsigned long pte_low, pte_high;
46 };
47 pteval_t pte;
48} pte_t;
49#endif /* __ASSEMBLY__
50 */
51#else /* !CONFIG_X86_PAE */
52#define __PHYSICAL_MASK_SHIFT 32
53#define __VIRTUAL_MASK_SHIFT 32
54#define PAGETABLE_LEVELS 2
55
56#ifndef __ASSEMBLY__
57typedef unsigned long pteval_t;
58typedef unsigned long pmdval_t;
59typedef unsigned long pudval_t;
60typedef unsigned long pgdval_t;
61typedef unsigned long pgprotval_t;
62
63typedef union {
64 pteval_t pte;
65 pteval_t pte_low;
66} pte_t;
67
68#endif /* __ASSEMBLY__ */
69#endif /* CONFIG_X86_PAE */
70
71#ifndef __ASSEMBLY__
72typedef struct page *pgtable_t;
73#endif
74
75#ifdef CONFIG_HUGETLB_PAGE
76#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
77#endif
78
79#ifndef __ASSEMBLY__
80#define __phys_addr_nodebug(x) ((x) - PAGE_OFFSET)
81#ifdef CONFIG_DEBUG_VIRTUAL
82extern unsigned long __phys_addr(unsigned long);
83#else
84#define __phys_addr(x) __phys_addr_nodebug(x)
85#endif
86#define __phys_reloc_hide(x) RELOC_HIDE((x), 0)
87
88#ifdef CONFIG_FLATMEM
89#define pfn_valid(pfn) ((pfn) < max_mapnr)
90#endif /* CONFIG_FLATMEM */
91
92extern int nx_enabled;
93
94/*
95 * This much address space is reserved for vmalloc() and iomap()
96 * as well as fixmap mappings.
97 */
98extern unsigned int __VMALLOC_RESERVE;
99extern int sysctl_legacy_va_layout;
100
101extern void find_low_pfn_range(void);
102extern unsigned long init_memory_mapping(unsigned long start,
103 unsigned long end);
104extern void initmem_init(unsigned long, unsigned long);
105extern void free_initmem(void);
106extern void setup_bootmem_allocator(void);
107
108
109#ifdef CONFIG_X86_USE_3DNOW
110#include <asm/mmx.h>
111
112static inline void clear_page(void *page)
113{
114 mmx_clear_page(page);
115}
116
117static inline void copy_page(void *to, void *from)
118{
119 mmx_copy_page(to, from);
120}
121#else /* !CONFIG_X86_USE_3DNOW */
122#include <linux/string.h>
123
124static inline void clear_page(void *page)
125{
126 memset(page, 0, PAGE_SIZE);
127}
128
129static inline void copy_page(void *to, void *from)
130{
131 memcpy(to, from, PAGE_SIZE);
132}
133#endif /* CONFIG_X86_3DNOW */
134#endif /* !__ASSEMBLY__ */
135
136#endif /* _ASM_X86_PAGE_32_H */
diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h
new file mode 100644
index 000000000000..5ebca29f44f0
--- /dev/null
+++ b/arch/x86/include/asm/page_64.h
@@ -0,0 +1,105 @@
1#ifndef _ASM_X86_PAGE_64_H
2#define _ASM_X86_PAGE_64_H
3
4#define PAGETABLE_LEVELS 4
5
6#define THREAD_ORDER 1
7#define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)
8#define CURRENT_MASK (~(THREAD_SIZE - 1))
9
10#define EXCEPTION_STACK_ORDER 0
11#define EXCEPTION_STKSZ (PAGE_SIZE << EXCEPTION_STACK_ORDER)
12
13#define DEBUG_STACK_ORDER (EXCEPTION_STACK_ORDER + 1)
14#define DEBUG_STKSZ (PAGE_SIZE << DEBUG_STACK_ORDER)
15
16#define IRQSTACK_ORDER 2
17#define IRQSTACKSIZE (PAGE_SIZE << IRQSTACK_ORDER)
18
19#define STACKFAULT_STACK 1
20#define DOUBLEFAULT_STACK 2
21#define NMI_STACK 3
22#define DEBUG_STACK 4
23#define MCE_STACK 5
24#define N_EXCEPTION_STACKS 5 /* hw limit: 7 */
25
26#define PUD_PAGE_SIZE (_AC(1, UL) << PUD_SHIFT)
27#define PUD_PAGE_MASK (~(PUD_PAGE_SIZE-1))
28
29/*
30 * Set __PAGE_OFFSET to the most negative possible address +
31 * PGDIR_SIZE*16 (pgd slot 272). The gap is to allow a space for a
32 * hypervisor to fit. Choosing 16 slots here is arbitrary, but it's
33 * what Xen requires.
34 */
35#define __PAGE_OFFSET _AC(0xffff880000000000, UL)
36
37#define __PHYSICAL_START CONFIG_PHYSICAL_START
38#define __KERNEL_ALIGN 0x200000
39
40/*
41 * Make sure kernel is aligned to 2MB address. Catching it at compile
42 * time is better. Change your config file and compile the kernel
43 * for a 2MB aligned address (CONFIG_PHYSICAL_START)
44 */
45#if (CONFIG_PHYSICAL_START % __KERNEL_ALIGN) != 0
46#error "CONFIG_PHYSICAL_START must be a multiple of 2MB"
47#endif
48
49#define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START)
50#define __START_KERNEL_map _AC(0xffffffff80000000, UL)
51
52/* See Documentation/x86_64/mm.txt for a description of the memory map. */
53#define __PHYSICAL_MASK_SHIFT 46
54#define __VIRTUAL_MASK_SHIFT 48
55
56/*
57 * Kernel image size is limited to 512 MB (see level2_kernel_pgt in
58 * arch/x86/kernel/head_64.S), and it is mapped here:
59 */
60#define KERNEL_IMAGE_SIZE (512 * 1024 * 1024)
61#define KERNEL_IMAGE_START _AC(0xffffffff80000000, UL)
62
63#ifndef __ASSEMBLY__
64void clear_page(void *page);
65void copy_page(void *to, void *from);
66
67/* duplicated to the one in bootmem.h */
68extern unsigned long max_pfn;
69extern unsigned long phys_base;
70
71extern unsigned long __phys_addr(unsigned long);
72#define __phys_reloc_hide(x) (x)
73
74/*
75 * These are used to make use of C type-checking..
76 */
77typedef unsigned long pteval_t;
78typedef unsigned long pmdval_t;
79typedef unsigned long pudval_t;
80typedef unsigned long pgdval_t;
81typedef unsigned long pgprotval_t;
82
83typedef struct page *pgtable_t;
84
85typedef struct { pteval_t pte; } pte_t;
86
87#define vmemmap ((struct page *)VMEMMAP_START)
88
89extern unsigned long init_memory_mapping(unsigned long start,
90 unsigned long end);
91
92extern void initmem_init(unsigned long start_pfn, unsigned long end_pfn);
93extern void free_initmem(void);
94
95extern void init_extra_mapping_uc(unsigned long phys, unsigned long size);
96extern void init_extra_mapping_wb(unsigned long phys, unsigned long size);
97
98#endif /* !__ASSEMBLY__ */
99
100#ifdef CONFIG_FLATMEM
101#define pfn_valid(pfn) ((pfn) < max_pfn)
102#endif
103
104
105#endif /* _ASM_X86_PAGE_64_H */
diff --git a/arch/x86/include/asm/param.h b/arch/x86/include/asm/param.h
new file mode 100644
index 000000000000..6f0d0422f4ca
--- /dev/null
+++ b/arch/x86/include/asm/param.h
@@ -0,0 +1,22 @@
1#ifndef _ASM_X86_PARAM_H
2#define _ASM_X86_PARAM_H
3
4#ifdef __KERNEL__
5# define HZ CONFIG_HZ /* Internal kernel timer frequency */
6# define USER_HZ 100 /* some user interfaces are */
7# define CLOCKS_PER_SEC (USER_HZ) /* in "ticks" like times() */
8#endif
9
10#ifndef HZ
11#define HZ 100
12#endif
13
14#define EXEC_PAGESIZE 4096
15
16#ifndef NOGROUP
17#define NOGROUP (-1)
18#endif
19
20#define MAXHOSTNAMELEN 64 /* max length of hostname */
21
22#endif /* _ASM_X86_PARAM_H */
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
new file mode 100644
index 000000000000..ba3e2ff6aedc
--- /dev/null
+++ b/arch/x86/include/asm/paravirt.h
@@ -0,0 +1,1650 @@
1#ifndef _ASM_X86_PARAVIRT_H
2#define _ASM_X86_PARAVIRT_H
3/* Various instructions on x86 need to be replaced for
4 * para-virtualization: those hooks are defined here. */
5
6#ifdef CONFIG_PARAVIRT
7#include <asm/page.h>
8#include <asm/asm.h>
9
10/* Bitmask of what can be clobbered: usually at least eax. */
11#define CLBR_NONE 0
12#define CLBR_EAX (1 << 0)
13#define CLBR_ECX (1 << 1)
14#define CLBR_EDX (1 << 2)
15
16#ifdef CONFIG_X86_64
17#define CLBR_RSI (1 << 3)
18#define CLBR_RDI (1 << 4)
19#define CLBR_R8 (1 << 5)
20#define CLBR_R9 (1 << 6)
21#define CLBR_R10 (1 << 7)
22#define CLBR_R11 (1 << 8)
23#define CLBR_ANY ((1 << 9) - 1)
24#include <asm/desc_defs.h>
25#else
26/* CLBR_ANY should match all regs platform has. For i386, that's just it */
27#define CLBR_ANY ((1 << 3) - 1)
28#endif /* X86_64 */
29
30#ifndef __ASSEMBLY__
31#include <linux/types.h>
32#include <linux/cpumask.h>
33#include <asm/kmap_types.h>
34#include <asm/desc_defs.h>
35
36struct page;
37struct thread_struct;
38struct desc_ptr;
39struct tss_struct;
40struct mm_struct;
41struct desc_struct;
42
43/* general info */
44struct pv_info {
45 unsigned int kernel_rpl;
46 int shared_kernel_pmd;
47 int paravirt_enabled;
48 const char *name;
49};
50
51struct pv_init_ops {
52 /*
53 * Patch may replace one of the defined code sequences with
54 * arbitrary code, subject to the same register constraints.
55 * This generally means the code is not free to clobber any
56 * registers other than EAX. The patch function should return
57 * the number of bytes of code generated, as we nop pad the
58 * rest in generic code.
59 */
60 unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
61 unsigned long addr, unsigned len);
62
63 /* Basic arch-specific setup */
64 void (*arch_setup)(void);
65 char *(*memory_setup)(void);
66 void (*post_allocator_init)(void);
67
68 /* Print a banner to identify the environment */
69 void (*banner)(void);
70};
71
72
73struct pv_lazy_ops {
74 /* Set deferred update mode, used for batching operations. */
75 void (*enter)(void);
76 void (*leave)(void);
77};
78
79struct pv_time_ops {
80 void (*time_init)(void);
81
82 /* Set and set time of day */
83 unsigned long (*get_wallclock)(void);
84 int (*set_wallclock)(unsigned long);
85
86 unsigned long long (*sched_clock)(void);
87 unsigned long (*get_tsc_khz)(void);
88};
89
90struct pv_cpu_ops {
91 /* hooks for various privileged instructions */
92 unsigned long (*get_debugreg)(int regno);
93 void (*set_debugreg)(int regno, unsigned long value);
94
95 void (*clts)(void);
96
97 unsigned long (*read_cr0)(void);
98 void (*write_cr0)(unsigned long);
99
100 unsigned long (*read_cr4_safe)(void);
101 unsigned long (*read_cr4)(void);
102 void (*write_cr4)(unsigned long);
103
104#ifdef CONFIG_X86_64
105 unsigned long (*read_cr8)(void);
106 void (*write_cr8)(unsigned long);
107#endif
108
109 /* Segment descriptor handling */
110 void (*load_tr_desc)(void);
111 void (*load_gdt)(const struct desc_ptr *);
112 void (*load_idt)(const struct desc_ptr *);
113 void (*store_gdt)(struct desc_ptr *);
114 void (*store_idt)(struct desc_ptr *);
115 void (*set_ldt)(const void *desc, unsigned entries);
116 unsigned long (*store_tr)(void);
117 void (*load_tls)(struct thread_struct *t, unsigned int cpu);
118#ifdef CONFIG_X86_64
119 void (*load_gs_index)(unsigned int idx);
120#endif
121 void (*write_ldt_entry)(struct desc_struct *ldt, int entrynum,
122 const void *desc);
123 void (*write_gdt_entry)(struct desc_struct *,
124 int entrynum, const void *desc, int size);
125 void (*write_idt_entry)(gate_desc *,
126 int entrynum, const gate_desc *gate);
127 void (*alloc_ldt)(struct desc_struct *ldt, unsigned entries);
128 void (*free_ldt)(struct desc_struct *ldt, unsigned entries);
129
130 void (*load_sp0)(struct tss_struct *tss, struct thread_struct *t);
131
132 void (*set_iopl_mask)(unsigned mask);
133
134 void (*wbinvd)(void);
135 void (*io_delay)(void);
136
137 /* cpuid emulation, mostly so that caps bits can be disabled */
138 void (*cpuid)(unsigned int *eax, unsigned int *ebx,
139 unsigned int *ecx, unsigned int *edx);
140
141 /* MSR, PMC and TSR operations.
142 err = 0/-EFAULT. wrmsr returns 0/-EFAULT. */
143 u64 (*read_msr_amd)(unsigned int msr, int *err);
144 u64 (*read_msr)(unsigned int msr, int *err);
145 int (*write_msr)(unsigned int msr, unsigned low, unsigned high);
146
147 u64 (*read_tsc)(void);
148 u64 (*read_pmc)(int counter);
149 unsigned long long (*read_tscp)(unsigned int *aux);
150
151 /*
152 * Atomically enable interrupts and return to userspace. This
153 * is only ever used to return to 32-bit processes; in a
154 * 64-bit kernel, it's used for 32-on-64 compat processes, but
155 * never native 64-bit processes. (Jump, not call.)
156 */
157 void (*irq_enable_sysexit)(void);
158
159 /*
160 * Switch to usermode gs and return to 64-bit usermode using
161 * sysret. Only used in 64-bit kernels to return to 64-bit
162 * processes. Usermode register state, including %rsp, must
163 * already be restored.
164 */
165 void (*usergs_sysret64)(void);
166
167 /*
168 * Switch to usermode gs and return to 32-bit usermode using
169 * sysret. Used to return to 32-on-64 compat processes.
170 * Other usermode register state, including %esp, must already
171 * be restored.
172 */
173 void (*usergs_sysret32)(void);
174
175 /* Normal iret. Jump to this with the standard iret stack
176 frame set up. */
177 void (*iret)(void);
178
179 void (*swapgs)(void);
180
181 struct pv_lazy_ops lazy_mode;
182};
183
184struct pv_irq_ops {
185 void (*init_IRQ)(void);
186
187 /*
188 * Get/set interrupt state. save_fl and restore_fl are only
189 * expected to use X86_EFLAGS_IF; all other bits
190 * returned from save_fl are undefined, and may be ignored by
191 * restore_fl.
192 */
193 unsigned long (*save_fl)(void);
194 void (*restore_fl)(unsigned long);
195 void (*irq_disable)(void);
196 void (*irq_enable)(void);
197 void (*safe_halt)(void);
198 void (*halt)(void);
199
200#ifdef CONFIG_X86_64
201 void (*adjust_exception_frame)(void);
202#endif
203};
204
205struct pv_apic_ops {
206#ifdef CONFIG_X86_LOCAL_APIC
207 void (*setup_boot_clock)(void);
208 void (*setup_secondary_clock)(void);
209
210 void (*startup_ipi_hook)(int phys_apicid,
211 unsigned long start_eip,
212 unsigned long start_esp);
213#endif
214};
215
216struct pv_mmu_ops {
217 /*
218 * Called before/after init_mm pagetable setup. setup_start
219 * may reset %cr3, and may pre-install parts of the pagetable;
220 * pagetable setup is expected to preserve any existing
221 * mapping.
222 */
223 void (*pagetable_setup_start)(pgd_t *pgd_base);
224 void (*pagetable_setup_done)(pgd_t *pgd_base);
225
226 unsigned long (*read_cr2)(void);
227 void (*write_cr2)(unsigned long);
228
229 unsigned long (*read_cr3)(void);
230 void (*write_cr3)(unsigned long);
231
232 /*
233 * Hooks for intercepting the creation/use/destruction of an
234 * mm_struct.
235 */
236 void (*activate_mm)(struct mm_struct *prev,
237 struct mm_struct *next);
238 void (*dup_mmap)(struct mm_struct *oldmm,
239 struct mm_struct *mm);
240 void (*exit_mmap)(struct mm_struct *mm);
241
242
243 /* TLB operations */
244 void (*flush_tlb_user)(void);
245 void (*flush_tlb_kernel)(void);
246 void (*flush_tlb_single)(unsigned long addr);
247 void (*flush_tlb_others)(const cpumask_t *cpus, struct mm_struct *mm,
248 unsigned long va);
249
250 /* Hooks for allocating and freeing a pagetable top-level */
251 int (*pgd_alloc)(struct mm_struct *mm);
252 void (*pgd_free)(struct mm_struct *mm, pgd_t *pgd);
253
254 /*
255 * Hooks for allocating/releasing pagetable pages when they're
256 * attached to a pagetable
257 */
258 void (*alloc_pte)(struct mm_struct *mm, unsigned long pfn);
259 void (*alloc_pmd)(struct mm_struct *mm, unsigned long pfn);
260 void (*alloc_pmd_clone)(unsigned long pfn, unsigned long clonepfn, unsigned long start, unsigned long count);
261 void (*alloc_pud)(struct mm_struct *mm, unsigned long pfn);
262 void (*release_pte)(unsigned long pfn);
263 void (*release_pmd)(unsigned long pfn);
264 void (*release_pud)(unsigned long pfn);
265
266 /* Pagetable manipulation functions */
267 void (*set_pte)(pte_t *ptep, pte_t pteval);
268 void (*set_pte_at)(struct mm_struct *mm, unsigned long addr,
269 pte_t *ptep, pte_t pteval);
270 void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval);
271 void (*pte_update)(struct mm_struct *mm, unsigned long addr,
272 pte_t *ptep);
273 void (*pte_update_defer)(struct mm_struct *mm,
274 unsigned long addr, pte_t *ptep);
275
276 pte_t (*ptep_modify_prot_start)(struct mm_struct *mm, unsigned long addr,
277 pte_t *ptep);
278 void (*ptep_modify_prot_commit)(struct mm_struct *mm, unsigned long addr,
279 pte_t *ptep, pte_t pte);
280
281 pteval_t (*pte_val)(pte_t);
282 pteval_t (*pte_flags)(pte_t);
283 pte_t (*make_pte)(pteval_t pte);
284
285 pgdval_t (*pgd_val)(pgd_t);
286 pgd_t (*make_pgd)(pgdval_t pgd);
287
288#if PAGETABLE_LEVELS >= 3
289#ifdef CONFIG_X86_PAE
290 void (*set_pte_atomic)(pte_t *ptep, pte_t pteval);
291 void (*set_pte_present)(struct mm_struct *mm, unsigned long addr,
292 pte_t *ptep, pte_t pte);
293 void (*pte_clear)(struct mm_struct *mm, unsigned long addr,
294 pte_t *ptep);
295 void (*pmd_clear)(pmd_t *pmdp);
296
297#endif /* CONFIG_X86_PAE */
298
299 void (*set_pud)(pud_t *pudp, pud_t pudval);
300
301 pmdval_t (*pmd_val)(pmd_t);
302 pmd_t (*make_pmd)(pmdval_t pmd);
303
304#if PAGETABLE_LEVELS == 4
305 pudval_t (*pud_val)(pud_t);
306 pud_t (*make_pud)(pudval_t pud);
307
308 void (*set_pgd)(pgd_t *pudp, pgd_t pgdval);
309#endif /* PAGETABLE_LEVELS == 4 */
310#endif /* PAGETABLE_LEVELS >= 3 */
311
312#ifdef CONFIG_HIGHPTE
313 void *(*kmap_atomic_pte)(struct page *page, enum km_type type);
314#endif
315
316 struct pv_lazy_ops lazy_mode;
317
318 /* dom0 ops */
319
320 /* Sometimes the physical address is a pfn, and sometimes its
321 an mfn. We can tell which is which from the index. */
322 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
323 unsigned long phys, pgprot_t flags);
324};
325
326struct raw_spinlock;
327struct pv_lock_ops {
328 int (*spin_is_locked)(struct raw_spinlock *lock);
329 int (*spin_is_contended)(struct raw_spinlock *lock);
330 void (*spin_lock)(struct raw_spinlock *lock);
331 void (*spin_lock_flags)(struct raw_spinlock *lock, unsigned long flags);
332 int (*spin_trylock)(struct raw_spinlock *lock);
333 void (*spin_unlock)(struct raw_spinlock *lock);
334};
335
336/* This contains all the paravirt structures: we get a convenient
337 * number for each function using the offset which we use to indicate
338 * what to patch. */
339struct paravirt_patch_template {
340 struct pv_init_ops pv_init_ops;
341 struct pv_time_ops pv_time_ops;
342 struct pv_cpu_ops pv_cpu_ops;
343 struct pv_irq_ops pv_irq_ops;
344 struct pv_apic_ops pv_apic_ops;
345 struct pv_mmu_ops pv_mmu_ops;
346 struct pv_lock_ops pv_lock_ops;
347};
348
349extern struct pv_info pv_info;
350extern struct pv_init_ops pv_init_ops;
351extern struct pv_time_ops pv_time_ops;
352extern struct pv_cpu_ops pv_cpu_ops;
353extern struct pv_irq_ops pv_irq_ops;
354extern struct pv_apic_ops pv_apic_ops;
355extern struct pv_mmu_ops pv_mmu_ops;
356extern struct pv_lock_ops pv_lock_ops;
357
358#define PARAVIRT_PATCH(x) \
359 (offsetof(struct paravirt_patch_template, x) / sizeof(void *))
360
361#define paravirt_type(op) \
362 [paravirt_typenum] "i" (PARAVIRT_PATCH(op)), \
363 [paravirt_opptr] "m" (op)
364#define paravirt_clobber(clobber) \
365 [paravirt_clobber] "i" (clobber)
366
367/*
368 * Generate some code, and mark it as patchable by the
369 * apply_paravirt() alternate instruction patcher.
370 */
371#define _paravirt_alt(insn_string, type, clobber) \
372 "771:\n\t" insn_string "\n" "772:\n" \
373 ".pushsection .parainstructions,\"a\"\n" \
374 _ASM_ALIGN "\n" \
375 _ASM_PTR " 771b\n" \
376 " .byte " type "\n" \
377 " .byte 772b-771b\n" \
378 " .short " clobber "\n" \
379 ".popsection\n"
380
381/* Generate patchable code, with the default asm parameters. */
382#define paravirt_alt(insn_string) \
383 _paravirt_alt(insn_string, "%c[paravirt_typenum]", "%c[paravirt_clobber]")
384
385/* Simple instruction patching code. */
386#define DEF_NATIVE(ops, name, code) \
387 extern const char start_##ops##_##name[], end_##ops##_##name[]; \
388 asm("start_" #ops "_" #name ": " code "; end_" #ops "_" #name ":")
389
390unsigned paravirt_patch_nop(void);
391unsigned paravirt_patch_ignore(unsigned len);
392unsigned paravirt_patch_call(void *insnbuf,
393 const void *target, u16 tgt_clobbers,
394 unsigned long addr, u16 site_clobbers,
395 unsigned len);
396unsigned paravirt_patch_jmp(void *insnbuf, const void *target,
397 unsigned long addr, unsigned len);
398unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
399 unsigned long addr, unsigned len);
400
401unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
402 const char *start, const char *end);
403
404unsigned native_patch(u8 type, u16 clobbers, void *ibuf,
405 unsigned long addr, unsigned len);
406
407int paravirt_disable_iospace(void);
408
409/*
410 * This generates an indirect call based on the operation type number.
411 * The type number, computed in PARAVIRT_PATCH, is derived from the
412 * offset into the paravirt_patch_template structure, and can therefore be
413 * freely converted back into a structure offset.
414 */
415#define PARAVIRT_CALL "call *%[paravirt_opptr];"
416
417/*
418 * These macros are intended to wrap calls through one of the paravirt
419 * ops structs, so that they can be later identified and patched at
420 * runtime.
421 *
422 * Normally, a call to a pv_op function is a simple indirect call:
423 * (pv_op_struct.operations)(args...).
424 *
425 * Unfortunately, this is a relatively slow operation for modern CPUs,
426 * because it cannot necessarily determine what the destination
427 * address is. In this case, the address is a runtime constant, so at
428 * the very least we can patch the call to e a simple direct call, or
429 * ideally, patch an inline implementation into the callsite. (Direct
430 * calls are essentially free, because the call and return addresses
431 * are completely predictable.)
432 *
433 * For i386, these macros rely on the standard gcc "regparm(3)" calling
434 * convention, in which the first three arguments are placed in %eax,
435 * %edx, %ecx (in that order), and the remaining arguments are placed
436 * on the stack. All caller-save registers (eax,edx,ecx) are expected
437 * to be modified (either clobbered or used for return values).
438 * X86_64, on the other hand, already specifies a register-based calling
439 * conventions, returning at %rax, with parameteres going on %rdi, %rsi,
440 * %rdx, and %rcx. Note that for this reason, x86_64 does not need any
441 * special handling for dealing with 4 arguments, unlike i386.
442 * However, x86_64 also have to clobber all caller saved registers, which
443 * unfortunately, are quite a bit (r8 - r11)
444 *
445 * The call instruction itself is marked by placing its start address
446 * and size into the .parainstructions section, so that
447 * apply_paravirt() in arch/i386/kernel/alternative.c can do the
448 * appropriate patching under the control of the backend pv_init_ops
449 * implementation.
450 *
451 * Unfortunately there's no way to get gcc to generate the args setup
452 * for the call, and then allow the call itself to be generated by an
453 * inline asm. Because of this, we must do the complete arg setup and
454 * return value handling from within these macros. This is fairly
455 * cumbersome.
456 *
457 * There are 5 sets of PVOP_* macros for dealing with 0-4 arguments.
458 * It could be extended to more arguments, but there would be little
459 * to be gained from that. For each number of arguments, there are
460 * the two VCALL and CALL variants for void and non-void functions.
461 *
462 * When there is a return value, the invoker of the macro must specify
463 * the return type. The macro then uses sizeof() on that type to
464 * determine whether its a 32 or 64 bit value, and places the return
465 * in the right register(s) (just %eax for 32-bit, and %edx:%eax for
466 * 64-bit). For x86_64 machines, it just returns at %rax regardless of
467 * the return value size.
468 *
469 * 64-bit arguments are passed as a pair of adjacent 32-bit arguments
470 * i386 also passes 64-bit arguments as a pair of adjacent 32-bit arguments
471 * in low,high order
472 *
473 * Small structures are passed and returned in registers. The macro
474 * calling convention can't directly deal with this, so the wrapper
475 * functions must do this.
476 *
477 * These PVOP_* macros are only defined within this header. This
478 * means that all uses must be wrapped in inline functions. This also
479 * makes sure the incoming and outgoing types are always correct.
480 */
481#ifdef CONFIG_X86_32
482#define PVOP_VCALL_ARGS unsigned long __eax, __edx, __ecx
483#define PVOP_CALL_ARGS PVOP_VCALL_ARGS
484#define PVOP_VCALL_CLOBBERS "=a" (__eax), "=d" (__edx), \
485 "=c" (__ecx)
486#define PVOP_CALL_CLOBBERS PVOP_VCALL_CLOBBERS
487#define EXTRA_CLOBBERS
488#define VEXTRA_CLOBBERS
489#else
490#define PVOP_VCALL_ARGS unsigned long __edi, __esi, __edx, __ecx
491#define PVOP_CALL_ARGS PVOP_VCALL_ARGS, __eax
492#define PVOP_VCALL_CLOBBERS "=D" (__edi), \
493 "=S" (__esi), "=d" (__edx), \
494 "=c" (__ecx)
495
496#define PVOP_CALL_CLOBBERS PVOP_VCALL_CLOBBERS, "=a" (__eax)
497
498#define EXTRA_CLOBBERS , "r8", "r9", "r10", "r11"
499#define VEXTRA_CLOBBERS , "rax", "r8", "r9", "r10", "r11"
500#endif
501
502#ifdef CONFIG_PARAVIRT_DEBUG
503#define PVOP_TEST_NULL(op) BUG_ON(op == NULL)
504#else
505#define PVOP_TEST_NULL(op) ((void)op)
506#endif
507
508#define __PVOP_CALL(rettype, op, pre, post, ...) \
509 ({ \
510 rettype __ret; \
511 PVOP_CALL_ARGS; \
512 PVOP_TEST_NULL(op); \
513 /* This is 32-bit specific, but is okay in 64-bit */ \
514 /* since this condition will never hold */ \
515 if (sizeof(rettype) > sizeof(unsigned long)) { \
516 asm volatile(pre \
517 paravirt_alt(PARAVIRT_CALL) \
518 post \
519 : PVOP_CALL_CLOBBERS \
520 : paravirt_type(op), \
521 paravirt_clobber(CLBR_ANY), \
522 ##__VA_ARGS__ \
523 : "memory", "cc" EXTRA_CLOBBERS); \
524 __ret = (rettype)((((u64)__edx) << 32) | __eax); \
525 } else { \
526 asm volatile(pre \
527 paravirt_alt(PARAVIRT_CALL) \
528 post \
529 : PVOP_CALL_CLOBBERS \
530 : paravirt_type(op), \
531 paravirt_clobber(CLBR_ANY), \
532 ##__VA_ARGS__ \
533 : "memory", "cc" EXTRA_CLOBBERS); \
534 __ret = (rettype)__eax; \
535 } \
536 __ret; \
537 })
538#define __PVOP_VCALL(op, pre, post, ...) \
539 ({ \
540 PVOP_VCALL_ARGS; \
541 PVOP_TEST_NULL(op); \
542 asm volatile(pre \
543 paravirt_alt(PARAVIRT_CALL) \
544 post \
545 : PVOP_VCALL_CLOBBERS \
546 : paravirt_type(op), \
547 paravirt_clobber(CLBR_ANY), \
548 ##__VA_ARGS__ \
549 : "memory", "cc" VEXTRA_CLOBBERS); \
550 })
551
552#define PVOP_CALL0(rettype, op) \
553 __PVOP_CALL(rettype, op, "", "")
554#define PVOP_VCALL0(op) \
555 __PVOP_VCALL(op, "", "")
556
557#define PVOP_CALL1(rettype, op, arg1) \
558 __PVOP_CALL(rettype, op, "", "", "0" ((unsigned long)(arg1)))
559#define PVOP_VCALL1(op, arg1) \
560 __PVOP_VCALL(op, "", "", "0" ((unsigned long)(arg1)))
561
562#define PVOP_CALL2(rettype, op, arg1, arg2) \
563 __PVOP_CALL(rettype, op, "", "", "0" ((unsigned long)(arg1)), \
564 "1" ((unsigned long)(arg2)))
565#define PVOP_VCALL2(op, arg1, arg2) \
566 __PVOP_VCALL(op, "", "", "0" ((unsigned long)(arg1)), \
567 "1" ((unsigned long)(arg2)))
568
569#define PVOP_CALL3(rettype, op, arg1, arg2, arg3) \
570 __PVOP_CALL(rettype, op, "", "", "0" ((unsigned long)(arg1)), \
571 "1"((unsigned long)(arg2)), "2"((unsigned long)(arg3)))
572#define PVOP_VCALL3(op, arg1, arg2, arg3) \
573 __PVOP_VCALL(op, "", "", "0" ((unsigned long)(arg1)), \
574 "1"((unsigned long)(arg2)), "2"((unsigned long)(arg3)))
575
576/* This is the only difference in x86_64. We can make it much simpler */
577#ifdef CONFIG_X86_32
578#define PVOP_CALL4(rettype, op, arg1, arg2, arg3, arg4) \
579 __PVOP_CALL(rettype, op, \
580 "push %[_arg4];", "lea 4(%%esp),%%esp;", \
581 "0" ((u32)(arg1)), "1" ((u32)(arg2)), \
582 "2" ((u32)(arg3)), [_arg4] "mr" ((u32)(arg4)))
583#define PVOP_VCALL4(op, arg1, arg2, arg3, arg4) \
584 __PVOP_VCALL(op, \
585 "push %[_arg4];", "lea 4(%%esp),%%esp;", \
586 "0" ((u32)(arg1)), "1" ((u32)(arg2)), \
587 "2" ((u32)(arg3)), [_arg4] "mr" ((u32)(arg4)))
588#else
589#define PVOP_CALL4(rettype, op, arg1, arg2, arg3, arg4) \
590 __PVOP_CALL(rettype, op, "", "", "0" ((unsigned long)(arg1)), \
591 "1"((unsigned long)(arg2)), "2"((unsigned long)(arg3)), \
592 "3"((unsigned long)(arg4)))
593#define PVOP_VCALL4(op, arg1, arg2, arg3, arg4) \
594 __PVOP_VCALL(op, "", "", "0" ((unsigned long)(arg1)), \
595 "1"((unsigned long)(arg2)), "2"((unsigned long)(arg3)), \
596 "3"((unsigned long)(arg4)))
597#endif
598
599static inline int paravirt_enabled(void)
600{
601 return pv_info.paravirt_enabled;
602}
603
604static inline void load_sp0(struct tss_struct *tss,
605 struct thread_struct *thread)
606{
607 PVOP_VCALL2(pv_cpu_ops.load_sp0, tss, thread);
608}
609
610#define ARCH_SETUP pv_init_ops.arch_setup();
611static inline unsigned long get_wallclock(void)
612{
613 return PVOP_CALL0(unsigned long, pv_time_ops.get_wallclock);
614}
615
616static inline int set_wallclock(unsigned long nowtime)
617{
618 return PVOP_CALL1(int, pv_time_ops.set_wallclock, nowtime);
619}
620
621static inline void (*choose_time_init(void))(void)
622{
623 return pv_time_ops.time_init;
624}
625
626/* The paravirtualized CPUID instruction. */
627static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
628 unsigned int *ecx, unsigned int *edx)
629{
630 PVOP_VCALL4(pv_cpu_ops.cpuid, eax, ebx, ecx, edx);
631}
632
633/*
634 * These special macros can be used to get or set a debugging register
635 */
636static inline unsigned long paravirt_get_debugreg(int reg)
637{
638 return PVOP_CALL1(unsigned long, pv_cpu_ops.get_debugreg, reg);
639}
640#define get_debugreg(var, reg) var = paravirt_get_debugreg(reg)
641static inline void set_debugreg(unsigned long val, int reg)
642{
643 PVOP_VCALL2(pv_cpu_ops.set_debugreg, reg, val);
644}
645
646static inline void clts(void)
647{
648 PVOP_VCALL0(pv_cpu_ops.clts);
649}
650
651static inline unsigned long read_cr0(void)
652{
653 return PVOP_CALL0(unsigned long, pv_cpu_ops.read_cr0);
654}
655
656static inline void write_cr0(unsigned long x)
657{
658 PVOP_VCALL1(pv_cpu_ops.write_cr0, x);
659}
660
661static inline unsigned long read_cr2(void)
662{
663 return PVOP_CALL0(unsigned long, pv_mmu_ops.read_cr2);
664}
665
666static inline void write_cr2(unsigned long x)
667{
668 PVOP_VCALL1(pv_mmu_ops.write_cr2, x);
669}
670
671static inline unsigned long read_cr3(void)
672{
673 return PVOP_CALL0(unsigned long, pv_mmu_ops.read_cr3);
674}
675
676static inline void write_cr3(unsigned long x)
677{
678 PVOP_VCALL1(pv_mmu_ops.write_cr3, x);
679}
680
681static inline unsigned long read_cr4(void)
682{
683 return PVOP_CALL0(unsigned long, pv_cpu_ops.read_cr4);
684}
685static inline unsigned long read_cr4_safe(void)
686{
687 return PVOP_CALL0(unsigned long, pv_cpu_ops.read_cr4_safe);
688}
689
690static inline void write_cr4(unsigned long x)
691{
692 PVOP_VCALL1(pv_cpu_ops.write_cr4, x);
693}
694
695#ifdef CONFIG_X86_64
696static inline unsigned long read_cr8(void)
697{
698 return PVOP_CALL0(unsigned long, pv_cpu_ops.read_cr8);
699}
700
701static inline void write_cr8(unsigned long x)
702{
703 PVOP_VCALL1(pv_cpu_ops.write_cr8, x);
704}
705#endif
706
707static inline void raw_safe_halt(void)
708{
709 PVOP_VCALL0(pv_irq_ops.safe_halt);
710}
711
712static inline void halt(void)
713{
714 PVOP_VCALL0(pv_irq_ops.safe_halt);
715}
716
717static inline void wbinvd(void)
718{
719 PVOP_VCALL0(pv_cpu_ops.wbinvd);
720}
721
722#define get_kernel_rpl() (pv_info.kernel_rpl)
723
724static inline u64 paravirt_read_msr(unsigned msr, int *err)
725{
726 return PVOP_CALL2(u64, pv_cpu_ops.read_msr, msr, err);
727}
728static inline u64 paravirt_read_msr_amd(unsigned msr, int *err)
729{
730 return PVOP_CALL2(u64, pv_cpu_ops.read_msr_amd, msr, err);
731}
732static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)
733{
734 return PVOP_CALL3(int, pv_cpu_ops.write_msr, msr, low, high);
735}
736
737/* These should all do BUG_ON(_err), but our headers are too tangled. */
738#define rdmsr(msr, val1, val2) \
739do { \
740 int _err; \
741 u64 _l = paravirt_read_msr(msr, &_err); \
742 val1 = (u32)_l; \
743 val2 = _l >> 32; \
744} while (0)
745
746#define wrmsr(msr, val1, val2) \
747do { \
748 paravirt_write_msr(msr, val1, val2); \
749} while (0)
750
751#define rdmsrl(msr, val) \
752do { \
753 int _err; \
754 val = paravirt_read_msr(msr, &_err); \
755} while (0)
756
757#define wrmsrl(msr, val) wrmsr(msr, (u32)((u64)(val)), ((u64)(val))>>32)
758#define wrmsr_safe(msr, a, b) paravirt_write_msr(msr, a, b)
759
760/* rdmsr with exception handling */
761#define rdmsr_safe(msr, a, b) \
762({ \
763 int _err; \
764 u64 _l = paravirt_read_msr(msr, &_err); \
765 (*a) = (u32)_l; \
766 (*b) = _l >> 32; \
767 _err; \
768})
769
770static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
771{
772 int err;
773
774 *p = paravirt_read_msr(msr, &err);
775 return err;
776}
777static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
778{
779 int err;
780
781 *p = paravirt_read_msr_amd(msr, &err);
782 return err;
783}
784
785static inline u64 paravirt_read_tsc(void)
786{
787 return PVOP_CALL0(u64, pv_cpu_ops.read_tsc);
788}
789
790#define rdtscl(low) \
791do { \
792 u64 _l = paravirt_read_tsc(); \
793 low = (int)_l; \
794} while (0)
795
796#define rdtscll(val) (val = paravirt_read_tsc())
797
798static inline unsigned long long paravirt_sched_clock(void)
799{
800 return PVOP_CALL0(unsigned long long, pv_time_ops.sched_clock);
801}
802#define calibrate_tsc() (pv_time_ops.get_tsc_khz())
803
804static inline unsigned long long paravirt_read_pmc(int counter)
805{
806 return PVOP_CALL1(u64, pv_cpu_ops.read_pmc, counter);
807}
808
809#define rdpmc(counter, low, high) \
810do { \
811 u64 _l = paravirt_read_pmc(counter); \
812 low = (u32)_l; \
813 high = _l >> 32; \
814} while (0)
815
816static inline unsigned long long paravirt_rdtscp(unsigned int *aux)
817{
818 return PVOP_CALL1(u64, pv_cpu_ops.read_tscp, aux);
819}
820
821#define rdtscp(low, high, aux) \
822do { \
823 int __aux; \
824 unsigned long __val = paravirt_rdtscp(&__aux); \
825 (low) = (u32)__val; \
826 (high) = (u32)(__val >> 32); \
827 (aux) = __aux; \
828} while (0)
829
830#define rdtscpll(val, aux) \
831do { \
832 unsigned long __aux; \
833 val = paravirt_rdtscp(&__aux); \
834 (aux) = __aux; \
835} while (0)
836
837static inline void paravirt_alloc_ldt(struct desc_struct *ldt, unsigned entries)
838{
839 PVOP_VCALL2(pv_cpu_ops.alloc_ldt, ldt, entries);
840}
841
842static inline void paravirt_free_ldt(struct desc_struct *ldt, unsigned entries)
843{
844 PVOP_VCALL2(pv_cpu_ops.free_ldt, ldt, entries);
845}
846
847static inline void load_TR_desc(void)
848{
849 PVOP_VCALL0(pv_cpu_ops.load_tr_desc);
850}
851static inline void load_gdt(const struct desc_ptr *dtr)
852{
853 PVOP_VCALL1(pv_cpu_ops.load_gdt, dtr);
854}
855static inline void load_idt(const struct desc_ptr *dtr)
856{
857 PVOP_VCALL1(pv_cpu_ops.load_idt, dtr);
858}
859static inline void set_ldt(const void *addr, unsigned entries)
860{
861 PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
862}
863static inline void store_gdt(struct desc_ptr *dtr)
864{
865 PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
866}
867static inline void store_idt(struct desc_ptr *dtr)
868{
869 PVOP_VCALL1(pv_cpu_ops.store_idt, dtr);
870}
871static inline unsigned long paravirt_store_tr(void)
872{
873 return PVOP_CALL0(unsigned long, pv_cpu_ops.store_tr);
874}
875#define store_tr(tr) ((tr) = paravirt_store_tr())
876static inline void load_TLS(struct thread_struct *t, unsigned cpu)
877{
878 PVOP_VCALL2(pv_cpu_ops.load_tls, t, cpu);
879}
880
881#ifdef CONFIG_X86_64
882static inline void load_gs_index(unsigned int gs)
883{
884 PVOP_VCALL1(pv_cpu_ops.load_gs_index, gs);
885}
886#endif
887
888static inline void write_ldt_entry(struct desc_struct *dt, int entry,
889 const void *desc)
890{
891 PVOP_VCALL3(pv_cpu_ops.write_ldt_entry, dt, entry, desc);
892}
893
894static inline void write_gdt_entry(struct desc_struct *dt, int entry,
895 void *desc, int type)
896{
897 PVOP_VCALL4(pv_cpu_ops.write_gdt_entry, dt, entry, desc, type);
898}
899
900static inline void write_idt_entry(gate_desc *dt, int entry, const gate_desc *g)
901{
902 PVOP_VCALL3(pv_cpu_ops.write_idt_entry, dt, entry, g);
903}
904static inline void set_iopl_mask(unsigned mask)
905{
906 PVOP_VCALL1(pv_cpu_ops.set_iopl_mask, mask);
907}
908
909/* The paravirtualized I/O functions */
910static inline void slow_down_io(void)
911{
912 pv_cpu_ops.io_delay();
913#ifdef REALLY_SLOW_IO
914 pv_cpu_ops.io_delay();
915 pv_cpu_ops.io_delay();
916 pv_cpu_ops.io_delay();
917#endif
918}
919
920#ifdef CONFIG_X86_LOCAL_APIC
921static inline void setup_boot_clock(void)
922{
923 PVOP_VCALL0(pv_apic_ops.setup_boot_clock);
924}
925
926static inline void setup_secondary_clock(void)
927{
928 PVOP_VCALL0(pv_apic_ops.setup_secondary_clock);
929}
930#endif
931
932static inline void paravirt_post_allocator_init(void)
933{
934 if (pv_init_ops.post_allocator_init)
935 (*pv_init_ops.post_allocator_init)();
936}
937
938static inline void paravirt_pagetable_setup_start(pgd_t *base)
939{
940 (*pv_mmu_ops.pagetable_setup_start)(base);
941}
942
943static inline void paravirt_pagetable_setup_done(pgd_t *base)
944{
945 (*pv_mmu_ops.pagetable_setup_done)(base);
946}
947
948#ifdef CONFIG_SMP
949static inline void startup_ipi_hook(int phys_apicid, unsigned long start_eip,
950 unsigned long start_esp)
951{
952 PVOP_VCALL3(pv_apic_ops.startup_ipi_hook,
953 phys_apicid, start_eip, start_esp);
954}
955#endif
956
957static inline void paravirt_activate_mm(struct mm_struct *prev,
958 struct mm_struct *next)
959{
960 PVOP_VCALL2(pv_mmu_ops.activate_mm, prev, next);
961}
962
963static inline void arch_dup_mmap(struct mm_struct *oldmm,
964 struct mm_struct *mm)
965{
966 PVOP_VCALL2(pv_mmu_ops.dup_mmap, oldmm, mm);
967}
968
969static inline void arch_exit_mmap(struct mm_struct *mm)
970{
971 PVOP_VCALL1(pv_mmu_ops.exit_mmap, mm);
972}
973
974static inline void __flush_tlb(void)
975{
976 PVOP_VCALL0(pv_mmu_ops.flush_tlb_user);
977}
978static inline void __flush_tlb_global(void)
979{
980 PVOP_VCALL0(pv_mmu_ops.flush_tlb_kernel);
981}
982static inline void __flush_tlb_single(unsigned long addr)
983{
984 PVOP_VCALL1(pv_mmu_ops.flush_tlb_single, addr);
985}
986
987static inline void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
988 unsigned long va)
989{
990 PVOP_VCALL3(pv_mmu_ops.flush_tlb_others, &cpumask, mm, va);
991}
992
993static inline int paravirt_pgd_alloc(struct mm_struct *mm)
994{
995 return PVOP_CALL1(int, pv_mmu_ops.pgd_alloc, mm);
996}
997
998static inline void paravirt_pgd_free(struct mm_struct *mm, pgd_t *pgd)
999{
1000 PVOP_VCALL2(pv_mmu_ops.pgd_free, mm, pgd);
1001}
1002
1003static inline void paravirt_alloc_pte(struct mm_struct *mm, unsigned long pfn)
1004{
1005 PVOP_VCALL2(pv_mmu_ops.alloc_pte, mm, pfn);
1006}
1007static inline void paravirt_release_pte(unsigned long pfn)
1008{
1009 PVOP_VCALL1(pv_mmu_ops.release_pte, pfn);
1010}
1011
1012static inline void paravirt_alloc_pmd(struct mm_struct *mm, unsigned long pfn)
1013{
1014 PVOP_VCALL2(pv_mmu_ops.alloc_pmd, mm, pfn);
1015}
1016
1017static inline void paravirt_alloc_pmd_clone(unsigned long pfn, unsigned long clonepfn,
1018 unsigned long start, unsigned long count)
1019{
1020 PVOP_VCALL4(pv_mmu_ops.alloc_pmd_clone, pfn, clonepfn, start, count);
1021}
1022static inline void paravirt_release_pmd(unsigned long pfn)
1023{
1024 PVOP_VCALL1(pv_mmu_ops.release_pmd, pfn);
1025}
1026
1027static inline void paravirt_alloc_pud(struct mm_struct *mm, unsigned long pfn)
1028{
1029 PVOP_VCALL2(pv_mmu_ops.alloc_pud, mm, pfn);
1030}
1031static inline void paravirt_release_pud(unsigned long pfn)
1032{
1033 PVOP_VCALL1(pv_mmu_ops.release_pud, pfn);
1034}
1035
1036#ifdef CONFIG_HIGHPTE
1037static inline void *kmap_atomic_pte(struct page *page, enum km_type type)
1038{
1039 unsigned long ret;
1040 ret = PVOP_CALL2(unsigned long, pv_mmu_ops.kmap_atomic_pte, page, type);
1041 return (void *)ret;
1042}
1043#endif
1044
1045static inline void pte_update(struct mm_struct *mm, unsigned long addr,
1046 pte_t *ptep)
1047{
1048 PVOP_VCALL3(pv_mmu_ops.pte_update, mm, addr, ptep);
1049}
1050
1051static inline void pte_update_defer(struct mm_struct *mm, unsigned long addr,
1052 pte_t *ptep)
1053{
1054 PVOP_VCALL3(pv_mmu_ops.pte_update_defer, mm, addr, ptep);
1055}
1056
1057static inline pte_t __pte(pteval_t val)
1058{
1059 pteval_t ret;
1060
1061 if (sizeof(pteval_t) > sizeof(long))
1062 ret = PVOP_CALL2(pteval_t,
1063 pv_mmu_ops.make_pte,
1064 val, (u64)val >> 32);
1065 else
1066 ret = PVOP_CALL1(pteval_t,
1067 pv_mmu_ops.make_pte,
1068 val);
1069
1070 return (pte_t) { .pte = ret };
1071}
1072
1073static inline pteval_t pte_val(pte_t pte)
1074{
1075 pteval_t ret;
1076
1077 if (sizeof(pteval_t) > sizeof(long))
1078 ret = PVOP_CALL2(pteval_t, pv_mmu_ops.pte_val,
1079 pte.pte, (u64)pte.pte >> 32);
1080 else
1081 ret = PVOP_CALL1(pteval_t, pv_mmu_ops.pte_val,
1082 pte.pte);
1083
1084 return ret;
1085}
1086
1087static inline pteval_t pte_flags(pte_t pte)
1088{
1089 pteval_t ret;
1090
1091 if (sizeof(pteval_t) > sizeof(long))
1092 ret = PVOP_CALL2(pteval_t, pv_mmu_ops.pte_flags,
1093 pte.pte, (u64)pte.pte >> 32);
1094 else
1095 ret = PVOP_CALL1(pteval_t, pv_mmu_ops.pte_flags,
1096 pte.pte);
1097
1098#ifdef CONFIG_PARAVIRT_DEBUG
1099 BUG_ON(ret & PTE_PFN_MASK);
1100#endif
1101 return ret;
1102}
1103
1104static inline pgd_t __pgd(pgdval_t val)
1105{
1106 pgdval_t ret;
1107
1108 if (sizeof(pgdval_t) > sizeof(long))
1109 ret = PVOP_CALL2(pgdval_t, pv_mmu_ops.make_pgd,
1110 val, (u64)val >> 32);
1111 else
1112 ret = PVOP_CALL1(pgdval_t, pv_mmu_ops.make_pgd,
1113 val);
1114
1115 return (pgd_t) { ret };
1116}
1117
1118static inline pgdval_t pgd_val(pgd_t pgd)
1119{
1120 pgdval_t ret;
1121
1122 if (sizeof(pgdval_t) > sizeof(long))
1123 ret = PVOP_CALL2(pgdval_t, pv_mmu_ops.pgd_val,
1124 pgd.pgd, (u64)pgd.pgd >> 32);
1125 else
1126 ret = PVOP_CALL1(pgdval_t, pv_mmu_ops.pgd_val,
1127 pgd.pgd);
1128
1129 return ret;
1130}
1131
1132#define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION
1133static inline pte_t ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr,
1134 pte_t *ptep)
1135{
1136 pteval_t ret;
1137
1138 ret = PVOP_CALL3(pteval_t, pv_mmu_ops.ptep_modify_prot_start,
1139 mm, addr, ptep);
1140
1141 return (pte_t) { .pte = ret };
1142}
1143
1144static inline void ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
1145 pte_t *ptep, pte_t pte)
1146{
1147 if (sizeof(pteval_t) > sizeof(long))
1148 /* 5 arg words */
1149 pv_mmu_ops.ptep_modify_prot_commit(mm, addr, ptep, pte);
1150 else
1151 PVOP_VCALL4(pv_mmu_ops.ptep_modify_prot_commit,
1152 mm, addr, ptep, pte.pte);
1153}
1154
1155static inline void set_pte(pte_t *ptep, pte_t pte)
1156{
1157 if (sizeof(pteval_t) > sizeof(long))
1158 PVOP_VCALL3(pv_mmu_ops.set_pte, ptep,
1159 pte.pte, (u64)pte.pte >> 32);
1160 else
1161 PVOP_VCALL2(pv_mmu_ops.set_pte, ptep,
1162 pte.pte);
1163}
1164
1165static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
1166 pte_t *ptep, pte_t pte)
1167{
1168 if (sizeof(pteval_t) > sizeof(long))
1169 /* 5 arg words */
1170 pv_mmu_ops.set_pte_at(mm, addr, ptep, pte);
1171 else
1172 PVOP_VCALL4(pv_mmu_ops.set_pte_at, mm, addr, ptep, pte.pte);
1173}
1174
1175static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
1176{
1177 pmdval_t val = native_pmd_val(pmd);
1178
1179 if (sizeof(pmdval_t) > sizeof(long))
1180 PVOP_VCALL3(pv_mmu_ops.set_pmd, pmdp, val, (u64)val >> 32);
1181 else
1182 PVOP_VCALL2(pv_mmu_ops.set_pmd, pmdp, val);
1183}
1184
1185#if PAGETABLE_LEVELS >= 3
1186static inline pmd_t __pmd(pmdval_t val)
1187{
1188 pmdval_t ret;
1189
1190 if (sizeof(pmdval_t) > sizeof(long))
1191 ret = PVOP_CALL2(pmdval_t, pv_mmu_ops.make_pmd,
1192 val, (u64)val >> 32);
1193 else
1194 ret = PVOP_CALL1(pmdval_t, pv_mmu_ops.make_pmd,
1195 val);
1196
1197 return (pmd_t) { ret };
1198}
1199
1200static inline pmdval_t pmd_val(pmd_t pmd)
1201{
1202 pmdval_t ret;
1203
1204 if (sizeof(pmdval_t) > sizeof(long))
1205 ret = PVOP_CALL2(pmdval_t, pv_mmu_ops.pmd_val,
1206 pmd.pmd, (u64)pmd.pmd >> 32);
1207 else
1208 ret = PVOP_CALL1(pmdval_t, pv_mmu_ops.pmd_val,
1209 pmd.pmd);
1210
1211 return ret;
1212}
1213
1214static inline void set_pud(pud_t *pudp, pud_t pud)
1215{
1216 pudval_t val = native_pud_val(pud);
1217
1218 if (sizeof(pudval_t) > sizeof(long))
1219 PVOP_VCALL3(pv_mmu_ops.set_pud, pudp,
1220 val, (u64)val >> 32);
1221 else
1222 PVOP_VCALL2(pv_mmu_ops.set_pud, pudp,
1223 val);
1224}
1225#if PAGETABLE_LEVELS == 4
1226static inline pud_t __pud(pudval_t val)
1227{
1228 pudval_t ret;
1229
1230 if (sizeof(pudval_t) > sizeof(long))
1231 ret = PVOP_CALL2(pudval_t, pv_mmu_ops.make_pud,
1232 val, (u64)val >> 32);
1233 else
1234 ret = PVOP_CALL1(pudval_t, pv_mmu_ops.make_pud,
1235 val);
1236
1237 return (pud_t) { ret };
1238}
1239
1240static inline pudval_t pud_val(pud_t pud)
1241{
1242 pudval_t ret;
1243
1244 if (sizeof(pudval_t) > sizeof(long))
1245 ret = PVOP_CALL2(pudval_t, pv_mmu_ops.pud_val,
1246 pud.pud, (u64)pud.pud >> 32);
1247 else
1248 ret = PVOP_CALL1(pudval_t, pv_mmu_ops.pud_val,
1249 pud.pud);
1250
1251 return ret;
1252}
1253
1254static inline void set_pgd(pgd_t *pgdp, pgd_t pgd)
1255{
1256 pgdval_t val = native_pgd_val(pgd);
1257
1258 if (sizeof(pgdval_t) > sizeof(long))
1259 PVOP_VCALL3(pv_mmu_ops.set_pgd, pgdp,
1260 val, (u64)val >> 32);
1261 else
1262 PVOP_VCALL2(pv_mmu_ops.set_pgd, pgdp,
1263 val);
1264}
1265
1266static inline void pgd_clear(pgd_t *pgdp)
1267{
1268 set_pgd(pgdp, __pgd(0));
1269}
1270
1271static inline void pud_clear(pud_t *pudp)
1272{
1273 set_pud(pudp, __pud(0));
1274}
1275
1276#endif /* PAGETABLE_LEVELS == 4 */
1277
1278#endif /* PAGETABLE_LEVELS >= 3 */
1279
1280#ifdef CONFIG_X86_PAE
1281/* Special-case pte-setting operations for PAE, which can't update a
1282 64-bit pte atomically */
1283static inline void set_pte_atomic(pte_t *ptep, pte_t pte)
1284{
1285 PVOP_VCALL3(pv_mmu_ops.set_pte_atomic, ptep,
1286 pte.pte, pte.pte >> 32);
1287}
1288
1289static inline void set_pte_present(struct mm_struct *mm, unsigned long addr,
1290 pte_t *ptep, pte_t pte)
1291{
1292 /* 5 arg words */
1293 pv_mmu_ops.set_pte_present(mm, addr, ptep, pte);
1294}
1295
1296static inline void pte_clear(struct mm_struct *mm, unsigned long addr,
1297 pte_t *ptep)
1298{
1299 PVOP_VCALL3(pv_mmu_ops.pte_clear, mm, addr, ptep);
1300}
1301
1302static inline void pmd_clear(pmd_t *pmdp)
1303{
1304 PVOP_VCALL1(pv_mmu_ops.pmd_clear, pmdp);
1305}
1306#else /* !CONFIG_X86_PAE */
1307static inline void set_pte_atomic(pte_t *ptep, pte_t pte)
1308{
1309 set_pte(ptep, pte);
1310}
1311
1312static inline void set_pte_present(struct mm_struct *mm, unsigned long addr,
1313 pte_t *ptep, pte_t pte)
1314{
1315 set_pte(ptep, pte);
1316}
1317
1318static inline void pte_clear(struct mm_struct *mm, unsigned long addr,
1319 pte_t *ptep)
1320{
1321 set_pte_at(mm, addr, ptep, __pte(0));
1322}
1323
1324static inline void pmd_clear(pmd_t *pmdp)
1325{
1326 set_pmd(pmdp, __pmd(0));
1327}
1328#endif /* CONFIG_X86_PAE */
1329
1330/* Lazy mode for batching updates / context switch */
1331enum paravirt_lazy_mode {
1332 PARAVIRT_LAZY_NONE,
1333 PARAVIRT_LAZY_MMU,
1334 PARAVIRT_LAZY_CPU,
1335};
1336
1337enum paravirt_lazy_mode paravirt_get_lazy_mode(void);
1338void paravirt_enter_lazy_cpu(void);
1339void paravirt_leave_lazy_cpu(void);
1340void paravirt_enter_lazy_mmu(void);
1341void paravirt_leave_lazy_mmu(void);
1342void paravirt_leave_lazy(enum paravirt_lazy_mode mode);
1343
1344#define __HAVE_ARCH_ENTER_LAZY_CPU_MODE
1345static inline void arch_enter_lazy_cpu_mode(void)
1346{
1347 PVOP_VCALL0(pv_cpu_ops.lazy_mode.enter);
1348}
1349
1350static inline void arch_leave_lazy_cpu_mode(void)
1351{
1352 PVOP_VCALL0(pv_cpu_ops.lazy_mode.leave);
1353}
1354
1355static inline void arch_flush_lazy_cpu_mode(void)
1356{
1357 if (unlikely(paravirt_get_lazy_mode() == PARAVIRT_LAZY_CPU)) {
1358 arch_leave_lazy_cpu_mode();
1359 arch_enter_lazy_cpu_mode();
1360 }
1361}
1362
1363
1364#define __HAVE_ARCH_ENTER_LAZY_MMU_MODE
1365static inline void arch_enter_lazy_mmu_mode(void)
1366{
1367 PVOP_VCALL0(pv_mmu_ops.lazy_mode.enter);
1368}
1369
1370static inline void arch_leave_lazy_mmu_mode(void)
1371{
1372 PVOP_VCALL0(pv_mmu_ops.lazy_mode.leave);
1373}
1374
1375static inline void arch_flush_lazy_mmu_mode(void)
1376{
1377 if (unlikely(paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU)) {
1378 arch_leave_lazy_mmu_mode();
1379 arch_enter_lazy_mmu_mode();
1380 }
1381}
1382
1383static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
1384 unsigned long phys, pgprot_t flags)
1385{
1386 pv_mmu_ops.set_fixmap(idx, phys, flags);
1387}
1388
1389void _paravirt_nop(void);
1390#define paravirt_nop ((void *)_paravirt_nop)
1391
1392void paravirt_use_bytelocks(void);
1393
1394#ifdef CONFIG_SMP
1395
1396static inline int __raw_spin_is_locked(struct raw_spinlock *lock)
1397{
1398 return PVOP_CALL1(int, pv_lock_ops.spin_is_locked, lock);
1399}
1400
1401static inline int __raw_spin_is_contended(struct raw_spinlock *lock)
1402{
1403 return PVOP_CALL1(int, pv_lock_ops.spin_is_contended, lock);
1404}
1405
1406static __always_inline void __raw_spin_lock(struct raw_spinlock *lock)
1407{
1408 PVOP_VCALL1(pv_lock_ops.spin_lock, lock);
1409}
1410
1411static __always_inline void __raw_spin_lock_flags(struct raw_spinlock *lock,
1412 unsigned long flags)
1413{
1414 PVOP_VCALL2(pv_lock_ops.spin_lock_flags, lock, flags);
1415}
1416
1417static __always_inline int __raw_spin_trylock(struct raw_spinlock *lock)
1418{
1419 return PVOP_CALL1(int, pv_lock_ops.spin_trylock, lock);
1420}
1421
1422static __always_inline void __raw_spin_unlock(struct raw_spinlock *lock)
1423{
1424 PVOP_VCALL1(pv_lock_ops.spin_unlock, lock);
1425}
1426
1427#endif
1428
1429/* These all sit in the .parainstructions section to tell us what to patch. */
1430struct paravirt_patch_site {
1431 u8 *instr; /* original instructions */
1432 u8 instrtype; /* type of this instruction */
1433 u8 len; /* length of original instruction */
1434 u16 clobbers; /* what registers you may clobber */
1435};
1436
1437extern struct paravirt_patch_site __parainstructions[],
1438 __parainstructions_end[];
1439
1440#ifdef CONFIG_X86_32
1441#define PV_SAVE_REGS "pushl %%ecx; pushl %%edx;"
1442#define PV_RESTORE_REGS "popl %%edx; popl %%ecx"
1443#define PV_FLAGS_ARG "0"
1444#define PV_EXTRA_CLOBBERS
1445#define PV_VEXTRA_CLOBBERS
1446#else
1447/* We save some registers, but all of them, that's too much. We clobber all
1448 * caller saved registers but the argument parameter */
1449#define PV_SAVE_REGS "pushq %%rdi;"
1450#define PV_RESTORE_REGS "popq %%rdi;"
1451#define PV_EXTRA_CLOBBERS EXTRA_CLOBBERS, "rcx" , "rdx", "rsi"
1452#define PV_VEXTRA_CLOBBERS EXTRA_CLOBBERS, "rdi", "rcx" , "rdx", "rsi"
1453#define PV_FLAGS_ARG "D"
1454#endif
1455
1456static inline unsigned long __raw_local_save_flags(void)
1457{
1458 unsigned long f;
1459
1460 asm volatile(paravirt_alt(PV_SAVE_REGS
1461 PARAVIRT_CALL
1462 PV_RESTORE_REGS)
1463 : "=a"(f)
1464 : paravirt_type(pv_irq_ops.save_fl),
1465 paravirt_clobber(CLBR_EAX)
1466 : "memory", "cc" PV_VEXTRA_CLOBBERS);
1467 return f;
1468}
1469
1470static inline void raw_local_irq_restore(unsigned long f)
1471{
1472 asm volatile(paravirt_alt(PV_SAVE_REGS
1473 PARAVIRT_CALL
1474 PV_RESTORE_REGS)
1475 : "=a"(f)
1476 : PV_FLAGS_ARG(f),
1477 paravirt_type(pv_irq_ops.restore_fl),
1478 paravirt_clobber(CLBR_EAX)
1479 : "memory", "cc" PV_EXTRA_CLOBBERS);
1480}
1481
1482static inline void raw_local_irq_disable(void)
1483{
1484 asm volatile(paravirt_alt(PV_SAVE_REGS
1485 PARAVIRT_CALL
1486 PV_RESTORE_REGS)
1487 :
1488 : paravirt_type(pv_irq_ops.irq_disable),
1489 paravirt_clobber(CLBR_EAX)
1490 : "memory", "eax", "cc" PV_EXTRA_CLOBBERS);
1491}
1492
1493static inline void raw_local_irq_enable(void)
1494{
1495 asm volatile(paravirt_alt(PV_SAVE_REGS
1496 PARAVIRT_CALL
1497 PV_RESTORE_REGS)
1498 :
1499 : paravirt_type(pv_irq_ops.irq_enable),
1500 paravirt_clobber(CLBR_EAX)
1501 : "memory", "eax", "cc" PV_EXTRA_CLOBBERS);
1502}
1503
1504static inline unsigned long __raw_local_irq_save(void)
1505{
1506 unsigned long f;
1507
1508 f = __raw_local_save_flags();
1509 raw_local_irq_disable();
1510 return f;
1511}
1512
1513
1514/* Make sure as little as possible of this mess escapes. */
1515#undef PARAVIRT_CALL
1516#undef __PVOP_CALL
1517#undef __PVOP_VCALL
1518#undef PVOP_VCALL0
1519#undef PVOP_CALL0
1520#undef PVOP_VCALL1
1521#undef PVOP_CALL1
1522#undef PVOP_VCALL2
1523#undef PVOP_CALL2
1524#undef PVOP_VCALL3
1525#undef PVOP_CALL3
1526#undef PVOP_VCALL4
1527#undef PVOP_CALL4
1528
1529#else /* __ASSEMBLY__ */
1530
1531#define _PVSITE(ptype, clobbers, ops, word, algn) \
1532771:; \
1533 ops; \
1534772:; \
1535 .pushsection .parainstructions,"a"; \
1536 .align algn; \
1537 word 771b; \
1538 .byte ptype; \
1539 .byte 772b-771b; \
1540 .short clobbers; \
1541 .popsection
1542
1543
1544#ifdef CONFIG_X86_64
1545#define PV_SAVE_REGS \
1546 push %rax; \
1547 push %rcx; \
1548 push %rdx; \
1549 push %rsi; \
1550 push %rdi; \
1551 push %r8; \
1552 push %r9; \
1553 push %r10; \
1554 push %r11
1555#define PV_RESTORE_REGS \
1556 pop %r11; \
1557 pop %r10; \
1558 pop %r9; \
1559 pop %r8; \
1560 pop %rdi; \
1561 pop %rsi; \
1562 pop %rdx; \
1563 pop %rcx; \
1564 pop %rax
1565#define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 8)
1566#define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .quad, 8)
1567#define PARA_INDIRECT(addr) *addr(%rip)
1568#else
1569#define PV_SAVE_REGS pushl %eax; pushl %edi; pushl %ecx; pushl %edx
1570#define PV_RESTORE_REGS popl %edx; popl %ecx; popl %edi; popl %eax
1571#define PARA_PATCH(struct, off) ((PARAVIRT_PATCH_##struct + (off)) / 4)
1572#define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4)
1573#define PARA_INDIRECT(addr) *%cs:addr
1574#endif
1575
1576#define INTERRUPT_RETURN \
1577 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_iret), CLBR_NONE, \
1578 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_iret))
1579
1580#define DISABLE_INTERRUPTS(clobbers) \
1581 PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_irq_disable), clobbers, \
1582 PV_SAVE_REGS; \
1583 call PARA_INDIRECT(pv_irq_ops+PV_IRQ_irq_disable); \
1584 PV_RESTORE_REGS;) \
1585
1586#define ENABLE_INTERRUPTS(clobbers) \
1587 PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_irq_enable), clobbers, \
1588 PV_SAVE_REGS; \
1589 call PARA_INDIRECT(pv_irq_ops+PV_IRQ_irq_enable); \
1590 PV_RESTORE_REGS;)
1591
1592#define USERGS_SYSRET32 \
1593 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usergs_sysret32), \
1594 CLBR_NONE, \
1595 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret32))
1596
1597#ifdef CONFIG_X86_32
1598#define GET_CR0_INTO_EAX \
1599 push %ecx; push %edx; \
1600 call PARA_INDIRECT(pv_cpu_ops+PV_CPU_read_cr0); \
1601 pop %edx; pop %ecx
1602
1603#define ENABLE_INTERRUPTS_SYSEXIT \
1604 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_irq_enable_sysexit), \
1605 CLBR_NONE, \
1606 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_irq_enable_sysexit))
1607
1608
1609#else /* !CONFIG_X86_32 */
1610
1611/*
1612 * If swapgs is used while the userspace stack is still current,
1613 * there's no way to call a pvop. The PV replacement *must* be
1614 * inlined, or the swapgs instruction must be trapped and emulated.
1615 */
1616#define SWAPGS_UNSAFE_STACK \
1617 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_swapgs), CLBR_NONE, \
1618 swapgs)
1619
1620#define SWAPGS \
1621 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_swapgs), CLBR_NONE, \
1622 PV_SAVE_REGS; \
1623 call PARA_INDIRECT(pv_cpu_ops+PV_CPU_swapgs); \
1624 PV_RESTORE_REGS \
1625 )
1626
1627#define GET_CR2_INTO_RCX \
1628 call PARA_INDIRECT(pv_mmu_ops+PV_MMU_read_cr2); \
1629 movq %rax, %rcx; \
1630 xorq %rax, %rax;
1631
1632#define PARAVIRT_ADJUST_EXCEPTION_FRAME \
1633 PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_adjust_exception_frame), \
1634 CLBR_NONE, \
1635 call PARA_INDIRECT(pv_irq_ops+PV_IRQ_adjust_exception_frame))
1636
1637#define USERGS_SYSRET64 \
1638 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usergs_sysret64), \
1639 CLBR_NONE, \
1640 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret64))
1641
1642#define ENABLE_INTERRUPTS_SYSEXIT32 \
1643 PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_irq_enable_sysexit), \
1644 CLBR_NONE, \
1645 jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_irq_enable_sysexit))
1646#endif /* CONFIG_X86_32 */
1647
1648#endif /* __ASSEMBLY__ */
1649#endif /* CONFIG_PARAVIRT */
1650#endif /* _ASM_X86_PARAVIRT_H */
diff --git a/arch/x86/include/asm/parport.h b/arch/x86/include/asm/parport.h
new file mode 100644
index 000000000000..3c4ffeb467e9
--- /dev/null
+++ b/arch/x86/include/asm/parport.h
@@ -0,0 +1,10 @@
1#ifndef _ASM_X86_PARPORT_H
2#define _ASM_X86_PARPORT_H
3
4static int __devinit parport_pc_find_isa_ports(int autoirq, int autodma);
5static int __devinit parport_pc_find_nonpci_ports(int autoirq, int autodma)
6{
7 return parport_pc_find_isa_ports(autoirq, autodma);
8}
9
10#endif /* _ASM_X86_PARPORT_H */
diff --git a/arch/x86/include/asm/pat.h b/arch/x86/include/asm/pat.h
new file mode 100644
index 000000000000..b8493b3b9890
--- /dev/null
+++ b/arch/x86/include/asm/pat.h
@@ -0,0 +1,22 @@
1#ifndef _ASM_X86_PAT_H
2#define _ASM_X86_PAT_H
3
4#include <linux/types.h>
5
6#ifdef CONFIG_X86_PAT
7extern int pat_enabled;
8extern void validate_pat_support(struct cpuinfo_x86 *c);
9#else
10static const int pat_enabled;
11static inline void validate_pat_support(struct cpuinfo_x86 *c) { }
12#endif
13
14extern void pat_init(void);
15
16extern int reserve_memtype(u64 start, u64 end,
17 unsigned long req_type, unsigned long *ret_type);
18extern int free_memtype(u64 start, u64 end);
19
20extern void pat_disable(char *reason);
21
22#endif /* _ASM_X86_PAT_H */
diff --git a/arch/x86/include/asm/pci-direct.h b/arch/x86/include/asm/pci-direct.h
new file mode 100644
index 000000000000..b1e7a45d868a
--- /dev/null
+++ b/arch/x86/include/asm/pci-direct.h
@@ -0,0 +1,21 @@
1#ifndef _ASM_X86_PCI_DIRECT_H
2#define _ASM_X86_PCI_DIRECT_H
3
4#include <linux/types.h>
5
6/* Direct PCI access. This is used for PCI accesses in early boot before
7 the PCI subsystem works. */
8
9extern u32 read_pci_config(u8 bus, u8 slot, u8 func, u8 offset);
10extern u8 read_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset);
11extern u16 read_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset);
12extern void write_pci_config(u8 bus, u8 slot, u8 func, u8 offset, u32 val);
13extern void write_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset, u8 val);
14extern void write_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset, u16 val);
15
16extern int early_pci_allowed(void);
17
18extern unsigned int pci_early_dump_regs;
19extern void early_dump_pci_device(u8 bus, u8 slot, u8 func);
20extern void early_dump_pci_devices(void);
21#endif /* _ASM_X86_PCI_DIRECT_H */
diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
new file mode 100644
index 000000000000..875b38edf193
--- /dev/null
+++ b/arch/x86/include/asm/pci.h
@@ -0,0 +1,114 @@
1#ifndef _ASM_X86_PCI_H
2#define _ASM_X86_PCI_H
3
4#include <linux/mm.h> /* for struct page */
5#include <linux/types.h>
6#include <linux/slab.h>
7#include <linux/string.h>
8#include <asm/scatterlist.h>
9#include <asm/io.h>
10
11#ifdef __KERNEL__
12
13struct pci_sysdata {
14 int domain; /* PCI domain */
15 int node; /* NUMA node */
16#ifdef CONFIG_X86_64
17 void *iommu; /* IOMMU private data */
18#endif
19};
20
21extern int pci_routeirq;
22
23/* scan a bus after allocating a pci_sysdata for it */
24extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,
25 int node);
26extern struct pci_bus *pci_scan_bus_with_sysdata(int busno);
27
28static inline int pci_domain_nr(struct pci_bus *bus)
29{
30 struct pci_sysdata *sd = bus->sysdata;
31 return sd->domain;
32}
33
34static inline int pci_proc_domain(struct pci_bus *bus)
35{
36 return pci_domain_nr(bus);
37}
38
39
40/* Can be used to override the logic in pci_scan_bus for skipping
41 already-configured bus numbers - to be used for buggy BIOSes
42 or architectures with incomplete PCI setup by the loader */
43
44#ifdef CONFIG_PCI
45extern unsigned int pcibios_assign_all_busses(void);
46#else
47#define pcibios_assign_all_busses() 0
48#endif
49#define pcibios_scan_all_fns(a, b) 0
50
51extern unsigned long pci_mem_start;
52#define PCIBIOS_MIN_IO 0x1000
53#define PCIBIOS_MIN_MEM (pci_mem_start)
54
55#define PCIBIOS_MIN_CARDBUS_IO 0x4000
56
57void pcibios_config_init(void);
58struct pci_bus *pcibios_scan_root(int bus);
59
60void pcibios_set_master(struct pci_dev *dev);
61void pcibios_penalize_isa_irq(int irq, int active);
62struct irq_routing_table *pcibios_get_irq_routing_table(void);
63int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
64
65
66#define HAVE_PCI_MMAP
67extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
68 enum pci_mmap_state mmap_state,
69 int write_combine);
70
71
72#ifdef CONFIG_PCI
73extern void early_quirks(void);
74static inline void pci_dma_burst_advice(struct pci_dev *pdev,
75 enum pci_dma_burst_strategy *strat,
76 unsigned long *strategy_parameter)
77{
78 *strat = PCI_DMA_BURST_INFINITY;
79 *strategy_parameter = ~0UL;
80}
81#else
82static inline void early_quirks(void) { }
83#endif
84
85#endif /* __KERNEL__ */
86
87#ifdef CONFIG_X86_32
88# include "pci_32.h"
89#else
90# include "pci_64.h"
91#endif
92
93/* implement the pci_ DMA API in terms of the generic device dma_ one */
94#include <asm-generic/pci-dma-compat.h>
95
96/* generic pci stuff */
97#include <asm-generic/pci.h>
98
99#ifdef CONFIG_NUMA
100/* Returns the node based on pci bus */
101static inline int __pcibus_to_node(struct pci_bus *bus)
102{
103 struct pci_sysdata *sd = bus->sysdata;
104
105 return sd->node;
106}
107
108static inline cpumask_t __pcibus_to_cpumask(struct pci_bus *bus)
109{
110 return node_to_cpumask(__pcibus_to_node(bus));
111}
112#endif
113
114#endif /* _ASM_X86_PCI_H */
diff --git a/arch/x86/include/asm/pci_32.h b/arch/x86/include/asm/pci_32.h
new file mode 100644
index 000000000000..6f1213a6ef4f
--- /dev/null
+++ b/arch/x86/include/asm/pci_32.h
@@ -0,0 +1,34 @@
1#ifndef _ASM_X86_PCI_32_H
2#define _ASM_X86_PCI_32_H
3
4
5#ifdef __KERNEL__
6
7
8/* Dynamic DMA mapping stuff.
9 * i386 has everything mapped statically.
10 */
11
12struct pci_dev;
13
14/* The PCI address space does equal the physical memory
15 * address space. The networking and block device layers use
16 * this boolean for bounce buffer decisions.
17 */
18#define PCI_DMA_BUS_IS_PHYS (1)
19
20/* pci_unmap_{page,single} is a nop so... */
21#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME[0];
22#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) unsigned LEN_NAME[0];
23#define pci_unmap_addr(PTR, ADDR_NAME) sizeof((PTR)->ADDR_NAME)
24#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \
25 do { break; } while (pci_unmap_addr(PTR, ADDR_NAME))
26#define pci_unmap_len(PTR, LEN_NAME) sizeof((PTR)->LEN_NAME)
27#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \
28 do { break; } while (pci_unmap_len(PTR, LEN_NAME))
29
30
31#endif /* __KERNEL__ */
32
33
34#endif /* _ASM_X86_PCI_32_H */
diff --git a/arch/x86/include/asm/pci_64.h b/arch/x86/include/asm/pci_64.h
new file mode 100644
index 000000000000..5b28995d664e
--- /dev/null
+++ b/arch/x86/include/asm/pci_64.h
@@ -0,0 +1,66 @@
1#ifndef _ASM_X86_PCI_64_H
2#define _ASM_X86_PCI_64_H
3
4#ifdef __KERNEL__
5
6#ifdef CONFIG_CALGARY_IOMMU
7static inline void *pci_iommu(struct pci_bus *bus)
8{
9 struct pci_sysdata *sd = bus->sysdata;
10 return sd->iommu;
11}
12
13static inline void set_pci_iommu(struct pci_bus *bus, void *val)
14{
15 struct pci_sysdata *sd = bus->sysdata;
16 sd->iommu = val;
17}
18#endif /* CONFIG_CALGARY_IOMMU */
19
20extern int (*pci_config_read)(int seg, int bus, int dev, int fn,
21 int reg, int len, u32 *value);
22extern int (*pci_config_write)(int seg, int bus, int dev, int fn,
23 int reg, int len, u32 value);
24
25extern void dma32_reserve_bootmem(void);
26extern void pci_iommu_alloc(void);
27
28/* The PCI address space does equal the physical memory
29 * address space. The networking and block device layers use
30 * this boolean for bounce buffer decisions
31 *
32 * On AMD64 it mostly equals, but we set it to zero if a hardware
33 * IOMMU (gart) of sotware IOMMU (swiotlb) is available.
34 */
35#define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)
36
37#if defined(CONFIG_GART_IOMMU) || defined(CONFIG_CALGARY_IOMMU)
38
39#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \
40 dma_addr_t ADDR_NAME;
41#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \
42 __u32 LEN_NAME;
43#define pci_unmap_addr(PTR, ADDR_NAME) \
44 ((PTR)->ADDR_NAME)
45#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \
46 (((PTR)->ADDR_NAME) = (VAL))
47#define pci_unmap_len(PTR, LEN_NAME) \
48 ((PTR)->LEN_NAME)
49#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \
50 (((PTR)->LEN_NAME) = (VAL))
51
52#else
53/* No IOMMU */
54
55#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
56#define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
57#define pci_unmap_addr(PTR, ADDR_NAME) (0)
58#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0)
59#define pci_unmap_len(PTR, LEN_NAME) (0)
60#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0)
61
62#endif
63
64#endif /* __KERNEL__ */
65
66#endif /* _ASM_X86_PCI_64_H */
diff --git a/arch/x86/include/asm/pda.h b/arch/x86/include/asm/pda.h
new file mode 100644
index 000000000000..2fbfff88df37
--- /dev/null
+++ b/arch/x86/include/asm/pda.h
@@ -0,0 +1,137 @@
1#ifndef _ASM_X86_PDA_H
2#define _ASM_X86_PDA_H
3
4#ifndef __ASSEMBLY__
5#include <linux/stddef.h>
6#include <linux/types.h>
7#include <linux/cache.h>
8#include <asm/page.h>
9
10/* Per processor datastructure. %gs points to it while the kernel runs */
11struct x8664_pda {
12 struct task_struct *pcurrent; /* 0 Current process */
13 unsigned long data_offset; /* 8 Per cpu data offset from linker
14 address */
15 unsigned long kernelstack; /* 16 top of kernel stack for current */
16 unsigned long oldrsp; /* 24 user rsp for system call */
17 int irqcount; /* 32 Irq nesting counter. Starts -1 */
18 unsigned int cpunumber; /* 36 Logical CPU number */
19#ifdef CONFIG_CC_STACKPROTECTOR
20 unsigned long stack_canary; /* 40 stack canary value */
21 /* gcc-ABI: this canary MUST be at
22 offset 40!!! */
23#endif
24 char *irqstackptr;
25 short nodenumber; /* number of current node (32k max) */
26 short in_bootmem; /* pda lives in bootmem */
27 unsigned int __softirq_pending;
28 unsigned int __nmi_count; /* number of NMI on this CPUs */
29 short mmu_state;
30 short isidle;
31 struct mm_struct *active_mm;
32 unsigned apic_timer_irqs;
33 unsigned irq0_irqs;
34 unsigned irq_resched_count;
35 unsigned irq_call_count;
36 unsigned irq_tlb_count;
37 unsigned irq_thermal_count;
38 unsigned irq_threshold_count;
39 unsigned irq_spurious_count;
40} ____cacheline_aligned_in_smp;
41
42extern struct x8664_pda **_cpu_pda;
43extern void pda_init(int);
44
45#define cpu_pda(i) (_cpu_pda[i])
46
47/*
48 * There is no fast way to get the base address of the PDA, all the accesses
49 * have to mention %fs/%gs. So it needs to be done this Torvaldian way.
50 */
51extern void __bad_pda_field(void) __attribute__((noreturn));
52
53/*
54 * proxy_pda doesn't actually exist, but tell gcc it is accessed for
55 * all PDA accesses so it gets read/write dependencies right.
56 */
57extern struct x8664_pda _proxy_pda;
58
59#define pda_offset(field) offsetof(struct x8664_pda, field)
60
61#define pda_to_op(op, field, val) \
62do { \
63 typedef typeof(_proxy_pda.field) T__; \
64 if (0) { T__ tmp__; tmp__ = (val); } /* type checking */ \
65 switch (sizeof(_proxy_pda.field)) { \
66 case 2: \
67 asm(op "w %1,%%gs:%c2" : \
68 "+m" (_proxy_pda.field) : \
69 "ri" ((T__)val), \
70 "i"(pda_offset(field))); \
71 break; \
72 case 4: \
73 asm(op "l %1,%%gs:%c2" : \
74 "+m" (_proxy_pda.field) : \
75 "ri" ((T__)val), \
76 "i" (pda_offset(field))); \
77 break; \
78 case 8: \
79 asm(op "q %1,%%gs:%c2": \
80 "+m" (_proxy_pda.field) : \
81 "ri" ((T__)val), \
82 "i"(pda_offset(field))); \
83 break; \
84 default: \
85 __bad_pda_field(); \
86 } \
87} while (0)
88
89#define pda_from_op(op, field) \
90({ \
91 typeof(_proxy_pda.field) ret__; \
92 switch (sizeof(_proxy_pda.field)) { \
93 case 2: \
94 asm(op "w %%gs:%c1,%0" : \
95 "=r" (ret__) : \
96 "i" (pda_offset(field)), \
97 "m" (_proxy_pda.field)); \
98 break; \
99 case 4: \
100 asm(op "l %%gs:%c1,%0": \
101 "=r" (ret__): \
102 "i" (pda_offset(field)), \
103 "m" (_proxy_pda.field)); \
104 break; \
105 case 8: \
106 asm(op "q %%gs:%c1,%0": \
107 "=r" (ret__) : \
108 "i" (pda_offset(field)), \
109 "m" (_proxy_pda.field)); \
110 break; \
111 default: \
112 __bad_pda_field(); \
113 } \
114 ret__; \
115})
116
117#define read_pda(field) pda_from_op("mov", field)
118#define write_pda(field, val) pda_to_op("mov", field, val)
119#define add_pda(field, val) pda_to_op("add", field, val)
120#define sub_pda(field, val) pda_to_op("sub", field, val)
121#define or_pda(field, val) pda_to_op("or", field, val)
122
123/* This is not atomic against other CPUs -- CPU preemption needs to be off */
124#define test_and_clear_bit_pda(bit, field) \
125({ \
126 int old__; \
127 asm volatile("btr %2,%%gs:%c3\n\tsbbl %0,%0" \
128 : "=r" (old__), "+m" (_proxy_pda.field) \
129 : "dIr" (bit), "i" (pda_offset(field)) : "memory");\
130 old__; \
131})
132
133#endif
134
135#define PDA_STACKOFFSET (5*8)
136
137#endif /* _ASM_X86_PDA_H */
diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h
new file mode 100644
index 000000000000..ece72053ba63
--- /dev/null
+++ b/arch/x86/include/asm/percpu.h
@@ -0,0 +1,218 @@
1#ifndef _ASM_X86_PERCPU_H
2#define _ASM_X86_PERCPU_H
3
4#ifdef CONFIG_X86_64
5#include <linux/compiler.h>
6
7/* Same as asm-generic/percpu.h, except that we store the per cpu offset
8 in the PDA. Longer term the PDA and every per cpu variable
9 should be just put into a single section and referenced directly
10 from %gs */
11
12#ifdef CONFIG_SMP
13#include <asm/pda.h>
14
15#define __per_cpu_offset(cpu) (cpu_pda(cpu)->data_offset)
16#define __my_cpu_offset read_pda(data_offset)
17
18#define per_cpu_offset(x) (__per_cpu_offset(x))
19
20#endif
21#include <asm-generic/percpu.h>
22
23DECLARE_PER_CPU(struct x8664_pda, pda);
24
25/*
26 * These are supposed to be implemented as a single instruction which
27 * operates on the per-cpu data base segment. x86-64 doesn't have
28 * that yet, so this is a fairly inefficient workaround for the
29 * meantime. The single instruction is atomic with respect to
30 * preemption and interrupts, so we need to explicitly disable
31 * interrupts here to achieve the same effect. However, because it
32 * can be used from within interrupt-disable/enable, we can't actually
33 * disable interrupts; disabling preemption is enough.
34 */
35#define x86_read_percpu(var) \
36 ({ \
37 typeof(per_cpu_var(var)) __tmp; \
38 preempt_disable(); \
39 __tmp = __get_cpu_var(var); \
40 preempt_enable(); \
41 __tmp; \
42 })
43
44#define x86_write_percpu(var, val) \
45 do { \
46 preempt_disable(); \
47 __get_cpu_var(var) = (val); \
48 preempt_enable(); \
49 } while(0)
50
51#else /* CONFIG_X86_64 */
52
53#ifdef __ASSEMBLY__
54
55/*
56 * PER_CPU finds an address of a per-cpu variable.
57 *
58 * Args:
59 * var - variable name
60 * reg - 32bit register
61 *
62 * The resulting address is stored in the "reg" argument.
63 *
64 * Example:
65 * PER_CPU(cpu_gdt_descr, %ebx)
66 */
67#ifdef CONFIG_SMP
68#define PER_CPU(var, reg) \
69 movl %fs:per_cpu__##this_cpu_off, reg; \
70 lea per_cpu__##var(reg), reg
71#define PER_CPU_VAR(var) %fs:per_cpu__##var
72#else /* ! SMP */
73#define PER_CPU(var, reg) \
74 movl $per_cpu__##var, reg
75#define PER_CPU_VAR(var) per_cpu__##var
76#endif /* SMP */
77
78#else /* ...!ASSEMBLY */
79
80/*
81 * PER_CPU finds an address of a per-cpu variable.
82 *
83 * Args:
84 * var - variable name
85 * cpu - 32bit register containing the current CPU number
86 *
87 * The resulting address is stored in the "cpu" argument.
88 *
89 * Example:
90 * PER_CPU(cpu_gdt_descr, %ebx)
91 */
92#ifdef CONFIG_SMP
93
94#define __my_cpu_offset x86_read_percpu(this_cpu_off)
95
96/* fs segment starts at (positive) offset == __per_cpu_offset[cpu] */
97#define __percpu_seg "%%fs:"
98
99#else /* !SMP */
100
101#define __percpu_seg ""
102
103#endif /* SMP */
104
105#include <asm-generic/percpu.h>
106
107/* We can use this directly for local CPU (faster). */
108DECLARE_PER_CPU(unsigned long, this_cpu_off);
109
110/* For arch-specific code, we can use direct single-insn ops (they
111 * don't give an lvalue though). */
112extern void __bad_percpu_size(void);
113
114#define percpu_to_op(op, var, val) \
115do { \
116 typedef typeof(var) T__; \
117 if (0) { \
118 T__ tmp__; \
119 tmp__ = (val); \
120 } \
121 switch (sizeof(var)) { \
122 case 1: \
123 asm(op "b %1,"__percpu_seg"%0" \
124 : "+m" (var) \
125 : "ri" ((T__)val)); \
126 break; \
127 case 2: \
128 asm(op "w %1,"__percpu_seg"%0" \
129 : "+m" (var) \
130 : "ri" ((T__)val)); \
131 break; \
132 case 4: \
133 asm(op "l %1,"__percpu_seg"%0" \
134 : "+m" (var) \
135 : "ri" ((T__)val)); \
136 break; \
137 default: __bad_percpu_size(); \
138 } \
139} while (0)
140
141#define percpu_from_op(op, var) \
142({ \
143 typeof(var) ret__; \
144 switch (sizeof(var)) { \
145 case 1: \
146 asm(op "b "__percpu_seg"%1,%0" \
147 : "=r" (ret__) \
148 : "m" (var)); \
149 break; \
150 case 2: \
151 asm(op "w "__percpu_seg"%1,%0" \
152 : "=r" (ret__) \
153 : "m" (var)); \
154 break; \
155 case 4: \
156 asm(op "l "__percpu_seg"%1,%0" \
157 : "=r" (ret__) \
158 : "m" (var)); \
159 break; \
160 default: __bad_percpu_size(); \
161 } \
162 ret__; \
163})
164
165#define x86_read_percpu(var) percpu_from_op("mov", per_cpu__##var)
166#define x86_write_percpu(var, val) percpu_to_op("mov", per_cpu__##var, val)
167#define x86_add_percpu(var, val) percpu_to_op("add", per_cpu__##var, val)
168#define x86_sub_percpu(var, val) percpu_to_op("sub", per_cpu__##var, val)
169#define x86_or_percpu(var, val) percpu_to_op("or", per_cpu__##var, val)
170#endif /* !__ASSEMBLY__ */
171#endif /* !CONFIG_X86_64 */
172
173#ifdef CONFIG_SMP
174
175/*
176 * Define the "EARLY_PER_CPU" macros. These are used for some per_cpu
177 * variables that are initialized and accessed before there are per_cpu
178 * areas allocated.
179 */
180
181#define DEFINE_EARLY_PER_CPU(_type, _name, _initvalue) \
182 DEFINE_PER_CPU(_type, _name) = _initvalue; \
183 __typeof__(_type) _name##_early_map[NR_CPUS] __initdata = \
184 { [0 ... NR_CPUS-1] = _initvalue }; \
185 __typeof__(_type) *_name##_early_ptr __refdata = _name##_early_map
186
187#define EXPORT_EARLY_PER_CPU_SYMBOL(_name) \
188 EXPORT_PER_CPU_SYMBOL(_name)
189
190#define DECLARE_EARLY_PER_CPU(_type, _name) \
191 DECLARE_PER_CPU(_type, _name); \
192 extern __typeof__(_type) *_name##_early_ptr; \
193 extern __typeof__(_type) _name##_early_map[]
194
195#define early_per_cpu_ptr(_name) (_name##_early_ptr)
196#define early_per_cpu_map(_name, _idx) (_name##_early_map[_idx])
197#define early_per_cpu(_name, _cpu) \
198 (early_per_cpu_ptr(_name) ? \
199 early_per_cpu_ptr(_name)[_cpu] : \
200 per_cpu(_name, _cpu))
201
202#else /* !CONFIG_SMP */
203#define DEFINE_EARLY_PER_CPU(_type, _name, _initvalue) \
204 DEFINE_PER_CPU(_type, _name) = _initvalue
205
206#define EXPORT_EARLY_PER_CPU_SYMBOL(_name) \
207 EXPORT_PER_CPU_SYMBOL(_name)
208
209#define DECLARE_EARLY_PER_CPU(_type, _name) \
210 DECLARE_PER_CPU(_type, _name)
211
212#define early_per_cpu(_name, _cpu) per_cpu(_name, _cpu)
213#define early_per_cpu_ptr(_name) NULL
214/* no early_per_cpu_map() */
215
216#endif /* !CONFIG_SMP */
217
218#endif /* _ASM_X86_PERCPU_H */
diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h
new file mode 100644
index 000000000000..cb7c151a8bff
--- /dev/null
+++ b/arch/x86/include/asm/pgalloc.h
@@ -0,0 +1,114 @@
1#ifndef _ASM_X86_PGALLOC_H
2#define _ASM_X86_PGALLOC_H
3
4#include <linux/threads.h>
5#include <linux/mm.h> /* for struct page */
6#include <linux/pagemap.h>
7
8static inline int __paravirt_pgd_alloc(struct mm_struct *mm) { return 0; }
9
10#ifdef CONFIG_PARAVIRT
11#include <asm/paravirt.h>
12#else
13#define paravirt_pgd_alloc(mm) __paravirt_pgd_alloc(mm)
14static inline void paravirt_pgd_free(struct mm_struct *mm, pgd_t *pgd) {}
15static inline void paravirt_alloc_pte(struct mm_struct *mm, unsigned long pfn) {}
16static inline void paravirt_alloc_pmd(struct mm_struct *mm, unsigned long pfn) {}
17static inline void paravirt_alloc_pmd_clone(unsigned long pfn, unsigned long clonepfn,
18 unsigned long start, unsigned long count) {}
19static inline void paravirt_alloc_pud(struct mm_struct *mm, unsigned long pfn) {}
20static inline void paravirt_release_pte(unsigned long pfn) {}
21static inline void paravirt_release_pmd(unsigned long pfn) {}
22static inline void paravirt_release_pud(unsigned long pfn) {}
23#endif
24
25/*
26 * Allocate and free page tables.
27 */
28extern pgd_t *pgd_alloc(struct mm_struct *);
29extern void pgd_free(struct mm_struct *mm, pgd_t *pgd);
30
31extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
32extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long);
33
34/* Should really implement gc for free page table pages. This could be
35 done with a reference count in struct page. */
36
37static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
38{
39 BUG_ON((unsigned long)pte & (PAGE_SIZE-1));
40 free_page((unsigned long)pte);
41}
42
43static inline void pte_free(struct mm_struct *mm, struct page *pte)
44{
45 __free_page(pte);
46}
47
48extern void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte);
49
50static inline void pmd_populate_kernel(struct mm_struct *mm,
51 pmd_t *pmd, pte_t *pte)
52{
53 paravirt_alloc_pte(mm, __pa(pte) >> PAGE_SHIFT);
54 set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE));
55}
56
57static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
58 struct page *pte)
59{
60 unsigned long pfn = page_to_pfn(pte);
61
62 paravirt_alloc_pte(mm, pfn);
63 set_pmd(pmd, __pmd(((pteval_t)pfn << PAGE_SHIFT) | _PAGE_TABLE));
64}
65
66#define pmd_pgtable(pmd) pmd_page(pmd)
67
68#if PAGETABLE_LEVELS > 2
69static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
70{
71 return (pmd_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT);
72}
73
74static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
75{
76 BUG_ON((unsigned long)pmd & (PAGE_SIZE-1));
77 free_page((unsigned long)pmd);
78}
79
80extern void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd);
81
82#ifdef CONFIG_X86_PAE
83extern void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd);
84#else /* !CONFIG_X86_PAE */
85static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
86{
87 paravirt_alloc_pmd(mm, __pa(pmd) >> PAGE_SHIFT);
88 set_pud(pud, __pud(_PAGE_TABLE | __pa(pmd)));
89}
90#endif /* CONFIG_X86_PAE */
91
92#if PAGETABLE_LEVELS > 3
93static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, pud_t *pud)
94{
95 paravirt_alloc_pud(mm, __pa(pud) >> PAGE_SHIFT);
96 set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(pud)));
97}
98
99static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
100{
101 return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT);
102}
103
104static inline void pud_free(struct mm_struct *mm, pud_t *pud)
105{
106 BUG_ON((unsigned long)pud & (PAGE_SIZE-1));
107 free_page((unsigned long)pud);
108}
109
110extern void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud);
111#endif /* PAGETABLE_LEVELS > 3 */
112#endif /* PAGETABLE_LEVELS > 2 */
113
114#endif /* _ASM_X86_PGALLOC_H */
diff --git a/arch/x86/include/asm/pgtable-2level-defs.h b/arch/x86/include/asm/pgtable-2level-defs.h
new file mode 100644
index 000000000000..d77db8990eaa
--- /dev/null
+++ b/arch/x86/include/asm/pgtable-2level-defs.h
@@ -0,0 +1,20 @@
1#ifndef _ASM_X86_PGTABLE_2LEVEL_DEFS_H
2#define _ASM_X86_PGTABLE_2LEVEL_DEFS_H
3
4#define SHARED_KERNEL_PMD 0
5
6/*
7 * traditional i386 two-level paging structure:
8 */
9
10#define PGDIR_SHIFT 22
11#define PTRS_PER_PGD 1024
12
13/*
14 * the i386 is two-level, so we don't really have any
15 * PMD directory physically.
16 */
17
18#define PTRS_PER_PTE 1024
19
20#endif /* _ASM_X86_PGTABLE_2LEVEL_DEFS_H */
diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
new file mode 100644
index 000000000000..b17edfd23628
--- /dev/null
+++ b/arch/x86/include/asm/pgtable-2level.h
@@ -0,0 +1,79 @@
1#ifndef _ASM_X86_PGTABLE_2LEVEL_H
2#define _ASM_X86_PGTABLE_2LEVEL_H
3
4#define pte_ERROR(e) \
5 printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, (e).pte_low)
6#define pgd_ERROR(e) \
7 printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e))
8
9/*
10 * Certain architectures need to do special things when PTEs
11 * within a page table are directly modified. Thus, the following
12 * hook is made available.
13 */
14static inline void native_set_pte(pte_t *ptep , pte_t pte)
15{
16 *ptep = pte;
17}
18
19static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
20{
21 *pmdp = pmd;
22}
23
24static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
25{
26 native_set_pte(ptep, pte);
27}
28
29static inline void native_set_pte_present(struct mm_struct *mm,
30 unsigned long addr,
31 pte_t *ptep, pte_t pte)
32{
33 native_set_pte(ptep, pte);
34}
35
36static inline void native_pmd_clear(pmd_t *pmdp)
37{
38 native_set_pmd(pmdp, __pmd(0));
39}
40
41static inline void native_pte_clear(struct mm_struct *mm,
42 unsigned long addr, pte_t *xp)
43{
44 *xp = native_make_pte(0);
45}
46
47#ifdef CONFIG_SMP
48static inline pte_t native_ptep_get_and_clear(pte_t *xp)
49{
50 return __pte(xchg(&xp->pte_low, 0));
51}
52#else
53#define native_ptep_get_and_clear(xp) native_local_ptep_get_and_clear(xp)
54#endif
55
56#define pte_none(x) (!(x).pte_low)
57
58/*
59 * Bits 0, 6 and 7 are taken, split up the 29 bits of offset
60 * into this range:
61 */
62#define PTE_FILE_MAX_BITS 29
63
64#define pte_to_pgoff(pte) \
65 ((((pte).pte_low >> 1) & 0x1f) + (((pte).pte_low >> 8) << 5))
66
67#define pgoff_to_pte(off) \
68 ((pte_t) { .pte_low = (((off) & 0x1f) << 1) + \
69 (((off) >> 5) << 8) + _PAGE_FILE })
70
71/* Encode and de-code a swap entry */
72#define __swp_type(x) (((x).val >> 1) & 0x1f)
73#define __swp_offset(x) ((x).val >> 8)
74#define __swp_entry(type, offset) \
75 ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
76#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
77#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val })
78
79#endif /* _ASM_X86_PGTABLE_2LEVEL_H */
diff --git a/arch/x86/include/asm/pgtable-3level-defs.h b/arch/x86/include/asm/pgtable-3level-defs.h
new file mode 100644
index 000000000000..62561367653c
--- /dev/null
+++ b/arch/x86/include/asm/pgtable-3level-defs.h
@@ -0,0 +1,28 @@
1#ifndef _ASM_X86_PGTABLE_3LEVEL_DEFS_H
2#define _ASM_X86_PGTABLE_3LEVEL_DEFS_H
3
4#ifdef CONFIG_PARAVIRT
5#define SHARED_KERNEL_PMD (pv_info.shared_kernel_pmd)
6#else
7#define SHARED_KERNEL_PMD 1
8#endif
9
10/*
11 * PGDIR_SHIFT determines what a top-level page table entry can map
12 */
13#define PGDIR_SHIFT 30
14#define PTRS_PER_PGD 4
15
16/*
17 * PMD_SHIFT determines the size of the area a middle-level
18 * page table can map
19 */
20#define PMD_SHIFT 21
21#define PTRS_PER_PMD 512
22
23/*
24 * entries per page directory level
25 */
26#define PTRS_PER_PTE 512
27
28#endif /* _ASM_X86_PGTABLE_3LEVEL_DEFS_H */
diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
new file mode 100644
index 000000000000..fb16cec702e4
--- /dev/null
+++ b/arch/x86/include/asm/pgtable-3level.h
@@ -0,0 +1,175 @@
1#ifndef _ASM_X86_PGTABLE_3LEVEL_H
2#define _ASM_X86_PGTABLE_3LEVEL_H
3
4/*
5 * Intel Physical Address Extension (PAE) Mode - three-level page
6 * tables on PPro+ CPUs.
7 *
8 * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
9 */
10
11#define pte_ERROR(e) \
12 printk("%s:%d: bad pte %p(%08lx%08lx).\n", \
13 __FILE__, __LINE__, &(e), (e).pte_high, (e).pte_low)
14#define pmd_ERROR(e) \
15 printk("%s:%d: bad pmd %p(%016Lx).\n", \
16 __FILE__, __LINE__, &(e), pmd_val(e))
17#define pgd_ERROR(e) \
18 printk("%s:%d: bad pgd %p(%016Lx).\n", \
19 __FILE__, __LINE__, &(e), pgd_val(e))
20
21static inline int pud_none(pud_t pud)
22{
23 return pud_val(pud) == 0;
24}
25
26static inline int pud_bad(pud_t pud)
27{
28 return (pud_val(pud) & ~(PTE_PFN_MASK | _KERNPG_TABLE | _PAGE_USER)) != 0;
29}
30
31static inline int pud_present(pud_t pud)
32{
33 return pud_val(pud) & _PAGE_PRESENT;
34}
35
36/* Rules for using set_pte: the pte being assigned *must* be
37 * either not present or in a state where the hardware will
38 * not attempt to update the pte. In places where this is
39 * not possible, use pte_get_and_clear to obtain the old pte
40 * value and then use set_pte to update it. -ben
41 */
42static inline void native_set_pte(pte_t *ptep, pte_t pte)
43{
44 ptep->pte_high = pte.pte_high;
45 smp_wmb();
46 ptep->pte_low = pte.pte_low;
47}
48
49/*
50 * Since this is only called on user PTEs, and the page fault handler
51 * must handle the already racy situation of simultaneous page faults,
52 * we are justified in merely clearing the PTE present bit, followed
53 * by a set. The ordering here is important.
54 */
55static inline void native_set_pte_present(struct mm_struct *mm,
56 unsigned long addr,
57 pte_t *ptep, pte_t pte)
58{
59 ptep->pte_low = 0;
60 smp_wmb();
61 ptep->pte_high = pte.pte_high;
62 smp_wmb();
63 ptep->pte_low = pte.pte_low;
64}
65
66static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
67{
68 set_64bit((unsigned long long *)(ptep), native_pte_val(pte));
69}
70
71static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
72{
73 set_64bit((unsigned long long *)(pmdp), native_pmd_val(pmd));
74}
75
76static inline void native_set_pud(pud_t *pudp, pud_t pud)
77{
78 set_64bit((unsigned long long *)(pudp), native_pud_val(pud));
79}
80
81/*
82 * For PTEs and PDEs, we must clear the P-bit first when clearing a page table
83 * entry, so clear the bottom half first and enforce ordering with a compiler
84 * barrier.
85 */
86static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr,
87 pte_t *ptep)
88{
89 ptep->pte_low = 0;
90 smp_wmb();
91 ptep->pte_high = 0;
92}
93
94static inline void native_pmd_clear(pmd_t *pmd)
95{
96 u32 *tmp = (u32 *)pmd;
97 *tmp = 0;
98 smp_wmb();
99 *(tmp + 1) = 0;
100}
101
102static inline void pud_clear(pud_t *pudp)
103{
104 unsigned long pgd;
105
106 set_pud(pudp, __pud(0));
107
108 /*
109 * According to Intel App note "TLBs, Paging-Structure Caches,
110 * and Their Invalidation", April 2007, document 317080-001,
111 * section 8.1: in PAE mode we explicitly have to flush the
112 * TLB via cr3 if the top-level pgd is changed...
113 *
114 * Make sure the pud entry we're updating is within the
115 * current pgd to avoid unnecessary TLB flushes.
116 */
117 pgd = read_cr3();
118 if (__pa(pudp) >= pgd && __pa(pudp) <
119 (pgd + sizeof(pgd_t)*PTRS_PER_PGD))
120 write_cr3(pgd);
121}
122
123#define pud_page(pud) ((struct page *) __va(pud_val(pud) & PTE_PFN_MASK))
124
125#define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & PTE_PFN_MASK))
126
127
128/* Find an entry in the second-level page table.. */
129#define pmd_offset(pud, address) ((pmd_t *)pud_page(*(pud)) + \
130 pmd_index(address))
131
132#ifdef CONFIG_SMP
133static inline pte_t native_ptep_get_and_clear(pte_t *ptep)
134{
135 pte_t res;
136
137 /* xchg acts as a barrier before the setting of the high bits */
138 res.pte_low = xchg(&ptep->pte_low, 0);
139 res.pte_high = ptep->pte_high;
140 ptep->pte_high = 0;
141
142 return res;
143}
144#else
145#define native_ptep_get_and_clear(xp) native_local_ptep_get_and_clear(xp)
146#endif
147
148#define __HAVE_ARCH_PTE_SAME
149static inline int pte_same(pte_t a, pte_t b)
150{
151 return a.pte_low == b.pte_low && a.pte_high == b.pte_high;
152}
153
154static inline int pte_none(pte_t pte)
155{
156 return !pte.pte_low && !pte.pte_high;
157}
158
159/*
160 * Bits 0, 6 and 7 are taken in the low part of the pte,
161 * put the 32 bits of offset into the high part.
162 */
163#define pte_to_pgoff(pte) ((pte).pte_high)
164#define pgoff_to_pte(off) \
165 ((pte_t) { { .pte_low = _PAGE_FILE, .pte_high = (off) } })
166#define PTE_FILE_MAX_BITS 32
167
168/* Encode and de-code a swap entry */
169#define __swp_type(x) (((x).val) & 0x1f)
170#define __swp_offset(x) ((x).val >> 5)
171#define __swp_entry(type, offset) ((swp_entry_t){(type) | (offset) << 5})
172#define __pte_to_swp_entry(pte) ((swp_entry_t){ (pte).pte_high })
173#define __swp_entry_to_pte(x) ((pte_t){ { .pte_high = (x).val } })
174
175#endif /* _ASM_X86_PGTABLE_3LEVEL_H */
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
new file mode 100644
index 000000000000..c012f3b11671
--- /dev/null
+++ b/arch/x86/include/asm/pgtable.h
@@ -0,0 +1,562 @@
1#ifndef _ASM_X86_PGTABLE_H
2#define _ASM_X86_PGTABLE_H
3
4#define FIRST_USER_ADDRESS 0
5
6#define _PAGE_BIT_PRESENT 0 /* is present */
7#define _PAGE_BIT_RW 1 /* writeable */
8#define _PAGE_BIT_USER 2 /* userspace addressable */
9#define _PAGE_BIT_PWT 3 /* page write through */
10#define _PAGE_BIT_PCD 4 /* page cache disabled */
11#define _PAGE_BIT_ACCESSED 5 /* was accessed (raised by CPU) */
12#define _PAGE_BIT_DIRTY 6 /* was written to (raised by CPU) */
13#define _PAGE_BIT_FILE 6
14#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
15#define _PAGE_BIT_PAT 7 /* on 4KB pages */
16#define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
17#define _PAGE_BIT_UNUSED1 9 /* available for programmer */
18#define _PAGE_BIT_IOMAP 10 /* flag used to indicate IO mapping */
19#define _PAGE_BIT_UNUSED3 11
20#define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */
21#define _PAGE_BIT_SPECIAL _PAGE_BIT_UNUSED1
22#define _PAGE_BIT_CPA_TEST _PAGE_BIT_UNUSED1
23#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
24
25#define _PAGE_PRESENT (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT)
26#define _PAGE_RW (_AT(pteval_t, 1) << _PAGE_BIT_RW)
27#define _PAGE_USER (_AT(pteval_t, 1) << _PAGE_BIT_USER)
28#define _PAGE_PWT (_AT(pteval_t, 1) << _PAGE_BIT_PWT)
29#define _PAGE_PCD (_AT(pteval_t, 1) << _PAGE_BIT_PCD)
30#define _PAGE_ACCESSED (_AT(pteval_t, 1) << _PAGE_BIT_ACCESSED)
31#define _PAGE_DIRTY (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY)
32#define _PAGE_PSE (_AT(pteval_t, 1) << _PAGE_BIT_PSE)
33#define _PAGE_GLOBAL (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL)
34#define _PAGE_UNUSED1 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED1)
35#define _PAGE_IOMAP (_AT(pteval_t, 1) << _PAGE_BIT_IOMAP)
36#define _PAGE_UNUSED3 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED3)
37#define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT)
38#define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)
39#define _PAGE_SPECIAL (_AT(pteval_t, 1) << _PAGE_BIT_SPECIAL)
40#define _PAGE_CPA_TEST (_AT(pteval_t, 1) << _PAGE_BIT_CPA_TEST)
41#define __HAVE_ARCH_PTE_SPECIAL
42
43#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
44#define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX)
45#else
46#define _PAGE_NX (_AT(pteval_t, 0))
47#endif
48
49/* If _PAGE_PRESENT is clear, we use these: */
50#define _PAGE_FILE _PAGE_DIRTY /* nonlinear file mapping,
51 * saved PTE; unset:swap */
52#define _PAGE_PROTNONE _PAGE_PSE /* if the user mapped it with PROT_NONE;
53 pte_present gives true */
54
55#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | \
56 _PAGE_ACCESSED | _PAGE_DIRTY)
57#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \
58 _PAGE_DIRTY)
59
60/* Set of bits not changed in pte_modify */
61#define _PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \
62 _PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY)
63
64#define _PAGE_CACHE_MASK (_PAGE_PCD | _PAGE_PWT)
65#define _PAGE_CACHE_WB (0)
66#define _PAGE_CACHE_WC (_PAGE_PWT)
67#define _PAGE_CACHE_UC_MINUS (_PAGE_PCD)
68#define _PAGE_CACHE_UC (_PAGE_PCD | _PAGE_PWT)
69
70#define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
71#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | \
72 _PAGE_ACCESSED | _PAGE_NX)
73
74#define PAGE_SHARED_EXEC __pgprot(_PAGE_PRESENT | _PAGE_RW | \
75 _PAGE_USER | _PAGE_ACCESSED)
76#define PAGE_COPY_NOEXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
77 _PAGE_ACCESSED | _PAGE_NX)
78#define PAGE_COPY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
79 _PAGE_ACCESSED)
80#define PAGE_COPY PAGE_COPY_NOEXEC
81#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | \
82 _PAGE_ACCESSED | _PAGE_NX)
83#define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
84 _PAGE_ACCESSED)
85
86#define __PAGE_KERNEL_EXEC \
87 (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
88#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
89
90#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
91#define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
92#define __PAGE_KERNEL_EXEC_NOCACHE (__PAGE_KERNEL_EXEC | _PAGE_PCD | _PAGE_PWT)
93#define __PAGE_KERNEL_WC (__PAGE_KERNEL | _PAGE_CACHE_WC)
94#define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
95#define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD)
96#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
97#define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT)
98#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
99#define __PAGE_KERNEL_LARGE_NOCACHE (__PAGE_KERNEL | _PAGE_CACHE_UC | _PAGE_PSE)
100#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
101
102#define __PAGE_KERNEL_IO (__PAGE_KERNEL | _PAGE_IOMAP)
103#define __PAGE_KERNEL_IO_NOCACHE (__PAGE_KERNEL_NOCACHE | _PAGE_IOMAP)
104#define __PAGE_KERNEL_IO_UC_MINUS (__PAGE_KERNEL_UC_MINUS | _PAGE_IOMAP)
105#define __PAGE_KERNEL_IO_WC (__PAGE_KERNEL_WC | _PAGE_IOMAP)
106
107#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
108#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
109#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
110#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
111#define PAGE_KERNEL_WC __pgprot(__PAGE_KERNEL_WC)
112#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
113#define PAGE_KERNEL_UC_MINUS __pgprot(__PAGE_KERNEL_UC_MINUS)
114#define PAGE_KERNEL_EXEC_NOCACHE __pgprot(__PAGE_KERNEL_EXEC_NOCACHE)
115#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
116#define PAGE_KERNEL_LARGE_NOCACHE __pgprot(__PAGE_KERNEL_LARGE_NOCACHE)
117#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
118#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
119#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE)
120
121#define PAGE_KERNEL_IO __pgprot(__PAGE_KERNEL_IO)
122#define PAGE_KERNEL_IO_NOCACHE __pgprot(__PAGE_KERNEL_IO_NOCACHE)
123#define PAGE_KERNEL_IO_UC_MINUS __pgprot(__PAGE_KERNEL_IO_UC_MINUS)
124#define PAGE_KERNEL_IO_WC __pgprot(__PAGE_KERNEL_IO_WC)
125
126/* xwr */
127#define __P000 PAGE_NONE
128#define __P001 PAGE_READONLY
129#define __P010 PAGE_COPY
130#define __P011 PAGE_COPY
131#define __P100 PAGE_READONLY_EXEC
132#define __P101 PAGE_READONLY_EXEC
133#define __P110 PAGE_COPY_EXEC
134#define __P111 PAGE_COPY_EXEC
135
136#define __S000 PAGE_NONE
137#define __S001 PAGE_READONLY
138#define __S010 PAGE_SHARED
139#define __S011 PAGE_SHARED
140#define __S100 PAGE_READONLY_EXEC
141#define __S101 PAGE_READONLY_EXEC
142#define __S110 PAGE_SHARED_EXEC
143#define __S111 PAGE_SHARED_EXEC
144
145/*
146 * early identity mapping pte attrib macros.
147 */
148#ifdef CONFIG_X86_64
149#define __PAGE_KERNEL_IDENT_LARGE_EXEC __PAGE_KERNEL_LARGE_EXEC
150#else
151/*
152 * For PDE_IDENT_ATTR include USER bit. As the PDE and PTE protection
153 * bits are combined, this will alow user to access the high address mapped
154 * VDSO in the presence of CONFIG_COMPAT_VDSO
155 */
156#define PTE_IDENT_ATTR 0x003 /* PRESENT+RW */
157#define PDE_IDENT_ATTR 0x067 /* PRESENT+RW+USER+DIRTY+ACCESSED */
158#define PGD_IDENT_ATTR 0x001 /* PRESENT (no other attributes) */
159#endif
160
161#ifndef __ASSEMBLY__
162
163/*
164 * ZERO_PAGE is a global shared page that is always zero: used
165 * for zero-mapped memory areas etc..
166 */
167extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)];
168#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
169
170extern spinlock_t pgd_lock;
171extern struct list_head pgd_list;
172
173/*
174 * The following only work if pte_present() is true.
175 * Undefined behaviour if not..
176 */
177static inline int pte_dirty(pte_t pte)
178{
179 return pte_flags(pte) & _PAGE_DIRTY;
180}
181
182static inline int pte_young(pte_t pte)
183{
184 return pte_flags(pte) & _PAGE_ACCESSED;
185}
186
187static inline int pte_write(pte_t pte)
188{
189 return pte_flags(pte) & _PAGE_RW;
190}
191
192static inline int pte_file(pte_t pte)
193{
194 return pte_flags(pte) & _PAGE_FILE;
195}
196
197static inline int pte_huge(pte_t pte)
198{
199 return pte_flags(pte) & _PAGE_PSE;
200}
201
202static inline int pte_global(pte_t pte)
203{
204 return pte_flags(pte) & _PAGE_GLOBAL;
205}
206
207static inline int pte_exec(pte_t pte)
208{
209 return !(pte_flags(pte) & _PAGE_NX);
210}
211
212static inline int pte_special(pte_t pte)
213{
214 return pte_flags(pte) & _PAGE_SPECIAL;
215}
216
217static inline unsigned long pte_pfn(pte_t pte)
218{
219 return (pte_val(pte) & PTE_PFN_MASK) >> PAGE_SHIFT;
220}
221
222#define pte_page(pte) pfn_to_page(pte_pfn(pte))
223
224static inline int pmd_large(pmd_t pte)
225{
226 return (pmd_val(pte) & (_PAGE_PSE | _PAGE_PRESENT)) ==
227 (_PAGE_PSE | _PAGE_PRESENT);
228}
229
230static inline pte_t pte_mkclean(pte_t pte)
231{
232 return __pte(pte_val(pte) & ~_PAGE_DIRTY);
233}
234
235static inline pte_t pte_mkold(pte_t pte)
236{
237 return __pte(pte_val(pte) & ~_PAGE_ACCESSED);
238}
239
240static inline pte_t pte_wrprotect(pte_t pte)
241{
242 return __pte(pte_val(pte) & ~_PAGE_RW);
243}
244
245static inline pte_t pte_mkexec(pte_t pte)
246{
247 return __pte(pte_val(pte) & ~_PAGE_NX);
248}
249
250static inline pte_t pte_mkdirty(pte_t pte)
251{
252 return __pte(pte_val(pte) | _PAGE_DIRTY);
253}
254
255static inline pte_t pte_mkyoung(pte_t pte)
256{
257 return __pte(pte_val(pte) | _PAGE_ACCESSED);
258}
259
260static inline pte_t pte_mkwrite(pte_t pte)
261{
262 return __pte(pte_val(pte) | _PAGE_RW);
263}
264
265static inline pte_t pte_mkhuge(pte_t pte)
266{
267 return __pte(pte_val(pte) | _PAGE_PSE);
268}
269
270static inline pte_t pte_clrhuge(pte_t pte)
271{
272 return __pte(pte_val(pte) & ~_PAGE_PSE);
273}
274
275static inline pte_t pte_mkglobal(pte_t pte)
276{
277 return __pte(pte_val(pte) | _PAGE_GLOBAL);
278}
279
280static inline pte_t pte_clrglobal(pte_t pte)
281{
282 return __pte(pte_val(pte) & ~_PAGE_GLOBAL);
283}
284
285static inline pte_t pte_mkspecial(pte_t pte)
286{
287 return __pte(pte_val(pte) | _PAGE_SPECIAL);
288}
289
290extern pteval_t __supported_pte_mask;
291
292static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
293{
294 return __pte((((phys_addr_t)page_nr << PAGE_SHIFT) |
295 pgprot_val(pgprot)) & __supported_pte_mask);
296}
297
298static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
299{
300 return __pmd((((phys_addr_t)page_nr << PAGE_SHIFT) |
301 pgprot_val(pgprot)) & __supported_pte_mask);
302}
303
304static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
305{
306 pteval_t val = pte_val(pte);
307
308 /*
309 * Chop off the NX bit (if present), and add the NX portion of
310 * the newprot (if present):
311 */
312 val &= _PAGE_CHG_MASK;
313 val |= pgprot_val(newprot) & (~_PAGE_CHG_MASK) & __supported_pte_mask;
314
315 return __pte(val);
316}
317
318/* mprotect needs to preserve PAT bits when updating vm_page_prot */
319#define pgprot_modify pgprot_modify
320static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
321{
322 pgprotval_t preservebits = pgprot_val(oldprot) & _PAGE_CHG_MASK;
323 pgprotval_t addbits = pgprot_val(newprot);
324 return __pgprot(preservebits | addbits);
325}
326
327#define pte_pgprot(x) __pgprot(pte_flags(x) & PTE_FLAGS_MASK)
328
329#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
330
331#ifndef __ASSEMBLY__
332#define __HAVE_PHYS_MEM_ACCESS_PROT
333struct file;
334pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
335 unsigned long size, pgprot_t vma_prot);
336int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
337 unsigned long size, pgprot_t *vma_prot);
338#endif
339
340/* Install a pte for a particular vaddr in kernel space. */
341void set_pte_vaddr(unsigned long vaddr, pte_t pte);
342
343#ifdef CONFIG_X86_32
344extern void native_pagetable_setup_start(pgd_t *base);
345extern void native_pagetable_setup_done(pgd_t *base);
346#else
347static inline void native_pagetable_setup_start(pgd_t *base) {}
348static inline void native_pagetable_setup_done(pgd_t *base) {}
349#endif
350
351struct seq_file;
352extern void arch_report_meminfo(struct seq_file *m);
353
354#ifdef CONFIG_PARAVIRT
355#include <asm/paravirt.h>
356#else /* !CONFIG_PARAVIRT */
357#define set_pte(ptep, pte) native_set_pte(ptep, pte)
358#define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte)
359
360#define set_pte_present(mm, addr, ptep, pte) \
361 native_set_pte_present(mm, addr, ptep, pte)
362#define set_pte_atomic(ptep, pte) \
363 native_set_pte_atomic(ptep, pte)
364
365#define set_pmd(pmdp, pmd) native_set_pmd(pmdp, pmd)
366
367#ifndef __PAGETABLE_PUD_FOLDED
368#define set_pgd(pgdp, pgd) native_set_pgd(pgdp, pgd)
369#define pgd_clear(pgd) native_pgd_clear(pgd)
370#endif
371
372#ifndef set_pud
373# define set_pud(pudp, pud) native_set_pud(pudp, pud)
374#endif
375
376#ifndef __PAGETABLE_PMD_FOLDED
377#define pud_clear(pud) native_pud_clear(pud)
378#endif
379
380#define pte_clear(mm, addr, ptep) native_pte_clear(mm, addr, ptep)
381#define pmd_clear(pmd) native_pmd_clear(pmd)
382
383#define pte_update(mm, addr, ptep) do { } while (0)
384#define pte_update_defer(mm, addr, ptep) do { } while (0)
385
386static inline void __init paravirt_pagetable_setup_start(pgd_t *base)
387{
388 native_pagetable_setup_start(base);
389}
390
391static inline void __init paravirt_pagetable_setup_done(pgd_t *base)
392{
393 native_pagetable_setup_done(base);
394}
395#endif /* CONFIG_PARAVIRT */
396
397#endif /* __ASSEMBLY__ */
398
399#ifdef CONFIG_X86_32
400# include "pgtable_32.h"
401#else
402# include "pgtable_64.h"
403#endif
404
405/*
406 * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
407 *
408 * this macro returns the index of the entry in the pgd page which would
409 * control the given virtual address
410 */
411#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
412
413/*
414 * pgd_offset() returns a (pgd_t *)
415 * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
416 */
417#define pgd_offset(mm, address) ((mm)->pgd + pgd_index((address)))
418/*
419 * a shortcut which implies the use of the kernel's pgd, instead
420 * of a process's
421 */
422#define pgd_offset_k(address) pgd_offset(&init_mm, (address))
423
424
425#define KERNEL_PGD_BOUNDARY pgd_index(PAGE_OFFSET)
426#define KERNEL_PGD_PTRS (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY)
427
428#ifndef __ASSEMBLY__
429
430enum {
431 PG_LEVEL_NONE,
432 PG_LEVEL_4K,
433 PG_LEVEL_2M,
434 PG_LEVEL_1G,
435 PG_LEVEL_NUM
436};
437
438#ifdef CONFIG_PROC_FS
439extern void update_page_count(int level, unsigned long pages);
440#else
441static inline void update_page_count(int level, unsigned long pages) { }
442#endif
443
444/*
445 * Helper function that returns the kernel pagetable entry controlling
446 * the virtual address 'address'. NULL means no pagetable entry present.
447 * NOTE: the return type is pte_t but if the pmd is PSE then we return it
448 * as a pte too.
449 */
450extern pte_t *lookup_address(unsigned long address, unsigned int *level);
451
452/* local pte updates need not use xchg for locking */
453static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep)
454{
455 pte_t res = *ptep;
456
457 /* Pure native function needs no input for mm, addr */
458 native_pte_clear(NULL, 0, ptep);
459 return res;
460}
461
462static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr,
463 pte_t *ptep , pte_t pte)
464{
465 native_set_pte(ptep, pte);
466}
467
468#ifndef CONFIG_PARAVIRT
469/*
470 * Rules for using pte_update - it must be called after any PTE update which
471 * has not been done using the set_pte / clear_pte interfaces. It is used by
472 * shadow mode hypervisors to resynchronize the shadow page tables. Kernel PTE
473 * updates should either be sets, clears, or set_pte_atomic for P->P
474 * transitions, which means this hook should only be called for user PTEs.
475 * This hook implies a P->P protection or access change has taken place, which
476 * requires a subsequent TLB flush. The notification can optionally be delayed
477 * until the TLB flush event by using the pte_update_defer form of the
478 * interface, but care must be taken to assure that the flush happens while
479 * still holding the same page table lock so that the shadow and primary pages
480 * do not become out of sync on SMP.
481 */
482#define pte_update(mm, addr, ptep) do { } while (0)
483#define pte_update_defer(mm, addr, ptep) do { } while (0)
484#endif
485
486/*
487 * We only update the dirty/accessed state if we set
488 * the dirty bit by hand in the kernel, since the hardware
489 * will do the accessed bit for us, and we don't want to
490 * race with other CPU's that might be updating the dirty
491 * bit at the same time.
492 */
493struct vm_area_struct;
494
495#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
496extern int ptep_set_access_flags(struct vm_area_struct *vma,
497 unsigned long address, pte_t *ptep,
498 pte_t entry, int dirty);
499
500#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
501extern int ptep_test_and_clear_young(struct vm_area_struct *vma,
502 unsigned long addr, pte_t *ptep);
503
504#define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
505extern int ptep_clear_flush_young(struct vm_area_struct *vma,
506 unsigned long address, pte_t *ptep);
507
508#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
509static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
510 pte_t *ptep)
511{
512 pte_t pte = native_ptep_get_and_clear(ptep);
513 pte_update(mm, addr, ptep);
514 return pte;
515}
516
517#define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
518static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm,
519 unsigned long addr, pte_t *ptep,
520 int full)
521{
522 pte_t pte;
523 if (full) {
524 /*
525 * Full address destruction in progress; paravirt does not
526 * care about updates and native needs no locking
527 */
528 pte = native_local_ptep_get_and_clear(ptep);
529 } else {
530 pte = ptep_get_and_clear(mm, addr, ptep);
531 }
532 return pte;
533}
534
535#define __HAVE_ARCH_PTEP_SET_WRPROTECT
536static inline void ptep_set_wrprotect(struct mm_struct *mm,
537 unsigned long addr, pte_t *ptep)
538{
539 clear_bit(_PAGE_BIT_RW, (unsigned long *)&ptep->pte);
540 pte_update(mm, addr, ptep);
541}
542
543/*
544 * clone_pgd_range(pgd_t *dst, pgd_t *src, int count);
545 *
546 * dst - pointer to pgd range anwhere on a pgd page
547 * src - ""
548 * count - the number of pgds to copy.
549 *
550 * dst and src can be on the same page, but the range must not overlap,
551 * and must not cross a page boundary.
552 */
553static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
554{
555 memcpy(dst, src, count * sizeof(pgd_t));
556}
557
558
559#include <asm-generic/pgtable.h>
560#endif /* __ASSEMBLY__ */
561
562#endif /* _ASM_X86_PGTABLE_H */
diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
new file mode 100644
index 000000000000..f9d5889b336b
--- /dev/null
+++ b/arch/x86/include/asm/pgtable_32.h
@@ -0,0 +1,191 @@
1#ifndef _ASM_X86_PGTABLE_32_H
2#define _ASM_X86_PGTABLE_32_H
3
4
5/*
6 * The Linux memory management assumes a three-level page table setup. On
7 * the i386, we use that, but "fold" the mid level into the top-level page
8 * table, so that we physically have the same two-level page table as the
9 * i386 mmu expects.
10 *
11 * This file contains the functions and defines necessary to modify and use
12 * the i386 page table tree.
13 */
14#ifndef __ASSEMBLY__
15#include <asm/processor.h>
16#include <asm/fixmap.h>
17#include <linux/threads.h>
18#include <asm/paravirt.h>
19
20#include <linux/bitops.h>
21#include <linux/slab.h>
22#include <linux/list.h>
23#include <linux/spinlock.h>
24
25struct mm_struct;
26struct vm_area_struct;
27
28extern pgd_t swapper_pg_dir[1024];
29
30static inline void pgtable_cache_init(void) { }
31static inline void check_pgt_cache(void) { }
32void paging_init(void);
33
34extern void set_pmd_pfn(unsigned long, unsigned long, pgprot_t);
35
36/*
37 * The Linux x86 paging architecture is 'compile-time dual-mode', it
38 * implements both the traditional 2-level x86 page tables and the
39 * newer 3-level PAE-mode page tables.
40 */
41#ifdef CONFIG_X86_PAE
42# include <asm/pgtable-3level-defs.h>
43# define PMD_SIZE (1UL << PMD_SHIFT)
44# define PMD_MASK (~(PMD_SIZE - 1))
45#else
46# include <asm/pgtable-2level-defs.h>
47#endif
48
49#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
50#define PGDIR_MASK (~(PGDIR_SIZE - 1))
51
52/* Just any arbitrary offset to the start of the vmalloc VM area: the
53 * current 8MB value just means that there will be a 8MB "hole" after the
54 * physical memory until the kernel virtual memory starts. That means that
55 * any out-of-bounds memory accesses will hopefully be caught.
56 * The vmalloc() routines leaves a hole of 4kB between each vmalloced
57 * area for the same reason. ;)
58 */
59#define VMALLOC_OFFSET (8 * 1024 * 1024)
60#define VMALLOC_START ((unsigned long)high_memory + VMALLOC_OFFSET)
61#ifdef CONFIG_X86_PAE
62#define LAST_PKMAP 512
63#else
64#define LAST_PKMAP 1024
65#endif
66
67#define PKMAP_BASE ((FIXADDR_BOOT_START - PAGE_SIZE * (LAST_PKMAP + 1)) \
68 & PMD_MASK)
69
70#ifdef CONFIG_HIGHMEM
71# define VMALLOC_END (PKMAP_BASE - 2 * PAGE_SIZE)
72#else
73# define VMALLOC_END (FIXADDR_START - 2 * PAGE_SIZE)
74#endif
75
76#define MAXMEM (VMALLOC_END - PAGE_OFFSET - __VMALLOC_RESERVE)
77
78/*
79 * Define this if things work differently on an i386 and an i486:
80 * it will (on an i486) warn about kernel memory accesses that are
81 * done without a 'access_ok(VERIFY_WRITE,..)'
82 */
83#undef TEST_ACCESS_OK
84
85/* The boot page tables (all created as a single array) */
86extern unsigned long pg0[];
87
88#define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE))
89
90/* To avoid harmful races, pmd_none(x) should check only the lower when PAE */
91#define pmd_none(x) (!(unsigned long)pmd_val((x)))
92#define pmd_present(x) (pmd_val((x)) & _PAGE_PRESENT)
93#define pmd_bad(x) ((pmd_val(x) & (PTE_FLAGS_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
94
95#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
96
97#ifdef CONFIG_X86_PAE
98# include <asm/pgtable-3level.h>
99#else
100# include <asm/pgtable-2level.h>
101#endif
102
103/*
104 * Macro to mark a page protection value as "uncacheable".
105 * On processors which do not support it, this is a no-op.
106 */
107#define pgprot_noncached(prot) \
108 ((boot_cpu_data.x86 > 3) \
109 ? (__pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT)) \
110 : (prot))
111
112/*
113 * Conversion functions: convert a page and protection to a page entry,
114 * and a page entry and page directory to the page they refer to.
115 */
116#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
117
118
119static inline int pud_large(pud_t pud) { return 0; }
120
121/*
122 * the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
123 *
124 * this macro returns the index of the entry in the pmd page which would
125 * control the given virtual address
126 */
127#define pmd_index(address) \
128 (((address) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
129
130/*
131 * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE]
132 *
133 * this macro returns the index of the entry in the pte page which would
134 * control the given virtual address
135 */
136#define pte_index(address) \
137 (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
138#define pte_offset_kernel(dir, address) \
139 ((pte_t *)pmd_page_vaddr(*(dir)) + pte_index((address)))
140
141#define pmd_page(pmd) (pfn_to_page(pmd_val((pmd)) >> PAGE_SHIFT))
142
143#define pmd_page_vaddr(pmd) \
144 ((unsigned long)__va(pmd_val((pmd)) & PTE_PFN_MASK))
145
146#if defined(CONFIG_HIGHPTE)
147#define pte_offset_map(dir, address) \
148 ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE0) + \
149 pte_index((address)))
150#define pte_offset_map_nested(dir, address) \
151 ((pte_t *)kmap_atomic_pte(pmd_page(*(dir)), KM_PTE1) + \
152 pte_index((address)))
153#define pte_unmap(pte) kunmap_atomic((pte), KM_PTE0)
154#define pte_unmap_nested(pte) kunmap_atomic((pte), KM_PTE1)
155#else
156#define pte_offset_map(dir, address) \
157 ((pte_t *)page_address(pmd_page(*(dir))) + pte_index((address)))
158#define pte_offset_map_nested(dir, address) pte_offset_map((dir), (address))
159#define pte_unmap(pte) do { } while (0)
160#define pte_unmap_nested(pte) do { } while (0)
161#endif
162
163/* Clear a kernel PTE and flush it from the TLB */
164#define kpte_clear_flush(ptep, vaddr) \
165do { \
166 pte_clear(&init_mm, (vaddr), (ptep)); \
167 __flush_tlb_one((vaddr)); \
168} while (0)
169
170/*
171 * The i386 doesn't have any external MMU info: the kernel page
172 * tables contain all the necessary information.
173 */
174#define update_mmu_cache(vma, address, pte) do { } while (0)
175
176#endif /* !__ASSEMBLY__ */
177
178/*
179 * kern_addr_valid() is (1) for FLATMEM and (0) for
180 * SPARSEMEM and DISCONTIGMEM
181 */
182#ifdef CONFIG_FLATMEM
183#define kern_addr_valid(addr) (1)
184#else
185#define kern_addr_valid(kaddr) (0)
186#endif
187
188#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
189 remap_pfn_range(vma, vaddr, pfn, size, prot)
190
191#endif /* _ASM_X86_PGTABLE_32_H */
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
new file mode 100644
index 000000000000..545a0e042bb2
--- /dev/null
+++ b/arch/x86/include/asm/pgtable_64.h
@@ -0,0 +1,285 @@
1#ifndef _ASM_X86_PGTABLE_64_H
2#define _ASM_X86_PGTABLE_64_H
3
4#include <linux/const.h>
5#ifndef __ASSEMBLY__
6
7/*
8 * This file contains the functions and defines necessary to modify and use
9 * the x86-64 page table tree.
10 */
11#include <asm/processor.h>
12#include <linux/bitops.h>
13#include <linux/threads.h>
14#include <asm/pda.h>
15
16extern pud_t level3_kernel_pgt[512];
17extern pud_t level3_ident_pgt[512];
18extern pmd_t level2_kernel_pgt[512];
19extern pmd_t level2_fixmap_pgt[512];
20extern pmd_t level2_ident_pgt[512];
21extern pgd_t init_level4_pgt[];
22
23#define swapper_pg_dir init_level4_pgt
24
25extern void paging_init(void);
26
27#endif /* !__ASSEMBLY__ */
28
29#define SHARED_KERNEL_PMD 0
30
31/*
32 * PGDIR_SHIFT determines what a top-level page table entry can map
33 */
34#define PGDIR_SHIFT 39
35#define PTRS_PER_PGD 512
36
37/*
38 * 3rd level page
39 */
40#define PUD_SHIFT 30
41#define PTRS_PER_PUD 512
42
43/*
44 * PMD_SHIFT determines the size of the area a middle-level
45 * page table can map
46 */
47#define PMD_SHIFT 21
48#define PTRS_PER_PMD 512
49
50/*
51 * entries per page directory level
52 */
53#define PTRS_PER_PTE 512
54
55#ifndef __ASSEMBLY__
56
57#define pte_ERROR(e) \
58 printk("%s:%d: bad pte %p(%016lx).\n", \
59 __FILE__, __LINE__, &(e), pte_val(e))
60#define pmd_ERROR(e) \
61 printk("%s:%d: bad pmd %p(%016lx).\n", \
62 __FILE__, __LINE__, &(e), pmd_val(e))
63#define pud_ERROR(e) \
64 printk("%s:%d: bad pud %p(%016lx).\n", \
65 __FILE__, __LINE__, &(e), pud_val(e))
66#define pgd_ERROR(e) \
67 printk("%s:%d: bad pgd %p(%016lx).\n", \
68 __FILE__, __LINE__, &(e), pgd_val(e))
69
70#define pgd_none(x) (!pgd_val(x))
71#define pud_none(x) (!pud_val(x))
72
73struct mm_struct;
74
75void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte);
76
77
78static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr,
79 pte_t *ptep)
80{
81 *ptep = native_make_pte(0);
82}
83
84static inline void native_set_pte(pte_t *ptep, pte_t pte)
85{
86 *ptep = pte;
87}
88
89static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
90{
91 native_set_pte(ptep, pte);
92}
93
94static inline pte_t native_ptep_get_and_clear(pte_t *xp)
95{
96#ifdef CONFIG_SMP
97 return native_make_pte(xchg(&xp->pte, 0));
98#else
99 /* native_local_ptep_get_and_clear,
100 but duplicated because of cyclic dependency */
101 pte_t ret = *xp;
102 native_pte_clear(NULL, 0, xp);
103 return ret;
104#endif
105}
106
107static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
108{
109 *pmdp = pmd;
110}
111
112static inline void native_pmd_clear(pmd_t *pmd)
113{
114 native_set_pmd(pmd, native_make_pmd(0));
115}
116
117static inline void native_set_pud(pud_t *pudp, pud_t pud)
118{
119 *pudp = pud;
120}
121
122static inline void native_pud_clear(pud_t *pud)
123{
124 native_set_pud(pud, native_make_pud(0));
125}
126
127static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd)
128{
129 *pgdp = pgd;
130}
131
132static inline void native_pgd_clear(pgd_t *pgd)
133{
134 native_set_pgd(pgd, native_make_pgd(0));
135}
136
137#define pte_same(a, b) ((a).pte == (b).pte)
138
139#endif /* !__ASSEMBLY__ */
140
141#define PMD_SIZE (_AC(1, UL) << PMD_SHIFT)
142#define PMD_MASK (~(PMD_SIZE - 1))
143#define PUD_SIZE (_AC(1, UL) << PUD_SHIFT)
144#define PUD_MASK (~(PUD_SIZE - 1))
145#define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT)
146#define PGDIR_MASK (~(PGDIR_SIZE - 1))
147
148
149#define MAXMEM _AC(0x00003fffffffffff, UL)
150#define VMALLOC_START _AC(0xffffc20000000000, UL)
151#define VMALLOC_END _AC(0xffffe1ffffffffff, UL)
152#define VMEMMAP_START _AC(0xffffe20000000000, UL)
153#define MODULES_VADDR _AC(0xffffffffa0000000, UL)
154#define MODULES_END _AC(0xffffffffff000000, UL)
155#define MODULES_LEN (MODULES_END - MODULES_VADDR)
156
157#ifndef __ASSEMBLY__
158
159static inline int pgd_bad(pgd_t pgd)
160{
161 return (pgd_val(pgd) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE;
162}
163
164static inline int pud_bad(pud_t pud)
165{
166 return (pud_val(pud) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE;
167}
168
169static inline int pmd_bad(pmd_t pmd)
170{
171 return (pmd_val(pmd) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE;
172}
173
174#define pte_none(x) (!pte_val((x)))
175#define pte_present(x) (pte_val((x)) & (_PAGE_PRESENT | _PAGE_PROTNONE))
176
177#define pages_to_mb(x) ((x) >> (20 - PAGE_SHIFT)) /* FIXME: is this right? */
178
179/*
180 * Macro to mark a page protection value as "uncacheable".
181 */
182#define pgprot_noncached(prot) \
183 (__pgprot(pgprot_val((prot)) | _PAGE_PCD | _PAGE_PWT))
184
185/*
186 * Conversion functions: convert a page and protection to a page entry,
187 * and a page entry and page directory to the page they refer to.
188 */
189
190/*
191 * Level 4 access.
192 */
193#define pgd_page_vaddr(pgd) \
194 ((unsigned long)__va((unsigned long)pgd_val((pgd)) & PTE_PFN_MASK))
195#define pgd_page(pgd) (pfn_to_page(pgd_val((pgd)) >> PAGE_SHIFT))
196#define pgd_present(pgd) (pgd_val(pgd) & _PAGE_PRESENT)
197static inline int pgd_large(pgd_t pgd) { return 0; }
198#define mk_kernel_pgd(address) __pgd((address) | _KERNPG_TABLE)
199
200/* PUD - Level3 access */
201/* to find an entry in a page-table-directory. */
202#define pud_page_vaddr(pud) \
203 ((unsigned long)__va(pud_val((pud)) & PHYSICAL_PAGE_MASK))
204#define pud_page(pud) (pfn_to_page(pud_val((pud)) >> PAGE_SHIFT))
205#define pud_index(address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1))
206#define pud_offset(pgd, address) \
207 ((pud_t *)pgd_page_vaddr(*(pgd)) + pud_index((address)))
208#define pud_present(pud) (pud_val((pud)) & _PAGE_PRESENT)
209
210static inline int pud_large(pud_t pte)
211{
212 return (pud_val(pte) & (_PAGE_PSE | _PAGE_PRESENT)) ==
213 (_PAGE_PSE | _PAGE_PRESENT);
214}
215
216/* PMD - Level 2 access */
217#define pmd_page_vaddr(pmd) ((unsigned long) __va(pmd_val((pmd)) & PTE_PFN_MASK))
218#define pmd_page(pmd) (pfn_to_page(pmd_val((pmd)) >> PAGE_SHIFT))
219
220#define pmd_index(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
221#define pmd_offset(dir, address) ((pmd_t *)pud_page_vaddr(*(dir)) + \
222 pmd_index(address))
223#define pmd_none(x) (!pmd_val((x)))
224#define pmd_present(x) (pmd_val((x)) & _PAGE_PRESENT)
225#define pfn_pmd(nr, prot) (__pmd(((nr) << PAGE_SHIFT) | pgprot_val((prot))))
226#define pmd_pfn(x) ((pmd_val((x)) & __PHYSICAL_MASK) >> PAGE_SHIFT)
227
228#define pte_to_pgoff(pte) ((pte_val((pte)) & PHYSICAL_PAGE_MASK) >> PAGE_SHIFT)
229#define pgoff_to_pte(off) ((pte_t) { .pte = ((off) << PAGE_SHIFT) | \
230 _PAGE_FILE })
231#define PTE_FILE_MAX_BITS __PHYSICAL_MASK_SHIFT
232
233/* PTE - Level 1 access. */
234
235/* page, protection -> pte */
236#define mk_pte(page, pgprot) pfn_pte(page_to_pfn((page)), (pgprot))
237
238#define pte_index(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
239#define pte_offset_kernel(dir, address) ((pte_t *) pmd_page_vaddr(*(dir)) + \
240 pte_index((address)))
241
242/* x86-64 always has all page tables mapped. */
243#define pte_offset_map(dir, address) pte_offset_kernel((dir), (address))
244#define pte_offset_map_nested(dir, address) pte_offset_kernel((dir), (address))
245#define pte_unmap(pte) /* NOP */
246#define pte_unmap_nested(pte) /* NOP */
247
248#define update_mmu_cache(vma, address, pte) do { } while (0)
249
250extern int direct_gbpages;
251
252/* Encode and de-code a swap entry */
253#define __swp_type(x) (((x).val >> 1) & 0x3f)
254#define __swp_offset(x) ((x).val >> 8)
255#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | \
256 ((offset) << 8) })
257#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val((pte)) })
258#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val })
259
260extern int kern_addr_valid(unsigned long addr);
261extern void cleanup_highmap(void);
262
263#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
264 remap_pfn_range(vma, vaddr, pfn, size, prot)
265
266#define HAVE_ARCH_UNMAPPED_AREA
267#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
268
269#define pgtable_cache_init() do { } while (0)
270#define check_pgt_cache() do { } while (0)
271
272#define PAGE_AGP PAGE_KERNEL_NOCACHE
273#define HAVE_PAGE_AGP 1
274
275/* fs/proc/kcore.c */
276#define kc_vaddr_to_offset(v) ((v) & __VIRTUAL_MASK)
277#define kc_offset_to_vaddr(o) \
278 (((o) & (1UL << (__VIRTUAL_MASK_SHIFT - 1))) \
279 ? ((o) | ~__VIRTUAL_MASK) \
280 : (o))
281
282#define __HAVE_ARCH_PTE_SAME
283#endif /* !__ASSEMBLY__ */
284
285#endif /* _ASM_X86_PGTABLE_64_H */
diff --git a/arch/x86/include/asm/poll.h b/arch/x86/include/asm/poll.h
new file mode 100644
index 000000000000..c98509d3149e
--- /dev/null
+++ b/arch/x86/include/asm/poll.h
@@ -0,0 +1 @@
#include <asm-generic/poll.h>
diff --git a/arch/x86/include/asm/posix_types.h b/arch/x86/include/asm/posix_types.h
new file mode 100644
index 000000000000..bb7133dc155d
--- /dev/null
+++ b/arch/x86/include/asm/posix_types.h
@@ -0,0 +1,13 @@
1#ifdef __KERNEL__
2# ifdef CONFIG_X86_32
3# include "posix_types_32.h"
4# else
5# include "posix_types_64.h"
6# endif
7#else
8# ifdef __i386__
9# include "posix_types_32.h"
10# else
11# include "posix_types_64.h"
12# endif
13#endif
diff --git a/arch/x86/include/asm/posix_types_32.h b/arch/x86/include/asm/posix_types_32.h
new file mode 100644
index 000000000000..f7d9adf82e53
--- /dev/null
+++ b/arch/x86/include/asm/posix_types_32.h
@@ -0,0 +1,85 @@
1#ifndef _ASM_X86_POSIX_TYPES_32_H
2#define _ASM_X86_POSIX_TYPES_32_H
3
4/*
5 * This file is generally used by user-level software, so you need to
6 * be a little careful about namespace pollution etc. Also, we cannot
7 * assume GCC is being used.
8 */
9
10typedef unsigned long __kernel_ino_t;
11typedef unsigned short __kernel_mode_t;
12typedef unsigned short __kernel_nlink_t;
13typedef long __kernel_off_t;
14typedef int __kernel_pid_t;
15typedef unsigned short __kernel_ipc_pid_t;
16typedef unsigned short __kernel_uid_t;
17typedef unsigned short __kernel_gid_t;
18typedef unsigned int __kernel_size_t;
19typedef int __kernel_ssize_t;
20typedef int __kernel_ptrdiff_t;
21typedef long __kernel_time_t;
22typedef long __kernel_suseconds_t;
23typedef long __kernel_clock_t;
24typedef int __kernel_timer_t;
25typedef int __kernel_clockid_t;
26typedef int __kernel_daddr_t;
27typedef char * __kernel_caddr_t;
28typedef unsigned short __kernel_uid16_t;
29typedef unsigned short __kernel_gid16_t;
30typedef unsigned int __kernel_uid32_t;
31typedef unsigned int __kernel_gid32_t;
32
33typedef unsigned short __kernel_old_uid_t;
34typedef unsigned short __kernel_old_gid_t;
35typedef unsigned short __kernel_old_dev_t;
36
37#ifdef __GNUC__
38typedef long long __kernel_loff_t;
39#endif
40
41typedef struct {
42 int val[2];
43} __kernel_fsid_t;
44
45#if defined(__KERNEL__)
46
47#undef __FD_SET
48#define __FD_SET(fd,fdsetp) \
49 asm volatile("btsl %1,%0": \
50 "+m" (*(__kernel_fd_set *)(fdsetp)) \
51 : "r" ((int)(fd)))
52
53#undef __FD_CLR
54#define __FD_CLR(fd,fdsetp) \
55 asm volatile("btrl %1,%0": \
56 "+m" (*(__kernel_fd_set *)(fdsetp)) \
57 : "r" ((int) (fd)))
58
59#undef __FD_ISSET
60#define __FD_ISSET(fd,fdsetp) \
61 (__extension__ \
62 ({ \
63 unsigned char __result; \
64 asm volatile("btl %1,%2 ; setb %0" \
65 : "=q" (__result) \
66 : "r" ((int)(fd)), \
67 "m" (*(__kernel_fd_set *)(fdsetp))); \
68 __result; \
69}))
70
71#undef __FD_ZERO
72#define __FD_ZERO(fdsetp) \
73do { \
74 int __d0, __d1; \
75 asm volatile("cld ; rep ; stosl" \
76 : "=m" (*(__kernel_fd_set *)(fdsetp)), \
77 "=&c" (__d0), "=&D" (__d1) \
78 : "a" (0), "1" (__FDSET_LONGS), \
79 "2" ((__kernel_fd_set *)(fdsetp)) \
80 : "memory"); \
81} while (0)
82
83#endif /* defined(__KERNEL__) */
84
85#endif /* _ASM_X86_POSIX_TYPES_32_H */
diff --git a/arch/x86/include/asm/posix_types_64.h b/arch/x86/include/asm/posix_types_64.h
new file mode 100644
index 000000000000..eb8d2d92b63e
--- /dev/null
+++ b/arch/x86/include/asm/posix_types_64.h
@@ -0,0 +1,119 @@
1#ifndef _ASM_X86_POSIX_TYPES_64_H
2#define _ASM_X86_POSIX_TYPES_64_H
3
4/*
5 * This file is generally used by user-level software, so you need to
6 * be a little careful about namespace pollution etc. Also, we cannot
7 * assume GCC is being used.
8 */
9
10typedef unsigned long __kernel_ino_t;
11typedef unsigned int __kernel_mode_t;
12typedef unsigned long __kernel_nlink_t;
13typedef long __kernel_off_t;
14typedef int __kernel_pid_t;
15typedef int __kernel_ipc_pid_t;
16typedef unsigned int __kernel_uid_t;
17typedef unsigned int __kernel_gid_t;
18typedef unsigned long __kernel_size_t;
19typedef long __kernel_ssize_t;
20typedef long __kernel_ptrdiff_t;
21typedef long __kernel_time_t;
22typedef long __kernel_suseconds_t;
23typedef long __kernel_clock_t;
24typedef int __kernel_timer_t;
25typedef int __kernel_clockid_t;
26typedef int __kernel_daddr_t;
27typedef char * __kernel_caddr_t;
28typedef unsigned short __kernel_uid16_t;
29typedef unsigned short __kernel_gid16_t;
30
31#ifdef __GNUC__
32typedef long long __kernel_loff_t;
33#endif
34
35typedef struct {
36 int val[2];
37} __kernel_fsid_t;
38
39typedef unsigned short __kernel_old_uid_t;
40typedef unsigned short __kernel_old_gid_t;
41typedef __kernel_uid_t __kernel_uid32_t;
42typedef __kernel_gid_t __kernel_gid32_t;
43
44typedef unsigned long __kernel_old_dev_t;
45
46#ifdef __KERNEL__
47
48#undef __FD_SET
49static inline void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
50{
51 unsigned long _tmp = fd / __NFDBITS;
52 unsigned long _rem = fd % __NFDBITS;
53 fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
54}
55
56#undef __FD_CLR
57static inline void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
58{
59 unsigned long _tmp = fd / __NFDBITS;
60 unsigned long _rem = fd % __NFDBITS;
61 fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem);
62}
63
64#undef __FD_ISSET
65static inline int __FD_ISSET(unsigned long fd, __const__ __kernel_fd_set *p)
66{
67 unsigned long _tmp = fd / __NFDBITS;
68 unsigned long _rem = fd % __NFDBITS;
69 return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0;
70}
71
72/*
73 * This will unroll the loop for the normal constant cases (8 or 32 longs,
74 * for 256 and 1024-bit fd_sets respectively)
75 */
76#undef __FD_ZERO
77static inline void __FD_ZERO(__kernel_fd_set *p)
78{
79 unsigned long *tmp = p->fds_bits;
80 int i;
81
82 if (__builtin_constant_p(__FDSET_LONGS)) {
83 switch (__FDSET_LONGS) {
84 case 32:
85 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
86 tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
87 tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0;
88 tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0;
89 tmp[16] = 0; tmp[17] = 0; tmp[18] = 0; tmp[19] = 0;
90 tmp[20] = 0; tmp[21] = 0; tmp[22] = 0; tmp[23] = 0;
91 tmp[24] = 0; tmp[25] = 0; tmp[26] = 0; tmp[27] = 0;
92 tmp[28] = 0; tmp[29] = 0; tmp[30] = 0; tmp[31] = 0;
93 return;
94 case 16:
95 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
96 tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
97 tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0;
98 tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0;
99 return;
100 case 8:
101 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
102 tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
103 return;
104 case 4:
105 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
106 return;
107 }
108 }
109 i = __FDSET_LONGS;
110 while (i) {
111 i--;
112 *tmp = 0;
113 tmp++;
114 }
115}
116
117#endif /* defined(__KERNEL__) */
118
119#endif /* _ASM_X86_POSIX_TYPES_64_H */
diff --git a/arch/x86/include/asm/prctl.h b/arch/x86/include/asm/prctl.h
new file mode 100644
index 000000000000..fe681147a4f7
--- /dev/null
+++ b/arch/x86/include/asm/prctl.h
@@ -0,0 +1,10 @@
1#ifndef _ASM_X86_PRCTL_H
2#define _ASM_X86_PRCTL_H
3
4#define ARCH_SET_GS 0x1001
5#define ARCH_SET_FS 0x1002
6#define ARCH_GET_FS 0x1003
7#define ARCH_GET_GS 0x1004
8
9
10#endif /* _ASM_X86_PRCTL_H */
diff --git a/arch/x86/include/asm/processor-cyrix.h b/arch/x86/include/asm/processor-cyrix.h
new file mode 100644
index 000000000000..1198f2a0e42c
--- /dev/null
+++ b/arch/x86/include/asm/processor-cyrix.h
@@ -0,0 +1,38 @@
1/*
2 * NSC/Cyrix CPU indexed register access. Must be inlined instead of
3 * macros to ensure correct access ordering
4 * Access order is always 0x22 (=offset), 0x23 (=value)
5 *
6 * When using the old macros a line like
7 * setCx86(CX86_CCR2, getCx86(CX86_CCR2) | 0x88);
8 * gets expanded to:
9 * do {
10 * outb((CX86_CCR2), 0x22);
11 * outb((({
12 * outb((CX86_CCR2), 0x22);
13 * inb(0x23);
14 * }) | 0x88), 0x23);
15 * } while (0);
16 *
17 * which in fact violates the access order (= 0x22, 0x22, 0x23, 0x23).
18 */
19
20static inline u8 getCx86(u8 reg)
21{
22 outb(reg, 0x22);
23 return inb(0x23);
24}
25
26static inline void setCx86(u8 reg, u8 data)
27{
28 outb(reg, 0x22);
29 outb(data, 0x23);
30}
31
32#define getCx86_old(reg) ({ outb((reg), 0x22); inb(0x23); })
33
34#define setCx86_old(reg, data) do { \
35 outb((reg), 0x22); \
36 outb((data), 0x23); \
37} while (0)
38
diff --git a/arch/x86/include/asm/processor-flags.h b/arch/x86/include/asm/processor-flags.h
new file mode 100644
index 000000000000..7a3e836eb2a9
--- /dev/null
+++ b/arch/x86/include/asm/processor-flags.h
@@ -0,0 +1,100 @@
1#ifndef _ASM_X86_PROCESSOR_FLAGS_H
2#define _ASM_X86_PROCESSOR_FLAGS_H
3/* Various flags defined: can be included from assembler. */
4
5/*
6 * EFLAGS bits
7 */
8#define X86_EFLAGS_CF 0x00000001 /* Carry Flag */
9#define X86_EFLAGS_PF 0x00000004 /* Parity Flag */
10#define X86_EFLAGS_AF 0x00000010 /* Auxillary carry Flag */
11#define X86_EFLAGS_ZF 0x00000040 /* Zero Flag */
12#define X86_EFLAGS_SF 0x00000080 /* Sign Flag */
13#define X86_EFLAGS_TF 0x00000100 /* Trap Flag */
14#define X86_EFLAGS_IF 0x00000200 /* Interrupt Flag */
15#define X86_EFLAGS_DF 0x00000400 /* Direction Flag */
16#define X86_EFLAGS_OF 0x00000800 /* Overflow Flag */
17#define X86_EFLAGS_IOPL 0x00003000 /* IOPL mask */
18#define X86_EFLAGS_NT 0x00004000 /* Nested Task */
19#define X86_EFLAGS_RF 0x00010000 /* Resume Flag */
20#define X86_EFLAGS_VM 0x00020000 /* Virtual Mode */
21#define X86_EFLAGS_AC 0x00040000 /* Alignment Check */
22#define X86_EFLAGS_VIF 0x00080000 /* Virtual Interrupt Flag */
23#define X86_EFLAGS_VIP 0x00100000 /* Virtual Interrupt Pending */
24#define X86_EFLAGS_ID 0x00200000 /* CPUID detection flag */
25
26/*
27 * Basic CPU control in CR0
28 */
29#define X86_CR0_PE 0x00000001 /* Protection Enable */
30#define X86_CR0_MP 0x00000002 /* Monitor Coprocessor */
31#define X86_CR0_EM 0x00000004 /* Emulation */
32#define X86_CR0_TS 0x00000008 /* Task Switched */
33#define X86_CR0_ET 0x00000010 /* Extension Type */
34#define X86_CR0_NE 0x00000020 /* Numeric Error */
35#define X86_CR0_WP 0x00010000 /* Write Protect */
36#define X86_CR0_AM 0x00040000 /* Alignment Mask */
37#define X86_CR0_NW 0x20000000 /* Not Write-through */
38#define X86_CR0_CD 0x40000000 /* Cache Disable */
39#define X86_CR0_PG 0x80000000 /* Paging */
40
41/*
42 * Paging options in CR3
43 */
44#define X86_CR3_PWT 0x00000008 /* Page Write Through */
45#define X86_CR3_PCD 0x00000010 /* Page Cache Disable */
46
47/*
48 * Intel CPU features in CR4
49 */
50#define X86_CR4_VME 0x00000001 /* enable vm86 extensions */
51#define X86_CR4_PVI 0x00000002 /* virtual interrupts flag enable */
52#define X86_CR4_TSD 0x00000004 /* disable time stamp at ipl 3 */
53#define X86_CR4_DE 0x00000008 /* enable debugging extensions */
54#define X86_CR4_PSE 0x00000010 /* enable page size extensions */
55#define X86_CR4_PAE 0x00000020 /* enable physical address extensions */
56#define X86_CR4_MCE 0x00000040 /* Machine check enable */
57#define X86_CR4_PGE 0x00000080 /* enable global pages */
58#define X86_CR4_PCE 0x00000100 /* enable performance counters at ipl 3 */
59#define X86_CR4_OSFXSR 0x00000200 /* enable fast FPU save and restore */
60#define X86_CR4_OSXMMEXCPT 0x00000400 /* enable unmasked SSE exceptions */
61#define X86_CR4_VMXE 0x00002000 /* enable VMX virtualization */
62#define X86_CR4_OSXSAVE 0x00040000 /* enable xsave and xrestore */
63
64/*
65 * x86-64 Task Priority Register, CR8
66 */
67#define X86_CR8_TPR 0x0000000F /* task priority register */
68
69/*
70 * AMD and Transmeta use MSRs for configuration; see <asm/msr-index.h>
71 */
72
73/*
74 * NSC/Cyrix CPU configuration register indexes
75 */
76#define CX86_PCR0 0x20
77#define CX86_GCR 0xb8
78#define CX86_CCR0 0xc0
79#define CX86_CCR1 0xc1
80#define CX86_CCR2 0xc2
81#define CX86_CCR3 0xc3
82#define CX86_CCR4 0xe8
83#define CX86_CCR5 0xe9
84#define CX86_CCR6 0xea
85#define CX86_CCR7 0xeb
86#define CX86_PCR1 0xf0
87#define CX86_DIR0 0xfe
88#define CX86_DIR1 0xff
89#define CX86_ARR_BASE 0xc4
90#define CX86_RCR_BASE 0xdc
91
92#ifdef __KERNEL__
93#ifdef CONFIG_VM86
94#define X86_VM_MASK X86_EFLAGS_VM
95#else
96#define X86_VM_MASK 0 /* No VM86 support */
97#endif
98#endif
99
100#endif /* _ASM_X86_PROCESSOR_FLAGS_H */
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
new file mode 100644
index 000000000000..5ca01e383269
--- /dev/null
+++ b/arch/x86/include/asm/processor.h
@@ -0,0 +1,936 @@
1#ifndef _ASM_X86_PROCESSOR_H
2#define _ASM_X86_PROCESSOR_H
3
4#include <asm/processor-flags.h>
5
6/* Forward declaration, a strange C thing */
7struct task_struct;
8struct mm_struct;
9
10#include <asm/vm86.h>
11#include <asm/math_emu.h>
12#include <asm/segment.h>
13#include <asm/types.h>
14#include <asm/sigcontext.h>
15#include <asm/current.h>
16#include <asm/cpufeature.h>
17#include <asm/system.h>
18#include <asm/page.h>
19#include <asm/percpu.h>
20#include <asm/msr.h>
21#include <asm/desc_defs.h>
22#include <asm/nops.h>
23#include <asm/ds.h>
24
25#include <linux/personality.h>
26#include <linux/cpumask.h>
27#include <linux/cache.h>
28#include <linux/threads.h>
29#include <linux/init.h>
30
31/*
32 * Default implementation of macro that returns current
33 * instruction pointer ("program counter").
34 */
35static inline void *current_text_addr(void)
36{
37 void *pc;
38
39 asm volatile("mov $1f, %0; 1:":"=r" (pc));
40
41 return pc;
42}
43
44#ifdef CONFIG_X86_VSMP
45# define ARCH_MIN_TASKALIGN (1 << INTERNODE_CACHE_SHIFT)
46# define ARCH_MIN_MMSTRUCT_ALIGN (1 << INTERNODE_CACHE_SHIFT)
47#else
48# define ARCH_MIN_TASKALIGN 16
49# define ARCH_MIN_MMSTRUCT_ALIGN 0
50#endif
51
52/*
53 * CPU type and hardware bug flags. Kept separately for each CPU.
54 * Members of this structure are referenced in head.S, so think twice
55 * before touching them. [mj]
56 */
57
58struct cpuinfo_x86 {
59 __u8 x86; /* CPU family */
60 __u8 x86_vendor; /* CPU vendor */
61 __u8 x86_model;
62 __u8 x86_mask;
63#ifdef CONFIG_X86_32
64 char wp_works_ok; /* It doesn't on 386's */
65
66 /* Problems on some 486Dx4's and old 386's: */
67 char hlt_works_ok;
68 char hard_math;
69 char rfu;
70 char fdiv_bug;
71 char f00f_bug;
72 char coma_bug;
73 char pad0;
74#else
75 /* Number of 4K pages in DTLB/ITLB combined(in pages): */
76 int x86_tlbsize;
77 __u8 x86_virt_bits;
78 __u8 x86_phys_bits;
79#endif
80 /* CPUID returned core id bits: */
81 __u8 x86_coreid_bits;
82 /* Max extended CPUID function supported: */
83 __u32 extended_cpuid_level;
84 /* Maximum supported CPUID level, -1=no CPUID: */
85 int cpuid_level;
86 __u32 x86_capability[NCAPINTS];
87 char x86_vendor_id[16];
88 char x86_model_id[64];
89 /* in KB - valid for CPUS which support this call: */
90 int x86_cache_size;
91 int x86_cache_alignment; /* In bytes */
92 int x86_power;
93 unsigned long loops_per_jiffy;
94#ifdef CONFIG_SMP
95 /* cpus sharing the last level cache: */
96 cpumask_t llc_shared_map;
97#endif
98 /* cpuid returned max cores value: */
99 u16 x86_max_cores;
100 u16 apicid;
101 u16 initial_apicid;
102 u16 x86_clflush_size;
103#ifdef CONFIG_SMP
104 /* number of cores as seen by the OS: */
105 u16 booted_cores;
106 /* Physical processor id: */
107 u16 phys_proc_id;
108 /* Core id: */
109 u16 cpu_core_id;
110 /* Index into per_cpu list: */
111 u16 cpu_index;
112#endif
113} __attribute__((__aligned__(SMP_CACHE_BYTES)));
114
115#define X86_VENDOR_INTEL 0
116#define X86_VENDOR_CYRIX 1
117#define X86_VENDOR_AMD 2
118#define X86_VENDOR_UMC 3
119#define X86_VENDOR_CENTAUR 5
120#define X86_VENDOR_TRANSMETA 7
121#define X86_VENDOR_NSC 8
122#define X86_VENDOR_NUM 9
123
124#define X86_VENDOR_UNKNOWN 0xff
125
126/*
127 * capabilities of CPUs
128 */
129extern struct cpuinfo_x86 boot_cpu_data;
130extern struct cpuinfo_x86 new_cpu_data;
131
132extern struct tss_struct doublefault_tss;
133extern __u32 cleared_cpu_caps[NCAPINTS];
134
135#ifdef CONFIG_SMP
136DECLARE_PER_CPU(struct cpuinfo_x86, cpu_info);
137#define cpu_data(cpu) per_cpu(cpu_info, cpu)
138#define current_cpu_data __get_cpu_var(cpu_info)
139#else
140#define cpu_data(cpu) boot_cpu_data
141#define current_cpu_data boot_cpu_data
142#endif
143
144extern const struct seq_operations cpuinfo_op;
145
146static inline int hlt_works(int cpu)
147{
148#ifdef CONFIG_X86_32
149 return cpu_data(cpu).hlt_works_ok;
150#else
151 return 1;
152#endif
153}
154
155#define cache_line_size() (boot_cpu_data.x86_cache_alignment)
156
157extern void cpu_detect(struct cpuinfo_x86 *c);
158
159extern struct pt_regs *idle_regs(struct pt_regs *);
160
161extern void early_cpu_init(void);
162extern void identify_boot_cpu(void);
163extern void identify_secondary_cpu(struct cpuinfo_x86 *);
164extern void print_cpu_info(struct cpuinfo_x86 *);
165extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c);
166extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c);
167extern unsigned short num_cache_leaves;
168
169extern void detect_extended_topology(struct cpuinfo_x86 *c);
170extern void detect_ht(struct cpuinfo_x86 *c);
171
172static inline void native_cpuid(unsigned int *eax, unsigned int *ebx,
173 unsigned int *ecx, unsigned int *edx)
174{
175 /* ecx is often an input as well as an output. */
176 asm("cpuid"
177 : "=a" (*eax),
178 "=b" (*ebx),
179 "=c" (*ecx),
180 "=d" (*edx)
181 : "0" (*eax), "2" (*ecx));
182}
183
184static inline void load_cr3(pgd_t *pgdir)
185{
186 write_cr3(__pa(pgdir));
187}
188
189#ifdef CONFIG_X86_32
190/* This is the TSS defined by the hardware. */
191struct x86_hw_tss {
192 unsigned short back_link, __blh;
193 unsigned long sp0;
194 unsigned short ss0, __ss0h;
195 unsigned long sp1;
196 /* ss1 caches MSR_IA32_SYSENTER_CS: */
197 unsigned short ss1, __ss1h;
198 unsigned long sp2;
199 unsigned short ss2, __ss2h;
200 unsigned long __cr3;
201 unsigned long ip;
202 unsigned long flags;
203 unsigned long ax;
204 unsigned long cx;
205 unsigned long dx;
206 unsigned long bx;
207 unsigned long sp;
208 unsigned long bp;
209 unsigned long si;
210 unsigned long di;
211 unsigned short es, __esh;
212 unsigned short cs, __csh;
213 unsigned short ss, __ssh;
214 unsigned short ds, __dsh;
215 unsigned short fs, __fsh;
216 unsigned short gs, __gsh;
217 unsigned short ldt, __ldth;
218 unsigned short trace;
219 unsigned short io_bitmap_base;
220
221} __attribute__((packed));
222#else
223struct x86_hw_tss {
224 u32 reserved1;
225 u64 sp0;
226 u64 sp1;
227 u64 sp2;
228 u64 reserved2;
229 u64 ist[7];
230 u32 reserved3;
231 u32 reserved4;
232 u16 reserved5;
233 u16 io_bitmap_base;
234
235} __attribute__((packed)) ____cacheline_aligned;
236#endif
237
238/*
239 * IO-bitmap sizes:
240 */
241#define IO_BITMAP_BITS 65536
242#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
243#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
244#define IO_BITMAP_OFFSET offsetof(struct tss_struct, io_bitmap)
245#define INVALID_IO_BITMAP_OFFSET 0x8000
246#define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000
247
248struct tss_struct {
249 /*
250 * The hardware state:
251 */
252 struct x86_hw_tss x86_tss;
253
254 /*
255 * The extra 1 is there because the CPU will access an
256 * additional byte beyond the end of the IO permission
257 * bitmap. The extra byte must be all 1 bits, and must
258 * be within the limit.
259 */
260 unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
261 /*
262 * Cache the current maximum and the last task that used the bitmap:
263 */
264 unsigned long io_bitmap_max;
265 struct thread_struct *io_bitmap_owner;
266
267 /*
268 * .. and then another 0x100 bytes for the emergency kernel stack:
269 */
270 unsigned long stack[64];
271
272} ____cacheline_aligned;
273
274DECLARE_PER_CPU(struct tss_struct, init_tss);
275
276/*
277 * Save the original ist values for checking stack pointers during debugging
278 */
279struct orig_ist {
280 unsigned long ist[7];
281};
282
283#define MXCSR_DEFAULT 0x1f80
284
285struct i387_fsave_struct {
286 u32 cwd; /* FPU Control Word */
287 u32 swd; /* FPU Status Word */
288 u32 twd; /* FPU Tag Word */
289 u32 fip; /* FPU IP Offset */
290 u32 fcs; /* FPU IP Selector */
291 u32 foo; /* FPU Operand Pointer Offset */
292 u32 fos; /* FPU Operand Pointer Selector */
293
294 /* 8*10 bytes for each FP-reg = 80 bytes: */
295 u32 st_space[20];
296
297 /* Software status information [not touched by FSAVE ]: */
298 u32 status;
299};
300
301struct i387_fxsave_struct {
302 u16 cwd; /* Control Word */
303 u16 swd; /* Status Word */
304 u16 twd; /* Tag Word */
305 u16 fop; /* Last Instruction Opcode */
306 union {
307 struct {
308 u64 rip; /* Instruction Pointer */
309 u64 rdp; /* Data Pointer */
310 };
311 struct {
312 u32 fip; /* FPU IP Offset */
313 u32 fcs; /* FPU IP Selector */
314 u32 foo; /* FPU Operand Offset */
315 u32 fos; /* FPU Operand Selector */
316 };
317 };
318 u32 mxcsr; /* MXCSR Register State */
319 u32 mxcsr_mask; /* MXCSR Mask */
320
321 /* 8*16 bytes for each FP-reg = 128 bytes: */
322 u32 st_space[32];
323
324 /* 16*16 bytes for each XMM-reg = 256 bytes: */
325 u32 xmm_space[64];
326
327 u32 padding[12];
328
329 union {
330 u32 padding1[12];
331 u32 sw_reserved[12];
332 };
333
334} __attribute__((aligned(16)));
335
336struct i387_soft_struct {
337 u32 cwd;
338 u32 swd;
339 u32 twd;
340 u32 fip;
341 u32 fcs;
342 u32 foo;
343 u32 fos;
344 /* 8*10 bytes for each FP-reg = 80 bytes: */
345 u32 st_space[20];
346 u8 ftop;
347 u8 changed;
348 u8 lookahead;
349 u8 no_update;
350 u8 rm;
351 u8 alimit;
352 struct info *info;
353 u32 entry_eip;
354};
355
356struct xsave_hdr_struct {
357 u64 xstate_bv;
358 u64 reserved1[2];
359 u64 reserved2[5];
360} __attribute__((packed));
361
362struct xsave_struct {
363 struct i387_fxsave_struct i387;
364 struct xsave_hdr_struct xsave_hdr;
365 /* new processor state extensions will go here */
366} __attribute__ ((packed, aligned (64)));
367
368union thread_xstate {
369 struct i387_fsave_struct fsave;
370 struct i387_fxsave_struct fxsave;
371 struct i387_soft_struct soft;
372 struct xsave_struct xsave;
373};
374
375#ifdef CONFIG_X86_64
376DECLARE_PER_CPU(struct orig_ist, orig_ist);
377#endif
378
379extern void print_cpu_info(struct cpuinfo_x86 *);
380extern unsigned int xstate_size;
381extern void free_thread_xstate(struct task_struct *);
382extern struct kmem_cache *task_xstate_cachep;
383extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c);
384extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c);
385extern unsigned short num_cache_leaves;
386
387struct thread_struct {
388 /* Cached TLS descriptors: */
389 struct desc_struct tls_array[GDT_ENTRY_TLS_ENTRIES];
390 unsigned long sp0;
391 unsigned long sp;
392#ifdef CONFIG_X86_32
393 unsigned long sysenter_cs;
394#else
395 unsigned long usersp; /* Copy from PDA */
396 unsigned short es;
397 unsigned short ds;
398 unsigned short fsindex;
399 unsigned short gsindex;
400#endif
401 unsigned long ip;
402 unsigned long fs;
403 unsigned long gs;
404 /* Hardware debugging registers: */
405 unsigned long debugreg0;
406 unsigned long debugreg1;
407 unsigned long debugreg2;
408 unsigned long debugreg3;
409 unsigned long debugreg6;
410 unsigned long debugreg7;
411 /* Fault info: */
412 unsigned long cr2;
413 unsigned long trap_no;
414 unsigned long error_code;
415 /* floating point and extended processor state */
416 union thread_xstate *xstate;
417#ifdef CONFIG_X86_32
418 /* Virtual 86 mode info */
419 struct vm86_struct __user *vm86_info;
420 unsigned long screen_bitmap;
421 unsigned long v86flags;
422 unsigned long v86mask;
423 unsigned long saved_sp0;
424 unsigned int saved_fs;
425 unsigned int saved_gs;
426#endif
427 /* IO permissions: */
428 unsigned long *io_bitmap_ptr;
429 unsigned long iopl;
430 /* Max allowed port in the bitmap, in bytes: */
431 unsigned io_bitmap_max;
432/* MSR_IA32_DEBUGCTLMSR value to switch in if TIF_DEBUGCTLMSR is set. */
433 unsigned long debugctlmsr;
434#ifdef CONFIG_X86_DS
435/* Debug Store context; see include/asm-x86/ds.h; goes into MSR_IA32_DS_AREA */
436 struct ds_context *ds_ctx;
437#endif /* CONFIG_X86_DS */
438#ifdef CONFIG_X86_PTRACE_BTS
439/* the signal to send on a bts buffer overflow */
440 unsigned int bts_ovfl_signal;
441#endif /* CONFIG_X86_PTRACE_BTS */
442};
443
444static inline unsigned long native_get_debugreg(int regno)
445{
446 unsigned long val = 0; /* Damn you, gcc! */
447
448 switch (regno) {
449 case 0:
450 asm("mov %%db0, %0" :"=r" (val));
451 break;
452 case 1:
453 asm("mov %%db1, %0" :"=r" (val));
454 break;
455 case 2:
456 asm("mov %%db2, %0" :"=r" (val));
457 break;
458 case 3:
459 asm("mov %%db3, %0" :"=r" (val));
460 break;
461 case 6:
462 asm("mov %%db6, %0" :"=r" (val));
463 break;
464 case 7:
465 asm("mov %%db7, %0" :"=r" (val));
466 break;
467 default:
468 BUG();
469 }
470 return val;
471}
472
473static inline void native_set_debugreg(int regno, unsigned long value)
474{
475 switch (regno) {
476 case 0:
477 asm("mov %0, %%db0" ::"r" (value));
478 break;
479 case 1:
480 asm("mov %0, %%db1" ::"r" (value));
481 break;
482 case 2:
483 asm("mov %0, %%db2" ::"r" (value));
484 break;
485 case 3:
486 asm("mov %0, %%db3" ::"r" (value));
487 break;
488 case 6:
489 asm("mov %0, %%db6" ::"r" (value));
490 break;
491 case 7:
492 asm("mov %0, %%db7" ::"r" (value));
493 break;
494 default:
495 BUG();
496 }
497}
498
499/*
500 * Set IOPL bits in EFLAGS from given mask
501 */
502static inline void native_set_iopl_mask(unsigned mask)
503{
504#ifdef CONFIG_X86_32
505 unsigned int reg;
506
507 asm volatile ("pushfl;"
508 "popl %0;"
509 "andl %1, %0;"
510 "orl %2, %0;"
511 "pushl %0;"
512 "popfl"
513 : "=&r" (reg)
514 : "i" (~X86_EFLAGS_IOPL), "r" (mask));
515#endif
516}
517
518static inline void
519native_load_sp0(struct tss_struct *tss, struct thread_struct *thread)
520{
521 tss->x86_tss.sp0 = thread->sp0;
522#ifdef CONFIG_X86_32
523 /* Only happens when SEP is enabled, no need to test "SEP"arately: */
524 if (unlikely(tss->x86_tss.ss1 != thread->sysenter_cs)) {
525 tss->x86_tss.ss1 = thread->sysenter_cs;
526 wrmsr(MSR_IA32_SYSENTER_CS, thread->sysenter_cs, 0);
527 }
528#endif
529}
530
531static inline void native_swapgs(void)
532{
533#ifdef CONFIG_X86_64
534 asm volatile("swapgs" ::: "memory");
535#endif
536}
537
538#ifdef CONFIG_PARAVIRT
539#include <asm/paravirt.h>
540#else
541#define __cpuid native_cpuid
542#define paravirt_enabled() 0
543
544/*
545 * These special macros can be used to get or set a debugging register
546 */
547#define get_debugreg(var, register) \
548 (var) = native_get_debugreg(register)
549#define set_debugreg(value, register) \
550 native_set_debugreg(register, value)
551
552static inline void load_sp0(struct tss_struct *tss,
553 struct thread_struct *thread)
554{
555 native_load_sp0(tss, thread);
556}
557
558#define set_iopl_mask native_set_iopl_mask
559#endif /* CONFIG_PARAVIRT */
560
561/*
562 * Save the cr4 feature set we're using (ie
563 * Pentium 4MB enable and PPro Global page
564 * enable), so that any CPU's that boot up
565 * after us can get the correct flags.
566 */
567extern unsigned long mmu_cr4_features;
568
569static inline void set_in_cr4(unsigned long mask)
570{
571 unsigned cr4;
572
573 mmu_cr4_features |= mask;
574 cr4 = read_cr4();
575 cr4 |= mask;
576 write_cr4(cr4);
577}
578
579static inline void clear_in_cr4(unsigned long mask)
580{
581 unsigned cr4;
582
583 mmu_cr4_features &= ~mask;
584 cr4 = read_cr4();
585 cr4 &= ~mask;
586 write_cr4(cr4);
587}
588
589typedef struct {
590 unsigned long seg;
591} mm_segment_t;
592
593
594/*
595 * create a kernel thread without removing it from tasklists
596 */
597extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
598
599/* Free all resources held by a thread. */
600extern void release_thread(struct task_struct *);
601
602/* Prepare to copy thread state - unlazy all lazy state */
603extern void prepare_to_copy(struct task_struct *tsk);
604
605unsigned long get_wchan(struct task_struct *p);
606
607/*
608 * Generic CPUID function
609 * clear %ecx since some cpus (Cyrix MII) do not set or clear %ecx
610 * resulting in stale register contents being returned.
611 */
612static inline void cpuid(unsigned int op,
613 unsigned int *eax, unsigned int *ebx,
614 unsigned int *ecx, unsigned int *edx)
615{
616 *eax = op;
617 *ecx = 0;
618 __cpuid(eax, ebx, ecx, edx);
619}
620
621/* Some CPUID calls want 'count' to be placed in ecx */
622static inline void cpuid_count(unsigned int op, int count,
623 unsigned int *eax, unsigned int *ebx,
624 unsigned int *ecx, unsigned int *edx)
625{
626 *eax = op;
627 *ecx = count;
628 __cpuid(eax, ebx, ecx, edx);
629}
630
631/*
632 * CPUID functions returning a single datum
633 */
634static inline unsigned int cpuid_eax(unsigned int op)
635{
636 unsigned int eax, ebx, ecx, edx;
637
638 cpuid(op, &eax, &ebx, &ecx, &edx);
639
640 return eax;
641}
642
643static inline unsigned int cpuid_ebx(unsigned int op)
644{
645 unsigned int eax, ebx, ecx, edx;
646
647 cpuid(op, &eax, &ebx, &ecx, &edx);
648
649 return ebx;
650}
651
652static inline unsigned int cpuid_ecx(unsigned int op)
653{
654 unsigned int eax, ebx, ecx, edx;
655
656 cpuid(op, &eax, &ebx, &ecx, &edx);
657
658 return ecx;
659}
660
661static inline unsigned int cpuid_edx(unsigned int op)
662{
663 unsigned int eax, ebx, ecx, edx;
664
665 cpuid(op, &eax, &ebx, &ecx, &edx);
666
667 return edx;
668}
669
670/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
671static inline void rep_nop(void)
672{
673 asm volatile("rep; nop" ::: "memory");
674}
675
676static inline void cpu_relax(void)
677{
678 rep_nop();
679}
680
681/* Stop speculative execution: */
682static inline void sync_core(void)
683{
684 int tmp;
685
686 asm volatile("cpuid" : "=a" (tmp) : "0" (1)
687 : "ebx", "ecx", "edx", "memory");
688}
689
690static inline void __monitor(const void *eax, unsigned long ecx,
691 unsigned long edx)
692{
693 /* "monitor %eax, %ecx, %edx;" */
694 asm volatile(".byte 0x0f, 0x01, 0xc8;"
695 :: "a" (eax), "c" (ecx), "d"(edx));
696}
697
698static inline void __mwait(unsigned long eax, unsigned long ecx)
699{
700 /* "mwait %eax, %ecx;" */
701 asm volatile(".byte 0x0f, 0x01, 0xc9;"
702 :: "a" (eax), "c" (ecx));
703}
704
705static inline void __sti_mwait(unsigned long eax, unsigned long ecx)
706{
707 trace_hardirqs_on();
708 /* "mwait %eax, %ecx;" */
709 asm volatile("sti; .byte 0x0f, 0x01, 0xc9;"
710 :: "a" (eax), "c" (ecx));
711}
712
713extern void mwait_idle_with_hints(unsigned long eax, unsigned long ecx);
714
715extern void select_idle_routine(const struct cpuinfo_x86 *c);
716
717extern unsigned long boot_option_idle_override;
718extern unsigned long idle_halt;
719extern unsigned long idle_nomwait;
720
721/*
722 * on systems with caches, caches must be flashed as the absolute
723 * last instruction before going into a suspended halt. Otherwise,
724 * dirty data can linger in the cache and become stale on resume,
725 * leading to strange errors.
726 *
727 * perform a variety of operations to guarantee that the compiler
728 * will not reorder instructions. wbinvd itself is serializing
729 * so the processor will not reorder.
730 *
731 * Systems without cache can just go into halt.
732 */
733static inline void wbinvd_halt(void)
734{
735 mb();
736 /* check for clflush to determine if wbinvd is legal */
737 if (cpu_has_clflush)
738 asm volatile("cli; wbinvd; 1: hlt; jmp 1b" : : : "memory");
739 else
740 while (1)
741 halt();
742}
743
744extern void enable_sep_cpu(void);
745extern int sysenter_setup(void);
746
747/* Defined in head.S */
748extern struct desc_ptr early_gdt_descr;
749
750extern void cpu_set_gdt(int);
751extern void switch_to_new_gdt(void);
752extern void cpu_init(void);
753extern void init_gdt(int cpu);
754
755static inline void update_debugctlmsr(unsigned long debugctlmsr)
756{
757#ifndef CONFIG_X86_DEBUGCTLMSR
758 if (boot_cpu_data.x86 < 6)
759 return;
760#endif
761 wrmsrl(MSR_IA32_DEBUGCTLMSR, debugctlmsr);
762}
763
764/*
765 * from system description table in BIOS. Mostly for MCA use, but
766 * others may find it useful:
767 */
768extern unsigned int machine_id;
769extern unsigned int machine_submodel_id;
770extern unsigned int BIOS_revision;
771
772/* Boot loader type from the setup header: */
773extern int bootloader_type;
774
775extern char ignore_fpu_irq;
776
777#define HAVE_ARCH_PICK_MMAP_LAYOUT 1
778#define ARCH_HAS_PREFETCHW
779#define ARCH_HAS_SPINLOCK_PREFETCH
780
781#ifdef CONFIG_X86_32
782# define BASE_PREFETCH ASM_NOP4
783# define ARCH_HAS_PREFETCH
784#else
785# define BASE_PREFETCH "prefetcht0 (%1)"
786#endif
787
788/*
789 * Prefetch instructions for Pentium III (+) and AMD Athlon (+)
790 *
791 * It's not worth to care about 3dnow prefetches for the K6
792 * because they are microcoded there and very slow.
793 */
794static inline void prefetch(const void *x)
795{
796 alternative_input(BASE_PREFETCH,
797 "prefetchnta (%1)",
798 X86_FEATURE_XMM,
799 "r" (x));
800}
801
802/*
803 * 3dnow prefetch to get an exclusive cache line.
804 * Useful for spinlocks to avoid one state transition in the
805 * cache coherency protocol:
806 */
807static inline void prefetchw(const void *x)
808{
809 alternative_input(BASE_PREFETCH,
810 "prefetchw (%1)",
811 X86_FEATURE_3DNOW,
812 "r" (x));
813}
814
815static inline void spin_lock_prefetch(const void *x)
816{
817 prefetchw(x);
818}
819
820#ifdef CONFIG_X86_32
821/*
822 * User space process size: 3GB (default).
823 */
824#define TASK_SIZE PAGE_OFFSET
825#define STACK_TOP TASK_SIZE
826#define STACK_TOP_MAX STACK_TOP
827
828#define INIT_THREAD { \
829 .sp0 = sizeof(init_stack) + (long)&init_stack, \
830 .vm86_info = NULL, \
831 .sysenter_cs = __KERNEL_CS, \
832 .io_bitmap_ptr = NULL, \
833 .fs = __KERNEL_PERCPU, \
834}
835
836/*
837 * Note that the .io_bitmap member must be extra-big. This is because
838 * the CPU will access an additional byte beyond the end of the IO
839 * permission bitmap. The extra byte must be all 1 bits, and must
840 * be within the limit.
841 */
842#define INIT_TSS { \
843 .x86_tss = { \
844 .sp0 = sizeof(init_stack) + (long)&init_stack, \
845 .ss0 = __KERNEL_DS, \
846 .ss1 = __KERNEL_CS, \
847 .io_bitmap_base = INVALID_IO_BITMAP_OFFSET, \
848 }, \
849 .io_bitmap = { [0 ... IO_BITMAP_LONGS] = ~0 }, \
850}
851
852extern unsigned long thread_saved_pc(struct task_struct *tsk);
853
854#define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
855#define KSTK_TOP(info) \
856({ \
857 unsigned long *__ptr = (unsigned long *)(info); \
858 (unsigned long)(&__ptr[THREAD_SIZE_LONGS]); \
859})
860
861/*
862 * The below -8 is to reserve 8 bytes on top of the ring0 stack.
863 * This is necessary to guarantee that the entire "struct pt_regs"
864 * is accessable even if the CPU haven't stored the SS/ESP registers
865 * on the stack (interrupt gate does not save these registers
866 * when switching to the same priv ring).
867 * Therefore beware: accessing the ss/esp fields of the
868 * "struct pt_regs" is possible, but they may contain the
869 * completely wrong values.
870 */
871#define task_pt_regs(task) \
872({ \
873 struct pt_regs *__regs__; \
874 __regs__ = (struct pt_regs *)(KSTK_TOP(task_stack_page(task))-8); \
875 __regs__ - 1; \
876})
877
878#define KSTK_ESP(task) (task_pt_regs(task)->sp)
879
880#else
881/*
882 * User space process size. 47bits minus one guard page.
883 */
884#define TASK_SIZE64 ((1UL << 47) - PAGE_SIZE)
885
886/* This decides where the kernel will search for a free chunk of vm
887 * space during mmap's.
888 */
889#define IA32_PAGE_OFFSET ((current->personality & ADDR_LIMIT_3GB) ? \
890 0xc0000000 : 0xFFFFe000)
891
892#define TASK_SIZE (test_thread_flag(TIF_IA32) ? \
893 IA32_PAGE_OFFSET : TASK_SIZE64)
894#define TASK_SIZE_OF(child) ((test_tsk_thread_flag(child, TIF_IA32)) ? \
895 IA32_PAGE_OFFSET : TASK_SIZE64)
896
897#define STACK_TOP TASK_SIZE
898#define STACK_TOP_MAX TASK_SIZE64
899
900#define INIT_THREAD { \
901 .sp0 = (unsigned long)&init_stack + sizeof(init_stack) \
902}
903
904#define INIT_TSS { \
905 .x86_tss.sp0 = (unsigned long)&init_stack + sizeof(init_stack) \
906}
907
908/*
909 * Return saved PC of a blocked thread.
910 * What is this good for? it will be always the scheduler or ret_from_fork.
911 */
912#define thread_saved_pc(t) (*(unsigned long *)((t)->thread.sp - 8))
913
914#define task_pt_regs(tsk) ((struct pt_regs *)(tsk)->thread.sp0 - 1)
915#define KSTK_ESP(tsk) -1 /* sorry. doesn't work for syscall. */
916#endif /* CONFIG_X86_64 */
917
918extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
919 unsigned long new_sp);
920
921/*
922 * This decides where the kernel will search for a free chunk of vm
923 * space during mmap's.
924 */
925#define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
926
927#define KSTK_EIP(task) (task_pt_regs(task)->ip)
928
929/* Get/set a process' ability to use the timestamp counter instruction */
930#define GET_TSC_CTL(adr) get_tsc_mode((adr))
931#define SET_TSC_CTL(val) set_tsc_mode((val))
932
933extern int get_tsc_mode(unsigned long adr);
934extern int set_tsc_mode(unsigned int val);
935
936#endif /* _ASM_X86_PROCESSOR_H */
diff --git a/arch/x86/include/asm/proto.h b/arch/x86/include/asm/proto.h
new file mode 100644
index 000000000000..d6a22f92ba77
--- /dev/null
+++ b/arch/x86/include/asm/proto.h
@@ -0,0 +1,32 @@
1#ifndef _ASM_X86_PROTO_H
2#define _ASM_X86_PROTO_H
3
4#include <asm/ldt.h>
5
6/* misc architecture specific prototypes */
7
8extern void early_idt_handler(void);
9
10extern void system_call(void);
11extern void syscall_init(void);
12
13extern void ia32_syscall(void);
14extern void ia32_cstar_target(void);
15extern void ia32_sysenter_target(void);
16
17extern void syscall32_cpu_init(void);
18
19extern void check_efer(void);
20
21#ifdef CONFIG_X86_BIOS_REBOOT
22extern int reboot_force;
23#else
24static const int reboot_force = 0;
25#endif
26
27long do_arch_prctl(struct task_struct *task, int code, unsigned long addr);
28
29#define round_up(x, y) (((x) + (y) - 1) & ~((y) - 1))
30#define round_down(x, y) ((x) & ~((y) - 1))
31
32#endif /* _ASM_X86_PROTO_H */
diff --git a/arch/x86/include/asm/ptrace-abi.h b/arch/x86/include/asm/ptrace-abi.h
new file mode 100644
index 000000000000..25f1bb8fc626
--- /dev/null
+++ b/arch/x86/include/asm/ptrace-abi.h
@@ -0,0 +1,145 @@
1#ifndef _ASM_X86_PTRACE_ABI_H
2#define _ASM_X86_PTRACE_ABI_H
3
4#ifdef __i386__
5
6#define EBX 0
7#define ECX 1
8#define EDX 2
9#define ESI 3
10#define EDI 4
11#define EBP 5
12#define EAX 6
13#define DS 7
14#define ES 8
15#define FS 9
16#define GS 10
17#define ORIG_EAX 11
18#define EIP 12
19#define CS 13
20#define EFL 14
21#define UESP 15
22#define SS 16
23#define FRAME_SIZE 17
24
25#else /* __i386__ */
26
27#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
28#define R15 0
29#define R14 8
30#define R13 16
31#define R12 24
32#define RBP 32
33#define RBX 40
34/* arguments: interrupts/non tracing syscalls only save upto here*/
35#define R11 48
36#define R10 56
37#define R9 64
38#define R8 72
39#define RAX 80
40#define RCX 88
41#define RDX 96
42#define RSI 104
43#define RDI 112
44#define ORIG_RAX 120 /* = ERROR */
45/* end of arguments */
46/* cpu exception frame or undefined in case of fast syscall. */
47#define RIP 128
48#define CS 136
49#define EFLAGS 144
50#define RSP 152
51#define SS 160
52#define ARGOFFSET R11
53#endif /* __ASSEMBLY__ */
54
55/* top of stack page */
56#define FRAME_SIZE 168
57
58#endif /* !__i386__ */
59
60/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
61#define PTRACE_GETREGS 12
62#define PTRACE_SETREGS 13
63#define PTRACE_GETFPREGS 14
64#define PTRACE_SETFPREGS 15
65#define PTRACE_GETFPXREGS 18
66#define PTRACE_SETFPXREGS 19
67
68#define PTRACE_OLDSETOPTIONS 21
69
70/* only useful for access 32bit programs / kernels */
71#define PTRACE_GET_THREAD_AREA 25
72#define PTRACE_SET_THREAD_AREA 26
73
74#ifdef __x86_64__
75# define PTRACE_ARCH_PRCTL 30
76#endif
77
78#define PTRACE_SYSEMU 31
79#define PTRACE_SYSEMU_SINGLESTEP 32
80
81#define PTRACE_SINGLEBLOCK 33 /* resume execution until next branch */
82
83#ifdef CONFIG_X86_PTRACE_BTS
84
85#ifndef __ASSEMBLY__
86#include <asm/types.h>
87
88/* configuration/status structure used in PTRACE_BTS_CONFIG and
89 PTRACE_BTS_STATUS commands.
90*/
91struct ptrace_bts_config {
92 /* requested or actual size of BTS buffer in bytes */
93 __u32 size;
94 /* bitmask of below flags */
95 __u32 flags;
96 /* buffer overflow signal */
97 __u32 signal;
98 /* actual size of bts_struct in bytes */
99 __u32 bts_size;
100};
101#endif /* __ASSEMBLY__ */
102
103#define PTRACE_BTS_O_TRACE 0x1 /* branch trace */
104#define PTRACE_BTS_O_SCHED 0x2 /* scheduling events w/ jiffies */
105#define PTRACE_BTS_O_SIGNAL 0x4 /* send SIG<signal> on buffer overflow
106 instead of wrapping around */
107#define PTRACE_BTS_O_ALLOC 0x8 /* (re)allocate buffer */
108
109#define PTRACE_BTS_CONFIG 40
110/* Configure branch trace recording.
111 ADDR points to a struct ptrace_bts_config.
112 DATA gives the size of that buffer.
113 A new buffer is allocated, if requested in the flags.
114 An overflow signal may only be requested for new buffers.
115 Returns the number of bytes read.
116*/
117#define PTRACE_BTS_STATUS 41
118/* Return the current configuration in a struct ptrace_bts_config
119 pointed to by ADDR; DATA gives the size of that buffer.
120 Returns the number of bytes written.
121*/
122#define PTRACE_BTS_SIZE 42
123/* Return the number of available BTS records for draining.
124 DATA and ADDR are ignored.
125*/
126#define PTRACE_BTS_GET 43
127/* Get a single BTS record.
128 DATA defines the index into the BTS array, where 0 is the newest
129 entry, and higher indices refer to older entries.
130 ADDR is pointing to struct bts_struct (see asm/ds.h).
131*/
132#define PTRACE_BTS_CLEAR 44
133/* Clear the BTS buffer.
134 DATA and ADDR are ignored.
135*/
136#define PTRACE_BTS_DRAIN 45
137/* Read all available BTS records and clear the buffer.
138 ADDR points to an array of struct bts_struct.
139 DATA gives the size of that buffer.
140 BTS records are read from oldest to newest.
141 Returns number of BTS records drained.
142*/
143#endif /* CONFIG_X86_PTRACE_BTS */
144
145#endif /* _ASM_X86_PTRACE_ABI_H */
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
new file mode 100644
index 000000000000..d1531c8480b7
--- /dev/null
+++ b/arch/x86/include/asm/ptrace.h
@@ -0,0 +1,280 @@
1#ifndef _ASM_X86_PTRACE_H
2#define _ASM_X86_PTRACE_H
3
4#include <linux/compiler.h> /* For __user */
5#include <asm/ptrace-abi.h>
6#include <asm/processor-flags.h>
7
8#ifdef __KERNEL__
9#include <asm/ds.h> /* the DS BTS struct is used for ptrace too */
10#include <asm/segment.h>
11#endif
12
13#ifndef __ASSEMBLY__
14
15#ifdef __i386__
16/* this struct defines the way the registers are stored on the
17 stack during a system call. */
18
19#ifndef __KERNEL__
20
21struct pt_regs {
22 long ebx;
23 long ecx;
24 long edx;
25 long esi;
26 long edi;
27 long ebp;
28 long eax;
29 int xds;
30 int xes;
31 int xfs;
32 /* int gs; */
33 long orig_eax;
34 long eip;
35 int xcs;
36 long eflags;
37 long esp;
38 int xss;
39};
40
41#else /* __KERNEL__ */
42
43struct pt_regs {
44 unsigned long bx;
45 unsigned long cx;
46 unsigned long dx;
47 unsigned long si;
48 unsigned long di;
49 unsigned long bp;
50 unsigned long ax;
51 unsigned long ds;
52 unsigned long es;
53 unsigned long fs;
54 /* int gs; */
55 unsigned long orig_ax;
56 unsigned long ip;
57 unsigned long cs;
58 unsigned long flags;
59 unsigned long sp;
60 unsigned long ss;
61};
62
63#endif /* __KERNEL__ */
64
65#else /* __i386__ */
66
67#ifndef __KERNEL__
68
69struct pt_regs {
70 unsigned long r15;
71 unsigned long r14;
72 unsigned long r13;
73 unsigned long r12;
74 unsigned long rbp;
75 unsigned long rbx;
76/* arguments: non interrupts/non tracing syscalls only save upto here*/
77 unsigned long r11;
78 unsigned long r10;
79 unsigned long r9;
80 unsigned long r8;
81 unsigned long rax;
82 unsigned long rcx;
83 unsigned long rdx;
84 unsigned long rsi;
85 unsigned long rdi;
86 unsigned long orig_rax;
87/* end of arguments */
88/* cpu exception frame or undefined */
89 unsigned long rip;
90 unsigned long cs;
91 unsigned long eflags;
92 unsigned long rsp;
93 unsigned long ss;
94/* top of stack page */
95};
96
97#else /* __KERNEL__ */
98
99struct pt_regs {
100 unsigned long r15;
101 unsigned long r14;
102 unsigned long r13;
103 unsigned long r12;
104 unsigned long bp;
105 unsigned long bx;
106/* arguments: non interrupts/non tracing syscalls only save upto here*/
107 unsigned long r11;
108 unsigned long r10;
109 unsigned long r9;
110 unsigned long r8;
111 unsigned long ax;
112 unsigned long cx;
113 unsigned long dx;
114 unsigned long si;
115 unsigned long di;
116 unsigned long orig_ax;
117/* end of arguments */
118/* cpu exception frame or undefined */
119 unsigned long ip;
120 unsigned long cs;
121 unsigned long flags;
122 unsigned long sp;
123 unsigned long ss;
124/* top of stack page */
125};
126
127#endif /* __KERNEL__ */
128#endif /* !__i386__ */
129
130
131#ifdef CONFIG_X86_PTRACE_BTS
132/* a branch trace record entry
133 *
134 * In order to unify the interface between various processor versions,
135 * we use the below data structure for all processors.
136 */
137enum bts_qualifier {
138 BTS_INVALID = 0,
139 BTS_BRANCH,
140 BTS_TASK_ARRIVES,
141 BTS_TASK_DEPARTS
142};
143
144struct bts_struct {
145 __u64 qualifier;
146 union {
147 /* BTS_BRANCH */
148 struct {
149 __u64 from_ip;
150 __u64 to_ip;
151 } lbr;
152 /* BTS_TASK_ARRIVES or
153 BTS_TASK_DEPARTS */
154 __u64 jiffies;
155 } variant;
156};
157#endif /* CONFIG_X86_PTRACE_BTS */
158
159#ifdef __KERNEL__
160
161#include <linux/init.h>
162
163struct cpuinfo_x86;
164struct task_struct;
165
166#ifdef CONFIG_X86_PTRACE_BTS
167extern void __cpuinit ptrace_bts_init_intel(struct cpuinfo_x86 *);
168extern void ptrace_bts_take_timestamp(struct task_struct *, enum bts_qualifier);
169#else
170#define ptrace_bts_init_intel(config) do {} while (0)
171#endif /* CONFIG_X86_PTRACE_BTS */
172
173extern unsigned long profile_pc(struct pt_regs *regs);
174
175extern unsigned long
176convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs);
177extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs,
178 int error_code, int si_code);
179void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
180
181extern long syscall_trace_enter(struct pt_regs *);
182extern void syscall_trace_leave(struct pt_regs *);
183
184static inline unsigned long regs_return_value(struct pt_regs *regs)
185{
186 return regs->ax;
187}
188
189/*
190 * user_mode_vm(regs) determines whether a register set came from user mode.
191 * This is true if V8086 mode was enabled OR if the register set was from
192 * protected mode with RPL-3 CS value. This tricky test checks that with
193 * one comparison. Many places in the kernel can bypass this full check
194 * if they have already ruled out V8086 mode, so user_mode(regs) can be used.
195 */
196static inline int user_mode(struct pt_regs *regs)
197{
198#ifdef CONFIG_X86_32
199 return (regs->cs & SEGMENT_RPL_MASK) == USER_RPL;
200#else
201 return !!(regs->cs & 3);
202#endif
203}
204
205static inline int user_mode_vm(struct pt_regs *regs)
206{
207#ifdef CONFIG_X86_32
208 return ((regs->cs & SEGMENT_RPL_MASK) | (regs->flags & X86_VM_MASK)) >=
209 USER_RPL;
210#else
211 return user_mode(regs);
212#endif
213}
214
215static inline int v8086_mode(struct pt_regs *regs)
216{
217#ifdef CONFIG_X86_32
218 return (regs->flags & X86_VM_MASK);
219#else
220 return 0; /* No V86 mode support in long mode */
221#endif
222}
223
224/*
225 * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode
226 * when it traps. So regs will be the current sp.
227 *
228 * This is valid only for kernel mode traps.
229 */
230static inline unsigned long kernel_trap_sp(struct pt_regs *regs)
231{
232#ifdef CONFIG_X86_32
233 return (unsigned long)regs;
234#else
235 return regs->sp;
236#endif
237}
238
239static inline unsigned long instruction_pointer(struct pt_regs *regs)
240{
241 return regs->ip;
242}
243
244static inline unsigned long frame_pointer(struct pt_regs *regs)
245{
246 return regs->bp;
247}
248
249static inline unsigned long user_stack_pointer(struct pt_regs *regs)
250{
251 return regs->sp;
252}
253
254/*
255 * These are defined as per linux/ptrace.h, which see.
256 */
257#define arch_has_single_step() (1)
258extern void user_enable_single_step(struct task_struct *);
259extern void user_disable_single_step(struct task_struct *);
260
261extern void user_enable_block_step(struct task_struct *);
262#ifdef CONFIG_X86_DEBUGCTLMSR
263#define arch_has_block_step() (1)
264#else
265#define arch_has_block_step() (boot_cpu_data.x86 >= 6)
266#endif
267
268struct user_desc;
269extern int do_get_thread_area(struct task_struct *p, int idx,
270 struct user_desc __user *info);
271extern int do_set_thread_area(struct task_struct *p, int idx,
272 struct user_desc __user *info, int can_allocate);
273
274#define __ARCH_WANT_COMPAT_SYS_PTRACE
275
276#endif /* __KERNEL__ */
277
278#endif /* !__ASSEMBLY__ */
279
280#endif /* _ASM_X86_PTRACE_H */
diff --git a/arch/x86/include/asm/pvclock-abi.h b/arch/x86/include/asm/pvclock-abi.h
new file mode 100644
index 000000000000..6d93508f2626
--- /dev/null
+++ b/arch/x86/include/asm/pvclock-abi.h
@@ -0,0 +1,42 @@
1#ifndef _ASM_X86_PVCLOCK_ABI_H
2#define _ASM_X86_PVCLOCK_ABI_H
3#ifndef __ASSEMBLY__
4
5/*
6 * These structs MUST NOT be changed.
7 * They are the ABI between hypervisor and guest OS.
8 * Both Xen and KVM are using this.
9 *
10 * pvclock_vcpu_time_info holds the system time and the tsc timestamp
11 * of the last update. So the guest can use the tsc delta to get a
12 * more precise system time. There is one per virtual cpu.
13 *
14 * pvclock_wall_clock references the point in time when the system
15 * time was zero (usually boot time), thus the guest calculates the
16 * current wall clock by adding the system time.
17 *
18 * Protocol for the "version" fields is: hypervisor raises it (making
19 * it uneven) before it starts updating the fields and raises it again
20 * (making it even) when it is done. Thus the guest can make sure the
21 * time values it got are consistent by checking the version before
22 * and after reading them.
23 */
24
25struct pvclock_vcpu_time_info {
26 u32 version;
27 u32 pad0;
28 u64 tsc_timestamp;
29 u64 system_time;
30 u32 tsc_to_system_mul;
31 s8 tsc_shift;
32 u8 pad[3];
33} __attribute__((__packed__)); /* 32 bytes */
34
35struct pvclock_wall_clock {
36 u32 version;
37 u32 sec;
38 u32 nsec;
39} __attribute__((__packed__));
40
41#endif /* __ASSEMBLY__ */
42#endif /* _ASM_X86_PVCLOCK_ABI_H */
diff --git a/arch/x86/include/asm/pvclock.h b/arch/x86/include/asm/pvclock.h
new file mode 100644
index 000000000000..53235fd5f8ce
--- /dev/null
+++ b/arch/x86/include/asm/pvclock.h
@@ -0,0 +1,14 @@
1#ifndef _ASM_X86_PVCLOCK_H
2#define _ASM_X86_PVCLOCK_H
3
4#include <linux/clocksource.h>
5#include <asm/pvclock-abi.h>
6
7/* some helper functions for xen and kvm pv clock sources */
8cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src);
9unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src);
10void pvclock_read_wallclock(struct pvclock_wall_clock *wall,
11 struct pvclock_vcpu_time_info *vcpu,
12 struct timespec *ts);
13
14#endif /* _ASM_X86_PVCLOCK_H */
diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
new file mode 100644
index 000000000000..df7710354f85
--- /dev/null
+++ b/arch/x86/include/asm/reboot.h
@@ -0,0 +1,21 @@
1#ifndef _ASM_X86_REBOOT_H
2#define _ASM_X86_REBOOT_H
3
4struct pt_regs;
5
6struct machine_ops {
7 void (*restart)(char *cmd);
8 void (*halt)(void);
9 void (*power_off)(void);
10 void (*shutdown)(void);
11 void (*crash_shutdown)(struct pt_regs *);
12 void (*emergency_restart)(void);
13};
14
15extern struct machine_ops machine_ops;
16
17void native_machine_crash_shutdown(struct pt_regs *regs);
18void native_machine_shutdown(void);
19void machine_real_restart(const unsigned char *code, int length);
20
21#endif /* _ASM_X86_REBOOT_H */
diff --git a/arch/x86/include/asm/reboot_fixups.h b/arch/x86/include/asm/reboot_fixups.h
new file mode 100644
index 000000000000..765debe4c54c
--- /dev/null
+++ b/arch/x86/include/asm/reboot_fixups.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_X86_REBOOT_FIXUPS_H
2#define _ASM_X86_REBOOT_FIXUPS_H
3
4extern void mach_reboot_fixups(void);
5
6#endif /* _ASM_X86_REBOOT_FIXUPS_H */
diff --git a/arch/x86/include/asm/required-features.h b/arch/x86/include/asm/required-features.h
new file mode 100644
index 000000000000..d5cd6c586881
--- /dev/null
+++ b/arch/x86/include/asm/required-features.h
@@ -0,0 +1,82 @@
1#ifndef _ASM_X86_REQUIRED_FEATURES_H
2#define _ASM_X86_REQUIRED_FEATURES_H
3
4/* Define minimum CPUID feature set for kernel These bits are checked
5 really early to actually display a visible error message before the
6 kernel dies. Make sure to assign features to the proper mask!
7
8 Some requirements that are not in CPUID yet are also in the
9 CONFIG_X86_MINIMUM_CPU_FAMILY which is checked too.
10
11 The real information is in arch/x86/Kconfig.cpu, this just converts
12 the CONFIGs into a bitmask */
13
14#ifndef CONFIG_MATH_EMULATION
15# define NEED_FPU (1<<(X86_FEATURE_FPU & 31))
16#else
17# define NEED_FPU 0
18#endif
19
20#if defined(CONFIG_X86_PAE) || defined(CONFIG_X86_64)
21# define NEED_PAE (1<<(X86_FEATURE_PAE & 31))
22#else
23# define NEED_PAE 0
24#endif
25
26#ifdef CONFIG_X86_CMPXCHG64
27# define NEED_CX8 (1<<(X86_FEATURE_CX8 & 31))
28#else
29# define NEED_CX8 0
30#endif
31
32#if defined(CONFIG_X86_CMOV) || defined(CONFIG_X86_64)
33# define NEED_CMOV (1<<(X86_FEATURE_CMOV & 31))
34#else
35# define NEED_CMOV 0
36#endif
37
38#ifdef CONFIG_X86_USE_3DNOW
39# define NEED_3DNOW (1<<(X86_FEATURE_3DNOW & 31))
40#else
41# define NEED_3DNOW 0
42#endif
43
44#if defined(CONFIG_X86_P6_NOP) || defined(CONFIG_X86_64)
45# define NEED_NOPL (1<<(X86_FEATURE_NOPL & 31))
46#else
47# define NEED_NOPL 0
48#endif
49
50#ifdef CONFIG_X86_64
51#define NEED_PSE 0
52#define NEED_MSR (1<<(X86_FEATURE_MSR & 31))
53#define NEED_PGE (1<<(X86_FEATURE_PGE & 31))
54#define NEED_FXSR (1<<(X86_FEATURE_FXSR & 31))
55#define NEED_XMM (1<<(X86_FEATURE_XMM & 31))
56#define NEED_XMM2 (1<<(X86_FEATURE_XMM2 & 31))
57#define NEED_LM (1<<(X86_FEATURE_LM & 31))
58#else
59#define NEED_PSE 0
60#define NEED_MSR 0
61#define NEED_PGE 0
62#define NEED_FXSR 0
63#define NEED_XMM 0
64#define NEED_XMM2 0
65#define NEED_LM 0
66#endif
67
68#define REQUIRED_MASK0 (NEED_FPU|NEED_PSE|NEED_MSR|NEED_PAE|\
69 NEED_CX8|NEED_PGE|NEED_FXSR|NEED_CMOV|\
70 NEED_XMM|NEED_XMM2)
71#define SSE_MASK (NEED_XMM|NEED_XMM2)
72
73#define REQUIRED_MASK1 (NEED_LM|NEED_3DNOW)
74
75#define REQUIRED_MASK2 0
76#define REQUIRED_MASK3 (NEED_NOPL)
77#define REQUIRED_MASK4 0
78#define REQUIRED_MASK5 0
79#define REQUIRED_MASK6 0
80#define REQUIRED_MASK7 0
81
82#endif /* _ASM_X86_REQUIRED_FEATURES_H */
diff --git a/arch/x86/include/asm/resource.h b/arch/x86/include/asm/resource.h
new file mode 100644
index 000000000000..04bc4db8921b
--- /dev/null
+++ b/arch/x86/include/asm/resource.h
@@ -0,0 +1 @@
#include <asm-generic/resource.h>
diff --git a/arch/x86/include/asm/resume-trace.h b/arch/x86/include/asm/resume-trace.h
new file mode 100644
index 000000000000..3ff1c2cb1da5
--- /dev/null
+++ b/arch/x86/include/asm/resume-trace.h
@@ -0,0 +1,21 @@
1#ifndef _ASM_X86_RESUME_TRACE_H
2#define _ASM_X86_RESUME_TRACE_H
3
4#include <asm/asm.h>
5
6#define TRACE_RESUME(user) \
7do { \
8 if (pm_trace_enabled) { \
9 const void *tracedata; \
10 asm volatile(_ASM_MOV " $1f,%0\n" \
11 ".section .tracedata,\"a\"\n" \
12 "1:\t.word %c1\n\t" \
13 _ASM_PTR " %c2\n" \
14 ".previous" \
15 :"=r" (tracedata) \
16 : "i" (__LINE__), "i" (__FILE__)); \
17 generate_resume_trace(tracedata, user); \
18 } \
19} while (0)
20
21#endif /* _ASM_X86_RESUME_TRACE_H */
diff --git a/arch/x86/include/asm/rio.h b/arch/x86/include/asm/rio.h
new file mode 100644
index 000000000000..97bab6388a92
--- /dev/null
+++ b/arch/x86/include/asm/rio.h
@@ -0,0 +1,63 @@
1/*
2 * Derived from include/asm-x86/mach-summit/mach_mpparse.h
3 * and include/asm-x86/mach-default/bios_ebda.h
4 *
5 * Author: Laurent Vivier <Laurent.Vivier@bull.net>
6 */
7
8#ifndef _ASM_X86_RIO_H
9#define _ASM_X86_RIO_H
10
11#define RIO_TABLE_VERSION 3
12
13struct rio_table_hdr {
14 u8 version; /* Version number of this data structure */
15 u8 num_scal_dev; /* # of Scalability devices */
16 u8 num_rio_dev; /* # of RIO I/O devices */
17} __attribute__((packed));
18
19struct scal_detail {
20 u8 node_id; /* Scalability Node ID */
21 u32 CBAR; /* Address of 1MB register space */
22 u8 port0node; /* Node ID port connected to: 0xFF=None */
23 u8 port0port; /* Port num port connected to: 0,1,2, or */
24 /* 0xFF=None */
25 u8 port1node; /* Node ID port connected to: 0xFF = None */
26 u8 port1port; /* Port num port connected to: 0,1,2, or */
27 /* 0xFF=None */
28 u8 port2node; /* Node ID port connected to: 0xFF = None */
29 u8 port2port; /* Port num port connected to: 0,1,2, or */
30 /* 0xFF=None */
31 u8 chassis_num; /* 1 based Chassis number (1 = boot node) */
32} __attribute__((packed));
33
34struct rio_detail {
35 u8 node_id; /* RIO Node ID */
36 u32 BBAR; /* Address of 1MB register space */
37 u8 type; /* Type of device */
38 u8 owner_id; /* Node ID of Hurricane that owns this */
39 /* node */
40 u8 port0node; /* Node ID port connected to: 0xFF=None */
41 u8 port0port; /* Port num port connected to: 0,1,2, or */
42 /* 0xFF=None */
43 u8 port1node; /* Node ID port connected to: 0xFF=None */
44 u8 port1port; /* Port num port connected to: 0,1,2, or */
45 /* 0xFF=None */
46 u8 first_slot; /* Lowest slot number below this Calgary */
47 u8 status; /* Bit 0 = 1 : the XAPIC is used */
48 /* = 0 : the XAPIC is not used, ie: */
49 /* ints fwded to another XAPIC */
50 /* Bits1:7 Reserved */
51 u8 WP_index; /* instance index - lower ones have */
52 /* lower slot numbers/PCI bus numbers */
53 u8 chassis_num; /* 1 based Chassis number */
54} __attribute__((packed));
55
56enum {
57 HURR_SCALABILTY = 0, /* Hurricane Scalability info */
58 HURR_RIOIB = 2, /* Hurricane RIOIB info */
59 COMPAT_CALGARY = 4, /* Compatibility Calgary */
60 ALT_CALGARY = 5, /* Second Planar Calgary */
61};
62
63#endif /* _ASM_X86_RIO_H */
diff --git a/arch/x86/include/asm/rtc.h b/arch/x86/include/asm/rtc.h
new file mode 100644
index 000000000000..f71c3b0ed360
--- /dev/null
+++ b/arch/x86/include/asm/rtc.h
@@ -0,0 +1 @@
#include <asm-generic/rtc.h>
diff --git a/arch/x86/include/asm/rwlock.h b/arch/x86/include/asm/rwlock.h
new file mode 100644
index 000000000000..6a8c0d645108
--- /dev/null
+++ b/arch/x86/include/asm/rwlock.h
@@ -0,0 +1,8 @@
1#ifndef _ASM_X86_RWLOCK_H
2#define _ASM_X86_RWLOCK_H
3
4#define RW_LOCK_BIAS 0x01000000
5
6/* Actual code is in asm/spinlock.h or in arch/x86/lib/rwlock.S */
7
8#endif /* _ASM_X86_RWLOCK_H */
diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h
new file mode 100644
index 000000000000..ca7517d33776
--- /dev/null
+++ b/arch/x86/include/asm/rwsem.h
@@ -0,0 +1,265 @@
1/* rwsem.h: R/W semaphores implemented using XADD/CMPXCHG for i486+
2 *
3 * Written by David Howells (dhowells@redhat.com).
4 *
5 * Derived from asm-x86/semaphore.h
6 *
7 *
8 * The MSW of the count is the negated number of active writers and waiting
9 * lockers, and the LSW is the total number of active locks
10 *
11 * The lock count is initialized to 0 (no active and no waiting lockers).
12 *
13 * When a writer subtracts WRITE_BIAS, it'll get 0xffff0001 for the case of an
14 * uncontended lock. This can be determined because XADD returns the old value.
15 * Readers increment by 1 and see a positive value when uncontended, negative
16 * if there are writers (and maybe) readers waiting (in which case it goes to
17 * sleep).
18 *
19 * The value of WAITING_BIAS supports up to 32766 waiting processes. This can
20 * be extended to 65534 by manually checking the whole MSW rather than relying
21 * on the S flag.
22 *
23 * The value of ACTIVE_BIAS supports up to 65535 active processes.
24 *
25 * This should be totally fair - if anything is waiting, a process that wants a
26 * lock will go to the back of the queue. When the currently active lock is
27 * released, if there's a writer at the front of the queue, then that and only
28 * that will be woken up; if there's a bunch of consequtive readers at the
29 * front, then they'll all be woken up, but no other readers will be.
30 */
31
32#ifndef _ASM_X86_RWSEM_H
33#define _ASM_X86_RWSEM_H
34
35#ifndef _LINUX_RWSEM_H
36#error "please don't include asm/rwsem.h directly, use linux/rwsem.h instead"
37#endif
38
39#ifdef __KERNEL__
40
41#include <linux/list.h>
42#include <linux/spinlock.h>
43#include <linux/lockdep.h>
44
45struct rwsem_waiter;
46
47extern asmregparm struct rw_semaphore *
48 rwsem_down_read_failed(struct rw_semaphore *sem);
49extern asmregparm struct rw_semaphore *
50 rwsem_down_write_failed(struct rw_semaphore *sem);
51extern asmregparm struct rw_semaphore *
52 rwsem_wake(struct rw_semaphore *);
53extern asmregparm struct rw_semaphore *
54 rwsem_downgrade_wake(struct rw_semaphore *sem);
55
56/*
57 * the semaphore definition
58 */
59
60#define RWSEM_UNLOCKED_VALUE 0x00000000
61#define RWSEM_ACTIVE_BIAS 0x00000001
62#define RWSEM_ACTIVE_MASK 0x0000ffff
63#define RWSEM_WAITING_BIAS (-0x00010000)
64#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
65#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
66
67struct rw_semaphore {
68 signed long count;
69 spinlock_t wait_lock;
70 struct list_head wait_list;
71#ifdef CONFIG_DEBUG_LOCK_ALLOC
72 struct lockdep_map dep_map;
73#endif
74};
75
76#ifdef CONFIG_DEBUG_LOCK_ALLOC
77# define __RWSEM_DEP_MAP_INIT(lockname) , .dep_map = { .name = #lockname }
78#else
79# define __RWSEM_DEP_MAP_INIT(lockname)
80#endif
81
82
83#define __RWSEM_INITIALIZER(name) \
84{ \
85 RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \
86 LIST_HEAD_INIT((name).wait_list) __RWSEM_DEP_MAP_INIT(name) \
87}
88
89#define DECLARE_RWSEM(name) \
90 struct rw_semaphore name = __RWSEM_INITIALIZER(name)
91
92extern void __init_rwsem(struct rw_semaphore *sem, const char *name,
93 struct lock_class_key *key);
94
95#define init_rwsem(sem) \
96do { \
97 static struct lock_class_key __key; \
98 \
99 __init_rwsem((sem), #sem, &__key); \
100} while (0)
101
102/*
103 * lock for reading
104 */
105static inline void __down_read(struct rw_semaphore *sem)
106{
107 asm volatile("# beginning down_read\n\t"
108 LOCK_PREFIX " incl (%%eax)\n\t"
109 /* adds 0x00000001, returns the old value */
110 " jns 1f\n"
111 " call call_rwsem_down_read_failed\n"
112 "1:\n\t"
113 "# ending down_read\n\t"
114 : "+m" (sem->count)
115 : "a" (sem)
116 : "memory", "cc");
117}
118
119/*
120 * trylock for reading -- returns 1 if successful, 0 if contention
121 */
122static inline int __down_read_trylock(struct rw_semaphore *sem)
123{
124 __s32 result, tmp;
125 asm volatile("# beginning __down_read_trylock\n\t"
126 " movl %0,%1\n\t"
127 "1:\n\t"
128 " movl %1,%2\n\t"
129 " addl %3,%2\n\t"
130 " jle 2f\n\t"
131 LOCK_PREFIX " cmpxchgl %2,%0\n\t"
132 " jnz 1b\n\t"
133 "2:\n\t"
134 "# ending __down_read_trylock\n\t"
135 : "+m" (sem->count), "=&a" (result), "=&r" (tmp)
136 : "i" (RWSEM_ACTIVE_READ_BIAS)
137 : "memory", "cc");
138 return result >= 0 ? 1 : 0;
139}
140
141/*
142 * lock for writing
143 */
144static inline void __down_write_nested(struct rw_semaphore *sem, int subclass)
145{
146 int tmp;
147
148 tmp = RWSEM_ACTIVE_WRITE_BIAS;
149 asm volatile("# beginning down_write\n\t"
150 LOCK_PREFIX " xadd %%edx,(%%eax)\n\t"
151 /* subtract 0x0000ffff, returns the old value */
152 " testl %%edx,%%edx\n\t"
153 /* was the count 0 before? */
154 " jz 1f\n"
155 " call call_rwsem_down_write_failed\n"
156 "1:\n"
157 "# ending down_write"
158 : "+m" (sem->count), "=d" (tmp)
159 : "a" (sem), "1" (tmp)
160 : "memory", "cc");
161}
162
163static inline void __down_write(struct rw_semaphore *sem)
164{
165 __down_write_nested(sem, 0);
166}
167
168/*
169 * trylock for writing -- returns 1 if successful, 0 if contention
170 */
171static inline int __down_write_trylock(struct rw_semaphore *sem)
172{
173 signed long ret = cmpxchg(&sem->count,
174 RWSEM_UNLOCKED_VALUE,
175 RWSEM_ACTIVE_WRITE_BIAS);
176 if (ret == RWSEM_UNLOCKED_VALUE)
177 return 1;
178 return 0;
179}
180
181/*
182 * unlock after reading
183 */
184static inline void __up_read(struct rw_semaphore *sem)
185{
186 __s32 tmp = -RWSEM_ACTIVE_READ_BIAS;
187 asm volatile("# beginning __up_read\n\t"
188 LOCK_PREFIX " xadd %%edx,(%%eax)\n\t"
189 /* subtracts 1, returns the old value */
190 " jns 1f\n\t"
191 " call call_rwsem_wake\n"
192 "1:\n"
193 "# ending __up_read\n"
194 : "+m" (sem->count), "=d" (tmp)
195 : "a" (sem), "1" (tmp)
196 : "memory", "cc");
197}
198
199/*
200 * unlock after writing
201 */
202static inline void __up_write(struct rw_semaphore *sem)
203{
204 asm volatile("# beginning __up_write\n\t"
205 " movl %2,%%edx\n\t"
206 LOCK_PREFIX " xaddl %%edx,(%%eax)\n\t"
207 /* tries to transition
208 0xffff0001 -> 0x00000000 */
209 " jz 1f\n"
210 " call call_rwsem_wake\n"
211 "1:\n\t"
212 "# ending __up_write\n"
213 : "+m" (sem->count)
214 : "a" (sem), "i" (-RWSEM_ACTIVE_WRITE_BIAS)
215 : "memory", "cc", "edx");
216}
217
218/*
219 * downgrade write lock to read lock
220 */
221static inline void __downgrade_write(struct rw_semaphore *sem)
222{
223 asm volatile("# beginning __downgrade_write\n\t"
224 LOCK_PREFIX " addl %2,(%%eax)\n\t"
225 /* transitions 0xZZZZ0001 -> 0xYYYY0001 */
226 " jns 1f\n\t"
227 " call call_rwsem_downgrade_wake\n"
228 "1:\n\t"
229 "# ending __downgrade_write\n"
230 : "+m" (sem->count)
231 : "a" (sem), "i" (-RWSEM_WAITING_BIAS)
232 : "memory", "cc");
233}
234
235/*
236 * implement atomic add functionality
237 */
238static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem)
239{
240 asm volatile(LOCK_PREFIX "addl %1,%0"
241 : "+m" (sem->count)
242 : "ir" (delta));
243}
244
245/*
246 * implement exchange and add functionality
247 */
248static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem)
249{
250 int tmp = delta;
251
252 asm volatile(LOCK_PREFIX "xadd %0,%1"
253 : "+r" (tmp), "+m" (sem->count)
254 : : "memory");
255
256 return tmp + delta;
257}
258
259static inline int rwsem_is_locked(struct rw_semaphore *sem)
260{
261 return (sem->count != 0);
262}
263
264#endif /* __KERNEL__ */
265#endif /* _ASM_X86_RWSEM_H */
diff --git a/arch/x86/include/asm/scatterlist.h b/arch/x86/include/asm/scatterlist.h
new file mode 100644
index 000000000000..263d397d2eef
--- /dev/null
+++ b/arch/x86/include/asm/scatterlist.h
@@ -0,0 +1,33 @@
1#ifndef _ASM_X86_SCATTERLIST_H
2#define _ASM_X86_SCATTERLIST_H
3
4#include <asm/types.h>
5
6struct scatterlist {
7#ifdef CONFIG_DEBUG_SG
8 unsigned long sg_magic;
9#endif
10 unsigned long page_link;
11 unsigned int offset;
12 unsigned int length;
13 dma_addr_t dma_address;
14 unsigned int dma_length;
15};
16
17#define ARCH_HAS_SG_CHAIN
18#define ISA_DMA_THRESHOLD (0x00ffffff)
19
20/*
21 * These macros should be used after a pci_map_sg call has been done
22 * to get bus addresses of each of the SG entries and their lengths.
23 * You should only work with the number of sg entries pci_map_sg
24 * returns.
25 */
26#define sg_dma_address(sg) ((sg)->dma_address)
27#ifdef CONFIG_X86_32
28# define sg_dma_len(sg) ((sg)->length)
29#else
30# define sg_dma_len(sg) ((sg)->dma_length)
31#endif
32
33#endif /* _ASM_X86_SCATTERLIST_H */
diff --git a/arch/x86/include/asm/seccomp.h b/arch/x86/include/asm/seccomp.h
new file mode 100644
index 000000000000..c62e58a5a90d
--- /dev/null
+++ b/arch/x86/include/asm/seccomp.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "seccomp_32.h"
3#else
4# include "seccomp_64.h"
5#endif
diff --git a/arch/x86/include/asm/seccomp_32.h b/arch/x86/include/asm/seccomp_32.h
new file mode 100644
index 000000000000..a6ad87b352c4
--- /dev/null
+++ b/arch/x86/include/asm/seccomp_32.h
@@ -0,0 +1,17 @@
1#ifndef _ASM_X86_SECCOMP_32_H
2#define _ASM_X86_SECCOMP_32_H
3
4#include <linux/thread_info.h>
5
6#ifdef TIF_32BIT
7#error "unexpected TIF_32BIT on i386"
8#endif
9
10#include <linux/unistd.h>
11
12#define __NR_seccomp_read __NR_read
13#define __NR_seccomp_write __NR_write
14#define __NR_seccomp_exit __NR_exit
15#define __NR_seccomp_sigreturn __NR_sigreturn
16
17#endif /* _ASM_X86_SECCOMP_32_H */
diff --git a/arch/x86/include/asm/seccomp_64.h b/arch/x86/include/asm/seccomp_64.h
new file mode 100644
index 000000000000..4171bb794e9e
--- /dev/null
+++ b/arch/x86/include/asm/seccomp_64.h
@@ -0,0 +1,25 @@
1#ifndef _ASM_X86_SECCOMP_64_H
2#define _ASM_X86_SECCOMP_64_H
3
4#include <linux/thread_info.h>
5
6#ifdef TIF_32BIT
7#error "unexpected TIF_32BIT on x86_64"
8#else
9#define TIF_32BIT TIF_IA32
10#endif
11
12#include <linux/unistd.h>
13#include <asm/ia32_unistd.h>
14
15#define __NR_seccomp_read __NR_read
16#define __NR_seccomp_write __NR_write
17#define __NR_seccomp_exit __NR_exit
18#define __NR_seccomp_sigreturn __NR_rt_sigreturn
19
20#define __NR_seccomp_read_32 __NR_ia32_read
21#define __NR_seccomp_write_32 __NR_ia32_write
22#define __NR_seccomp_exit_32 __NR_ia32_exit
23#define __NR_seccomp_sigreturn_32 __NR_ia32_sigreturn
24
25#endif /* _ASM_X86_SECCOMP_64_H */
diff --git a/arch/x86/include/asm/sections.h b/arch/x86/include/asm/sections.h
new file mode 100644
index 000000000000..2b8c5160388f
--- /dev/null
+++ b/arch/x86/include/asm/sections.h
@@ -0,0 +1 @@
#include <asm-generic/sections.h>
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h
new file mode 100644
index 000000000000..1dc1b51ac623
--- /dev/null
+++ b/arch/x86/include/asm/segment.h
@@ -0,0 +1,209 @@
1#ifndef _ASM_X86_SEGMENT_H
2#define _ASM_X86_SEGMENT_H
3
4/* Constructor for a conventional segment GDT (or LDT) entry */
5/* This is a macro so it can be used in initializers */
6#define GDT_ENTRY(flags, base, limit) \
7 ((((base) & 0xff000000ULL) << (56-24)) | \
8 (((flags) & 0x0000f0ffULL) << 40) | \
9 (((limit) & 0x000f0000ULL) << (48-16)) | \
10 (((base) & 0x00ffffffULL) << 16) | \
11 (((limit) & 0x0000ffffULL)))
12
13/* Simple and small GDT entries for booting only */
14
15#define GDT_ENTRY_BOOT_CS 2
16#define __BOOT_CS (GDT_ENTRY_BOOT_CS * 8)
17
18#define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT_CS + 1)
19#define __BOOT_DS (GDT_ENTRY_BOOT_DS * 8)
20
21#define GDT_ENTRY_BOOT_TSS (GDT_ENTRY_BOOT_CS + 2)
22#define __BOOT_TSS (GDT_ENTRY_BOOT_TSS * 8)
23
24#ifdef CONFIG_X86_32
25/*
26 * The layout of the per-CPU GDT under Linux:
27 *
28 * 0 - null
29 * 1 - reserved
30 * 2 - reserved
31 * 3 - reserved
32 *
33 * 4 - unused <==== new cacheline
34 * 5 - unused
35 *
36 * ------- start of TLS (Thread-Local Storage) segments:
37 *
38 * 6 - TLS segment #1 [ glibc's TLS segment ]
39 * 7 - TLS segment #2 [ Wine's %fs Win32 segment ]
40 * 8 - TLS segment #3
41 * 9 - reserved
42 * 10 - reserved
43 * 11 - reserved
44 *
45 * ------- start of kernel segments:
46 *
47 * 12 - kernel code segment <==== new cacheline
48 * 13 - kernel data segment
49 * 14 - default user CS
50 * 15 - default user DS
51 * 16 - TSS
52 * 17 - LDT
53 * 18 - PNPBIOS support (16->32 gate)
54 * 19 - PNPBIOS support
55 * 20 - PNPBIOS support
56 * 21 - PNPBIOS support
57 * 22 - PNPBIOS support
58 * 23 - APM BIOS support
59 * 24 - APM BIOS support
60 * 25 - APM BIOS support
61 *
62 * 26 - ESPFIX small SS
63 * 27 - per-cpu [ offset to per-cpu data area ]
64 * 28 - unused
65 * 29 - unused
66 * 30 - unused
67 * 31 - TSS for double fault handler
68 */
69#define GDT_ENTRY_TLS_MIN 6
70#define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
71
72#define GDT_ENTRY_DEFAULT_USER_CS 14
73
74#define GDT_ENTRY_DEFAULT_USER_DS 15
75
76#define GDT_ENTRY_KERNEL_BASE 12
77
78#define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0)
79
80#define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1)
81
82#define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4)
83#define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5)
84
85#define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 6)
86#define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 11)
87
88#define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14)
89#define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)
90
91#define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE + 15)
92#ifdef CONFIG_SMP
93#define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8)
94#else
95#define __KERNEL_PERCPU 0
96#endif
97
98#define GDT_ENTRY_DOUBLEFAULT_TSS 31
99
100/*
101 * The GDT has 32 entries
102 */
103#define GDT_ENTRIES 32
104
105/* The PnP BIOS entries in the GDT */
106#define GDT_ENTRY_PNPBIOS_CS32 (GDT_ENTRY_PNPBIOS_BASE + 0)
107#define GDT_ENTRY_PNPBIOS_CS16 (GDT_ENTRY_PNPBIOS_BASE + 1)
108#define GDT_ENTRY_PNPBIOS_DS (GDT_ENTRY_PNPBIOS_BASE + 2)
109#define GDT_ENTRY_PNPBIOS_TS1 (GDT_ENTRY_PNPBIOS_BASE + 3)
110#define GDT_ENTRY_PNPBIOS_TS2 (GDT_ENTRY_PNPBIOS_BASE + 4)
111
112/* The PnP BIOS selectors */
113#define PNP_CS32 (GDT_ENTRY_PNPBIOS_CS32 * 8) /* segment for calling fn */
114#define PNP_CS16 (GDT_ENTRY_PNPBIOS_CS16 * 8) /* code segment for BIOS */
115#define PNP_DS (GDT_ENTRY_PNPBIOS_DS * 8) /* data segment for BIOS */
116#define PNP_TS1 (GDT_ENTRY_PNPBIOS_TS1 * 8) /* transfer data segment */
117#define PNP_TS2 (GDT_ENTRY_PNPBIOS_TS2 * 8) /* another data segment */
118
119/* Bottom two bits of selector give the ring privilege level */
120#define SEGMENT_RPL_MASK 0x3
121/* Bit 2 is table indicator (LDT/GDT) */
122#define SEGMENT_TI_MASK 0x4
123
124/* User mode is privilege level 3 */
125#define USER_RPL 0x3
126/* LDT segment has TI set, GDT has it cleared */
127#define SEGMENT_LDT 0x4
128#define SEGMENT_GDT 0x0
129
130/*
131 * Matching rules for certain types of segments.
132 */
133
134/* Matches PNP_CS32 and PNP_CS16 (they must be consecutive) */
135#define SEGMENT_IS_PNP_CODE(x) (((x) & 0xf4) == GDT_ENTRY_PNPBIOS_BASE * 8)
136
137
138#else
139#include <asm/cache.h>
140
141#define GDT_ENTRY_KERNEL32_CS 1
142#define GDT_ENTRY_KERNEL_CS 2
143#define GDT_ENTRY_KERNEL_DS 3
144
145#define __KERNEL32_CS (GDT_ENTRY_KERNEL32_CS * 8)
146
147/*
148 * we cannot use the same code segment descriptor for user and kernel
149 * -- not even in the long flat mode, because of different DPL /kkeil
150 * The segment offset needs to contain a RPL. Grr. -AK
151 * GDT layout to get 64bit syscall right (sysret hardcodes gdt offsets)
152 */
153#define GDT_ENTRY_DEFAULT_USER32_CS 4
154#define GDT_ENTRY_DEFAULT_USER_DS 5
155#define GDT_ENTRY_DEFAULT_USER_CS 6
156#define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS * 8 + 3)
157#define __USER32_DS __USER_DS
158
159#define GDT_ENTRY_TSS 8 /* needs two entries */
160#define GDT_ENTRY_LDT 10 /* needs two entries */
161#define GDT_ENTRY_TLS_MIN 12
162#define GDT_ENTRY_TLS_MAX 14
163
164#define GDT_ENTRY_PER_CPU 15 /* Abused to load per CPU data from limit */
165#define __PER_CPU_SEG (GDT_ENTRY_PER_CPU * 8 + 3)
166
167/* TLS indexes for 64bit - hardcoded in arch_prctl */
168#define FS_TLS 0
169#define GS_TLS 1
170
171#define GS_TLS_SEL ((GDT_ENTRY_TLS_MIN+GS_TLS)*8 + 3)
172#define FS_TLS_SEL ((GDT_ENTRY_TLS_MIN+FS_TLS)*8 + 3)
173
174#define GDT_ENTRIES 16
175
176#endif
177
178#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)
179#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
180#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS* 8 + 3)
181#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3)
182#ifndef CONFIG_PARAVIRT
183#define get_kernel_rpl() 0
184#endif
185
186/* User mode is privilege level 3 */
187#define USER_RPL 0x3
188/* LDT segment has TI set, GDT has it cleared */
189#define SEGMENT_LDT 0x4
190#define SEGMENT_GDT 0x0
191
192/* Bottom two bits of selector give the ring privilege level */
193#define SEGMENT_RPL_MASK 0x3
194/* Bit 2 is table indicator (LDT/GDT) */
195#define SEGMENT_TI_MASK 0x4
196
197#define IDT_ENTRIES 256
198#define NUM_EXCEPTION_VECTORS 32
199#define GDT_SIZE (GDT_ENTRIES * 8)
200#define GDT_ENTRY_TLS_ENTRIES 3
201#define TLS_SIZE (GDT_ENTRY_TLS_ENTRIES * 8)
202
203#ifdef __KERNEL__
204#ifndef __ASSEMBLY__
205extern const char early_idt_handlers[NUM_EXCEPTION_VECTORS][10];
206#endif
207#endif
208
209#endif /* _ASM_X86_SEGMENT_H */
diff --git a/arch/x86/include/asm/sembuf.h b/arch/x86/include/asm/sembuf.h
new file mode 100644
index 000000000000..ee50c801f7b7
--- /dev/null
+++ b/arch/x86/include/asm/sembuf.h
@@ -0,0 +1,24 @@
1#ifndef _ASM_X86_SEMBUF_H
2#define _ASM_X86_SEMBUF_H
3
4/*
5 * The semid64_ds structure for x86 architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13struct semid64_ds {
14 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
15 __kernel_time_t sem_otime; /* last semop time */
16 unsigned long __unused1;
17 __kernel_time_t sem_ctime; /* last change time */
18 unsigned long __unused2;
19 unsigned long sem_nsems; /* no. of semaphores in array */
20 unsigned long __unused3;
21 unsigned long __unused4;
22};
23
24#endif /* _ASM_X86_SEMBUF_H */
diff --git a/arch/x86/include/asm/serial.h b/arch/x86/include/asm/serial.h
new file mode 100644
index 000000000000..628c801535ea
--- /dev/null
+++ b/arch/x86/include/asm/serial.h
@@ -0,0 +1,29 @@
1#ifndef _ASM_X86_SERIAL_H
2#define _ASM_X86_SERIAL_H
3
4/*
5 * This assumes you have a 1.8432 MHz clock for your UART.
6 *
7 * It'd be nice if someone built a serial card with a 24.576 MHz
8 * clock, since the 16550A is capable of handling a top speed of 1.5
9 * megabits/second; but this requires the faster clock.
10 */
11#define BASE_BAUD ( 1843200 / 16 )
12
13/* Standard COM flags (except for COM4, because of the 8514 problem) */
14#ifdef CONFIG_SERIAL_DETECT_IRQ
15#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
16#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
17#else
18#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
19#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
20#endif
21
22#define SERIAL_PORT_DFNS \
23 /* UART CLK PORT IRQ FLAGS */ \
24 { 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \
25 { 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \
26 { 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \
27 { 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */
28
29#endif /* _ASM_X86_SERIAL_H */
diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h
new file mode 100644
index 000000000000..f12d37237465
--- /dev/null
+++ b/arch/x86/include/asm/setup.h
@@ -0,0 +1,105 @@
1#ifndef _ASM_X86_SETUP_H
2#define _ASM_X86_SETUP_H
3
4#define COMMAND_LINE_SIZE 2048
5
6#ifndef __ASSEMBLY__
7
8/* Interrupt control for vSMPowered x86_64 systems */
9void vsmp_init(void);
10
11#ifdef CONFIG_X86_VISWS
12extern void visws_early_detect(void);
13extern int is_visws_box(void);
14#else
15static inline void visws_early_detect(void) { }
16static inline int is_visws_box(void) { return 0; }
17#endif
18
19/*
20 * Any setup quirks to be performed?
21 */
22struct mpc_config_processor;
23struct mpc_config_bus;
24struct mp_config_oemtable;
25struct x86_quirks {
26 int (*arch_pre_time_init)(void);
27 int (*arch_time_init)(void);
28 int (*arch_pre_intr_init)(void);
29 int (*arch_intr_init)(void);
30 int (*arch_trap_init)(void);
31 char * (*arch_memory_setup)(void);
32 int (*mach_get_smp_config)(unsigned int early);
33 int (*mach_find_smp_config)(unsigned int reserve);
34
35 int *mpc_record;
36 int (*mpc_apic_id)(struct mpc_config_processor *m);
37 void (*mpc_oem_bus_info)(struct mpc_config_bus *m, char *name);
38 void (*mpc_oem_pci_bus)(struct mpc_config_bus *m);
39 void (*smp_read_mpc_oem)(struct mp_config_oemtable *oemtable,
40 unsigned short oemsize);
41 int (*setup_ioapic_ids)(void);
42};
43
44extern struct x86_quirks *x86_quirks;
45extern unsigned long saved_video_mode;
46
47#ifndef CONFIG_PARAVIRT
48#define paravirt_post_allocator_init() do {} while (0)
49#endif
50#endif /* __ASSEMBLY__ */
51
52#ifdef __KERNEL__
53
54#ifdef __i386__
55
56#include <linux/pfn.h>
57/*
58 * Reserved space for vmalloc and iomap - defined in asm/page.h
59 */
60#define MAXMEM_PFN PFN_DOWN(MAXMEM)
61#define MAX_NONPAE_PFN (1 << 20)
62
63#endif /* __i386__ */
64
65#define PARAM_SIZE 4096 /* sizeof(struct boot_params) */
66
67#define OLD_CL_MAGIC 0xA33F
68#define OLD_CL_ADDRESS 0x020 /* Relative to real mode data */
69#define NEW_CL_POINTER 0x228 /* Relative to real mode data */
70
71#ifndef __ASSEMBLY__
72#include <asm/bootparam.h>
73
74#ifndef _SETUP
75
76/*
77 * This is set up by the setup-routine at boot-time
78 */
79extern struct boot_params boot_params;
80
81/*
82 * Do NOT EVER look at the BIOS memory size location.
83 * It does not work on many machines.
84 */
85#define LOWMEMSIZE() (0x9f000)
86
87#ifdef __i386__
88
89void __init i386_start_kernel(void);
90extern void probe_roms(void);
91
92extern unsigned long init_pg_tables_start;
93extern unsigned long init_pg_tables_end;
94
95#else
96void __init x86_64_init_pda(void);
97void __init x86_64_start_kernel(char *real_mode);
98void __init x86_64_start_reservations(char *real_mode_data);
99
100#endif /* __i386__ */
101#endif /* _SETUP */
102#endif /* __ASSEMBLY__ */
103#endif /* __KERNEL__ */
104
105#endif /* _ASM_X86_SETUP_H */
diff --git a/arch/x86/include/asm/shmbuf.h b/arch/x86/include/asm/shmbuf.h
new file mode 100644
index 000000000000..b51413b74971
--- /dev/null
+++ b/arch/x86/include/asm/shmbuf.h
@@ -0,0 +1,51 @@
1#ifndef _ASM_X86_SHMBUF_H
2#define _ASM_X86_SHMBUF_H
3
4/*
5 * The shmid64_ds structure for x86 architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space on 32 bit is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 *
13 * Pad space on 64 bit is left for:
14 * - 2 miscellaneous 64-bit values
15 */
16
17struct shmid64_ds {
18 struct ipc64_perm shm_perm; /* operation perms */
19 size_t shm_segsz; /* size of segment (bytes) */
20 __kernel_time_t shm_atime; /* last attach time */
21#ifdef __i386__
22 unsigned long __unused1;
23#endif
24 __kernel_time_t shm_dtime; /* last detach time */
25#ifdef __i386__
26 unsigned long __unused2;
27#endif
28 __kernel_time_t shm_ctime; /* last change time */
29#ifdef __i386__
30 unsigned long __unused3;
31#endif
32 __kernel_pid_t shm_cpid; /* pid of creator */
33 __kernel_pid_t shm_lpid; /* pid of last operator */
34 unsigned long shm_nattch; /* no. of current attaches */
35 unsigned long __unused4;
36 unsigned long __unused5;
37};
38
39struct shminfo64 {
40 unsigned long shmmax;
41 unsigned long shmmin;
42 unsigned long shmmni;
43 unsigned long shmseg;
44 unsigned long shmall;
45 unsigned long __unused1;
46 unsigned long __unused2;
47 unsigned long __unused3;
48 unsigned long __unused4;
49};
50
51#endif /* _ASM_X86_SHMBUF_H */
diff --git a/arch/x86/include/asm/shmparam.h b/arch/x86/include/asm/shmparam.h
new file mode 100644
index 000000000000..0880cf0917b9
--- /dev/null
+++ b/arch/x86/include/asm/shmparam.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_X86_SHMPARAM_H
2#define _ASM_X86_SHMPARAM_H
3
4#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
5
6#endif /* _ASM_X86_SHMPARAM_H */
diff --git a/arch/x86/include/asm/sigcontext.h b/arch/x86/include/asm/sigcontext.h
new file mode 100644
index 000000000000..0afcb5e58acc
--- /dev/null
+++ b/arch/x86/include/asm/sigcontext.h
@@ -0,0 +1,284 @@
1#ifndef _ASM_X86_SIGCONTEXT_H
2#define _ASM_X86_SIGCONTEXT_H
3
4#include <linux/compiler.h>
5#include <asm/types.h>
6
7#define FP_XSTATE_MAGIC1 0x46505853U
8#define FP_XSTATE_MAGIC2 0x46505845U
9#define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
10
11/*
12 * bytes 464..511 in the current 512byte layout of fxsave/fxrstor frame
13 * are reserved for SW usage. On cpu's supporting xsave/xrstor, these bytes
14 * are used to extended the fpstate pointer in the sigcontext, which now
15 * includes the extended state information along with fpstate information.
16 *
17 * Presence of FP_XSTATE_MAGIC1 at the beginning of this SW reserved
18 * area and FP_XSTATE_MAGIC2 at the end of memory layout
19 * (extended_size - FP_XSTATE_MAGIC2_SIZE) indicates the presence of the
20 * extended state information in the memory layout pointed by the fpstate
21 * pointer in sigcontext.
22 */
23struct _fpx_sw_bytes {
24 __u32 magic1; /* FP_XSTATE_MAGIC1 */
25 __u32 extended_size; /* total size of the layout referred by
26 * fpstate pointer in the sigcontext.
27 */
28 __u64 xstate_bv;
29 /* feature bit mask (including fp/sse/extended
30 * state) that is present in the memory
31 * layout.
32 */
33 __u32 xstate_size; /* actual xsave state size, based on the
34 * features saved in the layout.
35 * 'extended_size' will be greater than
36 * 'xstate_size'.
37 */
38 __u32 padding[7]; /* for future use. */
39};
40
41#ifdef __i386__
42/*
43 * As documented in the iBCS2 standard..
44 *
45 * The first part of "struct _fpstate" is just the normal i387
46 * hardware setup, the extra "status" word is used to save the
47 * coprocessor status word before entering the handler.
48 *
49 * Pentium III FXSR, SSE support
50 * Gareth Hughes <gareth@valinux.com>, May 2000
51 *
52 * The FPU state data structure has had to grow to accommodate the
53 * extended FPU state required by the Streaming SIMD Extensions.
54 * There is no documented standard to accomplish this at the moment.
55 */
56struct _fpreg {
57 unsigned short significand[4];
58 unsigned short exponent;
59};
60
61struct _fpxreg {
62 unsigned short significand[4];
63 unsigned short exponent;
64 unsigned short padding[3];
65};
66
67struct _xmmreg {
68 unsigned long element[4];
69};
70
71struct _fpstate {
72 /* Regular FPU environment */
73 unsigned long cw;
74 unsigned long sw;
75 unsigned long tag;
76 unsigned long ipoff;
77 unsigned long cssel;
78 unsigned long dataoff;
79 unsigned long datasel;
80 struct _fpreg _st[8];
81 unsigned short status;
82 unsigned short magic; /* 0xffff = regular FPU data only */
83
84 /* FXSR FPU environment */
85 unsigned long _fxsr_env[6]; /* FXSR FPU env is ignored */
86 unsigned long mxcsr;
87 unsigned long reserved;
88 struct _fpxreg _fxsr_st[8]; /* FXSR FPU reg data is ignored */
89 struct _xmmreg _xmm[8];
90 unsigned long padding1[44];
91
92 union {
93 unsigned long padding2[12];
94 struct _fpx_sw_bytes sw_reserved; /* represents the extended
95 * state info */
96 };
97};
98
99#define X86_FXSR_MAGIC 0x0000
100
101#ifdef __KERNEL__
102struct sigcontext {
103 unsigned short gs, __gsh;
104 unsigned short fs, __fsh;
105 unsigned short es, __esh;
106 unsigned short ds, __dsh;
107 unsigned long di;
108 unsigned long si;
109 unsigned long bp;
110 unsigned long sp;
111 unsigned long bx;
112 unsigned long dx;
113 unsigned long cx;
114 unsigned long ax;
115 unsigned long trapno;
116 unsigned long err;
117 unsigned long ip;
118 unsigned short cs, __csh;
119 unsigned long flags;
120 unsigned long sp_at_signal;
121 unsigned short ss, __ssh;
122
123 /*
124 * fpstate is really (struct _fpstate *) or (struct _xstate *)
125 * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
126 * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
127 * of extended memory layout. See comments at the defintion of
128 * (struct _fpx_sw_bytes)
129 */
130 void __user *fpstate; /* zero when no FPU/extended context */
131 unsigned long oldmask;
132 unsigned long cr2;
133};
134#else /* __KERNEL__ */
135/*
136 * User-space might still rely on the old definition:
137 */
138struct sigcontext {
139 unsigned short gs, __gsh;
140 unsigned short fs, __fsh;
141 unsigned short es, __esh;
142 unsigned short ds, __dsh;
143 unsigned long edi;
144 unsigned long esi;
145 unsigned long ebp;
146 unsigned long esp;
147 unsigned long ebx;
148 unsigned long edx;
149 unsigned long ecx;
150 unsigned long eax;
151 unsigned long trapno;
152 unsigned long err;
153 unsigned long eip;
154 unsigned short cs, __csh;
155 unsigned long eflags;
156 unsigned long esp_at_signal;
157 unsigned short ss, __ssh;
158 struct _fpstate __user *fpstate;
159 unsigned long oldmask;
160 unsigned long cr2;
161};
162#endif /* !__KERNEL__ */
163
164#else /* __i386__ */
165
166/* FXSAVE frame */
167/* Note: reserved1/2 may someday contain valuable data. Always save/restore
168 them when you change signal frames. */
169struct _fpstate {
170 __u16 cwd;
171 __u16 swd;
172 __u16 twd; /* Note this is not the same as the
173 32bit/x87/FSAVE twd */
174 __u16 fop;
175 __u64 rip;
176 __u64 rdp;
177 __u32 mxcsr;
178 __u32 mxcsr_mask;
179 __u32 st_space[32]; /* 8*16 bytes for each FP-reg */
180 __u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg */
181 __u32 reserved2[12];
182 union {
183 __u32 reserved3[12];
184 struct _fpx_sw_bytes sw_reserved; /* represents the extended
185 * state information */
186 };
187};
188
189#ifdef __KERNEL__
190struct sigcontext {
191 unsigned long r8;
192 unsigned long r9;
193 unsigned long r10;
194 unsigned long r11;
195 unsigned long r12;
196 unsigned long r13;
197 unsigned long r14;
198 unsigned long r15;
199 unsigned long di;
200 unsigned long si;
201 unsigned long bp;
202 unsigned long bx;
203 unsigned long dx;
204 unsigned long ax;
205 unsigned long cx;
206 unsigned long sp;
207 unsigned long ip;
208 unsigned long flags;
209 unsigned short cs;
210 unsigned short gs;
211 unsigned short fs;
212 unsigned short __pad0;
213 unsigned long err;
214 unsigned long trapno;
215 unsigned long oldmask;
216 unsigned long cr2;
217
218 /*
219 * fpstate is really (struct _fpstate *) or (struct _xstate *)
220 * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
221 * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
222 * of extended memory layout. See comments at the defintion of
223 * (struct _fpx_sw_bytes)
224 */
225 void __user *fpstate; /* zero when no FPU/extended context */
226 unsigned long reserved1[8];
227};
228#else /* __KERNEL__ */
229/*
230 * User-space might still rely on the old definition:
231 */
232struct sigcontext {
233 unsigned long r8;
234 unsigned long r9;
235 unsigned long r10;
236 unsigned long r11;
237 unsigned long r12;
238 unsigned long r13;
239 unsigned long r14;
240 unsigned long r15;
241 unsigned long rdi;
242 unsigned long rsi;
243 unsigned long rbp;
244 unsigned long rbx;
245 unsigned long rdx;
246 unsigned long rax;
247 unsigned long rcx;
248 unsigned long rsp;
249 unsigned long rip;
250 unsigned long eflags; /* RFLAGS */
251 unsigned short cs;
252 unsigned short gs;
253 unsigned short fs;
254 unsigned short __pad0;
255 unsigned long err;
256 unsigned long trapno;
257 unsigned long oldmask;
258 unsigned long cr2;
259 struct _fpstate __user *fpstate; /* zero when no FPU context */
260 unsigned long reserved1[8];
261};
262#endif /* !__KERNEL__ */
263
264#endif /* !__i386__ */
265
266struct _xsave_hdr {
267 __u64 xstate_bv;
268 __u64 reserved1[2];
269 __u64 reserved2[5];
270};
271
272/*
273 * Extended state pointed by the fpstate pointer in the sigcontext.
274 * In addition to the fpstate, information encoded in the xstate_hdr
275 * indicates the presence of other extended state information
276 * supported by the processor and OS.
277 */
278struct _xstate {
279 struct _fpstate fpstate;
280 struct _xsave_hdr xstate_hdr;
281 /* new processor state extensions go here */
282};
283
284#endif /* _ASM_X86_SIGCONTEXT_H */
diff --git a/arch/x86/include/asm/sigcontext32.h b/arch/x86/include/asm/sigcontext32.h
new file mode 100644
index 000000000000..6126188cf3a9
--- /dev/null
+++ b/arch/x86/include/asm/sigcontext32.h
@@ -0,0 +1,75 @@
1#ifndef _ASM_X86_SIGCONTEXT32_H
2#define _ASM_X86_SIGCONTEXT32_H
3
4/* signal context for 32bit programs. */
5
6#define X86_FXSR_MAGIC 0x0000
7
8struct _fpreg {
9 unsigned short significand[4];
10 unsigned short exponent;
11};
12
13struct _fpxreg {
14 unsigned short significand[4];
15 unsigned short exponent;
16 unsigned short padding[3];
17};
18
19struct _xmmreg {
20 __u32 element[4];
21};
22
23/* FSAVE frame with extensions */
24struct _fpstate_ia32 {
25 /* Regular FPU environment */
26 __u32 cw;
27 __u32 sw;
28 __u32 tag; /* not compatible to 64bit twd */
29 __u32 ipoff;
30 __u32 cssel;
31 __u32 dataoff;
32 __u32 datasel;
33 struct _fpreg _st[8];
34 unsigned short status;
35 unsigned short magic; /* 0xffff = regular FPU data only */
36
37 /* FXSR FPU environment */
38 __u32 _fxsr_env[6];
39 __u32 mxcsr;
40 __u32 reserved;
41 struct _fpxreg _fxsr_st[8];
42 struct _xmmreg _xmm[8]; /* It's actually 16 */
43 __u32 padding[44];
44 union {
45 __u32 padding2[12];
46 struct _fpx_sw_bytes sw_reserved;
47 };
48};
49
50struct sigcontext_ia32 {
51 unsigned short gs, __gsh;
52 unsigned short fs, __fsh;
53 unsigned short es, __esh;
54 unsigned short ds, __dsh;
55 unsigned int di;
56 unsigned int si;
57 unsigned int bp;
58 unsigned int sp;
59 unsigned int bx;
60 unsigned int dx;
61 unsigned int cx;
62 unsigned int ax;
63 unsigned int trapno;
64 unsigned int err;
65 unsigned int ip;
66 unsigned short cs, __csh;
67 unsigned int flags;
68 unsigned int sp_at_signal;
69 unsigned short ss, __ssh;
70 unsigned int fpstate; /* really (struct _fpstate_ia32 *) */
71 unsigned int oldmask;
72 unsigned int cr2;
73};
74
75#endif /* _ASM_X86_SIGCONTEXT32_H */
diff --git a/arch/x86/include/asm/siginfo.h b/arch/x86/include/asm/siginfo.h
new file mode 100644
index 000000000000..fc1aa5535646
--- /dev/null
+++ b/arch/x86/include/asm/siginfo.h
@@ -0,0 +1,10 @@
1#ifndef _ASM_X86_SIGINFO_H
2#define _ASM_X86_SIGINFO_H
3
4#ifdef __x86_64__
5# define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
6#endif
7
8#include <asm-generic/siginfo.h>
9
10#endif /* _ASM_X86_SIGINFO_H */
diff --git a/arch/x86/include/asm/signal.h b/arch/x86/include/asm/signal.h
new file mode 100644
index 000000000000..96ac44f275da
--- /dev/null
+++ b/arch/x86/include/asm/signal.h
@@ -0,0 +1,262 @@
1#ifndef _ASM_X86_SIGNAL_H
2#define _ASM_X86_SIGNAL_H
3
4#ifndef __ASSEMBLY__
5#include <linux/types.h>
6#include <linux/time.h>
7#include <linux/compiler.h>
8
9/* Avoid too many header ordering problems. */
10struct siginfo;
11
12#ifdef __KERNEL__
13#include <linux/linkage.h>
14
15/* Most things should be clean enough to redefine this at will, if care
16 is taken to make libc match. */
17
18#define _NSIG 64
19
20#ifdef __i386__
21# define _NSIG_BPW 32
22#else
23# define _NSIG_BPW 64
24#endif
25
26#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
27
28typedef unsigned long old_sigset_t; /* at least 32 bits */
29
30typedef struct {
31 unsigned long sig[_NSIG_WORDS];
32} sigset_t;
33
34#else
35/* Here we must cater to libcs that poke about in kernel headers. */
36
37#define NSIG 32
38typedef unsigned long sigset_t;
39
40#endif /* __KERNEL__ */
41#endif /* __ASSEMBLY__ */
42
43#define SIGHUP 1
44#define SIGINT 2
45#define SIGQUIT 3
46#define SIGILL 4
47#define SIGTRAP 5
48#define SIGABRT 6
49#define SIGIOT 6
50#define SIGBUS 7
51#define SIGFPE 8
52#define SIGKILL 9
53#define SIGUSR1 10
54#define SIGSEGV 11
55#define SIGUSR2 12
56#define SIGPIPE 13
57#define SIGALRM 14
58#define SIGTERM 15
59#define SIGSTKFLT 16
60#define SIGCHLD 17
61#define SIGCONT 18
62#define SIGSTOP 19
63#define SIGTSTP 20
64#define SIGTTIN 21
65#define SIGTTOU 22
66#define SIGURG 23
67#define SIGXCPU 24
68#define SIGXFSZ 25
69#define SIGVTALRM 26
70#define SIGPROF 27
71#define SIGWINCH 28
72#define SIGIO 29
73#define SIGPOLL SIGIO
74/*
75#define SIGLOST 29
76*/
77#define SIGPWR 30
78#define SIGSYS 31
79#define SIGUNUSED 31
80
81/* These should not be considered constants from userland. */
82#define SIGRTMIN 32
83#define SIGRTMAX _NSIG
84
85/*
86 * SA_FLAGS values:
87 *
88 * SA_ONSTACK indicates that a registered stack_t will be used.
89 * SA_RESTART flag to get restarting signals (which were the default long ago)
90 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
91 * SA_RESETHAND clears the handler when the signal is delivered.
92 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
93 * SA_NODEFER prevents the current signal from being masked in the handler.
94 *
95 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
96 * Unix names RESETHAND and NODEFER respectively.
97 */
98#define SA_NOCLDSTOP 0x00000001u
99#define SA_NOCLDWAIT 0x00000002u
100#define SA_SIGINFO 0x00000004u
101#define SA_ONSTACK 0x08000000u
102#define SA_RESTART 0x10000000u
103#define SA_NODEFER 0x40000000u
104#define SA_RESETHAND 0x80000000u
105
106#define SA_NOMASK SA_NODEFER
107#define SA_ONESHOT SA_RESETHAND
108
109#define SA_RESTORER 0x04000000
110
111/*
112 * sigaltstack controls
113 */
114#define SS_ONSTACK 1
115#define SS_DISABLE 2
116
117#define MINSIGSTKSZ 2048
118#define SIGSTKSZ 8192
119
120#include <asm-generic/signal.h>
121
122#ifndef __ASSEMBLY__
123
124#ifdef __i386__
125# ifdef __KERNEL__
126struct old_sigaction {
127 __sighandler_t sa_handler;
128 old_sigset_t sa_mask;
129 unsigned long sa_flags;
130 __sigrestore_t sa_restorer;
131};
132
133struct sigaction {
134 __sighandler_t sa_handler;
135 unsigned long sa_flags;
136 __sigrestore_t sa_restorer;
137 sigset_t sa_mask; /* mask last for extensibility */
138};
139
140struct k_sigaction {
141 struct sigaction sa;
142};
143
144extern void do_notify_resume(struct pt_regs *, void *, __u32);
145
146# else /* __KERNEL__ */
147/* Here we must cater to libcs that poke about in kernel headers. */
148
149struct sigaction {
150 union {
151 __sighandler_t _sa_handler;
152 void (*_sa_sigaction)(int, struct siginfo *, void *);
153 } _u;
154 sigset_t sa_mask;
155 unsigned long sa_flags;
156 void (*sa_restorer)(void);
157};
158
159#define sa_handler _u._sa_handler
160#define sa_sigaction _u._sa_sigaction
161
162# endif /* ! __KERNEL__ */
163#else /* __i386__ */
164
165struct sigaction {
166 __sighandler_t sa_handler;
167 unsigned long sa_flags;
168 __sigrestore_t sa_restorer;
169 sigset_t sa_mask; /* mask last for extensibility */
170};
171
172struct k_sigaction {
173 struct sigaction sa;
174};
175
176#endif /* !__i386__ */
177
178typedef struct sigaltstack {
179 void __user *ss_sp;
180 int ss_flags;
181 size_t ss_size;
182} stack_t;
183
184#ifdef __KERNEL__
185#include <asm/sigcontext.h>
186
187#ifdef __i386__
188
189#define __HAVE_ARCH_SIG_BITOPS
190
191#define sigaddset(set,sig) \
192 (__builtin_constant_p(sig) \
193 ? __const_sigaddset((set), (sig)) \
194 : __gen_sigaddset((set), (sig)))
195
196static inline void __gen_sigaddset(sigset_t *set, int _sig)
197{
198 asm("btsl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
199}
200
201static inline void __const_sigaddset(sigset_t *set, int _sig)
202{
203 unsigned long sig = _sig - 1;
204 set->sig[sig / _NSIG_BPW] |= 1 << (sig % _NSIG_BPW);
205}
206
207#define sigdelset(set, sig) \
208 (__builtin_constant_p(sig) \
209 ? __const_sigdelset((set), (sig)) \
210 : __gen_sigdelset((set), (sig)))
211
212
213static inline void __gen_sigdelset(sigset_t *set, int _sig)
214{
215 asm("btrl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
216}
217
218static inline void __const_sigdelset(sigset_t *set, int _sig)
219{
220 unsigned long sig = _sig - 1;
221 set->sig[sig / _NSIG_BPW] &= ~(1 << (sig % _NSIG_BPW));
222}
223
224static inline int __const_sigismember(sigset_t *set, int _sig)
225{
226 unsigned long sig = _sig - 1;
227 return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
228}
229
230static inline int __gen_sigismember(sigset_t *set, int _sig)
231{
232 int ret;
233 asm("btl %2,%1\n\tsbbl %0,%0"
234 : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
235 return ret;
236}
237
238#define sigismember(set, sig) \
239 (__builtin_constant_p(sig) \
240 ? __const_sigismember((set), (sig)) \
241 : __gen_sigismember((set), (sig)))
242
243static inline int sigfindinword(unsigned long word)
244{
245 asm("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc");
246 return word;
247}
248
249struct pt_regs;
250
251#else /* __i386__ */
252
253#undef __HAVE_ARCH_SIG_BITOPS
254
255#endif /* !__i386__ */
256
257#define ptrace_signal_deliver(regs, cookie) do { } while (0)
258
259#endif /* __KERNEL__ */
260#endif /* __ASSEMBLY__ */
261
262#endif /* _ASM_X86_SIGNAL_H */
diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
new file mode 100644
index 000000000000..2766021aef80
--- /dev/null
+++ b/arch/x86/include/asm/smp.h
@@ -0,0 +1,229 @@
1#ifndef _ASM_X86_SMP_H
2#define _ASM_X86_SMP_H
3#ifndef __ASSEMBLY__
4#include <linux/cpumask.h>
5#include <linux/init.h>
6#include <asm/percpu.h>
7
8/*
9 * We need the APIC definitions automatically as part of 'smp.h'
10 */
11#ifdef CONFIG_X86_LOCAL_APIC
12# include <asm/mpspec.h>
13# include <asm/apic.h>
14# ifdef CONFIG_X86_IO_APIC
15# include <asm/io_apic.h>
16# endif
17#endif
18#include <asm/pda.h>
19#include <asm/thread_info.h>
20
21extern cpumask_t cpu_callout_map;
22extern cpumask_t cpu_initialized;
23extern cpumask_t cpu_callin_map;
24
25extern void (*mtrr_hook)(void);
26extern void zap_low_mappings(void);
27
28extern int __cpuinit get_local_pda(int cpu);
29
30extern int smp_num_siblings;
31extern unsigned int num_processors;
32extern cpumask_t cpu_initialized;
33
34DECLARE_PER_CPU(cpumask_t, cpu_sibling_map);
35DECLARE_PER_CPU(cpumask_t, cpu_core_map);
36DECLARE_PER_CPU(u16, cpu_llc_id);
37#ifdef CONFIG_X86_32
38DECLARE_PER_CPU(int, cpu_number);
39#endif
40
41DECLARE_EARLY_PER_CPU(u16, x86_cpu_to_apicid);
42DECLARE_EARLY_PER_CPU(u16, x86_bios_cpu_apicid);
43
44/* Static state in head.S used to set up a CPU */
45extern struct {
46 void *sp;
47 unsigned short ss;
48} stack_start;
49
50struct smp_ops {
51 void (*smp_prepare_boot_cpu)(void);
52 void (*smp_prepare_cpus)(unsigned max_cpus);
53 void (*smp_cpus_done)(unsigned max_cpus);
54
55 void (*smp_send_stop)(void);
56 void (*smp_send_reschedule)(int cpu);
57
58 int (*cpu_up)(unsigned cpu);
59 int (*cpu_disable)(void);
60 void (*cpu_die)(unsigned int cpu);
61 void (*play_dead)(void);
62
63 void (*send_call_func_ipi)(cpumask_t mask);
64 void (*send_call_func_single_ipi)(int cpu);
65};
66
67/* Globals due to paravirt */
68extern void set_cpu_sibling_map(int cpu);
69
70#ifdef CONFIG_SMP
71#ifndef CONFIG_PARAVIRT
72#define startup_ipi_hook(phys_apicid, start_eip, start_esp) do { } while (0)
73#endif
74extern struct smp_ops smp_ops;
75
76static inline void smp_send_stop(void)
77{
78 smp_ops.smp_send_stop();
79}
80
81static inline void smp_prepare_boot_cpu(void)
82{
83 smp_ops.smp_prepare_boot_cpu();
84}
85
86static inline void smp_prepare_cpus(unsigned int max_cpus)
87{
88 smp_ops.smp_prepare_cpus(max_cpus);
89}
90
91static inline void smp_cpus_done(unsigned int max_cpus)
92{
93 smp_ops.smp_cpus_done(max_cpus);
94}
95
96static inline int __cpu_up(unsigned int cpu)
97{
98 return smp_ops.cpu_up(cpu);
99}
100
101static inline int __cpu_disable(void)
102{
103 return smp_ops.cpu_disable();
104}
105
106static inline void __cpu_die(unsigned int cpu)
107{
108 smp_ops.cpu_die(cpu);
109}
110
111static inline void play_dead(void)
112{
113 smp_ops.play_dead();
114}
115
116static inline void smp_send_reschedule(int cpu)
117{
118 smp_ops.smp_send_reschedule(cpu);
119}
120
121static inline void arch_send_call_function_single_ipi(int cpu)
122{
123 smp_ops.send_call_func_single_ipi(cpu);
124}
125
126static inline void arch_send_call_function_ipi(cpumask_t mask)
127{
128 smp_ops.send_call_func_ipi(mask);
129}
130
131void cpu_disable_common(void);
132void native_smp_prepare_boot_cpu(void);
133void native_smp_prepare_cpus(unsigned int max_cpus);
134void native_smp_cpus_done(unsigned int max_cpus);
135int native_cpu_up(unsigned int cpunum);
136int native_cpu_disable(void);
137void native_cpu_die(unsigned int cpu);
138void native_play_dead(void);
139void play_dead_common(void);
140
141void native_send_call_func_ipi(cpumask_t mask);
142void native_send_call_func_single_ipi(int cpu);
143
144extern void prefill_possible_map(void);
145
146void smp_store_cpu_info(int id);
147#define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu)
148
149/* We don't mark CPUs online until __cpu_up(), so we need another measure */
150static inline int num_booting_cpus(void)
151{
152 return cpus_weight(cpu_callout_map);
153}
154#else
155static inline void prefill_possible_map(void)
156{
157}
158#endif /* CONFIG_SMP */
159
160extern unsigned disabled_cpus __cpuinitdata;
161
162#ifdef CONFIG_X86_32_SMP
163/*
164 * This function is needed by all SMP systems. It must _always_ be valid
165 * from the initial startup. We map APIC_BASE very early in page_setup(),
166 * so this is correct in the x86 case.
167 */
168#define raw_smp_processor_id() (x86_read_percpu(cpu_number))
169extern int safe_smp_processor_id(void);
170
171#elif defined(CONFIG_X86_64_SMP)
172#define raw_smp_processor_id() read_pda(cpunumber)
173
174#define stack_smp_processor_id() \
175({ \
176 struct thread_info *ti; \
177 __asm__("andq %%rsp,%0; ":"=r" (ti) : "0" (CURRENT_MASK)); \
178 ti->cpu; \
179})
180#define safe_smp_processor_id() smp_processor_id()
181
182#else /* !CONFIG_X86_32_SMP && !CONFIG_X86_64_SMP */
183#define cpu_physical_id(cpu) boot_cpu_physical_apicid
184#define safe_smp_processor_id() 0
185#define stack_smp_processor_id() 0
186#endif
187
188#ifdef CONFIG_X86_LOCAL_APIC
189
190#ifndef CONFIG_X86_64
191static inline int logical_smp_processor_id(void)
192{
193 /* we don't want to mark this access volatile - bad code generation */
194 return GET_APIC_LOGICAL_ID(*(u32 *)(APIC_BASE + APIC_LDR));
195}
196
197#include <mach_apicdef.h>
198static inline unsigned int read_apic_id(void)
199{
200 unsigned int reg;
201
202 reg = *(u32 *)(APIC_BASE + APIC_ID);
203
204 return GET_APIC_ID(reg);
205}
206#endif
207
208
209# if defined(APIC_DEFINITION) || defined(CONFIG_X86_64)
210extern int hard_smp_processor_id(void);
211# else
212#include <mach_apicdef.h>
213static inline int hard_smp_processor_id(void)
214{
215 /* we don't want to mark this access volatile - bad code generation */
216 return read_apic_id();
217}
218# endif /* APIC_DEFINITION */
219
220#else /* CONFIG_X86_LOCAL_APIC */
221
222# ifndef CONFIG_SMP
223# define hard_smp_processor_id() 0
224# endif
225
226#endif /* CONFIG_X86_LOCAL_APIC */
227
228#endif /* __ASSEMBLY__ */
229#endif /* _ASM_X86_SMP_H */
diff --git a/arch/x86/include/asm/socket.h b/arch/x86/include/asm/socket.h
new file mode 100644
index 000000000000..8ab9cc8b2ecc
--- /dev/null
+++ b/arch/x86/include/asm/socket.h
@@ -0,0 +1,57 @@
1#ifndef _ASM_X86_SOCKET_H
2#define _ASM_X86_SOCKET_H
3
4#include <asm/sockios.h>
5
6/* For setsockopt(2) */
7#define SOL_SOCKET 1
8
9#define SO_DEBUG 1
10#define SO_REUSEADDR 2
11#define SO_TYPE 3
12#define SO_ERROR 4
13#define SO_DONTROUTE 5
14#define SO_BROADCAST 6
15#define SO_SNDBUF 7
16#define SO_RCVBUF 8
17#define SO_SNDBUFFORCE 32
18#define SO_RCVBUFFORCE 33
19#define SO_KEEPALIVE 9
20#define SO_OOBINLINE 10
21#define SO_NO_CHECK 11
22#define SO_PRIORITY 12
23#define SO_LINGER 13
24#define SO_BSDCOMPAT 14
25/* To add :#define SO_REUSEPORT 15 */
26#define SO_PASSCRED 16
27#define SO_PEERCRED 17
28#define SO_RCVLOWAT 18
29#define SO_SNDLOWAT 19
30#define SO_RCVTIMEO 20
31#define SO_SNDTIMEO 21
32
33/* Security levels - as per NRL IPv6 - don't actually do anything */
34#define SO_SECURITY_AUTHENTICATION 22
35#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
36#define SO_SECURITY_ENCRYPTION_NETWORK 24
37
38#define SO_BINDTODEVICE 25
39
40/* Socket filtering */
41#define SO_ATTACH_FILTER 26
42#define SO_DETACH_FILTER 27
43
44#define SO_PEERNAME 28
45#define SO_TIMESTAMP 29
46#define SCM_TIMESTAMP SO_TIMESTAMP
47
48#define SO_ACCEPTCONN 30
49
50#define SO_PEERSEC 31
51#define SO_PASSSEC 34
52#define SO_TIMESTAMPNS 35
53#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
54
55#define SO_MARK 36
56
57#endif /* _ASM_X86_SOCKET_H */
diff --git a/arch/x86/include/asm/sockios.h b/arch/x86/include/asm/sockios.h
new file mode 100644
index 000000000000..49cc72b5d3c9
--- /dev/null
+++ b/arch/x86/include/asm/sockios.h
@@ -0,0 +1,13 @@
1#ifndef _ASM_X86_SOCKIOS_H
2#define _ASM_X86_SOCKIOS_H
3
4/* Socket-level I/O control calls. */
5#define FIOSETOWN 0x8901
6#define SIOCSPGRP 0x8902
7#define FIOGETOWN 0x8903
8#define SIOCGPGRP 0x8904
9#define SIOCATMARK 0x8905
10#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
11#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
12
13#endif /* _ASM_X86_SOCKIOS_H */
diff --git a/arch/x86/include/asm/sparsemem.h b/arch/x86/include/asm/sparsemem.h
new file mode 100644
index 000000000000..be44f7dab395
--- /dev/null
+++ b/arch/x86/include/asm/sparsemem.h
@@ -0,0 +1,34 @@
1#ifndef _ASM_X86_SPARSEMEM_H
2#define _ASM_X86_SPARSEMEM_H
3
4#ifdef CONFIG_SPARSEMEM
5/*
6 * generic non-linear memory support:
7 *
8 * 1) we will not split memory into more chunks than will fit into the flags
9 * field of the struct page
10 *
11 * SECTION_SIZE_BITS 2^n: size of each section
12 * MAX_PHYSADDR_BITS 2^n: max size of physical address space
13 * MAX_PHYSMEM_BITS 2^n: how much memory we can have in that space
14 *
15 */
16
17#ifdef CONFIG_X86_32
18# ifdef CONFIG_X86_PAE
19# define SECTION_SIZE_BITS 29
20# define MAX_PHYSADDR_BITS 36
21# define MAX_PHYSMEM_BITS 36
22# else
23# define SECTION_SIZE_BITS 26
24# define MAX_PHYSADDR_BITS 32
25# define MAX_PHYSMEM_BITS 32
26# endif
27#else /* CONFIG_X86_32 */
28# define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */
29# define MAX_PHYSADDR_BITS 44
30# define MAX_PHYSMEM_BITS 44
31#endif
32
33#endif /* CONFIG_SPARSEMEM */
34#endif /* _ASM_X86_SPARSEMEM_H */
diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h
new file mode 100644
index 000000000000..d17c91981da2
--- /dev/null
+++ b/arch/x86/include/asm/spinlock.h
@@ -0,0 +1,364 @@
1#ifndef _ASM_X86_SPINLOCK_H
2#define _ASM_X86_SPINLOCK_H
3
4#include <asm/atomic.h>
5#include <asm/rwlock.h>
6#include <asm/page.h>
7#include <asm/processor.h>
8#include <linux/compiler.h>
9#include <asm/paravirt.h>
10/*
11 * Your basic SMP spinlocks, allowing only a single CPU anywhere
12 *
13 * Simple spin lock operations. There are two variants, one clears IRQ's
14 * on the local processor, one does not.
15 *
16 * These are fair FIFO ticket locks, which are currently limited to 256
17 * CPUs.
18 *
19 * (the type definitions are in asm/spinlock_types.h)
20 */
21
22#ifdef CONFIG_X86_32
23# define LOCK_PTR_REG "a"
24# define REG_PTR_MODE "k"
25#else
26# define LOCK_PTR_REG "D"
27# define REG_PTR_MODE "q"
28#endif
29
30#if defined(CONFIG_X86_32) && \
31 (defined(CONFIG_X86_OOSTORE) || defined(CONFIG_X86_PPRO_FENCE))
32/*
33 * On PPro SMP or if we are using OOSTORE, we use a locked operation to unlock
34 * (PPro errata 66, 92)
35 */
36# define UNLOCK_LOCK_PREFIX LOCK_PREFIX
37#else
38# define UNLOCK_LOCK_PREFIX
39#endif
40
41/*
42 * Ticket locks are conceptually two parts, one indicating the current head of
43 * the queue, and the other indicating the current tail. The lock is acquired
44 * by atomically noting the tail and incrementing it by one (thus adding
45 * ourself to the queue and noting our position), then waiting until the head
46 * becomes equal to the the initial value of the tail.
47 *
48 * We use an xadd covering *both* parts of the lock, to increment the tail and
49 * also load the position of the head, which takes care of memory ordering
50 * issues and should be optimal for the uncontended case. Note the tail must be
51 * in the high part, because a wide xadd increment of the low part would carry
52 * up and contaminate the high part.
53 *
54 * With fewer than 2^8 possible CPUs, we can use x86's partial registers to
55 * save some instructions and make the code more elegant. There really isn't
56 * much between them in performance though, especially as locks are out of line.
57 */
58#if (NR_CPUS < 256)
59#define TICKET_SHIFT 8
60
61static __always_inline void __ticket_spin_lock(raw_spinlock_t *lock)
62{
63 short inc = 0x0100;
64
65 asm volatile (
66 LOCK_PREFIX "xaddw %w0, %1\n"
67 "1:\t"
68 "cmpb %h0, %b0\n\t"
69 "je 2f\n\t"
70 "rep ; nop\n\t"
71 "movb %1, %b0\n\t"
72 /* don't need lfence here, because loads are in-order */
73 "jmp 1b\n"
74 "2:"
75 : "+Q" (inc), "+m" (lock->slock)
76 :
77 : "memory", "cc");
78}
79
80static __always_inline int __ticket_spin_trylock(raw_spinlock_t *lock)
81{
82 int tmp, new;
83
84 asm volatile("movzwl %2, %0\n\t"
85 "cmpb %h0,%b0\n\t"
86 "leal 0x100(%" REG_PTR_MODE "0), %1\n\t"
87 "jne 1f\n\t"
88 LOCK_PREFIX "cmpxchgw %w1,%2\n\t"
89 "1:"
90 "sete %b1\n\t"
91 "movzbl %b1,%0\n\t"
92 : "=&a" (tmp), "=&q" (new), "+m" (lock->slock)
93 :
94 : "memory", "cc");
95
96 return tmp;
97}
98
99static __always_inline void __ticket_spin_unlock(raw_spinlock_t *lock)
100{
101 asm volatile(UNLOCK_LOCK_PREFIX "incb %0"
102 : "+m" (lock->slock)
103 :
104 : "memory", "cc");
105}
106#else
107#define TICKET_SHIFT 16
108
109static __always_inline void __ticket_spin_lock(raw_spinlock_t *lock)
110{
111 int inc = 0x00010000;
112 int tmp;
113
114 asm volatile(LOCK_PREFIX "xaddl %0, %1\n"
115 "movzwl %w0, %2\n\t"
116 "shrl $16, %0\n\t"
117 "1:\t"
118 "cmpl %0, %2\n\t"
119 "je 2f\n\t"
120 "rep ; nop\n\t"
121 "movzwl %1, %2\n\t"
122 /* don't need lfence here, because loads are in-order */
123 "jmp 1b\n"
124 "2:"
125 : "+r" (inc), "+m" (lock->slock), "=&r" (tmp)
126 :
127 : "memory", "cc");
128}
129
130static __always_inline int __ticket_spin_trylock(raw_spinlock_t *lock)
131{
132 int tmp;
133 int new;
134
135 asm volatile("movl %2,%0\n\t"
136 "movl %0,%1\n\t"
137 "roll $16, %0\n\t"
138 "cmpl %0,%1\n\t"
139 "leal 0x00010000(%" REG_PTR_MODE "0), %1\n\t"
140 "jne 1f\n\t"
141 LOCK_PREFIX "cmpxchgl %1,%2\n\t"
142 "1:"
143 "sete %b1\n\t"
144 "movzbl %b1,%0\n\t"
145 : "=&a" (tmp), "=&q" (new), "+m" (lock->slock)
146 :
147 : "memory", "cc");
148
149 return tmp;
150}
151
152static __always_inline void __ticket_spin_unlock(raw_spinlock_t *lock)
153{
154 asm volatile(UNLOCK_LOCK_PREFIX "incw %0"
155 : "+m" (lock->slock)
156 :
157 : "memory", "cc");
158}
159#endif
160
161static inline int __ticket_spin_is_locked(raw_spinlock_t *lock)
162{
163 int tmp = ACCESS_ONCE(lock->slock);
164
165 return !!(((tmp >> TICKET_SHIFT) ^ tmp) & ((1 << TICKET_SHIFT) - 1));
166}
167
168static inline int __ticket_spin_is_contended(raw_spinlock_t *lock)
169{
170 int tmp = ACCESS_ONCE(lock->slock);
171
172 return (((tmp >> TICKET_SHIFT) - tmp) & ((1 << TICKET_SHIFT) - 1)) > 1;
173}
174
175#ifdef CONFIG_PARAVIRT
176/*
177 * Define virtualization-friendly old-style lock byte lock, for use in
178 * pv_lock_ops if desired.
179 *
180 * This differs from the pre-2.6.24 spinlock by always using xchgb
181 * rather than decb to take the lock; this allows it to use a
182 * zero-initialized lock structure. It also maintains a 1-byte
183 * contention counter, so that we can implement
184 * __byte_spin_is_contended.
185 */
186struct __byte_spinlock {
187 s8 lock;
188 s8 spinners;
189};
190
191static inline int __byte_spin_is_locked(raw_spinlock_t *lock)
192{
193 struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
194 return bl->lock != 0;
195}
196
197static inline int __byte_spin_is_contended(raw_spinlock_t *lock)
198{
199 struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
200 return bl->spinners != 0;
201}
202
203static inline void __byte_spin_lock(raw_spinlock_t *lock)
204{
205 struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
206 s8 val = 1;
207
208 asm("1: xchgb %1, %0\n"
209 " test %1,%1\n"
210 " jz 3f\n"
211 " " LOCK_PREFIX "incb %2\n"
212 "2: rep;nop\n"
213 " cmpb $1, %0\n"
214 " je 2b\n"
215 " " LOCK_PREFIX "decb %2\n"
216 " jmp 1b\n"
217 "3:"
218 : "+m" (bl->lock), "+q" (val), "+m" (bl->spinners): : "memory");
219}
220
221static inline int __byte_spin_trylock(raw_spinlock_t *lock)
222{
223 struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
224 u8 old = 1;
225
226 asm("xchgb %1,%0"
227 : "+m" (bl->lock), "+q" (old) : : "memory");
228
229 return old == 0;
230}
231
232static inline void __byte_spin_unlock(raw_spinlock_t *lock)
233{
234 struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
235 smp_wmb();
236 bl->lock = 0;
237}
238#else /* !CONFIG_PARAVIRT */
239static inline int __raw_spin_is_locked(raw_spinlock_t *lock)
240{
241 return __ticket_spin_is_locked(lock);
242}
243
244static inline int __raw_spin_is_contended(raw_spinlock_t *lock)
245{
246 return __ticket_spin_is_contended(lock);
247}
248
249static __always_inline void __raw_spin_lock(raw_spinlock_t *lock)
250{
251 __ticket_spin_lock(lock);
252}
253
254static __always_inline int __raw_spin_trylock(raw_spinlock_t *lock)
255{
256 return __ticket_spin_trylock(lock);
257}
258
259static __always_inline void __raw_spin_unlock(raw_spinlock_t *lock)
260{
261 __ticket_spin_unlock(lock);
262}
263
264static __always_inline void __raw_spin_lock_flags(raw_spinlock_t *lock,
265 unsigned long flags)
266{
267 __raw_spin_lock(lock);
268}
269
270#endif /* CONFIG_PARAVIRT */
271
272static inline void __raw_spin_unlock_wait(raw_spinlock_t *lock)
273{
274 while (__raw_spin_is_locked(lock))
275 cpu_relax();
276}
277
278/*
279 * Read-write spinlocks, allowing multiple readers
280 * but only one writer.
281 *
282 * NOTE! it is quite common to have readers in interrupts
283 * but no interrupt writers. For those circumstances we
284 * can "mix" irq-safe locks - any writer needs to get a
285 * irq-safe write-lock, but readers can get non-irqsafe
286 * read-locks.
287 *
288 * On x86, we implement read-write locks as a 32-bit counter
289 * with the high bit (sign) being the "contended" bit.
290 */
291
292/**
293 * read_can_lock - would read_trylock() succeed?
294 * @lock: the rwlock in question.
295 */
296static inline int __raw_read_can_lock(raw_rwlock_t *lock)
297{
298 return (int)(lock)->lock > 0;
299}
300
301/**
302 * write_can_lock - would write_trylock() succeed?
303 * @lock: the rwlock in question.
304 */
305static inline int __raw_write_can_lock(raw_rwlock_t *lock)
306{
307 return (lock)->lock == RW_LOCK_BIAS;
308}
309
310static inline void __raw_read_lock(raw_rwlock_t *rw)
311{
312 asm volatile(LOCK_PREFIX " subl $1,(%0)\n\t"
313 "jns 1f\n"
314 "call __read_lock_failed\n\t"
315 "1:\n"
316 ::LOCK_PTR_REG (rw) : "memory");
317}
318
319static inline void __raw_write_lock(raw_rwlock_t *rw)
320{
321 asm volatile(LOCK_PREFIX " subl %1,(%0)\n\t"
322 "jz 1f\n"
323 "call __write_lock_failed\n\t"
324 "1:\n"
325 ::LOCK_PTR_REG (rw), "i" (RW_LOCK_BIAS) : "memory");
326}
327
328static inline int __raw_read_trylock(raw_rwlock_t *lock)
329{
330 atomic_t *count = (atomic_t *)lock;
331
332 atomic_dec(count);
333 if (atomic_read(count) >= 0)
334 return 1;
335 atomic_inc(count);
336 return 0;
337}
338
339static inline int __raw_write_trylock(raw_rwlock_t *lock)
340{
341 atomic_t *count = (atomic_t *)lock;
342
343 if (atomic_sub_and_test(RW_LOCK_BIAS, count))
344 return 1;
345 atomic_add(RW_LOCK_BIAS, count);
346 return 0;
347}
348
349static inline void __raw_read_unlock(raw_rwlock_t *rw)
350{
351 asm volatile(LOCK_PREFIX "incl %0" :"+m" (rw->lock) : : "memory");
352}
353
354static inline void __raw_write_unlock(raw_rwlock_t *rw)
355{
356 asm volatile(LOCK_PREFIX "addl %1, %0"
357 : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory");
358}
359
360#define _raw_spin_relax(lock) cpu_relax()
361#define _raw_read_relax(lock) cpu_relax()
362#define _raw_write_relax(lock) cpu_relax()
363
364#endif /* _ASM_X86_SPINLOCK_H */
diff --git a/arch/x86/include/asm/spinlock_types.h b/arch/x86/include/asm/spinlock_types.h
new file mode 100644
index 000000000000..845f81c87091
--- /dev/null
+++ b/arch/x86/include/asm/spinlock_types.h
@@ -0,0 +1,20 @@
1#ifndef _ASM_X86_SPINLOCK_TYPES_H
2#define _ASM_X86_SPINLOCK_TYPES_H
3
4#ifndef __LINUX_SPINLOCK_TYPES_H
5# error "please don't include this file directly"
6#endif
7
8typedef struct raw_spinlock {
9 unsigned int slock;
10} raw_spinlock_t;
11
12#define __RAW_SPIN_LOCK_UNLOCKED { 0 }
13
14typedef struct {
15 unsigned int lock;
16} raw_rwlock_t;
17
18#define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS }
19
20#endif /* _ASM_X86_SPINLOCK_TYPES_H */
diff --git a/arch/x86/include/asm/srat.h b/arch/x86/include/asm/srat.h
new file mode 100644
index 000000000000..b508d639d1a7
--- /dev/null
+++ b/arch/x86/include/asm/srat.h
@@ -0,0 +1,39 @@
1/*
2 * Some of the code in this file has been gleaned from the 64 bit
3 * discontigmem support code base.
4 *
5 * Copyright (C) 2002, IBM Corp.
6 *
7 * All rights reserved.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
17 * NON INFRINGEMENT. See the GNU General Public License for more
18 * details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 *
24 * Send feedback to Pat Gaughen <gone@us.ibm.com>
25 */
26
27#ifndef _ASM_X86_SRAT_H
28#define _ASM_X86_SRAT_H
29
30#ifdef CONFIG_ACPI_NUMA
31extern int get_memcfg_from_srat(void);
32#else
33static inline int get_memcfg_from_srat(void)
34{
35 return 0;
36}
37#endif
38
39#endif /* _ASM_X86_SRAT_H */
diff --git a/arch/x86/include/asm/stacktrace.h b/arch/x86/include/asm/stacktrace.h
new file mode 100644
index 000000000000..f517944b2b17
--- /dev/null
+++ b/arch/x86/include/asm/stacktrace.h
@@ -0,0 +1,21 @@
1#ifndef _ASM_X86_STACKTRACE_H
2#define _ASM_X86_STACKTRACE_H
3
4extern int kstack_depth_to_print;
5
6/* Generic stack tracer with callbacks */
7
8struct stacktrace_ops {
9 void (*warning)(void *data, char *msg);
10 /* msg must contain %s for the symbol */
11 void (*warning_symbol)(void *data, char *msg, unsigned long symbol);
12 void (*address)(void *data, unsigned long address, int reliable);
13 /* On negative return stop dumping */
14 int (*stack)(void *data, char *name);
15};
16
17void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
18 unsigned long *stack, unsigned long bp,
19 const struct stacktrace_ops *ops, void *data);
20
21#endif /* _ASM_X86_STACKTRACE_H */
diff --git a/arch/x86/include/asm/stat.h b/arch/x86/include/asm/stat.h
new file mode 100644
index 000000000000..e0b1d9bbcbc6
--- /dev/null
+++ b/arch/x86/include/asm/stat.h
@@ -0,0 +1,114 @@
1#ifndef _ASM_X86_STAT_H
2#define _ASM_X86_STAT_H
3
4#define STAT_HAVE_NSEC 1
5
6#ifdef __i386__
7struct stat {
8 unsigned long st_dev;
9 unsigned long st_ino;
10 unsigned short st_mode;
11 unsigned short st_nlink;
12 unsigned short st_uid;
13 unsigned short st_gid;
14 unsigned long st_rdev;
15 unsigned long st_size;
16 unsigned long st_blksize;
17 unsigned long st_blocks;
18 unsigned long st_atime;
19 unsigned long st_atime_nsec;
20 unsigned long st_mtime;
21 unsigned long st_mtime_nsec;
22 unsigned long st_ctime;
23 unsigned long st_ctime_nsec;
24 unsigned long __unused4;
25 unsigned long __unused5;
26};
27
28#define STAT64_HAS_BROKEN_ST_INO 1
29
30/* This matches struct stat64 in glibc2.1, hence the absolutely
31 * insane amounts of padding around dev_t's.
32 */
33struct stat64 {
34 unsigned long long st_dev;
35 unsigned char __pad0[4];
36
37 unsigned long __st_ino;
38
39 unsigned int st_mode;
40 unsigned int st_nlink;
41
42 unsigned long st_uid;
43 unsigned long st_gid;
44
45 unsigned long long st_rdev;
46 unsigned char __pad3[4];
47
48 long long st_size;
49 unsigned long st_blksize;
50
51 /* Number 512-byte blocks allocated. */
52 unsigned long long st_blocks;
53
54 unsigned long st_atime;
55 unsigned long st_atime_nsec;
56
57 unsigned long st_mtime;
58 unsigned int st_mtime_nsec;
59
60 unsigned long st_ctime;
61 unsigned long st_ctime_nsec;
62
63 unsigned long long st_ino;
64};
65
66#else /* __i386__ */
67
68struct stat {
69 unsigned long st_dev;
70 unsigned long st_ino;
71 unsigned long st_nlink;
72
73 unsigned int st_mode;
74 unsigned int st_uid;
75 unsigned int st_gid;
76 unsigned int __pad0;
77 unsigned long st_rdev;
78 long st_size;
79 long st_blksize;
80 long st_blocks; /* Number 512-byte blocks allocated. */
81
82 unsigned long st_atime;
83 unsigned long st_atime_nsec;
84 unsigned long st_mtime;
85 unsigned long st_mtime_nsec;
86 unsigned long st_ctime;
87 unsigned long st_ctime_nsec;
88 long __unused[3];
89};
90#endif
91
92/* for 32bit emulation and 32 bit kernels */
93struct __old_kernel_stat {
94 unsigned short st_dev;
95 unsigned short st_ino;
96 unsigned short st_mode;
97 unsigned short st_nlink;
98 unsigned short st_uid;
99 unsigned short st_gid;
100 unsigned short st_rdev;
101#ifdef __i386__
102 unsigned long st_size;
103 unsigned long st_atime;
104 unsigned long st_mtime;
105 unsigned long st_ctime;
106#else
107 unsigned int st_size;
108 unsigned int st_atime;
109 unsigned int st_mtime;
110 unsigned int st_ctime;
111#endif
112};
113
114#endif /* _ASM_X86_STAT_H */
diff --git a/arch/x86/include/asm/statfs.h b/arch/x86/include/asm/statfs.h
new file mode 100644
index 000000000000..2d0adbf99a8e
--- /dev/null
+++ b/arch/x86/include/asm/statfs.h
@@ -0,0 +1,12 @@
1#ifndef _ASM_X86_STATFS_H
2#define _ASM_X86_STATFS_H
3
4/*
5 * We need compat_statfs64 to be packed, because the i386 ABI won't
6 * add padding at the end to bring it to a multiple of 8 bytes, but
7 * the x86_64 ABI will.
8 */
9#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4)))
10
11#include <asm-generic/statfs.h>
12#endif /* _ASM_X86_STATFS_H */
diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h
new file mode 100644
index 000000000000..6dfd6d9373a0
--- /dev/null
+++ b/arch/x86/include/asm/string.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "string_32.h"
3#else
4# include "string_64.h"
5#endif
diff --git a/arch/x86/include/asm/string_32.h b/arch/x86/include/asm/string_32.h
new file mode 100644
index 000000000000..0e0e3ba827f7
--- /dev/null
+++ b/arch/x86/include/asm/string_32.h
@@ -0,0 +1,326 @@
1#ifndef _ASM_X86_STRING_32_H
2#define _ASM_X86_STRING_32_H
3
4#ifdef __KERNEL__
5
6/* Let gcc decide whether to inline or use the out of line functions */
7
8#define __HAVE_ARCH_STRCPY
9extern char *strcpy(char *dest, const char *src);
10
11#define __HAVE_ARCH_STRNCPY
12extern char *strncpy(char *dest, const char *src, size_t count);
13
14#define __HAVE_ARCH_STRCAT
15extern char *strcat(char *dest, const char *src);
16
17#define __HAVE_ARCH_STRNCAT
18extern char *strncat(char *dest, const char *src, size_t count);
19
20#define __HAVE_ARCH_STRCMP
21extern int strcmp(const char *cs, const char *ct);
22
23#define __HAVE_ARCH_STRNCMP
24extern int strncmp(const char *cs, const char *ct, size_t count);
25
26#define __HAVE_ARCH_STRCHR
27extern char *strchr(const char *s, int c);
28
29#define __HAVE_ARCH_STRLEN
30extern size_t strlen(const char *s);
31
32static __always_inline void *__memcpy(void *to, const void *from, size_t n)
33{
34 int d0, d1, d2;
35 asm volatile("rep ; movsl\n\t"
36 "movl %4,%%ecx\n\t"
37 "andl $3,%%ecx\n\t"
38 "jz 1f\n\t"
39 "rep ; movsb\n\t"
40 "1:"
41 : "=&c" (d0), "=&D" (d1), "=&S" (d2)
42 : "0" (n / 4), "g" (n), "1" ((long)to), "2" ((long)from)
43 : "memory");
44 return to;
45}
46
47/*
48 * This looks ugly, but the compiler can optimize it totally,
49 * as the count is constant.
50 */
51static __always_inline void *__constant_memcpy(void *to, const void *from,
52 size_t n)
53{
54 long esi, edi;
55 if (!n)
56 return to;
57
58 switch (n) {
59 case 1:
60 *(char *)to = *(char *)from;
61 return to;
62 case 2:
63 *(short *)to = *(short *)from;
64 return to;
65 case 4:
66 *(int *)to = *(int *)from;
67 return to;
68
69 case 3:
70 *(short *)to = *(short *)from;
71 *((char *)to + 2) = *((char *)from + 2);
72 return to;
73 case 5:
74 *(int *)to = *(int *)from;
75 *((char *)to + 4) = *((char *)from + 4);
76 return to;
77 case 6:
78 *(int *)to = *(int *)from;
79 *((short *)to + 2) = *((short *)from + 2);
80 return to;
81 case 8:
82 *(int *)to = *(int *)from;
83 *((int *)to + 1) = *((int *)from + 1);
84 return to;
85 }
86
87 esi = (long)from;
88 edi = (long)to;
89 if (n >= 5 * 4) {
90 /* large block: use rep prefix */
91 int ecx;
92 asm volatile("rep ; movsl"
93 : "=&c" (ecx), "=&D" (edi), "=&S" (esi)
94 : "0" (n / 4), "1" (edi), "2" (esi)
95 : "memory"
96 );
97 } else {
98 /* small block: don't clobber ecx + smaller code */
99 if (n >= 4 * 4)
100 asm volatile("movsl"
101 : "=&D"(edi), "=&S"(esi)
102 : "0"(edi), "1"(esi)
103 : "memory");
104 if (n >= 3 * 4)
105 asm volatile("movsl"
106 : "=&D"(edi), "=&S"(esi)
107 : "0"(edi), "1"(esi)
108 : "memory");
109 if (n >= 2 * 4)
110 asm volatile("movsl"
111 : "=&D"(edi), "=&S"(esi)
112 : "0"(edi), "1"(esi)
113 : "memory");
114 if (n >= 1 * 4)
115 asm volatile("movsl"
116 : "=&D"(edi), "=&S"(esi)
117 : "0"(edi), "1"(esi)
118 : "memory");
119 }
120 switch (n % 4) {
121 /* tail */
122 case 0:
123 return to;
124 case 1:
125 asm volatile("movsb"
126 : "=&D"(edi), "=&S"(esi)
127 : "0"(edi), "1"(esi)
128 : "memory");
129 return to;
130 case 2:
131 asm volatile("movsw"
132 : "=&D"(edi), "=&S"(esi)
133 : "0"(edi), "1"(esi)
134 : "memory");
135 return to;
136 default:
137 asm volatile("movsw\n\tmovsb"
138 : "=&D"(edi), "=&S"(esi)
139 : "0"(edi), "1"(esi)
140 : "memory");
141 return to;
142 }
143}
144
145#define __HAVE_ARCH_MEMCPY
146
147#ifdef CONFIG_X86_USE_3DNOW
148
149#include <asm/mmx.h>
150
151/*
152 * This CPU favours 3DNow strongly (eg AMD Athlon)
153 */
154
155static inline void *__constant_memcpy3d(void *to, const void *from, size_t len)
156{
157 if (len < 512)
158 return __constant_memcpy(to, from, len);
159 return _mmx_memcpy(to, from, len);
160}
161
162static inline void *__memcpy3d(void *to, const void *from, size_t len)
163{
164 if (len < 512)
165 return __memcpy(to, from, len);
166 return _mmx_memcpy(to, from, len);
167}
168
169#define memcpy(t, f, n) \
170 (__builtin_constant_p((n)) \
171 ? __constant_memcpy3d((t), (f), (n)) \
172 : __memcpy3d((t), (f), (n)))
173
174#else
175
176/*
177 * No 3D Now!
178 */
179
180#define memcpy(t, f, n) \
181 (__builtin_constant_p((n)) \
182 ? __constant_memcpy((t), (f), (n)) \
183 : __memcpy((t), (f), (n)))
184
185#endif
186
187#define __HAVE_ARCH_MEMMOVE
188void *memmove(void *dest, const void *src, size_t n);
189
190#define memcmp __builtin_memcmp
191
192#define __HAVE_ARCH_MEMCHR
193extern void *memchr(const void *cs, int c, size_t count);
194
195static inline void *__memset_generic(void *s, char c, size_t count)
196{
197 int d0, d1;
198 asm volatile("rep\n\t"
199 "stosb"
200 : "=&c" (d0), "=&D" (d1)
201 : "a" (c), "1" (s), "0" (count)
202 : "memory");
203 return s;
204}
205
206/* we might want to write optimized versions of these later */
207#define __constant_count_memset(s, c, count) __memset_generic((s), (c), (count))
208
209/*
210 * memset(x, 0, y) is a reasonably common thing to do, so we want to fill
211 * things 32 bits at a time even when we don't know the size of the
212 * area at compile-time..
213 */
214static __always_inline
215void *__constant_c_memset(void *s, unsigned long c, size_t count)
216{
217 int d0, d1;
218 asm volatile("rep ; stosl\n\t"
219 "testb $2,%b3\n\t"
220 "je 1f\n\t"
221 "stosw\n"
222 "1:\ttestb $1,%b3\n\t"
223 "je 2f\n\t"
224 "stosb\n"
225 "2:"
226 : "=&c" (d0), "=&D" (d1)
227 : "a" (c), "q" (count), "0" (count/4), "1" ((long)s)
228 : "memory");
229 return s;
230}
231
232/* Added by Gertjan van Wingerde to make minix and sysv module work */
233#define __HAVE_ARCH_STRNLEN
234extern size_t strnlen(const char *s, size_t count);
235/* end of additional stuff */
236
237#define __HAVE_ARCH_STRSTR
238extern char *strstr(const char *cs, const char *ct);
239
240/*
241 * This looks horribly ugly, but the compiler can optimize it totally,
242 * as we by now know that both pattern and count is constant..
243 */
244static __always_inline
245void *__constant_c_and_count_memset(void *s, unsigned long pattern,
246 size_t count)
247{
248 switch (count) {
249 case 0:
250 return s;
251 case 1:
252 *(unsigned char *)s = pattern & 0xff;
253 return s;
254 case 2:
255 *(unsigned short *)s = pattern & 0xffff;
256 return s;
257 case 3:
258 *(unsigned short *)s = pattern & 0xffff;
259 *((unsigned char *)s + 2) = pattern & 0xff;
260 return s;
261 case 4:
262 *(unsigned long *)s = pattern;
263 return s;
264 }
265
266#define COMMON(x) \
267 asm volatile("rep ; stosl" \
268 x \
269 : "=&c" (d0), "=&D" (d1) \
270 : "a" (eax), "0" (count/4), "1" ((long)s) \
271 : "memory")
272
273 {
274 int d0, d1;
275#if __GNUC__ == 4 && __GNUC_MINOR__ == 0
276 /* Workaround for broken gcc 4.0 */
277 register unsigned long eax asm("%eax") = pattern;
278#else
279 unsigned long eax = pattern;
280#endif
281
282 switch (count % 4) {
283 case 0:
284 COMMON("");
285 return s;
286 case 1:
287 COMMON("\n\tstosb");
288 return s;
289 case 2:
290 COMMON("\n\tstosw");
291 return s;
292 default:
293 COMMON("\n\tstosw\n\tstosb");
294 return s;
295 }
296 }
297
298#undef COMMON
299}
300
301#define __constant_c_x_memset(s, c, count) \
302 (__builtin_constant_p(count) \
303 ? __constant_c_and_count_memset((s), (c), (count)) \
304 : __constant_c_memset((s), (c), (count)))
305
306#define __memset(s, c, count) \
307 (__builtin_constant_p(count) \
308 ? __constant_count_memset((s), (c), (count)) \
309 : __memset_generic((s), (c), (count)))
310
311#define __HAVE_ARCH_MEMSET
312#define memset(s, c, count) \
313 (__builtin_constant_p(c) \
314 ? __constant_c_x_memset((s), (0x01010101UL * (unsigned char)(c)), \
315 (count)) \
316 : __memset((s), (c), (count)))
317
318/*
319 * find the first occurrence of byte 'c', or 1 past the area if none
320 */
321#define __HAVE_ARCH_MEMSCAN
322extern void *memscan(void *addr, int c, size_t size);
323
324#endif /* __KERNEL__ */
325
326#endif /* _ASM_X86_STRING_32_H */
diff --git a/arch/x86/include/asm/string_64.h b/arch/x86/include/asm/string_64.h
new file mode 100644
index 000000000000..2afe164bf1e6
--- /dev/null
+++ b/arch/x86/include/asm/string_64.h
@@ -0,0 +1,60 @@
1#ifndef _ASM_X86_STRING_64_H
2#define _ASM_X86_STRING_64_H
3
4#ifdef __KERNEL__
5
6/* Written 2002 by Andi Kleen */
7
8/* Only used for special circumstances. Stolen from i386/string.h */
9static __always_inline void *__inline_memcpy(void *to, const void *from, size_t n)
10{
11 unsigned long d0, d1, d2;
12 asm volatile("rep ; movsl\n\t"
13 "testb $2,%b4\n\t"
14 "je 1f\n\t"
15 "movsw\n"
16 "1:\ttestb $1,%b4\n\t"
17 "je 2f\n\t"
18 "movsb\n"
19 "2:"
20 : "=&c" (d0), "=&D" (d1), "=&S" (d2)
21 : "0" (n / 4), "q" (n), "1" ((long)to), "2" ((long)from)
22 : "memory");
23 return to;
24}
25
26/* Even with __builtin_ the compiler may decide to use the out of line
27 function. */
28
29#define __HAVE_ARCH_MEMCPY 1
30#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4
31extern void *memcpy(void *to, const void *from, size_t len);
32#else
33extern void *__memcpy(void *to, const void *from, size_t len);
34#define memcpy(dst, src, len) \
35({ \
36 size_t __len = (len); \
37 void *__ret; \
38 if (__builtin_constant_p(len) && __len >= 64) \
39 __ret = __memcpy((dst), (src), __len); \
40 else \
41 __ret = __builtin_memcpy((dst), (src), __len); \
42 __ret; \
43})
44#endif
45
46#define __HAVE_ARCH_MEMSET
47void *memset(void *s, int c, size_t n);
48
49#define __HAVE_ARCH_MEMMOVE
50void *memmove(void *dest, const void *src, size_t count);
51
52int memcmp(const void *cs, const void *ct, size_t count);
53size_t strlen(const char *s);
54char *strcpy(char *dest, const char *src);
55char *strcat(char *dest, const char *src);
56int strcmp(const char *cs, const char *ct);
57
58#endif /* __KERNEL__ */
59
60#endif /* _ASM_X86_STRING_64_H */
diff --git a/arch/x86/include/asm/summit/apic.h b/arch/x86/include/asm/summit/apic.h
new file mode 100644
index 000000000000..9b3070f1c2ac
--- /dev/null
+++ b/arch/x86/include/asm/summit/apic.h
@@ -0,0 +1,184 @@
1#ifndef __ASM_SUMMIT_APIC_H
2#define __ASM_SUMMIT_APIC_H
3
4#include <asm/smp.h>
5
6#define esr_disable (1)
7#define NO_BALANCE_IRQ (0)
8
9/* In clustered mode, the high nibble of APIC ID is a cluster number.
10 * The low nibble is a 4-bit bitmap. */
11#define XAPIC_DEST_CPUS_SHIFT 4
12#define XAPIC_DEST_CPUS_MASK ((1u << XAPIC_DEST_CPUS_SHIFT) - 1)
13#define XAPIC_DEST_CLUSTER_MASK (XAPIC_DEST_CPUS_MASK << XAPIC_DEST_CPUS_SHIFT)
14
15#define APIC_DFR_VALUE (APIC_DFR_CLUSTER)
16
17static inline cpumask_t target_cpus(void)
18{
19 /* CPU_MASK_ALL (0xff) has undefined behaviour with
20 * dest_LowestPrio mode logical clustered apic interrupt routing
21 * Just start on cpu 0. IRQ balancing will spread load
22 */
23 return cpumask_of_cpu(0);
24}
25
26#define INT_DELIVERY_MODE (dest_LowestPrio)
27#define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */
28
29static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
30{
31 return 0;
32}
33
34/* we don't use the phys_cpu_present_map to indicate apicid presence */
35static inline unsigned long check_apicid_present(int bit)
36{
37 return 1;
38}
39
40#define apicid_cluster(apicid) ((apicid) & XAPIC_DEST_CLUSTER_MASK)
41
42extern u8 cpu_2_logical_apicid[];
43
44static inline void init_apic_ldr(void)
45{
46 unsigned long val, id;
47 int count = 0;
48 u8 my_id = (u8)hard_smp_processor_id();
49 u8 my_cluster = (u8)apicid_cluster(my_id);
50#ifdef CONFIG_SMP
51 u8 lid;
52 int i;
53
54 /* Create logical APIC IDs by counting CPUs already in cluster. */
55 for (count = 0, i = NR_CPUS; --i >= 0; ) {
56 lid = cpu_2_logical_apicid[i];
57 if (lid != BAD_APICID && apicid_cluster(lid) == my_cluster)
58 ++count;
59 }
60#endif
61 /* We only have a 4 wide bitmap in cluster mode. If a deranged
62 * BIOS puts 5 CPUs in one APIC cluster, we're hosed. */
63 BUG_ON(count >= XAPIC_DEST_CPUS_SHIFT);
64 id = my_cluster | (1UL << count);
65 apic_write(APIC_DFR, APIC_DFR_VALUE);
66 val = apic_read(APIC_LDR) & ~APIC_LDR_MASK;
67 val |= SET_APIC_LOGICAL_ID(id);
68 apic_write(APIC_LDR, val);
69}
70
71static inline int multi_timer_check(int apic, int irq)
72{
73 return 0;
74}
75
76static inline int apic_id_registered(void)
77{
78 return 1;
79}
80
81static inline void setup_apic_routing(void)
82{
83 printk("Enabling APIC mode: Summit. Using %d I/O APICs\n",
84 nr_ioapics);
85}
86
87static inline int apicid_to_node(int logical_apicid)
88{
89#ifdef CONFIG_SMP
90 return apicid_2_node[hard_smp_processor_id()];
91#else
92 return 0;
93#endif
94}
95
96/* Mapping from cpu number to logical apicid */
97static inline int cpu_to_logical_apicid(int cpu)
98{
99#ifdef CONFIG_SMP
100 if (cpu >= NR_CPUS)
101 return BAD_APICID;
102 return (int)cpu_2_logical_apicid[cpu];
103#else
104 return logical_smp_processor_id();
105#endif
106}
107
108static inline int cpu_present_to_apicid(int mps_cpu)
109{
110 if (mps_cpu < NR_CPUS)
111 return (int)per_cpu(x86_bios_cpu_apicid, mps_cpu);
112 else
113 return BAD_APICID;
114}
115
116static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_id_map)
117{
118 /* For clustered we don't have a good way to do this yet - hack */
119 return physids_promote(0x0F);
120}
121
122static inline physid_mask_t apicid_to_cpu_present(int apicid)
123{
124 return physid_mask_of_physid(0);
125}
126
127static inline void setup_portio_remap(void)
128{
129}
130
131static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
132{
133 return 1;
134}
135
136static inline void enable_apic_mode(void)
137{
138}
139
140static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
141{
142 int num_bits_set;
143 int cpus_found = 0;
144 int cpu;
145 int apicid;
146
147 num_bits_set = cpus_weight(cpumask);
148 /* Return id to all */
149 if (num_bits_set == NR_CPUS)
150 return (int) 0xFF;
151 /*
152 * The cpus in the mask must all be on the apic cluster. If are not
153 * on the same apicid cluster return default value of TARGET_CPUS.
154 */
155 cpu = first_cpu(cpumask);
156 apicid = cpu_to_logical_apicid(cpu);
157 while (cpus_found < num_bits_set) {
158 if (cpu_isset(cpu, cpumask)) {
159 int new_apicid = cpu_to_logical_apicid(cpu);
160 if (apicid_cluster(apicid) !=
161 apicid_cluster(new_apicid)){
162 printk ("%s: Not a valid mask!\n", __func__);
163 return 0xFF;
164 }
165 apicid = apicid | new_apicid;
166 cpus_found++;
167 }
168 cpu++;
169 }
170 return apicid;
171}
172
173/* cpuid returns the value latched in the HW at reset, not the APIC ID
174 * register's value. For any box whose BIOS changes APIC IDs, like
175 * clustered APIC systems, we must use hard_smp_processor_id.
176 *
177 * See Intel's IA-32 SW Dev's Manual Vol2 under CPUID.
178 */
179static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
180{
181 return hard_smp_processor_id() >> index_msb;
182}
183
184#endif /* __ASM_SUMMIT_APIC_H */
diff --git a/arch/x86/include/asm/summit/apicdef.h b/arch/x86/include/asm/summit/apicdef.h
new file mode 100644
index 000000000000..f3fbca1f61c1
--- /dev/null
+++ b/arch/x86/include/asm/summit/apicdef.h
@@ -0,0 +1,13 @@
1#ifndef __ASM_SUMMIT_APICDEF_H
2#define __ASM_SUMMIT_APICDEF_H
3
4#define APIC_ID_MASK (0xFF<<24)
5
6static inline unsigned get_apic_id(unsigned long x)
7{
8 return (x>>24)&0xFF;
9}
10
11#define GET_APIC_ID(x) get_apic_id(x)
12
13#endif
diff --git a/arch/x86/include/asm/summit/ipi.h b/arch/x86/include/asm/summit/ipi.h
new file mode 100644
index 000000000000..53bd1e7bd7b4
--- /dev/null
+++ b/arch/x86/include/asm/summit/ipi.h
@@ -0,0 +1,25 @@
1#ifndef __ASM_SUMMIT_IPI_H
2#define __ASM_SUMMIT_IPI_H
3
4void send_IPI_mask_sequence(cpumask_t mask, int vector);
5
6static inline void send_IPI_mask(cpumask_t mask, int vector)
7{
8 send_IPI_mask_sequence(mask, vector);
9}
10
11static inline void send_IPI_allbutself(int vector)
12{
13 cpumask_t mask = cpu_online_map;
14 cpu_clear(smp_processor_id(), mask);
15
16 if (!cpus_empty(mask))
17 send_IPI_mask(mask, vector);
18}
19
20static inline void send_IPI_all(int vector)
21{
22 send_IPI_mask(cpu_online_map, vector);
23}
24
25#endif /* __ASM_SUMMIT_IPI_H */
diff --git a/arch/x86/include/asm/summit/mpparse.h b/arch/x86/include/asm/summit/mpparse.h
new file mode 100644
index 000000000000..013ce6fab2d5
--- /dev/null
+++ b/arch/x86/include/asm/summit/mpparse.h
@@ -0,0 +1,109 @@
1#ifndef __ASM_SUMMIT_MPPARSE_H
2#define __ASM_SUMMIT_MPPARSE_H
3
4#include <asm/tsc.h>
5
6extern int use_cyclone;
7
8#ifdef CONFIG_X86_SUMMIT_NUMA
9extern void setup_summit(void);
10#else
11#define setup_summit() {}
12#endif
13
14static inline int mps_oem_check(struct mp_config_table *mpc, char *oem,
15 char *productid)
16{
17 if (!strncmp(oem, "IBM ENSW", 8) &&
18 (!strncmp(productid, "VIGIL SMP", 9)
19 || !strncmp(productid, "EXA", 3)
20 || !strncmp(productid, "RUTHLESS SMP", 12))){
21 mark_tsc_unstable("Summit based system");
22 use_cyclone = 1; /*enable cyclone-timer*/
23 setup_summit();
24 return 1;
25 }
26 return 0;
27}
28
29/* Hook from generic ACPI tables.c */
30static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
31{
32 if (!strncmp(oem_id, "IBM", 3) &&
33 (!strncmp(oem_table_id, "SERVIGIL", 8)
34 || !strncmp(oem_table_id, "EXA", 3))){
35 mark_tsc_unstable("Summit based system");
36 use_cyclone = 1; /*enable cyclone-timer*/
37 setup_summit();
38 return 1;
39 }
40 return 0;
41}
42
43struct rio_table_hdr {
44 unsigned char version; /* Version number of this data structure */
45 /* Version 3 adds chassis_num & WP_index */
46 unsigned char num_scal_dev; /* # of Scalability devices (Twisters for Vigil) */
47 unsigned char num_rio_dev; /* # of RIO I/O devices (Cyclones and Winnipegs) */
48} __attribute__((packed));
49
50struct scal_detail {
51 unsigned char node_id; /* Scalability Node ID */
52 unsigned long CBAR; /* Address of 1MB register space */
53 unsigned char port0node; /* Node ID port connected to: 0xFF=None */
54 unsigned char port0port; /* Port num port connected to: 0,1,2, or 0xFF=None */
55 unsigned char port1node; /* Node ID port connected to: 0xFF = None */
56 unsigned char port1port; /* Port num port connected to: 0,1,2, or 0xFF=None */
57 unsigned char port2node; /* Node ID port connected to: 0xFF = None */
58 unsigned char port2port; /* Port num port connected to: 0,1,2, or 0xFF=None */
59 unsigned char chassis_num; /* 1 based Chassis number (1 = boot node) */
60} __attribute__((packed));
61
62struct rio_detail {
63 unsigned char node_id; /* RIO Node ID */
64 unsigned long BBAR; /* Address of 1MB register space */
65 unsigned char type; /* Type of device */
66 unsigned char owner_id; /* For WPEG: Node ID of Cyclone that owns this WPEG*/
67 /* For CYC: Node ID of Twister that owns this CYC */
68 unsigned char port0node; /* Node ID port connected to: 0xFF=None */
69 unsigned char port0port; /* Port num port connected to: 0,1,2, or 0xFF=None */
70 unsigned char port1node; /* Node ID port connected to: 0xFF=None */
71 unsigned char port1port; /* Port num port connected to: 0,1,2, or 0xFF=None */
72 unsigned char first_slot; /* For WPEG: Lowest slot number below this WPEG */
73 /* For CYC: 0 */
74 unsigned char status; /* For WPEG: Bit 0 = 1 : the XAPIC is used */
75 /* = 0 : the XAPIC is not used, ie:*/
76 /* ints fwded to another XAPIC */
77 /* Bits1:7 Reserved */
78 /* For CYC: Bits0:7 Reserved */
79 unsigned char WP_index; /* For WPEG: WPEG instance index - lower ones have */
80 /* lower slot numbers/PCI bus numbers */
81 /* For CYC: No meaning */
82 unsigned char chassis_num; /* 1 based Chassis number */
83 /* For LookOut WPEGs this field indicates the */
84 /* Expansion Chassis #, enumerated from Boot */
85 /* Node WPEG external port, then Boot Node CYC */
86 /* external port, then Next Vigil chassis WPEG */
87 /* external port, etc. */
88 /* Shared Lookouts have only 1 chassis number (the */
89 /* first one assigned) */
90} __attribute__((packed));
91
92
93typedef enum {
94 CompatTwister = 0, /* Compatibility Twister */
95 AltTwister = 1, /* Alternate Twister of internal 8-way */
96 CompatCyclone = 2, /* Compatibility Cyclone */
97 AltCyclone = 3, /* Alternate Cyclone of internal 8-way */
98 CompatWPEG = 4, /* Compatibility WPEG */
99 AltWPEG = 5, /* Second Planar WPEG */
100 LookOutAWPEG = 6, /* LookOut WPEG */
101 LookOutBWPEG = 7, /* LookOut WPEG */
102} node_type;
103
104static inline int is_WPEG(struct rio_detail *rio){
105 return (rio->type == CompatWPEG || rio->type == AltWPEG ||
106 rio->type == LookOutAWPEG || rio->type == LookOutBWPEG);
107}
108
109#endif /* __ASM_SUMMIT_MPPARSE_H */
diff --git a/arch/x86/include/asm/suspend.h b/arch/x86/include/asm/suspend.h
new file mode 100644
index 000000000000..9bd521fe4570
--- /dev/null
+++ b/arch/x86/include/asm/suspend.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "suspend_32.h"
3#else
4# include "suspend_64.h"
5#endif
diff --git a/arch/x86/include/asm/suspend_32.h b/arch/x86/include/asm/suspend_32.h
new file mode 100644
index 000000000000..a5074bd0f8be
--- /dev/null
+++ b/arch/x86/include/asm/suspend_32.h
@@ -0,0 +1,51 @@
1/*
2 * Copyright 2001-2002 Pavel Machek <pavel@suse.cz>
3 * Based on code
4 * Copyright 2001 Patrick Mochel <mochel@osdl.org>
5 */
6#ifndef _ASM_X86_SUSPEND_32_H
7#define _ASM_X86_SUSPEND_32_H
8
9#include <asm/desc.h>
10#include <asm/i387.h>
11
12static inline int arch_prepare_suspend(void) { return 0; }
13
14/* image of the saved processor state */
15struct saved_context {
16 u16 es, fs, gs, ss;
17 unsigned long cr0, cr2, cr3, cr4;
18 struct desc_ptr gdt;
19 struct desc_ptr idt;
20 u16 ldt;
21 u16 tss;
22 unsigned long tr;
23 unsigned long safety;
24 unsigned long return_address;
25} __attribute__((packed));
26
27#ifdef CONFIG_ACPI
28extern unsigned long saved_eip;
29extern unsigned long saved_esp;
30extern unsigned long saved_ebp;
31extern unsigned long saved_ebx;
32extern unsigned long saved_esi;
33extern unsigned long saved_edi;
34
35static inline void acpi_save_register_state(unsigned long return_point)
36{
37 saved_eip = return_point;
38 asm volatile("movl %%esp,%0" : "=m" (saved_esp));
39 asm volatile("movl %%ebp,%0" : "=m" (saved_ebp));
40 asm volatile("movl %%ebx,%0" : "=m" (saved_ebx));
41 asm volatile("movl %%edi,%0" : "=m" (saved_edi));
42 asm volatile("movl %%esi,%0" : "=m" (saved_esi));
43}
44
45#define acpi_restore_register_state() do {} while (0)
46
47/* routines for saving/restoring kernel state */
48extern int acpi_save_state_mem(void);
49#endif
50
51#endif /* _ASM_X86_SUSPEND_32_H */
diff --git a/arch/x86/include/asm/suspend_64.h b/arch/x86/include/asm/suspend_64.h
new file mode 100644
index 000000000000..06284f42b759
--- /dev/null
+++ b/arch/x86/include/asm/suspend_64.h
@@ -0,0 +1,52 @@
1/*
2 * Copyright 2001-2003 Pavel Machek <pavel@suse.cz>
3 * Based on code
4 * Copyright 2001 Patrick Mochel <mochel@osdl.org>
5 */
6#ifndef _ASM_X86_SUSPEND_64_H
7#define _ASM_X86_SUSPEND_64_H
8
9#include <asm/desc.h>
10#include <asm/i387.h>
11
12static inline int arch_prepare_suspend(void)
13{
14 return 0;
15}
16
17/*
18 * Image of the saved processor state, used by the low level ACPI suspend to
19 * RAM code and by the low level hibernation code.
20 *
21 * If you modify it, fix arch/x86/kernel/acpi/wakeup_64.S and make sure that
22 * __save/__restore_processor_state(), defined in arch/x86/kernel/suspend_64.c,
23 * still work as required.
24 */
25struct saved_context {
26 struct pt_regs regs;
27 u16 ds, es, fs, gs, ss;
28 unsigned long gs_base, gs_kernel_base, fs_base;
29 unsigned long cr0, cr2, cr3, cr4, cr8;
30 unsigned long efer;
31 u16 gdt_pad;
32 u16 gdt_limit;
33 unsigned long gdt_base;
34 u16 idt_pad;
35 u16 idt_limit;
36 unsigned long idt_base;
37 u16 ldt;
38 u16 tss;
39 unsigned long tr;
40 unsigned long safety;
41 unsigned long return_address;
42} __attribute__((packed));
43
44#define loaddebug(thread,register) \
45 set_debugreg((thread)->debugreg##register, register)
46
47/* routines for saving/restoring kernel state */
48extern int acpi_save_state_mem(void);
49extern char core_restore_code;
50extern char restore_registers;
51
52#endif /* _ASM_X86_SUSPEND_64_H */
diff --git a/arch/x86/include/asm/swiotlb.h b/arch/x86/include/asm/swiotlb.h
new file mode 100644
index 000000000000..51fb2c76ad74
--- /dev/null
+++ b/arch/x86/include/asm/swiotlb.h
@@ -0,0 +1,58 @@
1#ifndef _ASM_X86_SWIOTLB_H
2#define _ASM_X86_SWIOTLB_H
3
4#include <asm/dma-mapping.h>
5
6/* SWIOTLB interface */
7
8extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr,
9 size_t size, int dir);
10extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size,
11 dma_addr_t *dma_handle, gfp_t flags);
12extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
13 size_t size, int dir);
14extern void swiotlb_sync_single_for_cpu(struct device *hwdev,
15 dma_addr_t dev_addr,
16 size_t size, int dir);
17extern void swiotlb_sync_single_for_device(struct device *hwdev,
18 dma_addr_t dev_addr,
19 size_t size, int dir);
20extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev,
21 dma_addr_t dev_addr,
22 unsigned long offset,
23 size_t size, int dir);
24extern void swiotlb_sync_single_range_for_device(struct device *hwdev,
25 dma_addr_t dev_addr,
26 unsigned long offset,
27 size_t size, int dir);
28extern void swiotlb_sync_sg_for_cpu(struct device *hwdev,
29 struct scatterlist *sg, int nelems,
30 int dir);
31extern void swiotlb_sync_sg_for_device(struct device *hwdev,
32 struct scatterlist *sg, int nelems,
33 int dir);
34extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg,
35 int nents, int direction);
36extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg,
37 int nents, int direction);
38extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr);
39extern void swiotlb_free_coherent(struct device *hwdev, size_t size,
40 void *vaddr, dma_addr_t dma_handle);
41extern int swiotlb_dma_supported(struct device *hwdev, u64 mask);
42extern void swiotlb_init(void);
43
44extern int swiotlb_force;
45
46#ifdef CONFIG_SWIOTLB
47extern int swiotlb;
48extern void pci_swiotlb_init(void);
49#else
50#define swiotlb 0
51static inline void pci_swiotlb_init(void)
52{
53}
54#endif
55
56static inline void dma_mark_clean(void *addr, size_t size) {}
57
58#endif /* _ASM_X86_SWIOTLB_H */
diff --git a/arch/x86/include/asm/sync_bitops.h b/arch/x86/include/asm/sync_bitops.h
new file mode 100644
index 000000000000..9d09b4073b60
--- /dev/null
+++ b/arch/x86/include/asm/sync_bitops.h
@@ -0,0 +1,130 @@
1#ifndef _ASM_X86_SYNC_BITOPS_H
2#define _ASM_X86_SYNC_BITOPS_H
3
4/*
5 * Copyright 1992, Linus Torvalds.
6 */
7
8/*
9 * These have to be done with inline assembly: that way the bit-setting
10 * is guaranteed to be atomic. All bit operations return 0 if the bit
11 * was cleared before the operation and != 0 if it was not.
12 *
13 * bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1).
14 */
15
16#define ADDR (*(volatile long *)addr)
17
18/**
19 * sync_set_bit - Atomically set a bit in memory
20 * @nr: the bit to set
21 * @addr: the address to start counting from
22 *
23 * This function is atomic and may not be reordered. See __set_bit()
24 * if you do not require the atomic guarantees.
25 *
26 * Note that @nr may be almost arbitrarily large; this function is not
27 * restricted to acting on a single-word quantity.
28 */
29static inline void sync_set_bit(int nr, volatile unsigned long *addr)
30{
31 asm volatile("lock; btsl %1,%0"
32 : "+m" (ADDR)
33 : "Ir" (nr)
34 : "memory");
35}
36
37/**
38 * sync_clear_bit - Clears a bit in memory
39 * @nr: Bit to clear
40 * @addr: Address to start counting from
41 *
42 * sync_clear_bit() is atomic and may not be reordered. However, it does
43 * not contain a memory barrier, so if it is used for locking purposes,
44 * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
45 * in order to ensure changes are visible on other processors.
46 */
47static inline void sync_clear_bit(int nr, volatile unsigned long *addr)
48{
49 asm volatile("lock; btrl %1,%0"
50 : "+m" (ADDR)
51 : "Ir" (nr)
52 : "memory");
53}
54
55/**
56 * sync_change_bit - Toggle a bit in memory
57 * @nr: Bit to change
58 * @addr: Address to start counting from
59 *
60 * sync_change_bit() is atomic and may not be reordered.
61 * Note that @nr may be almost arbitrarily large; this function is not
62 * restricted to acting on a single-word quantity.
63 */
64static inline void sync_change_bit(int nr, volatile unsigned long *addr)
65{
66 asm volatile("lock; btcl %1,%0"
67 : "+m" (ADDR)
68 : "Ir" (nr)
69 : "memory");
70}
71
72/**
73 * sync_test_and_set_bit - Set a bit and return its old value
74 * @nr: Bit to set
75 * @addr: Address to count from
76 *
77 * This operation is atomic and cannot be reordered.
78 * It also implies a memory barrier.
79 */
80static inline int sync_test_and_set_bit(int nr, volatile unsigned long *addr)
81{
82 int oldbit;
83
84 asm volatile("lock; btsl %2,%1\n\tsbbl %0,%0"
85 : "=r" (oldbit), "+m" (ADDR)
86 : "Ir" (nr) : "memory");
87 return oldbit;
88}
89
90/**
91 * sync_test_and_clear_bit - Clear a bit and return its old value
92 * @nr: Bit to clear
93 * @addr: Address to count from
94 *
95 * This operation is atomic and cannot be reordered.
96 * It also implies a memory barrier.
97 */
98static inline int sync_test_and_clear_bit(int nr, volatile unsigned long *addr)
99{
100 int oldbit;
101
102 asm volatile("lock; btrl %2,%1\n\tsbbl %0,%0"
103 : "=r" (oldbit), "+m" (ADDR)
104 : "Ir" (nr) : "memory");
105 return oldbit;
106}
107
108/**
109 * sync_test_and_change_bit - Change a bit and return its old value
110 * @nr: Bit to change
111 * @addr: Address to count from
112 *
113 * This operation is atomic and cannot be reordered.
114 * It also implies a memory barrier.
115 */
116static inline int sync_test_and_change_bit(int nr, volatile unsigned long *addr)
117{
118 int oldbit;
119
120 asm volatile("lock; btcl %2,%1\n\tsbbl %0,%0"
121 : "=r" (oldbit), "+m" (ADDR)
122 : "Ir" (nr) : "memory");
123 return oldbit;
124}
125
126#define sync_test_bit(nr, addr) test_bit(nr, addr)
127
128#undef ADDR
129
130#endif /* _ASM_X86_SYNC_BITOPS_H */
diff --git a/arch/x86/include/asm/syscall.h b/arch/x86/include/asm/syscall.h
new file mode 100644
index 000000000000..d82f39bb7905
--- /dev/null
+++ b/arch/x86/include/asm/syscall.h
@@ -0,0 +1,213 @@
1/*
2 * Access to user system call parameters and results
3 *
4 * Copyright (C) 2008 Red Hat, Inc. All rights reserved.
5 *
6 * This copyrighted material is made available to anyone wishing to use,
7 * modify, copy, or redistribute it subject to the terms and conditions
8 * of the GNU General Public License v.2.
9 *
10 * See asm-generic/syscall.h for descriptions of what we must do here.
11 */
12
13#ifndef _ASM_X86_SYSCALL_H
14#define _ASM_X86_SYSCALL_H
15
16#include <linux/sched.h>
17#include <linux/err.h>
18
19static inline long syscall_get_nr(struct task_struct *task,
20 struct pt_regs *regs)
21{
22 /*
23 * We always sign-extend a -1 value being set here,
24 * so this is always either -1L or a syscall number.
25 */
26 return regs->orig_ax;
27}
28
29static inline void syscall_rollback(struct task_struct *task,
30 struct pt_regs *regs)
31{
32 regs->ax = regs->orig_ax;
33}
34
35static inline long syscall_get_error(struct task_struct *task,
36 struct pt_regs *regs)
37{
38 unsigned long error = regs->ax;
39#ifdef CONFIG_IA32_EMULATION
40 /*
41 * TS_COMPAT is set for 32-bit syscall entries and then
42 * remains set until we return to user mode.
43 */
44 if (task_thread_info(task)->status & TS_COMPAT)
45 /*
46 * Sign-extend the value so (int)-EFOO becomes (long)-EFOO
47 * and will match correctly in comparisons.
48 */
49 error = (long) (int) error;
50#endif
51 return IS_ERR_VALUE(error) ? error : 0;
52}
53
54static inline long syscall_get_return_value(struct task_struct *task,
55 struct pt_regs *regs)
56{
57 return regs->ax;
58}
59
60static inline void syscall_set_return_value(struct task_struct *task,
61 struct pt_regs *regs,
62 int error, long val)
63{
64 regs->ax = (long) error ?: val;
65}
66
67#ifdef CONFIG_X86_32
68
69static inline void syscall_get_arguments(struct task_struct *task,
70 struct pt_regs *regs,
71 unsigned int i, unsigned int n,
72 unsigned long *args)
73{
74 BUG_ON(i + n > 6);
75 memcpy(args, &regs->bx + i, n * sizeof(args[0]));
76}
77
78static inline void syscall_set_arguments(struct task_struct *task,
79 struct pt_regs *regs,
80 unsigned int i, unsigned int n,
81 const unsigned long *args)
82{
83 BUG_ON(i + n > 6);
84 memcpy(&regs->bx + i, args, n * sizeof(args[0]));
85}
86
87#else /* CONFIG_X86_64 */
88
89static inline void syscall_get_arguments(struct task_struct *task,
90 struct pt_regs *regs,
91 unsigned int i, unsigned int n,
92 unsigned long *args)
93{
94# ifdef CONFIG_IA32_EMULATION
95 if (task_thread_info(task)->status & TS_COMPAT)
96 switch (i) {
97 case 0:
98 if (!n--) break;
99 *args++ = regs->bx;
100 case 1:
101 if (!n--) break;
102 *args++ = regs->cx;
103 case 2:
104 if (!n--) break;
105 *args++ = regs->dx;
106 case 3:
107 if (!n--) break;
108 *args++ = regs->si;
109 case 4:
110 if (!n--) break;
111 *args++ = regs->di;
112 case 5:
113 if (!n--) break;
114 *args++ = regs->bp;
115 case 6:
116 if (!n--) break;
117 default:
118 BUG();
119 break;
120 }
121 else
122# endif
123 switch (i) {
124 case 0:
125 if (!n--) break;
126 *args++ = regs->di;
127 case 1:
128 if (!n--) break;
129 *args++ = regs->si;
130 case 2:
131 if (!n--) break;
132 *args++ = regs->dx;
133 case 3:
134 if (!n--) break;
135 *args++ = regs->r10;
136 case 4:
137 if (!n--) break;
138 *args++ = regs->r8;
139 case 5:
140 if (!n--) break;
141 *args++ = regs->r9;
142 case 6:
143 if (!n--) break;
144 default:
145 BUG();
146 break;
147 }
148}
149
150static inline void syscall_set_arguments(struct task_struct *task,
151 struct pt_regs *regs,
152 unsigned int i, unsigned int n,
153 const unsigned long *args)
154{
155# ifdef CONFIG_IA32_EMULATION
156 if (task_thread_info(task)->status & TS_COMPAT)
157 switch (i) {
158 case 0:
159 if (!n--) break;
160 regs->bx = *args++;
161 case 1:
162 if (!n--) break;
163 regs->cx = *args++;
164 case 2:
165 if (!n--) break;
166 regs->dx = *args++;
167 case 3:
168 if (!n--) break;
169 regs->si = *args++;
170 case 4:
171 if (!n--) break;
172 regs->di = *args++;
173 case 5:
174 if (!n--) break;
175 regs->bp = *args++;
176 case 6:
177 if (!n--) break;
178 default:
179 BUG();
180 break;
181 }
182 else
183# endif
184 switch (i) {
185 case 0:
186 if (!n--) break;
187 regs->di = *args++;
188 case 1:
189 if (!n--) break;
190 regs->si = *args++;
191 case 2:
192 if (!n--) break;
193 regs->dx = *args++;
194 case 3:
195 if (!n--) break;
196 regs->r10 = *args++;
197 case 4:
198 if (!n--) break;
199 regs->r8 = *args++;
200 case 5:
201 if (!n--) break;
202 regs->r9 = *args++;
203 case 6:
204 if (!n--) break;
205 default:
206 BUG();
207 break;
208 }
209}
210
211#endif /* CONFIG_X86_32 */
212
213#endif /* _ASM_X86_SYSCALL_H */
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
new file mode 100644
index 000000000000..87803da44010
--- /dev/null
+++ b/arch/x86/include/asm/syscalls.h
@@ -0,0 +1,93 @@
1/*
2 * syscalls.h - Linux syscall interfaces (arch-specific)
3 *
4 * Copyright (c) 2008 Jaswinder Singh
5 *
6 * This file is released under the GPLv2.
7 * See the file COPYING for more details.
8 */
9
10#ifndef _ASM_X86_SYSCALLS_H
11#define _ASM_X86_SYSCALLS_H
12
13#include <linux/compiler.h>
14#include <linux/linkage.h>
15#include <linux/types.h>
16#include <linux/signal.h>
17
18/* Common in X86_32 and X86_64 */
19/* kernel/ioport.c */
20asmlinkage long sys_ioperm(unsigned long, unsigned long, int);
21
22/* X86_32 only */
23#ifdef CONFIG_X86_32
24/* kernel/process_32.c */
25asmlinkage int sys_fork(struct pt_regs);
26asmlinkage int sys_clone(struct pt_regs);
27asmlinkage int sys_vfork(struct pt_regs);
28asmlinkage int sys_execve(struct pt_regs);
29
30/* kernel/signal_32.c */
31asmlinkage int sys_sigsuspend(int, int, old_sigset_t);
32asmlinkage int sys_sigaction(int, const struct old_sigaction __user *,
33 struct old_sigaction __user *);
34asmlinkage int sys_sigaltstack(unsigned long);
35asmlinkage unsigned long sys_sigreturn(unsigned long);
36asmlinkage int sys_rt_sigreturn(unsigned long);
37
38/* kernel/ioport.c */
39asmlinkage long sys_iopl(unsigned long);
40
41/* kernel/ldt.c */
42asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
43
44/* kernel/sys_i386_32.c */
45asmlinkage long sys_mmap2(unsigned long, unsigned long, unsigned long,
46 unsigned long, unsigned long, unsigned long);
47struct mmap_arg_struct;
48asmlinkage int old_mmap(struct mmap_arg_struct __user *);
49struct sel_arg_struct;
50asmlinkage int old_select(struct sel_arg_struct __user *);
51asmlinkage int sys_ipc(uint, int, int, int, void __user *, long);
52struct old_utsname;
53asmlinkage int sys_uname(struct old_utsname __user *);
54struct oldold_utsname;
55asmlinkage int sys_olduname(struct oldold_utsname __user *);
56
57/* kernel/tls.c */
58asmlinkage int sys_set_thread_area(struct user_desc __user *);
59asmlinkage int sys_get_thread_area(struct user_desc __user *);
60
61/* kernel/vm86_32.c */
62asmlinkage int sys_vm86old(struct pt_regs);
63asmlinkage int sys_vm86(struct pt_regs);
64
65#else /* CONFIG_X86_32 */
66
67/* X86_64 only */
68/* kernel/process_64.c */
69asmlinkage long sys_fork(struct pt_regs *);
70asmlinkage long sys_clone(unsigned long, unsigned long,
71 void __user *, void __user *,
72 struct pt_regs *);
73asmlinkage long sys_vfork(struct pt_regs *);
74asmlinkage long sys_execve(char __user *, char __user * __user *,
75 char __user * __user *,
76 struct pt_regs *);
77
78/* kernel/ioport.c */
79asmlinkage long sys_iopl(unsigned int, struct pt_regs *);
80
81/* kernel/signal_64.c */
82asmlinkage long sys_sigaltstack(const stack_t __user *, stack_t __user *,
83 struct pt_regs *);
84asmlinkage long sys_rt_sigreturn(struct pt_regs *);
85
86/* kernel/sys_x86_64.c */
87asmlinkage long sys_mmap(unsigned long, unsigned long, unsigned long,
88 unsigned long, unsigned long, unsigned long);
89struct new_utsname;
90asmlinkage long sys_uname(struct new_utsname __user *);
91
92#endif /* CONFIG_X86_32 */
93#endif /* _ASM_X86_SYSCALLS_H */
diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
new file mode 100644
index 000000000000..2ed3f0f44ff7
--- /dev/null
+++ b/arch/x86/include/asm/system.h
@@ -0,0 +1,425 @@
1#ifndef _ASM_X86_SYSTEM_H
2#define _ASM_X86_SYSTEM_H
3
4#include <asm/asm.h>
5#include <asm/segment.h>
6#include <asm/cpufeature.h>
7#include <asm/cmpxchg.h>
8#include <asm/nops.h>
9
10#include <linux/kernel.h>
11#include <linux/irqflags.h>
12
13/* entries in ARCH_DLINFO: */
14#ifdef CONFIG_IA32_EMULATION
15# define AT_VECTOR_SIZE_ARCH 2
16#else
17# define AT_VECTOR_SIZE_ARCH 1
18#endif
19
20#ifdef CONFIG_X86_32
21
22struct task_struct; /* one of the stranger aspects of C forward declarations */
23struct task_struct *__switch_to(struct task_struct *prev,
24 struct task_struct *next);
25
26/*
27 * Saving eflags is important. It switches not only IOPL between tasks,
28 * it also protects other tasks from NT leaking through sysenter etc.
29 */
30#define switch_to(prev, next, last) \
31do { \
32 /* \
33 * Context-switching clobbers all registers, so we clobber \
34 * them explicitly, via unused output variables. \
35 * (EAX and EBP is not listed because EBP is saved/restored \
36 * explicitly for wchan access and EAX is the return value of \
37 * __switch_to()) \
38 */ \
39 unsigned long ebx, ecx, edx, esi, edi; \
40 \
41 asm volatile("pushfl\n\t" /* save flags */ \
42 "pushl %%ebp\n\t" /* save EBP */ \
43 "movl %%esp,%[prev_sp]\n\t" /* save ESP */ \
44 "movl %[next_sp],%%esp\n\t" /* restore ESP */ \
45 "movl $1f,%[prev_ip]\n\t" /* save EIP */ \
46 "pushl %[next_ip]\n\t" /* restore EIP */ \
47 "jmp __switch_to\n" /* regparm call */ \
48 "1:\t" \
49 "popl %%ebp\n\t" /* restore EBP */ \
50 "popfl\n" /* restore flags */ \
51 \
52 /* output parameters */ \
53 : [prev_sp] "=m" (prev->thread.sp), \
54 [prev_ip] "=m" (prev->thread.ip), \
55 "=a" (last), \
56 \
57 /* clobbered output registers: */ \
58 "=b" (ebx), "=c" (ecx), "=d" (edx), \
59 "=S" (esi), "=D" (edi) \
60 \
61 /* input parameters: */ \
62 : [next_sp] "m" (next->thread.sp), \
63 [next_ip] "m" (next->thread.ip), \
64 \
65 /* regparm parameters for __switch_to(): */ \
66 [prev] "a" (prev), \
67 [next] "d" (next) \
68 \
69 : /* reloaded segment registers */ \
70 "memory"); \
71} while (0)
72
73/*
74 * disable hlt during certain critical i/o operations
75 */
76#define HAVE_DISABLE_HLT
77#else
78#define __SAVE(reg, offset) "movq %%" #reg ",(14-" #offset ")*8(%%rsp)\n\t"
79#define __RESTORE(reg, offset) "movq (14-" #offset ")*8(%%rsp),%%" #reg "\n\t"
80
81/* frame pointer must be last for get_wchan */
82#define SAVE_CONTEXT "pushf ; pushq %%rbp ; movq %%rsi,%%rbp\n\t"
83#define RESTORE_CONTEXT "movq %%rbp,%%rsi ; popq %%rbp ; popf\t"
84
85#define __EXTRA_CLOBBER \
86 , "rcx", "rbx", "rdx", "r8", "r9", "r10", "r11", \
87 "r12", "r13", "r14", "r15"
88
89/* Save restore flags to clear handle leaking NT */
90#define switch_to(prev, next, last) \
91 asm volatile(SAVE_CONTEXT \
92 "movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */ \
93 "movq %P[threadrsp](%[next]),%%rsp\n\t" /* restore RSP */ \
94 "call __switch_to\n\t" \
95 ".globl thread_return\n" \
96 "thread_return:\n\t" \
97 "movq %%gs:%P[pda_pcurrent],%%rsi\n\t" \
98 "movq %P[thread_info](%%rsi),%%r8\n\t" \
99 LOCK_PREFIX "btr %[tif_fork],%P[ti_flags](%%r8)\n\t" \
100 "movq %%rax,%%rdi\n\t" \
101 "jc ret_from_fork\n\t" \
102 RESTORE_CONTEXT \
103 : "=a" (last) \
104 : [next] "S" (next), [prev] "D" (prev), \
105 [threadrsp] "i" (offsetof(struct task_struct, thread.sp)), \
106 [ti_flags] "i" (offsetof(struct thread_info, flags)), \
107 [tif_fork] "i" (TIF_FORK), \
108 [thread_info] "i" (offsetof(struct task_struct, stack)), \
109 [pda_pcurrent] "i" (offsetof(struct x8664_pda, pcurrent)) \
110 : "memory", "cc" __EXTRA_CLOBBER)
111#endif
112
113#ifdef __KERNEL__
114#define _set_base(addr, base) do { unsigned long __pr; \
115__asm__ __volatile__ ("movw %%dx,%1\n\t" \
116 "rorl $16,%%edx\n\t" \
117 "movb %%dl,%2\n\t" \
118 "movb %%dh,%3" \
119 :"=&d" (__pr) \
120 :"m" (*((addr)+2)), \
121 "m" (*((addr)+4)), \
122 "m" (*((addr)+7)), \
123 "0" (base) \
124 ); } while (0)
125
126#define _set_limit(addr, limit) do { unsigned long __lr; \
127__asm__ __volatile__ ("movw %%dx,%1\n\t" \
128 "rorl $16,%%edx\n\t" \
129 "movb %2,%%dh\n\t" \
130 "andb $0xf0,%%dh\n\t" \
131 "orb %%dh,%%dl\n\t" \
132 "movb %%dl,%2" \
133 :"=&d" (__lr) \
134 :"m" (*(addr)), \
135 "m" (*((addr)+6)), \
136 "0" (limit) \
137 ); } while (0)
138
139#define set_base(ldt, base) _set_base(((char *)&(ldt)) , (base))
140#define set_limit(ldt, limit) _set_limit(((char *)&(ldt)) , ((limit)-1))
141
142extern void native_load_gs_index(unsigned);
143
144/*
145 * Load a segment. Fall back on loading the zero
146 * segment if something goes wrong..
147 */
148#define loadsegment(seg, value) \
149 asm volatile("\n" \
150 "1:\t" \
151 "movl %k0,%%" #seg "\n" \
152 "2:\n" \
153 ".section .fixup,\"ax\"\n" \
154 "3:\t" \
155 "movl %k1, %%" #seg "\n\t" \
156 "jmp 2b\n" \
157 ".previous\n" \
158 _ASM_EXTABLE(1b,3b) \
159 : :"r" (value), "r" (0) : "memory")
160
161
162/*
163 * Save a segment register away
164 */
165#define savesegment(seg, value) \
166 asm("mov %%" #seg ",%0":"=r" (value) : : "memory")
167
168static inline unsigned long get_limit(unsigned long segment)
169{
170 unsigned long __limit;
171 asm("lsll %1,%0" : "=r" (__limit) : "r" (segment));
172 return __limit + 1;
173}
174
175static inline void native_clts(void)
176{
177 asm volatile("clts");
178}
179
180/*
181 * Volatile isn't enough to prevent the compiler from reordering the
182 * read/write functions for the control registers and messing everything up.
183 * A memory clobber would solve the problem, but would prevent reordering of
184 * all loads stores around it, which can hurt performance. Solution is to
185 * use a variable and mimic reads and writes to it to enforce serialization
186 */
187static unsigned long __force_order;
188
189static inline unsigned long native_read_cr0(void)
190{
191 unsigned long val;
192 asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order));
193 return val;
194}
195
196static inline void native_write_cr0(unsigned long val)
197{
198 asm volatile("mov %0,%%cr0": : "r" (val), "m" (__force_order));
199}
200
201static inline unsigned long native_read_cr2(void)
202{
203 unsigned long val;
204 asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order));
205 return val;
206}
207
208static inline void native_write_cr2(unsigned long val)
209{
210 asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order));
211}
212
213static inline unsigned long native_read_cr3(void)
214{
215 unsigned long val;
216 asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order));
217 return val;
218}
219
220static inline void native_write_cr3(unsigned long val)
221{
222 asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order));
223}
224
225static inline unsigned long native_read_cr4(void)
226{
227 unsigned long val;
228 asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order));
229 return val;
230}
231
232static inline unsigned long native_read_cr4_safe(void)
233{
234 unsigned long val;
235 /* This could fault if %cr4 does not exist. In x86_64, a cr4 always
236 * exists, so it will never fail. */
237#ifdef CONFIG_X86_32
238 asm volatile("1: mov %%cr4, %0\n"
239 "2:\n"
240 _ASM_EXTABLE(1b, 2b)
241 : "=r" (val), "=m" (__force_order) : "0" (0));
242#else
243 val = native_read_cr4();
244#endif
245 return val;
246}
247
248static inline void native_write_cr4(unsigned long val)
249{
250 asm volatile("mov %0,%%cr4": : "r" (val), "m" (__force_order));
251}
252
253#ifdef CONFIG_X86_64
254static inline unsigned long native_read_cr8(void)
255{
256 unsigned long cr8;
257 asm volatile("movq %%cr8,%0" : "=r" (cr8));
258 return cr8;
259}
260
261static inline void native_write_cr8(unsigned long val)
262{
263 asm volatile("movq %0,%%cr8" :: "r" (val) : "memory");
264}
265#endif
266
267static inline void native_wbinvd(void)
268{
269 asm volatile("wbinvd": : :"memory");
270}
271
272#ifdef CONFIG_PARAVIRT
273#include <asm/paravirt.h>
274#else
275#define read_cr0() (native_read_cr0())
276#define write_cr0(x) (native_write_cr0(x))
277#define read_cr2() (native_read_cr2())
278#define write_cr2(x) (native_write_cr2(x))
279#define read_cr3() (native_read_cr3())
280#define write_cr3(x) (native_write_cr3(x))
281#define read_cr4() (native_read_cr4())
282#define read_cr4_safe() (native_read_cr4_safe())
283#define write_cr4(x) (native_write_cr4(x))
284#define wbinvd() (native_wbinvd())
285#ifdef CONFIG_X86_64
286#define read_cr8() (native_read_cr8())
287#define write_cr8(x) (native_write_cr8(x))
288#define load_gs_index native_load_gs_index
289#endif
290
291/* Clear the 'TS' bit */
292#define clts() (native_clts())
293
294#endif/* CONFIG_PARAVIRT */
295
296#define stts() write_cr0(read_cr0() | X86_CR0_TS)
297
298#endif /* __KERNEL__ */
299
300static inline void clflush(volatile void *__p)
301{
302 asm volatile("clflush %0" : "+m" (*(volatile char __force *)__p));
303}
304
305#define nop() asm volatile ("nop")
306
307void disable_hlt(void);
308void enable_hlt(void);
309
310void cpu_idle_wait(void);
311
312extern unsigned long arch_align_stack(unsigned long sp);
313extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
314
315void default_idle(void);
316
317/*
318 * Force strict CPU ordering.
319 * And yes, this is required on UP too when we're talking
320 * to devices.
321 */
322#ifdef CONFIG_X86_32
323/*
324 * Some non-Intel clones support out of order store. wmb() ceases to be a
325 * nop for these.
326 */
327#define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2)
328#define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)
329#define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
330#else
331#define mb() asm volatile("mfence":::"memory")
332#define rmb() asm volatile("lfence":::"memory")
333#define wmb() asm volatile("sfence" ::: "memory")
334#endif
335
336/**
337 * read_barrier_depends - Flush all pending reads that subsequents reads
338 * depend on.
339 *
340 * No data-dependent reads from memory-like regions are ever reordered
341 * over this barrier. All reads preceding this primitive are guaranteed
342 * to access memory (but not necessarily other CPUs' caches) before any
343 * reads following this primitive that depend on the data return by
344 * any of the preceding reads. This primitive is much lighter weight than
345 * rmb() on most CPUs, and is never heavier weight than is
346 * rmb().
347 *
348 * These ordering constraints are respected by both the local CPU
349 * and the compiler.
350 *
351 * Ordering is not guaranteed by anything other than these primitives,
352 * not even by data dependencies. See the documentation for
353 * memory_barrier() for examples and URLs to more information.
354 *
355 * For example, the following code would force ordering (the initial
356 * value of "a" is zero, "b" is one, and "p" is "&a"):
357 *
358 * <programlisting>
359 * CPU 0 CPU 1
360 *
361 * b = 2;
362 * memory_barrier();
363 * p = &b; q = p;
364 * read_barrier_depends();
365 * d = *q;
366 * </programlisting>
367 *
368 * because the read of "*q" depends on the read of "p" and these
369 * two reads are separated by a read_barrier_depends(). However,
370 * the following code, with the same initial values for "a" and "b":
371 *
372 * <programlisting>
373 * CPU 0 CPU 1
374 *
375 * a = 2;
376 * memory_barrier();
377 * b = 3; y = b;
378 * read_barrier_depends();
379 * x = a;
380 * </programlisting>
381 *
382 * does not enforce ordering, since there is no data dependency between
383 * the read of "a" and the read of "b". Therefore, on some CPUs, such
384 * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb()
385 * in cases like this where there are no data dependencies.
386 **/
387
388#define read_barrier_depends() do { } while (0)
389
390#ifdef CONFIG_SMP
391#define smp_mb() mb()
392#ifdef CONFIG_X86_PPRO_FENCE
393# define smp_rmb() rmb()
394#else
395# define smp_rmb() barrier()
396#endif
397#ifdef CONFIG_X86_OOSTORE
398# define smp_wmb() wmb()
399#else
400# define smp_wmb() barrier()
401#endif
402#define smp_read_barrier_depends() read_barrier_depends()
403#define set_mb(var, value) do { (void)xchg(&var, value); } while (0)
404#else
405#define smp_mb() barrier()
406#define smp_rmb() barrier()
407#define smp_wmb() barrier()
408#define smp_read_barrier_depends() do { } while (0)
409#define set_mb(var, value) do { var = value; barrier(); } while (0)
410#endif
411
412/*
413 * Stop RDTSC speculation. This is needed when you need to use RDTSC
414 * (or get_cycles or vread that possibly accesses the TSC) in a defined
415 * code region.
416 *
417 * (Could use an alternative three way for this if there was one.)
418 */
419static inline void rdtsc_barrier(void)
420{
421 alternative(ASM_NOP3, "mfence", X86_FEATURE_MFENCE_RDTSC);
422 alternative(ASM_NOP3, "lfence", X86_FEATURE_LFENCE_RDTSC);
423}
424
425#endif /* _ASM_X86_SYSTEM_H */
diff --git a/arch/x86/include/asm/system_64.h b/arch/x86/include/asm/system_64.h
new file mode 100644
index 000000000000..1159e091ad09
--- /dev/null
+++ b/arch/x86/include/asm/system_64.h
@@ -0,0 +1,22 @@
1#ifndef _ASM_X86_SYSTEM_64_H
2#define _ASM_X86_SYSTEM_64_H
3
4#include <asm/segment.h>
5#include <asm/cmpxchg.h>
6
7
8static inline unsigned long read_cr8(void)
9{
10 unsigned long cr8;
11 asm volatile("movq %%cr8,%0" : "=r" (cr8));
12 return cr8;
13}
14
15static inline void write_cr8(unsigned long val)
16{
17 asm volatile("movq %0,%%cr8" :: "r" (val) : "memory");
18}
19
20#include <linux/irqflags.h>
21
22#endif /* _ASM_X86_SYSTEM_64_H */
diff --git a/arch/x86/include/asm/tce.h b/arch/x86/include/asm/tce.h
new file mode 100644
index 000000000000..7a6677c1a715
--- /dev/null
+++ b/arch/x86/include/asm/tce.h
@@ -0,0 +1,48 @@
1/*
2 * This file is derived from asm-powerpc/tce.h.
3 *
4 * Copyright (C) IBM Corporation, 2006
5 *
6 * Author: Muli Ben-Yehuda <muli@il.ibm.com>
7 * Author: Jon Mason <jdmason@us.ibm.com>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
24#ifndef _ASM_X86_TCE_H
25#define _ASM_X86_TCE_H
26
27extern unsigned int specified_table_size;
28struct iommu_table;
29
30#define TCE_ENTRY_SIZE 8 /* in bytes */
31
32#define TCE_READ_SHIFT 0
33#define TCE_WRITE_SHIFT 1
34#define TCE_HUBID_SHIFT 2 /* unused */
35#define TCE_RSVD_SHIFT 8 /* unused */
36#define TCE_RPN_SHIFT 12
37#define TCE_UNUSED_SHIFT 48 /* unused */
38
39#define TCE_RPN_MASK 0x0000fffffffff000ULL
40
41extern void tce_build(struct iommu_table *tbl, unsigned long index,
42 unsigned int npages, unsigned long uaddr, int direction);
43extern void tce_free(struct iommu_table *tbl, long index, unsigned int npages);
44extern void * __init alloc_tce_table(void);
45extern void __init free_tce_table(void *tbl);
46extern int __init build_tce_table(struct pci_dev *dev, void __iomem *bbar);
47
48#endif /* _ASM_X86_TCE_H */
diff --git a/arch/x86/include/asm/termbits.h b/arch/x86/include/asm/termbits.h
new file mode 100644
index 000000000000..af1b70ea440f
--- /dev/null
+++ b/arch/x86/include/asm/termbits.h
@@ -0,0 +1,198 @@
1#ifndef _ASM_X86_TERMBITS_H
2#define _ASM_X86_TERMBITS_H
3
4#include <linux/posix_types.h>
5
6typedef unsigned char cc_t;
7typedef unsigned int speed_t;
8typedef unsigned int tcflag_t;
9
10#define NCCS 19
11struct termios {
12 tcflag_t c_iflag; /* input mode flags */
13 tcflag_t c_oflag; /* output mode flags */
14 tcflag_t c_cflag; /* control mode flags */
15 tcflag_t c_lflag; /* local mode flags */
16 cc_t c_line; /* line discipline */
17 cc_t c_cc[NCCS]; /* control characters */
18};
19
20struct termios2 {
21 tcflag_t c_iflag; /* input mode flags */
22 tcflag_t c_oflag; /* output mode flags */
23 tcflag_t c_cflag; /* control mode flags */
24 tcflag_t c_lflag; /* local mode flags */
25 cc_t c_line; /* line discipline */
26 cc_t c_cc[NCCS]; /* control characters */
27 speed_t c_ispeed; /* input speed */
28 speed_t c_ospeed; /* output speed */
29};
30
31struct ktermios {
32 tcflag_t c_iflag; /* input mode flags */
33 tcflag_t c_oflag; /* output mode flags */
34 tcflag_t c_cflag; /* control mode flags */
35 tcflag_t c_lflag; /* local mode flags */
36 cc_t c_line; /* line discipline */
37 cc_t c_cc[NCCS]; /* control characters */
38 speed_t c_ispeed; /* input speed */
39 speed_t c_ospeed; /* output speed */
40};
41
42/* c_cc characters */
43#define VINTR 0
44#define VQUIT 1
45#define VERASE 2
46#define VKILL 3
47#define VEOF 4
48#define VTIME 5
49#define VMIN 6
50#define VSWTC 7
51#define VSTART 8
52#define VSTOP 9
53#define VSUSP 10
54#define VEOL 11
55#define VREPRINT 12
56#define VDISCARD 13
57#define VWERASE 14
58#define VLNEXT 15
59#define VEOL2 16
60
61/* c_iflag bits */
62#define IGNBRK 0000001
63#define BRKINT 0000002
64#define IGNPAR 0000004
65#define PARMRK 0000010
66#define INPCK 0000020
67#define ISTRIP 0000040
68#define INLCR 0000100
69#define IGNCR 0000200
70#define ICRNL 0000400
71#define IUCLC 0001000
72#define IXON 0002000
73#define IXANY 0004000
74#define IXOFF 0010000
75#define IMAXBEL 0020000
76#define IUTF8 0040000
77
78/* c_oflag bits */
79#define OPOST 0000001
80#define OLCUC 0000002
81#define ONLCR 0000004
82#define OCRNL 0000010
83#define ONOCR 0000020
84#define ONLRET 0000040
85#define OFILL 0000100
86#define OFDEL 0000200
87#define NLDLY 0000400
88#define NL0 0000000
89#define NL1 0000400
90#define CRDLY 0003000
91#define CR0 0000000
92#define CR1 0001000
93#define CR2 0002000
94#define CR3 0003000
95#define TABDLY 0014000
96#define TAB0 0000000
97#define TAB1 0004000
98#define TAB2 0010000
99#define TAB3 0014000
100#define XTABS 0014000
101#define BSDLY 0020000
102#define BS0 0000000
103#define BS1 0020000
104#define VTDLY 0040000
105#define VT0 0000000
106#define VT1 0040000
107#define FFDLY 0100000
108#define FF0 0000000
109#define FF1 0100000
110
111/* c_cflag bit meaning */
112#define CBAUD 0010017
113#define B0 0000000 /* hang up */
114#define B50 0000001
115#define B75 0000002
116#define B110 0000003
117#define B134 0000004
118#define B150 0000005
119#define B200 0000006
120#define B300 0000007
121#define B600 0000010
122#define B1200 0000011
123#define B1800 0000012
124#define B2400 0000013
125#define B4800 0000014
126#define B9600 0000015
127#define B19200 0000016
128#define B38400 0000017
129#define EXTA B19200
130#define EXTB B38400
131#define CSIZE 0000060
132#define CS5 0000000
133#define CS6 0000020
134#define CS7 0000040
135#define CS8 0000060
136#define CSTOPB 0000100
137#define CREAD 0000200
138#define PARENB 0000400
139#define PARODD 0001000
140#define HUPCL 0002000
141#define CLOCAL 0004000
142#define CBAUDEX 0010000
143#define BOTHER 0010000 /* non standard rate */
144#define B57600 0010001
145#define B115200 0010002
146#define B230400 0010003
147#define B460800 0010004
148#define B500000 0010005
149#define B576000 0010006
150#define B921600 0010007
151#define B1000000 0010010
152#define B1152000 0010011
153#define B1500000 0010012
154#define B2000000 0010013
155#define B2500000 0010014
156#define B3000000 0010015
157#define B3500000 0010016
158#define B4000000 0010017
159#define CIBAUD 002003600000 /* input baud rate */
160#define CMSPAR 010000000000 /* mark or space (stick) parity */
161#define CRTSCTS 020000000000 /* flow control */
162
163#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
164
165/* c_lflag bits */
166#define ISIG 0000001
167#define ICANON 0000002
168#define XCASE 0000004
169#define ECHO 0000010
170#define ECHOE 0000020
171#define ECHOK 0000040
172#define ECHONL 0000100
173#define NOFLSH 0000200
174#define TOSTOP 0000400
175#define ECHOCTL 0001000
176#define ECHOPRT 0002000
177#define ECHOKE 0004000
178#define FLUSHO 0010000
179#define PENDIN 0040000
180#define IEXTEN 0100000
181
182/* tcflow() and TCXONC use these */
183#define TCOOFF 0
184#define TCOON 1
185#define TCIOFF 2
186#define TCION 3
187
188/* tcflush() and TCFLSH use these */
189#define TCIFLUSH 0
190#define TCOFLUSH 1
191#define TCIOFLUSH 2
192
193/* tcsetattr uses these */
194#define TCSANOW 0
195#define TCSADRAIN 1
196#define TCSAFLUSH 2
197
198#endif /* _ASM_X86_TERMBITS_H */
diff --git a/arch/x86/include/asm/termios.h b/arch/x86/include/asm/termios.h
new file mode 100644
index 000000000000..f72956331c49
--- /dev/null
+++ b/arch/x86/include/asm/termios.h
@@ -0,0 +1,113 @@
1#ifndef _ASM_X86_TERMIOS_H
2#define _ASM_X86_TERMIOS_H
3
4#include <asm/termbits.h>
5#include <asm/ioctls.h>
6
7struct winsize {
8 unsigned short ws_row;
9 unsigned short ws_col;
10 unsigned short ws_xpixel;
11 unsigned short ws_ypixel;
12};
13
14#define NCC 8
15struct termio {
16 unsigned short c_iflag; /* input mode flags */
17 unsigned short c_oflag; /* output mode flags */
18 unsigned short c_cflag; /* control mode flags */
19 unsigned short c_lflag; /* local mode flags */
20 unsigned char c_line; /* line discipline */
21 unsigned char c_cc[NCC]; /* control characters */
22};
23
24/* modem lines */
25#define TIOCM_LE 0x001
26#define TIOCM_DTR 0x002
27#define TIOCM_RTS 0x004
28#define TIOCM_ST 0x008
29#define TIOCM_SR 0x010
30#define TIOCM_CTS 0x020
31#define TIOCM_CAR 0x040
32#define TIOCM_RNG 0x080
33#define TIOCM_DSR 0x100
34#define TIOCM_CD TIOCM_CAR
35#define TIOCM_RI TIOCM_RNG
36#define TIOCM_OUT1 0x2000
37#define TIOCM_OUT2 0x4000
38#define TIOCM_LOOP 0x8000
39
40/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
41
42#ifdef __KERNEL__
43
44#include <asm/uaccess.h>
45
46/* intr=^C quit=^\ erase=del kill=^U
47 eof=^D vtime=\0 vmin=\1 sxtc=\0
48 start=^Q stop=^S susp=^Z eol=\0
49 reprint=^R discard=^U werase=^W lnext=^V
50 eol2=\0
51*/
52#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
53
54/*
55 * Translate a "termio" structure into a "termios". Ugh.
56 */
57#define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
58 unsigned short __tmp; \
59 get_user(__tmp,&(termio)->x); \
60 *(unsigned short *) &(termios)->x = __tmp; \
61}
62
63static inline int user_termio_to_kernel_termios(struct ktermios *termios,
64 struct termio __user *termio)
65{
66 SET_LOW_TERMIOS_BITS(termios, termio, c_iflag);
67 SET_LOW_TERMIOS_BITS(termios, termio, c_oflag);
68 SET_LOW_TERMIOS_BITS(termios, termio, c_cflag);
69 SET_LOW_TERMIOS_BITS(termios, termio, c_lflag);
70 return copy_from_user(termios->c_cc, termio->c_cc, NCC);
71}
72
73/*
74 * Translate a "termios" structure into a "termio". Ugh.
75 */
76static inline int kernel_termios_to_user_termio(struct termio __user *termio,
77 struct ktermios *termios)
78{
79 put_user((termios)->c_iflag, &(termio)->c_iflag);
80 put_user((termios)->c_oflag, &(termio)->c_oflag);
81 put_user((termios)->c_cflag, &(termio)->c_cflag);
82 put_user((termios)->c_lflag, &(termio)->c_lflag);
83 put_user((termios)->c_line, &(termio)->c_line);
84 return copy_to_user((termio)->c_cc, (termios)->c_cc, NCC);
85}
86
87static inline int user_termios_to_kernel_termios(struct ktermios *k,
88 struct termios2 __user *u)
89{
90 return copy_from_user(k, u, sizeof(struct termios2));
91}
92
93static inline int kernel_termios_to_user_termios(struct termios2 __user *u,
94 struct ktermios *k)
95{
96 return copy_to_user(u, k, sizeof(struct termios2));
97}
98
99static inline int user_termios_to_kernel_termios_1(struct ktermios *k,
100 struct termios __user *u)
101{
102 return copy_from_user(k, u, sizeof(struct termios));
103}
104
105static inline int kernel_termios_to_user_termios_1(struct termios __user *u,
106 struct ktermios *k)
107{
108 return copy_to_user(u, k, sizeof(struct termios));
109}
110
111#endif /* __KERNEL__ */
112
113#endif /* _ASM_X86_TERMIOS_H */
diff --git a/arch/x86/include/asm/therm_throt.h b/arch/x86/include/asm/therm_throt.h
new file mode 100644
index 000000000000..c62349ee7860
--- /dev/null
+++ b/arch/x86/include/asm/therm_throt.h
@@ -0,0 +1,9 @@
1#ifndef _ASM_X86_THERM_THROT_H
2#define _ASM_X86_THERM_THROT_H
3
4#include <asm/atomic.h>
5
6extern atomic_t therm_throt_en;
7int therm_throt_process(int curr);
8
9#endif /* _ASM_X86_THERM_THROT_H */
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
new file mode 100644
index 000000000000..e44d379faad2
--- /dev/null
+++ b/arch/x86/include/asm/thread_info.h
@@ -0,0 +1,264 @@
1/* thread_info.h: low-level thread information
2 *
3 * Copyright (C) 2002 David Howells (dhowells@redhat.com)
4 * - Incorporating suggestions made by Linus Torvalds and Dave Miller
5 */
6
7#ifndef _ASM_X86_THREAD_INFO_H
8#define _ASM_X86_THREAD_INFO_H
9
10#include <linux/compiler.h>
11#include <asm/page.h>
12#include <asm/types.h>
13
14/*
15 * low level task data that entry.S needs immediate access to
16 * - this struct should fit entirely inside of one cache line
17 * - this struct shares the supervisor stack pages
18 */
19#ifndef __ASSEMBLY__
20struct task_struct;
21struct exec_domain;
22#include <asm/processor.h>
23
24struct thread_info {
25 struct task_struct *task; /* main task structure */
26 struct exec_domain *exec_domain; /* execution domain */
27 unsigned long flags; /* low level flags */
28 __u32 status; /* thread synchronous flags */
29 __u32 cpu; /* current CPU */
30 int preempt_count; /* 0 => preemptable,
31 <0 => BUG */
32 mm_segment_t addr_limit;
33 struct restart_block restart_block;
34 void __user *sysenter_return;
35#ifdef CONFIG_X86_32
36 unsigned long previous_esp; /* ESP of the previous stack in
37 case of nested (IRQ) stacks
38 */
39 __u8 supervisor_stack[0];
40#endif
41};
42
43#define INIT_THREAD_INFO(tsk) \
44{ \
45 .task = &tsk, \
46 .exec_domain = &default_exec_domain, \
47 .flags = 0, \
48 .cpu = 0, \
49 .preempt_count = 1, \
50 .addr_limit = KERNEL_DS, \
51 .restart_block = { \
52 .fn = do_no_restart_syscall, \
53 }, \
54}
55
56#define init_thread_info (init_thread_union.thread_info)
57#define init_stack (init_thread_union.stack)
58
59#else /* !__ASSEMBLY__ */
60
61#include <asm/asm-offsets.h>
62
63#endif
64
65/*
66 * thread information flags
67 * - these are process state flags that various assembly files
68 * may need to access
69 * - pending work-to-be-done flags are in LSW
70 * - other flags in MSW
71 * Warning: layout of LSW is hardcoded in entry.S
72 */
73#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
74#define TIF_NOTIFY_RESUME 1 /* callback before returning to user */
75#define TIF_SIGPENDING 2 /* signal pending */
76#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
77#define TIF_SINGLESTEP 4 /* reenable singlestep on user return*/
78#define TIF_IRET 5 /* force IRET */
79#define TIF_SYSCALL_EMU 6 /* syscall emulation active */
80#define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */
81#define TIF_SECCOMP 8 /* secure computing */
82#define TIF_MCE_NOTIFY 10 /* notify userspace of an MCE */
83#define TIF_NOTSC 16 /* TSC is not accessible in userland */
84#define TIF_IA32 17 /* 32bit process */
85#define TIF_FORK 18 /* ret_from_fork */
86#define TIF_ABI_PENDING 19
87#define TIF_MEMDIE 20
88#define TIF_DEBUG 21 /* uses debug registers */
89#define TIF_IO_BITMAP 22 /* uses I/O bitmap */
90#define TIF_FREEZE 23 /* is freezing for suspend */
91#define TIF_FORCED_TF 24 /* true if TF in eflags artificially */
92#define TIF_DEBUGCTLMSR 25 /* uses thread_struct.debugctlmsr */
93#define TIF_DS_AREA_MSR 26 /* uses thread_struct.ds_area_msr */
94#define TIF_BTS_TRACE_TS 27 /* record scheduling event timestamps */
95
96#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
97#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
98#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
99#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
100#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
101#define _TIF_IRET (1 << TIF_IRET)
102#define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU)
103#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
104#define _TIF_SECCOMP (1 << TIF_SECCOMP)
105#define _TIF_MCE_NOTIFY (1 << TIF_MCE_NOTIFY)
106#define _TIF_NOTSC (1 << TIF_NOTSC)
107#define _TIF_IA32 (1 << TIF_IA32)
108#define _TIF_FORK (1 << TIF_FORK)
109#define _TIF_ABI_PENDING (1 << TIF_ABI_PENDING)
110#define _TIF_DEBUG (1 << TIF_DEBUG)
111#define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP)
112#define _TIF_FREEZE (1 << TIF_FREEZE)
113#define _TIF_FORCED_TF (1 << TIF_FORCED_TF)
114#define _TIF_DEBUGCTLMSR (1 << TIF_DEBUGCTLMSR)
115#define _TIF_DS_AREA_MSR (1 << TIF_DS_AREA_MSR)
116#define _TIF_BTS_TRACE_TS (1 << TIF_BTS_TRACE_TS)
117
118/* work to do in syscall_trace_enter() */
119#define _TIF_WORK_SYSCALL_ENTRY \
120 (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_EMU | \
121 _TIF_SYSCALL_AUDIT | _TIF_SECCOMP | _TIF_SINGLESTEP)
122
123/* work to do in syscall_trace_leave() */
124#define _TIF_WORK_SYSCALL_EXIT \
125 (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_SINGLESTEP)
126
127/* work to do on interrupt/exception return */
128#define _TIF_WORK_MASK \
129 (0x0000FFFF & \
130 ~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT| \
131 _TIF_SINGLESTEP|_TIF_SECCOMP|_TIF_SYSCALL_EMU))
132
133/* work to do on any return to user space */
134#define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP)
135
136/* Only used for 64 bit */
137#define _TIF_DO_NOTIFY_MASK \
138 (_TIF_SIGPENDING|_TIF_MCE_NOTIFY|_TIF_NOTIFY_RESUME)
139
140/* flags to check in __switch_to() */
141#define _TIF_WORK_CTXSW \
142 (_TIF_IO_BITMAP|_TIF_DEBUGCTLMSR|_TIF_DS_AREA_MSR|_TIF_BTS_TRACE_TS| \
143 _TIF_NOTSC)
144
145#define _TIF_WORK_CTXSW_PREV _TIF_WORK_CTXSW
146#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW|_TIF_DEBUG)
147
148#define PREEMPT_ACTIVE 0x10000000
149
150/* thread information allocation */
151#ifdef CONFIG_DEBUG_STACK_USAGE
152#define THREAD_FLAGS (GFP_KERNEL | __GFP_ZERO)
153#else
154#define THREAD_FLAGS GFP_KERNEL
155#endif
156
157#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
158
159#define alloc_thread_info(tsk) \
160 ((struct thread_info *)__get_free_pages(THREAD_FLAGS, THREAD_ORDER))
161
162#ifdef CONFIG_X86_32
163
164#define STACK_WARN (THREAD_SIZE/8)
165/*
166 * macros/functions for gaining access to the thread information structure
167 *
168 * preempt_count needs to be 1 initially, until the scheduler is functional.
169 */
170#ifndef __ASSEMBLY__
171
172
173/* how to get the current stack pointer from C */
174register unsigned long current_stack_pointer asm("esp") __used;
175
176/* how to get the thread information struct from C */
177static inline struct thread_info *current_thread_info(void)
178{
179 return (struct thread_info *)
180 (current_stack_pointer & ~(THREAD_SIZE - 1));
181}
182
183#else /* !__ASSEMBLY__ */
184
185/* how to get the thread information struct from ASM */
186#define GET_THREAD_INFO(reg) \
187 movl $-THREAD_SIZE, reg; \
188 andl %esp, reg
189
190/* use this one if reg already contains %esp */
191#define GET_THREAD_INFO_WITH_ESP(reg) \
192 andl $-THREAD_SIZE, reg
193
194#endif
195
196#else /* X86_32 */
197
198#include <asm/pda.h>
199
200/*
201 * macros/functions for gaining access to the thread information structure
202 * preempt_count needs to be 1 initially, until the scheduler is functional.
203 */
204#ifndef __ASSEMBLY__
205static inline struct thread_info *current_thread_info(void)
206{
207 struct thread_info *ti;
208 ti = (void *)(read_pda(kernelstack) + PDA_STACKOFFSET - THREAD_SIZE);
209 return ti;
210}
211
212/* do not use in interrupt context */
213static inline struct thread_info *stack_thread_info(void)
214{
215 struct thread_info *ti;
216 asm("andq %%rsp,%0; " : "=r" (ti) : "0" (~(THREAD_SIZE - 1)));
217 return ti;
218}
219
220#else /* !__ASSEMBLY__ */
221
222/* how to get the thread information struct from ASM */
223#define GET_THREAD_INFO(reg) \
224 movq %gs:pda_kernelstack,reg ; \
225 subq $(THREAD_SIZE-PDA_STACKOFFSET),reg
226
227#endif
228
229#endif /* !X86_32 */
230
231/*
232 * Thread-synchronous status.
233 *
234 * This is different from the flags in that nobody else
235 * ever touches our thread-synchronous status, so we don't
236 * have to worry about atomic accesses.
237 */
238#define TS_USEDFPU 0x0001 /* FPU was used by this task
239 this quantum (SMP) */
240#define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/
241#define TS_POLLING 0x0004 /* true if in idle loop
242 and not sleeping */
243#define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */
244#define TS_XSAVE 0x0010 /* Use xsave/xrstor */
245
246#define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING)
247
248#ifndef __ASSEMBLY__
249#define HAVE_SET_RESTORE_SIGMASK 1
250static inline void set_restore_sigmask(void)
251{
252 struct thread_info *ti = current_thread_info();
253 ti->status |= TS_RESTORE_SIGMASK;
254 set_bit(TIF_SIGPENDING, (unsigned long *)&ti->flags);
255}
256#endif /* !__ASSEMBLY__ */
257
258#ifndef __ASSEMBLY__
259extern void arch_task_cache_init(void);
260extern void free_thread_info(struct thread_info *ti);
261extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
262#define arch_task_cache_init arch_task_cache_init
263#endif
264#endif /* _ASM_X86_THREAD_INFO_H */
diff --git a/arch/x86/include/asm/time.h b/arch/x86/include/asm/time.h
new file mode 100644
index 000000000000..50c733aac421
--- /dev/null
+++ b/arch/x86/include/asm/time.h
@@ -0,0 +1,63 @@
1#ifndef _ASM_X86_TIME_H
2#define _ASM_X86_TIME_H
3
4extern void hpet_time_init(void);
5
6#include <asm/mc146818rtc.h>
7#ifdef CONFIG_X86_32
8#include <linux/efi.h>
9
10static inline unsigned long native_get_wallclock(void)
11{
12 unsigned long retval;
13
14 if (efi_enabled)
15 retval = efi_get_time();
16 else
17 retval = mach_get_cmos_time();
18
19 return retval;
20}
21
22static inline int native_set_wallclock(unsigned long nowtime)
23{
24 int retval;
25
26 if (efi_enabled)
27 retval = efi_set_rtc_mmss(nowtime);
28 else
29 retval = mach_set_rtc_mmss(nowtime);
30
31 return retval;
32}
33
34#else
35extern void native_time_init_hook(void);
36
37static inline unsigned long native_get_wallclock(void)
38{
39 return mach_get_cmos_time();
40}
41
42static inline int native_set_wallclock(unsigned long nowtime)
43{
44 return mach_set_rtc_mmss(nowtime);
45}
46
47#endif
48
49extern void time_init(void);
50
51#ifdef CONFIG_PARAVIRT
52#include <asm/paravirt.h>
53#else /* !CONFIG_PARAVIRT */
54
55#define get_wallclock() native_get_wallclock()
56#define set_wallclock(x) native_set_wallclock(x)
57#define choose_time_init() hpet_time_init
58
59#endif /* CONFIG_PARAVIRT */
60
61extern unsigned long __init calibrate_cpu(void);
62
63#endif /* _ASM_X86_TIME_H */
diff --git a/arch/x86/include/asm/timer.h b/arch/x86/include/asm/timer.h
new file mode 100644
index 000000000000..2bb6a835c453
--- /dev/null
+++ b/arch/x86/include/asm/timer.h
@@ -0,0 +1,66 @@
1#ifndef _ASM_X86_TIMER_H
2#define _ASM_X86_TIMER_H
3#include <linux/init.h>
4#include <linux/pm.h>
5#include <linux/percpu.h>
6
7#define TICK_SIZE (tick_nsec / 1000)
8
9unsigned long long native_sched_clock(void);
10unsigned long native_calibrate_tsc(void);
11
12#ifdef CONFIG_X86_32
13extern int timer_ack;
14extern int recalibrate_cpu_khz(void);
15#endif /* CONFIG_X86_32 */
16
17extern int no_timer_check;
18
19#ifndef CONFIG_PARAVIRT
20#define calibrate_tsc() native_calibrate_tsc()
21#endif
22
23/* Accelerators for sched_clock()
24 * convert from cycles(64bits) => nanoseconds (64bits)
25 * basic equation:
26 * ns = cycles / (freq / ns_per_sec)
27 * ns = cycles * (ns_per_sec / freq)
28 * ns = cycles * (10^9 / (cpu_khz * 10^3))
29 * ns = cycles * (10^6 / cpu_khz)
30 *
31 * Then we use scaling math (suggested by george@mvista.com) to get:
32 * ns = cycles * (10^6 * SC / cpu_khz) / SC
33 * ns = cycles * cyc2ns_scale / SC
34 *
35 * And since SC is a constant power of two, we can convert the div
36 * into a shift.
37 *
38 * We can use khz divisor instead of mhz to keep a better precision, since
39 * cyc2ns_scale is limited to 10^6 * 2^10, which fits in 32 bits.
40 * (mathieu.desnoyers@polymtl.ca)
41 *
42 * -johnstul@us.ibm.com "math is hard, lets go shopping!"
43 */
44
45DECLARE_PER_CPU(unsigned long, cyc2ns);
46
47#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
48
49static inline unsigned long long __cycles_2_ns(unsigned long long cyc)
50{
51 return cyc * per_cpu(cyc2ns, smp_processor_id()) >> CYC2NS_SCALE_FACTOR;
52}
53
54static inline unsigned long long cycles_2_ns(unsigned long long cyc)
55{
56 unsigned long long ns;
57 unsigned long flags;
58
59 local_irq_save(flags);
60 ns = __cycles_2_ns(cyc);
61 local_irq_restore(flags);
62
63 return ns;
64}
65
66#endif /* _ASM_X86_TIMER_H */
diff --git a/arch/x86/include/asm/timex.h b/arch/x86/include/asm/timex.h
new file mode 100644
index 000000000000..1287dc1347d6
--- /dev/null
+++ b/arch/x86/include/asm/timex.h
@@ -0,0 +1,19 @@
1/* x86 architecture timex specifications */
2#ifndef _ASM_X86_TIMEX_H
3#define _ASM_X86_TIMEX_H
4
5#include <asm/processor.h>
6#include <asm/tsc.h>
7
8#ifdef CONFIG_X86_ELAN
9# define PIT_TICK_RATE 1189200 /* AMD Elan has different frequency! */
10#elif defined(CONFIG_X86_RDC321X)
11# define PIT_TICK_RATE 1041667 /* Underlying HZ for R8610 */
12#else
13# define PIT_TICK_RATE 1193182 /* Underlying HZ */
14#endif
15#define CLOCK_TICK_RATE PIT_TICK_RATE
16
17#define ARCH_HAS_READ_CURRENT_TIMER
18
19#endif /* _ASM_X86_TIMEX_H */
diff --git a/arch/x86/include/asm/tlb.h b/arch/x86/include/asm/tlb.h
new file mode 100644
index 000000000000..829215fef9ee
--- /dev/null
+++ b/arch/x86/include/asm/tlb.h
@@ -0,0 +1,11 @@
1#ifndef _ASM_X86_TLB_H
2#define _ASM_X86_TLB_H
3
4#define tlb_start_vma(tlb, vma) do { } while (0)
5#define tlb_end_vma(tlb, vma) do { } while (0)
6#define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0)
7#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)
8
9#include <asm-generic/tlb.h>
10
11#endif /* _ASM_X86_TLB_H */
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
new file mode 100644
index 000000000000..0e7bbb549116
--- /dev/null
+++ b/arch/x86/include/asm/tlbflush.h
@@ -0,0 +1,178 @@
1#ifndef _ASM_X86_TLBFLUSH_H
2#define _ASM_X86_TLBFLUSH_H
3
4#include <linux/mm.h>
5#include <linux/sched.h>
6
7#include <asm/processor.h>
8#include <asm/system.h>
9
10#ifdef CONFIG_PARAVIRT
11#include <asm/paravirt.h>
12#else
13#define __flush_tlb() __native_flush_tlb()
14#define __flush_tlb_global() __native_flush_tlb_global()
15#define __flush_tlb_single(addr) __native_flush_tlb_single(addr)
16#endif
17
18static inline void __native_flush_tlb(void)
19{
20 write_cr3(read_cr3());
21}
22
23static inline void __native_flush_tlb_global(void)
24{
25 unsigned long flags;
26 unsigned long cr4;
27
28 /*
29 * Read-modify-write to CR4 - protect it from preemption and
30 * from interrupts. (Use the raw variant because this code can
31 * be called from deep inside debugging code.)
32 */
33 raw_local_irq_save(flags);
34
35 cr4 = read_cr4();
36 /* clear PGE */
37 write_cr4(cr4 & ~X86_CR4_PGE);
38 /* write old PGE again and flush TLBs */
39 write_cr4(cr4);
40
41 raw_local_irq_restore(flags);
42}
43
44static inline void __native_flush_tlb_single(unsigned long addr)
45{
46 asm volatile("invlpg (%0)" ::"r" (addr) : "memory");
47}
48
49static inline void __flush_tlb_all(void)
50{
51 if (cpu_has_pge)
52 __flush_tlb_global();
53 else
54 __flush_tlb();
55}
56
57static inline void __flush_tlb_one(unsigned long addr)
58{
59 if (cpu_has_invlpg)
60 __flush_tlb_single(addr);
61 else
62 __flush_tlb();
63}
64
65#ifdef CONFIG_X86_32
66# define TLB_FLUSH_ALL 0xffffffff
67#else
68# define TLB_FLUSH_ALL -1ULL
69#endif
70
71/*
72 * TLB flushing:
73 *
74 * - flush_tlb() flushes the current mm struct TLBs
75 * - flush_tlb_all() flushes all processes TLBs
76 * - flush_tlb_mm(mm) flushes the specified mm context TLB's
77 * - flush_tlb_page(vma, vmaddr) flushes one page
78 * - flush_tlb_range(vma, start, end) flushes a range of pages
79 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
80 * - flush_tlb_others(cpumask, mm, va) flushes TLBs on other cpus
81 *
82 * ..but the i386 has somewhat limited tlb flushing capabilities,
83 * and page-granular flushes are available only on i486 and up.
84 *
85 * x86-64 can only flush individual pages or full VMs. For a range flush
86 * we always do the full VM. Might be worth trying if for a small
87 * range a few INVLPGs in a row are a win.
88 */
89
90#ifndef CONFIG_SMP
91
92#define flush_tlb() __flush_tlb()
93#define flush_tlb_all() __flush_tlb_all()
94#define local_flush_tlb() __flush_tlb()
95
96static inline void flush_tlb_mm(struct mm_struct *mm)
97{
98 if (mm == current->active_mm)
99 __flush_tlb();
100}
101
102static inline void flush_tlb_page(struct vm_area_struct *vma,
103 unsigned long addr)
104{
105 if (vma->vm_mm == current->active_mm)
106 __flush_tlb_one(addr);
107}
108
109static inline void flush_tlb_range(struct vm_area_struct *vma,
110 unsigned long start, unsigned long end)
111{
112 if (vma->vm_mm == current->active_mm)
113 __flush_tlb();
114}
115
116static inline void native_flush_tlb_others(const cpumask_t *cpumask,
117 struct mm_struct *mm,
118 unsigned long va)
119{
120}
121
122static inline void reset_lazy_tlbstate(void)
123{
124}
125
126#else /* SMP */
127
128#include <asm/smp.h>
129
130#define local_flush_tlb() __flush_tlb()
131
132extern void flush_tlb_all(void);
133extern void flush_tlb_current_task(void);
134extern void flush_tlb_mm(struct mm_struct *);
135extern void flush_tlb_page(struct vm_area_struct *, unsigned long);
136
137#define flush_tlb() flush_tlb_current_task()
138
139static inline void flush_tlb_range(struct vm_area_struct *vma,
140 unsigned long start, unsigned long end)
141{
142 flush_tlb_mm(vma->vm_mm);
143}
144
145void native_flush_tlb_others(const cpumask_t *cpumask, struct mm_struct *mm,
146 unsigned long va);
147
148#define TLBSTATE_OK 1
149#define TLBSTATE_LAZY 2
150
151#ifdef CONFIG_X86_32
152struct tlb_state {
153 struct mm_struct *active_mm;
154 int state;
155 char __cacheline_padding[L1_CACHE_BYTES-8];
156};
157DECLARE_PER_CPU(struct tlb_state, cpu_tlbstate);
158
159void reset_lazy_tlbstate(void);
160#else
161static inline void reset_lazy_tlbstate(void)
162{
163}
164#endif
165
166#endif /* SMP */
167
168#ifndef CONFIG_PARAVIRT
169#define flush_tlb_others(mask, mm, va) native_flush_tlb_others(&mask, mm, va)
170#endif
171
172static inline void flush_tlb_kernel_range(unsigned long start,
173 unsigned long end)
174{
175 flush_tlb_all();
176}
177
178#endif /* _ASM_X86_TLBFLUSH_H */
diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
new file mode 100644
index 000000000000..90ac7718469a
--- /dev/null
+++ b/arch/x86/include/asm/topology.h
@@ -0,0 +1,258 @@
1/*
2 * Written by: Matthew Dobson, IBM Corporation
3 *
4 * Copyright (C) 2002, IBM Corp.
5 *
6 * All rights reserved.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
16 * NON INFRINGEMENT. See the GNU General Public License for more
17 * details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 * Send feedback to <colpatch@us.ibm.com>
24 */
25#ifndef _ASM_X86_TOPOLOGY_H
26#define _ASM_X86_TOPOLOGY_H
27
28#ifdef CONFIG_X86_32
29# ifdef CONFIG_X86_HT
30# define ENABLE_TOPO_DEFINES
31# endif
32#else
33# ifdef CONFIG_SMP
34# define ENABLE_TOPO_DEFINES
35# endif
36#endif
37
38/* Node not present */
39#define NUMA_NO_NODE (-1)
40
41#ifdef CONFIG_NUMA
42#include <linux/cpumask.h>
43#include <asm/mpspec.h>
44
45#ifdef CONFIG_X86_32
46
47/* Mappings between node number and cpus on that node. */
48extern cpumask_t node_to_cpumask_map[];
49
50/* Mappings between logical cpu number and node number */
51extern int cpu_to_node_map[];
52
53/* Returns the number of the node containing CPU 'cpu' */
54static inline int cpu_to_node(int cpu)
55{
56 return cpu_to_node_map[cpu];
57}
58#define early_cpu_to_node(cpu) cpu_to_node(cpu)
59
60/* Returns a bitmask of CPUs on Node 'node'.
61 *
62 * Side note: this function creates the returned cpumask on the stack
63 * so with a high NR_CPUS count, excessive stack space is used. The
64 * node_to_cpumask_ptr function should be used whenever possible.
65 */
66static inline cpumask_t node_to_cpumask(int node)
67{
68 return node_to_cpumask_map[node];
69}
70
71#else /* CONFIG_X86_64 */
72
73/* Mappings between node number and cpus on that node. */
74extern cpumask_t *node_to_cpumask_map;
75
76/* Mappings between logical cpu number and node number */
77DECLARE_EARLY_PER_CPU(int, x86_cpu_to_node_map);
78
79/* Returns the number of the current Node. */
80#define numa_node_id() read_pda(nodenumber)
81
82#ifdef CONFIG_DEBUG_PER_CPU_MAPS
83extern int cpu_to_node(int cpu);
84extern int early_cpu_to_node(int cpu);
85extern const cpumask_t *_node_to_cpumask_ptr(int node);
86extern cpumask_t node_to_cpumask(int node);
87
88#else /* !CONFIG_DEBUG_PER_CPU_MAPS */
89
90/* Returns the number of the node containing CPU 'cpu' */
91static inline int cpu_to_node(int cpu)
92{
93 return per_cpu(x86_cpu_to_node_map, cpu);
94}
95
96/* Same function but used if called before per_cpu areas are setup */
97static inline int early_cpu_to_node(int cpu)
98{
99 if (early_per_cpu_ptr(x86_cpu_to_node_map))
100 return early_per_cpu_ptr(x86_cpu_to_node_map)[cpu];
101
102 return per_cpu(x86_cpu_to_node_map, cpu);
103}
104
105/* Returns a pointer to the cpumask of CPUs on Node 'node'. */
106static inline const cpumask_t *_node_to_cpumask_ptr(int node)
107{
108 return &node_to_cpumask_map[node];
109}
110
111/* Returns a bitmask of CPUs on Node 'node'. */
112static inline cpumask_t node_to_cpumask(int node)
113{
114 return node_to_cpumask_map[node];
115}
116
117#endif /* !CONFIG_DEBUG_PER_CPU_MAPS */
118
119/* Replace default node_to_cpumask_ptr with optimized version */
120#define node_to_cpumask_ptr(v, node) \
121 const cpumask_t *v = _node_to_cpumask_ptr(node)
122
123#define node_to_cpumask_ptr_next(v, node) \
124 v = _node_to_cpumask_ptr(node)
125
126#endif /* CONFIG_X86_64 */
127
128/*
129 * Returns the number of the node containing Node 'node'. This
130 * architecture is flat, so it is a pretty simple function!
131 */
132#define parent_node(node) (node)
133
134#define pcibus_to_node(bus) __pcibus_to_node(bus)
135#define pcibus_to_cpumask(bus) __pcibus_to_cpumask(bus)
136
137#ifdef CONFIG_X86_32
138extern unsigned long node_start_pfn[];
139extern unsigned long node_end_pfn[];
140extern unsigned long node_remap_size[];
141#define node_has_online_mem(nid) (node_start_pfn[nid] != node_end_pfn[nid])
142
143# define SD_CACHE_NICE_TRIES 1
144# define SD_IDLE_IDX 1
145# define SD_NEWIDLE_IDX 2
146# define SD_FORKEXEC_IDX 0
147
148#else
149
150# define SD_CACHE_NICE_TRIES 2
151# define SD_IDLE_IDX 2
152# define SD_NEWIDLE_IDX 2
153# define SD_FORKEXEC_IDX 1
154
155#endif
156
157/* sched_domains SD_NODE_INIT for NUMAQ machines */
158#define SD_NODE_INIT (struct sched_domain) { \
159 .min_interval = 8, \
160 .max_interval = 32, \
161 .busy_factor = 32, \
162 .imbalance_pct = 125, \
163 .cache_nice_tries = SD_CACHE_NICE_TRIES, \
164 .busy_idx = 3, \
165 .idle_idx = SD_IDLE_IDX, \
166 .newidle_idx = SD_NEWIDLE_IDX, \
167 .wake_idx = 1, \
168 .forkexec_idx = SD_FORKEXEC_IDX, \
169 .flags = SD_LOAD_BALANCE \
170 | SD_BALANCE_EXEC \
171 | SD_BALANCE_FORK \
172 | SD_SERIALIZE \
173 | SD_WAKE_BALANCE, \
174 .last_balance = jiffies, \
175 .balance_interval = 1, \
176}
177
178#ifdef CONFIG_X86_64_ACPI_NUMA
179extern int __node_distance(int, int);
180#define node_distance(a, b) __node_distance(a, b)
181#endif
182
183#else /* !CONFIG_NUMA */
184
185#define numa_node_id() 0
186#define cpu_to_node(cpu) 0
187#define early_cpu_to_node(cpu) 0
188
189static inline const cpumask_t *_node_to_cpumask_ptr(int node)
190{
191 return &cpu_online_map;
192}
193static inline cpumask_t node_to_cpumask(int node)
194{
195 return cpu_online_map;
196}
197static inline int node_to_first_cpu(int node)
198{
199 return first_cpu(cpu_online_map);
200}
201
202/* Replace default node_to_cpumask_ptr with optimized version */
203#define node_to_cpumask_ptr(v, node) \
204 const cpumask_t *v = _node_to_cpumask_ptr(node)
205
206#define node_to_cpumask_ptr_next(v, node) \
207 v = _node_to_cpumask_ptr(node)
208#endif
209
210#include <asm-generic/topology.h>
211
212#ifdef CONFIG_NUMA
213/* Returns the number of the first CPU on Node 'node'. */
214static inline int node_to_first_cpu(int node)
215{
216 node_to_cpumask_ptr(mask, node);
217 return first_cpu(*mask);
218}
219#endif
220
221extern cpumask_t cpu_coregroup_map(int cpu);
222
223#ifdef ENABLE_TOPO_DEFINES
224#define topology_physical_package_id(cpu) (cpu_data(cpu).phys_proc_id)
225#define topology_core_id(cpu) (cpu_data(cpu).cpu_core_id)
226#define topology_core_siblings(cpu) (per_cpu(cpu_core_map, cpu))
227#define topology_thread_siblings(cpu) (per_cpu(cpu_sibling_map, cpu))
228
229/* indicates that pointers to the topology cpumask_t maps are valid */
230#define arch_provides_topology_pointers yes
231#endif
232
233static inline void arch_fix_phys_package_id(int num, u32 slot)
234{
235}
236
237struct pci_bus;
238void set_pci_bus_resources_arch_default(struct pci_bus *b);
239
240#ifdef CONFIG_SMP
241#define mc_capable() (boot_cpu_data.x86_max_cores > 1)
242#define smt_capable() (smp_num_siblings > 1)
243#endif
244
245#ifdef CONFIG_NUMA
246extern int get_mp_bus_to_node(int busnum);
247extern void set_mp_bus_to_node(int busnum, int node);
248#else
249static inline int get_mp_bus_to_node(int busnum)
250{
251 return 0;
252}
253static inline void set_mp_bus_to_node(int busnum, int node)
254{
255}
256#endif
257
258#endif /* _ASM_X86_TOPOLOGY_H */
diff --git a/arch/x86/include/asm/trampoline.h b/arch/x86/include/asm/trampoline.h
new file mode 100644
index 000000000000..fa0d79facdbc
--- /dev/null
+++ b/arch/x86/include/asm/trampoline.h
@@ -0,0 +1,21 @@
1#ifndef _ASM_X86_TRAMPOLINE_H
2#define _ASM_X86_TRAMPOLINE_H
3
4#ifndef __ASSEMBLY__
5
6/*
7 * Trampoline 80x86 program as an array.
8 */
9extern const unsigned char trampoline_data [];
10extern const unsigned char trampoline_end [];
11extern unsigned char *trampoline_base;
12
13extern unsigned long init_rsp;
14extern unsigned long initial_code;
15
16#define TRAMPOLINE_BASE 0x6000
17extern unsigned long setup_trampoline(void);
18
19#endif /* __ASSEMBLY__ */
20
21#endif /* _ASM_X86_TRAMPOLINE_H */
diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h
new file mode 100644
index 000000000000..45dee286e45c
--- /dev/null
+++ b/arch/x86/include/asm/traps.h
@@ -0,0 +1,81 @@
1#ifndef _ASM_X86_TRAPS_H
2#define _ASM_X86_TRAPS_H
3
4#include <asm/debugreg.h>
5
6#ifdef CONFIG_X86_32
7#define dotraplinkage
8#else
9#define dotraplinkage asmlinkage
10#endif
11
12asmlinkage void divide_error(void);
13asmlinkage void debug(void);
14asmlinkage void nmi(void);
15asmlinkage void int3(void);
16asmlinkage void overflow(void);
17asmlinkage void bounds(void);
18asmlinkage void invalid_op(void);
19asmlinkage void device_not_available(void);
20#ifdef CONFIG_X86_64
21asmlinkage void double_fault(void);
22#endif
23asmlinkage void coprocessor_segment_overrun(void);
24asmlinkage void invalid_TSS(void);
25asmlinkage void segment_not_present(void);
26asmlinkage void stack_segment(void);
27asmlinkage void general_protection(void);
28asmlinkage void page_fault(void);
29asmlinkage void spurious_interrupt_bug(void);
30asmlinkage void coprocessor_error(void);
31asmlinkage void alignment_check(void);
32#ifdef CONFIG_X86_MCE
33asmlinkage void machine_check(void);
34#endif /* CONFIG_X86_MCE */
35asmlinkage void simd_coprocessor_error(void);
36
37dotraplinkage void do_divide_error(struct pt_regs *, long);
38dotraplinkage void do_debug(struct pt_regs *, long);
39dotraplinkage void do_nmi(struct pt_regs *, long);
40dotraplinkage void do_int3(struct pt_regs *, long);
41dotraplinkage void do_overflow(struct pt_regs *, long);
42dotraplinkage void do_bounds(struct pt_regs *, long);
43dotraplinkage void do_invalid_op(struct pt_regs *, long);
44dotraplinkage void do_device_not_available(struct pt_regs *, long);
45dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *, long);
46dotraplinkage void do_invalid_TSS(struct pt_regs *, long);
47dotraplinkage void do_segment_not_present(struct pt_regs *, long);
48dotraplinkage void do_stack_segment(struct pt_regs *, long);
49dotraplinkage void do_general_protection(struct pt_regs *, long);
50dotraplinkage void do_page_fault(struct pt_regs *, unsigned long);
51dotraplinkage void do_spurious_interrupt_bug(struct pt_regs *, long);
52dotraplinkage void do_coprocessor_error(struct pt_regs *, long);
53dotraplinkage void do_alignment_check(struct pt_regs *, long);
54#ifdef CONFIG_X86_MCE
55dotraplinkage void do_machine_check(struct pt_regs *, long);
56#endif
57dotraplinkage void do_simd_coprocessor_error(struct pt_regs *, long);
58#ifdef CONFIG_X86_32
59dotraplinkage void do_iret_error(struct pt_regs *, long);
60#endif
61
62static inline int get_si_code(unsigned long condition)
63{
64 if (condition & DR_STEP)
65 return TRAP_TRACE;
66 else if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3))
67 return TRAP_HWBKPT;
68 else
69 return TRAP_BRKPT;
70}
71
72extern int panic_on_unrecovered_nmi;
73extern int kstack_depth_to_print;
74
75#ifdef CONFIG_X86_32
76void math_error(void __user *);
77unsigned long patch_espfix_desc(unsigned long, unsigned long);
78asmlinkage void math_emulate(long);
79#endif
80
81#endif /* _ASM_X86_TRAPS_H */
diff --git a/arch/x86/include/asm/tsc.h b/arch/x86/include/asm/tsc.h
new file mode 100644
index 000000000000..38ae163cc91b
--- /dev/null
+++ b/arch/x86/include/asm/tsc.h
@@ -0,0 +1,62 @@
1/*
2 * x86 TSC related functions
3 */
4#ifndef _ASM_X86_TSC_H
5#define _ASM_X86_TSC_H
6
7#include <asm/processor.h>
8
9#define NS_SCALE 10 /* 2^10, carefully chosen */
10#define US_SCALE 32 /* 2^32, arbitralrily chosen */
11
12/*
13 * Standard way to access the cycle counter.
14 */
15typedef unsigned long long cycles_t;
16
17extern unsigned int cpu_khz;
18extern unsigned int tsc_khz;
19
20extern void disable_TSC(void);
21
22static inline cycles_t get_cycles(void)
23{
24 unsigned long long ret = 0;
25
26#ifndef CONFIG_X86_TSC
27 if (!cpu_has_tsc)
28 return 0;
29#endif
30 rdtscll(ret);
31
32 return ret;
33}
34
35static __always_inline cycles_t vget_cycles(void)
36{
37 /*
38 * We only do VDSOs on TSC capable CPUs, so this shouldnt
39 * access boot_cpu_data (which is not VDSO-safe):
40 */
41#ifndef CONFIG_X86_TSC
42 if (!cpu_has_tsc)
43 return 0;
44#endif
45 return (cycles_t)__native_read_tsc();
46}
47
48extern void tsc_init(void);
49extern void mark_tsc_unstable(char *reason);
50extern int unsynchronized_tsc(void);
51int check_tsc_unstable(void);
52
53/*
54 * Boot-time check whether the TSCs are synchronized across
55 * all CPUs/cores:
56 */
57extern void check_tsc_sync_source(int cpu);
58extern void check_tsc_sync_target(void);
59
60extern int notsc_setup(char *);
61
62#endif /* _ASM_X86_TSC_H */
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
new file mode 100644
index 000000000000..e6f736320077
--- /dev/null
+++ b/arch/x86/include/asm/types.h
@@ -0,0 +1,36 @@
1#ifndef _ASM_X86_TYPES_H
2#define _ASM_X86_TYPES_H
3
4#include <asm-generic/int-ll64.h>
5
6#ifndef __ASSEMBLY__
7
8typedef unsigned short umode_t;
9
10#endif /* __ASSEMBLY__ */
11
12/*
13 * These aren't exported outside the kernel to avoid name space clashes
14 */
15#ifdef __KERNEL__
16
17#ifdef CONFIG_X86_32
18# define BITS_PER_LONG 32
19#else
20# define BITS_PER_LONG 64
21#endif
22
23#ifndef __ASSEMBLY__
24
25typedef u64 dma64_addr_t;
26#if defined(CONFIG_X86_64) || defined(CONFIG_HIGHMEM64G)
27/* DMA addresses come in 32-bit and 64-bit flavours. */
28typedef u64 dma_addr_t;
29#else
30typedef u32 dma_addr_t;
31#endif
32
33#endif /* __ASSEMBLY__ */
34#endif /* __KERNEL__ */
35
36#endif /* _ASM_X86_TYPES_H */
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
new file mode 100644
index 000000000000..35c54921b2e4
--- /dev/null
+++ b/arch/x86/include/asm/uaccess.h
@@ -0,0 +1,454 @@
1#ifndef _ASM_X86_UACCESS_H
2#define _ASM_X86_UACCESS_H
3/*
4 * User space memory access functions
5 */
6#include <linux/errno.h>
7#include <linux/compiler.h>
8#include <linux/thread_info.h>
9#include <linux/prefetch.h>
10#include <linux/string.h>
11#include <asm/asm.h>
12#include <asm/page.h>
13
14#define VERIFY_READ 0
15#define VERIFY_WRITE 1
16
17/*
18 * The fs value determines whether argument validity checking should be
19 * performed or not. If get_fs() == USER_DS, checking is performed, with
20 * get_fs() == KERNEL_DS, checking is bypassed.
21 *
22 * For historical reasons, these macros are grossly misnamed.
23 */
24
25#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
26
27#define KERNEL_DS MAKE_MM_SEG(-1UL)
28#define USER_DS MAKE_MM_SEG(PAGE_OFFSET)
29
30#define get_ds() (KERNEL_DS)
31#define get_fs() (current_thread_info()->addr_limit)
32#define set_fs(x) (current_thread_info()->addr_limit = (x))
33
34#define segment_eq(a, b) ((a).seg == (b).seg)
35
36#define __addr_ok(addr) \
37 ((unsigned long __force)(addr) < \
38 (current_thread_info()->addr_limit.seg))
39
40/*
41 * Test whether a block of memory is a valid user space address.
42 * Returns 0 if the range is valid, nonzero otherwise.
43 *
44 * This is equivalent to the following test:
45 * (u33)addr + (u33)size >= (u33)current->addr_limit.seg (u65 for x86_64)
46 *
47 * This needs 33-bit (65-bit for x86_64) arithmetic. We have a carry...
48 */
49
50#define __range_not_ok(addr, size) \
51({ \
52 unsigned long flag, roksum; \
53 __chk_user_ptr(addr); \
54 asm("add %3,%1 ; sbb %0,%0 ; cmp %1,%4 ; sbb $0,%0" \
55 : "=&r" (flag), "=r" (roksum) \
56 : "1" (addr), "g" ((long)(size)), \
57 "rm" (current_thread_info()->addr_limit.seg)); \
58 flag; \
59})
60
61/**
62 * access_ok: - Checks if a user space pointer is valid
63 * @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
64 * %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe
65 * to write to a block, it is always safe to read from it.
66 * @addr: User space pointer to start of block to check
67 * @size: Size of block to check
68 *
69 * Context: User context only. This function may sleep.
70 *
71 * Checks if a pointer to a block of memory in user space is valid.
72 *
73 * Returns true (nonzero) if the memory block may be valid, false (zero)
74 * if it is definitely invalid.
75 *
76 * Note that, depending on architecture, this function probably just
77 * checks that the pointer is in the user space range - after calling
78 * this function, memory access functions may still return -EFAULT.
79 */
80#define access_ok(type, addr, size) (likely(__range_not_ok(addr, size) == 0))
81
82/*
83 * The exception table consists of pairs of addresses: the first is the
84 * address of an instruction that is allowed to fault, and the second is
85 * the address at which the program should continue. No registers are
86 * modified, so it is entirely up to the continuation code to figure out
87 * what to do.
88 *
89 * All the routines below use bits of fixup code that are out of line
90 * with the main instruction path. This means when everything is well,
91 * we don't even have to jump over them. Further, they do not intrude
92 * on our cache or tlb entries.
93 */
94
95struct exception_table_entry {
96 unsigned long insn, fixup;
97};
98
99extern int fixup_exception(struct pt_regs *regs);
100
101/*
102 * These are the main single-value transfer routines. They automatically
103 * use the right size if we just have the right pointer type.
104 *
105 * This gets kind of ugly. We want to return _two_ values in "get_user()"
106 * and yet we don't want to do any pointers, because that is too much
107 * of a performance impact. Thus we have a few rather ugly macros here,
108 * and hide all the ugliness from the user.
109 *
110 * The "__xxx" versions of the user access functions are versions that
111 * do not verify the address space, that must have been done previously
112 * with a separate "access_ok()" call (this is used when we do multiple
113 * accesses to the same area of user memory).
114 */
115
116extern int __get_user_1(void);
117extern int __get_user_2(void);
118extern int __get_user_4(void);
119extern int __get_user_8(void);
120extern int __get_user_bad(void);
121
122#define __get_user_x(size, ret, x, ptr) \
123 asm volatile("call __get_user_" #size \
124 : "=a" (ret),"=d" (x) \
125 : "0" (ptr)) \
126
127/* Careful: we have to cast the result to the type of the pointer
128 * for sign reasons */
129
130/**
131 * get_user: - Get a simple variable from user space.
132 * @x: Variable to store result.
133 * @ptr: Source address, in user space.
134 *
135 * Context: User context only. This function may sleep.
136 *
137 * This macro copies a single simple variable from user space to kernel
138 * space. It supports simple types like char and int, but not larger
139 * data types like structures or arrays.
140 *
141 * @ptr must have pointer-to-simple-variable type, and the result of
142 * dereferencing @ptr must be assignable to @x without a cast.
143 *
144 * Returns zero on success, or -EFAULT on error.
145 * On error, the variable @x is set to zero.
146 */
147#ifdef CONFIG_X86_32
148#define __get_user_8(__ret_gu, __val_gu, ptr) \
149 __get_user_x(X, __ret_gu, __val_gu, ptr)
150#else
151#define __get_user_8(__ret_gu, __val_gu, ptr) \
152 __get_user_x(8, __ret_gu, __val_gu, ptr)
153#endif
154
155#define get_user(x, ptr) \
156({ \
157 int __ret_gu; \
158 unsigned long __val_gu; \
159 __chk_user_ptr(ptr); \
160 switch (sizeof(*(ptr))) { \
161 case 1: \
162 __get_user_x(1, __ret_gu, __val_gu, ptr); \
163 break; \
164 case 2: \
165 __get_user_x(2, __ret_gu, __val_gu, ptr); \
166 break; \
167 case 4: \
168 __get_user_x(4, __ret_gu, __val_gu, ptr); \
169 break; \
170 case 8: \
171 __get_user_8(__ret_gu, __val_gu, ptr); \
172 break; \
173 default: \
174 __get_user_x(X, __ret_gu, __val_gu, ptr); \
175 break; \
176 } \
177 (x) = (__typeof__(*(ptr)))__val_gu; \
178 __ret_gu; \
179})
180
181#define __put_user_x(size, x, ptr, __ret_pu) \
182 asm volatile("call __put_user_" #size : "=a" (__ret_pu) \
183 :"0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
184
185
186
187#ifdef CONFIG_X86_32
188#define __put_user_u64(x, addr, err) \
189 asm volatile("1: movl %%eax,0(%2)\n" \
190 "2: movl %%edx,4(%2)\n" \
191 "3:\n" \
192 ".section .fixup,\"ax\"\n" \
193 "4: movl %3,%0\n" \
194 " jmp 3b\n" \
195 ".previous\n" \
196 _ASM_EXTABLE(1b, 4b) \
197 _ASM_EXTABLE(2b, 4b) \
198 : "=r" (err) \
199 : "A" (x), "r" (addr), "i" (-EFAULT), "0" (err))
200
201#define __put_user_x8(x, ptr, __ret_pu) \
202 asm volatile("call __put_user_8" : "=a" (__ret_pu) \
203 : "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
204#else
205#define __put_user_u64(x, ptr, retval) \
206 __put_user_asm(x, ptr, retval, "q", "", "Zr", -EFAULT)
207#define __put_user_x8(x, ptr, __ret_pu) __put_user_x(8, x, ptr, __ret_pu)
208#endif
209
210extern void __put_user_bad(void);
211
212/*
213 * Strange magic calling convention: pointer in %ecx,
214 * value in %eax(:%edx), return value in %eax. clobbers %rbx
215 */
216extern void __put_user_1(void);
217extern void __put_user_2(void);
218extern void __put_user_4(void);
219extern void __put_user_8(void);
220
221#ifdef CONFIG_X86_WP_WORKS_OK
222
223/**
224 * put_user: - Write a simple value into user space.
225 * @x: Value to copy to user space.
226 * @ptr: Destination address, in user space.
227 *
228 * Context: User context only. This function may sleep.
229 *
230 * This macro copies a single simple value from kernel space to user
231 * space. It supports simple types like char and int, but not larger
232 * data types like structures or arrays.
233 *
234 * @ptr must have pointer-to-simple-variable type, and @x must be assignable
235 * to the result of dereferencing @ptr.
236 *
237 * Returns zero on success, or -EFAULT on error.
238 */
239#define put_user(x, ptr) \
240({ \
241 int __ret_pu; \
242 __typeof__(*(ptr)) __pu_val; \
243 __chk_user_ptr(ptr); \
244 __pu_val = x; \
245 switch (sizeof(*(ptr))) { \
246 case 1: \
247 __put_user_x(1, __pu_val, ptr, __ret_pu); \
248 break; \
249 case 2: \
250 __put_user_x(2, __pu_val, ptr, __ret_pu); \
251 break; \
252 case 4: \
253 __put_user_x(4, __pu_val, ptr, __ret_pu); \
254 break; \
255 case 8: \
256 __put_user_x8(__pu_val, ptr, __ret_pu); \
257 break; \
258 default: \
259 __put_user_x(X, __pu_val, ptr, __ret_pu); \
260 break; \
261 } \
262 __ret_pu; \
263})
264
265#define __put_user_size(x, ptr, size, retval, errret) \
266do { \
267 retval = 0; \
268 __chk_user_ptr(ptr); \
269 switch (size) { \
270 case 1: \
271 __put_user_asm(x, ptr, retval, "b", "b", "iq", errret); \
272 break; \
273 case 2: \
274 __put_user_asm(x, ptr, retval, "w", "w", "ir", errret); \
275 break; \
276 case 4: \
277 __put_user_asm(x, ptr, retval, "l", "k", "ir", errret);\
278 break; \
279 case 8: \
280 __put_user_u64((__typeof__(*ptr))(x), ptr, retval); \
281 break; \
282 default: \
283 __put_user_bad(); \
284 } \
285} while (0)
286
287#else
288
289#define __put_user_size(x, ptr, size, retval, errret) \
290do { \
291 __typeof__(*(ptr))__pus_tmp = x; \
292 retval = 0; \
293 \
294 if (unlikely(__copy_to_user_ll(ptr, &__pus_tmp, size) != 0)) \
295 retval = errret; \
296} while (0)
297
298#define put_user(x, ptr) \
299({ \
300 int __ret_pu; \
301 __typeof__(*(ptr))__pus_tmp = x; \
302 __ret_pu = 0; \
303 if (unlikely(__copy_to_user_ll(ptr, &__pus_tmp, \
304 sizeof(*(ptr))) != 0)) \
305 __ret_pu = -EFAULT; \
306 __ret_pu; \
307})
308#endif
309
310#ifdef CONFIG_X86_32
311#define __get_user_asm_u64(x, ptr, retval, errret) (x) = __get_user_bad()
312#else
313#define __get_user_asm_u64(x, ptr, retval, errret) \
314 __get_user_asm(x, ptr, retval, "q", "", "=r", errret)
315#endif
316
317#define __get_user_size(x, ptr, size, retval, errret) \
318do { \
319 retval = 0; \
320 __chk_user_ptr(ptr); \
321 switch (size) { \
322 case 1: \
323 __get_user_asm(x, ptr, retval, "b", "b", "=q", errret); \
324 break; \
325 case 2: \
326 __get_user_asm(x, ptr, retval, "w", "w", "=r", errret); \
327 break; \
328 case 4: \
329 __get_user_asm(x, ptr, retval, "l", "k", "=r", errret); \
330 break; \
331 case 8: \
332 __get_user_asm_u64(x, ptr, retval, errret); \
333 break; \
334 default: \
335 (x) = __get_user_bad(); \
336 } \
337} while (0)
338
339#define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \
340 asm volatile("1: mov"itype" %2,%"rtype"1\n" \
341 "2:\n" \
342 ".section .fixup,\"ax\"\n" \
343 "3: mov %3,%0\n" \
344 " xor"itype" %"rtype"1,%"rtype"1\n" \
345 " jmp 2b\n" \
346 ".previous\n" \
347 _ASM_EXTABLE(1b, 3b) \
348 : "=r" (err), ltype(x) \
349 : "m" (__m(addr)), "i" (errret), "0" (err))
350
351#define __put_user_nocheck(x, ptr, size) \
352({ \
353 long __pu_err; \
354 __put_user_size((x), (ptr), (size), __pu_err, -EFAULT); \
355 __pu_err; \
356})
357
358#define __get_user_nocheck(x, ptr, size) \
359({ \
360 long __gu_err; \
361 unsigned long __gu_val; \
362 __get_user_size(__gu_val, (ptr), (size), __gu_err, -EFAULT); \
363 (x) = (__force __typeof__(*(ptr)))__gu_val; \
364 __gu_err; \
365})
366
367/* FIXME: this hack is definitely wrong -AK */
368struct __large_struct { unsigned long buf[100]; };
369#define __m(x) (*(struct __large_struct __user *)(x))
370
371/*
372 * Tell gcc we read from memory instead of writing: this is because
373 * we do not write to any memory gcc knows about, so there are no
374 * aliasing issues.
375 */
376#define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \
377 asm volatile("1: mov"itype" %"rtype"1,%2\n" \
378 "2:\n" \
379 ".section .fixup,\"ax\"\n" \
380 "3: mov %3,%0\n" \
381 " jmp 2b\n" \
382 ".previous\n" \
383 _ASM_EXTABLE(1b, 3b) \
384 : "=r"(err) \
385 : ltype(x), "m" (__m(addr)), "i" (errret), "0" (err))
386/**
387 * __get_user: - Get a simple variable from user space, with less checking.
388 * @x: Variable to store result.
389 * @ptr: Source address, in user space.
390 *
391 * Context: User context only. This function may sleep.
392 *
393 * This macro copies a single simple variable from user space to kernel
394 * space. It supports simple types like char and int, but not larger
395 * data types like structures or arrays.
396 *
397 * @ptr must have pointer-to-simple-variable type, and the result of
398 * dereferencing @ptr must be assignable to @x without a cast.
399 *
400 * Caller must check the pointer with access_ok() before calling this
401 * function.
402 *
403 * Returns zero on success, or -EFAULT on error.
404 * On error, the variable @x is set to zero.
405 */
406
407#define __get_user(x, ptr) \
408 __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
409/**
410 * __put_user: - Write a simple value into user space, with less checking.
411 * @x: Value to copy to user space.
412 * @ptr: Destination address, in user space.
413 *
414 * Context: User context only. This function may sleep.
415 *
416 * This macro copies a single simple value from kernel space to user
417 * space. It supports simple types like char and int, but not larger
418 * data types like structures or arrays.
419 *
420 * @ptr must have pointer-to-simple-variable type, and @x must be assignable
421 * to the result of dereferencing @ptr.
422 *
423 * Caller must check the pointer with access_ok() before calling this
424 * function.
425 *
426 * Returns zero on success, or -EFAULT on error.
427 */
428
429#define __put_user(x, ptr) \
430 __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
431
432#define __get_user_unaligned __get_user
433#define __put_user_unaligned __put_user
434
435/*
436 * movsl can be slow when source and dest are not both 8-byte aligned
437 */
438#ifdef CONFIG_X86_INTEL_USERCOPY
439extern struct movsl_mask {
440 int mask;
441} ____cacheline_aligned_in_smp movsl_mask;
442#endif
443
444#define ARCH_HAS_NOCACHE_UACCESS 1
445
446#ifdef CONFIG_X86_32
447# include "uaccess_32.h"
448#else
449# define ARCH_HAS_SEARCH_EXTABLE
450# include "uaccess_64.h"
451#endif
452
453#endif /* _ASM_X86_UACCESS_H */
454
diff --git a/arch/x86/include/asm/uaccess_32.h b/arch/x86/include/asm/uaccess_32.h
new file mode 100644
index 000000000000..d095a3aeea1b
--- /dev/null
+++ b/arch/x86/include/asm/uaccess_32.h
@@ -0,0 +1,218 @@
1#ifndef _ASM_X86_UACCESS_32_H
2#define _ASM_X86_UACCESS_32_H
3
4/*
5 * User space memory access functions
6 */
7#include <linux/errno.h>
8#include <linux/thread_info.h>
9#include <linux/prefetch.h>
10#include <linux/string.h>
11#include <asm/asm.h>
12#include <asm/page.h>
13
14unsigned long __must_check __copy_to_user_ll
15 (void __user *to, const void *from, unsigned long n);
16unsigned long __must_check __copy_from_user_ll
17 (void *to, const void __user *from, unsigned long n);
18unsigned long __must_check __copy_from_user_ll_nozero
19 (void *to, const void __user *from, unsigned long n);
20unsigned long __must_check __copy_from_user_ll_nocache
21 (void *to, const void __user *from, unsigned long n);
22unsigned long __must_check __copy_from_user_ll_nocache_nozero
23 (void *to, const void __user *from, unsigned long n);
24
25/**
26 * __copy_to_user_inatomic: - Copy a block of data into user space, with less checking.
27 * @to: Destination address, in user space.
28 * @from: Source address, in kernel space.
29 * @n: Number of bytes to copy.
30 *
31 * Context: User context only.
32 *
33 * Copy data from kernel space to user space. Caller must check
34 * the specified block with access_ok() before calling this function.
35 * The caller should also make sure he pins the user space address
36 * so that the we don't result in page fault and sleep.
37 *
38 * Here we special-case 1, 2 and 4-byte copy_*_user invocations. On a fault
39 * we return the initial request size (1, 2 or 4), as copy_*_user should do.
40 * If a store crosses a page boundary and gets a fault, the x86 will not write
41 * anything, so this is accurate.
42 */
43
44static __always_inline unsigned long __must_check
45__copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
46{
47 if (__builtin_constant_p(n)) {
48 unsigned long ret;
49
50 switch (n) {
51 case 1:
52 __put_user_size(*(u8 *)from, (u8 __user *)to,
53 1, ret, 1);
54 return ret;
55 case 2:
56 __put_user_size(*(u16 *)from, (u16 __user *)to,
57 2, ret, 2);
58 return ret;
59 case 4:
60 __put_user_size(*(u32 *)from, (u32 __user *)to,
61 4, ret, 4);
62 return ret;
63 }
64 }
65 return __copy_to_user_ll(to, from, n);
66}
67
68/**
69 * __copy_to_user: - Copy a block of data into user space, with less checking.
70 * @to: Destination address, in user space.
71 * @from: Source address, in kernel space.
72 * @n: Number of bytes to copy.
73 *
74 * Context: User context only. This function may sleep.
75 *
76 * Copy data from kernel space to user space. Caller must check
77 * the specified block with access_ok() before calling this function.
78 *
79 * Returns number of bytes that could not be copied.
80 * On success, this will be zero.
81 */
82static __always_inline unsigned long __must_check
83__copy_to_user(void __user *to, const void *from, unsigned long n)
84{
85 might_sleep();
86 return __copy_to_user_inatomic(to, from, n);
87}
88
89static __always_inline unsigned long
90__copy_from_user_inatomic(void *to, const void __user *from, unsigned long n)
91{
92 /* Avoid zeroing the tail if the copy fails..
93 * If 'n' is constant and 1, 2, or 4, we do still zero on a failure,
94 * but as the zeroing behaviour is only significant when n is not
95 * constant, that shouldn't be a problem.
96 */
97 if (__builtin_constant_p(n)) {
98 unsigned long ret;
99
100 switch (n) {
101 case 1:
102 __get_user_size(*(u8 *)to, from, 1, ret, 1);
103 return ret;
104 case 2:
105 __get_user_size(*(u16 *)to, from, 2, ret, 2);
106 return ret;
107 case 4:
108 __get_user_size(*(u32 *)to, from, 4, ret, 4);
109 return ret;
110 }
111 }
112 return __copy_from_user_ll_nozero(to, from, n);
113}
114
115/**
116 * __copy_from_user: - Copy a block of data from user space, with less checking.
117 * @to: Destination address, in kernel space.
118 * @from: Source address, in user space.
119 * @n: Number of bytes to copy.
120 *
121 * Context: User context only. This function may sleep.
122 *
123 * Copy data from user space to kernel space. Caller must check
124 * the specified block with access_ok() before calling this function.
125 *
126 * Returns number of bytes that could not be copied.
127 * On success, this will be zero.
128 *
129 * If some data could not be copied, this function will pad the copied
130 * data to the requested size using zero bytes.
131 *
132 * An alternate version - __copy_from_user_inatomic() - may be called from
133 * atomic context and will fail rather than sleep. In this case the
134 * uncopied bytes will *NOT* be padded with zeros. See fs/filemap.h
135 * for explanation of why this is needed.
136 */
137static __always_inline unsigned long
138__copy_from_user(void *to, const void __user *from, unsigned long n)
139{
140 might_sleep();
141 if (__builtin_constant_p(n)) {
142 unsigned long ret;
143
144 switch (n) {
145 case 1:
146 __get_user_size(*(u8 *)to, from, 1, ret, 1);
147 return ret;
148 case 2:
149 __get_user_size(*(u16 *)to, from, 2, ret, 2);
150 return ret;
151 case 4:
152 __get_user_size(*(u32 *)to, from, 4, ret, 4);
153 return ret;
154 }
155 }
156 return __copy_from_user_ll(to, from, n);
157}
158
159static __always_inline unsigned long __copy_from_user_nocache(void *to,
160 const void __user *from, unsigned long n)
161{
162 might_sleep();
163 if (__builtin_constant_p(n)) {
164 unsigned long ret;
165
166 switch (n) {
167 case 1:
168 __get_user_size(*(u8 *)to, from, 1, ret, 1);
169 return ret;
170 case 2:
171 __get_user_size(*(u16 *)to, from, 2, ret, 2);
172 return ret;
173 case 4:
174 __get_user_size(*(u32 *)to, from, 4, ret, 4);
175 return ret;
176 }
177 }
178 return __copy_from_user_ll_nocache(to, from, n);
179}
180
181static __always_inline unsigned long
182__copy_from_user_inatomic_nocache(void *to, const void __user *from,
183 unsigned long n)
184{
185 return __copy_from_user_ll_nocache_nozero(to, from, n);
186}
187
188unsigned long __must_check copy_to_user(void __user *to,
189 const void *from, unsigned long n);
190unsigned long __must_check copy_from_user(void *to,
191 const void __user *from,
192 unsigned long n);
193long __must_check strncpy_from_user(char *dst, const char __user *src,
194 long count);
195long __must_check __strncpy_from_user(char *dst,
196 const char __user *src, long count);
197
198/**
199 * strlen_user: - Get the size of a string in user space.
200 * @str: The string to measure.
201 *
202 * Context: User context only. This function may sleep.
203 *
204 * Get the size of a NUL-terminated string in user space.
205 *
206 * Returns the size of the string INCLUDING the terminating NUL.
207 * On exception, returns 0.
208 *
209 * If there is a limit on the length of a valid string, you may wish to
210 * consider using strnlen_user() instead.
211 */
212#define strlen_user(str) strnlen_user(str, LONG_MAX)
213
214long strnlen_user(const char __user *str, long n);
215unsigned long __must_check clear_user(void __user *mem, unsigned long len);
216unsigned long __must_check __clear_user(void __user *mem, unsigned long len);
217
218#endif /* _ASM_X86_UACCESS_32_H */
diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
new file mode 100644
index 000000000000..664f15280f14
--- /dev/null
+++ b/arch/x86/include/asm/uaccess_64.h
@@ -0,0 +1,202 @@
1#ifndef _ASM_X86_UACCESS_64_H
2#define _ASM_X86_UACCESS_64_H
3
4/*
5 * User space memory access functions
6 */
7#include <linux/compiler.h>
8#include <linux/errno.h>
9#include <linux/prefetch.h>
10#include <linux/lockdep.h>
11#include <asm/page.h>
12
13/*
14 * Copy To/From Userspace
15 */
16
17/* Handles exceptions in both to and from, but doesn't do access_ok */
18__must_check unsigned long
19copy_user_generic(void *to, const void *from, unsigned len);
20
21__must_check unsigned long
22copy_to_user(void __user *to, const void *from, unsigned len);
23__must_check unsigned long
24copy_from_user(void *to, const void __user *from, unsigned len);
25__must_check unsigned long
26copy_in_user(void __user *to, const void __user *from, unsigned len);
27
28static __always_inline __must_check
29int __copy_from_user(void *dst, const void __user *src, unsigned size)
30{
31 int ret = 0;
32 if (!__builtin_constant_p(size))
33 return copy_user_generic(dst, (__force void *)src, size);
34 switch (size) {
35 case 1:__get_user_asm(*(u8 *)dst, (u8 __user *)src,
36 ret, "b", "b", "=q", 1);
37 return ret;
38 case 2:__get_user_asm(*(u16 *)dst, (u16 __user *)src,
39 ret, "w", "w", "=r", 2);
40 return ret;
41 case 4:__get_user_asm(*(u32 *)dst, (u32 __user *)src,
42 ret, "l", "k", "=r", 4);
43 return ret;
44 case 8:__get_user_asm(*(u64 *)dst, (u64 __user *)src,
45 ret, "q", "", "=r", 8);
46 return ret;
47 case 10:
48 __get_user_asm(*(u64 *)dst, (u64 __user *)src,
49 ret, "q", "", "=r", 16);
50 if (unlikely(ret))
51 return ret;
52 __get_user_asm(*(u16 *)(8 + (char *)dst),
53 (u16 __user *)(8 + (char __user *)src),
54 ret, "w", "w", "=r", 2);
55 return ret;
56 case 16:
57 __get_user_asm(*(u64 *)dst, (u64 __user *)src,
58 ret, "q", "", "=r", 16);
59 if (unlikely(ret))
60 return ret;
61 __get_user_asm(*(u64 *)(8 + (char *)dst),
62 (u64 __user *)(8 + (char __user *)src),
63 ret, "q", "", "=r", 8);
64 return ret;
65 default:
66 return copy_user_generic(dst, (__force void *)src, size);
67 }
68}
69
70static __always_inline __must_check
71int __copy_to_user(void __user *dst, const void *src, unsigned size)
72{
73 int ret = 0;
74 if (!__builtin_constant_p(size))
75 return copy_user_generic((__force void *)dst, src, size);
76 switch (size) {
77 case 1:__put_user_asm(*(u8 *)src, (u8 __user *)dst,
78 ret, "b", "b", "iq", 1);
79 return ret;
80 case 2:__put_user_asm(*(u16 *)src, (u16 __user *)dst,
81 ret, "w", "w", "ir", 2);
82 return ret;
83 case 4:__put_user_asm(*(u32 *)src, (u32 __user *)dst,
84 ret, "l", "k", "ir", 4);
85 return ret;
86 case 8:__put_user_asm(*(u64 *)src, (u64 __user *)dst,
87 ret, "q", "", "ir", 8);
88 return ret;
89 case 10:
90 __put_user_asm(*(u64 *)src, (u64 __user *)dst,
91 ret, "q", "", "ir", 10);
92 if (unlikely(ret))
93 return ret;
94 asm("":::"memory");
95 __put_user_asm(4[(u16 *)src], 4 + (u16 __user *)dst,
96 ret, "w", "w", "ir", 2);
97 return ret;
98 case 16:
99 __put_user_asm(*(u64 *)src, (u64 __user *)dst,
100 ret, "q", "", "ir", 16);
101 if (unlikely(ret))
102 return ret;
103 asm("":::"memory");
104 __put_user_asm(1[(u64 *)src], 1 + (u64 __user *)dst,
105 ret, "q", "", "ir", 8);
106 return ret;
107 default:
108 return copy_user_generic((__force void *)dst, src, size);
109 }
110}
111
112static __always_inline __must_check
113int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
114{
115 int ret = 0;
116 if (!__builtin_constant_p(size))
117 return copy_user_generic((__force void *)dst,
118 (__force void *)src, size);
119 switch (size) {
120 case 1: {
121 u8 tmp;
122 __get_user_asm(tmp, (u8 __user *)src,
123 ret, "b", "b", "=q", 1);
124 if (likely(!ret))
125 __put_user_asm(tmp, (u8 __user *)dst,
126 ret, "b", "b", "iq", 1);
127 return ret;
128 }
129 case 2: {
130 u16 tmp;
131 __get_user_asm(tmp, (u16 __user *)src,
132 ret, "w", "w", "=r", 2);
133 if (likely(!ret))
134 __put_user_asm(tmp, (u16 __user *)dst,
135 ret, "w", "w", "ir", 2);
136 return ret;
137 }
138
139 case 4: {
140 u32 tmp;
141 __get_user_asm(tmp, (u32 __user *)src,
142 ret, "l", "k", "=r", 4);
143 if (likely(!ret))
144 __put_user_asm(tmp, (u32 __user *)dst,
145 ret, "l", "k", "ir", 4);
146 return ret;
147 }
148 case 8: {
149 u64 tmp;
150 __get_user_asm(tmp, (u64 __user *)src,
151 ret, "q", "", "=r", 8);
152 if (likely(!ret))
153 __put_user_asm(tmp, (u64 __user *)dst,
154 ret, "q", "", "ir", 8);
155 return ret;
156 }
157 default:
158 return copy_user_generic((__force void *)dst,
159 (__force void *)src, size);
160 }
161}
162
163__must_check long
164strncpy_from_user(char *dst, const char __user *src, long count);
165__must_check long
166__strncpy_from_user(char *dst, const char __user *src, long count);
167__must_check long strnlen_user(const char __user *str, long n);
168__must_check long __strnlen_user(const char __user *str, long n);
169__must_check long strlen_user(const char __user *str);
170__must_check unsigned long clear_user(void __user *mem, unsigned long len);
171__must_check unsigned long __clear_user(void __user *mem, unsigned long len);
172
173__must_check long __copy_from_user_inatomic(void *dst, const void __user *src,
174 unsigned size);
175
176static __must_check __always_inline int
177__copy_to_user_inatomic(void __user *dst, const void *src, unsigned size)
178{
179 return copy_user_generic((__force void *)dst, src, size);
180}
181
182extern long __copy_user_nocache(void *dst, const void __user *src,
183 unsigned size, int zerorest);
184
185static inline int __copy_from_user_nocache(void *dst, const void __user *src,
186 unsigned size)
187{
188 might_sleep();
189 return __copy_user_nocache(dst, src, size, 1);
190}
191
192static inline int __copy_from_user_inatomic_nocache(void *dst,
193 const void __user *src,
194 unsigned size)
195{
196 return __copy_user_nocache(dst, src, size, 0);
197}
198
199unsigned long
200copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest);
201
202#endif /* _ASM_X86_UACCESS_64_H */
diff --git a/arch/x86/include/asm/ucontext.h b/arch/x86/include/asm/ucontext.h
new file mode 100644
index 000000000000..87324cf439d9
--- /dev/null
+++ b/arch/x86/include/asm/ucontext.h
@@ -0,0 +1,18 @@
1#ifndef _ASM_X86_UCONTEXT_H
2#define _ASM_X86_UCONTEXT_H
3
4#define UC_FP_XSTATE 0x1 /* indicates the presence of extended state
5 * information in the memory layout pointed
6 * by the fpstate pointer in the ucontext's
7 * sigcontext struct (uc_mcontext).
8 */
9
10struct ucontext {
11 unsigned long uc_flags;
12 struct ucontext *uc_link;
13 stack_t uc_stack;
14 struct sigcontext uc_mcontext;
15 sigset_t uc_sigmask; /* mask last for extensibility */
16};
17
18#endif /* _ASM_X86_UCONTEXT_H */
diff --git a/arch/x86/include/asm/unaligned.h b/arch/x86/include/asm/unaligned.h
new file mode 100644
index 000000000000..a7bd416b4763
--- /dev/null
+++ b/arch/x86/include/asm/unaligned.h
@@ -0,0 +1,14 @@
1#ifndef _ASM_X86_UNALIGNED_H
2#define _ASM_X86_UNALIGNED_H
3
4/*
5 * The x86 can do unaligned accesses itself.
6 */
7
8#include <linux/unaligned/access_ok.h>
9#include <linux/unaligned/generic.h>
10
11#define get_unaligned __get_unaligned_le
12#define put_unaligned __put_unaligned_le
13
14#endif /* _ASM_X86_UNALIGNED_H */
diff --git a/arch/x86/include/asm/unistd.h b/arch/x86/include/asm/unistd.h
new file mode 100644
index 000000000000..2a58ed3e51d8
--- /dev/null
+++ b/arch/x86/include/asm/unistd.h
@@ -0,0 +1,13 @@
1#ifdef __KERNEL__
2# ifdef CONFIG_X86_32
3# include "unistd_32.h"
4# else
5# include "unistd_64.h"
6# endif
7#else
8# ifdef __i386__
9# include "unistd_32.h"
10# else
11# include "unistd_64.h"
12# endif
13#endif
diff --git a/arch/x86/include/asm/unistd_32.h b/arch/x86/include/asm/unistd_32.h
new file mode 100644
index 000000000000..f2bba78430a4
--- /dev/null
+++ b/arch/x86/include/asm/unistd_32.h
@@ -0,0 +1,379 @@
1#ifndef _ASM_X86_UNISTD_32_H
2#define _ASM_X86_UNISTD_32_H
3
4/*
5 * This file contains the system call numbers.
6 */
7
8#define __NR_restart_syscall 0
9#define __NR_exit 1
10#define __NR_fork 2
11#define __NR_read 3
12#define __NR_write 4
13#define __NR_open 5
14#define __NR_close 6
15#define __NR_waitpid 7
16#define __NR_creat 8
17#define __NR_link 9
18#define __NR_unlink 10
19#define __NR_execve 11
20#define __NR_chdir 12
21#define __NR_time 13
22#define __NR_mknod 14
23#define __NR_chmod 15
24#define __NR_lchown 16
25#define __NR_break 17
26#define __NR_oldstat 18
27#define __NR_lseek 19
28#define __NR_getpid 20
29#define __NR_mount 21
30#define __NR_umount 22
31#define __NR_setuid 23
32#define __NR_getuid 24
33#define __NR_stime 25
34#define __NR_ptrace 26
35#define __NR_alarm 27
36#define __NR_oldfstat 28
37#define __NR_pause 29
38#define __NR_utime 30
39#define __NR_stty 31
40#define __NR_gtty 32
41#define __NR_access 33
42#define __NR_nice 34
43#define __NR_ftime 35
44#define __NR_sync 36
45#define __NR_kill 37
46#define __NR_rename 38
47#define __NR_mkdir 39
48#define __NR_rmdir 40
49#define __NR_dup 41
50#define __NR_pipe 42
51#define __NR_times 43
52#define __NR_prof 44
53#define __NR_brk 45
54#define __NR_setgid 46
55#define __NR_getgid 47
56#define __NR_signal 48
57#define __NR_geteuid 49
58#define __NR_getegid 50
59#define __NR_acct 51
60#define __NR_umount2 52
61#define __NR_lock 53
62#define __NR_ioctl 54
63#define __NR_fcntl 55
64#define __NR_mpx 56
65#define __NR_setpgid 57
66#define __NR_ulimit 58
67#define __NR_oldolduname 59
68#define __NR_umask 60
69#define __NR_chroot 61
70#define __NR_ustat 62
71#define __NR_dup2 63
72#define __NR_getppid 64
73#define __NR_getpgrp 65
74#define __NR_setsid 66
75#define __NR_sigaction 67
76#define __NR_sgetmask 68
77#define __NR_ssetmask 69
78#define __NR_setreuid 70
79#define __NR_setregid 71
80#define __NR_sigsuspend 72
81#define __NR_sigpending 73
82#define __NR_sethostname 74
83#define __NR_setrlimit 75
84#define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */
85#define __NR_getrusage 77
86#define __NR_gettimeofday 78
87#define __NR_settimeofday 79
88#define __NR_getgroups 80
89#define __NR_setgroups 81
90#define __NR_select 82
91#define __NR_symlink 83
92#define __NR_oldlstat 84
93#define __NR_readlink 85
94#define __NR_uselib 86
95#define __NR_swapon 87
96#define __NR_reboot 88
97#define __NR_readdir 89
98#define __NR_mmap 90
99#define __NR_munmap 91
100#define __NR_truncate 92
101#define __NR_ftruncate 93
102#define __NR_fchmod 94
103#define __NR_fchown 95
104#define __NR_getpriority 96
105#define __NR_setpriority 97
106#define __NR_profil 98
107#define __NR_statfs 99
108#define __NR_fstatfs 100
109#define __NR_ioperm 101
110#define __NR_socketcall 102
111#define __NR_syslog 103
112#define __NR_setitimer 104
113#define __NR_getitimer 105
114#define __NR_stat 106
115#define __NR_lstat 107
116#define __NR_fstat 108
117#define __NR_olduname 109
118#define __NR_iopl 110
119#define __NR_vhangup 111
120#define __NR_idle 112
121#define __NR_vm86old 113
122#define __NR_wait4 114
123#define __NR_swapoff 115
124#define __NR_sysinfo 116
125#define __NR_ipc 117
126#define __NR_fsync 118
127#define __NR_sigreturn 119
128#define __NR_clone 120
129#define __NR_setdomainname 121
130#define __NR_uname 122
131#define __NR_modify_ldt 123
132#define __NR_adjtimex 124
133#define __NR_mprotect 125
134#define __NR_sigprocmask 126
135#define __NR_create_module 127
136#define __NR_init_module 128
137#define __NR_delete_module 129
138#define __NR_get_kernel_syms 130
139#define __NR_quotactl 131
140#define __NR_getpgid 132
141#define __NR_fchdir 133
142#define __NR_bdflush 134
143#define __NR_sysfs 135
144#define __NR_personality 136
145#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
146#define __NR_setfsuid 138
147#define __NR_setfsgid 139
148#define __NR__llseek 140
149#define __NR_getdents 141
150#define __NR__newselect 142
151#define __NR_flock 143
152#define __NR_msync 144
153#define __NR_readv 145
154#define __NR_writev 146
155#define __NR_getsid 147
156#define __NR_fdatasync 148
157#define __NR__sysctl 149
158#define __NR_mlock 150
159#define __NR_munlock 151
160#define __NR_mlockall 152
161#define __NR_munlockall 153
162#define __NR_sched_setparam 154
163#define __NR_sched_getparam 155
164#define __NR_sched_setscheduler 156
165#define __NR_sched_getscheduler 157
166#define __NR_sched_yield 158
167#define __NR_sched_get_priority_max 159
168#define __NR_sched_get_priority_min 160
169#define __NR_sched_rr_get_interval 161
170#define __NR_nanosleep 162
171#define __NR_mremap 163
172#define __NR_setresuid 164
173#define __NR_getresuid 165
174#define __NR_vm86 166
175#define __NR_query_module 167
176#define __NR_poll 168
177#define __NR_nfsservctl 169
178#define __NR_setresgid 170
179#define __NR_getresgid 171
180#define __NR_prctl 172
181#define __NR_rt_sigreturn 173
182#define __NR_rt_sigaction 174
183#define __NR_rt_sigprocmask 175
184#define __NR_rt_sigpending 176
185#define __NR_rt_sigtimedwait 177
186#define __NR_rt_sigqueueinfo 178
187#define __NR_rt_sigsuspend 179
188#define __NR_pread64 180
189#define __NR_pwrite64 181
190#define __NR_chown 182
191#define __NR_getcwd 183
192#define __NR_capget 184
193#define __NR_capset 185
194#define __NR_sigaltstack 186
195#define __NR_sendfile 187
196#define __NR_getpmsg 188 /* some people actually want streams */
197#define __NR_putpmsg 189 /* some people actually want streams */
198#define __NR_vfork 190
199#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */
200#define __NR_mmap2 192
201#define __NR_truncate64 193
202#define __NR_ftruncate64 194
203#define __NR_stat64 195
204#define __NR_lstat64 196
205#define __NR_fstat64 197
206#define __NR_lchown32 198
207#define __NR_getuid32 199
208#define __NR_getgid32 200
209#define __NR_geteuid32 201
210#define __NR_getegid32 202
211#define __NR_setreuid32 203
212#define __NR_setregid32 204
213#define __NR_getgroups32 205
214#define __NR_setgroups32 206
215#define __NR_fchown32 207
216#define __NR_setresuid32 208
217#define __NR_getresuid32 209
218#define __NR_setresgid32 210
219#define __NR_getresgid32 211
220#define __NR_chown32 212
221#define __NR_setuid32 213
222#define __NR_setgid32 214
223#define __NR_setfsuid32 215
224#define __NR_setfsgid32 216
225#define __NR_pivot_root 217
226#define __NR_mincore 218
227#define __NR_madvise 219
228#define __NR_madvise1 219 /* delete when C lib stub is removed */
229#define __NR_getdents64 220
230#define __NR_fcntl64 221
231/* 223 is unused */
232#define __NR_gettid 224
233#define __NR_readahead 225
234#define __NR_setxattr 226
235#define __NR_lsetxattr 227
236#define __NR_fsetxattr 228
237#define __NR_getxattr 229
238#define __NR_lgetxattr 230
239#define __NR_fgetxattr 231
240#define __NR_listxattr 232
241#define __NR_llistxattr 233
242#define __NR_flistxattr 234
243#define __NR_removexattr 235
244#define __NR_lremovexattr 236
245#define __NR_fremovexattr 237
246#define __NR_tkill 238
247#define __NR_sendfile64 239
248#define __NR_futex 240
249#define __NR_sched_setaffinity 241
250#define __NR_sched_getaffinity 242
251#define __NR_set_thread_area 243
252#define __NR_get_thread_area 244
253#define __NR_io_setup 245
254#define __NR_io_destroy 246
255#define __NR_io_getevents 247
256#define __NR_io_submit 248
257#define __NR_io_cancel 249
258#define __NR_fadvise64 250
259/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
260#define __NR_exit_group 252
261#define __NR_lookup_dcookie 253
262#define __NR_epoll_create 254
263#define __NR_epoll_ctl 255
264#define __NR_epoll_wait 256
265#define __NR_remap_file_pages 257
266#define __NR_set_tid_address 258
267#define __NR_timer_create 259
268#define __NR_timer_settime (__NR_timer_create+1)
269#define __NR_timer_gettime (__NR_timer_create+2)
270#define __NR_timer_getoverrun (__NR_timer_create+3)
271#define __NR_timer_delete (__NR_timer_create+4)
272#define __NR_clock_settime (__NR_timer_create+5)
273#define __NR_clock_gettime (__NR_timer_create+6)
274#define __NR_clock_getres (__NR_timer_create+7)
275#define __NR_clock_nanosleep (__NR_timer_create+8)
276#define __NR_statfs64 268
277#define __NR_fstatfs64 269
278#define __NR_tgkill 270
279#define __NR_utimes 271
280#define __NR_fadvise64_64 272
281#define __NR_vserver 273
282#define __NR_mbind 274
283#define __NR_get_mempolicy 275
284#define __NR_set_mempolicy 276
285#define __NR_mq_open 277
286#define __NR_mq_unlink (__NR_mq_open+1)
287#define __NR_mq_timedsend (__NR_mq_open+2)
288#define __NR_mq_timedreceive (__NR_mq_open+3)
289#define __NR_mq_notify (__NR_mq_open+4)
290#define __NR_mq_getsetattr (__NR_mq_open+5)
291#define __NR_kexec_load 283
292#define __NR_waitid 284
293/* #define __NR_sys_setaltroot 285 */
294#define __NR_add_key 286
295#define __NR_request_key 287
296#define __NR_keyctl 288
297#define __NR_ioprio_set 289
298#define __NR_ioprio_get 290
299#define __NR_inotify_init 291
300#define __NR_inotify_add_watch 292
301#define __NR_inotify_rm_watch 293
302#define __NR_migrate_pages 294
303#define __NR_openat 295
304#define __NR_mkdirat 296
305#define __NR_mknodat 297
306#define __NR_fchownat 298
307#define __NR_futimesat 299
308#define __NR_fstatat64 300
309#define __NR_unlinkat 301
310#define __NR_renameat 302
311#define __NR_linkat 303
312#define __NR_symlinkat 304
313#define __NR_readlinkat 305
314#define __NR_fchmodat 306
315#define __NR_faccessat 307
316#define __NR_pselect6 308
317#define __NR_ppoll 309
318#define __NR_unshare 310
319#define __NR_set_robust_list 311
320#define __NR_get_robust_list 312
321#define __NR_splice 313
322#define __NR_sync_file_range 314
323#define __NR_tee 315
324#define __NR_vmsplice 316
325#define __NR_move_pages 317
326#define __NR_getcpu 318
327#define __NR_epoll_pwait 319
328#define __NR_utimensat 320
329#define __NR_signalfd 321
330#define __NR_timerfd_create 322
331#define __NR_eventfd 323
332#define __NR_fallocate 324
333#define __NR_timerfd_settime 325
334#define __NR_timerfd_gettime 326
335#define __NR_signalfd4 327
336#define __NR_eventfd2 328
337#define __NR_epoll_create1 329
338#define __NR_dup3 330
339#define __NR_pipe2 331
340#define __NR_inotify_init1 332
341
342#ifdef __KERNEL__
343
344#define __ARCH_WANT_IPC_PARSE_VERSION
345#define __ARCH_WANT_OLD_READDIR
346#define __ARCH_WANT_OLD_STAT
347#define __ARCH_WANT_STAT64
348#define __ARCH_WANT_SYS_ALARM
349#define __ARCH_WANT_SYS_GETHOSTNAME
350#define __ARCH_WANT_SYS_PAUSE
351#define __ARCH_WANT_SYS_SGETMASK
352#define __ARCH_WANT_SYS_SIGNAL
353#define __ARCH_WANT_SYS_TIME
354#define __ARCH_WANT_SYS_UTIME
355#define __ARCH_WANT_SYS_WAITPID
356#define __ARCH_WANT_SYS_SOCKETCALL
357#define __ARCH_WANT_SYS_FADVISE64
358#define __ARCH_WANT_SYS_GETPGRP
359#define __ARCH_WANT_SYS_LLSEEK
360#define __ARCH_WANT_SYS_NICE
361#define __ARCH_WANT_SYS_OLD_GETRLIMIT
362#define __ARCH_WANT_SYS_OLDUMOUNT
363#define __ARCH_WANT_SYS_SIGPENDING
364#define __ARCH_WANT_SYS_SIGPROCMASK
365#define __ARCH_WANT_SYS_RT_SIGACTION
366#define __ARCH_WANT_SYS_RT_SIGSUSPEND
367
368/*
369 * "Conditional" syscalls
370 *
371 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
372 * but it doesn't work on all toolchains, so we just do it by hand
373 */
374#ifndef cond_syscall
375#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
376#endif
377
378#endif /* __KERNEL__ */
379#endif /* _ASM_X86_UNISTD_32_H */
diff --git a/arch/x86/include/asm/unistd_64.h b/arch/x86/include/asm/unistd_64.h
new file mode 100644
index 000000000000..834b2c1d89fb
--- /dev/null
+++ b/arch/x86/include/asm/unistd_64.h
@@ -0,0 +1,693 @@
1#ifndef _ASM_X86_UNISTD_64_H
2#define _ASM_X86_UNISTD_64_H
3
4#ifndef __SYSCALL
5#define __SYSCALL(a, b)
6#endif
7
8/*
9 * This file contains the system call numbers.
10 *
11 * Note: holes are not allowed.
12 */
13
14/* at least 8 syscall per cacheline */
15#define __NR_read 0
16__SYSCALL(__NR_read, sys_read)
17#define __NR_write 1
18__SYSCALL(__NR_write, sys_write)
19#define __NR_open 2
20__SYSCALL(__NR_open, sys_open)
21#define __NR_close 3
22__SYSCALL(__NR_close, sys_close)
23#define __NR_stat 4
24__SYSCALL(__NR_stat, sys_newstat)
25#define __NR_fstat 5
26__SYSCALL(__NR_fstat, sys_newfstat)
27#define __NR_lstat 6
28__SYSCALL(__NR_lstat, sys_newlstat)
29#define __NR_poll 7
30__SYSCALL(__NR_poll, sys_poll)
31
32#define __NR_lseek 8
33__SYSCALL(__NR_lseek, sys_lseek)
34#define __NR_mmap 9
35__SYSCALL(__NR_mmap, sys_mmap)
36#define __NR_mprotect 10
37__SYSCALL(__NR_mprotect, sys_mprotect)
38#define __NR_munmap 11
39__SYSCALL(__NR_munmap, sys_munmap)
40#define __NR_brk 12
41__SYSCALL(__NR_brk, sys_brk)
42#define __NR_rt_sigaction 13
43__SYSCALL(__NR_rt_sigaction, sys_rt_sigaction)
44#define __NR_rt_sigprocmask 14
45__SYSCALL(__NR_rt_sigprocmask, sys_rt_sigprocmask)
46#define __NR_rt_sigreturn 15
47__SYSCALL(__NR_rt_sigreturn, stub_rt_sigreturn)
48
49#define __NR_ioctl 16
50__SYSCALL(__NR_ioctl, sys_ioctl)
51#define __NR_pread64 17
52__SYSCALL(__NR_pread64, sys_pread64)
53#define __NR_pwrite64 18
54__SYSCALL(__NR_pwrite64, sys_pwrite64)
55#define __NR_readv 19
56__SYSCALL(__NR_readv, sys_readv)
57#define __NR_writev 20
58__SYSCALL(__NR_writev, sys_writev)
59#define __NR_access 21
60__SYSCALL(__NR_access, sys_access)
61#define __NR_pipe 22
62__SYSCALL(__NR_pipe, sys_pipe)
63#define __NR_select 23
64__SYSCALL(__NR_select, sys_select)
65
66#define __NR_sched_yield 24
67__SYSCALL(__NR_sched_yield, sys_sched_yield)
68#define __NR_mremap 25
69__SYSCALL(__NR_mremap, sys_mremap)
70#define __NR_msync 26
71__SYSCALL(__NR_msync, sys_msync)
72#define __NR_mincore 27
73__SYSCALL(__NR_mincore, sys_mincore)
74#define __NR_madvise 28
75__SYSCALL(__NR_madvise, sys_madvise)
76#define __NR_shmget 29
77__SYSCALL(__NR_shmget, sys_shmget)
78#define __NR_shmat 30
79__SYSCALL(__NR_shmat, sys_shmat)
80#define __NR_shmctl 31
81__SYSCALL(__NR_shmctl, sys_shmctl)
82
83#define __NR_dup 32
84__SYSCALL(__NR_dup, sys_dup)
85#define __NR_dup2 33
86__SYSCALL(__NR_dup2, sys_dup2)
87#define __NR_pause 34
88__SYSCALL(__NR_pause, sys_pause)
89#define __NR_nanosleep 35
90__SYSCALL(__NR_nanosleep, sys_nanosleep)
91#define __NR_getitimer 36
92__SYSCALL(__NR_getitimer, sys_getitimer)
93#define __NR_alarm 37
94__SYSCALL(__NR_alarm, sys_alarm)
95#define __NR_setitimer 38
96__SYSCALL(__NR_setitimer, sys_setitimer)
97#define __NR_getpid 39
98__SYSCALL(__NR_getpid, sys_getpid)
99
100#define __NR_sendfile 40
101__SYSCALL(__NR_sendfile, sys_sendfile64)
102#define __NR_socket 41
103__SYSCALL(__NR_socket, sys_socket)
104#define __NR_connect 42
105__SYSCALL(__NR_connect, sys_connect)
106#define __NR_accept 43
107__SYSCALL(__NR_accept, sys_accept)
108#define __NR_sendto 44
109__SYSCALL(__NR_sendto, sys_sendto)
110#define __NR_recvfrom 45
111__SYSCALL(__NR_recvfrom, sys_recvfrom)
112#define __NR_sendmsg 46
113__SYSCALL(__NR_sendmsg, sys_sendmsg)
114#define __NR_recvmsg 47
115__SYSCALL(__NR_recvmsg, sys_recvmsg)
116
117#define __NR_shutdown 48
118__SYSCALL(__NR_shutdown, sys_shutdown)
119#define __NR_bind 49
120__SYSCALL(__NR_bind, sys_bind)
121#define __NR_listen 50
122__SYSCALL(__NR_listen, sys_listen)
123#define __NR_getsockname 51
124__SYSCALL(__NR_getsockname, sys_getsockname)
125#define __NR_getpeername 52
126__SYSCALL(__NR_getpeername, sys_getpeername)
127#define __NR_socketpair 53
128__SYSCALL(__NR_socketpair, sys_socketpair)
129#define __NR_setsockopt 54
130__SYSCALL(__NR_setsockopt, sys_setsockopt)
131#define __NR_getsockopt 55
132__SYSCALL(__NR_getsockopt, sys_getsockopt)
133
134#define __NR_clone 56
135__SYSCALL(__NR_clone, stub_clone)
136#define __NR_fork 57
137__SYSCALL(__NR_fork, stub_fork)
138#define __NR_vfork 58
139__SYSCALL(__NR_vfork, stub_vfork)
140#define __NR_execve 59
141__SYSCALL(__NR_execve, stub_execve)
142#define __NR_exit 60
143__SYSCALL(__NR_exit, sys_exit)
144#define __NR_wait4 61
145__SYSCALL(__NR_wait4, sys_wait4)
146#define __NR_kill 62
147__SYSCALL(__NR_kill, sys_kill)
148#define __NR_uname 63
149__SYSCALL(__NR_uname, sys_uname)
150
151#define __NR_semget 64
152__SYSCALL(__NR_semget, sys_semget)
153#define __NR_semop 65
154__SYSCALL(__NR_semop, sys_semop)
155#define __NR_semctl 66
156__SYSCALL(__NR_semctl, sys_semctl)
157#define __NR_shmdt 67
158__SYSCALL(__NR_shmdt, sys_shmdt)
159#define __NR_msgget 68
160__SYSCALL(__NR_msgget, sys_msgget)
161#define __NR_msgsnd 69
162__SYSCALL(__NR_msgsnd, sys_msgsnd)
163#define __NR_msgrcv 70
164__SYSCALL(__NR_msgrcv, sys_msgrcv)
165#define __NR_msgctl 71
166__SYSCALL(__NR_msgctl, sys_msgctl)
167
168#define __NR_fcntl 72
169__SYSCALL(__NR_fcntl, sys_fcntl)
170#define __NR_flock 73
171__SYSCALL(__NR_flock, sys_flock)
172#define __NR_fsync 74
173__SYSCALL(__NR_fsync, sys_fsync)
174#define __NR_fdatasync 75
175__SYSCALL(__NR_fdatasync, sys_fdatasync)
176#define __NR_truncate 76
177__SYSCALL(__NR_truncate, sys_truncate)
178#define __NR_ftruncate 77
179__SYSCALL(__NR_ftruncate, sys_ftruncate)
180#define __NR_getdents 78
181__SYSCALL(__NR_getdents, sys_getdents)
182#define __NR_getcwd 79
183__SYSCALL(__NR_getcwd, sys_getcwd)
184
185#define __NR_chdir 80
186__SYSCALL(__NR_chdir, sys_chdir)
187#define __NR_fchdir 81
188__SYSCALL(__NR_fchdir, sys_fchdir)
189#define __NR_rename 82
190__SYSCALL(__NR_rename, sys_rename)
191#define __NR_mkdir 83
192__SYSCALL(__NR_mkdir, sys_mkdir)
193#define __NR_rmdir 84
194__SYSCALL(__NR_rmdir, sys_rmdir)
195#define __NR_creat 85
196__SYSCALL(__NR_creat, sys_creat)
197#define __NR_link 86
198__SYSCALL(__NR_link, sys_link)
199#define __NR_unlink 87
200__SYSCALL(__NR_unlink, sys_unlink)
201
202#define __NR_symlink 88
203__SYSCALL(__NR_symlink, sys_symlink)
204#define __NR_readlink 89
205__SYSCALL(__NR_readlink, sys_readlink)
206#define __NR_chmod 90
207__SYSCALL(__NR_chmod, sys_chmod)
208#define __NR_fchmod 91
209__SYSCALL(__NR_fchmod, sys_fchmod)
210#define __NR_chown 92
211__SYSCALL(__NR_chown, sys_chown)
212#define __NR_fchown 93
213__SYSCALL(__NR_fchown, sys_fchown)
214#define __NR_lchown 94
215__SYSCALL(__NR_lchown, sys_lchown)
216#define __NR_umask 95
217__SYSCALL(__NR_umask, sys_umask)
218
219#define __NR_gettimeofday 96
220__SYSCALL(__NR_gettimeofday, sys_gettimeofday)
221#define __NR_getrlimit 97
222__SYSCALL(__NR_getrlimit, sys_getrlimit)
223#define __NR_getrusage 98
224__SYSCALL(__NR_getrusage, sys_getrusage)
225#define __NR_sysinfo 99
226__SYSCALL(__NR_sysinfo, sys_sysinfo)
227#define __NR_times 100
228__SYSCALL(__NR_times, sys_times)
229#define __NR_ptrace 101
230__SYSCALL(__NR_ptrace, sys_ptrace)
231#define __NR_getuid 102
232__SYSCALL(__NR_getuid, sys_getuid)
233#define __NR_syslog 103
234__SYSCALL(__NR_syslog, sys_syslog)
235
236/* at the very end the stuff that never runs during the benchmarks */
237#define __NR_getgid 104
238__SYSCALL(__NR_getgid, sys_getgid)
239#define __NR_setuid 105
240__SYSCALL(__NR_setuid, sys_setuid)
241#define __NR_setgid 106
242__SYSCALL(__NR_setgid, sys_setgid)
243#define __NR_geteuid 107
244__SYSCALL(__NR_geteuid, sys_geteuid)
245#define __NR_getegid 108
246__SYSCALL(__NR_getegid, sys_getegid)
247#define __NR_setpgid 109
248__SYSCALL(__NR_setpgid, sys_setpgid)
249#define __NR_getppid 110
250__SYSCALL(__NR_getppid, sys_getppid)
251#define __NR_getpgrp 111
252__SYSCALL(__NR_getpgrp, sys_getpgrp)
253
254#define __NR_setsid 112
255__SYSCALL(__NR_setsid, sys_setsid)
256#define __NR_setreuid 113
257__SYSCALL(__NR_setreuid, sys_setreuid)
258#define __NR_setregid 114
259__SYSCALL(__NR_setregid, sys_setregid)
260#define __NR_getgroups 115
261__SYSCALL(__NR_getgroups, sys_getgroups)
262#define __NR_setgroups 116
263__SYSCALL(__NR_setgroups, sys_setgroups)
264#define __NR_setresuid 117
265__SYSCALL(__NR_setresuid, sys_setresuid)
266#define __NR_getresuid 118
267__SYSCALL(__NR_getresuid, sys_getresuid)
268#define __NR_setresgid 119
269__SYSCALL(__NR_setresgid, sys_setresgid)
270
271#define __NR_getresgid 120
272__SYSCALL(__NR_getresgid, sys_getresgid)
273#define __NR_getpgid 121
274__SYSCALL(__NR_getpgid, sys_getpgid)
275#define __NR_setfsuid 122
276__SYSCALL(__NR_setfsuid, sys_setfsuid)
277#define __NR_setfsgid 123
278__SYSCALL(__NR_setfsgid, sys_setfsgid)
279#define __NR_getsid 124
280__SYSCALL(__NR_getsid, sys_getsid)
281#define __NR_capget 125
282__SYSCALL(__NR_capget, sys_capget)
283#define __NR_capset 126
284__SYSCALL(__NR_capset, sys_capset)
285
286#define __NR_rt_sigpending 127
287__SYSCALL(__NR_rt_sigpending, sys_rt_sigpending)
288#define __NR_rt_sigtimedwait 128
289__SYSCALL(__NR_rt_sigtimedwait, sys_rt_sigtimedwait)
290#define __NR_rt_sigqueueinfo 129
291__SYSCALL(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo)
292#define __NR_rt_sigsuspend 130
293__SYSCALL(__NR_rt_sigsuspend, sys_rt_sigsuspend)
294#define __NR_sigaltstack 131
295__SYSCALL(__NR_sigaltstack, stub_sigaltstack)
296#define __NR_utime 132
297__SYSCALL(__NR_utime, sys_utime)
298#define __NR_mknod 133
299__SYSCALL(__NR_mknod, sys_mknod)
300
301/* Only needed for a.out */
302#define __NR_uselib 134
303__SYSCALL(__NR_uselib, sys_ni_syscall)
304#define __NR_personality 135
305__SYSCALL(__NR_personality, sys_personality)
306
307#define __NR_ustat 136
308__SYSCALL(__NR_ustat, sys_ustat)
309#define __NR_statfs 137
310__SYSCALL(__NR_statfs, sys_statfs)
311#define __NR_fstatfs 138
312__SYSCALL(__NR_fstatfs, sys_fstatfs)
313#define __NR_sysfs 139
314__SYSCALL(__NR_sysfs, sys_sysfs)
315
316#define __NR_getpriority 140
317__SYSCALL(__NR_getpriority, sys_getpriority)
318#define __NR_setpriority 141
319__SYSCALL(__NR_setpriority, sys_setpriority)
320#define __NR_sched_setparam 142
321__SYSCALL(__NR_sched_setparam, sys_sched_setparam)
322#define __NR_sched_getparam 143
323__SYSCALL(__NR_sched_getparam, sys_sched_getparam)
324#define __NR_sched_setscheduler 144
325__SYSCALL(__NR_sched_setscheduler, sys_sched_setscheduler)
326#define __NR_sched_getscheduler 145
327__SYSCALL(__NR_sched_getscheduler, sys_sched_getscheduler)
328#define __NR_sched_get_priority_max 146
329__SYSCALL(__NR_sched_get_priority_max, sys_sched_get_priority_max)
330#define __NR_sched_get_priority_min 147
331__SYSCALL(__NR_sched_get_priority_min, sys_sched_get_priority_min)
332#define __NR_sched_rr_get_interval 148
333__SYSCALL(__NR_sched_rr_get_interval, sys_sched_rr_get_interval)
334
335#define __NR_mlock 149
336__SYSCALL(__NR_mlock, sys_mlock)
337#define __NR_munlock 150
338__SYSCALL(__NR_munlock, sys_munlock)
339#define __NR_mlockall 151
340__SYSCALL(__NR_mlockall, sys_mlockall)
341#define __NR_munlockall 152
342__SYSCALL(__NR_munlockall, sys_munlockall)
343
344#define __NR_vhangup 153
345__SYSCALL(__NR_vhangup, sys_vhangup)
346
347#define __NR_modify_ldt 154
348__SYSCALL(__NR_modify_ldt, sys_modify_ldt)
349
350#define __NR_pivot_root 155
351__SYSCALL(__NR_pivot_root, sys_pivot_root)
352
353#define __NR__sysctl 156
354__SYSCALL(__NR__sysctl, sys_sysctl)
355
356#define __NR_prctl 157
357__SYSCALL(__NR_prctl, sys_prctl)
358#define __NR_arch_prctl 158
359__SYSCALL(__NR_arch_prctl, sys_arch_prctl)
360
361#define __NR_adjtimex 159
362__SYSCALL(__NR_adjtimex, sys_adjtimex)
363
364#define __NR_setrlimit 160
365__SYSCALL(__NR_setrlimit, sys_setrlimit)
366
367#define __NR_chroot 161
368__SYSCALL(__NR_chroot, sys_chroot)
369
370#define __NR_sync 162
371__SYSCALL(__NR_sync, sys_sync)
372
373#define __NR_acct 163
374__SYSCALL(__NR_acct, sys_acct)
375
376#define __NR_settimeofday 164
377__SYSCALL(__NR_settimeofday, sys_settimeofday)
378
379#define __NR_mount 165
380__SYSCALL(__NR_mount, sys_mount)
381#define __NR_umount2 166
382__SYSCALL(__NR_umount2, sys_umount)
383
384#define __NR_swapon 167
385__SYSCALL(__NR_swapon, sys_swapon)
386#define __NR_swapoff 168
387__SYSCALL(__NR_swapoff, sys_swapoff)
388
389#define __NR_reboot 169
390__SYSCALL(__NR_reboot, sys_reboot)
391
392#define __NR_sethostname 170
393__SYSCALL(__NR_sethostname, sys_sethostname)
394#define __NR_setdomainname 171
395__SYSCALL(__NR_setdomainname, sys_setdomainname)
396
397#define __NR_iopl 172
398__SYSCALL(__NR_iopl, stub_iopl)
399#define __NR_ioperm 173
400__SYSCALL(__NR_ioperm, sys_ioperm)
401
402#define __NR_create_module 174
403__SYSCALL(__NR_create_module, sys_ni_syscall)
404#define __NR_init_module 175
405__SYSCALL(__NR_init_module, sys_init_module)
406#define __NR_delete_module 176
407__SYSCALL(__NR_delete_module, sys_delete_module)
408#define __NR_get_kernel_syms 177
409__SYSCALL(__NR_get_kernel_syms, sys_ni_syscall)
410#define __NR_query_module 178
411__SYSCALL(__NR_query_module, sys_ni_syscall)
412
413#define __NR_quotactl 179
414__SYSCALL(__NR_quotactl, sys_quotactl)
415
416#define __NR_nfsservctl 180
417__SYSCALL(__NR_nfsservctl, sys_nfsservctl)
418
419/* reserved for LiS/STREAMS */
420#define __NR_getpmsg 181
421__SYSCALL(__NR_getpmsg, sys_ni_syscall)
422#define __NR_putpmsg 182
423__SYSCALL(__NR_putpmsg, sys_ni_syscall)
424
425/* reserved for AFS */
426#define __NR_afs_syscall 183
427__SYSCALL(__NR_afs_syscall, sys_ni_syscall)
428
429/* reserved for tux */
430#define __NR_tuxcall 184
431__SYSCALL(__NR_tuxcall, sys_ni_syscall)
432
433#define __NR_security 185
434__SYSCALL(__NR_security, sys_ni_syscall)
435
436#define __NR_gettid 186
437__SYSCALL(__NR_gettid, sys_gettid)
438
439#define __NR_readahead 187
440__SYSCALL(__NR_readahead, sys_readahead)
441#define __NR_setxattr 188
442__SYSCALL(__NR_setxattr, sys_setxattr)
443#define __NR_lsetxattr 189
444__SYSCALL(__NR_lsetxattr, sys_lsetxattr)
445#define __NR_fsetxattr 190
446__SYSCALL(__NR_fsetxattr, sys_fsetxattr)
447#define __NR_getxattr 191
448__SYSCALL(__NR_getxattr, sys_getxattr)
449#define __NR_lgetxattr 192
450__SYSCALL(__NR_lgetxattr, sys_lgetxattr)
451#define __NR_fgetxattr 193
452__SYSCALL(__NR_fgetxattr, sys_fgetxattr)
453#define __NR_listxattr 194
454__SYSCALL(__NR_listxattr, sys_listxattr)
455#define __NR_llistxattr 195
456__SYSCALL(__NR_llistxattr, sys_llistxattr)
457#define __NR_flistxattr 196
458__SYSCALL(__NR_flistxattr, sys_flistxattr)
459#define __NR_removexattr 197
460__SYSCALL(__NR_removexattr, sys_removexattr)
461#define __NR_lremovexattr 198
462__SYSCALL(__NR_lremovexattr, sys_lremovexattr)
463#define __NR_fremovexattr 199
464__SYSCALL(__NR_fremovexattr, sys_fremovexattr)
465#define __NR_tkill 200
466__SYSCALL(__NR_tkill, sys_tkill)
467#define __NR_time 201
468__SYSCALL(__NR_time, sys_time)
469#define __NR_futex 202
470__SYSCALL(__NR_futex, sys_futex)
471#define __NR_sched_setaffinity 203
472__SYSCALL(__NR_sched_setaffinity, sys_sched_setaffinity)
473#define __NR_sched_getaffinity 204
474__SYSCALL(__NR_sched_getaffinity, sys_sched_getaffinity)
475#define __NR_set_thread_area 205
476__SYSCALL(__NR_set_thread_area, sys_ni_syscall) /* use arch_prctl */
477#define __NR_io_setup 206
478__SYSCALL(__NR_io_setup, sys_io_setup)
479#define __NR_io_destroy 207
480__SYSCALL(__NR_io_destroy, sys_io_destroy)
481#define __NR_io_getevents 208
482__SYSCALL(__NR_io_getevents, sys_io_getevents)
483#define __NR_io_submit 209
484__SYSCALL(__NR_io_submit, sys_io_submit)
485#define __NR_io_cancel 210
486__SYSCALL(__NR_io_cancel, sys_io_cancel)
487#define __NR_get_thread_area 211
488__SYSCALL(__NR_get_thread_area, sys_ni_syscall) /* use arch_prctl */
489#define __NR_lookup_dcookie 212
490__SYSCALL(__NR_lookup_dcookie, sys_lookup_dcookie)
491#define __NR_epoll_create 213
492__SYSCALL(__NR_epoll_create, sys_epoll_create)
493#define __NR_epoll_ctl_old 214
494__SYSCALL(__NR_epoll_ctl_old, sys_ni_syscall)
495#define __NR_epoll_wait_old 215
496__SYSCALL(__NR_epoll_wait_old, sys_ni_syscall)
497#define __NR_remap_file_pages 216
498__SYSCALL(__NR_remap_file_pages, sys_remap_file_pages)
499#define __NR_getdents64 217
500__SYSCALL(__NR_getdents64, sys_getdents64)
501#define __NR_set_tid_address 218
502__SYSCALL(__NR_set_tid_address, sys_set_tid_address)
503#define __NR_restart_syscall 219
504__SYSCALL(__NR_restart_syscall, sys_restart_syscall)
505#define __NR_semtimedop 220
506__SYSCALL(__NR_semtimedop, sys_semtimedop)
507#define __NR_fadvise64 221
508__SYSCALL(__NR_fadvise64, sys_fadvise64)
509#define __NR_timer_create 222
510__SYSCALL(__NR_timer_create, sys_timer_create)
511#define __NR_timer_settime 223
512__SYSCALL(__NR_timer_settime, sys_timer_settime)
513#define __NR_timer_gettime 224
514__SYSCALL(__NR_timer_gettime, sys_timer_gettime)
515#define __NR_timer_getoverrun 225
516__SYSCALL(__NR_timer_getoverrun, sys_timer_getoverrun)
517#define __NR_timer_delete 226
518__SYSCALL(__NR_timer_delete, sys_timer_delete)
519#define __NR_clock_settime 227
520__SYSCALL(__NR_clock_settime, sys_clock_settime)
521#define __NR_clock_gettime 228
522__SYSCALL(__NR_clock_gettime, sys_clock_gettime)
523#define __NR_clock_getres 229
524__SYSCALL(__NR_clock_getres, sys_clock_getres)
525#define __NR_clock_nanosleep 230
526__SYSCALL(__NR_clock_nanosleep, sys_clock_nanosleep)
527#define __NR_exit_group 231
528__SYSCALL(__NR_exit_group, sys_exit_group)
529#define __NR_epoll_wait 232
530__SYSCALL(__NR_epoll_wait, sys_epoll_wait)
531#define __NR_epoll_ctl 233
532__SYSCALL(__NR_epoll_ctl, sys_epoll_ctl)
533#define __NR_tgkill 234
534__SYSCALL(__NR_tgkill, sys_tgkill)
535#define __NR_utimes 235
536__SYSCALL(__NR_utimes, sys_utimes)
537#define __NR_vserver 236
538__SYSCALL(__NR_vserver, sys_ni_syscall)
539#define __NR_mbind 237
540__SYSCALL(__NR_mbind, sys_mbind)
541#define __NR_set_mempolicy 238
542__SYSCALL(__NR_set_mempolicy, sys_set_mempolicy)
543#define __NR_get_mempolicy 239
544__SYSCALL(__NR_get_mempolicy, sys_get_mempolicy)
545#define __NR_mq_open 240
546__SYSCALL(__NR_mq_open, sys_mq_open)
547#define __NR_mq_unlink 241
548__SYSCALL(__NR_mq_unlink, sys_mq_unlink)
549#define __NR_mq_timedsend 242
550__SYSCALL(__NR_mq_timedsend, sys_mq_timedsend)
551#define __NR_mq_timedreceive 243
552__SYSCALL(__NR_mq_timedreceive, sys_mq_timedreceive)
553#define __NR_mq_notify 244
554__SYSCALL(__NR_mq_notify, sys_mq_notify)
555#define __NR_mq_getsetattr 245
556__SYSCALL(__NR_mq_getsetattr, sys_mq_getsetattr)
557#define __NR_kexec_load 246
558__SYSCALL(__NR_kexec_load, sys_kexec_load)
559#define __NR_waitid 247
560__SYSCALL(__NR_waitid, sys_waitid)
561#define __NR_add_key 248
562__SYSCALL(__NR_add_key, sys_add_key)
563#define __NR_request_key 249
564__SYSCALL(__NR_request_key, sys_request_key)
565#define __NR_keyctl 250
566__SYSCALL(__NR_keyctl, sys_keyctl)
567#define __NR_ioprio_set 251
568__SYSCALL(__NR_ioprio_set, sys_ioprio_set)
569#define __NR_ioprio_get 252
570__SYSCALL(__NR_ioprio_get, sys_ioprio_get)
571#define __NR_inotify_init 253
572__SYSCALL(__NR_inotify_init, sys_inotify_init)
573#define __NR_inotify_add_watch 254
574__SYSCALL(__NR_inotify_add_watch, sys_inotify_add_watch)
575#define __NR_inotify_rm_watch 255
576__SYSCALL(__NR_inotify_rm_watch, sys_inotify_rm_watch)
577#define __NR_migrate_pages 256
578__SYSCALL(__NR_migrate_pages, sys_migrate_pages)
579#define __NR_openat 257
580__SYSCALL(__NR_openat, sys_openat)
581#define __NR_mkdirat 258
582__SYSCALL(__NR_mkdirat, sys_mkdirat)
583#define __NR_mknodat 259
584__SYSCALL(__NR_mknodat, sys_mknodat)
585#define __NR_fchownat 260
586__SYSCALL(__NR_fchownat, sys_fchownat)
587#define __NR_futimesat 261
588__SYSCALL(__NR_futimesat, sys_futimesat)
589#define __NR_newfstatat 262
590__SYSCALL(__NR_newfstatat, sys_newfstatat)
591#define __NR_unlinkat 263
592__SYSCALL(__NR_unlinkat, sys_unlinkat)
593#define __NR_renameat 264
594__SYSCALL(__NR_renameat, sys_renameat)
595#define __NR_linkat 265
596__SYSCALL(__NR_linkat, sys_linkat)
597#define __NR_symlinkat 266
598__SYSCALL(__NR_symlinkat, sys_symlinkat)
599#define __NR_readlinkat 267
600__SYSCALL(__NR_readlinkat, sys_readlinkat)
601#define __NR_fchmodat 268
602__SYSCALL(__NR_fchmodat, sys_fchmodat)
603#define __NR_faccessat 269
604__SYSCALL(__NR_faccessat, sys_faccessat)
605#define __NR_pselect6 270
606__SYSCALL(__NR_pselect6, sys_pselect6)
607#define __NR_ppoll 271
608__SYSCALL(__NR_ppoll, sys_ppoll)
609#define __NR_unshare 272
610__SYSCALL(__NR_unshare, sys_unshare)
611#define __NR_set_robust_list 273
612__SYSCALL(__NR_set_robust_list, sys_set_robust_list)
613#define __NR_get_robust_list 274
614__SYSCALL(__NR_get_robust_list, sys_get_robust_list)
615#define __NR_splice 275
616__SYSCALL(__NR_splice, sys_splice)
617#define __NR_tee 276
618__SYSCALL(__NR_tee, sys_tee)
619#define __NR_sync_file_range 277
620__SYSCALL(__NR_sync_file_range, sys_sync_file_range)
621#define __NR_vmsplice 278
622__SYSCALL(__NR_vmsplice, sys_vmsplice)
623#define __NR_move_pages 279
624__SYSCALL(__NR_move_pages, sys_move_pages)
625#define __NR_utimensat 280
626__SYSCALL(__NR_utimensat, sys_utimensat)
627#define __IGNORE_getcpu /* implemented as a vsyscall */
628#define __NR_epoll_pwait 281
629__SYSCALL(__NR_epoll_pwait, sys_epoll_pwait)
630#define __NR_signalfd 282
631__SYSCALL(__NR_signalfd, sys_signalfd)
632#define __NR_timerfd_create 283
633__SYSCALL(__NR_timerfd_create, sys_timerfd_create)
634#define __NR_eventfd 284
635__SYSCALL(__NR_eventfd, sys_eventfd)
636#define __NR_fallocate 285
637__SYSCALL(__NR_fallocate, sys_fallocate)
638#define __NR_timerfd_settime 286
639__SYSCALL(__NR_timerfd_settime, sys_timerfd_settime)
640#define __NR_timerfd_gettime 287
641__SYSCALL(__NR_timerfd_gettime, sys_timerfd_gettime)
642#define __NR_paccept 288
643__SYSCALL(__NR_paccept, sys_paccept)
644#define __NR_signalfd4 289
645__SYSCALL(__NR_signalfd4, sys_signalfd4)
646#define __NR_eventfd2 290
647__SYSCALL(__NR_eventfd2, sys_eventfd2)
648#define __NR_epoll_create1 291
649__SYSCALL(__NR_epoll_create1, sys_epoll_create1)
650#define __NR_dup3 292
651__SYSCALL(__NR_dup3, sys_dup3)
652#define __NR_pipe2 293
653__SYSCALL(__NR_pipe2, sys_pipe2)
654#define __NR_inotify_init1 294
655__SYSCALL(__NR_inotify_init1, sys_inotify_init1)
656
657
658#ifndef __NO_STUBS
659#define __ARCH_WANT_OLD_READDIR
660#define __ARCH_WANT_OLD_STAT
661#define __ARCH_WANT_SYS_ALARM
662#define __ARCH_WANT_SYS_GETHOSTNAME
663#define __ARCH_WANT_SYS_PAUSE
664#define __ARCH_WANT_SYS_SGETMASK
665#define __ARCH_WANT_SYS_SIGNAL
666#define __ARCH_WANT_SYS_UTIME
667#define __ARCH_WANT_SYS_WAITPID
668#define __ARCH_WANT_SYS_SOCKETCALL
669#define __ARCH_WANT_SYS_FADVISE64
670#define __ARCH_WANT_SYS_GETPGRP
671#define __ARCH_WANT_SYS_LLSEEK
672#define __ARCH_WANT_SYS_NICE
673#define __ARCH_WANT_SYS_OLD_GETRLIMIT
674#define __ARCH_WANT_SYS_OLDUMOUNT
675#define __ARCH_WANT_SYS_SIGPENDING
676#define __ARCH_WANT_SYS_SIGPROCMASK
677#define __ARCH_WANT_SYS_RT_SIGACTION
678#define __ARCH_WANT_SYS_RT_SIGSUSPEND
679#define __ARCH_WANT_SYS_TIME
680#define __ARCH_WANT_COMPAT_SYS_TIME
681#endif /* __NO_STUBS */
682
683#ifdef __KERNEL__
684/*
685 * "Conditional" syscalls
686 *
687 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
688 * but it doesn't work on all toolchains, so we just do it by hand
689 */
690#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
691#endif /* __KERNEL__ */
692
693#endif /* _ASM_X86_UNISTD_64_H */
diff --git a/arch/x86/include/asm/unwind.h b/arch/x86/include/asm/unwind.h
new file mode 100644
index 000000000000..8b064bd9c553
--- /dev/null
+++ b/arch/x86/include/asm/unwind.h
@@ -0,0 +1,13 @@
1#ifndef _ASM_X86_UNWIND_H
2#define _ASM_X86_UNWIND_H
3
4#define UNW_PC(frame) ((void)(frame), 0UL)
5#define UNW_SP(frame) ((void)(frame), 0UL)
6#define UNW_FP(frame) ((void)(frame), 0UL)
7
8static inline int arch_unw_user_mode(const void *info)
9{
10 return 0;
11}
12
13#endif /* _ASM_X86_UNWIND_H */
diff --git a/arch/x86/include/asm/user.h b/arch/x86/include/asm/user.h
new file mode 100644
index 000000000000..999873b22e7f
--- /dev/null
+++ b/arch/x86/include/asm/user.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "user_32.h"
3#else
4# include "user_64.h"
5#endif
diff --git a/arch/x86/include/asm/user32.h b/arch/x86/include/asm/user32.h
new file mode 100644
index 000000000000..14cbb73ebcba
--- /dev/null
+++ b/arch/x86/include/asm/user32.h
@@ -0,0 +1,70 @@
1#ifndef _ASM_X86_USER32_H
2#define _ASM_X86_USER32_H
3
4/* IA32 compatible user structures for ptrace.
5 * These should be used for 32bit coredumps too. */
6
7struct user_i387_ia32_struct {
8 u32 cwd;
9 u32 swd;
10 u32 twd;
11 u32 fip;
12 u32 fcs;
13 u32 foo;
14 u32 fos;
15 u32 st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */
16};
17
18/* FSAVE frame with extensions */
19struct user32_fxsr_struct {
20 unsigned short cwd;
21 unsigned short swd;
22 unsigned short twd; /* not compatible to 64bit twd */
23 unsigned short fop;
24 int fip;
25 int fcs;
26 int foo;
27 int fos;
28 int mxcsr;
29 int reserved;
30 int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
31 int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */
32 int padding[56];
33};
34
35struct user_regs_struct32 {
36 __u32 ebx, ecx, edx, esi, edi, ebp, eax;
37 unsigned short ds, __ds, es, __es;
38 unsigned short fs, __fs, gs, __gs;
39 __u32 orig_eax, eip;
40 unsigned short cs, __cs;
41 __u32 eflags, esp;
42 unsigned short ss, __ss;
43};
44
45struct user32 {
46 struct user_regs_struct32 regs; /* Where the registers are actually stored */
47 int u_fpvalid; /* True if math co-processor being used. */
48 /* for this mess. Not yet used. */
49 struct user_i387_ia32_struct i387; /* Math Co-processor registers. */
50/* The rest of this junk is to help gdb figure out what goes where */
51 __u32 u_tsize; /* Text segment size (pages). */
52 __u32 u_dsize; /* Data segment size (pages). */
53 __u32 u_ssize; /* Stack segment size (pages). */
54 __u32 start_code; /* Starting virtual address of text. */
55 __u32 start_stack; /* Starting virtual address of stack area.
56 This is actually the bottom of the stack,
57 the top of the stack is always found in the
58 esp register. */
59 __u32 signal; /* Signal that caused the core dump. */
60 int reserved; /* No __u32er used */
61 __u32 u_ar0; /* Used by gdb to help find the values for */
62 /* the registers. */
63 __u32 u_fpstate; /* Math Co-processor pointer. */
64 __u32 magic; /* To uniquely identify a core file */
65 char u_comm[32]; /* User command that was responsible */
66 int u_debugreg[8];
67};
68
69
70#endif /* _ASM_X86_USER32_H */
diff --git a/arch/x86/include/asm/user_32.h b/arch/x86/include/asm/user_32.h
new file mode 100644
index 000000000000..bebfd8644016
--- /dev/null
+++ b/arch/x86/include/asm/user_32.h
@@ -0,0 +1,131 @@
1#ifndef _ASM_X86_USER_32_H
2#define _ASM_X86_USER_32_H
3
4#include <asm/page.h>
5/* Core file format: The core file is written in such a way that gdb
6 can understand it and provide useful information to the user (under
7 linux we use the 'trad-core' bfd). There are quite a number of
8 obstacles to being able to view the contents of the floating point
9 registers, and until these are solved you will not be able to view the
10 contents of them. Actually, you can read in the core file and look at
11 the contents of the user struct to find out what the floating point
12 registers contain.
13 The actual file contents are as follows:
14 UPAGE: 1 page consisting of a user struct that tells gdb what is present
15 in the file. Directly after this is a copy of the task_struct, which
16 is currently not used by gdb, but it may come in useful at some point.
17 All of the registers are stored as part of the upage. The upage should
18 always be only one page.
19 DATA: The data area is stored. We use current->end_text to
20 current->brk to pick up all of the user variables, plus any memory
21 that may have been malloced. No attempt is made to determine if a page
22 is demand-zero or if a page is totally unused, we just cover the entire
23 range. All of the addresses are rounded in such a way that an integral
24 number of pages is written.
25 STACK: We need the stack information in order to get a meaningful
26 backtrace. We need to write the data from (esp) to
27 current->start_stack, so we round each of these off in order to be able
28 to write an integer number of pages.
29 The minimum core file size is 3 pages, or 12288 bytes.
30*/
31
32/*
33 * Pentium III FXSR, SSE support
34 * Gareth Hughes <gareth@valinux.com>, May 2000
35 *
36 * Provide support for the GDB 5.0+ PTRACE_{GET|SET}FPXREGS requests for
37 * interacting with the FXSR-format floating point environment. Floating
38 * point data can be accessed in the regular format in the usual manner,
39 * and both the standard and SIMD floating point data can be accessed via
40 * the new ptrace requests. In either case, changes to the FPU environment
41 * will be reflected in the task's state as expected.
42 */
43
44struct user_i387_struct {
45 long cwd;
46 long swd;
47 long twd;
48 long fip;
49 long fcs;
50 long foo;
51 long fos;
52 long st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */
53};
54
55struct user_fxsr_struct {
56 unsigned short cwd;
57 unsigned short swd;
58 unsigned short twd;
59 unsigned short fop;
60 long fip;
61 long fcs;
62 long foo;
63 long fos;
64 long mxcsr;
65 long reserved;
66 long st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
67 long xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */
68 long padding[56];
69};
70
71/*
72 * This is the old layout of "struct pt_regs", and
73 * is still the layout used by user mode (the new
74 * pt_regs doesn't have all registers as the kernel
75 * doesn't use the extra segment registers)
76 */
77struct user_regs_struct {
78 unsigned long bx;
79 unsigned long cx;
80 unsigned long dx;
81 unsigned long si;
82 unsigned long di;
83 unsigned long bp;
84 unsigned long ax;
85 unsigned long ds;
86 unsigned long es;
87 unsigned long fs;
88 unsigned long gs;
89 unsigned long orig_ax;
90 unsigned long ip;
91 unsigned long cs;
92 unsigned long flags;
93 unsigned long sp;
94 unsigned long ss;
95};
96
97/* When the kernel dumps core, it starts by dumping the user struct -
98 this will be used by gdb to figure out where the data and stack segments
99 are within the file, and what virtual addresses to use. */
100struct user{
101/* We start with the registers, to mimic the way that "memory" is returned
102 from the ptrace(3,...) function. */
103 struct user_regs_struct regs; /* Where the registers are actually stored */
104/* ptrace does not yet supply these. Someday.... */
105 int u_fpvalid; /* True if math co-processor being used. */
106 /* for this mess. Not yet used. */
107 struct user_i387_struct i387; /* Math Co-processor registers. */
108/* The rest of this junk is to help gdb figure out what goes where */
109 unsigned long int u_tsize; /* Text segment size (pages). */
110 unsigned long int u_dsize; /* Data segment size (pages). */
111 unsigned long int u_ssize; /* Stack segment size (pages). */
112 unsigned long start_code; /* Starting virtual address of text. */
113 unsigned long start_stack; /* Starting virtual address of stack area.
114 This is actually the bottom of the stack,
115 the top of the stack is always found in the
116 esp register. */
117 long int signal; /* Signal that caused the core dump. */
118 int reserved; /* No longer used */
119 unsigned long u_ar0; /* Used by gdb to help find the values for */
120 /* the registers. */
121 struct user_i387_struct *u_fpstate; /* Math Co-processor pointer. */
122 unsigned long magic; /* To uniquely identify a core file */
123 char u_comm[32]; /* User command that was responsible */
124 int u_debugreg[8];
125};
126#define NBPG PAGE_SIZE
127#define UPAGES 1
128#define HOST_TEXT_START_ADDR (u.start_code)
129#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
130
131#endif /* _ASM_X86_USER_32_H */
diff --git a/arch/x86/include/asm/user_64.h b/arch/x86/include/asm/user_64.h
new file mode 100644
index 000000000000..faf2cd3e0d76
--- /dev/null
+++ b/arch/x86/include/asm/user_64.h
@@ -0,0 +1,137 @@
1#ifndef _ASM_X86_USER_64_H
2#define _ASM_X86_USER_64_H
3
4#include <asm/types.h>
5#include <asm/page.h>
6/* Core file format: The core file is written in such a way that gdb
7 can understand it and provide useful information to the user.
8 There are quite a number of obstacles to being able to view the
9 contents of the floating point registers, and until these are
10 solved you will not be able to view the contents of them.
11 Actually, you can read in the core file and look at the contents of
12 the user struct to find out what the floating point registers
13 contain.
14
15 The actual file contents are as follows:
16 UPAGE: 1 page consisting of a user struct that tells gdb what is present
17 in the file. Directly after this is a copy of the task_struct, which
18 is currently not used by gdb, but it may come in useful at some point.
19 All of the registers are stored as part of the upage. The upage should
20 always be only one page.
21 DATA: The data area is stored. We use current->end_text to
22 current->brk to pick up all of the user variables, plus any memory
23 that may have been malloced. No attempt is made to determine if a page
24 is demand-zero or if a page is totally unused, we just cover the entire
25 range. All of the addresses are rounded in such a way that an integral
26 number of pages is written.
27 STACK: We need the stack information in order to get a meaningful
28 backtrace. We need to write the data from (esp) to
29 current->start_stack, so we round each of these off in order to be able
30 to write an integer number of pages.
31 The minimum core file size is 3 pages, or 12288 bytes. */
32
33/*
34 * Pentium III FXSR, SSE support
35 * Gareth Hughes <gareth@valinux.com>, May 2000
36 *
37 * Provide support for the GDB 5.0+ PTRACE_{GET|SET}FPXREGS requests for
38 * interacting with the FXSR-format floating point environment. Floating
39 * point data can be accessed in the regular format in the usual manner,
40 * and both the standard and SIMD floating point data can be accessed via
41 * the new ptrace requests. In either case, changes to the FPU environment
42 * will be reflected in the task's state as expected.
43 *
44 * x86-64 support by Andi Kleen.
45 */
46
47/* This matches the 64bit FXSAVE format as defined by AMD. It is the same
48 as the 32bit format defined by Intel, except that the selector:offset pairs
49 for data and eip are replaced with flat 64bit pointers. */
50struct user_i387_struct {
51 unsigned short cwd;
52 unsigned short swd;
53 unsigned short twd; /* Note this is not the same as
54 the 32bit/x87/FSAVE twd */
55 unsigned short fop;
56 __u64 rip;
57 __u64 rdp;
58 __u32 mxcsr;
59 __u32 mxcsr_mask;
60 __u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
61 __u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */
62 __u32 padding[24];
63};
64
65/*
66 * Segment register layout in coredumps.
67 */
68struct user_regs_struct {
69 unsigned long r15;
70 unsigned long r14;
71 unsigned long r13;
72 unsigned long r12;
73 unsigned long bp;
74 unsigned long bx;
75 unsigned long r11;
76 unsigned long r10;
77 unsigned long r9;
78 unsigned long r8;
79 unsigned long ax;
80 unsigned long cx;
81 unsigned long dx;
82 unsigned long si;
83 unsigned long di;
84 unsigned long orig_ax;
85 unsigned long ip;
86 unsigned long cs;
87 unsigned long flags;
88 unsigned long sp;
89 unsigned long ss;
90 unsigned long fs_base;
91 unsigned long gs_base;
92 unsigned long ds;
93 unsigned long es;
94 unsigned long fs;
95 unsigned long gs;
96};
97
98/* When the kernel dumps core, it starts by dumping the user struct -
99 this will be used by gdb to figure out where the data and stack segments
100 are within the file, and what virtual addresses to use. */
101
102struct user {
103/* We start with the registers, to mimic the way that "memory" is returned
104 from the ptrace(3,...) function. */
105 struct user_regs_struct regs; /* Where the registers are actually stored */
106/* ptrace does not yet supply these. Someday.... */
107 int u_fpvalid; /* True if math co-processor being used. */
108 /* for this mess. Not yet used. */
109 int pad0;
110 struct user_i387_struct i387; /* Math Co-processor registers. */
111/* The rest of this junk is to help gdb figure out what goes where */
112 unsigned long int u_tsize; /* Text segment size (pages). */
113 unsigned long int u_dsize; /* Data segment size (pages). */
114 unsigned long int u_ssize; /* Stack segment size (pages). */
115 unsigned long start_code; /* Starting virtual address of text. */
116 unsigned long start_stack; /* Starting virtual address of stack area.
117 This is actually the bottom of the stack,
118 the top of the stack is always found in the
119 esp register. */
120 long int signal; /* Signal that caused the core dump. */
121 int reserved; /* No longer used */
122 int pad1;
123 unsigned long u_ar0; /* Used by gdb to help find the values for */
124 /* the registers. */
125 struct user_i387_struct *u_fpstate; /* Math Co-processor pointer. */
126 unsigned long magic; /* To uniquely identify a core file */
127 char u_comm[32]; /* User command that was responsible */
128 unsigned long u_debugreg[8];
129 unsigned long error_code; /* CPU error code or 0 */
130 unsigned long fault_address; /* CR3 or 0 */
131};
132#define NBPG PAGE_SIZE
133#define UPAGES 1
134#define HOST_TEXT_START_ADDR (u.start_code)
135#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
136
137#endif /* _ASM_X86_USER_64_H */
diff --git a/arch/x86/include/asm/uv/bios.h b/arch/x86/include/asm/uv/bios.h
new file mode 100644
index 000000000000..51cadc645e6f
--- /dev/null
+++ b/arch/x86/include/asm/uv/bios.h
@@ -0,0 +1,94 @@
1#ifndef _ASM_X86_UV_BIOS_H
2#define _ASM_X86_UV_BIOS_H
3
4/*
5 * UV BIOS layer definitions.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 * Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved.
22 * Copyright (c) Russ Anderson
23 */
24
25#include <linux/rtc.h>
26
27/*
28 * Values for the BIOS calls. It is passed as the first * argument in the
29 * BIOS call. Passing any other value in the first argument will result
30 * in a BIOS_STATUS_UNIMPLEMENTED return status.
31 */
32enum uv_bios_cmd {
33 UV_BIOS_COMMON,
34 UV_BIOS_GET_SN_INFO,
35 UV_BIOS_FREQ_BASE
36};
37
38/*
39 * Status values returned from a BIOS call.
40 */
41enum {
42 BIOS_STATUS_SUCCESS = 0,
43 BIOS_STATUS_UNIMPLEMENTED = -ENOSYS,
44 BIOS_STATUS_EINVAL = -EINVAL,
45 BIOS_STATUS_UNAVAIL = -EBUSY
46};
47
48/*
49 * The UV system table describes specific firmware
50 * capabilities available to the Linux kernel at runtime.
51 */
52struct uv_systab {
53 char signature[4]; /* must be "UVST" */
54 u32 revision; /* distinguish different firmware revs */
55 u64 function; /* BIOS runtime callback function ptr */
56};
57
58enum {
59 BIOS_FREQ_BASE_PLATFORM = 0,
60 BIOS_FREQ_BASE_INTERVAL_TIMER = 1,
61 BIOS_FREQ_BASE_REALTIME_CLOCK = 2
62};
63
64union partition_info_u {
65 u64 val;
66 struct {
67 u64 hub_version : 8,
68 partition_id : 16,
69 coherence_id : 16,
70 region_size : 24;
71 };
72};
73
74/*
75 * bios calls have 6 parameters
76 */
77extern s64 uv_bios_call(enum uv_bios_cmd, u64, u64, u64, u64, u64);
78extern s64 uv_bios_call_irqsave(enum uv_bios_cmd, u64, u64, u64, u64, u64);
79extern s64 uv_bios_call_reentrant(enum uv_bios_cmd, u64, u64, u64, u64, u64);
80
81extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *);
82extern s64 uv_bios_freq_base(u64, u64 *);
83
84extern void uv_bios_init(void);
85
86extern int uv_type;
87extern long sn_partition_id;
88extern long sn_coherency_id;
89extern long sn_region_size;
90#define partition_coherence_id() (sn_coherency_id)
91
92extern struct kobject *sgi_uv_kobj; /* /sys/firmware/sgi_uv */
93
94#endif /* _ASM_X86_UV_BIOS_H */
diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
new file mode 100644
index 000000000000..e2363253bbbf
--- /dev/null
+++ b/arch/x86/include/asm/uv/uv_bau.h
@@ -0,0 +1,332 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * SGI UV Broadcast Assist Unit definitions
7 *
8 * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved.
9 */
10
11#ifndef _ASM_X86_UV_UV_BAU_H
12#define _ASM_X86_UV_UV_BAU_H
13
14#include <linux/bitmap.h>
15#define BITSPERBYTE 8
16
17/*
18 * Broadcast Assist Unit messaging structures
19 *
20 * Selective Broadcast activations are induced by software action
21 * specifying a particular 8-descriptor "set" via a 6-bit index written
22 * to an MMR.
23 * Thus there are 64 unique 512-byte sets of SB descriptors - one set for
24 * each 6-bit index value. These descriptor sets are mapped in sequence
25 * starting with set 0 located at the address specified in the
26 * BAU_SB_DESCRIPTOR_BASE register, set 1 is located at BASE + 512,
27 * set 2 is at BASE + 2*512, set 3 at BASE + 3*512, and so on.
28 *
29 * We will use 31 sets, one for sending BAU messages from each of the 32
30 * cpu's on the node.
31 *
32 * TLB shootdown will use the first of the 8 descriptors of each set.
33 * Each of the descriptors is 64 bytes in size (8*64 = 512 bytes in a set).
34 */
35
36#define UV_ITEMS_PER_DESCRIPTOR 8
37#define UV_CPUS_PER_ACT_STATUS 32
38#define UV_ACT_STATUS_MASK 0x3
39#define UV_ACT_STATUS_SIZE 2
40#define UV_ACTIVATION_DESCRIPTOR_SIZE 32
41#define UV_DISTRIBUTION_SIZE 256
42#define UV_SW_ACK_NPENDING 8
43#define UV_NET_ENDPOINT_INTD 0x38
44#define UV_DESC_BASE_PNODE_SHIFT 49
45#define UV_PAYLOADQ_PNODE_SHIFT 49
46#define UV_PTC_BASENAME "sgi_uv/ptc_statistics"
47#define uv_physnodeaddr(x) ((__pa((unsigned long)(x)) & uv_mmask))
48
49/*
50 * bits in UVH_LB_BAU_SB_ACTIVATION_STATUS_0/1
51 */
52#define DESC_STATUS_IDLE 0
53#define DESC_STATUS_ACTIVE 1
54#define DESC_STATUS_DESTINATION_TIMEOUT 2
55#define DESC_STATUS_SOURCE_TIMEOUT 3
56
57/*
58 * source side threshholds at which message retries print a warning
59 */
60#define SOURCE_TIMEOUT_LIMIT 20
61#define DESTINATION_TIMEOUT_LIMIT 20
62
63/*
64 * number of entries in the destination side payload queue
65 */
66#define DEST_Q_SIZE 17
67/*
68 * number of destination side software ack resources
69 */
70#define DEST_NUM_RESOURCES 8
71#define MAX_CPUS_PER_NODE 32
72/*
73 * completion statuses for sending a TLB flush message
74 */
75#define FLUSH_RETRY 1
76#define FLUSH_GIVEUP 2
77#define FLUSH_COMPLETE 3
78
79/*
80 * Distribution: 32 bytes (256 bits) (bytes 0-0x1f of descriptor)
81 * If the 'multilevel' flag in the header portion of the descriptor
82 * has been set to 0, then endpoint multi-unicast mode is selected.
83 * The distribution specification (32 bytes) is interpreted as a 256-bit
84 * distribution vector. Adjacent bits correspond to consecutive even numbered
85 * nodeIDs. The result of adding the index of a given bit to the 15-bit
86 * 'base_dest_nodeid' field of the header corresponds to the
87 * destination nodeID associated with that specified bit.
88 */
89struct bau_target_nodemask {
90 unsigned long bits[BITS_TO_LONGS(256)];
91};
92
93/*
94 * mask of cpu's on a node
95 * (during initialization we need to check that unsigned long has
96 * enough bits for max. cpu's per node)
97 */
98struct bau_local_cpumask {
99 unsigned long bits;
100};
101
102/*
103 * Payload: 16 bytes (128 bits) (bytes 0x20-0x2f of descriptor)
104 * only 12 bytes (96 bits) of the payload area are usable.
105 * An additional 3 bytes (bits 27:4) of the header address are carried
106 * to the next bytes of the destination payload queue.
107 * And an additional 2 bytes of the header Suppl_A field are also
108 * carried to the destination payload queue.
109 * But the first byte of the Suppl_A becomes bits 127:120 (the 16th byte)
110 * of the destination payload queue, which is written by the hardware
111 * with the s/w ack resource bit vector.
112 * [ effective message contents (16 bytes (128 bits) maximum), not counting
113 * the s/w ack bit vector ]
114 */
115
116/*
117 * The payload is software-defined for INTD transactions
118 */
119struct bau_msg_payload {
120 unsigned long address; /* signifies a page or all TLB's
121 of the cpu */
122 /* 64 bits */
123 unsigned short sending_cpu; /* filled in by sender */
124 /* 16 bits */
125 unsigned short acknowledge_count;/* filled in by destination */
126 /* 16 bits */
127 unsigned int reserved1:32; /* not usable */
128};
129
130
131/*
132 * Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
133 * see table 4.2.3.0.1 in broacast_assist spec.
134 */
135struct bau_msg_header {
136 int dest_subnodeid:6; /* must be zero */
137 /* bits 5:0 */
138 int base_dest_nodeid:15; /* nasid>>1 (pnode) of first bit in node_map */
139 /* bits 20:6 */
140 int command:8; /* message type */
141 /* bits 28:21 */
142 /* 0x38: SN3net EndPoint Message */
143 int rsvd_1:3; /* must be zero */
144 /* bits 31:29 */
145 /* int will align on 32 bits */
146 int rsvd_2:9; /* must be zero */
147 /* bits 40:32 */
148 /* Suppl_A is 56-41 */
149 int payload_2a:8; /* becomes byte 16 of msg */
150 /* bits 48:41 */ /* not currently using */
151 int payload_2b:8; /* becomes byte 17 of msg */
152 /* bits 56:49 */ /* not currently using */
153 /* Address field (96:57) is never used as an
154 address (these are address bits 42:3) */
155 int rsvd_3:1; /* must be zero */
156 /* bit 57 */
157 /* address bits 27:4 are payload */
158 /* these 24 bits become bytes 12-14 of msg */
159 int replied_to:1; /* sent as 0 by the source to byte 12 */
160 /* bit 58 */
161
162 int payload_1a:5; /* not currently used */
163 /* bits 63:59 */
164 int payload_1b:8; /* not currently used */
165 /* bits 71:64 */
166 int payload_1c:8; /* not currently used */
167 /* bits 79:72 */
168 int payload_1d:2; /* not currently used */
169 /* bits 81:80 */
170
171 int rsvd_4:7; /* must be zero */
172 /* bits 88:82 */
173 int sw_ack_flag:1; /* software acknowledge flag */
174 /* bit 89 */
175 /* INTD trasactions at destination are to
176 wait for software acknowledge */
177 int rsvd_5:6; /* must be zero */
178 /* bits 95:90 */
179 int rsvd_6:5; /* must be zero */
180 /* bits 100:96 */
181 int int_both:1; /* if 1, interrupt both sockets on the blade */
182 /* bit 101*/
183 int fairness:3; /* usually zero */
184 /* bits 104:102 */
185 int multilevel:1; /* multi-level multicast format */
186 /* bit 105 */
187 /* 0 for TLB: endpoint multi-unicast messages */
188 int chaining:1; /* next descriptor is part of this activation*/
189 /* bit 106 */
190 int rsvd_7:21; /* must be zero */
191 /* bits 127:107 */
192};
193
194/*
195 * The activation descriptor:
196 * The format of the message to send, plus all accompanying control
197 * Should be 64 bytes
198 */
199struct bau_desc {
200 struct bau_target_nodemask distribution;
201 /*
202 * message template, consisting of header and payload:
203 */
204 struct bau_msg_header header;
205 struct bau_msg_payload payload;
206};
207/*
208 * -payload-- ---------header------
209 * bytes 0-11 bits 41-56 bits 58-81
210 * A B (2) C (3)
211 *
212 * A/B/C are moved to:
213 * A C B
214 * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)
215 * ------------payload queue-----------
216 */
217
218/*
219 * The payload queue on the destination side is an array of these.
220 * With BAU_MISC_CONTROL set for software acknowledge mode, the messages
221 * are 32 bytes (2 micropackets) (256 bits) in length, but contain only 17
222 * bytes of usable data, including the sw ack vector in byte 15 (bits 127:120)
223 * (12 bytes come from bau_msg_payload, 3 from payload_1, 2 from
224 * sw_ack_vector and payload_2)
225 * "Enabling Software Acknowledgment mode (see Section 4.3.3 Software
226 * Acknowledge Processing) also selects 32 byte (17 bytes usable) payload
227 * operation."
228 */
229struct bau_payload_queue_entry {
230 unsigned long address; /* signifies a page or all TLB's
231 of the cpu */
232 /* 64 bits, bytes 0-7 */
233
234 unsigned short sending_cpu; /* cpu that sent the message */
235 /* 16 bits, bytes 8-9 */
236
237 unsigned short acknowledge_count; /* filled in by destination */
238 /* 16 bits, bytes 10-11 */
239
240 unsigned short replied_to:1; /* sent as 0 by the source */
241 /* 1 bit */
242 unsigned short unused1:7; /* not currently using */
243 /* 7 bits: byte 12) */
244
245 unsigned char unused2[2]; /* not currently using */
246 /* bytes 13-14 */
247
248 unsigned char sw_ack_vector; /* filled in by the hardware */
249 /* byte 15 (bits 127:120) */
250
251 unsigned char unused4[3]; /* not currently using bytes 17-19 */
252 /* bytes 17-19 */
253
254 int number_of_cpus; /* filled in at destination */
255 /* 32 bits, bytes 20-23 (aligned) */
256
257 unsigned char unused5[8]; /* not using */
258 /* bytes 24-31 */
259};
260
261/*
262 * one for every slot in the destination payload queue
263 */
264struct bau_msg_status {
265 struct bau_local_cpumask seen_by; /* map of cpu's */
266};
267
268/*
269 * one for every slot in the destination software ack resources
270 */
271struct bau_sw_ack_status {
272 struct bau_payload_queue_entry *msg; /* associated message */
273 int watcher; /* cpu monitoring, or -1 */
274};
275
276/*
277 * one on every node and per-cpu; to locate the software tables
278 */
279struct bau_control {
280 struct bau_desc *descriptor_base;
281 struct bau_payload_queue_entry *bau_msg_head;
282 struct bau_payload_queue_entry *va_queue_first;
283 struct bau_payload_queue_entry *va_queue_last;
284 struct bau_msg_status *msg_statuses;
285 int *watching; /* pointer to array */
286};
287
288/*
289 * This structure is allocated per_cpu for UV TLB shootdown statistics.
290 */
291struct ptc_stats {
292 unsigned long ptc_i; /* number of IPI-style flushes */
293 unsigned long requestor; /* number of nodes this cpu sent to */
294 unsigned long requestee; /* times cpu was remotely requested */
295 unsigned long alltlb; /* times all tlb's on this cpu were flushed */
296 unsigned long onetlb; /* times just one tlb on this cpu was flushed */
297 unsigned long s_retry; /* retries on source side timeouts */
298 unsigned long d_retry; /* retries on destination side timeouts */
299 unsigned long sflush; /* cycles spent in uv_flush_tlb_others */
300 unsigned long dflush; /* cycles spent on destination side */
301 unsigned long retriesok; /* successes on retries */
302 unsigned long nomsg; /* interrupts with no message */
303 unsigned long multmsg; /* interrupts with multiple messages */
304 unsigned long ntargeted;/* nodes targeted */
305};
306
307static inline int bau_node_isset(int node, struct bau_target_nodemask *dstp)
308{
309 return constant_test_bit(node, &dstp->bits[0]);
310}
311static inline void bau_node_set(int node, struct bau_target_nodemask *dstp)
312{
313 __set_bit(node, &dstp->bits[0]);
314}
315static inline void bau_nodes_clear(struct bau_target_nodemask *dstp, int nbits)
316{
317 bitmap_zero(&dstp->bits[0], nbits);
318}
319
320static inline void bau_cpubits_clear(struct bau_local_cpumask *dstp, int nbits)
321{
322 bitmap_zero(&dstp->bits, nbits);
323}
324
325#define cpubit_isset(cpu, bau_local_cpumask) \
326 test_bit((cpu), (bau_local_cpumask).bits)
327
328extern int uv_flush_tlb_others(cpumask_t *, struct mm_struct *, unsigned long);
329extern void uv_bau_message_intr1(void);
330extern void uv_bau_timeout_intr1(void);
331
332#endif /* _ASM_X86_UV_UV_BAU_H */
diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
new file mode 100644
index 000000000000..c6ad93e315c8
--- /dev/null
+++ b/arch/x86/include/asm/uv/uv_hub.h
@@ -0,0 +1,354 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * SGI UV architectural definitions
7 *
8 * Copyright (C) 2007-2008 Silicon Graphics, Inc. All rights reserved.
9 */
10
11#ifndef _ASM_X86_UV_UV_HUB_H
12#define _ASM_X86_UV_UV_HUB_H
13
14#include <linux/numa.h>
15#include <linux/percpu.h>
16#include <asm/types.h>
17#include <asm/percpu.h>
18
19
20/*
21 * Addressing Terminology
22 *
23 * M - The low M bits of a physical address represent the offset
24 * into the blade local memory. RAM memory on a blade is physically
25 * contiguous (although various IO spaces may punch holes in
26 * it)..
27 *
28 * N - Number of bits in the node portion of a socket physical
29 * address.
30 *
31 * NASID - network ID of a router, Mbrick or Cbrick. Nasid values of
32 * routers always have low bit of 1, C/MBricks have low bit
33 * equal to 0. Most addressing macros that target UV hub chips
34 * right shift the NASID by 1 to exclude the always-zero bit.
35 * NASIDs contain up to 15 bits.
36 *
37 * GNODE - NASID right shifted by 1 bit. Most mmrs contain gnodes instead
38 * of nasids.
39 *
40 * PNODE - the low N bits of the GNODE. The PNODE is the most useful variant
41 * of the nasid for socket usage.
42 *
43 *
44 * NumaLink Global Physical Address Format:
45 * +--------------------------------+---------------------+
46 * |00..000| GNODE | NodeOffset |
47 * +--------------------------------+---------------------+
48 * |<-------53 - M bits --->|<--------M bits ----->
49 *
50 * M - number of node offset bits (35 .. 40)
51 *
52 *
53 * Memory/UV-HUB Processor Socket Address Format:
54 * +----------------+---------------+---------------------+
55 * |00..000000000000| PNODE | NodeOffset |
56 * +----------------+---------------+---------------------+
57 * <--- N bits --->|<--------M bits ----->
58 *
59 * M - number of node offset bits (35 .. 40)
60 * N - number of PNODE bits (0 .. 10)
61 *
62 * Note: M + N cannot currently exceed 44 (x86_64) or 46 (IA64).
63 * The actual values are configuration dependent and are set at
64 * boot time. M & N values are set by the hardware/BIOS at boot.
65 *
66 *
67 * APICID format
68 * NOTE!!!!!! This is the current format of the APICID. However, code
69 * should assume that this will change in the future. Use functions
70 * in this file for all APICID bit manipulations and conversion.
71 *
72 * 1111110000000000
73 * 5432109876543210
74 * pppppppppplc0cch
75 * sssssssssss
76 *
77 * p = pnode bits
78 * l = socket number on board
79 * c = core
80 * h = hyperthread
81 * s = bits that are in the SOCKET_ID CSR
82 *
83 * Note: Processor only supports 12 bits in the APICID register. The ACPI
84 * tables hold all 16 bits. Software needs to be aware of this.
85 *
86 * Unless otherwise specified, all references to APICID refer to
87 * the FULL value contained in ACPI tables, not the subset in the
88 * processor APICID register.
89 */
90
91
92/*
93 * Maximum number of bricks in all partitions and in all coherency domains.
94 * This is the total number of bricks accessible in the numalink fabric. It
95 * includes all C & M bricks. Routers are NOT included.
96 *
97 * This value is also the value of the maximum number of non-router NASIDs
98 * in the numalink fabric.
99 *
100 * NOTE: a brick may contain 1 or 2 OS nodes. Don't get these confused.
101 */
102#define UV_MAX_NUMALINK_BLADES 16384
103
104/*
105 * Maximum number of C/Mbricks within a software SSI (hardware may support
106 * more).
107 */
108#define UV_MAX_SSI_BLADES 256
109
110/*
111 * The largest possible NASID of a C or M brick (+ 2)
112 */
113#define UV_MAX_NASID_VALUE (UV_MAX_NUMALINK_NODES * 2)
114
115/*
116 * The following defines attributes of the HUB chip. These attributes are
117 * frequently referenced and are kept in the per-cpu data areas of each cpu.
118 * They are kept together in a struct to minimize cache misses.
119 */
120struct uv_hub_info_s {
121 unsigned long global_mmr_base;
122 unsigned long gpa_mask;
123 unsigned long gnode_upper;
124 unsigned long lowmem_remap_top;
125 unsigned long lowmem_remap_base;
126 unsigned short pnode;
127 unsigned short pnode_mask;
128 unsigned short coherency_domain_number;
129 unsigned short numa_blade_id;
130 unsigned char blade_processor_id;
131 unsigned char m_val;
132 unsigned char n_val;
133};
134DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
135#define uv_hub_info (&__get_cpu_var(__uv_hub_info))
136#define uv_cpu_hub_info(cpu) (&per_cpu(__uv_hub_info, cpu))
137
138/*
139 * Local & Global MMR space macros.
140 * Note: macros are intended to be used ONLY by inline functions
141 * in this file - not by other kernel code.
142 * n - NASID (full 15-bit global nasid)
143 * g - GNODE (full 15-bit global nasid, right shifted 1)
144 * p - PNODE (local part of nsids, right shifted 1)
145 */
146#define UV_NASID_TO_PNODE(n) (((n) >> 1) & uv_hub_info->pnode_mask)
147#define UV_PNODE_TO_NASID(p) (((p) << 1) | uv_hub_info->gnode_upper)
148
149#define UV_LOCAL_MMR_BASE 0xf4000000UL
150#define UV_GLOBAL_MMR32_BASE 0xf8000000UL
151#define UV_GLOBAL_MMR64_BASE (uv_hub_info->global_mmr_base)
152#define UV_LOCAL_MMR_SIZE (64UL * 1024 * 1024)
153#define UV_GLOBAL_MMR32_SIZE (64UL * 1024 * 1024)
154
155#define UV_GLOBAL_MMR32_PNODE_SHIFT 15
156#define UV_GLOBAL_MMR64_PNODE_SHIFT 26
157
158#define UV_GLOBAL_MMR32_PNODE_BITS(p) ((p) << (UV_GLOBAL_MMR32_PNODE_SHIFT))
159
160#define UV_GLOBAL_MMR64_PNODE_BITS(p) \
161 ((unsigned long)(p) << UV_GLOBAL_MMR64_PNODE_SHIFT)
162
163#define UV_APIC_PNODE_SHIFT 6
164
165/*
166 * Macros for converting between kernel virtual addresses, socket local physical
167 * addresses, and UV global physical addresses.
168 * Note: use the standard __pa() & __va() macros for converting
169 * between socket virtual and socket physical addresses.
170 */
171
172/* socket phys RAM --> UV global physical address */
173static inline unsigned long uv_soc_phys_ram_to_gpa(unsigned long paddr)
174{
175 if (paddr < uv_hub_info->lowmem_remap_top)
176 paddr += uv_hub_info->lowmem_remap_base;
177 return paddr | uv_hub_info->gnode_upper;
178}
179
180
181/* socket virtual --> UV global physical address */
182static inline unsigned long uv_gpa(void *v)
183{
184 return __pa(v) | uv_hub_info->gnode_upper;
185}
186
187/* socket virtual --> UV global physical address */
188static inline void *uv_vgpa(void *v)
189{
190 return (void *)uv_gpa(v);
191}
192
193/* UV global physical address --> socket virtual */
194static inline void *uv_va(unsigned long gpa)
195{
196 return __va(gpa & uv_hub_info->gpa_mask);
197}
198
199/* pnode, offset --> socket virtual */
200static inline void *uv_pnode_offset_to_vaddr(int pnode, unsigned long offset)
201{
202 return __va(((unsigned long)pnode << uv_hub_info->m_val) | offset);
203}
204
205
206/*
207 * Extract a PNODE from an APICID (full apicid, not processor subset)
208 */
209static inline int uv_apicid_to_pnode(int apicid)
210{
211 return (apicid >> UV_APIC_PNODE_SHIFT);
212}
213
214/*
215 * Access global MMRs using the low memory MMR32 space. This region supports
216 * faster MMR access but not all MMRs are accessible in this space.
217 */
218static inline unsigned long *uv_global_mmr32_address(int pnode,
219 unsigned long offset)
220{
221 return __va(UV_GLOBAL_MMR32_BASE |
222 UV_GLOBAL_MMR32_PNODE_BITS(pnode) | offset);
223}
224
225static inline void uv_write_global_mmr32(int pnode, unsigned long offset,
226 unsigned long val)
227{
228 *uv_global_mmr32_address(pnode, offset) = val;
229}
230
231static inline unsigned long uv_read_global_mmr32(int pnode,
232 unsigned long offset)
233{
234 return *uv_global_mmr32_address(pnode, offset);
235}
236
237/*
238 * Access Global MMR space using the MMR space located at the top of physical
239 * memory.
240 */
241static inline unsigned long *uv_global_mmr64_address(int pnode,
242 unsigned long offset)
243{
244 return __va(UV_GLOBAL_MMR64_BASE |
245 UV_GLOBAL_MMR64_PNODE_BITS(pnode) | offset);
246}
247
248static inline void uv_write_global_mmr64(int pnode, unsigned long offset,
249 unsigned long val)
250{
251 *uv_global_mmr64_address(pnode, offset) = val;
252}
253
254static inline unsigned long uv_read_global_mmr64(int pnode,
255 unsigned long offset)
256{
257 return *uv_global_mmr64_address(pnode, offset);
258}
259
260/*
261 * Access hub local MMRs. Faster than using global space but only local MMRs
262 * are accessible.
263 */
264static inline unsigned long *uv_local_mmr_address(unsigned long offset)
265{
266 return __va(UV_LOCAL_MMR_BASE | offset);
267}
268
269static inline unsigned long uv_read_local_mmr(unsigned long offset)
270{
271 return *uv_local_mmr_address(offset);
272}
273
274static inline void uv_write_local_mmr(unsigned long offset, unsigned long val)
275{
276 *uv_local_mmr_address(offset) = val;
277}
278
279/*
280 * Structures and definitions for converting between cpu, node, pnode, and blade
281 * numbers.
282 */
283struct uv_blade_info {
284 unsigned short nr_possible_cpus;
285 unsigned short nr_online_cpus;
286 unsigned short pnode;
287};
288extern struct uv_blade_info *uv_blade_info;
289extern short *uv_node_to_blade;
290extern short *uv_cpu_to_blade;
291extern short uv_possible_blades;
292
293/* Blade-local cpu number of current cpu. Numbered 0 .. <# cpus on the blade> */
294static inline int uv_blade_processor_id(void)
295{
296 return uv_hub_info->blade_processor_id;
297}
298
299/* Blade number of current cpu. Numnbered 0 .. <#blades -1> */
300static inline int uv_numa_blade_id(void)
301{
302 return uv_hub_info->numa_blade_id;
303}
304
305/* Convert a cpu number to the the UV blade number */
306static inline int uv_cpu_to_blade_id(int cpu)
307{
308 return uv_cpu_to_blade[cpu];
309}
310
311/* Convert linux node number to the UV blade number */
312static inline int uv_node_to_blade_id(int nid)
313{
314 return uv_node_to_blade[nid];
315}
316
317/* Convert a blade id to the PNODE of the blade */
318static inline int uv_blade_to_pnode(int bid)
319{
320 return uv_blade_info[bid].pnode;
321}
322
323/* Determine the number of possible cpus on a blade */
324static inline int uv_blade_nr_possible_cpus(int bid)
325{
326 return uv_blade_info[bid].nr_possible_cpus;
327}
328
329/* Determine the number of online cpus on a blade */
330static inline int uv_blade_nr_online_cpus(int bid)
331{
332 return uv_blade_info[bid].nr_online_cpus;
333}
334
335/* Convert a cpu id to the PNODE of the blade containing the cpu */
336static inline int uv_cpu_to_pnode(int cpu)
337{
338 return uv_blade_info[uv_cpu_to_blade_id(cpu)].pnode;
339}
340
341/* Convert a linux node number to the PNODE of the blade */
342static inline int uv_node_to_pnode(int nid)
343{
344 return uv_blade_info[uv_node_to_blade_id(nid)].pnode;
345}
346
347/* Maximum possible number of blades */
348static inline int uv_num_possible_blades(void)
349{
350 return uv_possible_blades;
351}
352
353#endif /* _ASM_X86_UV_UV_HUB_H */
354
diff --git a/arch/x86/include/asm/uv/uv_irq.h b/arch/x86/include/asm/uv/uv_irq.h
new file mode 100644
index 000000000000..9613c8c0b647
--- /dev/null
+++ b/arch/x86/include/asm/uv/uv_irq.h
@@ -0,0 +1,36 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * SGI UV IRQ definitions
7 *
8 * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved.
9 */
10
11#ifndef _ASM_X86_UV_UV_IRQ_H
12#define _ASM_X86_UV_UV_IRQ_H
13
14/* If a generic version of this structure gets defined, eliminate this one. */
15struct uv_IO_APIC_route_entry {
16 __u64 vector : 8,
17 delivery_mode : 3,
18 dest_mode : 1,
19 delivery_status : 1,
20 polarity : 1,
21 __reserved_1 : 1,
22 trigger : 1,
23 mask : 1,
24 __reserved_2 : 15,
25 dest : 32;
26};
27
28extern struct irq_chip uv_irq_chip;
29
30extern int arch_enable_uv_irq(char *, unsigned int, int, int, unsigned long);
31extern void arch_disable_uv_irq(int, unsigned long);
32
33extern int uv_setup_irq(char *, int, int, unsigned long);
34extern void uv_teardown_irq(unsigned int, int, unsigned long);
35
36#endif /* _ASM_X86_UV_UV_IRQ_H */
diff --git a/arch/x86/include/asm/uv/uv_mmrs.h b/arch/x86/include/asm/uv/uv_mmrs.h
new file mode 100644
index 000000000000..dd627793a234
--- /dev/null
+++ b/arch/x86/include/asm/uv/uv_mmrs.h
@@ -0,0 +1,1295 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * SGI UV MMR definitions
7 *
8 * Copyright (C) 2007-2008 Silicon Graphics, Inc. All rights reserved.
9 */
10
11#ifndef _ASM_X86_UV_UV_MMRS_H
12#define _ASM_X86_UV_UV_MMRS_H
13
14#define UV_MMR_ENABLE (1UL << 63)
15
16/* ========================================================================= */
17/* UVH_BAU_DATA_CONFIG */
18/* ========================================================================= */
19#define UVH_BAU_DATA_CONFIG 0x61680UL
20#define UVH_BAU_DATA_CONFIG_32 0x0438
21
22#define UVH_BAU_DATA_CONFIG_VECTOR_SHFT 0
23#define UVH_BAU_DATA_CONFIG_VECTOR_MASK 0x00000000000000ffUL
24#define UVH_BAU_DATA_CONFIG_DM_SHFT 8
25#define UVH_BAU_DATA_CONFIG_DM_MASK 0x0000000000000700UL
26#define UVH_BAU_DATA_CONFIG_DESTMODE_SHFT 11
27#define UVH_BAU_DATA_CONFIG_DESTMODE_MASK 0x0000000000000800UL
28#define UVH_BAU_DATA_CONFIG_STATUS_SHFT 12
29#define UVH_BAU_DATA_CONFIG_STATUS_MASK 0x0000000000001000UL
30#define UVH_BAU_DATA_CONFIG_P_SHFT 13
31#define UVH_BAU_DATA_CONFIG_P_MASK 0x0000000000002000UL
32#define UVH_BAU_DATA_CONFIG_T_SHFT 15
33#define UVH_BAU_DATA_CONFIG_T_MASK 0x0000000000008000UL
34#define UVH_BAU_DATA_CONFIG_M_SHFT 16
35#define UVH_BAU_DATA_CONFIG_M_MASK 0x0000000000010000UL
36#define UVH_BAU_DATA_CONFIG_APIC_ID_SHFT 32
37#define UVH_BAU_DATA_CONFIG_APIC_ID_MASK 0xffffffff00000000UL
38
39union uvh_bau_data_config_u {
40 unsigned long v;
41 struct uvh_bau_data_config_s {
42 unsigned long vector_ : 8; /* RW */
43 unsigned long dm : 3; /* RW */
44 unsigned long destmode : 1; /* RW */
45 unsigned long status : 1; /* RO */
46 unsigned long p : 1; /* RO */
47 unsigned long rsvd_14 : 1; /* */
48 unsigned long t : 1; /* RO */
49 unsigned long m : 1; /* RW */
50 unsigned long rsvd_17_31: 15; /* */
51 unsigned long apic_id : 32; /* RW */
52 } s;
53};
54
55/* ========================================================================= */
56/* UVH_EVENT_OCCURRED0 */
57/* ========================================================================= */
58#define UVH_EVENT_OCCURRED0 0x70000UL
59#define UVH_EVENT_OCCURRED0_32 0x005e8
60
61#define UVH_EVENT_OCCURRED0_LB_HCERR_SHFT 0
62#define UVH_EVENT_OCCURRED0_LB_HCERR_MASK 0x0000000000000001UL
63#define UVH_EVENT_OCCURRED0_GR0_HCERR_SHFT 1
64#define UVH_EVENT_OCCURRED0_GR0_HCERR_MASK 0x0000000000000002UL
65#define UVH_EVENT_OCCURRED0_GR1_HCERR_SHFT 2
66#define UVH_EVENT_OCCURRED0_GR1_HCERR_MASK 0x0000000000000004UL
67#define UVH_EVENT_OCCURRED0_LH_HCERR_SHFT 3
68#define UVH_EVENT_OCCURRED0_LH_HCERR_MASK 0x0000000000000008UL
69#define UVH_EVENT_OCCURRED0_RH_HCERR_SHFT 4
70#define UVH_EVENT_OCCURRED0_RH_HCERR_MASK 0x0000000000000010UL
71#define UVH_EVENT_OCCURRED0_XN_HCERR_SHFT 5
72#define UVH_EVENT_OCCURRED0_XN_HCERR_MASK 0x0000000000000020UL
73#define UVH_EVENT_OCCURRED0_SI_HCERR_SHFT 6
74#define UVH_EVENT_OCCURRED0_SI_HCERR_MASK 0x0000000000000040UL
75#define UVH_EVENT_OCCURRED0_LB_AOERR0_SHFT 7
76#define UVH_EVENT_OCCURRED0_LB_AOERR0_MASK 0x0000000000000080UL
77#define UVH_EVENT_OCCURRED0_GR0_AOERR0_SHFT 8
78#define UVH_EVENT_OCCURRED0_GR0_AOERR0_MASK 0x0000000000000100UL
79#define UVH_EVENT_OCCURRED0_GR1_AOERR0_SHFT 9
80#define UVH_EVENT_OCCURRED0_GR1_AOERR0_MASK 0x0000000000000200UL
81#define UVH_EVENT_OCCURRED0_LH_AOERR0_SHFT 10
82#define UVH_EVENT_OCCURRED0_LH_AOERR0_MASK 0x0000000000000400UL
83#define UVH_EVENT_OCCURRED0_RH_AOERR0_SHFT 11
84#define UVH_EVENT_OCCURRED0_RH_AOERR0_MASK 0x0000000000000800UL
85#define UVH_EVENT_OCCURRED0_XN_AOERR0_SHFT 12
86#define UVH_EVENT_OCCURRED0_XN_AOERR0_MASK 0x0000000000001000UL
87#define UVH_EVENT_OCCURRED0_SI_AOERR0_SHFT 13
88#define UVH_EVENT_OCCURRED0_SI_AOERR0_MASK 0x0000000000002000UL
89#define UVH_EVENT_OCCURRED0_LB_AOERR1_SHFT 14
90#define UVH_EVENT_OCCURRED0_LB_AOERR1_MASK 0x0000000000004000UL
91#define UVH_EVENT_OCCURRED0_GR0_AOERR1_SHFT 15
92#define UVH_EVENT_OCCURRED0_GR0_AOERR1_MASK 0x0000000000008000UL
93#define UVH_EVENT_OCCURRED0_GR1_AOERR1_SHFT 16
94#define UVH_EVENT_OCCURRED0_GR1_AOERR1_MASK 0x0000000000010000UL
95#define UVH_EVENT_OCCURRED0_LH_AOERR1_SHFT 17
96#define UVH_EVENT_OCCURRED0_LH_AOERR1_MASK 0x0000000000020000UL
97#define UVH_EVENT_OCCURRED0_RH_AOERR1_SHFT 18
98#define UVH_EVENT_OCCURRED0_RH_AOERR1_MASK 0x0000000000040000UL
99#define UVH_EVENT_OCCURRED0_XN_AOERR1_SHFT 19
100#define UVH_EVENT_OCCURRED0_XN_AOERR1_MASK 0x0000000000080000UL
101#define UVH_EVENT_OCCURRED0_SI_AOERR1_SHFT 20
102#define UVH_EVENT_OCCURRED0_SI_AOERR1_MASK 0x0000000000100000UL
103#define UVH_EVENT_OCCURRED0_RH_VPI_INT_SHFT 21
104#define UVH_EVENT_OCCURRED0_RH_VPI_INT_MASK 0x0000000000200000UL
105#define UVH_EVENT_OCCURRED0_SYSTEM_SHUTDOWN_INT_SHFT 22
106#define UVH_EVENT_OCCURRED0_SYSTEM_SHUTDOWN_INT_MASK 0x0000000000400000UL
107#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_0_SHFT 23
108#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_0_MASK 0x0000000000800000UL
109#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_1_SHFT 24
110#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_1_MASK 0x0000000001000000UL
111#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_2_SHFT 25
112#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_2_MASK 0x0000000002000000UL
113#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_3_SHFT 26
114#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_3_MASK 0x0000000004000000UL
115#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_4_SHFT 27
116#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_4_MASK 0x0000000008000000UL
117#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_5_SHFT 28
118#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_5_MASK 0x0000000010000000UL
119#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_6_SHFT 29
120#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_6_MASK 0x0000000020000000UL
121#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_7_SHFT 30
122#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_7_MASK 0x0000000040000000UL
123#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_8_SHFT 31
124#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_8_MASK 0x0000000080000000UL
125#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_9_SHFT 32
126#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_9_MASK 0x0000000100000000UL
127#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_10_SHFT 33
128#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_10_MASK 0x0000000200000000UL
129#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_11_SHFT 34
130#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_11_MASK 0x0000000400000000UL
131#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_12_SHFT 35
132#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_12_MASK 0x0000000800000000UL
133#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_13_SHFT 36
134#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_13_MASK 0x0000001000000000UL
135#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_14_SHFT 37
136#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_14_MASK 0x0000002000000000UL
137#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_15_SHFT 38
138#define UVH_EVENT_OCCURRED0_LB_IRQ_INT_15_MASK 0x0000004000000000UL
139#define UVH_EVENT_OCCURRED0_L1_NMI_INT_SHFT 39
140#define UVH_EVENT_OCCURRED0_L1_NMI_INT_MASK 0x0000008000000000UL
141#define UVH_EVENT_OCCURRED0_STOP_CLOCK_SHFT 40
142#define UVH_EVENT_OCCURRED0_STOP_CLOCK_MASK 0x0000010000000000UL
143#define UVH_EVENT_OCCURRED0_ASIC_TO_L1_SHFT 41
144#define UVH_EVENT_OCCURRED0_ASIC_TO_L1_MASK 0x0000020000000000UL
145#define UVH_EVENT_OCCURRED0_L1_TO_ASIC_SHFT 42
146#define UVH_EVENT_OCCURRED0_L1_TO_ASIC_MASK 0x0000040000000000UL
147#define UVH_EVENT_OCCURRED0_LTC_INT_SHFT 43
148#define UVH_EVENT_OCCURRED0_LTC_INT_MASK 0x0000080000000000UL
149#define UVH_EVENT_OCCURRED0_LA_SEQ_TRIGGER_SHFT 44
150#define UVH_EVENT_OCCURRED0_LA_SEQ_TRIGGER_MASK 0x0000100000000000UL
151#define UVH_EVENT_OCCURRED0_IPI_INT_SHFT 45
152#define UVH_EVENT_OCCURRED0_IPI_INT_MASK 0x0000200000000000UL
153#define UVH_EVENT_OCCURRED0_EXTIO_INT0_SHFT 46
154#define UVH_EVENT_OCCURRED0_EXTIO_INT0_MASK 0x0000400000000000UL
155#define UVH_EVENT_OCCURRED0_EXTIO_INT1_SHFT 47
156#define UVH_EVENT_OCCURRED0_EXTIO_INT1_MASK 0x0000800000000000UL
157#define UVH_EVENT_OCCURRED0_EXTIO_INT2_SHFT 48
158#define UVH_EVENT_OCCURRED0_EXTIO_INT2_MASK 0x0001000000000000UL
159#define UVH_EVENT_OCCURRED0_EXTIO_INT3_SHFT 49
160#define UVH_EVENT_OCCURRED0_EXTIO_INT3_MASK 0x0002000000000000UL
161#define UVH_EVENT_OCCURRED0_PROFILE_INT_SHFT 50
162#define UVH_EVENT_OCCURRED0_PROFILE_INT_MASK 0x0004000000000000UL
163#define UVH_EVENT_OCCURRED0_RTC0_SHFT 51
164#define UVH_EVENT_OCCURRED0_RTC0_MASK 0x0008000000000000UL
165#define UVH_EVENT_OCCURRED0_RTC1_SHFT 52
166#define UVH_EVENT_OCCURRED0_RTC1_MASK 0x0010000000000000UL
167#define UVH_EVENT_OCCURRED0_RTC2_SHFT 53
168#define UVH_EVENT_OCCURRED0_RTC2_MASK 0x0020000000000000UL
169#define UVH_EVENT_OCCURRED0_RTC3_SHFT 54
170#define UVH_EVENT_OCCURRED0_RTC3_MASK 0x0040000000000000UL
171#define UVH_EVENT_OCCURRED0_BAU_DATA_SHFT 55
172#define UVH_EVENT_OCCURRED0_BAU_DATA_MASK 0x0080000000000000UL
173#define UVH_EVENT_OCCURRED0_POWER_MANAGEMENT_REQ_SHFT 56
174#define UVH_EVENT_OCCURRED0_POWER_MANAGEMENT_REQ_MASK 0x0100000000000000UL
175union uvh_event_occurred0_u {
176 unsigned long v;
177 struct uvh_event_occurred0_s {
178 unsigned long lb_hcerr : 1; /* RW, W1C */
179 unsigned long gr0_hcerr : 1; /* RW, W1C */
180 unsigned long gr1_hcerr : 1; /* RW, W1C */
181 unsigned long lh_hcerr : 1; /* RW, W1C */
182 unsigned long rh_hcerr : 1; /* RW, W1C */
183 unsigned long xn_hcerr : 1; /* RW, W1C */
184 unsigned long si_hcerr : 1; /* RW, W1C */
185 unsigned long lb_aoerr0 : 1; /* RW, W1C */
186 unsigned long gr0_aoerr0 : 1; /* RW, W1C */
187 unsigned long gr1_aoerr0 : 1; /* RW, W1C */
188 unsigned long lh_aoerr0 : 1; /* RW, W1C */
189 unsigned long rh_aoerr0 : 1; /* RW, W1C */
190 unsigned long xn_aoerr0 : 1; /* RW, W1C */
191 unsigned long si_aoerr0 : 1; /* RW, W1C */
192 unsigned long lb_aoerr1 : 1; /* RW, W1C */
193 unsigned long gr0_aoerr1 : 1; /* RW, W1C */
194 unsigned long gr1_aoerr1 : 1; /* RW, W1C */
195 unsigned long lh_aoerr1 : 1; /* RW, W1C */
196 unsigned long rh_aoerr1 : 1; /* RW, W1C */
197 unsigned long xn_aoerr1 : 1; /* RW, W1C */
198 unsigned long si_aoerr1 : 1; /* RW, W1C */
199 unsigned long rh_vpi_int : 1; /* RW, W1C */
200 unsigned long system_shutdown_int : 1; /* RW, W1C */
201 unsigned long lb_irq_int_0 : 1; /* RW, W1C */
202 unsigned long lb_irq_int_1 : 1; /* RW, W1C */
203 unsigned long lb_irq_int_2 : 1; /* RW, W1C */
204 unsigned long lb_irq_int_3 : 1; /* RW, W1C */
205 unsigned long lb_irq_int_4 : 1; /* RW, W1C */
206 unsigned long lb_irq_int_5 : 1; /* RW, W1C */
207 unsigned long lb_irq_int_6 : 1; /* RW, W1C */
208 unsigned long lb_irq_int_7 : 1; /* RW, W1C */
209 unsigned long lb_irq_int_8 : 1; /* RW, W1C */
210 unsigned long lb_irq_int_9 : 1; /* RW, W1C */
211 unsigned long lb_irq_int_10 : 1; /* RW, W1C */
212 unsigned long lb_irq_int_11 : 1; /* RW, W1C */
213 unsigned long lb_irq_int_12 : 1; /* RW, W1C */
214 unsigned long lb_irq_int_13 : 1; /* RW, W1C */
215 unsigned long lb_irq_int_14 : 1; /* RW, W1C */
216 unsigned long lb_irq_int_15 : 1; /* RW, W1C */
217 unsigned long l1_nmi_int : 1; /* RW, W1C */
218 unsigned long stop_clock : 1; /* RW, W1C */
219 unsigned long asic_to_l1 : 1; /* RW, W1C */
220 unsigned long l1_to_asic : 1; /* RW, W1C */
221 unsigned long ltc_int : 1; /* RW, W1C */
222 unsigned long la_seq_trigger : 1; /* RW, W1C */
223 unsigned long ipi_int : 1; /* RW, W1C */
224 unsigned long extio_int0 : 1; /* RW, W1C */
225 unsigned long extio_int1 : 1; /* RW, W1C */
226 unsigned long extio_int2 : 1; /* RW, W1C */
227 unsigned long extio_int3 : 1; /* RW, W1C */
228 unsigned long profile_int : 1; /* RW, W1C */
229 unsigned long rtc0 : 1; /* RW, W1C */
230 unsigned long rtc1 : 1; /* RW, W1C */
231 unsigned long rtc2 : 1; /* RW, W1C */
232 unsigned long rtc3 : 1; /* RW, W1C */
233 unsigned long bau_data : 1; /* RW, W1C */
234 unsigned long power_management_req : 1; /* RW, W1C */
235 unsigned long rsvd_57_63 : 7; /* */
236 } s;
237};
238
239/* ========================================================================= */
240/* UVH_EVENT_OCCURRED0_ALIAS */
241/* ========================================================================= */
242#define UVH_EVENT_OCCURRED0_ALIAS 0x0000000000070008UL
243#define UVH_EVENT_OCCURRED0_ALIAS_32 0x005f0
244
245/* ========================================================================= */
246/* UVH_INT_CMPB */
247/* ========================================================================= */
248#define UVH_INT_CMPB 0x22080UL
249
250#define UVH_INT_CMPB_REAL_TIME_CMPB_SHFT 0
251#define UVH_INT_CMPB_REAL_TIME_CMPB_MASK 0x00ffffffffffffffUL
252
253union uvh_int_cmpb_u {
254 unsigned long v;
255 struct uvh_int_cmpb_s {
256 unsigned long real_time_cmpb : 56; /* RW */
257 unsigned long rsvd_56_63 : 8; /* */
258 } s;
259};
260
261/* ========================================================================= */
262/* UVH_INT_CMPC */
263/* ========================================================================= */
264#define UVH_INT_CMPC 0x22100UL
265
266#define UVH_INT_CMPC_REAL_TIME_CMPC_SHFT 0
267#define UVH_INT_CMPC_REAL_TIME_CMPC_MASK 0x00ffffffffffffffUL
268
269union uvh_int_cmpc_u {
270 unsigned long v;
271 struct uvh_int_cmpc_s {
272 unsigned long real_time_cmpc : 56; /* RW */
273 unsigned long rsvd_56_63 : 8; /* */
274 } s;
275};
276
277/* ========================================================================= */
278/* UVH_INT_CMPD */
279/* ========================================================================= */
280#define UVH_INT_CMPD 0x22180UL
281
282#define UVH_INT_CMPD_REAL_TIME_CMPD_SHFT 0
283#define UVH_INT_CMPD_REAL_TIME_CMPD_MASK 0x00ffffffffffffffUL
284
285union uvh_int_cmpd_u {
286 unsigned long v;
287 struct uvh_int_cmpd_s {
288 unsigned long real_time_cmpd : 56; /* RW */
289 unsigned long rsvd_56_63 : 8; /* */
290 } s;
291};
292
293/* ========================================================================= */
294/* UVH_IPI_INT */
295/* ========================================================================= */
296#define UVH_IPI_INT 0x60500UL
297#define UVH_IPI_INT_32 0x0348
298
299#define UVH_IPI_INT_VECTOR_SHFT 0
300#define UVH_IPI_INT_VECTOR_MASK 0x00000000000000ffUL
301#define UVH_IPI_INT_DELIVERY_MODE_SHFT 8
302#define UVH_IPI_INT_DELIVERY_MODE_MASK 0x0000000000000700UL
303#define UVH_IPI_INT_DESTMODE_SHFT 11
304#define UVH_IPI_INT_DESTMODE_MASK 0x0000000000000800UL
305#define UVH_IPI_INT_APIC_ID_SHFT 16
306#define UVH_IPI_INT_APIC_ID_MASK 0x0000ffffffff0000UL
307#define UVH_IPI_INT_SEND_SHFT 63
308#define UVH_IPI_INT_SEND_MASK 0x8000000000000000UL
309
310union uvh_ipi_int_u {
311 unsigned long v;
312 struct uvh_ipi_int_s {
313 unsigned long vector_ : 8; /* RW */
314 unsigned long delivery_mode : 3; /* RW */
315 unsigned long destmode : 1; /* RW */
316 unsigned long rsvd_12_15 : 4; /* */
317 unsigned long apic_id : 32; /* RW */
318 unsigned long rsvd_48_62 : 15; /* */
319 unsigned long send : 1; /* WP */
320 } s;
321};
322
323/* ========================================================================= */
324/* UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST */
325/* ========================================================================= */
326#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST 0x320050UL
327#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST_32 0x009c0
328
329#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST_ADDRESS_SHFT 4
330#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST_ADDRESS_MASK 0x000007fffffffff0UL
331#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST_NODE_ID_SHFT 49
332#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST_NODE_ID_MASK 0x7ffe000000000000UL
333
334union uvh_lb_bau_intd_payload_queue_first_u {
335 unsigned long v;
336 struct uvh_lb_bau_intd_payload_queue_first_s {
337 unsigned long rsvd_0_3: 4; /* */
338 unsigned long address : 39; /* RW */
339 unsigned long rsvd_43_48: 6; /* */
340 unsigned long node_id : 14; /* RW */
341 unsigned long rsvd_63 : 1; /* */
342 } s;
343};
344
345/* ========================================================================= */
346/* UVH_LB_BAU_INTD_PAYLOAD_QUEUE_LAST */
347/* ========================================================================= */
348#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_LAST 0x320060UL
349#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_LAST_32 0x009c8
350
351#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_LAST_ADDRESS_SHFT 4
352#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_LAST_ADDRESS_MASK 0x000007fffffffff0UL
353
354union uvh_lb_bau_intd_payload_queue_last_u {
355 unsigned long v;
356 struct uvh_lb_bau_intd_payload_queue_last_s {
357 unsigned long rsvd_0_3: 4; /* */
358 unsigned long address : 39; /* RW */
359 unsigned long rsvd_43_63: 21; /* */
360 } s;
361};
362
363/* ========================================================================= */
364/* UVH_LB_BAU_INTD_PAYLOAD_QUEUE_TAIL */
365/* ========================================================================= */
366#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_TAIL 0x320070UL
367#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_TAIL_32 0x009d0
368
369#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_TAIL_ADDRESS_SHFT 4
370#define UVH_LB_BAU_INTD_PAYLOAD_QUEUE_TAIL_ADDRESS_MASK 0x000007fffffffff0UL
371
372union uvh_lb_bau_intd_payload_queue_tail_u {
373 unsigned long v;
374 struct uvh_lb_bau_intd_payload_queue_tail_s {
375 unsigned long rsvd_0_3: 4; /* */
376 unsigned long address : 39; /* RW */
377 unsigned long rsvd_43_63: 21; /* */
378 } s;
379};
380
381/* ========================================================================= */
382/* UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE */
383/* ========================================================================= */
384#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE 0x320080UL
385#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_32 0x0a68
386
387#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_0_SHFT 0
388#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_0_MASK 0x0000000000000001UL
389#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_1_SHFT 1
390#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_1_MASK 0x0000000000000002UL
391#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_2_SHFT 2
392#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_2_MASK 0x0000000000000004UL
393#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_3_SHFT 3
394#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_3_MASK 0x0000000000000008UL
395#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_4_SHFT 4
396#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_4_MASK 0x0000000000000010UL
397#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_5_SHFT 5
398#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_5_MASK 0x0000000000000020UL
399#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_6_SHFT 6
400#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_6_MASK 0x0000000000000040UL
401#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_7_SHFT 7
402#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_PENDING_7_MASK 0x0000000000000080UL
403#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_0_SHFT 8
404#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_0_MASK 0x0000000000000100UL
405#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_1_SHFT 9
406#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_1_MASK 0x0000000000000200UL
407#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_2_SHFT 10
408#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_2_MASK 0x0000000000000400UL
409#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_3_SHFT 11
410#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_3_MASK 0x0000000000000800UL
411#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_4_SHFT 12
412#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_4_MASK 0x0000000000001000UL
413#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_5_SHFT 13
414#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_5_MASK 0x0000000000002000UL
415#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_6_SHFT 14
416#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_6_MASK 0x0000000000004000UL
417#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_7_SHFT 15
418#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_TIMEOUT_7_MASK 0x0000000000008000UL
419union uvh_lb_bau_intd_software_acknowledge_u {
420 unsigned long v;
421 struct uvh_lb_bau_intd_software_acknowledge_s {
422 unsigned long pending_0 : 1; /* RW, W1C */
423 unsigned long pending_1 : 1; /* RW, W1C */
424 unsigned long pending_2 : 1; /* RW, W1C */
425 unsigned long pending_3 : 1; /* RW, W1C */
426 unsigned long pending_4 : 1; /* RW, W1C */
427 unsigned long pending_5 : 1; /* RW, W1C */
428 unsigned long pending_6 : 1; /* RW, W1C */
429 unsigned long pending_7 : 1; /* RW, W1C */
430 unsigned long timeout_0 : 1; /* RW, W1C */
431 unsigned long timeout_1 : 1; /* RW, W1C */
432 unsigned long timeout_2 : 1; /* RW, W1C */
433 unsigned long timeout_3 : 1; /* RW, W1C */
434 unsigned long timeout_4 : 1; /* RW, W1C */
435 unsigned long timeout_5 : 1; /* RW, W1C */
436 unsigned long timeout_6 : 1; /* RW, W1C */
437 unsigned long timeout_7 : 1; /* RW, W1C */
438 unsigned long rsvd_16_63: 48; /* */
439 } s;
440};
441
442/* ========================================================================= */
443/* UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS */
444/* ========================================================================= */
445#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS 0x0000000000320088UL
446#define UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS_32 0x0a70
447
448/* ========================================================================= */
449/* UVH_LB_BAU_SB_ACTIVATION_CONTROL */
450/* ========================================================================= */
451#define UVH_LB_BAU_SB_ACTIVATION_CONTROL 0x320020UL
452#define UVH_LB_BAU_SB_ACTIVATION_CONTROL_32 0x009a8
453
454#define UVH_LB_BAU_SB_ACTIVATION_CONTROL_INDEX_SHFT 0
455#define UVH_LB_BAU_SB_ACTIVATION_CONTROL_INDEX_MASK 0x000000000000003fUL
456#define UVH_LB_BAU_SB_ACTIVATION_CONTROL_PUSH_SHFT 62
457#define UVH_LB_BAU_SB_ACTIVATION_CONTROL_PUSH_MASK 0x4000000000000000UL
458#define UVH_LB_BAU_SB_ACTIVATION_CONTROL_INIT_SHFT 63
459#define UVH_LB_BAU_SB_ACTIVATION_CONTROL_INIT_MASK 0x8000000000000000UL
460
461union uvh_lb_bau_sb_activation_control_u {
462 unsigned long v;
463 struct uvh_lb_bau_sb_activation_control_s {
464 unsigned long index : 6; /* RW */
465 unsigned long rsvd_6_61: 56; /* */
466 unsigned long push : 1; /* WP */
467 unsigned long init : 1; /* WP */
468 } s;
469};
470
471/* ========================================================================= */
472/* UVH_LB_BAU_SB_ACTIVATION_STATUS_0 */
473/* ========================================================================= */
474#define UVH_LB_BAU_SB_ACTIVATION_STATUS_0 0x320030UL
475#define UVH_LB_BAU_SB_ACTIVATION_STATUS_0_32 0x009b0
476
477#define UVH_LB_BAU_SB_ACTIVATION_STATUS_0_STATUS_SHFT 0
478#define UVH_LB_BAU_SB_ACTIVATION_STATUS_0_STATUS_MASK 0xffffffffffffffffUL
479
480union uvh_lb_bau_sb_activation_status_0_u {
481 unsigned long v;
482 struct uvh_lb_bau_sb_activation_status_0_s {
483 unsigned long status : 64; /* RW */
484 } s;
485};
486
487/* ========================================================================= */
488/* UVH_LB_BAU_SB_ACTIVATION_STATUS_1 */
489/* ========================================================================= */
490#define UVH_LB_BAU_SB_ACTIVATION_STATUS_1 0x320040UL
491#define UVH_LB_BAU_SB_ACTIVATION_STATUS_1_32 0x009b8
492
493#define UVH_LB_BAU_SB_ACTIVATION_STATUS_1_STATUS_SHFT 0
494#define UVH_LB_BAU_SB_ACTIVATION_STATUS_1_STATUS_MASK 0xffffffffffffffffUL
495
496union uvh_lb_bau_sb_activation_status_1_u {
497 unsigned long v;
498 struct uvh_lb_bau_sb_activation_status_1_s {
499 unsigned long status : 64; /* RW */
500 } s;
501};
502
503/* ========================================================================= */
504/* UVH_LB_BAU_SB_DESCRIPTOR_BASE */
505/* ========================================================================= */
506#define UVH_LB_BAU_SB_DESCRIPTOR_BASE 0x320010UL
507#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_32 0x009a0
508
509#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_SHFT 12
510#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_PAGE_ADDRESS_MASK 0x000007fffffff000UL
511#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_SHFT 49
512#define UVH_LB_BAU_SB_DESCRIPTOR_BASE_NODE_ID_MASK 0x7ffe000000000000UL
513
514union uvh_lb_bau_sb_descriptor_base_u {
515 unsigned long v;
516 struct uvh_lb_bau_sb_descriptor_base_s {
517 unsigned long rsvd_0_11 : 12; /* */
518 unsigned long page_address : 31; /* RW */
519 unsigned long rsvd_43_48 : 6; /* */
520 unsigned long node_id : 14; /* RW */
521 unsigned long rsvd_63 : 1; /* */
522 } s;
523};
524
525/* ========================================================================= */
526/* UVH_LB_MCAST_AOERR0_RPT_ENABLE */
527/* ========================================================================= */
528#define UVH_LB_MCAST_AOERR0_RPT_ENABLE 0x50b20UL
529
530#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_OBESE_MSG_SHFT 0
531#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_OBESE_MSG_MASK 0x0000000000000001UL
532#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_DATA_SB_ERR_SHFT 1
533#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_DATA_SB_ERR_MASK 0x0000000000000002UL
534#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_NACK_BUFF_PARITY_SHFT 2
535#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_NACK_BUFF_PARITY_MASK 0x0000000000000004UL
536#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_TIMEOUT_SHFT 3
537#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_TIMEOUT_MASK 0x0000000000000008UL
538#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_INACTIVE_REPLY_SHFT 4
539#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_INACTIVE_REPLY_MASK 0x0000000000000010UL
540#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_UPGRADE_ERROR_SHFT 5
541#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_UPGRADE_ERROR_MASK 0x0000000000000020UL
542#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_REG_COUNT_UNDERFLOW_SHFT 6
543#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_REG_COUNT_UNDERFLOW_MASK 0x0000000000000040UL
544#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_REP_OBESE_MSG_SHFT 7
545#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MCAST_REP_OBESE_MSG_MASK 0x0000000000000080UL
546#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REQ_RUNT_MSG_SHFT 8
547#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REQ_RUNT_MSG_MASK 0x0000000000000100UL
548#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REQ_OBESE_MSG_SHFT 9
549#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REQ_OBESE_MSG_MASK 0x0000000000000200UL
550#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REQ_DATA_SB_ERR_SHFT 10
551#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REQ_DATA_SB_ERR_MASK 0x0000000000000400UL
552#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_RUNT_MSG_SHFT 11
553#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_RUNT_MSG_MASK 0x0000000000000800UL
554#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_OBESE_MSG_SHFT 12
555#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_OBESE_MSG_MASK 0x0000000000001000UL
556#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_DATA_SB_ERR_SHFT 13
557#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_DATA_SB_ERR_MASK 0x0000000000002000UL
558#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_COMMAND_ERR_SHFT 14
559#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_REP_COMMAND_ERR_MASK 0x0000000000004000UL
560#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_PEND_TIMEOUT_SHFT 15
561#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_UCACHE_PEND_TIMEOUT_MASK 0x0000000000008000UL
562#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REQ_RUNT_MSG_SHFT 16
563#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REQ_RUNT_MSG_MASK 0x0000000000010000UL
564#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REQ_OBESE_MSG_SHFT 17
565#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REQ_OBESE_MSG_MASK 0x0000000000020000UL
566#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REQ_DATA_SB_ERR_SHFT 18
567#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REQ_DATA_SB_ERR_MASK 0x0000000000040000UL
568#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REP_RUNT_MSG_SHFT 19
569#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REP_RUNT_MSG_MASK 0x0000000000080000UL
570#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REP_OBESE_MSG_SHFT 20
571#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REP_OBESE_MSG_MASK 0x0000000000100000UL
572#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REP_DATA_SB_ERR_SHFT 21
573#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_REP_DATA_SB_ERR_MASK 0x0000000000200000UL
574#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_AMO_TIMEOUT_SHFT 22
575#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_AMO_TIMEOUT_MASK 0x0000000000400000UL
576#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_PUT_TIMEOUT_SHFT 23
577#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_PUT_TIMEOUT_MASK 0x0000000000800000UL
578#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_SPURIOUS_EVENT_SHFT 24
579#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_MACC_SPURIOUS_EVENT_MASK 0x0000000001000000UL
580#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_IOH_DESTINATION_TABLE_PARITY_SHFT 25
581#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_IOH_DESTINATION_TABLE_PARITY_MASK 0x0000000002000000UL
582#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_GET_HAD_ERROR_REPLY_SHFT 26
583#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_GET_HAD_ERROR_REPLY_MASK 0x0000000004000000UL
584#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_GET_TIMEOUT_SHFT 27
585#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_GET_TIMEOUT_MASK 0x0000000008000000UL
586#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_LOCK_MANAGER_HAD_ERROR_REPLY_SHFT 28
587#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_LOCK_MANAGER_HAD_ERROR_REPLY_MASK 0x0000000010000000UL
588#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_PUT_HAD_ERROR_REPLY_SHFT 29
589#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_PUT_HAD_ERROR_REPLY_MASK 0x0000000020000000UL
590#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_PUT_TIMEOUT_SHFT 30
591#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_PUT_TIMEOUT_MASK 0x0000000040000000UL
592#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_SB_ACTIVATION_OVERRUN_SHFT 31
593#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_SB_ACTIVATION_OVERRUN_MASK 0x0000000080000000UL
594#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_COMPLETED_GB_ACTIVATION_HAD_ERROR_REPLY_SHFT 32
595#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_COMPLETED_GB_ACTIVATION_HAD_ERROR_REPLY_MASK 0x0000000100000000UL
596#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_COMPLETED_GB_ACTIVATION_TIMEOUT_SHFT 33
597#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_COMPLETED_GB_ACTIVATION_TIMEOUT_MASK 0x0000000200000000UL
598#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_DESCRIPTOR_BUFFER_0_PARITY_SHFT 34
599#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_DESCRIPTOR_BUFFER_0_PARITY_MASK 0x0000000400000000UL
600#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_DESCRIPTOR_BUFFER_1_PARITY_SHFT 35
601#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_DESCRIPTOR_BUFFER_1_PARITY_MASK 0x0000000800000000UL
602#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_SOCKET_DESTINATION_TABLE_PARITY_SHFT 36
603#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_SOCKET_DESTINATION_TABLE_PARITY_MASK 0x0000001000000000UL
604#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_BAU_REPLY_PAYLOAD_CORRUPTION_SHFT 37
605#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_BAU_REPLY_PAYLOAD_CORRUPTION_MASK 0x0000002000000000UL
606#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_IO_PORT_DESTINATION_TABLE_PARITY_SHFT 38
607#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_IO_PORT_DESTINATION_TABLE_PARITY_MASK 0x0000004000000000UL
608#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INTD_SOFT_ACK_TIMEOUT_SHFT 39
609#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INTD_SOFT_ACK_TIMEOUT_MASK 0x0000008000000000UL
610#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INT_REP_OBESE_MSG_SHFT 40
611#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INT_REP_OBESE_MSG_MASK 0x0000010000000000UL
612#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INT_REP_COMMAND_ERR_SHFT 41
613#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INT_REP_COMMAND_ERR_MASK 0x0000020000000000UL
614#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INT_TIMEOUT_SHFT 42
615#define UVH_LB_MCAST_AOERR0_RPT_ENABLE_INT_TIMEOUT_MASK 0x0000040000000000UL
616
617union uvh_lb_mcast_aoerr0_rpt_enable_u {
618 unsigned long v;
619 struct uvh_lb_mcast_aoerr0_rpt_enable_s {
620 unsigned long mcast_obese_msg : 1; /* RW */
621 unsigned long mcast_data_sb_err : 1; /* RW */
622 unsigned long mcast_nack_buff_parity : 1; /* RW */
623 unsigned long mcast_timeout : 1; /* RW */
624 unsigned long mcast_inactive_reply : 1; /* RW */
625 unsigned long mcast_upgrade_error : 1; /* RW */
626 unsigned long mcast_reg_count_underflow : 1; /* RW */
627 unsigned long mcast_rep_obese_msg : 1; /* RW */
628 unsigned long ucache_req_runt_msg : 1; /* RW */
629 unsigned long ucache_req_obese_msg : 1; /* RW */
630 unsigned long ucache_req_data_sb_err : 1; /* RW */
631 unsigned long ucache_rep_runt_msg : 1; /* RW */
632 unsigned long ucache_rep_obese_msg : 1; /* RW */
633 unsigned long ucache_rep_data_sb_err : 1; /* RW */
634 unsigned long ucache_rep_command_err : 1; /* RW */
635 unsigned long ucache_pend_timeout : 1; /* RW */
636 unsigned long macc_req_runt_msg : 1; /* RW */
637 unsigned long macc_req_obese_msg : 1; /* RW */
638 unsigned long macc_req_data_sb_err : 1; /* RW */
639 unsigned long macc_rep_runt_msg : 1; /* RW */
640 unsigned long macc_rep_obese_msg : 1; /* RW */
641 unsigned long macc_rep_data_sb_err : 1; /* RW */
642 unsigned long macc_amo_timeout : 1; /* RW */
643 unsigned long macc_put_timeout : 1; /* RW */
644 unsigned long macc_spurious_event : 1; /* RW */
645 unsigned long ioh_destination_table_parity : 1; /* RW */
646 unsigned long get_had_error_reply : 1; /* RW */
647 unsigned long get_timeout : 1; /* RW */
648 unsigned long lock_manager_had_error_reply : 1; /* RW */
649 unsigned long put_had_error_reply : 1; /* RW */
650 unsigned long put_timeout : 1; /* RW */
651 unsigned long sb_activation_overrun : 1; /* RW */
652 unsigned long completed_gb_activation_had_error_reply : 1; /* RW */
653 unsigned long completed_gb_activation_timeout : 1; /* RW */
654 unsigned long descriptor_buffer_0_parity : 1; /* RW */
655 unsigned long descriptor_buffer_1_parity : 1; /* RW */
656 unsigned long socket_destination_table_parity : 1; /* RW */
657 unsigned long bau_reply_payload_corruption : 1; /* RW */
658 unsigned long io_port_destination_table_parity : 1; /* RW */
659 unsigned long intd_soft_ack_timeout : 1; /* RW */
660 unsigned long int_rep_obese_msg : 1; /* RW */
661 unsigned long int_rep_command_err : 1; /* RW */
662 unsigned long int_timeout : 1; /* RW */
663 unsigned long rsvd_43_63 : 21; /* */
664 } s;
665};
666
667/* ========================================================================= */
668/* UVH_LOCAL_INT0_CONFIG */
669/* ========================================================================= */
670#define UVH_LOCAL_INT0_CONFIG 0x61000UL
671
672#define UVH_LOCAL_INT0_CONFIG_VECTOR_SHFT 0
673#define UVH_LOCAL_INT0_CONFIG_VECTOR_MASK 0x00000000000000ffUL
674#define UVH_LOCAL_INT0_CONFIG_DM_SHFT 8
675#define UVH_LOCAL_INT0_CONFIG_DM_MASK 0x0000000000000700UL
676#define UVH_LOCAL_INT0_CONFIG_DESTMODE_SHFT 11
677#define UVH_LOCAL_INT0_CONFIG_DESTMODE_MASK 0x0000000000000800UL
678#define UVH_LOCAL_INT0_CONFIG_STATUS_SHFT 12
679#define UVH_LOCAL_INT0_CONFIG_STATUS_MASK 0x0000000000001000UL
680#define UVH_LOCAL_INT0_CONFIG_P_SHFT 13
681#define UVH_LOCAL_INT0_CONFIG_P_MASK 0x0000000000002000UL
682#define UVH_LOCAL_INT0_CONFIG_T_SHFT 15
683#define UVH_LOCAL_INT0_CONFIG_T_MASK 0x0000000000008000UL
684#define UVH_LOCAL_INT0_CONFIG_M_SHFT 16
685#define UVH_LOCAL_INT0_CONFIG_M_MASK 0x0000000000010000UL
686#define UVH_LOCAL_INT0_CONFIG_APIC_ID_SHFT 32
687#define UVH_LOCAL_INT0_CONFIG_APIC_ID_MASK 0xffffffff00000000UL
688
689union uvh_local_int0_config_u {
690 unsigned long v;
691 struct uvh_local_int0_config_s {
692 unsigned long vector_ : 8; /* RW */
693 unsigned long dm : 3; /* RW */
694 unsigned long destmode : 1; /* RW */
695 unsigned long status : 1; /* RO */
696 unsigned long p : 1; /* RO */
697 unsigned long rsvd_14 : 1; /* */
698 unsigned long t : 1; /* RO */
699 unsigned long m : 1; /* RW */
700 unsigned long rsvd_17_31: 15; /* */
701 unsigned long apic_id : 32; /* RW */
702 } s;
703};
704
705/* ========================================================================= */
706/* UVH_LOCAL_INT0_ENABLE */
707/* ========================================================================= */
708#define UVH_LOCAL_INT0_ENABLE 0x65000UL
709
710#define UVH_LOCAL_INT0_ENABLE_LB_HCERR_SHFT 0
711#define UVH_LOCAL_INT0_ENABLE_LB_HCERR_MASK 0x0000000000000001UL
712#define UVH_LOCAL_INT0_ENABLE_GR0_HCERR_SHFT 1
713#define UVH_LOCAL_INT0_ENABLE_GR0_HCERR_MASK 0x0000000000000002UL
714#define UVH_LOCAL_INT0_ENABLE_GR1_HCERR_SHFT 2
715#define UVH_LOCAL_INT0_ENABLE_GR1_HCERR_MASK 0x0000000000000004UL
716#define UVH_LOCAL_INT0_ENABLE_LH_HCERR_SHFT 3
717#define UVH_LOCAL_INT0_ENABLE_LH_HCERR_MASK 0x0000000000000008UL
718#define UVH_LOCAL_INT0_ENABLE_RH_HCERR_SHFT 4
719#define UVH_LOCAL_INT0_ENABLE_RH_HCERR_MASK 0x0000000000000010UL
720#define UVH_LOCAL_INT0_ENABLE_XN_HCERR_SHFT 5
721#define UVH_LOCAL_INT0_ENABLE_XN_HCERR_MASK 0x0000000000000020UL
722#define UVH_LOCAL_INT0_ENABLE_SI_HCERR_SHFT 6
723#define UVH_LOCAL_INT0_ENABLE_SI_HCERR_MASK 0x0000000000000040UL
724#define UVH_LOCAL_INT0_ENABLE_LB_AOERR0_SHFT 7
725#define UVH_LOCAL_INT0_ENABLE_LB_AOERR0_MASK 0x0000000000000080UL
726#define UVH_LOCAL_INT0_ENABLE_GR0_AOERR0_SHFT 8
727#define UVH_LOCAL_INT0_ENABLE_GR0_AOERR0_MASK 0x0000000000000100UL
728#define UVH_LOCAL_INT0_ENABLE_GR1_AOERR0_SHFT 9
729#define UVH_LOCAL_INT0_ENABLE_GR1_AOERR0_MASK 0x0000000000000200UL
730#define UVH_LOCAL_INT0_ENABLE_LH_AOERR0_SHFT 10
731#define UVH_LOCAL_INT0_ENABLE_LH_AOERR0_MASK 0x0000000000000400UL
732#define UVH_LOCAL_INT0_ENABLE_RH_AOERR0_SHFT 11
733#define UVH_LOCAL_INT0_ENABLE_RH_AOERR0_MASK 0x0000000000000800UL
734#define UVH_LOCAL_INT0_ENABLE_XN_AOERR0_SHFT 12
735#define UVH_LOCAL_INT0_ENABLE_XN_AOERR0_MASK 0x0000000000001000UL
736#define UVH_LOCAL_INT0_ENABLE_SI_AOERR0_SHFT 13
737#define UVH_LOCAL_INT0_ENABLE_SI_AOERR0_MASK 0x0000000000002000UL
738#define UVH_LOCAL_INT0_ENABLE_LB_AOERR1_SHFT 14
739#define UVH_LOCAL_INT0_ENABLE_LB_AOERR1_MASK 0x0000000000004000UL
740#define UVH_LOCAL_INT0_ENABLE_GR0_AOERR1_SHFT 15
741#define UVH_LOCAL_INT0_ENABLE_GR0_AOERR1_MASK 0x0000000000008000UL
742#define UVH_LOCAL_INT0_ENABLE_GR1_AOERR1_SHFT 16
743#define UVH_LOCAL_INT0_ENABLE_GR1_AOERR1_MASK 0x0000000000010000UL
744#define UVH_LOCAL_INT0_ENABLE_LH_AOERR1_SHFT 17
745#define UVH_LOCAL_INT0_ENABLE_LH_AOERR1_MASK 0x0000000000020000UL
746#define UVH_LOCAL_INT0_ENABLE_RH_AOERR1_SHFT 18
747#define UVH_LOCAL_INT0_ENABLE_RH_AOERR1_MASK 0x0000000000040000UL
748#define UVH_LOCAL_INT0_ENABLE_XN_AOERR1_SHFT 19
749#define UVH_LOCAL_INT0_ENABLE_XN_AOERR1_MASK 0x0000000000080000UL
750#define UVH_LOCAL_INT0_ENABLE_SI_AOERR1_SHFT 20
751#define UVH_LOCAL_INT0_ENABLE_SI_AOERR1_MASK 0x0000000000100000UL
752#define UVH_LOCAL_INT0_ENABLE_RH_VPI_INT_SHFT 21
753#define UVH_LOCAL_INT0_ENABLE_RH_VPI_INT_MASK 0x0000000000200000UL
754#define UVH_LOCAL_INT0_ENABLE_SYSTEM_SHUTDOWN_INT_SHFT 22
755#define UVH_LOCAL_INT0_ENABLE_SYSTEM_SHUTDOWN_INT_MASK 0x0000000000400000UL
756#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_0_SHFT 23
757#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_0_MASK 0x0000000000800000UL
758#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_1_SHFT 24
759#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_1_MASK 0x0000000001000000UL
760#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_2_SHFT 25
761#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_2_MASK 0x0000000002000000UL
762#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_3_SHFT 26
763#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_3_MASK 0x0000000004000000UL
764#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_4_SHFT 27
765#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_4_MASK 0x0000000008000000UL
766#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_5_SHFT 28
767#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_5_MASK 0x0000000010000000UL
768#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_6_SHFT 29
769#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_6_MASK 0x0000000020000000UL
770#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_7_SHFT 30
771#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_7_MASK 0x0000000040000000UL
772#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_8_SHFT 31
773#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_8_MASK 0x0000000080000000UL
774#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_9_SHFT 32
775#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_9_MASK 0x0000000100000000UL
776#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_10_SHFT 33
777#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_10_MASK 0x0000000200000000UL
778#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_11_SHFT 34
779#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_11_MASK 0x0000000400000000UL
780#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_12_SHFT 35
781#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_12_MASK 0x0000000800000000UL
782#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_13_SHFT 36
783#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_13_MASK 0x0000001000000000UL
784#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_14_SHFT 37
785#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_14_MASK 0x0000002000000000UL
786#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_15_SHFT 38
787#define UVH_LOCAL_INT0_ENABLE_LB_IRQ_INT_15_MASK 0x0000004000000000UL
788#define UVH_LOCAL_INT0_ENABLE_L1_NMI_INT_SHFT 39
789#define UVH_LOCAL_INT0_ENABLE_L1_NMI_INT_MASK 0x0000008000000000UL
790#define UVH_LOCAL_INT0_ENABLE_STOP_CLOCK_SHFT 40
791#define UVH_LOCAL_INT0_ENABLE_STOP_CLOCK_MASK 0x0000010000000000UL
792#define UVH_LOCAL_INT0_ENABLE_ASIC_TO_L1_SHFT 41
793#define UVH_LOCAL_INT0_ENABLE_ASIC_TO_L1_MASK 0x0000020000000000UL
794#define UVH_LOCAL_INT0_ENABLE_L1_TO_ASIC_SHFT 42
795#define UVH_LOCAL_INT0_ENABLE_L1_TO_ASIC_MASK 0x0000040000000000UL
796#define UVH_LOCAL_INT0_ENABLE_LTC_INT_SHFT 43
797#define UVH_LOCAL_INT0_ENABLE_LTC_INT_MASK 0x0000080000000000UL
798#define UVH_LOCAL_INT0_ENABLE_LA_SEQ_TRIGGER_SHFT 44
799#define UVH_LOCAL_INT0_ENABLE_LA_SEQ_TRIGGER_MASK 0x0000100000000000UL
800
801union uvh_local_int0_enable_u {
802 unsigned long v;
803 struct uvh_local_int0_enable_s {
804 unsigned long lb_hcerr : 1; /* RW */
805 unsigned long gr0_hcerr : 1; /* RW */
806 unsigned long gr1_hcerr : 1; /* RW */
807 unsigned long lh_hcerr : 1; /* RW */
808 unsigned long rh_hcerr : 1; /* RW */
809 unsigned long xn_hcerr : 1; /* RW */
810 unsigned long si_hcerr : 1; /* RW */
811 unsigned long lb_aoerr0 : 1; /* RW */
812 unsigned long gr0_aoerr0 : 1; /* RW */
813 unsigned long gr1_aoerr0 : 1; /* RW */
814 unsigned long lh_aoerr0 : 1; /* RW */
815 unsigned long rh_aoerr0 : 1; /* RW */
816 unsigned long xn_aoerr0 : 1; /* RW */
817 unsigned long si_aoerr0 : 1; /* RW */
818 unsigned long lb_aoerr1 : 1; /* RW */
819 unsigned long gr0_aoerr1 : 1; /* RW */
820 unsigned long gr1_aoerr1 : 1; /* RW */
821 unsigned long lh_aoerr1 : 1; /* RW */
822 unsigned long rh_aoerr1 : 1; /* RW */
823 unsigned long xn_aoerr1 : 1; /* RW */
824 unsigned long si_aoerr1 : 1; /* RW */
825 unsigned long rh_vpi_int : 1; /* RW */
826 unsigned long system_shutdown_int : 1; /* RW */
827 unsigned long lb_irq_int_0 : 1; /* RW */
828 unsigned long lb_irq_int_1 : 1; /* RW */
829 unsigned long lb_irq_int_2 : 1; /* RW */
830 unsigned long lb_irq_int_3 : 1; /* RW */
831 unsigned long lb_irq_int_4 : 1; /* RW */
832 unsigned long lb_irq_int_5 : 1; /* RW */
833 unsigned long lb_irq_int_6 : 1; /* RW */
834 unsigned long lb_irq_int_7 : 1; /* RW */
835 unsigned long lb_irq_int_8 : 1; /* RW */
836 unsigned long lb_irq_int_9 : 1; /* RW */
837 unsigned long lb_irq_int_10 : 1; /* RW */
838 unsigned long lb_irq_int_11 : 1; /* RW */
839 unsigned long lb_irq_int_12 : 1; /* RW */
840 unsigned long lb_irq_int_13 : 1; /* RW */
841 unsigned long lb_irq_int_14 : 1; /* RW */
842 unsigned long lb_irq_int_15 : 1; /* RW */
843 unsigned long l1_nmi_int : 1; /* RW */
844 unsigned long stop_clock : 1; /* RW */
845 unsigned long asic_to_l1 : 1; /* RW */
846 unsigned long l1_to_asic : 1; /* RW */
847 unsigned long ltc_int : 1; /* RW */
848 unsigned long la_seq_trigger : 1; /* RW */
849 unsigned long rsvd_45_63 : 19; /* */
850 } s;
851};
852
853/* ========================================================================= */
854/* UVH_NODE_ID */
855/* ========================================================================= */
856#define UVH_NODE_ID 0x0UL
857
858#define UVH_NODE_ID_FORCE1_SHFT 0
859#define UVH_NODE_ID_FORCE1_MASK 0x0000000000000001UL
860#define UVH_NODE_ID_MANUFACTURER_SHFT 1
861#define UVH_NODE_ID_MANUFACTURER_MASK 0x0000000000000ffeUL
862#define UVH_NODE_ID_PART_NUMBER_SHFT 12
863#define UVH_NODE_ID_PART_NUMBER_MASK 0x000000000ffff000UL
864#define UVH_NODE_ID_REVISION_SHFT 28
865#define UVH_NODE_ID_REVISION_MASK 0x00000000f0000000UL
866#define UVH_NODE_ID_NODE_ID_SHFT 32
867#define UVH_NODE_ID_NODE_ID_MASK 0x00007fff00000000UL
868#define UVH_NODE_ID_NODES_PER_BIT_SHFT 48
869#define UVH_NODE_ID_NODES_PER_BIT_MASK 0x007f000000000000UL
870#define UVH_NODE_ID_NI_PORT_SHFT 56
871#define UVH_NODE_ID_NI_PORT_MASK 0x0f00000000000000UL
872
873union uvh_node_id_u {
874 unsigned long v;
875 struct uvh_node_id_s {
876 unsigned long force1 : 1; /* RO */
877 unsigned long manufacturer : 11; /* RO */
878 unsigned long part_number : 16; /* RO */
879 unsigned long revision : 4; /* RO */
880 unsigned long node_id : 15; /* RW */
881 unsigned long rsvd_47 : 1; /* */
882 unsigned long nodes_per_bit : 7; /* RW */
883 unsigned long rsvd_55 : 1; /* */
884 unsigned long ni_port : 4; /* RO */
885 unsigned long rsvd_60_63 : 4; /* */
886 } s;
887};
888
889/* ========================================================================= */
890/* UVH_NODE_PRESENT_TABLE */
891/* ========================================================================= */
892#define UVH_NODE_PRESENT_TABLE 0x1400UL
893#define UVH_NODE_PRESENT_TABLE_DEPTH 16
894
895#define UVH_NODE_PRESENT_TABLE_NODES_SHFT 0
896#define UVH_NODE_PRESENT_TABLE_NODES_MASK 0xffffffffffffffffUL
897
898union uvh_node_present_table_u {
899 unsigned long v;
900 struct uvh_node_present_table_s {
901 unsigned long nodes : 64; /* RW */
902 } s;
903};
904
905/* ========================================================================= */
906/* UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR */
907/* ========================================================================= */
908#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR 0x16000d0UL
909
910#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR_DEST_BASE_SHFT 24
911#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR_DEST_BASE_MASK 0x00003fffff000000UL
912
913union uvh_rh_gam_alias210_redirect_config_0_mmr_u {
914 unsigned long v;
915 struct uvh_rh_gam_alias210_redirect_config_0_mmr_s {
916 unsigned long rsvd_0_23 : 24; /* */
917 unsigned long dest_base : 22; /* RW */
918 unsigned long rsvd_46_63: 18; /* */
919 } s;
920};
921
922/* ========================================================================= */
923/* UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR */
924/* ========================================================================= */
925#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR 0x16000e0UL
926
927#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR_DEST_BASE_SHFT 24
928#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR_DEST_BASE_MASK 0x00003fffff000000UL
929
930union uvh_rh_gam_alias210_redirect_config_1_mmr_u {
931 unsigned long v;
932 struct uvh_rh_gam_alias210_redirect_config_1_mmr_s {
933 unsigned long rsvd_0_23 : 24; /* */
934 unsigned long dest_base : 22; /* RW */
935 unsigned long rsvd_46_63: 18; /* */
936 } s;
937};
938
939/* ========================================================================= */
940/* UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR */
941/* ========================================================================= */
942#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR 0x16000f0UL
943
944#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR_DEST_BASE_SHFT 24
945#define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR_DEST_BASE_MASK 0x00003fffff000000UL
946
947union uvh_rh_gam_alias210_redirect_config_2_mmr_u {
948 unsigned long v;
949 struct uvh_rh_gam_alias210_redirect_config_2_mmr_s {
950 unsigned long rsvd_0_23 : 24; /* */
951 unsigned long dest_base : 22; /* RW */
952 unsigned long rsvd_46_63: 18; /* */
953 } s;
954};
955
956/* ========================================================================= */
957/* UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR */
958/* ========================================================================= */
959#define UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR 0x1600020UL
960
961#define UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR_BASE_SHFT 26
962#define UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR_BASE_MASK 0x00003ffffc000000UL
963#define UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR_ENABLE_SHFT 63
964#define UVH_RH_GAM_CFG_OVERLAY_CONFIG_MMR_ENABLE_MASK 0x8000000000000000UL
965
966union uvh_rh_gam_cfg_overlay_config_mmr_u {
967 unsigned long v;
968 struct uvh_rh_gam_cfg_overlay_config_mmr_s {
969 unsigned long rsvd_0_25: 26; /* */
970 unsigned long base : 20; /* RW */
971 unsigned long rsvd_46_62: 17; /* */
972 unsigned long enable : 1; /* RW */
973 } s;
974};
975
976/* ========================================================================= */
977/* UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR */
978/* ========================================================================= */
979#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR 0x1600010UL
980
981#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_SHFT 28
982#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_MASK 0x00003ffff0000000UL
983#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_GR4_SHFT 48
984#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_GR4_MASK 0x0001000000000000UL
985#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_N_GRU_SHFT 52
986#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_N_GRU_MASK 0x00f0000000000000UL
987#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_ENABLE_SHFT 63
988#define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_ENABLE_MASK 0x8000000000000000UL
989
990union uvh_rh_gam_gru_overlay_config_mmr_u {
991 unsigned long v;
992 struct uvh_rh_gam_gru_overlay_config_mmr_s {
993 unsigned long rsvd_0_27: 28; /* */
994 unsigned long base : 18; /* RW */
995 unsigned long rsvd_46_47: 2; /* */
996 unsigned long gr4 : 1; /* RW */
997 unsigned long rsvd_49_51: 3; /* */
998 unsigned long n_gru : 4; /* RW */
999 unsigned long rsvd_56_62: 7; /* */
1000 unsigned long enable : 1; /* RW */
1001 } s;
1002};
1003
1004/* ========================================================================= */
1005/* UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR */
1006/* ========================================================================= */
1007#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR 0x1600030UL
1008
1009#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_BASE_SHFT 30
1010#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_BASE_MASK 0x00003fffc0000000UL
1011#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_M_IO_SHFT 46
1012#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_M_IO_MASK 0x000fc00000000000UL
1013#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_N_IO_SHFT 52
1014#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_N_IO_MASK 0x00f0000000000000UL
1015#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_ENABLE_SHFT 63
1016#define UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR_ENABLE_MASK 0x8000000000000000UL
1017
1018union uvh_rh_gam_mmioh_overlay_config_mmr_u {
1019 unsigned long v;
1020 struct uvh_rh_gam_mmioh_overlay_config_mmr_s {
1021 unsigned long rsvd_0_29: 30; /* */
1022 unsigned long base : 16; /* RW */
1023 unsigned long m_io : 6; /* RW */
1024 unsigned long n_io : 4; /* RW */
1025 unsigned long rsvd_56_62: 7; /* */
1026 unsigned long enable : 1; /* RW */
1027 } s;
1028};
1029
1030/* ========================================================================= */
1031/* UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR */
1032/* ========================================================================= */
1033#define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR 0x1600028UL
1034
1035#define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_BASE_SHFT 26
1036#define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_BASE_MASK 0x00003ffffc000000UL
1037#define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_DUAL_HUB_SHFT 46
1038#define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_DUAL_HUB_MASK 0x0000400000000000UL
1039#define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_ENABLE_SHFT 63
1040#define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_ENABLE_MASK 0x8000000000000000UL
1041
1042union uvh_rh_gam_mmr_overlay_config_mmr_u {
1043 unsigned long v;
1044 struct uvh_rh_gam_mmr_overlay_config_mmr_s {
1045 unsigned long rsvd_0_25: 26; /* */
1046 unsigned long base : 20; /* RW */
1047 unsigned long dual_hub : 1; /* RW */
1048 unsigned long rsvd_47_62: 16; /* */
1049 unsigned long enable : 1; /* RW */
1050 } s;
1051};
1052
1053/* ========================================================================= */
1054/* UVH_RTC */
1055/* ========================================================================= */
1056#define UVH_RTC 0x340000UL
1057
1058#define UVH_RTC_REAL_TIME_CLOCK_SHFT 0
1059#define UVH_RTC_REAL_TIME_CLOCK_MASK 0x00ffffffffffffffUL
1060
1061union uvh_rtc_u {
1062 unsigned long v;
1063 struct uvh_rtc_s {
1064 unsigned long real_time_clock : 56; /* RW */
1065 unsigned long rsvd_56_63 : 8; /* */
1066 } s;
1067};
1068
1069/* ========================================================================= */
1070/* UVH_RTC1_INT_CONFIG */
1071/* ========================================================================= */
1072#define UVH_RTC1_INT_CONFIG 0x615c0UL
1073
1074#define UVH_RTC1_INT_CONFIG_VECTOR_SHFT 0
1075#define UVH_RTC1_INT_CONFIG_VECTOR_MASK 0x00000000000000ffUL
1076#define UVH_RTC1_INT_CONFIG_DM_SHFT 8
1077#define UVH_RTC1_INT_CONFIG_DM_MASK 0x0000000000000700UL
1078#define UVH_RTC1_INT_CONFIG_DESTMODE_SHFT 11
1079#define UVH_RTC1_INT_CONFIG_DESTMODE_MASK 0x0000000000000800UL
1080#define UVH_RTC1_INT_CONFIG_STATUS_SHFT 12
1081#define UVH_RTC1_INT_CONFIG_STATUS_MASK 0x0000000000001000UL
1082#define UVH_RTC1_INT_CONFIG_P_SHFT 13
1083#define UVH_RTC1_INT_CONFIG_P_MASK 0x0000000000002000UL
1084#define UVH_RTC1_INT_CONFIG_T_SHFT 15
1085#define UVH_RTC1_INT_CONFIG_T_MASK 0x0000000000008000UL
1086#define UVH_RTC1_INT_CONFIG_M_SHFT 16
1087#define UVH_RTC1_INT_CONFIG_M_MASK 0x0000000000010000UL
1088#define UVH_RTC1_INT_CONFIG_APIC_ID_SHFT 32
1089#define UVH_RTC1_INT_CONFIG_APIC_ID_MASK 0xffffffff00000000UL
1090
1091union uvh_rtc1_int_config_u {
1092 unsigned long v;
1093 struct uvh_rtc1_int_config_s {
1094 unsigned long vector_ : 8; /* RW */
1095 unsigned long dm : 3; /* RW */
1096 unsigned long destmode : 1; /* RW */
1097 unsigned long status : 1; /* RO */
1098 unsigned long p : 1; /* RO */
1099 unsigned long rsvd_14 : 1; /* */
1100 unsigned long t : 1; /* RO */
1101 unsigned long m : 1; /* RW */
1102 unsigned long rsvd_17_31: 15; /* */
1103 unsigned long apic_id : 32; /* RW */
1104 } s;
1105};
1106
1107/* ========================================================================= */
1108/* UVH_RTC2_INT_CONFIG */
1109/* ========================================================================= */
1110#define UVH_RTC2_INT_CONFIG 0x61600UL
1111
1112#define UVH_RTC2_INT_CONFIG_VECTOR_SHFT 0
1113#define UVH_RTC2_INT_CONFIG_VECTOR_MASK 0x00000000000000ffUL
1114#define UVH_RTC2_INT_CONFIG_DM_SHFT 8
1115#define UVH_RTC2_INT_CONFIG_DM_MASK 0x0000000000000700UL
1116#define UVH_RTC2_INT_CONFIG_DESTMODE_SHFT 11
1117#define UVH_RTC2_INT_CONFIG_DESTMODE_MASK 0x0000000000000800UL
1118#define UVH_RTC2_INT_CONFIG_STATUS_SHFT 12
1119#define UVH_RTC2_INT_CONFIG_STATUS_MASK 0x0000000000001000UL
1120#define UVH_RTC2_INT_CONFIG_P_SHFT 13
1121#define UVH_RTC2_INT_CONFIG_P_MASK 0x0000000000002000UL
1122#define UVH_RTC2_INT_CONFIG_T_SHFT 15
1123#define UVH_RTC2_INT_CONFIG_T_MASK 0x0000000000008000UL
1124#define UVH_RTC2_INT_CONFIG_M_SHFT 16
1125#define UVH_RTC2_INT_CONFIG_M_MASK 0x0000000000010000UL
1126#define UVH_RTC2_INT_CONFIG_APIC_ID_SHFT 32
1127#define UVH_RTC2_INT_CONFIG_APIC_ID_MASK 0xffffffff00000000UL
1128
1129union uvh_rtc2_int_config_u {
1130 unsigned long v;
1131 struct uvh_rtc2_int_config_s {
1132 unsigned long vector_ : 8; /* RW */
1133 unsigned long dm : 3; /* RW */
1134 unsigned long destmode : 1; /* RW */
1135 unsigned long status : 1; /* RO */
1136 unsigned long p : 1; /* RO */
1137 unsigned long rsvd_14 : 1; /* */
1138 unsigned long t : 1; /* RO */
1139 unsigned long m : 1; /* RW */
1140 unsigned long rsvd_17_31: 15; /* */
1141 unsigned long apic_id : 32; /* RW */
1142 } s;
1143};
1144
1145/* ========================================================================= */
1146/* UVH_RTC3_INT_CONFIG */
1147/* ========================================================================= */
1148#define UVH_RTC3_INT_CONFIG 0x61640UL
1149
1150#define UVH_RTC3_INT_CONFIG_VECTOR_SHFT 0
1151#define UVH_RTC3_INT_CONFIG_VECTOR_MASK 0x00000000000000ffUL
1152#define UVH_RTC3_INT_CONFIG_DM_SHFT 8
1153#define UVH_RTC3_INT_CONFIG_DM_MASK 0x0000000000000700UL
1154#define UVH_RTC3_INT_CONFIG_DESTMODE_SHFT 11
1155#define UVH_RTC3_INT_CONFIG_DESTMODE_MASK 0x0000000000000800UL
1156#define UVH_RTC3_INT_CONFIG_STATUS_SHFT 12
1157#define UVH_RTC3_INT_CONFIG_STATUS_MASK 0x0000000000001000UL
1158#define UVH_RTC3_INT_CONFIG_P_SHFT 13
1159#define UVH_RTC3_INT_CONFIG_P_MASK 0x0000000000002000UL
1160#define UVH_RTC3_INT_CONFIG_T_SHFT 15
1161#define UVH_RTC3_INT_CONFIG_T_MASK 0x0000000000008000UL
1162#define UVH_RTC3_INT_CONFIG_M_SHFT 16
1163#define UVH_RTC3_INT_CONFIG_M_MASK 0x0000000000010000UL
1164#define UVH_RTC3_INT_CONFIG_APIC_ID_SHFT 32
1165#define UVH_RTC3_INT_CONFIG_APIC_ID_MASK 0xffffffff00000000UL
1166
1167union uvh_rtc3_int_config_u {
1168 unsigned long v;
1169 struct uvh_rtc3_int_config_s {
1170 unsigned long vector_ : 8; /* RW */
1171 unsigned long dm : 3; /* RW */
1172 unsigned long destmode : 1; /* RW */
1173 unsigned long status : 1; /* RO */
1174 unsigned long p : 1; /* RO */
1175 unsigned long rsvd_14 : 1; /* */
1176 unsigned long t : 1; /* RO */
1177 unsigned long m : 1; /* RW */
1178 unsigned long rsvd_17_31: 15; /* */
1179 unsigned long apic_id : 32; /* RW */
1180 } s;
1181};
1182
1183/* ========================================================================= */
1184/* UVH_RTC_INC_RATIO */
1185/* ========================================================================= */
1186#define UVH_RTC_INC_RATIO 0x350000UL
1187
1188#define UVH_RTC_INC_RATIO_FRACTION_SHFT 0
1189#define UVH_RTC_INC_RATIO_FRACTION_MASK 0x00000000000fffffUL
1190#define UVH_RTC_INC_RATIO_RATIO_SHFT 20
1191#define UVH_RTC_INC_RATIO_RATIO_MASK 0x0000000000700000UL
1192
1193union uvh_rtc_inc_ratio_u {
1194 unsigned long v;
1195 struct uvh_rtc_inc_ratio_s {
1196 unsigned long fraction : 20; /* RW */
1197 unsigned long ratio : 3; /* RW */
1198 unsigned long rsvd_23_63: 41; /* */
1199 } s;
1200};
1201
1202/* ========================================================================= */
1203/* UVH_SI_ADDR_MAP_CONFIG */
1204/* ========================================================================= */
1205#define UVH_SI_ADDR_MAP_CONFIG 0xc80000UL
1206
1207#define UVH_SI_ADDR_MAP_CONFIG_M_SKT_SHFT 0
1208#define UVH_SI_ADDR_MAP_CONFIG_M_SKT_MASK 0x000000000000003fUL
1209#define UVH_SI_ADDR_MAP_CONFIG_N_SKT_SHFT 8
1210#define UVH_SI_ADDR_MAP_CONFIG_N_SKT_MASK 0x0000000000000f00UL
1211
1212union uvh_si_addr_map_config_u {
1213 unsigned long v;
1214 struct uvh_si_addr_map_config_s {
1215 unsigned long m_skt : 6; /* RW */
1216 unsigned long rsvd_6_7: 2; /* */
1217 unsigned long n_skt : 4; /* RW */
1218 unsigned long rsvd_12_63: 52; /* */
1219 } s;
1220};
1221
1222/* ========================================================================= */
1223/* UVH_SI_ALIAS0_OVERLAY_CONFIG */
1224/* ========================================================================= */
1225#define UVH_SI_ALIAS0_OVERLAY_CONFIG 0xc80008UL
1226
1227#define UVH_SI_ALIAS0_OVERLAY_CONFIG_BASE_SHFT 24
1228#define UVH_SI_ALIAS0_OVERLAY_CONFIG_BASE_MASK 0x00000000ff000000UL
1229#define UVH_SI_ALIAS0_OVERLAY_CONFIG_M_ALIAS_SHFT 48
1230#define UVH_SI_ALIAS0_OVERLAY_CONFIG_M_ALIAS_MASK 0x001f000000000000UL
1231#define UVH_SI_ALIAS0_OVERLAY_CONFIG_ENABLE_SHFT 63
1232#define UVH_SI_ALIAS0_OVERLAY_CONFIG_ENABLE_MASK 0x8000000000000000UL
1233
1234union uvh_si_alias0_overlay_config_u {
1235 unsigned long v;
1236 struct uvh_si_alias0_overlay_config_s {
1237 unsigned long rsvd_0_23: 24; /* */
1238 unsigned long base : 8; /* RW */
1239 unsigned long rsvd_32_47: 16; /* */
1240 unsigned long m_alias : 5; /* RW */
1241 unsigned long rsvd_53_62: 10; /* */
1242 unsigned long enable : 1; /* RW */
1243 } s;
1244};
1245
1246/* ========================================================================= */
1247/* UVH_SI_ALIAS1_OVERLAY_CONFIG */
1248/* ========================================================================= */
1249#define UVH_SI_ALIAS1_OVERLAY_CONFIG 0xc80010UL
1250
1251#define UVH_SI_ALIAS1_OVERLAY_CONFIG_BASE_SHFT 24
1252#define UVH_SI_ALIAS1_OVERLAY_CONFIG_BASE_MASK 0x00000000ff000000UL
1253#define UVH_SI_ALIAS1_OVERLAY_CONFIG_M_ALIAS_SHFT 48
1254#define UVH_SI_ALIAS1_OVERLAY_CONFIG_M_ALIAS_MASK 0x001f000000000000UL
1255#define UVH_SI_ALIAS1_OVERLAY_CONFIG_ENABLE_SHFT 63
1256#define UVH_SI_ALIAS1_OVERLAY_CONFIG_ENABLE_MASK 0x8000000000000000UL
1257
1258union uvh_si_alias1_overlay_config_u {
1259 unsigned long v;
1260 struct uvh_si_alias1_overlay_config_s {
1261 unsigned long rsvd_0_23: 24; /* */
1262 unsigned long base : 8; /* RW */
1263 unsigned long rsvd_32_47: 16; /* */
1264 unsigned long m_alias : 5; /* RW */
1265 unsigned long rsvd_53_62: 10; /* */
1266 unsigned long enable : 1; /* RW */
1267 } s;
1268};
1269
1270/* ========================================================================= */
1271/* UVH_SI_ALIAS2_OVERLAY_CONFIG */
1272/* ========================================================================= */
1273#define UVH_SI_ALIAS2_OVERLAY_CONFIG 0xc80018UL
1274
1275#define UVH_SI_ALIAS2_OVERLAY_CONFIG_BASE_SHFT 24
1276#define UVH_SI_ALIAS2_OVERLAY_CONFIG_BASE_MASK 0x00000000ff000000UL
1277#define UVH_SI_ALIAS2_OVERLAY_CONFIG_M_ALIAS_SHFT 48
1278#define UVH_SI_ALIAS2_OVERLAY_CONFIG_M_ALIAS_MASK 0x001f000000000000UL
1279#define UVH_SI_ALIAS2_OVERLAY_CONFIG_ENABLE_SHFT 63
1280#define UVH_SI_ALIAS2_OVERLAY_CONFIG_ENABLE_MASK 0x8000000000000000UL
1281
1282union uvh_si_alias2_overlay_config_u {
1283 unsigned long v;
1284 struct uvh_si_alias2_overlay_config_s {
1285 unsigned long rsvd_0_23: 24; /* */
1286 unsigned long base : 8; /* RW */
1287 unsigned long rsvd_32_47: 16; /* */
1288 unsigned long m_alias : 5; /* RW */
1289 unsigned long rsvd_53_62: 10; /* */
1290 unsigned long enable : 1; /* RW */
1291 } s;
1292};
1293
1294
1295#endif /* _ASM_X86_UV_UV_MMRS_H */
diff --git a/arch/x86/include/asm/vdso.h b/arch/x86/include/asm/vdso.h
new file mode 100644
index 000000000000..9064052b73de
--- /dev/null
+++ b/arch/x86/include/asm/vdso.h
@@ -0,0 +1,47 @@
1#ifndef _ASM_X86_VDSO_H
2#define _ASM_X86_VDSO_H
3
4#ifdef CONFIG_X86_64
5extern const char VDSO64_PRELINK[];
6
7/*
8 * Given a pointer to the vDSO image, find the pointer to VDSO64_name
9 * as that symbol is defined in the vDSO sources or linker script.
10 */
11#define VDSO64_SYMBOL(base, name) \
12({ \
13 extern const char VDSO64_##name[]; \
14 (void *)(VDSO64_##name - VDSO64_PRELINK + (unsigned long)(base)); \
15})
16#endif
17
18#if defined CONFIG_X86_32 || defined CONFIG_COMPAT
19extern const char VDSO32_PRELINK[];
20
21/*
22 * Given a pointer to the vDSO image, find the pointer to VDSO32_name
23 * as that symbol is defined in the vDSO sources or linker script.
24 */
25#define VDSO32_SYMBOL(base, name) \
26({ \
27 extern const char VDSO32_##name[]; \
28 (void *)(VDSO32_##name - VDSO32_PRELINK + (unsigned long)(base)); \
29})
30#endif
31
32/*
33 * These symbols are defined with the addresses in the vsyscall page.
34 * See vsyscall-sigreturn.S.
35 */
36extern void __user __kernel_sigreturn;
37extern void __user __kernel_rt_sigreturn;
38
39/*
40 * These symbols are defined by vdso32.S to mark the bounds
41 * of the ELF DSO images included therein.
42 */
43extern const char vdso32_int80_start, vdso32_int80_end;
44extern const char vdso32_syscall_start, vdso32_syscall_end;
45extern const char vdso32_sysenter_start, vdso32_sysenter_end;
46
47#endif /* _ASM_X86_VDSO_H */
diff --git a/arch/x86/include/asm/vga.h b/arch/x86/include/asm/vga.h
new file mode 100644
index 000000000000..c4b9dc2f67c5
--- /dev/null
+++ b/arch/x86/include/asm/vga.h
@@ -0,0 +1,20 @@
1/*
2 * Access to VGA videoram
3 *
4 * (c) 1998 Martin Mares <mj@ucw.cz>
5 */
6
7#ifndef _ASM_X86_VGA_H
8#define _ASM_X86_VGA_H
9
10/*
11 * On the PC, we can just recalculate addresses and then
12 * access the videoram directly without any black magic.
13 */
14
15#define VGA_MAP_MEM(x, s) (unsigned long)phys_to_virt(x)
16
17#define vga_readb(x) (*(x))
18#define vga_writeb(x, y) (*(y) = (x))
19
20#endif /* _ASM_X86_VGA_H */
diff --git a/arch/x86/include/asm/vgtod.h b/arch/x86/include/asm/vgtod.h
new file mode 100644
index 000000000000..dc27a69e5d2a
--- /dev/null
+++ b/arch/x86/include/asm/vgtod.h
@@ -0,0 +1,29 @@
1#ifndef _ASM_X86_VGTOD_H
2#define _ASM_X86_VGTOD_H
3
4#include <asm/vsyscall.h>
5#include <linux/clocksource.h>
6
7struct vsyscall_gtod_data {
8 seqlock_t lock;
9
10 /* open coded 'struct timespec' */
11 time_t wall_time_sec;
12 u32 wall_time_nsec;
13
14 int sysctl_enabled;
15 struct timezone sys_tz;
16 struct { /* extract of a clocksource struct */
17 cycle_t (*vread)(void);
18 cycle_t cycle_last;
19 cycle_t mask;
20 u32 mult;
21 u32 shift;
22 } clock;
23 struct timespec wall_to_monotonic;
24};
25extern struct vsyscall_gtod_data __vsyscall_gtod_data
26__section_vsyscall_gtod_data;
27extern struct vsyscall_gtod_data vsyscall_gtod_data;
28
29#endif /* _ASM_X86_VGTOD_H */
diff --git a/arch/x86/include/asm/vic.h b/arch/x86/include/asm/vic.h
new file mode 100644
index 000000000000..53100f353612
--- /dev/null
+++ b/arch/x86/include/asm/vic.h
@@ -0,0 +1,61 @@
1/* Copyright (C) 1999,2001
2 *
3 * Author: J.E.J.Bottomley@HansenPartnership.com
4 *
5 * Standard include definitions for the NCR Voyager Interrupt Controller */
6
7/* The eight CPI vectors. To activate a CPI, you write a bit mask
8 * corresponding to the processor set to be interrupted into the
9 * relevant register. That set of CPUs will then be interrupted with
10 * the CPI */
11static const int VIC_CPI_Registers[] =
12 {0xFC00, 0xFC01, 0xFC08, 0xFC09,
13 0xFC10, 0xFC11, 0xFC18, 0xFC19 };
14
15#define VIC_PROC_WHO_AM_I 0xfc29
16# define QUAD_IDENTIFIER 0xC0
17# define EIGHT_SLOT_IDENTIFIER 0xE0
18#define QIC_EXTENDED_PROCESSOR_SELECT 0xFC72
19#define VIC_CPI_BASE_REGISTER 0xFC41
20#define VIC_PROCESSOR_ID 0xFC21
21# define VIC_CPU_MASQUERADE_ENABLE 0x8
22
23#define VIC_CLAIM_REGISTER_0 0xFC38
24#define VIC_CLAIM_REGISTER_1 0xFC39
25#define VIC_REDIRECT_REGISTER_0 0xFC60
26#define VIC_REDIRECT_REGISTER_1 0xFC61
27#define VIC_PRIORITY_REGISTER 0xFC20
28
29#define VIC_PRIMARY_MC_BASE 0xFC48
30#define VIC_SECONDARY_MC_BASE 0xFC49
31
32#define QIC_PROCESSOR_ID 0xFC71
33# define QIC_CPUID_ENABLE 0x08
34
35#define QIC_VIC_CPI_BASE_REGISTER 0xFC79
36#define QIC_CPI_BASE_REGISTER 0xFC7A
37
38#define QIC_MASK_REGISTER0 0xFC80
39/* NOTE: these are masked high, enabled low */
40# define QIC_PERF_TIMER 0x01
41# define QIC_LPE 0x02
42# define QIC_SYS_INT 0x04
43# define QIC_CMN_INT 0x08
44/* at the moment, just enable CMN_INT, disable SYS_INT */
45# define QIC_DEFAULT_MASK0 (~(QIC_CMN_INT /* | VIC_SYS_INT */))
46#define QIC_MASK_REGISTER1 0xFC81
47# define QIC_BOOT_CPI_MASK 0xFE
48/* Enable CPI's 1-6 inclusive */
49# define QIC_CPI_ENABLE 0x81
50
51#define QIC_INTERRUPT_CLEAR0 0xFC8A
52#define QIC_INTERRUPT_CLEAR1 0xFC8B
53
54/* this is where we place the CPI vectors */
55#define VIC_DEFAULT_CPI_BASE 0xC0
56/* this is where we place the QIC CPI vectors */
57#define QIC_DEFAULT_CPI_BASE 0xD0
58
59#define VIC_BOOT_INTERRUPT_MASK 0xfe
60
61extern void smp_vic_timer_interrupt(void);
diff --git a/arch/x86/include/asm/visws/cobalt.h b/arch/x86/include/asm/visws/cobalt.h
new file mode 100644
index 000000000000..166adf61e770
--- /dev/null
+++ b/arch/x86/include/asm/visws/cobalt.h
@@ -0,0 +1,125 @@
1#ifndef _ASM_X86_VISWS_COBALT_H
2#define _ASM_X86_VISWS_COBALT_H
3
4#include <asm/fixmap.h>
5
6/*
7 * Cobalt SGI Visual Workstation system ASIC
8 */
9
10#define CO_CPU_NUM_PHYS 0x1e00
11#define CO_CPU_TAB_PHYS (CO_CPU_NUM_PHYS + 2)
12
13#define CO_CPU_MAX 4
14
15#define CO_CPU_PHYS 0xc2000000
16#define CO_APIC_PHYS 0xc4000000
17
18/* see set_fixmap() and asm/fixmap.h */
19#define CO_CPU_VADDR (fix_to_virt(FIX_CO_CPU))
20#define CO_APIC_VADDR (fix_to_virt(FIX_CO_APIC))
21
22/* Cobalt CPU registers -- relative to CO_CPU_VADDR, use co_cpu_*() */
23#define CO_CPU_REV 0x08
24#define CO_CPU_CTRL 0x10
25#define CO_CPU_STAT 0x20
26#define CO_CPU_TIMEVAL 0x30
27
28/* CO_CPU_CTRL bits */
29#define CO_CTRL_TIMERUN 0x04 /* 0 == disabled */
30#define CO_CTRL_TIMEMASK 0x08 /* 0 == unmasked */
31
32/* CO_CPU_STATUS bits */
33#define CO_STAT_TIMEINTR 0x02 /* (r) 1 == int pend, (w) 0 == clear */
34
35/* CO_CPU_TIMEVAL value */
36#define CO_TIME_HZ 100000000 /* Cobalt core rate */
37
38/* Cobalt APIC registers -- relative to CO_APIC_VADDR, use co_apic_*() */
39#define CO_APIC_HI(n) (((n) * 0x10) + 4)
40#define CO_APIC_LO(n) ((n) * 0x10)
41#define CO_APIC_ID 0x0ffc
42
43/* CO_APIC_ID bits */
44#define CO_APIC_ENABLE 0x00000100
45
46/* CO_APIC_LO bits */
47#define CO_APIC_MASK 0x00010000 /* 0 = enabled */
48#define CO_APIC_LEVEL 0x00008000 /* 0 = edge */
49
50/*
51 * Where things are physically wired to Cobalt
52 * #defines with no board _<type>_<rev>_ are common to all (thus far)
53 */
54#define CO_APIC_IDE0 4
55#define CO_APIC_IDE1 2 /* Only on 320 */
56
57#define CO_APIC_8259 12 /* serial, floppy, par-l-l */
58
59/* Lithium PCI Bridge A -- "the one with 82557 Ethernet" */
60#define CO_APIC_PCIA_BASE0 0 /* and 1 */ /* slot 0, line 0 */
61#define CO_APIC_PCIA_BASE123 5 /* and 6 */ /* slot 0, line 1 */
62
63#define CO_APIC_PIIX4_USB 7 /* this one is weird */
64
65/* Lithium PCI Bridge B -- "the one with PIIX4" */
66#define CO_APIC_PCIB_BASE0 8 /* and 9-12 *//* slot 0, line 0 */
67#define CO_APIC_PCIB_BASE123 13 /* 14.15 */ /* slot 0, line 1 */
68
69#define CO_APIC_VIDOUT0 16
70#define CO_APIC_VIDOUT1 17
71#define CO_APIC_VIDIN0 18
72#define CO_APIC_VIDIN1 19
73
74#define CO_APIC_LI_AUDIO 22
75
76#define CO_APIC_AS 24
77#define CO_APIC_RE 25
78
79#define CO_APIC_CPU 28 /* Timer and Cache interrupt */
80#define CO_APIC_NMI 29
81#define CO_APIC_LAST CO_APIC_NMI
82
83/*
84 * This is how irqs are assigned on the Visual Workstation.
85 * Legacy devices get irq's 1-15 (system clock is 0 and is CO_APIC_CPU).
86 * All other devices (including PCI) go to Cobalt and are irq's 16 on up.
87 */
88#define CO_IRQ_APIC0 16 /* irq of apic entry 0 */
89#define IS_CO_APIC(irq) ((irq) >= CO_IRQ_APIC0)
90#define CO_IRQ(apic) (CO_IRQ_APIC0 + (apic)) /* apic ent to irq */
91#define CO_APIC(irq) ((irq) - CO_IRQ_APIC0) /* irq to apic ent */
92#define CO_IRQ_IDE0 14 /* knowledge of... */
93#define CO_IRQ_IDE1 15 /* ... ide driver defaults! */
94#define CO_IRQ_8259 CO_IRQ(CO_APIC_8259)
95
96#ifdef CONFIG_X86_VISWS_APIC
97static inline void co_cpu_write(unsigned long reg, unsigned long v)
98{
99 *((volatile unsigned long *)(CO_CPU_VADDR+reg))=v;
100}
101
102static inline unsigned long co_cpu_read(unsigned long reg)
103{
104 return *((volatile unsigned long *)(CO_CPU_VADDR+reg));
105}
106
107static inline void co_apic_write(unsigned long reg, unsigned long v)
108{
109 *((volatile unsigned long *)(CO_APIC_VADDR+reg))=v;
110}
111
112static inline unsigned long co_apic_read(unsigned long reg)
113{
114 return *((volatile unsigned long *)(CO_APIC_VADDR+reg));
115}
116#endif
117
118extern char visws_board_type;
119
120#define VISWS_320 0
121#define VISWS_540 1
122
123extern char visws_board_rev;
124
125#endif /* _ASM_X86_VISWS_COBALT_H */
diff --git a/arch/x86/include/asm/visws/lithium.h b/arch/x86/include/asm/visws/lithium.h
new file mode 100644
index 000000000000..a10d89bc1270
--- /dev/null
+++ b/arch/x86/include/asm/visws/lithium.h
@@ -0,0 +1,53 @@
1#ifndef _ASM_X86_VISWS_LITHIUM_H
2#define _ASM_X86_VISWS_LITHIUM_H
3
4#include <asm/fixmap.h>
5
6/*
7 * Lithium is the SGI Visual Workstation I/O ASIC
8 */
9
10#define LI_PCI_A_PHYS 0xfc000000 /* Enet is dev 3 */
11#define LI_PCI_B_PHYS 0xfd000000 /* PIIX4 is here */
12
13/* see set_fixmap() and asm/fixmap.h */
14#define LI_PCIA_VADDR (fix_to_virt(FIX_LI_PCIA))
15#define LI_PCIB_VADDR (fix_to_virt(FIX_LI_PCIB))
16
17/* Not a standard PCI? (not in linux/pci.h) */
18#define LI_PCI_BUSNUM 0x44 /* lo8: primary, hi8: sub */
19#define LI_PCI_INTEN 0x46
20
21/* LI_PCI_INTENT bits */
22#define LI_INTA_0 0x0001
23#define LI_INTA_1 0x0002
24#define LI_INTA_2 0x0004
25#define LI_INTA_3 0x0008
26#define LI_INTA_4 0x0010
27#define LI_INTB 0x0020
28#define LI_INTC 0x0040
29#define LI_INTD 0x0080
30
31/* More special purpose macros... */
32static inline void li_pcia_write16(unsigned long reg, unsigned short v)
33{
34 *((volatile unsigned short *)(LI_PCIA_VADDR+reg))=v;
35}
36
37static inline unsigned short li_pcia_read16(unsigned long reg)
38{
39 return *((volatile unsigned short *)(LI_PCIA_VADDR+reg));
40}
41
42static inline void li_pcib_write16(unsigned long reg, unsigned short v)
43{
44 *((volatile unsigned short *)(LI_PCIB_VADDR+reg))=v;
45}
46
47static inline unsigned short li_pcib_read16(unsigned long reg)
48{
49 return *((volatile unsigned short *)(LI_PCIB_VADDR+reg));
50}
51
52#endif /* _ASM_X86_VISWS_LITHIUM_H */
53
diff --git a/arch/x86/include/asm/visws/piix4.h b/arch/x86/include/asm/visws/piix4.h
new file mode 100644
index 000000000000..d0af4d338e7f
--- /dev/null
+++ b/arch/x86/include/asm/visws/piix4.h
@@ -0,0 +1,107 @@
1#ifndef _ASM_X86_VISWS_PIIX4_H
2#define _ASM_X86_VISWS_PIIX4_H
3
4/*
5 * PIIX4 as used on SGI Visual Workstations
6 */
7
8#define PIIX_PM_START 0x0F80
9
10#define SIO_GPIO_START 0x0FC0
11
12#define SIO_PM_START 0x0FC8
13
14#define PMBASE PIIX_PM_START
15#define GPIREG0 (PMBASE+0x30)
16#define GPIREG(x) (GPIREG0+((x)/8))
17#define GPIBIT(x) (1 << ((x)%8))
18
19#define PIIX_GPI_BD_ID1 18
20#define PIIX_GPI_BD_ID2 19
21#define PIIX_GPI_BD_ID3 20
22#define PIIX_GPI_BD_ID4 21
23#define PIIX_GPI_BD_REG GPIREG(PIIX_GPI_BD_ID1)
24#define PIIX_GPI_BD_MASK (GPIBIT(PIIX_GPI_BD_ID1) | \
25 GPIBIT(PIIX_GPI_BD_ID2) | \
26 GPIBIT(PIIX_GPI_BD_ID3) | \
27 GPIBIT(PIIX_GPI_BD_ID4) )
28
29#define PIIX_GPI_BD_SHIFT (PIIX_GPI_BD_ID1 % 8)
30
31#define SIO_INDEX 0x2e
32#define SIO_DATA 0x2f
33
34#define SIO_DEV_SEL 0x7
35#define SIO_DEV_ENB 0x30
36#define SIO_DEV_MSB 0x60
37#define SIO_DEV_LSB 0x61
38
39#define SIO_GP_DEV 0x7
40
41#define SIO_GP_BASE SIO_GPIO_START
42#define SIO_GP_MSB (SIO_GP_BASE>>8)
43#define SIO_GP_LSB (SIO_GP_BASE&0xff)
44
45#define SIO_GP_DATA1 (SIO_GP_BASE+0)
46
47#define SIO_PM_DEV 0x8
48
49#define SIO_PM_BASE SIO_PM_START
50#define SIO_PM_MSB (SIO_PM_BASE>>8)
51#define SIO_PM_LSB (SIO_PM_BASE&0xff)
52#define SIO_PM_INDEX (SIO_PM_BASE+0)
53#define SIO_PM_DATA (SIO_PM_BASE+1)
54
55#define SIO_PM_FER2 0x1
56
57#define SIO_PM_GP_EN 0x80
58
59
60
61/*
62 * This is the dev/reg where generating a config cycle will
63 * result in a PCI special cycle.
64 */
65#define SPECIAL_DEV 0xff
66#define SPECIAL_REG 0x00
67
68/*
69 * PIIX4 needs to see a special cycle with the following data
70 * to be convinced the processor has gone into the stop grant
71 * state. PIIX4 insists on seeing this before it will power
72 * down a system.
73 */
74#define PIIX_SPECIAL_STOP 0x00120002
75
76#define PIIX4_RESET_PORT 0xcf9
77#define PIIX4_RESET_VAL 0x6
78
79#define PMSTS_PORT 0xf80 // 2 bytes PM Status
80#define PMEN_PORT 0xf82 // 2 bytes PM Enable
81#define PMCNTRL_PORT 0xf84 // 2 bytes PM Control
82
83#define PM_SUSPEND_ENABLE 0x2000 // start sequence to suspend state
84
85/*
86 * PMSTS and PMEN I/O bit definitions.
87 * (Bits are the same in both registers)
88 */
89#define PM_STS_RSM (1<<15) // Resume Status
90#define PM_STS_PWRBTNOR (1<<11) // Power Button Override
91#define PM_STS_RTC (1<<10) // RTC status
92#define PM_STS_PWRBTN (1<<8) // Power Button Pressed?
93#define PM_STS_GBL (1<<5) // Global Status
94#define PM_STS_BM (1<<4) // Bus Master Status
95#define PM_STS_TMROF (1<<0) // Timer Overflow Status.
96
97/*
98 * Stop clock GPI register
99 */
100#define PIIX_GPIREG0 (0xf80 + 0x30)
101
102/*
103 * Stop clock GPI bit in GPIREG0
104 */
105#define PIIX_GPI_STPCLK 0x4 // STPCLK signal routed back in
106
107#endif /* _ASM_X86_VISWS_PIIX4_H */
diff --git a/arch/x86/include/asm/visws/sgivw.h b/arch/x86/include/asm/visws/sgivw.h
new file mode 100644
index 000000000000..5fbf63e1003c
--- /dev/null
+++ b/arch/x86/include/asm/visws/sgivw.h
@@ -0,0 +1,5 @@
1/*
2 * Frame buffer position and size:
3 */
4extern unsigned long sgivwfb_mem_phys;
5extern unsigned long sgivwfb_mem_size;
diff --git a/arch/x86/include/asm/vm86.h b/arch/x86/include/asm/vm86.h
new file mode 100644
index 000000000000..f9303602fbc0
--- /dev/null
+++ b/arch/x86/include/asm/vm86.h
@@ -0,0 +1,208 @@
1#ifndef _ASM_X86_VM86_H
2#define _ASM_X86_VM86_H
3
4/*
5 * I'm guessing at the VIF/VIP flag usage, but hope that this is how
6 * the Pentium uses them. Linux will return from vm86 mode when both
7 * VIF and VIP is set.
8 *
9 * On a Pentium, we could probably optimize the virtual flags directly
10 * in the eflags register instead of doing it "by hand" in vflags...
11 *
12 * Linus
13 */
14
15#include <asm/processor-flags.h>
16
17#define BIOSSEG 0x0f000
18
19#define CPU_086 0
20#define CPU_186 1
21#define CPU_286 2
22#define CPU_386 3
23#define CPU_486 4
24#define CPU_586 5
25
26/*
27 * Return values for the 'vm86()' system call
28 */
29#define VM86_TYPE(retval) ((retval) & 0xff)
30#define VM86_ARG(retval) ((retval) >> 8)
31
32#define VM86_SIGNAL 0 /* return due to signal */
33#define VM86_UNKNOWN 1 /* unhandled GP fault
34 - IO-instruction or similar */
35#define VM86_INTx 2 /* int3/int x instruction (ARG = x) */
36#define VM86_STI 3 /* sti/popf/iret instruction enabled
37 virtual interrupts */
38
39/*
40 * Additional return values when invoking new vm86()
41 */
42#define VM86_PICRETURN 4 /* return due to pending PIC request */
43#define VM86_TRAP 6 /* return due to DOS-debugger request */
44
45/*
46 * function codes when invoking new vm86()
47 */
48#define VM86_PLUS_INSTALL_CHECK 0
49#define VM86_ENTER 1
50#define VM86_ENTER_NO_BYPASS 2
51#define VM86_REQUEST_IRQ 3
52#define VM86_FREE_IRQ 4
53#define VM86_GET_IRQ_BITS 5
54#define VM86_GET_AND_RESET_IRQ 6
55
56/*
57 * This is the stack-layout seen by the user space program when we have
58 * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout
59 * is 'kernel_vm86_regs' (see below).
60 */
61
62struct vm86_regs {
63/*
64 * normal regs, with special meaning for the segment descriptors..
65 */
66 long ebx;
67 long ecx;
68 long edx;
69 long esi;
70 long edi;
71 long ebp;
72 long eax;
73 long __null_ds;
74 long __null_es;
75 long __null_fs;
76 long __null_gs;
77 long orig_eax;
78 long eip;
79 unsigned short cs, __csh;
80 long eflags;
81 long esp;
82 unsigned short ss, __ssh;
83/*
84 * these are specific to v86 mode:
85 */
86 unsigned short es, __esh;
87 unsigned short ds, __dsh;
88 unsigned short fs, __fsh;
89 unsigned short gs, __gsh;
90};
91
92struct revectored_struct {
93 unsigned long __map[8]; /* 256 bits */
94};
95
96struct vm86_struct {
97 struct vm86_regs regs;
98 unsigned long flags;
99 unsigned long screen_bitmap;
100 unsigned long cpu_type;
101 struct revectored_struct int_revectored;
102 struct revectored_struct int21_revectored;
103};
104
105/*
106 * flags masks
107 */
108#define VM86_SCREEN_BITMAP 0x0001
109
110struct vm86plus_info_struct {
111 unsigned long force_return_for_pic:1;
112 unsigned long vm86dbg_active:1; /* for debugger */
113 unsigned long vm86dbg_TFpendig:1; /* for debugger */
114 unsigned long unused:28;
115 unsigned long is_vm86pus:1; /* for vm86 internal use */
116 unsigned char vm86dbg_intxxtab[32]; /* for debugger */
117};
118struct vm86plus_struct {
119 struct vm86_regs regs;
120 unsigned long flags;
121 unsigned long screen_bitmap;
122 unsigned long cpu_type;
123 struct revectored_struct int_revectored;
124 struct revectored_struct int21_revectored;
125 struct vm86plus_info_struct vm86plus;
126};
127
128#ifdef __KERNEL__
129
130#include <asm/ptrace.h>
131
132/*
133 * This is the (kernel) stack-layout when we have done a "SAVE_ALL" from vm86
134 * mode - the main change is that the old segment descriptors aren't
135 * useful any more and are forced to be zero by the kernel (and the
136 * hardware when a trap occurs), and the real segment descriptors are
137 * at the end of the structure. Look at ptrace.h to see the "normal"
138 * setup. For user space layout see 'struct vm86_regs' above.
139 */
140
141struct kernel_vm86_regs {
142/*
143 * normal regs, with special meaning for the segment descriptors..
144 */
145 struct pt_regs pt;
146/*
147 * these are specific to v86 mode:
148 */
149 unsigned short es, __esh;
150 unsigned short ds, __dsh;
151 unsigned short fs, __fsh;
152 unsigned short gs, __gsh;
153};
154
155struct kernel_vm86_struct {
156 struct kernel_vm86_regs regs;
157/*
158 * the below part remains on the kernel stack while we are in VM86 mode.
159 * 'tss.esp0' then contains the address of VM86_TSS_ESP0 below, and when we
160 * get forced back from VM86, the CPU and "SAVE_ALL" will restore the above
161 * 'struct kernel_vm86_regs' with the then actual values.
162 * Therefore, pt_regs in fact points to a complete 'kernel_vm86_struct'
163 * in kernelspace, hence we need not reget the data from userspace.
164 */
165#define VM86_TSS_ESP0 flags
166 unsigned long flags;
167 unsigned long screen_bitmap;
168 unsigned long cpu_type;
169 struct revectored_struct int_revectored;
170 struct revectored_struct int21_revectored;
171 struct vm86plus_info_struct vm86plus;
172 struct pt_regs *regs32; /* here we save the pointer to the old regs */
173/*
174 * The below is not part of the structure, but the stack layout continues
175 * this way. In front of 'return-eip' may be some data, depending on
176 * compilation, so we don't rely on this and save the pointer to 'oldregs'
177 * in 'regs32' above.
178 * However, with GCC-2.7.2 and the current CFLAGS you see exactly this:
179
180 long return-eip; from call to vm86()
181 struct pt_regs oldregs; user space registers as saved by syscall
182 */
183};
184
185#ifdef CONFIG_VM86
186
187void handle_vm86_fault(struct kernel_vm86_regs *, long);
188int handle_vm86_trap(struct kernel_vm86_regs *, long, int);
189struct pt_regs *save_v86_state(struct kernel_vm86_regs *);
190
191struct task_struct;
192void release_vm86_irqs(struct task_struct *);
193
194#else
195
196#define handle_vm86_fault(a, b)
197#define release_vm86_irqs(a)
198
199static inline int handle_vm86_trap(struct kernel_vm86_regs *a, long b, int c)
200{
201 return 0;
202}
203
204#endif /* CONFIG_VM86 */
205
206#endif /* __KERNEL__ */
207
208#endif /* _ASM_X86_VM86_H */
diff --git a/arch/x86/include/asm/vmi.h b/arch/x86/include/asm/vmi.h
new file mode 100644
index 000000000000..b7c0dea119fe
--- /dev/null
+++ b/arch/x86/include/asm/vmi.h
@@ -0,0 +1,263 @@
1/*
2 * VMI interface definition
3 *
4 * Copyright (C) 2005, VMware, 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, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
14 * NON INFRINGEMENT. See the GNU General Public License for more
15 * details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 *
21 * Maintained by: Zachary Amsden zach@vmware.com
22 *
23 */
24#include <linux/types.h>
25
26/*
27 *---------------------------------------------------------------------
28 *
29 * VMI Option ROM API
30 *
31 *---------------------------------------------------------------------
32 */
33#define VMI_SIGNATURE 0x696d5663 /* "cVmi" */
34
35#define PCI_VENDOR_ID_VMWARE 0x15AD
36#define PCI_DEVICE_ID_VMWARE_VMI 0x0801
37
38/*
39 * We use two version numbers for compatibility, with the major
40 * number signifying interface breakages, and the minor number
41 * interface extensions.
42 */
43#define VMI_API_REV_MAJOR 3
44#define VMI_API_REV_MINOR 0
45
46#define VMI_CALL_CPUID 0
47#define VMI_CALL_WRMSR 1
48#define VMI_CALL_RDMSR 2
49#define VMI_CALL_SetGDT 3
50#define VMI_CALL_SetLDT 4
51#define VMI_CALL_SetIDT 5
52#define VMI_CALL_SetTR 6
53#define VMI_CALL_GetGDT 7
54#define VMI_CALL_GetLDT 8
55#define VMI_CALL_GetIDT 9
56#define VMI_CALL_GetTR 10
57#define VMI_CALL_WriteGDTEntry 11
58#define VMI_CALL_WriteLDTEntry 12
59#define VMI_CALL_WriteIDTEntry 13
60#define VMI_CALL_UpdateKernelStack 14
61#define VMI_CALL_SetCR0 15
62#define VMI_CALL_SetCR2 16
63#define VMI_CALL_SetCR3 17
64#define VMI_CALL_SetCR4 18
65#define VMI_CALL_GetCR0 19
66#define VMI_CALL_GetCR2 20
67#define VMI_CALL_GetCR3 21
68#define VMI_CALL_GetCR4 22
69#define VMI_CALL_WBINVD 23
70#define VMI_CALL_SetDR 24
71#define VMI_CALL_GetDR 25
72#define VMI_CALL_RDPMC 26
73#define VMI_CALL_RDTSC 27
74#define VMI_CALL_CLTS 28
75#define VMI_CALL_EnableInterrupts 29
76#define VMI_CALL_DisableInterrupts 30
77#define VMI_CALL_GetInterruptMask 31
78#define VMI_CALL_SetInterruptMask 32
79#define VMI_CALL_IRET 33
80#define VMI_CALL_SYSEXIT 34
81#define VMI_CALL_Halt 35
82#define VMI_CALL_Reboot 36
83#define VMI_CALL_Shutdown 37
84#define VMI_CALL_SetPxE 38
85#define VMI_CALL_SetPxELong 39
86#define VMI_CALL_UpdatePxE 40
87#define VMI_CALL_UpdatePxELong 41
88#define VMI_CALL_MachineToPhysical 42
89#define VMI_CALL_PhysicalToMachine 43
90#define VMI_CALL_AllocatePage 44
91#define VMI_CALL_ReleasePage 45
92#define VMI_CALL_InvalPage 46
93#define VMI_CALL_FlushTLB 47
94#define VMI_CALL_SetLinearMapping 48
95
96#define VMI_CALL_SetIOPLMask 61
97#define VMI_CALL_SetInitialAPState 62
98#define VMI_CALL_APICWrite 63
99#define VMI_CALL_APICRead 64
100#define VMI_CALL_IODelay 65
101#define VMI_CALL_SetLazyMode 73
102
103/*
104 *---------------------------------------------------------------------
105 *
106 * MMU operation flags
107 *
108 *---------------------------------------------------------------------
109 */
110
111/* Flags used by VMI_{Allocate|Release}Page call */
112#define VMI_PAGE_PAE 0x10 /* Allocate PAE shadow */
113#define VMI_PAGE_CLONE 0x20 /* Clone from another shadow */
114#define VMI_PAGE_ZEROED 0x40 /* Page is pre-zeroed */
115
116
117/* Flags shared by Allocate|Release Page and PTE updates */
118#define VMI_PAGE_PT 0x01
119#define VMI_PAGE_PD 0x02
120#define VMI_PAGE_PDP 0x04
121#define VMI_PAGE_PML4 0x08
122
123#define VMI_PAGE_NORMAL 0x00 /* for debugging */
124
125/* Flags used by PTE updates */
126#define VMI_PAGE_CURRENT_AS 0x10 /* implies VMI_PAGE_VA_MASK is valid */
127#define VMI_PAGE_DEFER 0x20 /* may queue update until TLB inval */
128#define VMI_PAGE_VA_MASK 0xfffff000
129
130#ifdef CONFIG_X86_PAE
131#define VMI_PAGE_L1 (VMI_PAGE_PT | VMI_PAGE_PAE | VMI_PAGE_ZEROED)
132#define VMI_PAGE_L2 (VMI_PAGE_PD | VMI_PAGE_PAE | VMI_PAGE_ZEROED)
133#else
134#define VMI_PAGE_L1 (VMI_PAGE_PT | VMI_PAGE_ZEROED)
135#define VMI_PAGE_L2 (VMI_PAGE_PD | VMI_PAGE_ZEROED)
136#endif
137
138/* Flags used by VMI_FlushTLB call */
139#define VMI_FLUSH_TLB 0x01
140#define VMI_FLUSH_GLOBAL 0x02
141
142/*
143 *---------------------------------------------------------------------
144 *
145 * VMI relocation definitions for ROM call get_reloc
146 *
147 *---------------------------------------------------------------------
148 */
149
150/* VMI Relocation types */
151#define VMI_RELOCATION_NONE 0
152#define VMI_RELOCATION_CALL_REL 1
153#define VMI_RELOCATION_JUMP_REL 2
154#define VMI_RELOCATION_NOP 3
155
156#ifndef __ASSEMBLY__
157struct vmi_relocation_info {
158 unsigned char *eip;
159 unsigned char type;
160 unsigned char reserved[3];
161};
162#endif
163
164
165/*
166 *---------------------------------------------------------------------
167 *
168 * Generic ROM structures and definitions
169 *
170 *---------------------------------------------------------------------
171 */
172
173#ifndef __ASSEMBLY__
174
175struct vrom_header {
176 u16 rom_signature; /* option ROM signature */
177 u8 rom_length; /* ROM length in 512 byte chunks */
178 u8 rom_entry[4]; /* 16-bit code entry point */
179 u8 rom_pad0; /* 4-byte align pad */
180 u32 vrom_signature; /* VROM identification signature */
181 u8 api_version_min;/* Minor version of API */
182 u8 api_version_maj;/* Major version of API */
183 u8 jump_slots; /* Number of jump slots */
184 u8 reserved1; /* Reserved for expansion */
185 u32 virtual_top; /* Hypervisor virtual address start */
186 u16 reserved2; /* Reserved for expansion */
187 u16 license_offs; /* Offset to License string */
188 u16 pci_header_offs;/* Offset to PCI OPROM header */
189 u16 pnp_header_offs;/* Offset to PnP OPROM header */
190 u32 rom_pad3; /* PnP reserverd / VMI reserved */
191 u8 reserved[96]; /* Reserved for headers */
192 char vmi_init[8]; /* VMI_Init jump point */
193 char get_reloc[8]; /* VMI_GetRelocationInfo jump point */
194} __attribute__((packed));
195
196struct pnp_header {
197 char sig[4];
198 char rev;
199 char size;
200 short next;
201 short res;
202 long devID;
203 unsigned short manufacturer_offset;
204 unsigned short product_offset;
205} __attribute__((packed));
206
207struct pci_header {
208 char sig[4];
209 short vendorID;
210 short deviceID;
211 short vpdData;
212 short size;
213 char rev;
214 char class;
215 char subclass;
216 char interface;
217 short chunks;
218 char rom_version_min;
219 char rom_version_maj;
220 char codetype;
221 char lastRom;
222 short reserved;
223} __attribute__((packed));
224
225/* Function prototypes for bootstrapping */
226extern void vmi_init(void);
227extern void vmi_bringup(void);
228extern void vmi_apply_boot_page_allocations(void);
229
230/* State needed to start an application processor in an SMP system. */
231struct vmi_ap_state {
232 u32 cr0;
233 u32 cr2;
234 u32 cr3;
235 u32 cr4;
236
237 u64 efer;
238
239 u32 eip;
240 u32 eflags;
241 u32 eax;
242 u32 ebx;
243 u32 ecx;
244 u32 edx;
245 u32 esp;
246 u32 ebp;
247 u32 esi;
248 u32 edi;
249 u16 cs;
250 u16 ss;
251 u16 ds;
252 u16 es;
253 u16 fs;
254 u16 gs;
255 u16 ldtr;
256
257 u16 gdtr_limit;
258 u32 gdtr_base;
259 u32 idtr_base;
260 u16 idtr_limit;
261};
262
263#endif
diff --git a/arch/x86/include/asm/vmi_time.h b/arch/x86/include/asm/vmi_time.h
new file mode 100644
index 000000000000..c6e0bee93e3c
--- /dev/null
+++ b/arch/x86/include/asm/vmi_time.h
@@ -0,0 +1,98 @@
1/*
2 * VMI Time wrappers
3 *
4 * Copyright (C) 2006, VMware, 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, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
14 * NON INFRINGEMENT. See the GNU General Public License for more
15 * details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 *
21 * Send feedback to dhecht@vmware.com
22 *
23 */
24
25#ifndef _ASM_X86_VMI_TIME_H
26#define _ASM_X86_VMI_TIME_H
27
28/*
29 * Raw VMI call indices for timer functions
30 */
31#define VMI_CALL_GetCycleFrequency 66
32#define VMI_CALL_GetCycleCounter 67
33#define VMI_CALL_SetAlarm 68
34#define VMI_CALL_CancelAlarm 69
35#define VMI_CALL_GetWallclockTime 70
36#define VMI_CALL_WallclockUpdated 71
37
38/* Cached VMI timer operations */
39extern struct vmi_timer_ops {
40 u64 (*get_cycle_frequency)(void);
41 u64 (*get_cycle_counter)(int);
42 u64 (*get_wallclock)(void);
43 int (*wallclock_updated)(void);
44 void (*set_alarm)(u32 flags, u64 expiry, u64 period);
45 void (*cancel_alarm)(u32 flags);
46} vmi_timer_ops;
47
48/* Prototypes */
49extern void __init vmi_time_init(void);
50extern unsigned long vmi_get_wallclock(void);
51extern int vmi_set_wallclock(unsigned long now);
52extern unsigned long long vmi_sched_clock(void);
53extern unsigned long vmi_tsc_khz(void);
54
55#ifdef CONFIG_X86_LOCAL_APIC
56extern void __devinit vmi_time_bsp_init(void);
57extern void __devinit vmi_time_ap_init(void);
58#endif
59
60/*
61 * When run under a hypervisor, a vcpu is always in one of three states:
62 * running, halted, or ready. The vcpu is in the 'running' state if it
63 * is executing. When the vcpu executes the halt interface, the vcpu
64 * enters the 'halted' state and remains halted until there is some work
65 * pending for the vcpu (e.g. an alarm expires, host I/O completes on
66 * behalf of virtual I/O). At this point, the vcpu enters the 'ready'
67 * state (waiting for the hypervisor to reschedule it). Finally, at any
68 * time when the vcpu is not in the 'running' state nor the 'halted'
69 * state, it is in the 'ready' state.
70 *
71 * Real time is advances while the vcpu is 'running', 'ready', or
72 * 'halted'. Stolen time is the time in which the vcpu is in the
73 * 'ready' state. Available time is the remaining time -- the vcpu is
74 * either 'running' or 'halted'.
75 *
76 * All three views of time are accessible through the VMI cycle
77 * counters.
78 */
79
80/* The cycle counters. */
81#define VMI_CYCLES_REAL 0
82#define VMI_CYCLES_AVAILABLE 1
83#define VMI_CYCLES_STOLEN 2
84
85/* The alarm interface 'flags' bits */
86#define VMI_ALARM_COUNTERS 2
87
88#define VMI_ALARM_COUNTER_MASK 0x000000ff
89
90#define VMI_ALARM_WIRED_IRQ0 0x00000000
91#define VMI_ALARM_WIRED_LVTT 0x00010000
92
93#define VMI_ALARM_IS_ONESHOT 0x00000000
94#define VMI_ALARM_IS_PERIODIC 0x00000100
95
96#define CONFIG_VMI_ALARM_HZ 100
97
98#endif /* _ASM_X86_VMI_TIME_H */
diff --git a/arch/x86/include/asm/voyager.h b/arch/x86/include/asm/voyager.h
new file mode 100644
index 000000000000..9c811d2e6f91
--- /dev/null
+++ b/arch/x86/include/asm/voyager.h
@@ -0,0 +1,528 @@
1/* Copyright (C) 1999,2001
2 *
3 * Author: J.E.J.Bottomley@HansenPartnership.com
4 *
5 * Standard include definitions for the NCR Voyager system */
6
7#undef VOYAGER_DEBUG
8#undef VOYAGER_CAT_DEBUG
9
10#ifdef VOYAGER_DEBUG
11#define VDEBUG(x) printk x
12#else
13#define VDEBUG(x)
14#endif
15
16/* There are three levels of voyager machine: 3,4 and 5. The rule is
17 * if it's less than 3435 it's a Level 3 except for a 3360 which is
18 * a level 4. A 3435 or above is a Level 5 */
19#define VOYAGER_LEVEL5_AND_ABOVE 0x3435
20#define VOYAGER_LEVEL4 0x3360
21
22/* The L4 DINO ASIC */
23#define VOYAGER_DINO 0x43
24
25/* voyager ports in standard I/O space */
26#define VOYAGER_MC_SETUP 0x96
27
28
29#define VOYAGER_CAT_CONFIG_PORT 0x97
30# define VOYAGER_CAT_DESELECT 0xff
31#define VOYAGER_SSPB_RELOCATION_PORT 0x98
32
33/* Valid CAT controller commands */
34/* start instruction register cycle */
35#define VOYAGER_CAT_IRCYC 0x01
36/* start data register cycle */
37#define VOYAGER_CAT_DRCYC 0x02
38/* move to execute state */
39#define VOYAGER_CAT_RUN 0x0F
40/* end operation */
41#define VOYAGER_CAT_END 0x80
42/* hold in idle state */
43#define VOYAGER_CAT_HOLD 0x90
44/* single step an "intest" vector */
45#define VOYAGER_CAT_STEP 0xE0
46/* return cat controller to CLEMSON mode */
47#define VOYAGER_CAT_CLEMSON 0xFF
48
49/* the default cat command header */
50#define VOYAGER_CAT_HEADER 0x7F
51
52/* the range of possible CAT module ids in the system */
53#define VOYAGER_MIN_MODULE 0x10
54#define VOYAGER_MAX_MODULE 0x1f
55
56/* The voyager registers per asic */
57#define VOYAGER_ASIC_ID_REG 0x00
58#define VOYAGER_ASIC_TYPE_REG 0x01
59/* the sub address registers can be made auto incrementing on reads */
60#define VOYAGER_AUTO_INC_REG 0x02
61# define VOYAGER_AUTO_INC 0x04
62# define VOYAGER_NO_AUTO_INC 0xfb
63#define VOYAGER_SUBADDRDATA 0x03
64#define VOYAGER_SCANPATH 0x05
65# define VOYAGER_CONNECT_ASIC 0x01
66# define VOYAGER_DISCONNECT_ASIC 0xfe
67#define VOYAGER_SUBADDRLO 0x06
68#define VOYAGER_SUBADDRHI 0x07
69#define VOYAGER_SUBMODSELECT 0x08
70#define VOYAGER_SUBMODPRESENT 0x09
71
72#define VOYAGER_SUBADDR_LO 0xff
73#define VOYAGER_SUBADDR_HI 0xffff
74
75/* the maximum size of a scan path -- used to form instructions */
76#define VOYAGER_MAX_SCAN_PATH 0x100
77/* the biggest possible register size (in bytes) */
78#define VOYAGER_MAX_REG_SIZE 4
79
80/* Total number of possible modules (including submodules) */
81#define VOYAGER_MAX_MODULES 16
82/* Largest number of asics per module */
83#define VOYAGER_MAX_ASICS_PER_MODULE 7
84
85/* the CAT asic of each module is always the first one */
86#define VOYAGER_CAT_ID 0
87#define VOYAGER_PSI 0x1a
88
89/* voyager instruction operations and registers */
90#define VOYAGER_READ_CONFIG 0x1
91#define VOYAGER_WRITE_CONFIG 0x2
92#define VOYAGER_BYPASS 0xff
93
94typedef struct voyager_asic {
95 __u8 asic_addr; /* ASIC address; Level 4 */
96 __u8 asic_type; /* ASIC type */
97 __u8 asic_id; /* ASIC id */
98 __u8 jtag_id[4]; /* JTAG id */
99 __u8 asic_location; /* Location within scan path; start w/ 0 */
100 __u8 bit_location; /* Location within bit stream; start w/ 0 */
101 __u8 ireg_length; /* Instruction register length */
102 __u16 subaddr; /* Amount of sub address space */
103 struct voyager_asic *next; /* Next asic in linked list */
104} voyager_asic_t;
105
106typedef struct voyager_module {
107 __u8 module_addr; /* Module address */
108 __u8 scan_path_connected; /* Scan path connected */
109 __u16 ee_size; /* Size of the EEPROM */
110 __u16 num_asics; /* Number of Asics */
111 __u16 inst_bits; /* Instruction bits in the scan path */
112 __u16 largest_reg; /* Largest register in the scan path */
113 __u16 smallest_reg; /* Smallest register in the scan path */
114 voyager_asic_t *asic; /* First ASIC in scan path (CAT_I) */
115 struct voyager_module *submodule; /* Submodule pointer */
116 struct voyager_module *next; /* Next module in linked list */
117} voyager_module_t;
118
119typedef struct voyager_eeprom_hdr {
120 __u8 module_id[4];
121 __u8 version_id;
122 __u8 config_id;
123 __u16 boundry_id; /* boundary scan id */
124 __u16 ee_size; /* size of EEPROM */
125 __u8 assembly[11]; /* assembly # */
126 __u8 assembly_rev; /* assembly rev */
127 __u8 tracer[4]; /* tracer number */
128 __u16 assembly_cksum; /* asm checksum */
129 __u16 power_consump; /* pwr requirements */
130 __u16 num_asics; /* number of asics */
131 __u16 bist_time; /* min. bist time */
132 __u16 err_log_offset; /* error log offset */
133 __u16 scan_path_offset;/* scan path offset */
134 __u16 cct_offset;
135 __u16 log_length; /* length of err log */
136 __u16 xsum_end; /* offset to end of
137 checksum */
138 __u8 reserved[4];
139 __u8 sflag; /* starting sentinal */
140 __u8 part_number[13]; /* prom part number */
141 __u8 version[10]; /* version number */
142 __u8 signature[8];
143 __u16 eeprom_chksum;
144 __u32 data_stamp_offset;
145 __u8 eflag ; /* ending sentinal */
146} __attribute__((packed)) voyager_eprom_hdr_t;
147
148
149
150#define VOYAGER_EPROM_SIZE_OFFSET \
151 ((__u16)(&(((voyager_eprom_hdr_t *)0)->ee_size)))
152#define VOYAGER_XSUM_END_OFFSET 0x2a
153
154/* the following three definitions are for internal table layouts
155 * in the module EPROMs. We really only care about the IDs and
156 * offsets */
157typedef struct voyager_sp_table {
158 __u8 asic_id;
159 __u8 bypass_flag;
160 __u16 asic_data_offset;
161 __u16 config_data_offset;
162} __attribute__((packed)) voyager_sp_table_t;
163
164typedef struct voyager_jtag_table {
165 __u8 icode[4];
166 __u8 runbist[4];
167 __u8 intest[4];
168 __u8 samp_preld[4];
169 __u8 ireg_len;
170} __attribute__((packed)) voyager_jtt_t;
171
172typedef struct voyager_asic_data_table {
173 __u8 jtag_id[4];
174 __u16 length_bsr;
175 __u16 length_bist_reg;
176 __u32 bist_clk;
177 __u16 subaddr_bits;
178 __u16 seed_bits;
179 __u16 sig_bits;
180 __u16 jtag_offset;
181} __attribute__((packed)) voyager_at_t;
182
183/* Voyager Interrupt Controller (VIC) registers */
184
185/* Base to add to Cross Processor Interrupts (CPIs) when triggering
186 * the CPU IRQ line */
187/* register defines for the WCBICs (one per processor) */
188#define VOYAGER_WCBIC0 0x41 /* bus A node P1 processor 0 */
189#define VOYAGER_WCBIC1 0x49 /* bus A node P1 processor 1 */
190#define VOYAGER_WCBIC2 0x51 /* bus A node P2 processor 0 */
191#define VOYAGER_WCBIC3 0x59 /* bus A node P2 processor 1 */
192#define VOYAGER_WCBIC4 0x61 /* bus B node P1 processor 0 */
193#define VOYAGER_WCBIC5 0x69 /* bus B node P1 processor 1 */
194#define VOYAGER_WCBIC6 0x71 /* bus B node P2 processor 0 */
195#define VOYAGER_WCBIC7 0x79 /* bus B node P2 processor 1 */
196
197
198/* top of memory registers */
199#define VOYAGER_WCBIC_TOM_L 0x4
200#define VOYAGER_WCBIC_TOM_H 0x5
201
202/* register defines for Voyager Memory Contol (VMC)
203 * these are present on L4 machines only */
204#define VOYAGER_VMC1 0x81
205#define VOYAGER_VMC2 0x91
206#define VOYAGER_VMC3 0xa1
207#define VOYAGER_VMC4 0xb1
208
209/* VMC Ports */
210#define VOYAGER_VMC_MEMORY_SETUP 0x9
211# define VMC_Interleaving 0x01
212# define VMC_4Way 0x02
213# define VMC_EvenCacheLines 0x04
214# define VMC_HighLine 0x08
215# define VMC_Start0_Enable 0x20
216# define VMC_Start1_Enable 0x40
217# define VMC_Vremap 0x80
218#define VOYAGER_VMC_BANK_DENSITY 0xa
219# define VMC_BANK_EMPTY 0
220# define VMC_BANK_4MB 1
221# define VMC_BANK_16MB 2
222# define VMC_BANK_64MB 3
223# define VMC_BANK0_MASK 0x03
224# define VMC_BANK1_MASK 0x0C
225# define VMC_BANK2_MASK 0x30
226# define VMC_BANK3_MASK 0xC0
227
228/* Magellan Memory Controller (MMC) defines - present on L5 */
229#define VOYAGER_MMC_ASIC_ID 1
230/* the two memory modules corresponding to memory cards in the system */
231#define VOYAGER_MMC_MEMORY0_MODULE 0x14
232#define VOYAGER_MMC_MEMORY1_MODULE 0x15
233/* the Magellan Memory Address (MMA) defines */
234#define VOYAGER_MMA_ASIC_ID 2
235
236/* Submodule number for the Quad Baseboard */
237#define VOYAGER_QUAD_BASEBOARD 1
238
239/* ASIC defines for the Quad Baseboard */
240#define VOYAGER_QUAD_QDATA0 1
241#define VOYAGER_QUAD_QDATA1 2
242#define VOYAGER_QUAD_QABC 3
243
244/* Useful areas in extended CMOS */
245#define VOYAGER_PROCESSOR_PRESENT_MASK 0x88a
246#define VOYAGER_MEMORY_CLICKMAP 0xa23
247#define VOYAGER_DUMP_LOCATION 0xb1a
248
249/* SUS In Control bit - used to tell SUS that we don't need to be
250 * babysat anymore */
251#define VOYAGER_SUS_IN_CONTROL_PORT 0x3ff
252# define VOYAGER_IN_CONTROL_FLAG 0x80
253
254/* Voyager PSI defines */
255#define VOYAGER_PSI_STATUS_REG 0x08
256# define PSI_DC_FAIL 0x01
257# define PSI_MON 0x02
258# define PSI_FAULT 0x04
259# define PSI_ALARM 0x08
260# define PSI_CURRENT 0x10
261# define PSI_DVM 0x20
262# define PSI_PSCFAULT 0x40
263# define PSI_STAT_CHG 0x80
264
265#define VOYAGER_PSI_SUPPLY_REG 0x8000
266 /* read */
267# define PSI_FAIL_DC 0x01
268# define PSI_FAIL_AC 0x02
269# define PSI_MON_INT 0x04
270# define PSI_SWITCH_OFF 0x08
271# define PSI_HX_OFF 0x10
272# define PSI_SECURITY 0x20
273# define PSI_CMOS_BATT_LOW 0x40
274# define PSI_CMOS_BATT_FAIL 0x80
275 /* write */
276# define PSI_CLR_SWITCH_OFF 0x13
277# define PSI_CLR_HX_OFF 0x14
278# define PSI_CLR_CMOS_BATT_FAIL 0x17
279
280#define VOYAGER_PSI_MASK 0x8001
281# define PSI_MASK_MASK 0x10
282
283#define VOYAGER_PSI_AC_FAIL_REG 0x8004
284#define AC_FAIL_STAT_CHANGE 0x80
285
286#define VOYAGER_PSI_GENERAL_REG 0x8007
287 /* read */
288# define PSI_SWITCH_ON 0x01
289# define PSI_SWITCH_ENABLED 0x02
290# define PSI_ALARM_ENABLED 0x08
291# define PSI_SECURE_ENABLED 0x10
292# define PSI_COLD_RESET 0x20
293# define PSI_COLD_START 0x80
294 /* write */
295# define PSI_POWER_DOWN 0x10
296# define PSI_SWITCH_DISABLE 0x01
297# define PSI_SWITCH_ENABLE 0x11
298# define PSI_CLEAR 0x12
299# define PSI_ALARM_DISABLE 0x03
300# define PSI_ALARM_ENABLE 0x13
301# define PSI_CLEAR_COLD_RESET 0x05
302# define PSI_SET_COLD_RESET 0x15
303# define PSI_CLEAR_COLD_START 0x07
304# define PSI_SET_COLD_START 0x17
305
306
307
308struct voyager_bios_info {
309 __u8 len;
310 __u8 major;
311 __u8 minor;
312 __u8 debug;
313 __u8 num_classes;
314 __u8 class_1;
315 __u8 class_2;
316};
317
318/* The following structures and definitions are for the Kernel/SUS
319 * interface these are needed to find out how SUS initialised any Quad
320 * boards in the system */
321
322#define NUMBER_OF_MC_BUSSES 2
323#define SLOTS_PER_MC_BUS 8
324#define MAX_CPUS 16 /* 16 way CPU system */
325#define MAX_PROCESSOR_BOARDS 4 /* 4 processor slot system */
326#define MAX_CACHE_LEVELS 4 /* # of cache levels supported */
327#define MAX_SHARED_CPUS 4 /* # of CPUs that can share a LARC */
328#define NUMBER_OF_POS_REGS 8
329
330typedef struct {
331 __u8 MC_Slot;
332 __u8 POS_Values[NUMBER_OF_POS_REGS];
333} __attribute__((packed)) MC_SlotInformation_t;
334
335struct QuadDescription {
336 __u8 Type; /* for type 0 (DYADIC or MONADIC) all fields
337 * will be zero except for slot */
338 __u8 StructureVersion;
339 __u32 CPI_BaseAddress;
340 __u32 LARC_BankSize;
341 __u32 LocalMemoryStateBits;
342 __u8 Slot; /* Processor slots 1 - 4 */
343} __attribute__((packed));
344
345struct ProcBoardInfo {
346 __u8 Type;
347 __u8 StructureVersion;
348 __u8 NumberOfBoards;
349 struct QuadDescription QuadData[MAX_PROCESSOR_BOARDS];
350} __attribute__((packed));
351
352struct CacheDescription {
353 __u8 Level;
354 __u32 TotalSize;
355 __u16 LineSize;
356 __u8 Associativity;
357 __u8 CacheType;
358 __u8 WriteType;
359 __u8 Number_CPUs_SharedBy;
360 __u8 Shared_CPUs_Hardware_IDs[MAX_SHARED_CPUS];
361
362} __attribute__((packed));
363
364struct CPU_Description {
365 __u8 CPU_HardwareId;
366 char *FRU_String;
367 __u8 NumberOfCacheLevels;
368 struct CacheDescription CacheLevelData[MAX_CACHE_LEVELS];
369} __attribute__((packed));
370
371struct CPU_Info {
372 __u8 Type;
373 __u8 StructureVersion;
374 __u8 NumberOf_CPUs;
375 struct CPU_Description CPU_Data[MAX_CPUS];
376} __attribute__((packed));
377
378
379/*
380 * This structure will be used by SUS and the OS.
381 * The assumption about this structure is that no blank space is
382 * packed in it by our friend the compiler.
383 */
384typedef struct {
385 __u8 Mailbox_SUS; /* Written to by SUS to give
386 commands/response to the OS */
387 __u8 Mailbox_OS; /* Written to by the OS to give
388 commands/response to SUS */
389 __u8 SUS_MailboxVersion; /* Tells the OS which iteration of the
390 interface SUS supports */
391 __u8 OS_MailboxVersion; /* Tells SUS which iteration of the
392 interface the OS supports */
393 __u32 OS_Flags; /* Flags set by the OS as info for
394 SUS */
395 __u32 SUS_Flags; /* Flags set by SUS as info
396 for the OS */
397 __u32 WatchDogPeriod; /* Watchdog period (in seconds) which
398 the DP uses to see if the OS
399 is dead */
400 __u32 WatchDogCount; /* Updated by the OS on every tic. */
401 __u32 MemoryFor_SUS_ErrorLog; /* Flat 32 bit address which tells SUS
402 where to stuff the SUS error log
403 on a dump */
404 MC_SlotInformation_t MC_SlotInfo[NUMBER_OF_MC_BUSSES*SLOTS_PER_MC_BUS];
405 /* Storage for MCA POS data */
406 /* All new SECOND_PASS_INTERFACE fields added from this point */
407 struct ProcBoardInfo *BoardData;
408 struct CPU_Info *CPU_Data;
409 /* All new fields must be added from this point */
410} Voyager_KernelSUS_Mbox_t;
411
412/* structure for finding the right memory address to send a QIC CPI to */
413struct voyager_qic_cpi {
414 /* Each cache line (32 bytes) can trigger a cpi. The cpi
415 * read/write may occur anywhere in the cache line---pick the
416 * middle to be safe */
417 struct {
418 __u32 pad1[3];
419 __u32 cpi;
420 __u32 pad2[4];
421 } qic_cpi[8];
422};
423
424struct voyager_status {
425 __u32 power_fail:1;
426 __u32 switch_off:1;
427 __u32 request_from_kernel:1;
428};
429
430struct voyager_psi_regs {
431 __u8 cat_id;
432 __u8 cat_dev;
433 __u8 cat_control;
434 __u8 subaddr;
435 __u8 dummy4;
436 __u8 checkbit;
437 __u8 subaddr_low;
438 __u8 subaddr_high;
439 __u8 intstatus;
440 __u8 stat1;
441 __u8 stat3;
442 __u8 fault;
443 __u8 tms;
444 __u8 gen;
445 __u8 sysconf;
446 __u8 dummy15;
447};
448
449struct voyager_psi_subregs {
450 __u8 supply;
451 __u8 mask;
452 __u8 present;
453 __u8 DCfail;
454 __u8 ACfail;
455 __u8 fail;
456 __u8 UPSfail;
457 __u8 genstatus;
458};
459
460struct voyager_psi {
461 struct voyager_psi_regs regs;
462 struct voyager_psi_subregs subregs;
463};
464
465struct voyager_SUS {
466#define VOYAGER_DUMP_BUTTON_NMI 0x1
467#define VOYAGER_SUS_VALID 0x2
468#define VOYAGER_SYSINT_COMPLETE 0x3
469 __u8 SUS_mbox;
470#define VOYAGER_NO_COMMAND 0x0
471#define VOYAGER_IGNORE_DUMP 0x1
472#define VOYAGER_DO_DUMP 0x2
473#define VOYAGER_SYSINT_HANDSHAKE 0x3
474#define VOYAGER_DO_MEM_DUMP 0x4
475#define VOYAGER_SYSINT_WAS_RECOVERED 0x5
476 __u8 kernel_mbox;
477#define VOYAGER_MAILBOX_VERSION 0x10
478 __u8 SUS_version;
479 __u8 kernel_version;
480#define VOYAGER_OS_HAS_SYSINT 0x1
481#define VOYAGER_OS_IN_PROGRESS 0x2
482#define VOYAGER_UPDATING_WDPERIOD 0x4
483 __u32 kernel_flags;
484#define VOYAGER_SUS_BOOTING 0x1
485#define VOYAGER_SUS_IN_PROGRESS 0x2
486 __u32 SUS_flags;
487 __u32 watchdog_period;
488 __u32 watchdog_count;
489 __u32 SUS_errorlog;
490 /* lots of system configuration stuff under here */
491};
492
493/* Variables exported by voyager_smp */
494extern __u32 voyager_extended_vic_processors;
495extern __u32 voyager_allowed_boot_processors;
496extern __u32 voyager_quad_processors;
497extern struct voyager_qic_cpi *voyager_quad_cpi_addr[NR_CPUS];
498extern struct voyager_SUS *voyager_SUS;
499
500/* variables exported always */
501extern struct task_struct *voyager_thread;
502extern int voyager_level;
503extern struct voyager_status voyager_status;
504
505/* functions exported by the voyager and voyager_smp modules */
506extern int voyager_cat_readb(__u8 module, __u8 asic, int reg);
507extern void voyager_cat_init(void);
508extern void voyager_detect(struct voyager_bios_info *);
509extern void voyager_trap_init(void);
510extern void voyager_setup_irqs(void);
511extern int voyager_memory_detect(int region, __u32 *addr, __u32 *length);
512extern void voyager_smp_intr_init(void);
513extern __u8 voyager_extended_cmos_read(__u16 cmos_address);
514extern void voyager_smp_dump(void);
515extern void voyager_timer_interrupt(void);
516extern void smp_local_timer_interrupt(void);
517extern void voyager_power_off(void);
518extern void smp_voyager_power_off(void *dummy);
519extern void voyager_restart(void);
520extern void voyager_cat_power_off(void);
521extern void voyager_cat_do_common_interrupt(void);
522extern void voyager_handle_nmi(void);
523/* Commands for the following are */
524#define VOYAGER_PSI_READ 0
525#define VOYAGER_PSI_WRITE 1
526#define VOYAGER_PSI_SUBREAD 2
527#define VOYAGER_PSI_SUBWRITE 3
528extern void voyager_cat_psi(__u8, __u16, __u8 *);
diff --git a/arch/x86/include/asm/vsyscall.h b/arch/x86/include/asm/vsyscall.h
new file mode 100644
index 000000000000..d0983d255fbd
--- /dev/null
+++ b/arch/x86/include/asm/vsyscall.h
@@ -0,0 +1,44 @@
1#ifndef _ASM_X86_VSYSCALL_H
2#define _ASM_X86_VSYSCALL_H
3
4enum vsyscall_num {
5 __NR_vgettimeofday,
6 __NR_vtime,
7 __NR_vgetcpu,
8};
9
10#define VSYSCALL_START (-10UL << 20)
11#define VSYSCALL_SIZE 1024
12#define VSYSCALL_END (-2UL << 20)
13#define VSYSCALL_MAPPED_PAGES 1
14#define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))
15
16#ifdef __KERNEL__
17#include <linux/seqlock.h>
18
19#define __section_vgetcpu_mode __attribute__ ((unused, __section__ (".vgetcpu_mode"), aligned(16)))
20#define __section_jiffies __attribute__ ((unused, __section__ (".jiffies"), aligned(16)))
21
22/* Definitions for CONFIG_GENERIC_TIME definitions */
23#define __section_vsyscall_gtod_data __attribute__ \
24 ((unused, __section__ (".vsyscall_gtod_data"),aligned(16)))
25#define __section_vsyscall_clock __attribute__ \
26 ((unused, __section__ (".vsyscall_clock"),aligned(16)))
27#define __vsyscall_fn \
28 __attribute__ ((unused, __section__(".vsyscall_fn"))) notrace
29
30#define VGETCPU_RDTSCP 1
31#define VGETCPU_LSL 2
32
33extern int __vgetcpu_mode;
34extern volatile unsigned long __jiffies;
35
36/* kernel space (writeable) */
37extern int vgetcpu_mode;
38extern struct timezone sys_tz;
39
40extern void map_vsyscall(void);
41
42#endif /* __KERNEL__ */
43
44#endif /* _ASM_X86_VSYSCALL_H */
diff --git a/arch/x86/include/asm/xcr.h b/arch/x86/include/asm/xcr.h
new file mode 100644
index 000000000000..f2cba4e79a23
--- /dev/null
+++ b/arch/x86/include/asm/xcr.h
@@ -0,0 +1,49 @@
1/* -*- linux-c -*- ------------------------------------------------------- *
2 *
3 * Copyright 2008 rPath, Inc. - All Rights Reserved
4 *
5 * This file is part of the Linux kernel, and is made available under
6 * the terms of the GNU General Public License version 2 or (at your
7 * option) any later version; incorporated herein by reference.
8 *
9 * ----------------------------------------------------------------------- */
10
11/*
12 * asm-x86/xcr.h
13 *
14 * Definitions for the eXtended Control Register instructions
15 */
16
17#ifndef _ASM_X86_XCR_H
18#define _ASM_X86_XCR_H
19
20#define XCR_XFEATURE_ENABLED_MASK 0x00000000
21
22#ifdef __KERNEL__
23# ifndef __ASSEMBLY__
24
25#include <linux/types.h>
26
27static inline u64 xgetbv(u32 index)
28{
29 u32 eax, edx;
30
31 asm volatile(".byte 0x0f,0x01,0xd0" /* xgetbv */
32 : "=a" (eax), "=d" (edx)
33 : "c" (index));
34 return eax + ((u64)edx << 32);
35}
36
37static inline void xsetbv(u32 index, u64 value)
38{
39 u32 eax = value;
40 u32 edx = value >> 32;
41
42 asm volatile(".byte 0x0f,0x01,0xd1" /* xsetbv */
43 : : "a" (eax), "d" (edx), "c" (index));
44}
45
46# endif /* __ASSEMBLY__ */
47#endif /* __KERNEL__ */
48
49#endif /* _ASM_X86_XCR_H */
diff --git a/arch/x86/include/asm/xen/events.h b/arch/x86/include/asm/xen/events.h
new file mode 100644
index 000000000000..19144184983a
--- /dev/null
+++ b/arch/x86/include/asm/xen/events.h
@@ -0,0 +1,24 @@
1#ifndef _ASM_X86_XEN_EVENTS_H
2#define _ASM_X86_XEN_EVENTS_H
3
4enum ipi_vector {
5 XEN_RESCHEDULE_VECTOR,
6 XEN_CALL_FUNCTION_VECTOR,
7 XEN_CALL_FUNCTION_SINGLE_VECTOR,
8 XEN_SPIN_UNLOCK_VECTOR,
9
10 XEN_NR_IPIS,
11};
12
13static inline int xen_irqs_disabled(struct pt_regs *regs)
14{
15 return raw_irqs_disabled_flags(regs->flags);
16}
17
18static inline void xen_do_IRQ(int irq, struct pt_regs *regs)
19{
20 regs->orig_ax = ~irq;
21 do_IRQ(regs);
22}
23
24#endif /* _ASM_X86_XEN_EVENTS_H */
diff --git a/arch/x86/include/asm/xen/grant_table.h b/arch/x86/include/asm/xen/grant_table.h
new file mode 100644
index 000000000000..fdbbb45767a6
--- /dev/null
+++ b/arch/x86/include/asm/xen/grant_table.h
@@ -0,0 +1,7 @@
1#ifndef _ASM_X86_XEN_GRANT_TABLE_H
2#define _ASM_X86_XEN_GRANT_TABLE_H
3
4#define xen_alloc_vm_area(size) alloc_vm_area(size)
5#define xen_free_vm_area(area) free_vm_area(area)
6
7#endif /* _ASM_X86_XEN_GRANT_TABLE_H */
diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h
new file mode 100644
index 000000000000..3f6000d95fe2
--- /dev/null
+++ b/arch/x86/include/asm/xen/hypercall.h
@@ -0,0 +1,527 @@
1/******************************************************************************
2 * hypercall.h
3 *
4 * Linux-specific hypervisor handling.
5 *
6 * Copyright (c) 2002-2004, K A Fraser
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation; or, when distributed
11 * separately from the Linux kernel or incorporated into other
12 * software packages, subject to the following license:
13 *
14 * Permission is hereby granted, free of charge, to any person obtaining a copy
15 * of this source file (the "Software"), to deal in the Software without
16 * restriction, including without limitation the rights to use, copy, modify,
17 * merge, publish, distribute, sublicense, and/or sell copies of the Software,
18 * and to permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be included in
22 * all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30 * IN THE SOFTWARE.
31 */
32
33#ifndef _ASM_X86_XEN_HYPERCALL_H
34#define _ASM_X86_XEN_HYPERCALL_H
35
36#include <linux/errno.h>
37#include <linux/string.h>
38
39#include <xen/interface/xen.h>
40#include <xen/interface/sched.h>
41#include <xen/interface/physdev.h>
42
43/*
44 * The hypercall asms have to meet several constraints:
45 * - Work on 32- and 64-bit.
46 * The two architectures put their arguments in different sets of
47 * registers.
48 *
49 * - Work around asm syntax quirks
50 * It isn't possible to specify one of the rNN registers in a
51 * constraint, so we use explicit register variables to get the
52 * args into the right place.
53 *
54 * - Mark all registers as potentially clobbered
55 * Even unused parameters can be clobbered by the hypervisor, so we
56 * need to make sure gcc knows it.
57 *
58 * - Avoid compiler bugs.
59 * This is the tricky part. Because x86_32 has such a constrained
60 * register set, gcc versions below 4.3 have trouble generating
61 * code when all the arg registers and memory are trashed by the
62 * asm. There are syntactically simpler ways of achieving the
63 * semantics below, but they cause the compiler to crash.
64 *
65 * The only combination I found which works is:
66 * - assign the __argX variables first
67 * - list all actually used parameters as "+r" (__argX)
68 * - clobber the rest
69 *
70 * The result certainly isn't pretty, and it really shows up cpp's
71 * weakness as as macro language. Sorry. (But let's just give thanks
72 * there aren't more than 5 arguments...)
73 */
74
75extern struct { char _entry[32]; } hypercall_page[];
76
77#define __HYPERCALL "call hypercall_page+%c[offset]"
78#define __HYPERCALL_ENTRY(x) \
79 [offset] "i" (__HYPERVISOR_##x * sizeof(hypercall_page[0]))
80
81#ifdef CONFIG_X86_32
82#define __HYPERCALL_RETREG "eax"
83#define __HYPERCALL_ARG1REG "ebx"
84#define __HYPERCALL_ARG2REG "ecx"
85#define __HYPERCALL_ARG3REG "edx"
86#define __HYPERCALL_ARG4REG "esi"
87#define __HYPERCALL_ARG5REG "edi"
88#else
89#define __HYPERCALL_RETREG "rax"
90#define __HYPERCALL_ARG1REG "rdi"
91#define __HYPERCALL_ARG2REG "rsi"
92#define __HYPERCALL_ARG3REG "rdx"
93#define __HYPERCALL_ARG4REG "r10"
94#define __HYPERCALL_ARG5REG "r8"
95#endif
96
97#define __HYPERCALL_DECLS \
98 register unsigned long __res asm(__HYPERCALL_RETREG); \
99 register unsigned long __arg1 asm(__HYPERCALL_ARG1REG) = __arg1; \
100 register unsigned long __arg2 asm(__HYPERCALL_ARG2REG) = __arg2; \
101 register unsigned long __arg3 asm(__HYPERCALL_ARG3REG) = __arg3; \
102 register unsigned long __arg4 asm(__HYPERCALL_ARG4REG) = __arg4; \
103 register unsigned long __arg5 asm(__HYPERCALL_ARG5REG) = __arg5;
104
105#define __HYPERCALL_0PARAM "=r" (__res)
106#define __HYPERCALL_1PARAM __HYPERCALL_0PARAM, "+r" (__arg1)
107#define __HYPERCALL_2PARAM __HYPERCALL_1PARAM, "+r" (__arg2)
108#define __HYPERCALL_3PARAM __HYPERCALL_2PARAM, "+r" (__arg3)
109#define __HYPERCALL_4PARAM __HYPERCALL_3PARAM, "+r" (__arg4)
110#define __HYPERCALL_5PARAM __HYPERCALL_4PARAM, "+r" (__arg5)
111
112#define __HYPERCALL_0ARG()
113#define __HYPERCALL_1ARG(a1) \
114 __HYPERCALL_0ARG() __arg1 = (unsigned long)(a1);
115#define __HYPERCALL_2ARG(a1,a2) \
116 __HYPERCALL_1ARG(a1) __arg2 = (unsigned long)(a2);
117#define __HYPERCALL_3ARG(a1,a2,a3) \
118 __HYPERCALL_2ARG(a1,a2) __arg3 = (unsigned long)(a3);
119#define __HYPERCALL_4ARG(a1,a2,a3,a4) \
120 __HYPERCALL_3ARG(a1,a2,a3) __arg4 = (unsigned long)(a4);
121#define __HYPERCALL_5ARG(a1,a2,a3,a4,a5) \
122 __HYPERCALL_4ARG(a1,a2,a3,a4) __arg5 = (unsigned long)(a5);
123
124#define __HYPERCALL_CLOBBER5 "memory"
125#define __HYPERCALL_CLOBBER4 __HYPERCALL_CLOBBER5, __HYPERCALL_ARG5REG
126#define __HYPERCALL_CLOBBER3 __HYPERCALL_CLOBBER4, __HYPERCALL_ARG4REG
127#define __HYPERCALL_CLOBBER2 __HYPERCALL_CLOBBER3, __HYPERCALL_ARG3REG
128#define __HYPERCALL_CLOBBER1 __HYPERCALL_CLOBBER2, __HYPERCALL_ARG2REG
129#define __HYPERCALL_CLOBBER0 __HYPERCALL_CLOBBER1, __HYPERCALL_ARG1REG
130
131#define _hypercall0(type, name) \
132({ \
133 __HYPERCALL_DECLS; \
134 __HYPERCALL_0ARG(); \
135 asm volatile (__HYPERCALL \
136 : __HYPERCALL_0PARAM \
137 : __HYPERCALL_ENTRY(name) \
138 : __HYPERCALL_CLOBBER0); \
139 (type)__res; \
140})
141
142#define _hypercall1(type, name, a1) \
143({ \
144 __HYPERCALL_DECLS; \
145 __HYPERCALL_1ARG(a1); \
146 asm volatile (__HYPERCALL \
147 : __HYPERCALL_1PARAM \
148 : __HYPERCALL_ENTRY(name) \
149 : __HYPERCALL_CLOBBER1); \
150 (type)__res; \
151})
152
153#define _hypercall2(type, name, a1, a2) \
154({ \
155 __HYPERCALL_DECLS; \
156 __HYPERCALL_2ARG(a1, a2); \
157 asm volatile (__HYPERCALL \
158 : __HYPERCALL_2PARAM \
159 : __HYPERCALL_ENTRY(name) \
160 : __HYPERCALL_CLOBBER2); \
161 (type)__res; \
162})
163
164#define _hypercall3(type, name, a1, a2, a3) \
165({ \
166 __HYPERCALL_DECLS; \
167 __HYPERCALL_3ARG(a1, a2, a3); \
168 asm volatile (__HYPERCALL \
169 : __HYPERCALL_3PARAM \
170 : __HYPERCALL_ENTRY(name) \
171 : __HYPERCALL_CLOBBER3); \
172 (type)__res; \
173})
174
175#define _hypercall4(type, name, a1, a2, a3, a4) \
176({ \
177 __HYPERCALL_DECLS; \
178 __HYPERCALL_4ARG(a1, a2, a3, a4); \
179 asm volatile (__HYPERCALL \
180 : __HYPERCALL_4PARAM \
181 : __HYPERCALL_ENTRY(name) \
182 : __HYPERCALL_CLOBBER4); \
183 (type)__res; \
184})
185
186#define _hypercall5(type, name, a1, a2, a3, a4, a5) \
187({ \
188 __HYPERCALL_DECLS; \
189 __HYPERCALL_5ARG(a1, a2, a3, a4, a5); \
190 asm volatile (__HYPERCALL \
191 : __HYPERCALL_5PARAM \
192 : __HYPERCALL_ENTRY(name) \
193 : __HYPERCALL_CLOBBER5); \
194 (type)__res; \
195})
196
197static inline int
198HYPERVISOR_set_trap_table(struct trap_info *table)
199{
200 return _hypercall1(int, set_trap_table, table);
201}
202
203static inline int
204HYPERVISOR_mmu_update(struct mmu_update *req, int count,
205 int *success_count, domid_t domid)
206{
207 return _hypercall4(int, mmu_update, req, count, success_count, domid);
208}
209
210static inline int
211HYPERVISOR_mmuext_op(struct mmuext_op *op, int count,
212 int *success_count, domid_t domid)
213{
214 return _hypercall4(int, mmuext_op, op, count, success_count, domid);
215}
216
217static inline int
218HYPERVISOR_set_gdt(unsigned long *frame_list, int entries)
219{
220 return _hypercall2(int, set_gdt, frame_list, entries);
221}
222
223static inline int
224HYPERVISOR_stack_switch(unsigned long ss, unsigned long esp)
225{
226 return _hypercall2(int, stack_switch, ss, esp);
227}
228
229#ifdef CONFIG_X86_32
230static inline int
231HYPERVISOR_set_callbacks(unsigned long event_selector,
232 unsigned long event_address,
233 unsigned long failsafe_selector,
234 unsigned long failsafe_address)
235{
236 return _hypercall4(int, set_callbacks,
237 event_selector, event_address,
238 failsafe_selector, failsafe_address);
239}
240#else /* CONFIG_X86_64 */
241static inline int
242HYPERVISOR_set_callbacks(unsigned long event_address,
243 unsigned long failsafe_address,
244 unsigned long syscall_address)
245{
246 return _hypercall3(int, set_callbacks,
247 event_address, failsafe_address,
248 syscall_address);
249}
250#endif /* CONFIG_X86_{32,64} */
251
252static inline int
253HYPERVISOR_callback_op(int cmd, void *arg)
254{
255 return _hypercall2(int, callback_op, cmd, arg);
256}
257
258static inline int
259HYPERVISOR_fpu_taskswitch(int set)
260{
261 return _hypercall1(int, fpu_taskswitch, set);
262}
263
264static inline int
265HYPERVISOR_sched_op(int cmd, void *arg)
266{
267 return _hypercall2(int, sched_op_new, cmd, arg);
268}
269
270static inline long
271HYPERVISOR_set_timer_op(u64 timeout)
272{
273 unsigned long timeout_hi = (unsigned long)(timeout>>32);
274 unsigned long timeout_lo = (unsigned long)timeout;
275 return _hypercall2(long, set_timer_op, timeout_lo, timeout_hi);
276}
277
278static inline int
279HYPERVISOR_set_debugreg(int reg, unsigned long value)
280{
281 return _hypercall2(int, set_debugreg, reg, value);
282}
283
284static inline unsigned long
285HYPERVISOR_get_debugreg(int reg)
286{
287 return _hypercall1(unsigned long, get_debugreg, reg);
288}
289
290static inline int
291HYPERVISOR_update_descriptor(u64 ma, u64 desc)
292{
293 return _hypercall4(int, update_descriptor, ma, ma>>32, desc, desc>>32);
294}
295
296static inline int
297HYPERVISOR_memory_op(unsigned int cmd, void *arg)
298{
299 return _hypercall2(int, memory_op, cmd, arg);
300}
301
302static inline int
303HYPERVISOR_multicall(void *call_list, int nr_calls)
304{
305 return _hypercall2(int, multicall, call_list, nr_calls);
306}
307
308static inline int
309HYPERVISOR_update_va_mapping(unsigned long va, pte_t new_val,
310 unsigned long flags)
311{
312 if (sizeof(new_val) == sizeof(long))
313 return _hypercall3(int, update_va_mapping, va,
314 new_val.pte, flags);
315 else
316 return _hypercall4(int, update_va_mapping, va,
317 new_val.pte, new_val.pte >> 32, flags);
318}
319
320static inline int
321HYPERVISOR_event_channel_op(int cmd, void *arg)
322{
323 int rc = _hypercall2(int, event_channel_op, cmd, arg);
324 if (unlikely(rc == -ENOSYS)) {
325 struct evtchn_op op;
326 op.cmd = cmd;
327 memcpy(&op.u, arg, sizeof(op.u));
328 rc = _hypercall1(int, event_channel_op_compat, &op);
329 memcpy(arg, &op.u, sizeof(op.u));
330 }
331 return rc;
332}
333
334static inline int
335HYPERVISOR_xen_version(int cmd, void *arg)
336{
337 return _hypercall2(int, xen_version, cmd, arg);
338}
339
340static inline int
341HYPERVISOR_console_io(int cmd, int count, char *str)
342{
343 return _hypercall3(int, console_io, cmd, count, str);
344}
345
346static inline int
347HYPERVISOR_physdev_op(int cmd, void *arg)
348{
349 int rc = _hypercall2(int, physdev_op, cmd, arg);
350 if (unlikely(rc == -ENOSYS)) {
351 struct physdev_op op;
352 op.cmd = cmd;
353 memcpy(&op.u, arg, sizeof(op.u));
354 rc = _hypercall1(int, physdev_op_compat, &op);
355 memcpy(arg, &op.u, sizeof(op.u));
356 }
357 return rc;
358}
359
360static inline int
361HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count)
362{
363 return _hypercall3(int, grant_table_op, cmd, uop, count);
364}
365
366static inline int
367HYPERVISOR_update_va_mapping_otherdomain(unsigned long va, pte_t new_val,
368 unsigned long flags, domid_t domid)
369{
370 if (sizeof(new_val) == sizeof(long))
371 return _hypercall4(int, update_va_mapping_otherdomain, va,
372 new_val.pte, flags, domid);
373 else
374 return _hypercall5(int, update_va_mapping_otherdomain, va,
375 new_val.pte, new_val.pte >> 32,
376 flags, domid);
377}
378
379static inline int
380HYPERVISOR_vm_assist(unsigned int cmd, unsigned int type)
381{
382 return _hypercall2(int, vm_assist, cmd, type);
383}
384
385static inline int
386HYPERVISOR_vcpu_op(int cmd, int vcpuid, void *extra_args)
387{
388 return _hypercall3(int, vcpu_op, cmd, vcpuid, extra_args);
389}
390
391#ifdef CONFIG_X86_64
392static inline int
393HYPERVISOR_set_segment_base(int reg, unsigned long value)
394{
395 return _hypercall2(int, set_segment_base, reg, value);
396}
397#endif
398
399static inline int
400HYPERVISOR_suspend(unsigned long srec)
401{
402 return _hypercall3(int, sched_op, SCHEDOP_shutdown,
403 SHUTDOWN_suspend, srec);
404}
405
406static inline int
407HYPERVISOR_nmi_op(unsigned long op, unsigned long arg)
408{
409 return _hypercall2(int, nmi_op, op, arg);
410}
411
412static inline void
413MULTI_fpu_taskswitch(struct multicall_entry *mcl, int set)
414{
415 mcl->op = __HYPERVISOR_fpu_taskswitch;
416 mcl->args[0] = set;
417}
418
419static inline void
420MULTI_update_va_mapping(struct multicall_entry *mcl, unsigned long va,
421 pte_t new_val, unsigned long flags)
422{
423 mcl->op = __HYPERVISOR_update_va_mapping;
424 mcl->args[0] = va;
425 if (sizeof(new_val) == sizeof(long)) {
426 mcl->args[1] = new_val.pte;
427 mcl->args[2] = flags;
428 } else {
429 mcl->args[1] = new_val.pte;
430 mcl->args[2] = new_val.pte >> 32;
431 mcl->args[3] = flags;
432 }
433}
434
435static inline void
436MULTI_grant_table_op(struct multicall_entry *mcl, unsigned int cmd,
437 void *uop, unsigned int count)
438{
439 mcl->op = __HYPERVISOR_grant_table_op;
440 mcl->args[0] = cmd;
441 mcl->args[1] = (unsigned long)uop;
442 mcl->args[2] = count;
443}
444
445static inline void
446MULTI_update_va_mapping_otherdomain(struct multicall_entry *mcl, unsigned long va,
447 pte_t new_val, unsigned long flags,
448 domid_t domid)
449{
450 mcl->op = __HYPERVISOR_update_va_mapping_otherdomain;
451 mcl->args[0] = va;
452 if (sizeof(new_val) == sizeof(long)) {
453 mcl->args[1] = new_val.pte;
454 mcl->args[2] = flags;
455 mcl->args[3] = domid;
456 } else {
457 mcl->args[1] = new_val.pte;
458 mcl->args[2] = new_val.pte >> 32;
459 mcl->args[3] = flags;
460 mcl->args[4] = domid;
461 }
462}
463
464static inline void
465MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr,
466 struct desc_struct desc)
467{
468 mcl->op = __HYPERVISOR_update_descriptor;
469 if (sizeof(maddr) == sizeof(long)) {
470 mcl->args[0] = maddr;
471 mcl->args[1] = *(unsigned long *)&desc;
472 } else {
473 mcl->args[0] = maddr;
474 mcl->args[1] = maddr >> 32;
475 mcl->args[2] = desc.a;
476 mcl->args[3] = desc.b;
477 }
478}
479
480static inline void
481MULTI_memory_op(struct multicall_entry *mcl, unsigned int cmd, void *arg)
482{
483 mcl->op = __HYPERVISOR_memory_op;
484 mcl->args[0] = cmd;
485 mcl->args[1] = (unsigned long)arg;
486}
487
488static inline void
489MULTI_mmu_update(struct multicall_entry *mcl, struct mmu_update *req,
490 int count, int *success_count, domid_t domid)
491{
492 mcl->op = __HYPERVISOR_mmu_update;
493 mcl->args[0] = (unsigned long)req;
494 mcl->args[1] = count;
495 mcl->args[2] = (unsigned long)success_count;
496 mcl->args[3] = domid;
497}
498
499static inline void
500MULTI_mmuext_op(struct multicall_entry *mcl, struct mmuext_op *op, int count,
501 int *success_count, domid_t domid)
502{
503 mcl->op = __HYPERVISOR_mmuext_op;
504 mcl->args[0] = (unsigned long)op;
505 mcl->args[1] = count;
506 mcl->args[2] = (unsigned long)success_count;
507 mcl->args[3] = domid;
508}
509
510static inline void
511MULTI_set_gdt(struct multicall_entry *mcl, unsigned long *frames, int entries)
512{
513 mcl->op = __HYPERVISOR_set_gdt;
514 mcl->args[0] = (unsigned long)frames;
515 mcl->args[1] = entries;
516}
517
518static inline void
519MULTI_stack_switch(struct multicall_entry *mcl,
520 unsigned long ss, unsigned long esp)
521{
522 mcl->op = __HYPERVISOR_stack_switch;
523 mcl->args[0] = ss;
524 mcl->args[1] = esp;
525}
526
527#endif /* _ASM_X86_XEN_HYPERCALL_H */
diff --git a/arch/x86/include/asm/xen/hypervisor.h b/arch/x86/include/asm/xen/hypervisor.h
new file mode 100644
index 000000000000..a38d25ac87d2
--- /dev/null
+++ b/arch/x86/include/asm/xen/hypervisor.h
@@ -0,0 +1,82 @@
1/******************************************************************************
2 * hypervisor.h
3 *
4 * Linux-specific hypervisor handling.
5 *
6 * Copyright (c) 2002-2004, K A Fraser
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation; or, when distributed
11 * separately from the Linux kernel or incorporated into other
12 * software packages, subject to the following license:
13 *
14 * Permission is hereby granted, free of charge, to any person obtaining a copy
15 * of this source file (the "Software"), to deal in the Software without
16 * restriction, including without limitation the rights to use, copy, modify,
17 * merge, publish, distribute, sublicense, and/or sell copies of the Software,
18 * and to permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be included in
22 * all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30 * IN THE SOFTWARE.
31 */
32
33#ifndef _ASM_X86_XEN_HYPERVISOR_H
34#define _ASM_X86_XEN_HYPERVISOR_H
35
36#include <linux/types.h>
37#include <linux/kernel.h>
38
39#include <xen/interface/xen.h>
40#include <xen/interface/version.h>
41
42#include <asm/ptrace.h>
43#include <asm/page.h>
44#include <asm/desc.h>
45#if defined(__i386__)
46# ifdef CONFIG_X86_PAE
47# include <asm-generic/pgtable-nopud.h>
48# else
49# include <asm-generic/pgtable-nopmd.h>
50# endif
51#endif
52#include <asm/xen/hypercall.h>
53
54/* arch/i386/kernel/setup.c */
55extern struct shared_info *HYPERVISOR_shared_info;
56extern struct start_info *xen_start_info;
57
58/* arch/i386/mach-xen/evtchn.c */
59/* Force a proper event-channel callback from Xen. */
60extern void force_evtchn_callback(void);
61
62/* Turn jiffies into Xen system time. */
63u64 jiffies_to_st(unsigned long jiffies);
64
65
66#define MULTI_UVMFLAGS_INDEX 3
67#define MULTI_UVMDOMID_INDEX 4
68
69enum xen_domain_type {
70 XEN_NATIVE,
71 XEN_PV_DOMAIN,
72 XEN_HVM_DOMAIN,
73};
74
75extern enum xen_domain_type xen_domain_type;
76
77#define xen_domain() (xen_domain_type != XEN_NATIVE)
78#define xen_pv_domain() (xen_domain_type == XEN_PV_DOMAIN)
79#define xen_initial_domain() (xen_pv_domain() && xen_start_info->flags & SIF_INITDOMAIN)
80#define xen_hvm_domain() (xen_domain_type == XEN_HVM_DOMAIN)
81
82#endif /* _ASM_X86_XEN_HYPERVISOR_H */
diff --git a/arch/x86/include/asm/xen/interface.h b/arch/x86/include/asm/xen/interface.h
new file mode 100644
index 000000000000..e8506c1f0c55
--- /dev/null
+++ b/arch/x86/include/asm/xen/interface.h
@@ -0,0 +1,175 @@
1/******************************************************************************
2 * arch-x86_32.h
3 *
4 * Guest OS interface to x86 Xen.
5 *
6 * Copyright (c) 2004, K A Fraser
7 */
8
9#ifndef _ASM_X86_XEN_INTERFACE_H
10#define _ASM_X86_XEN_INTERFACE_H
11
12#ifdef __XEN__
13#define __DEFINE_GUEST_HANDLE(name, type) \
14 typedef struct { type *p; } __guest_handle_ ## name
15#else
16#define __DEFINE_GUEST_HANDLE(name, type) \
17 typedef type * __guest_handle_ ## name
18#endif
19
20#define DEFINE_GUEST_HANDLE_STRUCT(name) \
21 __DEFINE_GUEST_HANDLE(name, struct name)
22#define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name)
23#define GUEST_HANDLE(name) __guest_handle_ ## name
24
25#ifdef __XEN__
26#if defined(__i386__)
27#define set_xen_guest_handle(hnd, val) \
28 do { \
29 if (sizeof(hnd) == 8) \
30 *(uint64_t *)&(hnd) = 0; \
31 (hnd).p = val; \
32 } while (0)
33#elif defined(__x86_64__)
34#define set_xen_guest_handle(hnd, val) do { (hnd).p = val; } while (0)
35#endif
36#else
37#if defined(__i386__)
38#define set_xen_guest_handle(hnd, val) \
39 do { \
40 if (sizeof(hnd) == 8) \
41 *(uint64_t *)&(hnd) = 0; \
42 (hnd) = val; \
43 } while (0)
44#elif defined(__x86_64__)
45#define set_xen_guest_handle(hnd, val) do { (hnd) = val; } while (0)
46#endif
47#endif
48
49#ifndef __ASSEMBLY__
50/* Guest handles for primitive C types. */
51__DEFINE_GUEST_HANDLE(uchar, unsigned char);
52__DEFINE_GUEST_HANDLE(uint, unsigned int);
53__DEFINE_GUEST_HANDLE(ulong, unsigned long);
54DEFINE_GUEST_HANDLE(char);
55DEFINE_GUEST_HANDLE(int);
56DEFINE_GUEST_HANDLE(long);
57DEFINE_GUEST_HANDLE(void);
58#endif
59
60#ifndef HYPERVISOR_VIRT_START
61#define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)
62#endif
63
64#ifndef machine_to_phys_mapping
65#define machine_to_phys_mapping ((unsigned long *)HYPERVISOR_VIRT_START)
66#endif
67
68/* Maximum number of virtual CPUs in multi-processor guests. */
69#define MAX_VIRT_CPUS 32
70
71/*
72 * SEGMENT DESCRIPTOR TABLES
73 */
74/*
75 * A number of GDT entries are reserved by Xen. These are not situated at the
76 * start of the GDT because some stupid OSes export hard-coded selector values
77 * in their ABI. These hard-coded values are always near the start of the GDT,
78 * so Xen places itself out of the way, at the far end of the GDT.
79 */
80#define FIRST_RESERVED_GDT_PAGE 14
81#define FIRST_RESERVED_GDT_BYTE (FIRST_RESERVED_GDT_PAGE * 4096)
82#define FIRST_RESERVED_GDT_ENTRY (FIRST_RESERVED_GDT_BYTE / 8)
83
84/*
85 * Send an array of these to HYPERVISOR_set_trap_table()
86 * The privilege level specifies which modes may enter a trap via a software
87 * interrupt. On x86/64, since rings 1 and 2 are unavailable, we allocate
88 * privilege levels as follows:
89 * Level == 0: Noone may enter
90 * Level == 1: Kernel may enter
91 * Level == 2: Kernel may enter
92 * Level == 3: Everyone may enter
93 */
94#define TI_GET_DPL(_ti) ((_ti)->flags & 3)
95#define TI_GET_IF(_ti) ((_ti)->flags & 4)
96#define TI_SET_DPL(_ti, _dpl) ((_ti)->flags |= (_dpl))
97#define TI_SET_IF(_ti, _if) ((_ti)->flags |= ((!!(_if))<<2))
98
99#ifndef __ASSEMBLY__
100struct trap_info {
101 uint8_t vector; /* exception vector */
102 uint8_t flags; /* 0-3: privilege level; 4: clear event enable? */
103 uint16_t cs; /* code selector */
104 unsigned long address; /* code offset */
105};
106DEFINE_GUEST_HANDLE_STRUCT(trap_info);
107
108struct arch_shared_info {
109 unsigned long max_pfn; /* max pfn that appears in table */
110 /* Frame containing list of mfns containing list of mfns containing p2m. */
111 unsigned long pfn_to_mfn_frame_list_list;
112 unsigned long nmi_reason;
113};
114#endif /* !__ASSEMBLY__ */
115
116#ifdef CONFIG_X86_32
117#include "interface_32.h"
118#else
119#include "interface_64.h"
120#endif
121
122#ifndef __ASSEMBLY__
123/*
124 * The following is all CPU context. Note that the fpu_ctxt block is filled
125 * in by FXSAVE if the CPU has feature FXSR; otherwise FSAVE is used.
126 */
127struct vcpu_guest_context {
128 /* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
129 struct { char x[512]; } fpu_ctxt; /* User-level FPU registers */
130#define VGCF_I387_VALID (1<<0)
131#define VGCF_HVM_GUEST (1<<1)
132#define VGCF_IN_KERNEL (1<<2)
133 unsigned long flags; /* VGCF_* flags */
134 struct cpu_user_regs user_regs; /* User-level CPU registers */
135 struct trap_info trap_ctxt[256]; /* Virtual IDT */
136 unsigned long ldt_base, ldt_ents; /* LDT (linear address, # ents) */
137 unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
138 unsigned long kernel_ss, kernel_sp; /* Virtual TSS (only SS1/SP1) */
139 /* NB. User pagetable on x86/64 is placed in ctrlreg[1]. */
140 unsigned long ctrlreg[8]; /* CR0-CR7 (control registers) */
141 unsigned long debugreg[8]; /* DB0-DB7 (debug registers) */
142#ifdef __i386__
143 unsigned long event_callback_cs; /* CS:EIP of event callback */
144 unsigned long event_callback_eip;
145 unsigned long failsafe_callback_cs; /* CS:EIP of failsafe callback */
146 unsigned long failsafe_callback_eip;
147#else
148 unsigned long event_callback_eip;
149 unsigned long failsafe_callback_eip;
150 unsigned long syscall_callback_eip;
151#endif
152 unsigned long vm_assist; /* VMASST_TYPE_* bitmap */
153#ifdef __x86_64__
154 /* Segment base addresses. */
155 uint64_t fs_base;
156 uint64_t gs_base_kernel;
157 uint64_t gs_base_user;
158#endif
159};
160DEFINE_GUEST_HANDLE_STRUCT(vcpu_guest_context);
161#endif /* !__ASSEMBLY__ */
162
163/*
164 * Prefix forces emulation of some non-trapping instructions.
165 * Currently only CPUID.
166 */
167#ifdef __ASSEMBLY__
168#define XEN_EMULATE_PREFIX .byte 0x0f,0x0b,0x78,0x65,0x6e ;
169#define XEN_CPUID XEN_EMULATE_PREFIX cpuid
170#else
171#define XEN_EMULATE_PREFIX ".byte 0x0f,0x0b,0x78,0x65,0x6e ; "
172#define XEN_CPUID XEN_EMULATE_PREFIX "cpuid"
173#endif
174
175#endif /* _ASM_X86_XEN_INTERFACE_H */
diff --git a/arch/x86/include/asm/xen/interface_32.h b/arch/x86/include/asm/xen/interface_32.h
new file mode 100644
index 000000000000..42a7e004ae5c
--- /dev/null
+++ b/arch/x86/include/asm/xen/interface_32.h
@@ -0,0 +1,97 @@
1/******************************************************************************
2 * arch-x86_32.h
3 *
4 * Guest OS interface to x86 32-bit Xen.
5 *
6 * Copyright (c) 2004, K A Fraser
7 */
8
9#ifndef _ASM_X86_XEN_INTERFACE_32_H
10#define _ASM_X86_XEN_INTERFACE_32_H
11
12
13/*
14 * These flat segments are in the Xen-private section of every GDT. Since these
15 * are also present in the initial GDT, many OSes will be able to avoid
16 * installing their own GDT.
17 */
18#define FLAT_RING1_CS 0xe019 /* GDT index 259 */
19#define FLAT_RING1_DS 0xe021 /* GDT index 260 */
20#define FLAT_RING1_SS 0xe021 /* GDT index 260 */
21#define FLAT_RING3_CS 0xe02b /* GDT index 261 */
22#define FLAT_RING3_DS 0xe033 /* GDT index 262 */
23#define FLAT_RING3_SS 0xe033 /* GDT index 262 */
24
25#define FLAT_KERNEL_CS FLAT_RING1_CS
26#define FLAT_KERNEL_DS FLAT_RING1_DS
27#define FLAT_KERNEL_SS FLAT_RING1_SS
28#define FLAT_USER_CS FLAT_RING3_CS
29#define FLAT_USER_DS FLAT_RING3_DS
30#define FLAT_USER_SS FLAT_RING3_SS
31
32/* And the trap vector is... */
33#define TRAP_INSTR "int $0x82"
34
35/*
36 * Virtual addresses beyond this are not modifiable by guest OSes. The
37 * machine->physical mapping table starts at this address, read-only.
38 */
39#define __HYPERVISOR_VIRT_START 0xF5800000
40
41#ifndef __ASSEMBLY__
42
43struct cpu_user_regs {
44 uint32_t ebx;
45 uint32_t ecx;
46 uint32_t edx;
47 uint32_t esi;
48 uint32_t edi;
49 uint32_t ebp;
50 uint32_t eax;
51 uint16_t error_code; /* private */
52 uint16_t entry_vector; /* private */
53 uint32_t eip;
54 uint16_t cs;
55 uint8_t saved_upcall_mask;
56 uint8_t _pad0;
57 uint32_t eflags; /* eflags.IF == !saved_upcall_mask */
58 uint32_t esp;
59 uint16_t ss, _pad1;
60 uint16_t es, _pad2;
61 uint16_t ds, _pad3;
62 uint16_t fs, _pad4;
63 uint16_t gs, _pad5;
64};
65DEFINE_GUEST_HANDLE_STRUCT(cpu_user_regs);
66
67typedef uint64_t tsc_timestamp_t; /* RDTSC timestamp */
68
69struct arch_vcpu_info {
70 unsigned long cr2;
71 unsigned long pad[5]; /* sizeof(struct vcpu_info) == 64 */
72};
73
74struct xen_callback {
75 unsigned long cs;
76 unsigned long eip;
77};
78typedef struct xen_callback xen_callback_t;
79
80#define XEN_CALLBACK(__cs, __eip) \
81 ((struct xen_callback){ .cs = (__cs), .eip = (unsigned long)(__eip) })
82#endif /* !__ASSEMBLY__ */
83
84
85/*
86 * Page-directory addresses above 4GB do not fit into architectural %cr3.
87 * When accessing %cr3, or equivalent field in vcpu_guest_context, guests
88 * must use the following accessor macros to pack/unpack valid MFNs.
89 *
90 * Note that Xen is using the fact that the pagetable base is always
91 * page-aligned, and putting the 12 MSB of the address into the 12 LSB
92 * of cr3.
93 */
94#define xen_pfn_to_cr3(pfn) (((unsigned)(pfn) << 12) | ((unsigned)(pfn) >> 20))
95#define xen_cr3_to_pfn(cr3) (((unsigned)(cr3) >> 12) | ((unsigned)(cr3) << 20))
96
97#endif /* _ASM_X86_XEN_INTERFACE_32_H */
diff --git a/arch/x86/include/asm/xen/interface_64.h b/arch/x86/include/asm/xen/interface_64.h
new file mode 100644
index 000000000000..100d2662b97c
--- /dev/null
+++ b/arch/x86/include/asm/xen/interface_64.h
@@ -0,0 +1,159 @@
1#ifndef _ASM_X86_XEN_INTERFACE_64_H
2#define _ASM_X86_XEN_INTERFACE_64_H
3
4/*
5 * 64-bit segment selectors
6 * These flat segments are in the Xen-private section of every GDT. Since these
7 * are also present in the initial GDT, many OSes will be able to avoid
8 * installing their own GDT.
9 */
10
11#define FLAT_RING3_CS32 0xe023 /* GDT index 260 */
12#define FLAT_RING3_CS64 0xe033 /* GDT index 261 */
13#define FLAT_RING3_DS32 0xe02b /* GDT index 262 */
14#define FLAT_RING3_DS64 0x0000 /* NULL selector */
15#define FLAT_RING3_SS32 0xe02b /* GDT index 262 */
16#define FLAT_RING3_SS64 0xe02b /* GDT index 262 */
17
18#define FLAT_KERNEL_DS64 FLAT_RING3_DS64
19#define FLAT_KERNEL_DS32 FLAT_RING3_DS32
20#define FLAT_KERNEL_DS FLAT_KERNEL_DS64
21#define FLAT_KERNEL_CS64 FLAT_RING3_CS64
22#define FLAT_KERNEL_CS32 FLAT_RING3_CS32
23#define FLAT_KERNEL_CS FLAT_KERNEL_CS64
24#define FLAT_KERNEL_SS64 FLAT_RING3_SS64
25#define FLAT_KERNEL_SS32 FLAT_RING3_SS32
26#define FLAT_KERNEL_SS FLAT_KERNEL_SS64
27
28#define FLAT_USER_DS64 FLAT_RING3_DS64
29#define FLAT_USER_DS32 FLAT_RING3_DS32
30#define FLAT_USER_DS FLAT_USER_DS64
31#define FLAT_USER_CS64 FLAT_RING3_CS64
32#define FLAT_USER_CS32 FLAT_RING3_CS32
33#define FLAT_USER_CS FLAT_USER_CS64
34#define FLAT_USER_SS64 FLAT_RING3_SS64
35#define FLAT_USER_SS32 FLAT_RING3_SS32
36#define FLAT_USER_SS FLAT_USER_SS64
37
38#define __HYPERVISOR_VIRT_START 0xFFFF800000000000
39#define __HYPERVISOR_VIRT_END 0xFFFF880000000000
40#define __MACH2PHYS_VIRT_START 0xFFFF800000000000
41#define __MACH2PHYS_VIRT_END 0xFFFF804000000000
42
43#ifndef HYPERVISOR_VIRT_START
44#define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)
45#define HYPERVISOR_VIRT_END mk_unsigned_long(__HYPERVISOR_VIRT_END)
46#endif
47
48#define MACH2PHYS_VIRT_START mk_unsigned_long(__MACH2PHYS_VIRT_START)
49#define MACH2PHYS_VIRT_END mk_unsigned_long(__MACH2PHYS_VIRT_END)
50#define MACH2PHYS_NR_ENTRIES ((MACH2PHYS_VIRT_END-MACH2PHYS_VIRT_START)>>3)
51#ifndef machine_to_phys_mapping
52#define machine_to_phys_mapping ((unsigned long *)HYPERVISOR_VIRT_START)
53#endif
54
55/*
56 * int HYPERVISOR_set_segment_base(unsigned int which, unsigned long base)
57 * @which == SEGBASE_* ; @base == 64-bit base address
58 * Returns 0 on success.
59 */
60#define SEGBASE_FS 0
61#define SEGBASE_GS_USER 1
62#define SEGBASE_GS_KERNEL 2
63#define SEGBASE_GS_USER_SEL 3 /* Set user %gs specified in base[15:0] */
64
65/*
66 * int HYPERVISOR_iret(void)
67 * All arguments are on the kernel stack, in the following format.
68 * Never returns if successful. Current kernel context is lost.
69 * The saved CS is mapped as follows:
70 * RING0 -> RING3 kernel mode.
71 * RING1 -> RING3 kernel mode.
72 * RING2 -> RING3 kernel mode.
73 * RING3 -> RING3 user mode.
74 * However RING0 indicates that the guest kernel should return to iteself
75 * directly with
76 * orb $3,1*8(%rsp)
77 * iretq
78 * If flags contains VGCF_in_syscall:
79 * Restore RAX, RIP, RFLAGS, RSP.
80 * Discard R11, RCX, CS, SS.
81 * Otherwise:
82 * Restore RAX, R11, RCX, CS:RIP, RFLAGS, SS:RSP.
83 * All other registers are saved on hypercall entry and restored to user.
84 */
85/* Guest exited in SYSCALL context? Return to guest with SYSRET? */
86#define _VGCF_in_syscall 8
87#define VGCF_in_syscall (1<<_VGCF_in_syscall)
88#define VGCF_IN_SYSCALL VGCF_in_syscall
89
90#ifndef __ASSEMBLY__
91
92struct iret_context {
93 /* Top of stack (%rsp at point of hypercall). */
94 uint64_t rax, r11, rcx, flags, rip, cs, rflags, rsp, ss;
95 /* Bottom of iret stack frame. */
96};
97
98#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
99/* Anonymous union includes both 32- and 64-bit names (e.g., eax/rax). */
100#define __DECL_REG(name) union { \
101 uint64_t r ## name, e ## name; \
102 uint32_t _e ## name; \
103}
104#else
105/* Non-gcc sources must always use the proper 64-bit name (e.g., rax). */
106#define __DECL_REG(name) uint64_t r ## name
107#endif
108
109struct cpu_user_regs {
110 uint64_t r15;
111 uint64_t r14;
112 uint64_t r13;
113 uint64_t r12;
114 __DECL_REG(bp);
115 __DECL_REG(bx);
116 uint64_t r11;
117 uint64_t r10;
118 uint64_t r9;
119 uint64_t r8;
120 __DECL_REG(ax);
121 __DECL_REG(cx);
122 __DECL_REG(dx);
123 __DECL_REG(si);
124 __DECL_REG(di);
125 uint32_t error_code; /* private */
126 uint32_t entry_vector; /* private */
127 __DECL_REG(ip);
128 uint16_t cs, _pad0[1];
129 uint8_t saved_upcall_mask;
130 uint8_t _pad1[3];
131 __DECL_REG(flags); /* rflags.IF == !saved_upcall_mask */
132 __DECL_REG(sp);
133 uint16_t ss, _pad2[3];
134 uint16_t es, _pad3[3];
135 uint16_t ds, _pad4[3];
136 uint16_t fs, _pad5[3]; /* Non-zero => takes precedence over fs_base. */
137 uint16_t gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_usr. */
138};
139DEFINE_GUEST_HANDLE_STRUCT(cpu_user_regs);
140
141#undef __DECL_REG
142
143#define xen_pfn_to_cr3(pfn) ((unsigned long)(pfn) << 12)
144#define xen_cr3_to_pfn(cr3) ((unsigned long)(cr3) >> 12)
145
146struct arch_vcpu_info {
147 unsigned long cr2;
148 unsigned long pad; /* sizeof(vcpu_info_t) == 64 */
149};
150
151typedef unsigned long xen_callback_t;
152
153#define XEN_CALLBACK(__cs, __rip) \
154 ((unsigned long)(__rip))
155
156#endif /* !__ASSEMBLY__ */
157
158
159#endif /* _ASM_X86_XEN_INTERFACE_64_H */
diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
new file mode 100644
index 000000000000..bc628998a1b9
--- /dev/null
+++ b/arch/x86/include/asm/xen/page.h
@@ -0,0 +1,165 @@
1#ifndef _ASM_X86_XEN_PAGE_H
2#define _ASM_X86_XEN_PAGE_H
3
4#include <linux/pfn.h>
5
6#include <asm/uaccess.h>
7#include <asm/pgtable.h>
8
9#include <xen/features.h>
10
11/* Xen machine address */
12typedef struct xmaddr {
13 phys_addr_t maddr;
14} xmaddr_t;
15
16/* Xen pseudo-physical address */
17typedef struct xpaddr {
18 phys_addr_t paddr;
19} xpaddr_t;
20
21#define XMADDR(x) ((xmaddr_t) { .maddr = (x) })
22#define XPADDR(x) ((xpaddr_t) { .paddr = (x) })
23
24/**** MACHINE <-> PHYSICAL CONVERSION MACROS ****/
25#define INVALID_P2M_ENTRY (~0UL)
26#define FOREIGN_FRAME_BIT (1UL<<31)
27#define FOREIGN_FRAME(m) ((m) | FOREIGN_FRAME_BIT)
28
29/* Maximum amount of memory we can handle in a domain in pages */
30#define MAX_DOMAIN_PAGES \
31 ((unsigned long)((u64)CONFIG_XEN_MAX_DOMAIN_MEMORY * 1024 * 1024 * 1024 / PAGE_SIZE))
32
33
34extern unsigned long get_phys_to_machine(unsigned long pfn);
35extern void set_phys_to_machine(unsigned long pfn, unsigned long mfn);
36
37static inline unsigned long pfn_to_mfn(unsigned long pfn)
38{
39 if (xen_feature(XENFEAT_auto_translated_physmap))
40 return pfn;
41
42 return get_phys_to_machine(pfn) & ~FOREIGN_FRAME_BIT;
43}
44
45static inline int phys_to_machine_mapping_valid(unsigned long pfn)
46{
47 if (xen_feature(XENFEAT_auto_translated_physmap))
48 return 1;
49
50 return get_phys_to_machine(pfn) != INVALID_P2M_ENTRY;
51}
52
53static inline unsigned long mfn_to_pfn(unsigned long mfn)
54{
55 unsigned long pfn;
56
57 if (xen_feature(XENFEAT_auto_translated_physmap))
58 return mfn;
59
60#if 0
61 if (unlikely((mfn >> machine_to_phys_order) != 0))
62 return max_mapnr;
63#endif
64
65 pfn = 0;
66 /*
67 * The array access can fail (e.g., device space beyond end of RAM).
68 * In such cases it doesn't matter what we return (we return garbage),
69 * but we must handle the fault without crashing!
70 */
71 __get_user(pfn, &machine_to_phys_mapping[mfn]);
72
73 return pfn;
74}
75
76static inline xmaddr_t phys_to_machine(xpaddr_t phys)
77{
78 unsigned offset = phys.paddr & ~PAGE_MASK;
79 return XMADDR(PFN_PHYS(pfn_to_mfn(PFN_DOWN(phys.paddr))) | offset);
80}
81
82static inline xpaddr_t machine_to_phys(xmaddr_t machine)
83{
84 unsigned offset = machine.maddr & ~PAGE_MASK;
85 return XPADDR(PFN_PHYS(mfn_to_pfn(PFN_DOWN(machine.maddr))) | offset);
86}
87
88/*
89 * We detect special mappings in one of two ways:
90 * 1. If the MFN is an I/O page then Xen will set the m2p entry
91 * to be outside our maximum possible pseudophys range.
92 * 2. If the MFN belongs to a different domain then we will certainly
93 * not have MFN in our p2m table. Conversely, if the page is ours,
94 * then we'll have p2m(m2p(MFN))==MFN.
95 * If we detect a special mapping then it doesn't have a 'struct page'.
96 * We force !pfn_valid() by returning an out-of-range pointer.
97 *
98 * NB. These checks require that, for any MFN that is not in our reservation,
99 * there is no PFN such that p2m(PFN) == MFN. Otherwise we can get confused if
100 * we are foreign-mapping the MFN, and the other domain as m2p(MFN) == PFN.
101 * Yikes! Various places must poke in INVALID_P2M_ENTRY for safety.
102 *
103 * NB2. When deliberately mapping foreign pages into the p2m table, you *must*
104 * use FOREIGN_FRAME(). This will cause pte_pfn() to choke on it, as we
105 * require. In all the cases we care about, the FOREIGN_FRAME bit is
106 * masked (e.g., pfn_to_mfn()) so behaviour there is correct.
107 */
108static inline unsigned long mfn_to_local_pfn(unsigned long mfn)
109{
110 extern unsigned long max_mapnr;
111 unsigned long pfn = mfn_to_pfn(mfn);
112 if ((pfn < max_mapnr)
113 && !xen_feature(XENFEAT_auto_translated_physmap)
114 && (get_phys_to_machine(pfn) != mfn))
115 return max_mapnr; /* force !pfn_valid() */
116 /* XXX fixme; not true with sparsemem */
117 return pfn;
118}
119
120/* VIRT <-> MACHINE conversion */
121#define virt_to_machine(v) (phys_to_machine(XPADDR(__pa(v))))
122#define virt_to_mfn(v) (pfn_to_mfn(PFN_DOWN(__pa(v))))
123#define mfn_to_virt(m) (__va(mfn_to_pfn(m) << PAGE_SHIFT))
124
125static inline unsigned long pte_mfn(pte_t pte)
126{
127 return (pte.pte & PTE_PFN_MASK) >> PAGE_SHIFT;
128}
129
130static inline pte_t mfn_pte(unsigned long page_nr, pgprot_t pgprot)
131{
132 pte_t pte;
133
134 pte.pte = ((phys_addr_t)page_nr << PAGE_SHIFT) |
135 (pgprot_val(pgprot) & __supported_pte_mask);
136
137 return pte;
138}
139
140static inline pteval_t pte_val_ma(pte_t pte)
141{
142 return pte.pte;
143}
144
145static inline pte_t __pte_ma(pteval_t x)
146{
147 return (pte_t) { .pte = x };
148}
149
150#define pmd_val_ma(v) ((v).pmd)
151#ifdef __PAGETABLE_PUD_FOLDED
152#define pud_val_ma(v) ((v).pgd.pgd)
153#else
154#define pud_val_ma(v) ((v).pud)
155#endif
156#define __pmd_ma(x) ((pmd_t) { (x) } )
157
158#define pgd_val_ma(x) ((x).pgd)
159
160
161xmaddr_t arbitrary_virt_to_machine(void *address);
162void make_lowmem_page_readonly(void *vaddr);
163void make_lowmem_page_readwrite(void *vaddr);
164
165#endif /* _ASM_X86_XEN_PAGE_H */
diff --git a/arch/x86/include/asm/xor.h b/arch/x86/include/asm/xor.h
new file mode 100644
index 000000000000..11b3bb86e17b
--- /dev/null
+++ b/arch/x86/include/asm/xor.h
@@ -0,0 +1,5 @@
1#ifdef CONFIG_X86_32
2# include "xor_32.h"
3#else
4# include "xor_64.h"
5#endif
diff --git a/arch/x86/include/asm/xor_32.h b/arch/x86/include/asm/xor_32.h
new file mode 100644
index 000000000000..133b40a0f495
--- /dev/null
+++ b/arch/x86/include/asm/xor_32.h
@@ -0,0 +1,888 @@
1#ifndef _ASM_X86_XOR_32_H
2#define _ASM_X86_XOR_32_H
3
4/*
5 * Optimized RAID-5 checksumming functions for MMX and SSE.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * You should have received a copy of the GNU General Public License
13 * (for example /usr/src/linux/COPYING); if not, write to the Free
14 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
15 */
16
17/*
18 * High-speed RAID5 checksumming functions utilizing MMX instructions.
19 * Copyright (C) 1998 Ingo Molnar.
20 */
21
22#define LD(x, y) " movq 8*("#x")(%1), %%mm"#y" ;\n"
23#define ST(x, y) " movq %%mm"#y", 8*("#x")(%1) ;\n"
24#define XO1(x, y) " pxor 8*("#x")(%2), %%mm"#y" ;\n"
25#define XO2(x, y) " pxor 8*("#x")(%3), %%mm"#y" ;\n"
26#define XO3(x, y) " pxor 8*("#x")(%4), %%mm"#y" ;\n"
27#define XO4(x, y) " pxor 8*("#x")(%5), %%mm"#y" ;\n"
28
29#include <asm/i387.h>
30
31static void
32xor_pII_mmx_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
33{
34 unsigned long lines = bytes >> 7;
35
36 kernel_fpu_begin();
37
38 asm volatile(
39#undef BLOCK
40#define BLOCK(i) \
41 LD(i, 0) \
42 LD(i + 1, 1) \
43 LD(i + 2, 2) \
44 LD(i + 3, 3) \
45 XO1(i, 0) \
46 ST(i, 0) \
47 XO1(i+1, 1) \
48 ST(i+1, 1) \
49 XO1(i + 2, 2) \
50 ST(i + 2, 2) \
51 XO1(i + 3, 3) \
52 ST(i + 3, 3)
53
54 " .align 32 ;\n"
55 " 1: ;\n"
56
57 BLOCK(0)
58 BLOCK(4)
59 BLOCK(8)
60 BLOCK(12)
61
62 " addl $128, %1 ;\n"
63 " addl $128, %2 ;\n"
64 " decl %0 ;\n"
65 " jnz 1b ;\n"
66 : "+r" (lines),
67 "+r" (p1), "+r" (p2)
68 :
69 : "memory");
70
71 kernel_fpu_end();
72}
73
74static void
75xor_pII_mmx_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
76 unsigned long *p3)
77{
78 unsigned long lines = bytes >> 7;
79
80 kernel_fpu_begin();
81
82 asm volatile(
83#undef BLOCK
84#define BLOCK(i) \
85 LD(i, 0) \
86 LD(i + 1, 1) \
87 LD(i + 2, 2) \
88 LD(i + 3, 3) \
89 XO1(i, 0) \
90 XO1(i + 1, 1) \
91 XO1(i + 2, 2) \
92 XO1(i + 3, 3) \
93 XO2(i, 0) \
94 ST(i, 0) \
95 XO2(i + 1, 1) \
96 ST(i + 1, 1) \
97 XO2(i + 2, 2) \
98 ST(i + 2, 2) \
99 XO2(i + 3, 3) \
100 ST(i + 3, 3)
101
102 " .align 32 ;\n"
103 " 1: ;\n"
104
105 BLOCK(0)
106 BLOCK(4)
107 BLOCK(8)
108 BLOCK(12)
109
110 " addl $128, %1 ;\n"
111 " addl $128, %2 ;\n"
112 " addl $128, %3 ;\n"
113 " decl %0 ;\n"
114 " jnz 1b ;\n"
115 : "+r" (lines),
116 "+r" (p1), "+r" (p2), "+r" (p3)
117 :
118 : "memory");
119
120 kernel_fpu_end();
121}
122
123static void
124xor_pII_mmx_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
125 unsigned long *p3, unsigned long *p4)
126{
127 unsigned long lines = bytes >> 7;
128
129 kernel_fpu_begin();
130
131 asm volatile(
132#undef BLOCK
133#define BLOCK(i) \
134 LD(i, 0) \
135 LD(i + 1, 1) \
136 LD(i + 2, 2) \
137 LD(i + 3, 3) \
138 XO1(i, 0) \
139 XO1(i + 1, 1) \
140 XO1(i + 2, 2) \
141 XO1(i + 3, 3) \
142 XO2(i, 0) \
143 XO2(i + 1, 1) \
144 XO2(i + 2, 2) \
145 XO2(i + 3, 3) \
146 XO3(i, 0) \
147 ST(i, 0) \
148 XO3(i + 1, 1) \
149 ST(i + 1, 1) \
150 XO3(i + 2, 2) \
151 ST(i + 2, 2) \
152 XO3(i + 3, 3) \
153 ST(i + 3, 3)
154
155 " .align 32 ;\n"
156 " 1: ;\n"
157
158 BLOCK(0)
159 BLOCK(4)
160 BLOCK(8)
161 BLOCK(12)
162
163 " addl $128, %1 ;\n"
164 " addl $128, %2 ;\n"
165 " addl $128, %3 ;\n"
166 " addl $128, %4 ;\n"
167 " decl %0 ;\n"
168 " jnz 1b ;\n"
169 : "+r" (lines),
170 "+r" (p1), "+r" (p2), "+r" (p3), "+r" (p4)
171 :
172 : "memory");
173
174 kernel_fpu_end();
175}
176
177
178static void
179xor_pII_mmx_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
180 unsigned long *p3, unsigned long *p4, unsigned long *p5)
181{
182 unsigned long lines = bytes >> 7;
183
184 kernel_fpu_begin();
185
186 /* Make sure GCC forgets anything it knows about p4 or p5,
187 such that it won't pass to the asm volatile below a
188 register that is shared with any other variable. That's
189 because we modify p4 and p5 there, but we can't mark them
190 as read/write, otherwise we'd overflow the 10-asm-operands
191 limit of GCC < 3.1. */
192 asm("" : "+r" (p4), "+r" (p5));
193
194 asm volatile(
195#undef BLOCK
196#define BLOCK(i) \
197 LD(i, 0) \
198 LD(i + 1, 1) \
199 LD(i + 2, 2) \
200 LD(i + 3, 3) \
201 XO1(i, 0) \
202 XO1(i + 1, 1) \
203 XO1(i + 2, 2) \
204 XO1(i + 3, 3) \
205 XO2(i, 0) \
206 XO2(i + 1, 1) \
207 XO2(i + 2, 2) \
208 XO2(i + 3, 3) \
209 XO3(i, 0) \
210 XO3(i + 1, 1) \
211 XO3(i + 2, 2) \
212 XO3(i + 3, 3) \
213 XO4(i, 0) \
214 ST(i, 0) \
215 XO4(i + 1, 1) \
216 ST(i + 1, 1) \
217 XO4(i + 2, 2) \
218 ST(i + 2, 2) \
219 XO4(i + 3, 3) \
220 ST(i + 3, 3)
221
222 " .align 32 ;\n"
223 " 1: ;\n"
224
225 BLOCK(0)
226 BLOCK(4)
227 BLOCK(8)
228 BLOCK(12)
229
230 " addl $128, %1 ;\n"
231 " addl $128, %2 ;\n"
232 " addl $128, %3 ;\n"
233 " addl $128, %4 ;\n"
234 " addl $128, %5 ;\n"
235 " decl %0 ;\n"
236 " jnz 1b ;\n"
237 : "+r" (lines),
238 "+r" (p1), "+r" (p2), "+r" (p3)
239 : "r" (p4), "r" (p5)
240 : "memory");
241
242 /* p4 and p5 were modified, and now the variables are dead.
243 Clobber them just to be sure nobody does something stupid
244 like assuming they have some legal value. */
245 asm("" : "=r" (p4), "=r" (p5));
246
247 kernel_fpu_end();
248}
249
250#undef LD
251#undef XO1
252#undef XO2
253#undef XO3
254#undef XO4
255#undef ST
256#undef BLOCK
257
258static void
259xor_p5_mmx_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
260{
261 unsigned long lines = bytes >> 6;
262
263 kernel_fpu_begin();
264
265 asm volatile(
266 " .align 32 ;\n"
267 " 1: ;\n"
268 " movq (%1), %%mm0 ;\n"
269 " movq 8(%1), %%mm1 ;\n"
270 " pxor (%2), %%mm0 ;\n"
271 " movq 16(%1), %%mm2 ;\n"
272 " movq %%mm0, (%1) ;\n"
273 " pxor 8(%2), %%mm1 ;\n"
274 " movq 24(%1), %%mm3 ;\n"
275 " movq %%mm1, 8(%1) ;\n"
276 " pxor 16(%2), %%mm2 ;\n"
277 " movq 32(%1), %%mm4 ;\n"
278 " movq %%mm2, 16(%1) ;\n"
279 " pxor 24(%2), %%mm3 ;\n"
280 " movq 40(%1), %%mm5 ;\n"
281 " movq %%mm3, 24(%1) ;\n"
282 " pxor 32(%2), %%mm4 ;\n"
283 " movq 48(%1), %%mm6 ;\n"
284 " movq %%mm4, 32(%1) ;\n"
285 " pxor 40(%2), %%mm5 ;\n"
286 " movq 56(%1), %%mm7 ;\n"
287 " movq %%mm5, 40(%1) ;\n"
288 " pxor 48(%2), %%mm6 ;\n"
289 " pxor 56(%2), %%mm7 ;\n"
290 " movq %%mm6, 48(%1) ;\n"
291 " movq %%mm7, 56(%1) ;\n"
292
293 " addl $64, %1 ;\n"
294 " addl $64, %2 ;\n"
295 " decl %0 ;\n"
296 " jnz 1b ;\n"
297 : "+r" (lines),
298 "+r" (p1), "+r" (p2)
299 :
300 : "memory");
301
302 kernel_fpu_end();
303}
304
305static void
306xor_p5_mmx_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
307 unsigned long *p3)
308{
309 unsigned long lines = bytes >> 6;
310
311 kernel_fpu_begin();
312
313 asm volatile(
314 " .align 32,0x90 ;\n"
315 " 1: ;\n"
316 " movq (%1), %%mm0 ;\n"
317 " movq 8(%1), %%mm1 ;\n"
318 " pxor (%2), %%mm0 ;\n"
319 " movq 16(%1), %%mm2 ;\n"
320 " pxor 8(%2), %%mm1 ;\n"
321 " pxor (%3), %%mm0 ;\n"
322 " pxor 16(%2), %%mm2 ;\n"
323 " movq %%mm0, (%1) ;\n"
324 " pxor 8(%3), %%mm1 ;\n"
325 " pxor 16(%3), %%mm2 ;\n"
326 " movq 24(%1), %%mm3 ;\n"
327 " movq %%mm1, 8(%1) ;\n"
328 " movq 32(%1), %%mm4 ;\n"
329 " movq 40(%1), %%mm5 ;\n"
330 " pxor 24(%2), %%mm3 ;\n"
331 " movq %%mm2, 16(%1) ;\n"
332 " pxor 32(%2), %%mm4 ;\n"
333 " pxor 24(%3), %%mm3 ;\n"
334 " pxor 40(%2), %%mm5 ;\n"
335 " movq %%mm3, 24(%1) ;\n"
336 " pxor 32(%3), %%mm4 ;\n"
337 " pxor 40(%3), %%mm5 ;\n"
338 " movq 48(%1), %%mm6 ;\n"
339 " movq %%mm4, 32(%1) ;\n"
340 " movq 56(%1), %%mm7 ;\n"
341 " pxor 48(%2), %%mm6 ;\n"
342 " movq %%mm5, 40(%1) ;\n"
343 " pxor 56(%2), %%mm7 ;\n"
344 " pxor 48(%3), %%mm6 ;\n"
345 " pxor 56(%3), %%mm7 ;\n"
346 " movq %%mm6, 48(%1) ;\n"
347 " movq %%mm7, 56(%1) ;\n"
348
349 " addl $64, %1 ;\n"
350 " addl $64, %2 ;\n"
351 " addl $64, %3 ;\n"
352 " decl %0 ;\n"
353 " jnz 1b ;\n"
354 : "+r" (lines),
355 "+r" (p1), "+r" (p2), "+r" (p3)
356 :
357 : "memory" );
358
359 kernel_fpu_end();
360}
361
362static void
363xor_p5_mmx_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
364 unsigned long *p3, unsigned long *p4)
365{
366 unsigned long lines = bytes >> 6;
367
368 kernel_fpu_begin();
369
370 asm volatile(
371 " .align 32,0x90 ;\n"
372 " 1: ;\n"
373 " movq (%1), %%mm0 ;\n"
374 " movq 8(%1), %%mm1 ;\n"
375 " pxor (%2), %%mm0 ;\n"
376 " movq 16(%1), %%mm2 ;\n"
377 " pxor 8(%2), %%mm1 ;\n"
378 " pxor (%3), %%mm0 ;\n"
379 " pxor 16(%2), %%mm2 ;\n"
380 " pxor 8(%3), %%mm1 ;\n"
381 " pxor (%4), %%mm0 ;\n"
382 " movq 24(%1), %%mm3 ;\n"
383 " pxor 16(%3), %%mm2 ;\n"
384 " pxor 8(%4), %%mm1 ;\n"
385 " movq %%mm0, (%1) ;\n"
386 " movq 32(%1), %%mm4 ;\n"
387 " pxor 24(%2), %%mm3 ;\n"
388 " pxor 16(%4), %%mm2 ;\n"
389 " movq %%mm1, 8(%1) ;\n"
390 " movq 40(%1), %%mm5 ;\n"
391 " pxor 32(%2), %%mm4 ;\n"
392 " pxor 24(%3), %%mm3 ;\n"
393 " movq %%mm2, 16(%1) ;\n"
394 " pxor 40(%2), %%mm5 ;\n"
395 " pxor 32(%3), %%mm4 ;\n"
396 " pxor 24(%4), %%mm3 ;\n"
397 " movq %%mm3, 24(%1) ;\n"
398 " movq 56(%1), %%mm7 ;\n"
399 " movq 48(%1), %%mm6 ;\n"
400 " pxor 40(%3), %%mm5 ;\n"
401 " pxor 32(%4), %%mm4 ;\n"
402 " pxor 48(%2), %%mm6 ;\n"
403 " movq %%mm4, 32(%1) ;\n"
404 " pxor 56(%2), %%mm7 ;\n"
405 " pxor 40(%4), %%mm5 ;\n"
406 " pxor 48(%3), %%mm6 ;\n"
407 " pxor 56(%3), %%mm7 ;\n"
408 " movq %%mm5, 40(%1) ;\n"
409 " pxor 48(%4), %%mm6 ;\n"
410 " pxor 56(%4), %%mm7 ;\n"
411 " movq %%mm6, 48(%1) ;\n"
412 " movq %%mm7, 56(%1) ;\n"
413
414 " addl $64, %1 ;\n"
415 " addl $64, %2 ;\n"
416 " addl $64, %3 ;\n"
417 " addl $64, %4 ;\n"
418 " decl %0 ;\n"
419 " jnz 1b ;\n"
420 : "+r" (lines),
421 "+r" (p1), "+r" (p2), "+r" (p3), "+r" (p4)
422 :
423 : "memory");
424
425 kernel_fpu_end();
426}
427
428static void
429xor_p5_mmx_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
430 unsigned long *p3, unsigned long *p4, unsigned long *p5)
431{
432 unsigned long lines = bytes >> 6;
433
434 kernel_fpu_begin();
435
436 /* Make sure GCC forgets anything it knows about p4 or p5,
437 such that it won't pass to the asm volatile below a
438 register that is shared with any other variable. That's
439 because we modify p4 and p5 there, but we can't mark them
440 as read/write, otherwise we'd overflow the 10-asm-operands
441 limit of GCC < 3.1. */
442 asm("" : "+r" (p4), "+r" (p5));
443
444 asm volatile(
445 " .align 32,0x90 ;\n"
446 " 1: ;\n"
447 " movq (%1), %%mm0 ;\n"
448 " movq 8(%1), %%mm1 ;\n"
449 " pxor (%2), %%mm0 ;\n"
450 " pxor 8(%2), %%mm1 ;\n"
451 " movq 16(%1), %%mm2 ;\n"
452 " pxor (%3), %%mm0 ;\n"
453 " pxor 8(%3), %%mm1 ;\n"
454 " pxor 16(%2), %%mm2 ;\n"
455 " pxor (%4), %%mm0 ;\n"
456 " pxor 8(%4), %%mm1 ;\n"
457 " pxor 16(%3), %%mm2 ;\n"
458 " movq 24(%1), %%mm3 ;\n"
459 " pxor (%5), %%mm0 ;\n"
460 " pxor 8(%5), %%mm1 ;\n"
461 " movq %%mm0, (%1) ;\n"
462 " pxor 16(%4), %%mm2 ;\n"
463 " pxor 24(%2), %%mm3 ;\n"
464 " movq %%mm1, 8(%1) ;\n"
465 " pxor 16(%5), %%mm2 ;\n"
466 " pxor 24(%3), %%mm3 ;\n"
467 " movq 32(%1), %%mm4 ;\n"
468 " movq %%mm2, 16(%1) ;\n"
469 " pxor 24(%4), %%mm3 ;\n"
470 " pxor 32(%2), %%mm4 ;\n"
471 " movq 40(%1), %%mm5 ;\n"
472 " pxor 24(%5), %%mm3 ;\n"
473 " pxor 32(%3), %%mm4 ;\n"
474 " pxor 40(%2), %%mm5 ;\n"
475 " movq %%mm3, 24(%1) ;\n"
476 " pxor 32(%4), %%mm4 ;\n"
477 " pxor 40(%3), %%mm5 ;\n"
478 " movq 48(%1), %%mm6 ;\n"
479 " movq 56(%1), %%mm7 ;\n"
480 " pxor 32(%5), %%mm4 ;\n"
481 " pxor 40(%4), %%mm5 ;\n"
482 " pxor 48(%2), %%mm6 ;\n"
483 " pxor 56(%2), %%mm7 ;\n"
484 " movq %%mm4, 32(%1) ;\n"
485 " pxor 48(%3), %%mm6 ;\n"
486 " pxor 56(%3), %%mm7 ;\n"
487 " pxor 40(%5), %%mm5 ;\n"
488 " pxor 48(%4), %%mm6 ;\n"
489 " pxor 56(%4), %%mm7 ;\n"
490 " movq %%mm5, 40(%1) ;\n"
491 " pxor 48(%5), %%mm6 ;\n"
492 " pxor 56(%5), %%mm7 ;\n"
493 " movq %%mm6, 48(%1) ;\n"
494 " movq %%mm7, 56(%1) ;\n"
495
496 " addl $64, %1 ;\n"
497 " addl $64, %2 ;\n"
498 " addl $64, %3 ;\n"
499 " addl $64, %4 ;\n"
500 " addl $64, %5 ;\n"
501 " decl %0 ;\n"
502 " jnz 1b ;\n"
503 : "+r" (lines),
504 "+r" (p1), "+r" (p2), "+r" (p3)
505 : "r" (p4), "r" (p5)
506 : "memory");
507
508 /* p4 and p5 were modified, and now the variables are dead.
509 Clobber them just to be sure nobody does something stupid
510 like assuming they have some legal value. */
511 asm("" : "=r" (p4), "=r" (p5));
512
513 kernel_fpu_end();
514}
515
516static struct xor_block_template xor_block_pII_mmx = {
517 .name = "pII_mmx",
518 .do_2 = xor_pII_mmx_2,
519 .do_3 = xor_pII_mmx_3,
520 .do_4 = xor_pII_mmx_4,
521 .do_5 = xor_pII_mmx_5,
522};
523
524static struct xor_block_template xor_block_p5_mmx = {
525 .name = "p5_mmx",
526 .do_2 = xor_p5_mmx_2,
527 .do_3 = xor_p5_mmx_3,
528 .do_4 = xor_p5_mmx_4,
529 .do_5 = xor_p5_mmx_5,
530};
531
532/*
533 * Cache avoiding checksumming functions utilizing KNI instructions
534 * Copyright (C) 1999 Zach Brown (with obvious credit due Ingo)
535 */
536
537#define XMMS_SAVE \
538do { \
539 preempt_disable(); \
540 cr0 = read_cr0(); \
541 clts(); \
542 asm volatile( \
543 "movups %%xmm0,(%0) ;\n\t" \
544 "movups %%xmm1,0x10(%0) ;\n\t" \
545 "movups %%xmm2,0x20(%0) ;\n\t" \
546 "movups %%xmm3,0x30(%0) ;\n\t" \
547 : \
548 : "r" (xmm_save) \
549 : "memory"); \
550} while (0)
551
552#define XMMS_RESTORE \
553do { \
554 asm volatile( \
555 "sfence ;\n\t" \
556 "movups (%0),%%xmm0 ;\n\t" \
557 "movups 0x10(%0),%%xmm1 ;\n\t" \
558 "movups 0x20(%0),%%xmm2 ;\n\t" \
559 "movups 0x30(%0),%%xmm3 ;\n\t" \
560 : \
561 : "r" (xmm_save) \
562 : "memory"); \
563 write_cr0(cr0); \
564 preempt_enable(); \
565} while (0)
566
567#define ALIGN16 __attribute__((aligned(16)))
568
569#define OFFS(x) "16*("#x")"
570#define PF_OFFS(x) "256+16*("#x")"
571#define PF0(x) " prefetchnta "PF_OFFS(x)"(%1) ;\n"
572#define LD(x, y) " movaps "OFFS(x)"(%1), %%xmm"#y" ;\n"
573#define ST(x, y) " movaps %%xmm"#y", "OFFS(x)"(%1) ;\n"
574#define PF1(x) " prefetchnta "PF_OFFS(x)"(%2) ;\n"
575#define PF2(x) " prefetchnta "PF_OFFS(x)"(%3) ;\n"
576#define PF3(x) " prefetchnta "PF_OFFS(x)"(%4) ;\n"
577#define PF4(x) " prefetchnta "PF_OFFS(x)"(%5) ;\n"
578#define PF5(x) " prefetchnta "PF_OFFS(x)"(%6) ;\n"
579#define XO1(x, y) " xorps "OFFS(x)"(%2), %%xmm"#y" ;\n"
580#define XO2(x, y) " xorps "OFFS(x)"(%3), %%xmm"#y" ;\n"
581#define XO3(x, y) " xorps "OFFS(x)"(%4), %%xmm"#y" ;\n"
582#define XO4(x, y) " xorps "OFFS(x)"(%5), %%xmm"#y" ;\n"
583#define XO5(x, y) " xorps "OFFS(x)"(%6), %%xmm"#y" ;\n"
584
585
586static void
587xor_sse_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
588{
589 unsigned long lines = bytes >> 8;
590 char xmm_save[16*4] ALIGN16;
591 int cr0;
592
593 XMMS_SAVE;
594
595 asm volatile(
596#undef BLOCK
597#define BLOCK(i) \
598 LD(i, 0) \
599 LD(i + 1, 1) \
600 PF1(i) \
601 PF1(i + 2) \
602 LD(i + 2, 2) \
603 LD(i + 3, 3) \
604 PF0(i + 4) \
605 PF0(i + 6) \
606 XO1(i, 0) \
607 XO1(i + 1, 1) \
608 XO1(i + 2, 2) \
609 XO1(i + 3, 3) \
610 ST(i, 0) \
611 ST(i + 1, 1) \
612 ST(i + 2, 2) \
613 ST(i + 3, 3) \
614
615
616 PF0(0)
617 PF0(2)
618
619 " .align 32 ;\n"
620 " 1: ;\n"
621
622 BLOCK(0)
623 BLOCK(4)
624 BLOCK(8)
625 BLOCK(12)
626
627 " addl $256, %1 ;\n"
628 " addl $256, %2 ;\n"
629 " decl %0 ;\n"
630 " jnz 1b ;\n"
631 : "+r" (lines),
632 "+r" (p1), "+r" (p2)
633 :
634 : "memory");
635
636 XMMS_RESTORE;
637}
638
639static void
640xor_sse_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
641 unsigned long *p3)
642{
643 unsigned long lines = bytes >> 8;
644 char xmm_save[16*4] ALIGN16;
645 int cr0;
646
647 XMMS_SAVE;
648
649 asm volatile(
650#undef BLOCK
651#define BLOCK(i) \
652 PF1(i) \
653 PF1(i + 2) \
654 LD(i,0) \
655 LD(i + 1, 1) \
656 LD(i + 2, 2) \
657 LD(i + 3, 3) \
658 PF2(i) \
659 PF2(i + 2) \
660 PF0(i + 4) \
661 PF0(i + 6) \
662 XO1(i,0) \
663 XO1(i + 1, 1) \
664 XO1(i + 2, 2) \
665 XO1(i + 3, 3) \
666 XO2(i,0) \
667 XO2(i + 1, 1) \
668 XO2(i + 2, 2) \
669 XO2(i + 3, 3) \
670 ST(i,0) \
671 ST(i + 1, 1) \
672 ST(i + 2, 2) \
673 ST(i + 3, 3) \
674
675
676 PF0(0)
677 PF0(2)
678
679 " .align 32 ;\n"
680 " 1: ;\n"
681
682 BLOCK(0)
683 BLOCK(4)
684 BLOCK(8)
685 BLOCK(12)
686
687 " addl $256, %1 ;\n"
688 " addl $256, %2 ;\n"
689 " addl $256, %3 ;\n"
690 " decl %0 ;\n"
691 " jnz 1b ;\n"
692 : "+r" (lines),
693 "+r" (p1), "+r"(p2), "+r"(p3)
694 :
695 : "memory" );
696
697 XMMS_RESTORE;
698}
699
700static void
701xor_sse_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
702 unsigned long *p3, unsigned long *p4)
703{
704 unsigned long lines = bytes >> 8;
705 char xmm_save[16*4] ALIGN16;
706 int cr0;
707
708 XMMS_SAVE;
709
710 asm volatile(
711#undef BLOCK
712#define BLOCK(i) \
713 PF1(i) \
714 PF1(i + 2) \
715 LD(i,0) \
716 LD(i + 1, 1) \
717 LD(i + 2, 2) \
718 LD(i + 3, 3) \
719 PF2(i) \
720 PF2(i + 2) \
721 XO1(i,0) \
722 XO1(i + 1, 1) \
723 XO1(i + 2, 2) \
724 XO1(i + 3, 3) \
725 PF3(i) \
726 PF3(i + 2) \
727 PF0(i + 4) \
728 PF0(i + 6) \
729 XO2(i,0) \
730 XO2(i + 1, 1) \
731 XO2(i + 2, 2) \
732 XO2(i + 3, 3) \
733 XO3(i,0) \
734 XO3(i + 1, 1) \
735 XO3(i + 2, 2) \
736 XO3(i + 3, 3) \
737 ST(i,0) \
738 ST(i + 1, 1) \
739 ST(i + 2, 2) \
740 ST(i + 3, 3) \
741
742
743 PF0(0)
744 PF0(2)
745
746 " .align 32 ;\n"
747 " 1: ;\n"
748
749 BLOCK(0)
750 BLOCK(4)
751 BLOCK(8)
752 BLOCK(12)
753
754 " addl $256, %1 ;\n"
755 " addl $256, %2 ;\n"
756 " addl $256, %3 ;\n"
757 " addl $256, %4 ;\n"
758 " decl %0 ;\n"
759 " jnz 1b ;\n"
760 : "+r" (lines),
761 "+r" (p1), "+r" (p2), "+r" (p3), "+r" (p4)
762 :
763 : "memory" );
764
765 XMMS_RESTORE;
766}
767
768static void
769xor_sse_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
770 unsigned long *p3, unsigned long *p4, unsigned long *p5)
771{
772 unsigned long lines = bytes >> 8;
773 char xmm_save[16*4] ALIGN16;
774 int cr0;
775
776 XMMS_SAVE;
777
778 /* Make sure GCC forgets anything it knows about p4 or p5,
779 such that it won't pass to the asm volatile below a
780 register that is shared with any other variable. That's
781 because we modify p4 and p5 there, but we can't mark them
782 as read/write, otherwise we'd overflow the 10-asm-operands
783 limit of GCC < 3.1. */
784 asm("" : "+r" (p4), "+r" (p5));
785
786 asm volatile(
787#undef BLOCK
788#define BLOCK(i) \
789 PF1(i) \
790 PF1(i + 2) \
791 LD(i,0) \
792 LD(i + 1, 1) \
793 LD(i + 2, 2) \
794 LD(i + 3, 3) \
795 PF2(i) \
796 PF2(i + 2) \
797 XO1(i,0) \
798 XO1(i + 1, 1) \
799 XO1(i + 2, 2) \
800 XO1(i + 3, 3) \
801 PF3(i) \
802 PF3(i + 2) \
803 XO2(i,0) \
804 XO2(i + 1, 1) \
805 XO2(i + 2, 2) \
806 XO2(i + 3, 3) \
807 PF4(i) \
808 PF4(i + 2) \
809 PF0(i + 4) \
810 PF0(i + 6) \
811 XO3(i,0) \
812 XO3(i + 1, 1) \
813 XO3(i + 2, 2) \
814 XO3(i + 3, 3) \
815 XO4(i,0) \
816 XO4(i + 1, 1) \
817 XO4(i + 2, 2) \
818 XO4(i + 3, 3) \
819 ST(i,0) \
820 ST(i + 1, 1) \
821 ST(i + 2, 2) \
822 ST(i + 3, 3) \
823
824
825 PF0(0)
826 PF0(2)
827
828 " .align 32 ;\n"
829 " 1: ;\n"
830
831 BLOCK(0)
832 BLOCK(4)
833 BLOCK(8)
834 BLOCK(12)
835
836 " addl $256, %1 ;\n"
837 " addl $256, %2 ;\n"
838 " addl $256, %3 ;\n"
839 " addl $256, %4 ;\n"
840 " addl $256, %5 ;\n"
841 " decl %0 ;\n"
842 " jnz 1b ;\n"
843 : "+r" (lines),
844 "+r" (p1), "+r" (p2), "+r" (p3)
845 : "r" (p4), "r" (p5)
846 : "memory");
847
848 /* p4 and p5 were modified, and now the variables are dead.
849 Clobber them just to be sure nobody does something stupid
850 like assuming they have some legal value. */
851 asm("" : "=r" (p4), "=r" (p5));
852
853 XMMS_RESTORE;
854}
855
856static struct xor_block_template xor_block_pIII_sse = {
857 .name = "pIII_sse",
858 .do_2 = xor_sse_2,
859 .do_3 = xor_sse_3,
860 .do_4 = xor_sse_4,
861 .do_5 = xor_sse_5,
862};
863
864/* Also try the generic routines. */
865#include <asm-generic/xor.h>
866
867#undef XOR_TRY_TEMPLATES
868#define XOR_TRY_TEMPLATES \
869do { \
870 xor_speed(&xor_block_8regs); \
871 xor_speed(&xor_block_8regs_p); \
872 xor_speed(&xor_block_32regs); \
873 xor_speed(&xor_block_32regs_p); \
874 if (cpu_has_xmm) \
875 xor_speed(&xor_block_pIII_sse); \
876 if (cpu_has_mmx) { \
877 xor_speed(&xor_block_pII_mmx); \
878 xor_speed(&xor_block_p5_mmx); \
879 } \
880} while (0)
881
882/* We force the use of the SSE xor block because it can write around L2.
883 We may also be able to load into the L1 only depending on how the cpu
884 deals with a load to a line that is being prefetched. */
885#define XOR_SELECT_TEMPLATE(FASTEST) \
886 (cpu_has_xmm ? &xor_block_pIII_sse : FASTEST)
887
888#endif /* _ASM_X86_XOR_32_H */
diff --git a/arch/x86/include/asm/xor_64.h b/arch/x86/include/asm/xor_64.h
new file mode 100644
index 000000000000..1549b5e261f6
--- /dev/null
+++ b/arch/x86/include/asm/xor_64.h
@@ -0,0 +1,361 @@
1#ifndef _ASM_X86_XOR_64_H
2#define _ASM_X86_XOR_64_H
3
4/*
5 * Optimized RAID-5 checksumming functions for MMX and SSE.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * You should have received a copy of the GNU General Public License
13 * (for example /usr/src/linux/COPYING); if not, write to the Free
14 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
15 */
16
17
18/*
19 * Cache avoiding checksumming functions utilizing KNI instructions
20 * Copyright (C) 1999 Zach Brown (with obvious credit due Ingo)
21 */
22
23/*
24 * Based on
25 * High-speed RAID5 checksumming functions utilizing SSE instructions.
26 * Copyright (C) 1998 Ingo Molnar.
27 */
28
29/*
30 * x86-64 changes / gcc fixes from Andi Kleen.
31 * Copyright 2002 Andi Kleen, SuSE Labs.
32 *
33 * This hasn't been optimized for the hammer yet, but there are likely
34 * no advantages to be gotten from x86-64 here anyways.
35 */
36
37typedef struct {
38 unsigned long a, b;
39} __attribute__((aligned(16))) xmm_store_t;
40
41/* Doesn't use gcc to save the XMM registers, because there is no easy way to
42 tell it to do a clts before the register saving. */
43#define XMMS_SAVE \
44do { \
45 preempt_disable(); \
46 asm volatile( \
47 "movq %%cr0,%0 ;\n\t" \
48 "clts ;\n\t" \
49 "movups %%xmm0,(%1) ;\n\t" \
50 "movups %%xmm1,0x10(%1) ;\n\t" \
51 "movups %%xmm2,0x20(%1) ;\n\t" \
52 "movups %%xmm3,0x30(%1) ;\n\t" \
53 : "=&r" (cr0) \
54 : "r" (xmm_save) \
55 : "memory"); \
56} while (0)
57
58#define XMMS_RESTORE \
59do { \
60 asm volatile( \
61 "sfence ;\n\t" \
62 "movups (%1),%%xmm0 ;\n\t" \
63 "movups 0x10(%1),%%xmm1 ;\n\t" \
64 "movups 0x20(%1),%%xmm2 ;\n\t" \
65 "movups 0x30(%1),%%xmm3 ;\n\t" \
66 "movq %0,%%cr0 ;\n\t" \
67 : \
68 : "r" (cr0), "r" (xmm_save) \
69 : "memory"); \
70 preempt_enable(); \
71} while (0)
72
73#define OFFS(x) "16*("#x")"
74#define PF_OFFS(x) "256+16*("#x")"
75#define PF0(x) " prefetchnta "PF_OFFS(x)"(%[p1]) ;\n"
76#define LD(x, y) " movaps "OFFS(x)"(%[p1]), %%xmm"#y" ;\n"
77#define ST(x, y) " movaps %%xmm"#y", "OFFS(x)"(%[p1]) ;\n"
78#define PF1(x) " prefetchnta "PF_OFFS(x)"(%[p2]) ;\n"
79#define PF2(x) " prefetchnta "PF_OFFS(x)"(%[p3]) ;\n"
80#define PF3(x) " prefetchnta "PF_OFFS(x)"(%[p4]) ;\n"
81#define PF4(x) " prefetchnta "PF_OFFS(x)"(%[p5]) ;\n"
82#define PF5(x) " prefetchnta "PF_OFFS(x)"(%[p6]) ;\n"
83#define XO1(x, y) " xorps "OFFS(x)"(%[p2]), %%xmm"#y" ;\n"
84#define XO2(x, y) " xorps "OFFS(x)"(%[p3]), %%xmm"#y" ;\n"
85#define XO3(x, y) " xorps "OFFS(x)"(%[p4]), %%xmm"#y" ;\n"
86#define XO4(x, y) " xorps "OFFS(x)"(%[p5]), %%xmm"#y" ;\n"
87#define XO5(x, y) " xorps "OFFS(x)"(%[p6]), %%xmm"#y" ;\n"
88
89
90static void
91xor_sse_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
92{
93 unsigned int lines = bytes >> 8;
94 unsigned long cr0;
95 xmm_store_t xmm_save[4];
96
97 XMMS_SAVE;
98
99 asm volatile(
100#undef BLOCK
101#define BLOCK(i) \
102 LD(i, 0) \
103 LD(i + 1, 1) \
104 PF1(i) \
105 PF1(i + 2) \
106 LD(i + 2, 2) \
107 LD(i + 3, 3) \
108 PF0(i + 4) \
109 PF0(i + 6) \
110 XO1(i, 0) \
111 XO1(i + 1, 1) \
112 XO1(i + 2, 2) \
113 XO1(i + 3, 3) \
114 ST(i, 0) \
115 ST(i + 1, 1) \
116 ST(i + 2, 2) \
117 ST(i + 3, 3) \
118
119
120 PF0(0)
121 PF0(2)
122
123 " .align 32 ;\n"
124 " 1: ;\n"
125
126 BLOCK(0)
127 BLOCK(4)
128 BLOCK(8)
129 BLOCK(12)
130
131 " addq %[inc], %[p1] ;\n"
132 " addq %[inc], %[p2] ;\n"
133 " decl %[cnt] ; jnz 1b"
134 : [p1] "+r" (p1), [p2] "+r" (p2), [cnt] "+r" (lines)
135 : [inc] "r" (256UL)
136 : "memory");
137
138 XMMS_RESTORE;
139}
140
141static void
142xor_sse_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
143 unsigned long *p3)
144{
145 unsigned int lines = bytes >> 8;
146 xmm_store_t xmm_save[4];
147 unsigned long cr0;
148
149 XMMS_SAVE;
150
151 asm volatile(
152#undef BLOCK
153#define BLOCK(i) \
154 PF1(i) \
155 PF1(i + 2) \
156 LD(i, 0) \
157 LD(i + 1, 1) \
158 LD(i + 2, 2) \
159 LD(i + 3, 3) \
160 PF2(i) \
161 PF2(i + 2) \
162 PF0(i + 4) \
163 PF0(i + 6) \
164 XO1(i, 0) \
165 XO1(i + 1, 1) \
166 XO1(i + 2, 2) \
167 XO1(i + 3, 3) \
168 XO2(i, 0) \
169 XO2(i + 1, 1) \
170 XO2(i + 2, 2) \
171 XO2(i + 3, 3) \
172 ST(i, 0) \
173 ST(i + 1, 1) \
174 ST(i + 2, 2) \
175 ST(i + 3, 3) \
176
177
178 PF0(0)
179 PF0(2)
180
181 " .align 32 ;\n"
182 " 1: ;\n"
183
184 BLOCK(0)
185 BLOCK(4)
186 BLOCK(8)
187 BLOCK(12)
188
189 " addq %[inc], %[p1] ;\n"
190 " addq %[inc], %[p2] ;\n"
191 " addq %[inc], %[p3] ;\n"
192 " decl %[cnt] ; jnz 1b"
193 : [cnt] "+r" (lines),
194 [p1] "+r" (p1), [p2] "+r" (p2), [p3] "+r" (p3)
195 : [inc] "r" (256UL)
196 : "memory");
197 XMMS_RESTORE;
198}
199
200static void
201xor_sse_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
202 unsigned long *p3, unsigned long *p4)
203{
204 unsigned int lines = bytes >> 8;
205 xmm_store_t xmm_save[4];
206 unsigned long cr0;
207
208 XMMS_SAVE;
209
210 asm volatile(
211#undef BLOCK
212#define BLOCK(i) \
213 PF1(i) \
214 PF1(i + 2) \
215 LD(i, 0) \
216 LD(i + 1, 1) \
217 LD(i + 2, 2) \
218 LD(i + 3, 3) \
219 PF2(i) \
220 PF2(i + 2) \
221 XO1(i, 0) \
222 XO1(i + 1, 1) \
223 XO1(i + 2, 2) \
224 XO1(i + 3, 3) \
225 PF3(i) \
226 PF3(i + 2) \
227 PF0(i + 4) \
228 PF0(i + 6) \
229 XO2(i, 0) \
230 XO2(i + 1, 1) \
231 XO2(i + 2, 2) \
232 XO2(i + 3, 3) \
233 XO3(i, 0) \
234 XO3(i + 1, 1) \
235 XO3(i + 2, 2) \
236 XO3(i + 3, 3) \
237 ST(i, 0) \
238 ST(i + 1, 1) \
239 ST(i + 2, 2) \
240 ST(i + 3, 3) \
241
242
243 PF0(0)
244 PF0(2)
245
246 " .align 32 ;\n"
247 " 1: ;\n"
248
249 BLOCK(0)
250 BLOCK(4)
251 BLOCK(8)
252 BLOCK(12)
253
254 " addq %[inc], %[p1] ;\n"
255 " addq %[inc], %[p2] ;\n"
256 " addq %[inc], %[p3] ;\n"
257 " addq %[inc], %[p4] ;\n"
258 " decl %[cnt] ; jnz 1b"
259 : [cnt] "+c" (lines),
260 [p1] "+r" (p1), [p2] "+r" (p2), [p3] "+r" (p3), [p4] "+r" (p4)
261 : [inc] "r" (256UL)
262 : "memory" );
263
264 XMMS_RESTORE;
265}
266
267static void
268xor_sse_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
269 unsigned long *p3, unsigned long *p4, unsigned long *p5)
270{
271 unsigned int lines = bytes >> 8;
272 xmm_store_t xmm_save[4];
273 unsigned long cr0;
274
275 XMMS_SAVE;
276
277 asm volatile(
278#undef BLOCK
279#define BLOCK(i) \
280 PF1(i) \
281 PF1(i + 2) \
282 LD(i, 0) \
283 LD(i + 1, 1) \
284 LD(i + 2, 2) \
285 LD(i + 3, 3) \
286 PF2(i) \
287 PF2(i + 2) \
288 XO1(i, 0) \
289 XO1(i + 1, 1) \
290 XO1(i + 2, 2) \
291 XO1(i + 3, 3) \
292 PF3(i) \
293 PF3(i + 2) \
294 XO2(i, 0) \
295 XO2(i + 1, 1) \
296 XO2(i + 2, 2) \
297 XO2(i + 3, 3) \
298 PF4(i) \
299 PF4(i + 2) \
300 PF0(i + 4) \
301 PF0(i + 6) \
302 XO3(i, 0) \
303 XO3(i + 1, 1) \
304 XO3(i + 2, 2) \
305 XO3(i + 3, 3) \
306 XO4(i, 0) \
307 XO4(i + 1, 1) \
308 XO4(i + 2, 2) \
309 XO4(i + 3, 3) \
310 ST(i, 0) \
311 ST(i + 1, 1) \
312 ST(i + 2, 2) \
313 ST(i + 3, 3) \
314
315
316 PF0(0)
317 PF0(2)
318
319 " .align 32 ;\n"
320 " 1: ;\n"
321
322 BLOCK(0)
323 BLOCK(4)
324 BLOCK(8)
325 BLOCK(12)
326
327 " addq %[inc], %[p1] ;\n"
328 " addq %[inc], %[p2] ;\n"
329 " addq %[inc], %[p3] ;\n"
330 " addq %[inc], %[p4] ;\n"
331 " addq %[inc], %[p5] ;\n"
332 " decl %[cnt] ; jnz 1b"
333 : [cnt] "+c" (lines),
334 [p1] "+r" (p1), [p2] "+r" (p2), [p3] "+r" (p3), [p4] "+r" (p4),
335 [p5] "+r" (p5)
336 : [inc] "r" (256UL)
337 : "memory");
338
339 XMMS_RESTORE;
340}
341
342static struct xor_block_template xor_block_sse = {
343 .name = "generic_sse",
344 .do_2 = xor_sse_2,
345 .do_3 = xor_sse_3,
346 .do_4 = xor_sse_4,
347 .do_5 = xor_sse_5,
348};
349
350#undef XOR_TRY_TEMPLATES
351#define XOR_TRY_TEMPLATES \
352do { \
353 xor_speed(&xor_block_sse); \
354} while (0)
355
356/* We force the use of the SSE xor block because it can write around L2.
357 We may also be able to load into the L1 only depending on how the cpu
358 deals with a load to a line that is being prefetched. */
359#define XOR_SELECT_TEMPLATE(FASTEST) (&xor_block_sse)
360
361#endif /* _ASM_X86_XOR_64_H */
diff --git a/arch/x86/include/asm/xsave.h b/arch/x86/include/asm/xsave.h
new file mode 100644
index 000000000000..08e9a1ac07a9
--- /dev/null
+++ b/arch/x86/include/asm/xsave.h
@@ -0,0 +1,118 @@
1#ifndef __ASM_X86_XSAVE_H
2#define __ASM_X86_XSAVE_H
3
4#include <linux/types.h>
5#include <asm/processor.h>
6#include <asm/i387.h>
7
8#define XSTATE_FP 0x1
9#define XSTATE_SSE 0x2
10
11#define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE)
12
13#define FXSAVE_SIZE 512
14
15/*
16 * These are the features that the OS can handle currently.
17 */
18#define XCNTXT_MASK (XSTATE_FP | XSTATE_SSE)
19
20#ifdef CONFIG_X86_64
21#define REX_PREFIX "0x48, "
22#else
23#define REX_PREFIX
24#endif
25
26extern unsigned int xstate_size;
27extern u64 pcntxt_mask;
28extern struct xsave_struct *init_xstate_buf;
29
30extern void xsave_cntxt_init(void);
31extern void xsave_init(void);
32extern int init_fpu(struct task_struct *child);
33extern int check_for_xstate(struct i387_fxsave_struct __user *buf,
34 void __user *fpstate,
35 struct _fpx_sw_bytes *sw);
36
37static inline int xrstor_checking(struct xsave_struct *fx)
38{
39 int err;
40
41 asm volatile("1: .byte " REX_PREFIX "0x0f,0xae,0x2f\n\t"
42 "2:\n"
43 ".section .fixup,\"ax\"\n"
44 "3: movl $-1,%[err]\n"
45 " jmp 2b\n"
46 ".previous\n"
47 _ASM_EXTABLE(1b, 3b)
48 : [err] "=r" (err)
49 : "D" (fx), "m" (*fx), "a" (-1), "d" (-1), "0" (0)
50 : "memory");
51
52 return err;
53}
54
55static inline int xsave_user(struct xsave_struct __user *buf)
56{
57 int err;
58 __asm__ __volatile__("1: .byte " REX_PREFIX "0x0f,0xae,0x27\n"
59 "2:\n"
60 ".section .fixup,\"ax\"\n"
61 "3: movl $-1,%[err]\n"
62 " jmp 2b\n"
63 ".previous\n"
64 ".section __ex_table,\"a\"\n"
65 _ASM_ALIGN "\n"
66 _ASM_PTR "1b,3b\n"
67 ".previous"
68 : [err] "=r" (err)
69 : "D" (buf), "a" (-1), "d" (-1), "0" (0)
70 : "memory");
71 if (unlikely(err) && __clear_user(buf, xstate_size))
72 err = -EFAULT;
73 /* No need to clear here because the caller clears USED_MATH */
74 return err;
75}
76
77static inline int xrestore_user(struct xsave_struct __user *buf, u64 mask)
78{
79 int err;
80 struct xsave_struct *xstate = ((__force struct xsave_struct *)buf);
81 u32 lmask = mask;
82 u32 hmask = mask >> 32;
83
84 __asm__ __volatile__("1: .byte " REX_PREFIX "0x0f,0xae,0x2f\n"
85 "2:\n"
86 ".section .fixup,\"ax\"\n"
87 "3: movl $-1,%[err]\n"
88 " jmp 2b\n"
89 ".previous\n"
90 ".section __ex_table,\"a\"\n"
91 _ASM_ALIGN "\n"
92 _ASM_PTR "1b,3b\n"
93 ".previous"
94 : [err] "=r" (err)
95 : "D" (xstate), "a" (lmask), "d" (hmask), "0" (0)
96 : "memory"); /* memory required? */
97 return err;
98}
99
100static inline void xrstor_state(struct xsave_struct *fx, u64 mask)
101{
102 u32 lmask = mask;
103 u32 hmask = mask >> 32;
104
105 asm volatile(".byte " REX_PREFIX "0x0f,0xae,0x2f\n\t"
106 : : "D" (fx), "m" (*fx), "a" (lmask), "d" (hmask)
107 : "memory");
108}
109
110static inline void xsave(struct task_struct *tsk)
111{
112 /* This, however, we can work around by forcing the compiler to select
113 an addressing mode that doesn't require extended registers. */
114 __asm__ __volatile__(".byte " REX_PREFIX "0x0f,0xae,0x27"
115 : : "D" (&(tsk->thread.xstate->xsave)),
116 "a" (-1), "d"(-1) : "memory");
117}
118#endif
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 0d1c26a583c5..8c1f76abae9e 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -153,12 +153,13 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
153} 153}
154 154
155#ifdef CONFIG_PCI_MMCONFIG 155#ifdef CONFIG_PCI_MMCONFIG
156
157static int acpi_mcfg_64bit_base_addr __initdata = FALSE;
158
156/* The physical address of the MMCONFIG aperture. Set from ACPI tables. */ 159/* The physical address of the MMCONFIG aperture. Set from ACPI tables. */
157struct acpi_mcfg_allocation *pci_mmcfg_config; 160struct acpi_mcfg_allocation *pci_mmcfg_config;
158int pci_mmcfg_config_num; 161int pci_mmcfg_config_num;
159 162
160static int acpi_mcfg_64bit_base_addr __initdata = FALSE;
161
162static int __init acpi_mcfg_oem_check(struct acpi_table_mcfg *mcfg) 163static int __init acpi_mcfg_oem_check(struct acpi_table_mcfg *mcfg)
163{ 164{
164 if (!strcmp(mcfg->header.oem_id, "SGI")) 165 if (!strcmp(mcfg->header.oem_id, "SGI"))
@@ -1136,7 +1137,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity)
1136 return gsi; 1137 return gsi;
1137 } 1138 }
1138 if (test_bit(ioapic_pin, mp_ioapic_routing[ioapic].pin_programmed)) { 1139 if (test_bit(ioapic_pin, mp_ioapic_routing[ioapic].pin_programmed)) {
1139 pr_debug(KERN_DEBUG "Pin %d-%d already programmed\n", 1140 pr_debug("Pin %d-%d already programmed\n",
1140 mp_ioapic_routing[ioapic].apic_id, ioapic_pin); 1141 mp_ioapic_routing[ioapic].apic_id, ioapic_pin);
1141#ifdef CONFIG_X86_32 1142#ifdef CONFIG_X86_32
1142 return (gsi < IRQ_COMPRESSION_START ? gsi : gsi_to_irq[gsi]); 1143 return (gsi < IRQ_COMPRESSION_START ? gsi : gsi_to_irq[gsi]);
@@ -1598,6 +1599,11 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
1598 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), 1599 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
1599 }, 1600 },
1600 }, 1601 },
1602 {}
1603};
1604
1605/* second table for DMI checks that should run after early-quirks */
1606static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
1601 /* 1607 /*
1602 * HP laptops which use a DSDT reporting as HP/SB400/10000, 1608 * HP laptops which use a DSDT reporting as HP/SB400/10000,
1603 * which includes some code which overrides all temperature 1609 * which includes some code which overrides all temperature
@@ -1726,6 +1732,9 @@ int __init early_acpi_boot_init(void)
1726 1732
1727int __init acpi_boot_init(void) 1733int __init acpi_boot_init(void)
1728{ 1734{
1735 /* those are executed after early-quirks are executed */
1736 dmi_check_system(acpi_dmi_table_late);
1737
1729 /* 1738 /*
1730 * If acpi_disabled, bail out 1739 * If acpi_disabled, bail out
1731 * One exception: acpi=ht continues far enough to enumerate LAPICs 1740 * One exception: acpi=ht continues far enough to enumerate LAPICs
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
index c44cd6dbfa14..806b4e9051b4 100644
--- a/arch/x86/kernel/acpi/sleep.c
+++ b/arch/x86/kernel/acpi/sleep.c
@@ -22,7 +22,7 @@ unsigned long acpi_realmode_flags;
22static unsigned long acpi_realmode; 22static unsigned long acpi_realmode;
23 23
24#if defined(CONFIG_SMP) && defined(CONFIG_64BIT) 24#if defined(CONFIG_SMP) && defined(CONFIG_64BIT)
25static char temp_stack[10240]; 25static char temp_stack[4096];
26#endif 26#endif
27 27
28/** 28/**
@@ -98,7 +98,7 @@ int acpi_save_state_mem(void)
98#else /* CONFIG_64BIT */ 98#else /* CONFIG_64BIT */
99 header->trampoline_segment = setup_trampoline() >> 4; 99 header->trampoline_segment = setup_trampoline() >> 4;
100#ifdef CONFIG_SMP 100#ifdef CONFIG_SMP
101 stack_start.sp = temp_stack + 4096; 101 stack_start.sp = temp_stack + sizeof(temp_stack);
102 early_gdt_descr.address = 102 early_gdt_descr.address =
103 (unsigned long)get_cpu_gdt_table(smp_processor_id()); 103 (unsigned long)get_cpu_gdt_table(smp_processor_id());
104#endif 104#endif
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 4cd8083c58be..0cdcda35a05f 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -212,7 +212,7 @@ static void __init iommu_set_exclusion_range(struct amd_iommu *iommu)
212/* Programs the physical address of the device table into the IOMMU hardware */ 212/* Programs the physical address of the device table into the IOMMU hardware */
213static void __init iommu_set_device_table(struct amd_iommu *iommu) 213static void __init iommu_set_device_table(struct amd_iommu *iommu)
214{ 214{
215 u32 entry; 215 u64 entry;
216 216
217 BUG_ON(iommu->mmio_base == NULL); 217 BUG_ON(iommu->mmio_base == NULL);
218 218
diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86/kernel/asm-offsets_64.c
index 505543a75a56..7fcf63d22f8b 100644
--- a/arch/x86/kernel/asm-offsets_64.c
+++ b/arch/x86/kernel/asm-offsets_64.c
@@ -22,7 +22,7 @@
22 22
23#define __NO_STUBS 1 23#define __NO_STUBS 1
24#undef __SYSCALL 24#undef __SYSCALL
25#undef ASM_X86__UNISTD_64_H 25#undef _ASM_X86_UNISTD_64_H
26#define __SYSCALL(nr, sym) [nr] = 1, 26#define __SYSCALL(nr, sym) [nr] = 1,
27static char syscalls[] = { 27static char syscalls[] = {
28#include <asm/unistd.h> 28#include <asm/unistd.h>
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index 7f0b45a5d788..82ec6075c057 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -25,7 +25,7 @@ obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o
25quiet_cmd_mkcapflags = MKCAP $@ 25quiet_cmd_mkcapflags = MKCAP $@
26 cmd_mkcapflags = $(PERL) $(srctree)/$(src)/mkcapflags.pl $< $@ 26 cmd_mkcapflags = $(PERL) $(srctree)/$(src)/mkcapflags.pl $< $@
27 27
28cpufeature = $(src)/../../../../include/asm-x86/cpufeature.h 28cpufeature = $(src)/../../include/asm/cpufeature.h
29 29
30targets += capflags.c 30targets += capflags.c
31$(obj)/capflags.c: $(cpufeature) $(src)/mkcapflags.pl FORCE 31$(obj)/capflags.c: $(cpufeature) $(src)/mkcapflags.pl FORCE
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index c24c4a487b7c..8e48c5d4467d 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -780,6 +780,9 @@ static int __init acpi_cpufreq_init(void)
780{ 780{
781 int ret; 781 int ret;
782 782
783 if (acpi_disabled)
784 return 0;
785
783 dprintk("acpi_cpufreq_init\n"); 786 dprintk("acpi_cpufreq_init\n");
784 787
785 ret = acpi_cpufreq_early_init(); 788 ret = acpi_cpufreq_early_init();
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
index 008d23ba491b..d3dcd58b87cd 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
@@ -45,7 +45,6 @@
45#endif 45#endif
46 46
47#define PFX "powernow-k8: " 47#define PFX "powernow-k8: "
48#define BFX PFX "BIOS error: "
49#define VERSION "version 2.20.00" 48#define VERSION "version 2.20.00"
50#include "powernow-k8.h" 49#include "powernow-k8.h"
51 50
@@ -536,35 +535,40 @@ static int check_pst_table(struct powernow_k8_data *data, struct pst_s *pst, u8
536 535
537 for (j = 0; j < data->numps; j++) { 536 for (j = 0; j < data->numps; j++) {
538 if (pst[j].vid > LEAST_VID) { 537 if (pst[j].vid > LEAST_VID) {
539 printk(KERN_ERR PFX "vid %d invalid : 0x%x\n", j, pst[j].vid); 538 printk(KERN_ERR FW_BUG PFX "vid %d invalid : 0x%x\n",
539 j, pst[j].vid);
540 return -EINVAL; 540 return -EINVAL;
541 } 541 }
542 if (pst[j].vid < data->rvo) { /* vid + rvo >= 0 */ 542 if (pst[j].vid < data->rvo) { /* vid + rvo >= 0 */
543 printk(KERN_ERR BFX "0 vid exceeded with pstate %d\n", j); 543 printk(KERN_ERR FW_BUG PFX "0 vid exceeded with pstate"
544 " %d\n", j);
544 return -ENODEV; 545 return -ENODEV;
545 } 546 }
546 if (pst[j].vid < maxvid + data->rvo) { /* vid + rvo >= maxvid */ 547 if (pst[j].vid < maxvid + data->rvo) { /* vid + rvo >= maxvid */
547 printk(KERN_ERR BFX "maxvid exceeded with pstate %d\n", j); 548 printk(KERN_ERR FW_BUG PFX "maxvid exceeded with pstate"
549 " %d\n", j);
548 return -ENODEV; 550 return -ENODEV;
549 } 551 }
550 if (pst[j].fid > MAX_FID) { 552 if (pst[j].fid > MAX_FID) {
551 printk(KERN_ERR BFX "maxfid exceeded with pstate %d\n", j); 553 printk(KERN_ERR FW_BUG PFX "maxfid exceeded with pstate"
554 " %d\n", j);
552 return -ENODEV; 555 return -ENODEV;
553 } 556 }
554 if (j && (pst[j].fid < HI_FID_TABLE_BOTTOM)) { 557 if (j && (pst[j].fid < HI_FID_TABLE_BOTTOM)) {
555 /* Only first fid is allowed to be in "low" range */ 558 /* Only first fid is allowed to be in "low" range */
556 printk(KERN_ERR BFX "two low fids - %d : 0x%x\n", j, pst[j].fid); 559 printk(KERN_ERR FW_BUG PFX "two low fids - %d : "
560 "0x%x\n", j, pst[j].fid);
557 return -EINVAL; 561 return -EINVAL;
558 } 562 }
559 if (pst[j].fid < lastfid) 563 if (pst[j].fid < lastfid)
560 lastfid = pst[j].fid; 564 lastfid = pst[j].fid;
561 } 565 }
562 if (lastfid & 1) { 566 if (lastfid & 1) {
563 printk(KERN_ERR BFX "lastfid invalid\n"); 567 printk(KERN_ERR FW_BUG PFX "lastfid invalid\n");
564 return -EINVAL; 568 return -EINVAL;
565 } 569 }
566 if (lastfid > LO_FID_TABLE_TOP) 570 if (lastfid > LO_FID_TABLE_TOP)
567 printk(KERN_INFO BFX "first fid not from lo freq table\n"); 571 printk(KERN_INFO FW_BUG PFX "first fid not from lo freq table\n");
568 572
569 return 0; 573 return 0;
570} 574}
@@ -672,13 +676,13 @@ static int find_psb_table(struct powernow_k8_data *data)
672 676
673 dprintk("table vers: 0x%x\n", psb->tableversion); 677 dprintk("table vers: 0x%x\n", psb->tableversion);
674 if (psb->tableversion != PSB_VERSION_1_4) { 678 if (psb->tableversion != PSB_VERSION_1_4) {
675 printk(KERN_ERR BFX "PSB table is not v1.4\n"); 679 printk(KERN_ERR FW_BUG PFX "PSB table is not v1.4\n");
676 return -ENODEV; 680 return -ENODEV;
677 } 681 }
678 682
679 dprintk("flags: 0x%x\n", psb->flags1); 683 dprintk("flags: 0x%x\n", psb->flags1);
680 if (psb->flags1) { 684 if (psb->flags1) {
681 printk(KERN_ERR BFX "unknown flags\n"); 685 printk(KERN_ERR FW_BUG PFX "unknown flags\n");
682 return -ENODEV; 686 return -ENODEV;
683 } 687 }
684 688
@@ -705,7 +709,7 @@ static int find_psb_table(struct powernow_k8_data *data)
705 } 709 }
706 } 710 }
707 if (cpst != 1) { 711 if (cpst != 1) {
708 printk(KERN_ERR BFX "numpst must be 1\n"); 712 printk(KERN_ERR FW_BUG PFX "numpst must be 1\n");
709 return -ENODEV; 713 return -ENODEV;
710 } 714 }
711 715
@@ -1130,17 +1134,19 @@ static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol)
1130 "ACPI Processor module before starting this " 1134 "ACPI Processor module before starting this "
1131 "driver.\n"); 1135 "driver.\n");
1132#else 1136#else
1133 printk(KERN_ERR PFX "Your BIOS does not provide ACPI " 1137 printk(KERN_ERR FW_BUG PFX "Your BIOS does not provide"
1134 "_PSS objects in a way that Linux understands. " 1138 " ACPI _PSS objects in a way that Linux "
1135 "Please report this to the Linux ACPI maintainers" 1139 "understands. Please report this to the Linux "
1136 " and complain to your BIOS vendor.\n"); 1140 "ACPI maintainers and complain to your BIOS "
1141 "vendor.\n");
1137#endif 1142#endif
1138 kfree(data); 1143 kfree(data);
1139 return -ENODEV; 1144 return -ENODEV;
1140 } 1145 }
1141 if (pol->cpu != 0) { 1146 if (pol->cpu != 0) {
1142 printk(KERN_ERR PFX "No ACPI _PSS objects for CPU other than " 1147 printk(KERN_ERR FW_BUG PFX "No ACPI _PSS objects for "
1143 "CPU0. Complain to your BIOS vendor.\n"); 1148 "CPU other than CPU0. Complain to your BIOS "
1149 "vendor.\n");
1144 kfree(data); 1150 kfree(data);
1145 return -ENODEV; 1151 return -ENODEV;
1146 } 1152 }
@@ -1193,7 +1199,7 @@ static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol)
1193 1199
1194 /* min/max the cpu is capable of */ 1200 /* min/max the cpu is capable of */
1195 if (cpufreq_frequency_table_cpuinfo(pol, data->powernow_table)) { 1201 if (cpufreq_frequency_table_cpuinfo(pol, data->powernow_table)) {
1196 printk(KERN_ERR PFX "invalid powernow_table\n"); 1202 printk(KERN_ERR FW_BUG PFX "invalid powernow_table\n");
1197 powernow_k8_cpu_exit_acpi(data); 1203 powernow_k8_cpu_exit_acpi(data);
1198 kfree(data->powernow_table); 1204 kfree(data->powernow_table);
1199 kfree(data); 1205 kfree(data);
diff --git a/arch/x86/kernel/cpu/proc.c b/arch/x86/kernel/cpu/proc.c
index a26c480b9491..01b1244ef1c0 100644
--- a/arch/x86/kernel/cpu/proc.c
+++ b/arch/x86/kernel/cpu/proc.c
@@ -160,14 +160,16 @@ static void *c_start(struct seq_file *m, loff_t *pos)
160{ 160{
161 if (*pos == 0) /* just in case, cpu 0 is not the first */ 161 if (*pos == 0) /* just in case, cpu 0 is not the first */
162 *pos = first_cpu(cpu_online_map); 162 *pos = first_cpu(cpu_online_map);
163 if ((*pos) < nr_cpu_ids && cpu_online(*pos)) 163 else
164 *pos = next_cpu_nr(*pos - 1, cpu_online_map);
165 if ((*pos) < nr_cpu_ids)
164 return &cpu_data(*pos); 166 return &cpu_data(*pos);
165 return NULL; 167 return NULL;
166} 168}
167 169
168static void *c_next(struct seq_file *m, void *v, loff_t *pos) 170static void *c_next(struct seq_file *m, void *v, loff_t *pos)
169{ 171{
170 *pos = next_cpu(*pos, cpu_online_map); 172 (*pos)++;
171 return c_start(m, pos); 173 return c_start(m, pos);
172} 174}
173 175
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
index 1a78180f08d3..b3614752197b 100644
--- a/arch/x86/kernel/dumpstack_32.c
+++ b/arch/x86/kernel/dumpstack_32.c
@@ -405,7 +405,6 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic)
405 panic("Non maskable interrupt"); 405 panic("Non maskable interrupt");
406 console_silent(); 406 console_silent();
407 spin_unlock(&nmi_print_lock); 407 spin_unlock(&nmi_print_lock);
408 bust_spinlocks(0);
409 408
410 /* 409 /*
411 * If we are in kernel we are probably nested up pretty bad 410 * If we are in kernel we are probably nested up pretty bad
@@ -416,6 +415,7 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic)
416 crash_kexec(regs); 415 crash_kexec(regs);
417 } 416 }
418 417
418 bust_spinlocks(0);
419 do_exit(SIGSEGV); 419 do_exit(SIGSEGV);
420} 420}
421 421
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index 733c4f8d42ea..3ce029ffaa55 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -95,7 +95,8 @@ static void __init nvidia_bugs(int num, int slot, int func)
95 95
96} 96}
97 97
98static u32 ati_ixp4x0_rev(int num, int slot, int func) 98#if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC)
99static u32 __init ati_ixp4x0_rev(int num, int slot, int func)
99{ 100{
100 u32 d; 101 u32 d;
101 u8 b; 102 u8 b;
@@ -115,7 +116,6 @@ static u32 ati_ixp4x0_rev(int num, int slot, int func)
115 116
116static void __init ati_bugs(int num, int slot, int func) 117static void __init ati_bugs(int num, int slot, int func)
117{ 118{
118#if defined(CONFIG_ACPI) && defined (CONFIG_X86_IO_APIC)
119 u32 d; 119 u32 d;
120 u8 b; 120 u8 b;
121 121
@@ -138,9 +138,56 @@ static void __init ati_bugs(int num, int slot, int func)
138 printk(KERN_INFO "If you got timer trouble " 138 printk(KERN_INFO "If you got timer trouble "
139 "try acpi_use_timer_override\n"); 139 "try acpi_use_timer_override\n");
140 } 140 }
141#endif
142} 141}
143 142
143static u32 __init ati_sbx00_rev(int num, int slot, int func)
144{
145 u32 old, d;
146
147 d = read_pci_config(num, slot, func, 0x70);
148 old = d;
149 d &= ~(1<<8);
150 write_pci_config(num, slot, func, 0x70, d);
151 d = read_pci_config(num, slot, func, 0x8);
152 d &= 0xff;
153 write_pci_config(num, slot, func, 0x70, old);
154
155 return d;
156}
157
158static void __init ati_bugs_contd(int num, int slot, int func)
159{
160 u32 d, rev;
161
162 if (acpi_use_timer_override)
163 return;
164
165 rev = ati_sbx00_rev(num, slot, func);
166 if (rev > 0x13)
167 return;
168
169 /* check for IRQ0 interrupt swap */
170 d = read_pci_config(num, slot, func, 0x64);
171 if (!(d & (1<<14)))
172 acpi_skip_timer_override = 1;
173
174 if (acpi_skip_timer_override) {
175 printk(KERN_INFO "SB600 revision 0x%x\n", rev);
176 printk(KERN_INFO "Ignoring ACPI timer override.\n");
177 printk(KERN_INFO "If you got timer trouble "
178 "try acpi_use_timer_override\n");
179 }
180}
181#else
182static void __init ati_bugs(int num, int slot, int func)
183{
184}
185
186static void __init ati_bugs_contd(int num, int slot, int func)
187{
188}
189#endif
190
144#ifdef CONFIG_DMAR 191#ifdef CONFIG_DMAR
145static void __init intel_g33_dmar(int num, int slot, int func) 192static void __init intel_g33_dmar(int num, int slot, int func)
146{ 193{
@@ -176,6 +223,8 @@ static struct chipset early_qrk[] __initdata = {
176 PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, fix_hypertransport_config }, 223 PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, fix_hypertransport_config },
177 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS, 224 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS,
178 PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs }, 225 PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs },
226 { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
227 PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs_contd },
179#ifdef CONFIG_DMAR 228#ifdef CONFIG_DMAR
180 { PCI_VENDOR_ID_INTEL, 0x29c0, 229 { PCI_VENDOR_ID_INTEL, 0x29c0,
181 PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, intel_g33_dmar }, 230 PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, intel_g33_dmar },
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index c356423a6026..dd65143941a8 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -1024,7 +1024,7 @@ ENTRY(machine_check)
1024 RING0_INT_FRAME 1024 RING0_INT_FRAME
1025 pushl $0 1025 pushl $0
1026 CFI_ADJUST_CFA_OFFSET 4 1026 CFI_ADJUST_CFA_OFFSET 4
1027 pushl $do_machine_check 1027 pushl machine_check_vector
1028 CFI_ADJUST_CFA_OFFSET 4 1028 CFI_ADJUST_CFA_OFFSET 4
1029 jmp error_code 1029 jmp error_code
1030 CFI_ENDPROC 1030 CFI_ENDPROC
diff --git a/arch/x86/kernel/genapic_flat_64.c b/arch/x86/kernel/genapic_flat_64.c
index 2ec2de8d8c46..c0262791bda4 100644
--- a/arch/x86/kernel/genapic_flat_64.c
+++ b/arch/x86/kernel/genapic_flat_64.c
@@ -25,7 +25,7 @@
25#include <acpi/acpi_bus.h> 25#include <acpi/acpi_bus.h>
26#endif 26#endif
27 27
28static int __init flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 28static int flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
29{ 29{
30 return 1; 30 return 1;
31} 31}
@@ -170,7 +170,7 @@ struct genapic apic_flat = {
170 * We cannot use logical delivery in this case because the mask 170 * We cannot use logical delivery in this case because the mask
171 * overflows, so use physical mode. 171 * overflows, so use physical mode.
172 */ 172 */
173static int __init physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 173static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
174{ 174{
175#ifdef CONFIG_ACPI 175#ifdef CONFIG_ACPI
176 /* 176 /*
diff --git a/arch/x86/kernel/genx2apic_cluster.c b/arch/x86/kernel/genx2apic_cluster.c
index e4bf2cc0d743..f6a2c8eb48a6 100644
--- a/arch/x86/kernel/genx2apic_cluster.c
+++ b/arch/x86/kernel/genx2apic_cluster.c
@@ -12,7 +12,7 @@
12 12
13DEFINE_PER_CPU(u32, x86_cpu_to_logical_apicid); 13DEFINE_PER_CPU(u32, x86_cpu_to_logical_apicid);
14 14
15static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 15static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
16{ 16{
17 if (cpu_has_x2apic) 17 if (cpu_has_x2apic)
18 return 1; 18 return 1;
diff --git a/arch/x86/kernel/genx2apic_phys.c b/arch/x86/kernel/genx2apic_phys.c
index 8f1343df2627..d042211768b7 100644
--- a/arch/x86/kernel/genx2apic_phys.c
+++ b/arch/x86/kernel/genx2apic_phys.c
@@ -19,7 +19,7 @@ static int set_x2apic_phys_mode(char *arg)
19} 19}
20early_param("x2apic_phys", set_x2apic_phys_mode); 20early_param("x2apic_phys", set_x2apic_phys_mode);
21 21
22static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 22static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
23{ 23{
24 if (cpu_has_x2apic && x2apic_phys) 24 if (cpu_has_x2apic && x2apic_phys)
25 return 1; 25 return 1;
diff --git a/arch/x86/kernel/genx2apic_uv_x.c b/arch/x86/kernel/genx2apic_uv_x.c
index 6cf35c8bd636..dc6b46961523 100644
--- a/arch/x86/kernel/genx2apic_uv_x.c
+++ b/arch/x86/kernel/genx2apic_uv_x.c
@@ -30,7 +30,7 @@ DEFINE_PER_CPU(int, x2apic_extra_bits);
30 30
31static enum uv_system_type uv_system_type; 31static enum uv_system_type uv_system_type;
32 32
33static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 33static int uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
34{ 34{
35 if (!strcmp(oem_id, "SGI")) { 35 if (!strcmp(oem_id, "SGI")) {
36 if (!strcmp(oem_table_id, "UVL")) 36 if (!strcmp(oem_table_id, "UVL"))
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index ccf6c503fc3b..d1d4dc52f649 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -36,7 +36,7 @@ void ack_bad_irq(unsigned int irq)
36} 36}
37 37
38#ifdef CONFIG_X86_32 38#ifdef CONFIG_X86_32
39# define irq_stats(x) (&per_cpu(irq_stat,x)) 39# define irq_stats(x) (&per_cpu(irq_stat, x))
40#else 40#else
41# define irq_stats(x) cpu_pda(x) 41# define irq_stats(x) cpu_pda(x)
42#endif 42#endif
@@ -113,7 +113,7 @@ int show_interrupts(struct seq_file *p, void *v)
113 if (i == 0) { 113 if (i == 0) {
114 seq_printf(p, " "); 114 seq_printf(p, " ");
115 for_each_online_cpu(j) 115 for_each_online_cpu(j)
116 seq_printf(p, "CPU%-8d",j); 116 seq_printf(p, "CPU%-8d", j);
117 seq_putc(p, '\n'); 117 seq_putc(p, '\n');
118 } 118 }
119 119
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index 192624820217..1972266e8ba5 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -9,8 +9,6 @@
9#include <asm/calgary.h> 9#include <asm/calgary.h>
10#include <asm/amd_iommu.h> 10#include <asm/amd_iommu.h>
11 11
12static int forbid_dac __read_mostly;
13
14struct dma_mapping_ops *dma_ops; 12struct dma_mapping_ops *dma_ops;
15EXPORT_SYMBOL(dma_ops); 13EXPORT_SYMBOL(dma_ops);
16 14
@@ -293,17 +291,3 @@ void pci_iommu_shutdown(void)
293} 291}
294/* Must execute after PCI subsystem */ 292/* Must execute after PCI subsystem */
295fs_initcall(pci_iommu_init); 293fs_initcall(pci_iommu_init);
296
297#ifdef CONFIG_PCI
298/* Many VIA bridges seem to corrupt data for DAC. Disable it here */
299
300static __devinit void via_no_dac(struct pci_dev *dev)
301{
302 if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI && forbid_dac == 0) {
303 printk(KERN_INFO "PCI: VIA PCI bridge detected."
304 "Disabling DAC.\n");
305 forbid_dac = 1;
306 }
307}
308DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_ANY_ID, via_no_dac);
309#endif
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index cd8c0ed02b7e..c958120fb1b6 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -63,6 +63,13 @@ void idle_notifier_register(struct notifier_block *n)
63{ 63{
64 atomic_notifier_chain_register(&idle_notifier, n); 64 atomic_notifier_chain_register(&idle_notifier, n);
65} 65}
66EXPORT_SYMBOL_GPL(idle_notifier_register);
67
68void idle_notifier_unregister(struct notifier_block *n)
69{
70 atomic_notifier_chain_unregister(&idle_notifier, n);
71}
72EXPORT_SYMBOL_GPL(idle_notifier_unregister);
66 73
67void enter_idle(void) 74void enter_idle(void)
68{ 75{
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
index 410c88f0bfeb..ae0c0d3bb770 100644
--- a/arch/x86/kernel/setup_percpu.c
+++ b/arch/x86/kernel/setup_percpu.c
@@ -218,7 +218,7 @@ static void __init setup_node_to_cpumask_map(void)
218 /* allocate the map */ 218 /* allocate the map */
219 map = alloc_bootmem_low(nr_node_ids * sizeof(cpumask_t)); 219 map = alloc_bootmem_low(nr_node_ids * sizeof(cpumask_t));
220 220
221 pr_debug(KERN_DEBUG "Node to cpumask map at %p for %d nodes\n", 221 pr_debug("Node to cpumask map at %p for %d nodes\n",
222 map, nr_node_ids); 222 map, nr_node_ids);
223 223
224 /* node_to_cpumask() will now work */ 224 /* node_to_cpumask() will now work */
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 7ece815ea637..7b1093397319 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -893,9 +893,11 @@ do_rest:
893 smpboot_setup_warm_reset_vector(start_ip); 893 smpboot_setup_warm_reset_vector(start_ip);
894 /* 894 /*
895 * Be paranoid about clearing APIC errors. 895 * Be paranoid about clearing APIC errors.
896 */ 896 */
897 apic_write(APIC_ESR, 0); 897 if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
898 apic_read(APIC_ESR); 898 apic_write(APIC_ESR, 0);
899 apic_read(APIC_ESR);
900 }
899 } 901 }
900 902
901 /* 903 /*
diff --git a/arch/x86/kernel/syscall_64.c b/arch/x86/kernel/syscall_64.c
index 3d1be4f0fac5..de87d6008295 100644
--- a/arch/x86/kernel/syscall_64.c
+++ b/arch/x86/kernel/syscall_64.c
@@ -8,12 +8,12 @@
8#define __NO_STUBS 8#define __NO_STUBS
9 9
10#define __SYSCALL(nr, sym) extern asmlinkage void sym(void) ; 10#define __SYSCALL(nr, sym) extern asmlinkage void sym(void) ;
11#undef ASM_X86__UNISTD_64_H 11#undef _ASM_X86_UNISTD_64_H
12#include <asm/unistd_64.h> 12#include <asm/unistd_64.h>
13 13
14#undef __SYSCALL 14#undef __SYSCALL
15#define __SYSCALL(nr, sym) [nr] = sym, 15#define __SYSCALL(nr, sym) [nr] = sym,
16#undef ASM_X86__UNISTD_64_H 16#undef _ASM_X86_UNISTD_64_H
17 17
18typedef void (*sys_call_ptr_t)(void); 18typedef void (*sys_call_ptr_t)(void);
19 19
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
index 8b8c0d6640fa..04431f34fd16 100644
--- a/arch/x86/kernel/tlb_uv.c
+++ b/arch/x86/kernel/tlb_uv.c
@@ -6,7 +6,7 @@
6 * This code is released under the GNU General Public License version 2 or 6 * This code is released under the GNU General Public License version 2 or
7 * later. 7 * later.
8 */ 8 */
9#include <linux/mc146818rtc.h> 9#include <linux/seq_file.h>
10#include <linux/proc_fs.h> 10#include <linux/proc_fs.h>
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12 12
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index e062974cce34..04d242ab0161 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -931,14 +931,6 @@ do_device_not_available(struct pt_regs *regs, long error)
931} 931}
932 932
933#ifdef CONFIG_X86_32 933#ifdef CONFIG_X86_32
934#ifdef CONFIG_X86_MCE
935dotraplinkage void __kprobes do_machine_check(struct pt_regs *regs, long error)
936{
937 conditional_sti(regs);
938 machine_check_vector(regs, error);
939}
940#endif
941
942dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code) 934dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
943{ 935{
944 siginfo_t info; 936 siginfo_t info;
diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
index 9abac8a9d823..b13acb75e822 100644
--- a/arch/x86/kernel/xsave.c
+++ b/arch/x86/kernel/xsave.c
@@ -248,7 +248,7 @@ clear:
248 * This will be saved when ever the FP and extended state context is 248 * This will be saved when ever the FP and extended state context is
249 * saved on the user stack during the signal handler delivery to the user. 249 * saved on the user stack during the signal handler delivery to the user.
250 */ 250 */
251void prepare_fx_sw_frame(void) 251static void prepare_fx_sw_frame(void)
252{ 252{
253 int size_extended = (xstate_size - sizeof(struct i387_fxsave_struct)) + 253 int size_extended = (xstate_size - sizeof(struct i387_fxsave_struct)) +
254 FP_XSTATE_MAGIC2_SIZE; 254 FP_XSTATE_MAGIC2_SIZE;
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c
index 634132a9a512..11c6725fb798 100644
--- a/arch/x86/kvm/i8254.c
+++ b/arch/x86/kvm/i8254.c
@@ -204,10 +204,10 @@ static int __pit_timer_fn(struct kvm_kpit_state *ps)
204 if (vcpu0 && waitqueue_active(&vcpu0->wq)) 204 if (vcpu0 && waitqueue_active(&vcpu0->wq))
205 wake_up_interruptible(&vcpu0->wq); 205 wake_up_interruptible(&vcpu0->wq);
206 206
207 pt->timer.expires = ktime_add_ns(pt->timer.expires, pt->period); 207 hrtimer_add_expires_ns(&pt->timer, pt->period);
208 pt->scheduled = ktime_to_ns(pt->timer.expires); 208 pt->scheduled = hrtimer_get_expires_ns(&pt->timer);
209 if (pt->period) 209 if (pt->period)
210 ps->channels[0].count_load_time = pt->timer.expires; 210 ps->channels[0].count_load_time = hrtimer_get_expires(&pt->timer);
211 211
212 return (pt->period == 0 ? 0 : 1); 212 return (pt->period == 0 ? 0 : 1);
213} 213}
@@ -257,7 +257,7 @@ void __kvm_migrate_pit_timer(struct kvm_vcpu *vcpu)
257 257
258 timer = &pit->pit_state.pit_timer.timer; 258 timer = &pit->pit_state.pit_timer.timer;
259 if (hrtimer_cancel(timer)) 259 if (hrtimer_cancel(timer))
260 hrtimer_start(timer, timer->expires, HRTIMER_MODE_ABS); 260 hrtimer_start_expires(timer, HRTIMER_MODE_ABS);
261} 261}
262 262
263static void destroy_pit_timer(struct kvm_kpit_timer *pt) 263static void destroy_pit_timer(struct kvm_kpit_timer *pt)
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 6571926bfd33..0fc3cab48943 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -946,9 +946,7 @@ static int __apic_timer_fn(struct kvm_lapic *apic)
946 946
947 if (apic_lvtt_period(apic)) { 947 if (apic_lvtt_period(apic)) {
948 result = 1; 948 result = 1;
949 apic->timer.dev.expires = ktime_add_ns( 949 hrtimer_add_expires_ns(&apic->timer.dev, apic->timer.period);
950 apic->timer.dev.expires,
951 apic->timer.period);
952 } 950 }
953 return result; 951 return result;
954} 952}
@@ -1117,7 +1115,7 @@ void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu)
1117 1115
1118 timer = &apic->timer.dev; 1116 timer = &apic->timer.dev;
1119 if (hrtimer_cancel(timer)) 1117 if (hrtimer_cancel(timer))
1120 hrtimer_start(timer, timer->expires, HRTIMER_MODE_ABS); 1118 hrtimer_start_expires(timer, HRTIMER_MODE_ABS);
1121} 1119}
1122 1120
1123void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu) 1121void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu)
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
index 672e17f8262a..9cab18b0b857 100644
--- a/arch/x86/mm/memtest.c
+++ b/arch/x86/mm/memtest.c
@@ -61,9 +61,9 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
61 last_bad += incr; 61 last_bad += incr;
62 } else { 62 } else {
63 if (start_bad) { 63 if (start_bad) {
64 printk(KERN_CONT "\n %010lx bad mem addr %010lx - %010lx reserved", 64 printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
65 val, start_bad, last_bad + incr); 65 val, start_bad, last_bad + incr);
66 reserve_early(start_bad, last_bad - start_bad, "BAD RAM"); 66 reserve_early(start_bad, last_bad + incr, "BAD RAM");
67 } 67 }
68 start_bad = last_bad = start_phys_aligned; 68 start_bad = last_bad = start_phys_aligned;
69 } 69 }
@@ -72,9 +72,8 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
72 if (start_bad) { 72 if (start_bad) {
73 printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved", 73 printk(KERN_CONT "\n %016lx bad mem addr %010lx - %010lx reserved",
74 val, start_bad, last_bad + incr); 74 val, start_bad, last_bad + incr);
75 reserve_early(start_bad, last_bad - start_bad, "BAD RAM"); 75 reserve_early(start_bad, last_bad + incr, "BAD RAM");
76 } 76 }
77
78} 77}
79 78
80/* default is disabled */ 79/* default is disabled */
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 407d8784f669..f1dc1b75d166 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -65,23 +65,22 @@ static void split_page_count(int level)
65 direct_pages_count[level - 1] += PTRS_PER_PTE; 65 direct_pages_count[level - 1] += PTRS_PER_PTE;
66} 66}
67 67
68int arch_report_meminfo(char *page) 68void arch_report_meminfo(struct seq_file *m)
69{ 69{
70 int n = sprintf(page, "DirectMap4k: %8lu kB\n", 70 seq_printf(m, "DirectMap4k: %8lu kB\n",
71 direct_pages_count[PG_LEVEL_4K] << 2); 71 direct_pages_count[PG_LEVEL_4K] << 2);
72#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) 72#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
73 n += sprintf(page + n, "DirectMap2M: %8lu kB\n", 73 seq_printf(m, "DirectMap2M: %8lu kB\n",
74 direct_pages_count[PG_LEVEL_2M] << 11); 74 direct_pages_count[PG_LEVEL_2M] << 11);
75#else 75#else
76 n += sprintf(page + n, "DirectMap4M: %8lu kB\n", 76 seq_printf(m, "DirectMap4M: %8lu kB\n",
77 direct_pages_count[PG_LEVEL_2M] << 12); 77 direct_pages_count[PG_LEVEL_2M] << 12);
78#endif 78#endif
79#ifdef CONFIG_X86_64 79#ifdef CONFIG_X86_64
80 if (direct_gbpages) 80 if (direct_gbpages)
81 n += sprintf(page + n, "DirectMap1G: %8lu kB\n", 81 seq_printf(m, "DirectMap1G: %8lu kB\n",
82 direct_pages_count[PG_LEVEL_1G] << 20); 82 direct_pages_count[PG_LEVEL_1G] << 20);
83#endif 83#endif
84 return n;
85} 84}
86#else 85#else
87static inline void split_page_count(int level) { } 86static inline void split_page_count(int level) { }
diff --git a/arch/x86/oprofile/backtrace.c b/arch/x86/oprofile/backtrace.c
index e2095cba409f..04df67f8a7ba 100644
--- a/arch/x86/oprofile/backtrace.c
+++ b/arch/x86/oprofile/backtrace.c
@@ -52,8 +52,7 @@ struct frame_head {
52 unsigned long ret; 52 unsigned long ret;
53} __attribute__((packed)); 53} __attribute__((packed));
54 54
55static struct frame_head * 55static struct frame_head *dump_user_backtrace(struct frame_head *head)
56dump_user_backtrace(struct frame_head * head)
57{ 56{
58 struct frame_head bufhead[2]; 57 struct frame_head bufhead[2];
59 58
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
index 57f6c9088081..022cd41ea9b4 100644
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -28,85 +28,9 @@ static struct op_x86_model_spec const *model;
28static DEFINE_PER_CPU(struct op_msrs, cpu_msrs); 28static DEFINE_PER_CPU(struct op_msrs, cpu_msrs);
29static DEFINE_PER_CPU(unsigned long, saved_lvtpc); 29static DEFINE_PER_CPU(unsigned long, saved_lvtpc);
30 30
31static int nmi_start(void);
32static void nmi_stop(void);
33static void nmi_cpu_start(void *dummy);
34static void nmi_cpu_stop(void *dummy);
35
36/* 0 == registered but off, 1 == registered and on */ 31/* 0 == registered but off, 1 == registered and on */
37static int nmi_enabled = 0; 32static int nmi_enabled = 0;
38 33
39#ifdef CONFIG_SMP
40static int oprofile_cpu_notifier(struct notifier_block *b, unsigned long action,
41 void *data)
42{
43 int cpu = (unsigned long)data;
44 switch (action) {
45 case CPU_DOWN_FAILED:
46 case CPU_ONLINE:
47 smp_call_function_single(cpu, nmi_cpu_start, NULL, 0);
48 break;
49 case CPU_DOWN_PREPARE:
50 smp_call_function_single(cpu, nmi_cpu_stop, NULL, 1);
51 break;
52 }
53 return NOTIFY_DONE;
54}
55
56static struct notifier_block oprofile_cpu_nb = {
57 .notifier_call = oprofile_cpu_notifier
58};
59#endif
60
61#ifdef CONFIG_PM
62
63static int nmi_suspend(struct sys_device *dev, pm_message_t state)
64{
65 /* Only one CPU left, just stop that one */
66 if (nmi_enabled == 1)
67 nmi_cpu_stop(NULL);
68 return 0;
69}
70
71static int nmi_resume(struct sys_device *dev)
72{
73 if (nmi_enabled == 1)
74 nmi_cpu_start(NULL);
75 return 0;
76}
77
78static struct sysdev_class oprofile_sysclass = {
79 .name = "oprofile",
80 .resume = nmi_resume,
81 .suspend = nmi_suspend,
82};
83
84static struct sys_device device_oprofile = {
85 .id = 0,
86 .cls = &oprofile_sysclass,
87};
88
89static int __init init_sysfs(void)
90{
91 int error;
92
93 error = sysdev_class_register(&oprofile_sysclass);
94 if (!error)
95 error = sysdev_register(&device_oprofile);
96 return error;
97}
98
99static void exit_sysfs(void)
100{
101 sysdev_unregister(&device_oprofile);
102 sysdev_class_unregister(&oprofile_sysclass);
103}
104
105#else
106#define init_sysfs() do { } while (0)
107#define exit_sysfs() do { } while (0)
108#endif /* CONFIG_PM */
109
110static int profile_exceptions_notify(struct notifier_block *self, 34static int profile_exceptions_notify(struct notifier_block *self,
111 unsigned long val, void *data) 35 unsigned long val, void *data)
112{ 36{
@@ -361,6 +285,77 @@ static int nmi_create_files(struct super_block *sb, struct dentry *root)
361 return 0; 285 return 0;
362} 286}
363 287
288#ifdef CONFIG_SMP
289static int oprofile_cpu_notifier(struct notifier_block *b, unsigned long action,
290 void *data)
291{
292 int cpu = (unsigned long)data;
293 switch (action) {
294 case CPU_DOWN_FAILED:
295 case CPU_ONLINE:
296 smp_call_function_single(cpu, nmi_cpu_start, NULL, 0);
297 break;
298 case CPU_DOWN_PREPARE:
299 smp_call_function_single(cpu, nmi_cpu_stop, NULL, 1);
300 break;
301 }
302 return NOTIFY_DONE;
303}
304
305static struct notifier_block oprofile_cpu_nb = {
306 .notifier_call = oprofile_cpu_notifier
307};
308#endif
309
310#ifdef CONFIG_PM
311
312static int nmi_suspend(struct sys_device *dev, pm_message_t state)
313{
314 /* Only one CPU left, just stop that one */
315 if (nmi_enabled == 1)
316 nmi_cpu_stop(NULL);
317 return 0;
318}
319
320static int nmi_resume(struct sys_device *dev)
321{
322 if (nmi_enabled == 1)
323 nmi_cpu_start(NULL);
324 return 0;
325}
326
327static struct sysdev_class oprofile_sysclass = {
328 .name = "oprofile",
329 .resume = nmi_resume,
330 .suspend = nmi_suspend,
331};
332
333static struct sys_device device_oprofile = {
334 .id = 0,
335 .cls = &oprofile_sysclass,
336};
337
338static int __init init_sysfs(void)
339{
340 int error;
341
342 error = sysdev_class_register(&oprofile_sysclass);
343 if (!error)
344 error = sysdev_register(&device_oprofile);
345 return error;
346}
347
348static void exit_sysfs(void)
349{
350 sysdev_unregister(&device_oprofile);
351 sysdev_class_unregister(&oprofile_sysclass);
352}
353
354#else
355#define init_sysfs() do { } while (0)
356#define exit_sysfs() do { } while (0)
357#endif /* CONFIG_PM */
358
364static int p4force; 359static int p4force;
365module_param(p4force, int, 0); 360module_param(p4force, int, 0);
366 361
@@ -420,9 +415,6 @@ static int __init ppro_init(char **cpu_type)
420 case 15: case 23: 415 case 15: case 23:
421 *cpu_type = "i386/core_2"; 416 *cpu_type = "i386/core_2";
422 break; 417 break;
423 case 26:
424 *cpu_type = "i386/core_2";
425 break;
426 default: 418 default:
427 /* Unknown */ 419 /* Unknown */
428 return 0; 420 return 0;
@@ -432,6 +424,16 @@ static int __init ppro_init(char **cpu_type)
432 return 1; 424 return 1;
433} 425}
434 426
427static int __init arch_perfmon_init(char **cpu_type)
428{
429 if (!cpu_has_arch_perfmon)
430 return 0;
431 *cpu_type = "i386/arch_perfmon";
432 model = &op_arch_perfmon_spec;
433 arch_perfmon_setup_counters();
434 return 1;
435}
436
435/* in order to get sysfs right */ 437/* in order to get sysfs right */
436static int using_nmi; 438static int using_nmi;
437 439
@@ -439,7 +441,7 @@ int __init op_nmi_init(struct oprofile_operations *ops)
439{ 441{
440 __u8 vendor = boot_cpu_data.x86_vendor; 442 __u8 vendor = boot_cpu_data.x86_vendor;
441 __u8 family = boot_cpu_data.x86; 443 __u8 family = boot_cpu_data.x86;
442 char *cpu_type; 444 char *cpu_type = NULL;
443 int ret = 0; 445 int ret = 0;
444 446
445 if (!cpu_has_apic) 447 if (!cpu_has_apic)
@@ -477,19 +479,20 @@ int __init op_nmi_init(struct oprofile_operations *ops)
477 switch (family) { 479 switch (family) {
478 /* Pentium IV */ 480 /* Pentium IV */
479 case 0xf: 481 case 0xf:
480 if (!p4_init(&cpu_type)) 482 p4_init(&cpu_type);
481 return -ENODEV;
482 break; 483 break;
483 484
484 /* A P6-class processor */ 485 /* A P6-class processor */
485 case 6: 486 case 6:
486 if (!ppro_init(&cpu_type)) 487 ppro_init(&cpu_type);
487 return -ENODEV;
488 break; 488 break;
489 489
490 default: 490 default:
491 return -ENODEV; 491 break;
492 } 492 }
493
494 if (!cpu_type && !arch_perfmon_init(&cpu_type))
495 return -ENODEV;
493 break; 496 break;
494 497
495 default: 498 default:
diff --git a/arch/x86/oprofile/op_counter.h b/arch/x86/oprofile/op_counter.h
index 2880b15c4675..91b6a116165e 100644
--- a/arch/x86/oprofile/op_counter.h
+++ b/arch/x86/oprofile/op_counter.h
@@ -6,22 +6,22 @@
6 * 6 *
7 * @author John Levon 7 * @author John Levon
8 */ 8 */
9 9
10#ifndef OP_COUNTER_H 10#ifndef OP_COUNTER_H
11#define OP_COUNTER_H 11#define OP_COUNTER_H
12 12
13#define OP_MAX_COUNTER 8 13#define OP_MAX_COUNTER 8
14 14
15/* Per-perfctr configuration as set via 15/* Per-perfctr configuration as set via
16 * oprofilefs. 16 * oprofilefs.
17 */ 17 */
18struct op_counter_config { 18struct op_counter_config {
19 unsigned long count; 19 unsigned long count;
20 unsigned long enabled; 20 unsigned long enabled;
21 unsigned long event; 21 unsigned long event;
22 unsigned long kernel; 22 unsigned long kernel;
23 unsigned long user; 23 unsigned long user;
24 unsigned long unit_mask; 24 unsigned long unit_mask;
25}; 25};
26 26
27extern struct op_counter_config counter_config[]; 27extern struct op_counter_config counter_config[];
diff --git a/arch/x86/oprofile/op_model_amd.c b/arch/x86/oprofile/op_model_amd.c
index d9faf607b3a6..509513760a6e 100644
--- a/arch/x86/oprofile/op_model_amd.c
+++ b/arch/x86/oprofile/op_model_amd.c
@@ -67,8 +67,9 @@ static unsigned long reset_value[NUM_COUNTERS];
67 67
68/* The function interface needs to be fixed, something like add 68/* The function interface needs to be fixed, something like add
69 data. Should then be added to linux/oprofile.h. */ 69 data. Should then be added to linux/oprofile.h. */
70extern void oprofile_add_ibs_sample(struct pt_regs *const regs, 70extern void
71 unsigned int * const ibs_sample, u8 code); 71oprofile_add_ibs_sample(struct pt_regs *const regs,
72 unsigned int *const ibs_sample, int ibs_code);
72 73
73struct ibs_fetch_sample { 74struct ibs_fetch_sample {
74 /* MSRC001_1031 IBS Fetch Linear Address Register */ 75 /* MSRC001_1031 IBS Fetch Linear Address Register */
@@ -309,12 +310,15 @@ static void op_amd_start(struct op_msrs const * const msrs)
309#ifdef CONFIG_OPROFILE_IBS 310#ifdef CONFIG_OPROFILE_IBS
310 if (ibs_allowed && ibs_config.fetch_enabled) { 311 if (ibs_allowed && ibs_config.fetch_enabled) {
311 low = (ibs_config.max_cnt_fetch >> 4) & 0xFFFF; 312 low = (ibs_config.max_cnt_fetch >> 4) & 0xFFFF;
312 high = IBS_FETCH_HIGH_ENABLE; 313 high = ((ibs_config.rand_en & 0x1) << 25) /* bit 57 */
314 + IBS_FETCH_HIGH_ENABLE;
313 wrmsr(MSR_AMD64_IBSFETCHCTL, low, high); 315 wrmsr(MSR_AMD64_IBSFETCHCTL, low, high);
314 } 316 }
315 317
316 if (ibs_allowed && ibs_config.op_enabled) { 318 if (ibs_allowed && ibs_config.op_enabled) {
317 low = ((ibs_config.max_cnt_op >> 4) & 0xFFFF) + IBS_OP_LOW_ENABLE; 319 low = ((ibs_config.max_cnt_op >> 4) & 0xFFFF)
320 + ((ibs_config.dispatched_ops & 0x1) << 19) /* bit 19 */
321 + IBS_OP_LOW_ENABLE;
318 high = 0; 322 high = 0;
319 wrmsr(MSR_AMD64_IBSOPCTL, low, high); 323 wrmsr(MSR_AMD64_IBSOPCTL, low, high);
320 } 324 }
@@ -468,11 +472,10 @@ static void clear_ibs_nmi(void)
468 on_each_cpu(apic_clear_ibs_nmi_per_cpu, NULL, 1); 472 on_each_cpu(apic_clear_ibs_nmi_per_cpu, NULL, 1);
469} 473}
470 474
471static int (*create_arch_files)(struct super_block * sb, struct dentry * root); 475static int (*create_arch_files)(struct super_block *sb, struct dentry *root);
472 476
473static int setup_ibs_files(struct super_block * sb, struct dentry * root) 477static int setup_ibs_files(struct super_block *sb, struct dentry *root)
474{ 478{
475 char buf[12];
476 struct dentry *dir; 479 struct dentry *dir;
477 int ret = 0; 480 int ret = 0;
478 481
@@ -494,22 +497,22 @@ static int setup_ibs_files(struct super_block * sb, struct dentry * root)
494 ibs_config.max_cnt_op = 250000; 497 ibs_config.max_cnt_op = 250000;
495 ibs_config.op_enabled = 0; 498 ibs_config.op_enabled = 0;
496 ibs_config.dispatched_ops = 1; 499 ibs_config.dispatched_ops = 1;
497 snprintf(buf, sizeof(buf), "ibs_fetch"); 500
498 dir = oprofilefs_mkdir(sb, root, buf); 501 dir = oprofilefs_mkdir(sb, root, "ibs_fetch");
499 oprofilefs_create_ulong(sb, dir, "rand_enable",
500 &ibs_config.rand_en);
501 oprofilefs_create_ulong(sb, dir, "enable", 502 oprofilefs_create_ulong(sb, dir, "enable",
502 &ibs_config.fetch_enabled); 503 &ibs_config.fetch_enabled);
503 oprofilefs_create_ulong(sb, dir, "max_count", 504 oprofilefs_create_ulong(sb, dir, "max_count",
504 &ibs_config.max_cnt_fetch); 505 &ibs_config.max_cnt_fetch);
505 snprintf(buf, sizeof(buf), "ibs_uops"); 506 oprofilefs_create_ulong(sb, dir, "rand_enable",
506 dir = oprofilefs_mkdir(sb, root, buf); 507 &ibs_config.rand_en);
508
509 dir = oprofilefs_mkdir(sb, root, "ibs_op");
507 oprofilefs_create_ulong(sb, dir, "enable", 510 oprofilefs_create_ulong(sb, dir, "enable",
508 &ibs_config.op_enabled); 511 &ibs_config.op_enabled);
509 oprofilefs_create_ulong(sb, dir, "max_count", 512 oprofilefs_create_ulong(sb, dir, "max_count",
510 &ibs_config.max_cnt_op); 513 &ibs_config.max_cnt_op);
511 oprofilefs_create_ulong(sb, dir, "dispatched_ops", 514 oprofilefs_create_ulong(sb, dir, "dispatched_ops",
512 &ibs_config.dispatched_ops); 515 &ibs_config.dispatched_ops);
513 516
514 return 0; 517 return 0;
515} 518}
@@ -530,14 +533,14 @@ static void op_amd_exit(void)
530#endif 533#endif
531 534
532struct op_x86_model_spec const op_amd_spec = { 535struct op_x86_model_spec const op_amd_spec = {
533 .init = op_amd_init, 536 .init = op_amd_init,
534 .exit = op_amd_exit, 537 .exit = op_amd_exit,
535 .num_counters = NUM_COUNTERS, 538 .num_counters = NUM_COUNTERS,
536 .num_controls = NUM_CONTROLS, 539 .num_controls = NUM_CONTROLS,
537 .fill_in_addresses = &op_amd_fill_in_addresses, 540 .fill_in_addresses = &op_amd_fill_in_addresses,
538 .setup_ctrs = &op_amd_setup_ctrs, 541 .setup_ctrs = &op_amd_setup_ctrs,
539 .check_ctrs = &op_amd_check_ctrs, 542 .check_ctrs = &op_amd_check_ctrs,
540 .start = &op_amd_start, 543 .start = &op_amd_start,
541 .stop = &op_amd_stop, 544 .stop = &op_amd_stop,
542 .shutdown = &op_amd_shutdown 545 .shutdown = &op_amd_shutdown
543}; 546};
diff --git a/arch/x86/oprofile/op_model_p4.c b/arch/x86/oprofile/op_model_p4.c
index 43ac5af338d8..4c4a51c90bc2 100644
--- a/arch/x86/oprofile/op_model_p4.c
+++ b/arch/x86/oprofile/op_model_p4.c
@@ -698,24 +698,24 @@ static void p4_shutdown(struct op_msrs const * const msrs)
698 698
699#ifdef CONFIG_SMP 699#ifdef CONFIG_SMP
700struct op_x86_model_spec const op_p4_ht2_spec = { 700struct op_x86_model_spec const op_p4_ht2_spec = {
701 .num_counters = NUM_COUNTERS_HT2, 701 .num_counters = NUM_COUNTERS_HT2,
702 .num_controls = NUM_CONTROLS_HT2, 702 .num_controls = NUM_CONTROLS_HT2,
703 .fill_in_addresses = &p4_fill_in_addresses, 703 .fill_in_addresses = &p4_fill_in_addresses,
704 .setup_ctrs = &p4_setup_ctrs, 704 .setup_ctrs = &p4_setup_ctrs,
705 .check_ctrs = &p4_check_ctrs, 705 .check_ctrs = &p4_check_ctrs,
706 .start = &p4_start, 706 .start = &p4_start,
707 .stop = &p4_stop, 707 .stop = &p4_stop,
708 .shutdown = &p4_shutdown 708 .shutdown = &p4_shutdown
709}; 709};
710#endif 710#endif
711 711
712struct op_x86_model_spec const op_p4_spec = { 712struct op_x86_model_spec const op_p4_spec = {
713 .num_counters = NUM_COUNTERS_NON_HT, 713 .num_counters = NUM_COUNTERS_NON_HT,
714 .num_controls = NUM_CONTROLS_NON_HT, 714 .num_controls = NUM_CONTROLS_NON_HT,
715 .fill_in_addresses = &p4_fill_in_addresses, 715 .fill_in_addresses = &p4_fill_in_addresses,
716 .setup_ctrs = &p4_setup_ctrs, 716 .setup_ctrs = &p4_setup_ctrs,
717 .check_ctrs = &p4_check_ctrs, 717 .check_ctrs = &p4_check_ctrs,
718 .start = &p4_start, 718 .start = &p4_start,
719 .stop = &p4_stop, 719 .stop = &p4_stop,
720 .shutdown = &p4_shutdown 720 .shutdown = &p4_shutdown
721}; 721};
diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c
index eff431f6c57b..0620d6d45f7d 100644
--- a/arch/x86/oprofile/op_model_ppro.c
+++ b/arch/x86/oprofile/op_model_ppro.c
@@ -1,32 +1,34 @@
1/* 1/*
2 * @file op_model_ppro.h 2 * @file op_model_ppro.h
3 * pentium pro / P6 model-specific MSR operations 3 * Family 6 perfmon and architectural perfmon MSR operations
4 * 4 *
5 * @remark Copyright 2002 OProfile authors 5 * @remark Copyright 2002 OProfile authors
6 * @remark Copyright 2008 Intel Corporation
6 * @remark Read the file COPYING 7 * @remark Read the file COPYING
7 * 8 *
8 * @author John Levon 9 * @author John Levon
9 * @author Philippe Elie 10 * @author Philippe Elie
10 * @author Graydon Hoare 11 * @author Graydon Hoare
12 * @author Andi Kleen
11 */ 13 */
12 14
13#include <linux/oprofile.h> 15#include <linux/oprofile.h>
16#include <linux/slab.h>
14#include <asm/ptrace.h> 17#include <asm/ptrace.h>
15#include <asm/msr.h> 18#include <asm/msr.h>
16#include <asm/apic.h> 19#include <asm/apic.h>
17#include <asm/nmi.h> 20#include <asm/nmi.h>
21#include <asm/intel_arch_perfmon.h>
18 22
19#include "op_x86_model.h" 23#include "op_x86_model.h"
20#include "op_counter.h" 24#include "op_counter.h"
21 25
22#define NUM_COUNTERS 2 26static int num_counters = 2;
23#define NUM_CONTROLS 2 27static int counter_width = 32;
24 28
25#define CTR_IS_RESERVED(msrs, c) (msrs->counters[(c)].addr ? 1 : 0) 29#define CTR_IS_RESERVED(msrs, c) (msrs->counters[(c)].addr ? 1 : 0)
26#define CTR_READ(l, h, msrs, c) do {rdmsr(msrs->counters[(c)].addr, (l), (h)); } while (0) 30#define CTR_READ(l, h, msrs, c) do {rdmsr(msrs->counters[(c)].addr, (l), (h)); } while (0)
27#define CTR_32BIT_WRITE(l, msrs, c) \ 31#define CTR_OVERFLOWED(n) (!((n) & (1U<<(counter_width-1))))
28 do {wrmsr(msrs->counters[(c)].addr, -(u32)(l), 0); } while (0)
29#define CTR_OVERFLOWED(n) (!((n) & (1U<<31)))
30 32
31#define CTRL_IS_RESERVED(msrs, c) (msrs->controls[(c)].addr ? 1 : 0) 33#define CTRL_IS_RESERVED(msrs, c) (msrs->controls[(c)].addr ? 1 : 0)
32#define CTRL_READ(l, h, msrs, c) do {rdmsr((msrs->controls[(c)].addr), (l), (h)); } while (0) 34#define CTRL_READ(l, h, msrs, c) do {rdmsr((msrs->controls[(c)].addr), (l), (h)); } while (0)
@@ -40,20 +42,20 @@
40#define CTRL_SET_UM(val, m) (val |= (m << 8)) 42#define CTRL_SET_UM(val, m) (val |= (m << 8))
41#define CTRL_SET_EVENT(val, e) (val |= e) 43#define CTRL_SET_EVENT(val, e) (val |= e)
42 44
43static unsigned long reset_value[NUM_COUNTERS]; 45static u64 *reset_value;
44 46
45static void ppro_fill_in_addresses(struct op_msrs * const msrs) 47static void ppro_fill_in_addresses(struct op_msrs * const msrs)
46{ 48{
47 int i; 49 int i;
48 50
49 for (i = 0; i < NUM_COUNTERS; i++) { 51 for (i = 0; i < num_counters; i++) {
50 if (reserve_perfctr_nmi(MSR_P6_PERFCTR0 + i)) 52 if (reserve_perfctr_nmi(MSR_P6_PERFCTR0 + i))
51 msrs->counters[i].addr = MSR_P6_PERFCTR0 + i; 53 msrs->counters[i].addr = MSR_P6_PERFCTR0 + i;
52 else 54 else
53 msrs->counters[i].addr = 0; 55 msrs->counters[i].addr = 0;
54 } 56 }
55 57
56 for (i = 0; i < NUM_CONTROLS; i++) { 58 for (i = 0; i < num_counters; i++) {
57 if (reserve_evntsel_nmi(MSR_P6_EVNTSEL0 + i)) 59 if (reserve_evntsel_nmi(MSR_P6_EVNTSEL0 + i))
58 msrs->controls[i].addr = MSR_P6_EVNTSEL0 + i; 60 msrs->controls[i].addr = MSR_P6_EVNTSEL0 + i;
59 else 61 else
@@ -67,8 +69,22 @@ static void ppro_setup_ctrs(struct op_msrs const * const msrs)
67 unsigned int low, high; 69 unsigned int low, high;
68 int i; 70 int i;
69 71
72 if (!reset_value) {
73 reset_value = kmalloc(sizeof(unsigned) * num_counters,
74 GFP_ATOMIC);
75 if (!reset_value)
76 return;
77 }
78
79 if (cpu_has_arch_perfmon) {
80 union cpuid10_eax eax;
81 eax.full = cpuid_eax(0xa);
82 if (counter_width < eax.split.bit_width)
83 counter_width = eax.split.bit_width;
84 }
85
70 /* clear all counters */ 86 /* clear all counters */
71 for (i = 0 ; i < NUM_CONTROLS; ++i) { 87 for (i = 0 ; i < num_counters; ++i) {
72 if (unlikely(!CTRL_IS_RESERVED(msrs, i))) 88 if (unlikely(!CTRL_IS_RESERVED(msrs, i)))
73 continue; 89 continue;
74 CTRL_READ(low, high, msrs, i); 90 CTRL_READ(low, high, msrs, i);
@@ -77,18 +93,18 @@ static void ppro_setup_ctrs(struct op_msrs const * const msrs)
77 } 93 }
78 94
79 /* avoid a false detection of ctr overflows in NMI handler */ 95 /* avoid a false detection of ctr overflows in NMI handler */
80 for (i = 0; i < NUM_COUNTERS; ++i) { 96 for (i = 0; i < num_counters; ++i) {
81 if (unlikely(!CTR_IS_RESERVED(msrs, i))) 97 if (unlikely(!CTR_IS_RESERVED(msrs, i)))
82 continue; 98 continue;
83 CTR_32BIT_WRITE(1, msrs, i); 99 wrmsrl(msrs->counters[i].addr, -1LL);
84 } 100 }
85 101
86 /* enable active counters */ 102 /* enable active counters */
87 for (i = 0; i < NUM_COUNTERS; ++i) { 103 for (i = 0; i < num_counters; ++i) {
88 if ((counter_config[i].enabled) && (CTR_IS_RESERVED(msrs, i))) { 104 if ((counter_config[i].enabled) && (CTR_IS_RESERVED(msrs, i))) {
89 reset_value[i] = counter_config[i].count; 105 reset_value[i] = counter_config[i].count;
90 106
91 CTR_32BIT_WRITE(counter_config[i].count, msrs, i); 107 wrmsrl(msrs->counters[i].addr, -reset_value[i]);
92 108
93 CTRL_READ(low, high, msrs, i); 109 CTRL_READ(low, high, msrs, i);
94 CTRL_CLEAR(low); 110 CTRL_CLEAR(low);
@@ -111,13 +127,13 @@ static int ppro_check_ctrs(struct pt_regs * const regs,
111 unsigned int low, high; 127 unsigned int low, high;
112 int i; 128 int i;
113 129
114 for (i = 0 ; i < NUM_COUNTERS; ++i) { 130 for (i = 0 ; i < num_counters; ++i) {
115 if (!reset_value[i]) 131 if (!reset_value[i])
116 continue; 132 continue;
117 CTR_READ(low, high, msrs, i); 133 CTR_READ(low, high, msrs, i);
118 if (CTR_OVERFLOWED(low)) { 134 if (CTR_OVERFLOWED(low)) {
119 oprofile_add_sample(regs, i); 135 oprofile_add_sample(regs, i);
120 CTR_32BIT_WRITE(reset_value[i], msrs, i); 136 wrmsrl(msrs->counters[i].addr, -reset_value[i]);
121 } 137 }
122 } 138 }
123 139
@@ -141,7 +157,7 @@ static void ppro_start(struct op_msrs const * const msrs)
141 unsigned int low, high; 157 unsigned int low, high;
142 int i; 158 int i;
143 159
144 for (i = 0; i < NUM_COUNTERS; ++i) { 160 for (i = 0; i < num_counters; ++i) {
145 if (reset_value[i]) { 161 if (reset_value[i]) {
146 CTRL_READ(low, high, msrs, i); 162 CTRL_READ(low, high, msrs, i);
147 CTRL_SET_ACTIVE(low); 163 CTRL_SET_ACTIVE(low);
@@ -156,7 +172,7 @@ static void ppro_stop(struct op_msrs const * const msrs)
156 unsigned int low, high; 172 unsigned int low, high;
157 int i; 173 int i;
158 174
159 for (i = 0; i < NUM_COUNTERS; ++i) { 175 for (i = 0; i < num_counters; ++i) {
160 if (!reset_value[i]) 176 if (!reset_value[i])
161 continue; 177 continue;
162 CTRL_READ(low, high, msrs, i); 178 CTRL_READ(low, high, msrs, i);
@@ -169,24 +185,70 @@ static void ppro_shutdown(struct op_msrs const * const msrs)
169{ 185{
170 int i; 186 int i;
171 187
172 for (i = 0 ; i < NUM_COUNTERS ; ++i) { 188 for (i = 0 ; i < num_counters ; ++i) {
173 if (CTR_IS_RESERVED(msrs, i)) 189 if (CTR_IS_RESERVED(msrs, i))
174 release_perfctr_nmi(MSR_P6_PERFCTR0 + i); 190 release_perfctr_nmi(MSR_P6_PERFCTR0 + i);
175 } 191 }
176 for (i = 0 ; i < NUM_CONTROLS ; ++i) { 192 for (i = 0 ; i < num_counters ; ++i) {
177 if (CTRL_IS_RESERVED(msrs, i)) 193 if (CTRL_IS_RESERVED(msrs, i))
178 release_evntsel_nmi(MSR_P6_EVNTSEL0 + i); 194 release_evntsel_nmi(MSR_P6_EVNTSEL0 + i);
179 } 195 }
196 if (reset_value) {
197 kfree(reset_value);
198 reset_value = NULL;
199 }
180} 200}
181 201
182 202
183struct op_x86_model_spec const op_ppro_spec = { 203struct op_x86_model_spec op_ppro_spec = {
184 .num_counters = NUM_COUNTERS, 204 .num_counters = 2, /* can be overriden */
185 .num_controls = NUM_CONTROLS, 205 .num_controls = 2, /* dito */
186 .fill_in_addresses = &ppro_fill_in_addresses, 206 .fill_in_addresses = &ppro_fill_in_addresses,
187 .setup_ctrs = &ppro_setup_ctrs, 207 .setup_ctrs = &ppro_setup_ctrs,
188 .check_ctrs = &ppro_check_ctrs, 208 .check_ctrs = &ppro_check_ctrs,
189 .start = &ppro_start, 209 .start = &ppro_start,
190 .stop = &ppro_stop, 210 .stop = &ppro_stop,
191 .shutdown = &ppro_shutdown 211 .shutdown = &ppro_shutdown
212};
213
214/*
215 * Architectural performance monitoring.
216 *
217 * Newer Intel CPUs (Core1+) have support for architectural
218 * events described in CPUID 0xA. See the IA32 SDM Vol3b.18 for details.
219 * The advantage of this is that it can be done without knowing about
220 * the specific CPU.
221 */
222
223void arch_perfmon_setup_counters(void)
224{
225 union cpuid10_eax eax;
226
227 eax.full = cpuid_eax(0xa);
228
229 /* Workaround for BIOS bugs in 6/15. Taken from perfmon2 */
230 if (eax.split.version_id == 0 && current_cpu_data.x86 == 6 &&
231 current_cpu_data.x86_model == 15) {
232 eax.split.version_id = 2;
233 eax.split.num_counters = 2;
234 eax.split.bit_width = 40;
235 }
236
237 num_counters = eax.split.num_counters;
238
239 op_arch_perfmon_spec.num_counters = num_counters;
240 op_arch_perfmon_spec.num_controls = num_counters;
241 op_ppro_spec.num_counters = num_counters;
242 op_ppro_spec.num_controls = num_counters;
243}
244
245struct op_x86_model_spec op_arch_perfmon_spec = {
246 /* num_counters/num_controls filled in at runtime */
247 .fill_in_addresses = &ppro_fill_in_addresses,
248 /* user space does the cpuid check for available events */
249 .setup_ctrs = &ppro_setup_ctrs,
250 .check_ctrs = &ppro_check_ctrs,
251 .start = &ppro_start,
252 .stop = &ppro_stop,
253 .shutdown = &ppro_shutdown
192}; 254};
diff --git a/arch/x86/oprofile/op_x86_model.h b/arch/x86/oprofile/op_x86_model.h
index 05a0261ba0c3..825e79064d64 100644
--- a/arch/x86/oprofile/op_x86_model.h
+++ b/arch/x86/oprofile/op_x86_model.h
@@ -22,8 +22,8 @@ struct op_msr {
22}; 22};
23 23
24struct op_msrs { 24struct op_msrs {
25 struct op_msr * counters; 25 struct op_msr *counters;
26 struct op_msr * controls; 26 struct op_msr *controls;
27}; 27};
28 28
29struct pt_regs; 29struct pt_regs;
@@ -34,8 +34,8 @@ struct pt_regs;
34struct op_x86_model_spec { 34struct op_x86_model_spec {
35 int (*init)(struct oprofile_operations *ops); 35 int (*init)(struct oprofile_operations *ops);
36 void (*exit)(void); 36 void (*exit)(void);
37 unsigned int const num_counters; 37 unsigned int num_counters;
38 unsigned int const num_controls; 38 unsigned int num_controls;
39 void (*fill_in_addresses)(struct op_msrs * const msrs); 39 void (*fill_in_addresses)(struct op_msrs * const msrs);
40 void (*setup_ctrs)(struct op_msrs const * const msrs); 40 void (*setup_ctrs)(struct op_msrs const * const msrs);
41 int (*check_ctrs)(struct pt_regs * const regs, 41 int (*check_ctrs)(struct pt_regs * const regs,
@@ -45,9 +45,12 @@ struct op_x86_model_spec {
45 void (*shutdown)(struct op_msrs const * const msrs); 45 void (*shutdown)(struct op_msrs const * const msrs);
46}; 46};
47 47
48extern struct op_x86_model_spec const op_ppro_spec; 48extern struct op_x86_model_spec op_ppro_spec;
49extern struct op_x86_model_spec const op_p4_spec; 49extern struct op_x86_model_spec const op_p4_spec;
50extern struct op_x86_model_spec const op_p4_ht2_spec; 50extern struct op_x86_model_spec const op_p4_ht2_spec;
51extern struct op_x86_model_spec const op_amd_spec; 51extern struct op_x86_model_spec const op_amd_spec;
52extern struct op_x86_model_spec op_arch_perfmon_spec;
53
54extern void arch_perfmon_setup_counters(void);
52 55
53#endif /* OP_X86_MODEL_H */ 56#endif /* OP_X86_MODEL_H */
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index a213260b51e5..6c873dceb177 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -64,7 +64,12 @@ choice
64 default XTENSA_VARIANT_FSF 64 default XTENSA_VARIANT_FSF
65 65
66config XTENSA_VARIANT_FSF 66config XTENSA_VARIANT_FSF
67 bool "fsf" 67 bool "fsf - default (not generic) configuration"
68
69config XTENSA_VARIANT_DC232B
70 bool "dc232b - Diamond 232L Standard Core Rev.B (LE)"
71 help
72 This variant refers to Tensilica's Diamond 232L Standard core Rev.B (LE).
68endchoice 73endchoice
69 74
70config MMU 75config MMU
diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile
index 4bd1e14c6b90..015b6b2a26b9 100644
--- a/arch/xtensa/Makefile
+++ b/arch/xtensa/Makefile
@@ -14,6 +14,7 @@
14# (Use VAR=<xtensa_config> to use another default compiler.) 14# (Use VAR=<xtensa_config> to use another default compiler.)
15 15
16variant-$(CONFIG_XTENSA_VARIANT_FSF) := fsf 16variant-$(CONFIG_XTENSA_VARIANT_FSF) := fsf
17variant-$(CONFIG_XTENSA_VARIANT_DC232B) := dc232b
17variant-$(CONFIG_XTENSA_VARIANT_LINUX_CUSTOM) := custom 18variant-$(CONFIG_XTENSA_VARIANT_LINUX_CUSTOM) := custom
18 19
19VARIANT = $(variant-y) 20VARIANT = $(variant-y)
diff --git a/arch/xtensa/kernel/irq.c b/arch/xtensa/kernel/irq.c
index c9ea73b7031b..5fbcde59a92d 100644
--- a/arch/xtensa/kernel/irq.c
+++ b/arch/xtensa/kernel/irq.c
@@ -48,7 +48,7 @@ asmlinkage void do_IRQ(int irq, struct pt_regs *regs)
48 48
49 if (irq >= NR_IRQS) { 49 if (irq >= NR_IRQS) {
50 printk(KERN_EMERG "%s: cannot handle IRQ %d\n", 50 printk(KERN_EMERG "%s: cannot handle IRQ %d\n",
51 __FUNCTION__, irq); 51 __func__, irq);
52 } 52 }
53 53
54 irq_enter(); 54 irq_enter();
diff --git a/arch/xtensa/platforms/iss/network.c b/arch/xtensa/platforms/iss/network.c
index a2e252217428..11a20adc1409 100644
--- a/arch/xtensa/platforms/iss/network.c
+++ b/arch/xtensa/platforms/iss/network.c
@@ -640,7 +640,7 @@ static int iss_net_configure(int index, char *init)
640 *lp = ((struct iss_net_private) { 640 *lp = ((struct iss_net_private) {
641 .device_list = LIST_HEAD_INIT(lp->device_list), 641 .device_list = LIST_HEAD_INIT(lp->device_list),
642 .opened_list = LIST_HEAD_INIT(lp->opened_list), 642 .opened_list = LIST_HEAD_INIT(lp->opened_list),
643 .lock = SPIN_LOCK_UNLOCKED, 643 .lock = __SPIN_LOCK_UNLOCKED(lp.lock),
644 .dev = dev, 644 .dev = dev,
645 .index = index, 645 .index = index,
646 //.fd = -1, 646 //.fd = -1,