From e6d3879a006b45efed17b3d4544becc2d8e2b4ab Mon Sep 17 00:00:00 2001 From: Hartley Sweeten Date: Fri, 5 Sep 2008 17:14:35 +0100 Subject: [PATCH] --- yaml --- r: 112324 b: refs/heads/master c: f69162ae63a5fa045aff35b535906696ba85666f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/arm/Kconfig | 69 +-- trunk/arch/arm/Makefile | 2 +- trunk/arch/arm/boot/compressed/Makefile | 2 +- trunk/arch/arm/boot/compressed/head.S | 3 +- trunk/arch/arm/common/Kconfig | 3 +- trunk/arch/arm/common/dmabounce.c | 287 ++++++++---- trunk/arch/arm/common/gic.c | 2 +- trunk/arch/arm/common/locomo.c | 2 +- trunk/arch/arm/common/sa1111.c | 2 +- trunk/arch/arm/common/scoop.c | 2 +- trunk/arch/arm/common/time-acorn.c | 2 +- trunk/arch/arm/common/uengine.c | 2 +- trunk/arch/arm/common/via82c505.c | 2 +- trunk/arch/arm/common/vic.c | 2 +- trunk/arch/arm/include/asm/bug.h | 2 +- trunk/arch/arm/include/asm/cacheflush.h | 90 ++++ trunk/arch/arm/include/asm/cachetype.h | 52 --- trunk/arch/arm/include/asm/cputype.h | 64 --- trunk/arch/arm/include/asm/dma-mapping.h | 378 ++++++++++------ trunk/arch/arm/include/asm/futex.h | 124 +----- trunk/arch/arm/include/asm/irq.h | 4 - trunk/arch/arm/include/asm/kprobes.h | 1 + trunk/arch/arm/include/asm/mc146818rtc.h | 2 +- trunk/arch/arm/include/asm/memory.h | 40 +- trunk/arch/arm/include/asm/mmu_context.h | 1 - trunk/arch/arm/include/asm/pgtable.h | 5 + trunk/arch/arm/include/asm/ptrace.h | 7 +- trunk/arch/arm/include/asm/setup.h | 11 - trunk/arch/arm/include/asm/sparsemem.h | 20 +- trunk/arch/arm/include/asm/system.h | 58 +++ trunk/arch/arm/include/asm/thread_info.h | 2 +- trunk/arch/arm/include/asm/uaccess.h | 10 +- trunk/arch/arm/include/asm/vga.h | 2 +- trunk/arch/arm/kernel/armksyms.c | 4 +- trunk/arch/arm/kernel/bios32.c | 2 +- trunk/arch/arm/kernel/crunch.c | 2 +- trunk/arch/arm/kernel/debug.S | 5 - trunk/arch/arm/kernel/dma-isa.c | 3 +- trunk/arch/arm/kernel/entry-armv.S | 16 - trunk/arch/arm/kernel/entry-common.S | 25 +- trunk/arch/arm/kernel/fiq.c | 1 + trunk/arch/arm/kernel/head-common.S | 19 +- trunk/arch/arm/kernel/head-nommu.S | 4 +- trunk/arch/arm/kernel/head.S | 12 +- trunk/arch/arm/kernel/init_task.c | 2 +- trunk/arch/arm/kernel/io.c | 3 +- trunk/arch/arm/kernel/kprobes-decode.c | 4 +- trunk/arch/arm/kernel/kprobes.c | 5 +- trunk/arch/arm/kernel/machine_kexec.c | 2 +- trunk/arch/arm/kernel/process.c | 33 +- trunk/arch/arm/kernel/ptrace.c | 10 +- trunk/arch/arm/kernel/setup.c | 279 +++++++++--- trunk/arch/arm/kernel/signal.c | 2 +- trunk/arch/arm/kernel/sys_arm.c | 3 +- trunk/arch/arm/kernel/sys_oabi-compat.c | 2 +- trunk/arch/arm/kernel/time.c | 2 +- trunk/arch/arm/kernel/traps.c | 18 +- trunk/arch/arm/kernel/xscale-cp0.c | 2 +- trunk/arch/arm/lib/ashldi3.S | 2 - trunk/arch/arm/lib/ashrdi3.S | 2 - trunk/arch/arm/lib/backtrace.S | 4 - trunk/arch/arm/lib/changebit.S | 2 - trunk/arch/arm/lib/clear_user.S | 3 +- trunk/arch/arm/lib/clearbit.S | 2 - trunk/arch/arm/lib/copy_from_user.S | 2 - trunk/arch/arm/lib/copy_page.S | 1 - trunk/arch/arm/lib/copy_to_user.S | 2 - trunk/arch/arm/lib/csumipv6.S | 1 - trunk/arch/arm/lib/csumpartial.S | 1 - trunk/arch/arm/lib/csumpartialcopy.S | 7 +- trunk/arch/arm/lib/csumpartialcopygeneric.S | 1 - trunk/arch/arm/lib/csumpartialcopyuser.S | 7 +- trunk/arch/arm/lib/delay.S | 3 - trunk/arch/arm/lib/div64.S | 1 - trunk/arch/arm/lib/findbit.S | 8 - trunk/arch/arm/lib/getuser.S | 14 +- trunk/arch/arm/lib/io-readsb.S | 1 - trunk/arch/arm/lib/io-readsl.S | 1 - trunk/arch/arm/lib/io-readsw-armv4.S | 1 - trunk/arch/arm/lib/io-writesb.S | 1 - trunk/arch/arm/lib/io-writesl.S | 1 - trunk/arch/arm/lib/io-writesw-armv4.S | 1 - trunk/arch/arm/lib/lib1funcs.S | 11 - trunk/arch/arm/lib/lshrdi3.S | 2 - trunk/arch/arm/lib/memchr.S | 1 - trunk/arch/arm/lib/memcpy.S | 1 - trunk/arch/arm/lib/memmove.S | 1 - trunk/arch/arm/lib/memset.S | 1 - trunk/arch/arm/lib/memzero.S | 1 - trunk/arch/arm/lib/muldi3.S | 2 - trunk/arch/arm/lib/putuser.S | 18 +- trunk/arch/arm/lib/setbit.S | 2 - trunk/arch/arm/lib/sha1.S | 3 - trunk/arch/arm/lib/strchr.S | 1 - trunk/arch/arm/lib/strncpy_from_user.S | 1 - trunk/arch/arm/lib/strnlen_user.S | 1 - trunk/arch/arm/lib/strrchr.S | 1 - trunk/arch/arm/lib/testchangebit.S | 2 - trunk/arch/arm/lib/testclearbit.S | 2 - trunk/arch/arm/lib/testsetbit.S | 2 - trunk/arch/arm/lib/uaccess.S | 2 - trunk/arch/arm/lib/ucmpdi2.S | 4 - trunk/arch/arm/mach-at91/at91x40_time.c | 2 +- trunk/arch/arm/mach-at91/clock.c | 3 +- trunk/arch/arm/mach-at91/gpio.c | 2 +- trunk/arch/arm/mach-at91/include/mach/irqs.h | 2 +- .../arm/mach-at91/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-at91/pm.c | 2 +- trunk/arch/arm/mach-clps711x/autcpu12.c | 2 +- trunk/arch/arm/mach-clps711x/cdb89712.c | 2 +- .../arm/mach-clps711x/include/mach/system.h | 2 +- trunk/arch/arm/mach-clps711x/irq.c | 2 +- trunk/arch/arm/mach-clps711x/p720t-leds.c | 2 +- trunk/arch/arm/mach-clps711x/p720t.c | 2 +- trunk/arch/arm/mach-clps711x/time.c | 2 +- trunk/arch/arm/mach-clps7500/core.c | 2 +- .../arch/arm/mach-clps7500/include/mach/irq.h | 2 +- .../arm/mach-clps7500/include/mach/memory.h | 8 - .../arm/mach-clps7500/include/mach/system.h | 2 +- trunk/arch/arm/mach-davinci/board-evm.c | 2 +- trunk/arch/arm/mach-davinci/clock.c | 2 +- trunk/arch/arm/mach-davinci/id.c | 3 +- .../arm/mach-davinci/include/mach/system.h | 2 +- trunk/arch/arm/mach-davinci/io.c | 2 +- trunk/arch/arm/mach-davinci/irq.c | 2 +- trunk/arch/arm/mach-davinci/psc.c | 2 +- trunk/arch/arm/mach-davinci/serial.c | 2 +- trunk/arch/arm/mach-davinci/time.c | 2 +- trunk/arch/arm/mach-ebsa110/core.c | 2 +- trunk/arch/arm/mach-ebsa110/io.c | 2 +- trunk/arch/arm/mach-ep93xx/adssphere.c | 2 +- trunk/arch/arm/mach-ep93xx/clock.c | 2 +- trunk/arch/arm/mach-ep93xx/core.c | 4 +- trunk/arch/arm/mach-ep93xx/edb9302.c | 2 +- trunk/arch/arm/mach-ep93xx/edb9302a.c | 2 +- trunk/arch/arm/mach-ep93xx/edb9307.c | 2 +- trunk/arch/arm/mach-ep93xx/edb9312.c | 2 +- trunk/arch/arm/mach-ep93xx/edb9315.c | 2 +- trunk/arch/arm/mach-ep93xx/edb9315a.c | 2 +- trunk/arch/arm/mach-ep93xx/gesbc9312.c | 2 +- trunk/arch/arm/mach-ep93xx/gpio.c | 2 +- .../arm/mach-ep93xx/include/mach/ts72xx.h | 2 +- trunk/arch/arm/mach-ep93xx/micro9.c | 3 +- trunk/arch/arm/mach-ep93xx/ts72xx.c | 2 +- trunk/arch/arm/mach-footbridge/cats-hw.c | 2 +- trunk/arch/arm/mach-footbridge/common.c | 2 +- trunk/arch/arm/mach-footbridge/dc21285.c | 2 +- trunk/arch/arm/mach-footbridge/dma.c | 2 +- .../arm/mach-footbridge/include/mach/memory.h | 10 + .../arm/mach-footbridge/include/mach/system.h | 2 +- trunk/arch/arm/mach-footbridge/isa-irq.c | 2 +- trunk/arch/arm/mach-footbridge/isa-timer.c | 2 +- trunk/arch/arm/mach-footbridge/netwinder-hw.c | 2 +- trunk/arch/arm/mach-footbridge/time.c | 2 +- trunk/arch/arm/mach-h720x/common.c | 2 +- trunk/arch/arm/mach-imx/clock.c | 2 +- trunk/arch/arm/mach-imx/irq.c | 2 +- trunk/arch/arm/mach-imx/leds-mx1ads.c | 2 +- trunk/arch/arm/mach-imx/time.c | 2 +- trunk/arch/arm/mach-integrator/core.c | 2 +- trunk/arch/arm/mach-integrator/cpu.c | 2 +- trunk/arch/arm/mach-integrator/impd1.c | 2 +- .../arch/arm/mach-integrator/integrator_ap.c | 2 +- .../arch/arm/mach-integrator/integrator_cp.c | 2 +- trunk/arch/arm/mach-integrator/leds.c | 2 +- trunk/arch/arm/mach-integrator/pci_v3.c | 2 +- .../arm/mach-iop13xx/include/mach/memory.h | 61 +-- .../arch/arm/mach-iop13xx/include/mach/pci.h | 2 +- trunk/arch/arm/mach-iop13xx/io.c | 2 +- trunk/arch/arm/mach-iop13xx/setup.c | 2 +- trunk/arch/arm/mach-iop13xx/tpmi.c | 2 +- trunk/arch/arm/mach-iop32x/glantank.c | 2 +- trunk/arch/arm/mach-iop32x/iq31244.c | 6 +- trunk/arch/arm/mach-iop32x/iq80321.c | 2 +- trunk/arch/arm/mach-iop32x/n2100.c | 2 +- trunk/arch/arm/mach-iop33x/iq80331.c | 2 +- trunk/arch/arm/mach-iop33x/iq80332.c | 2 +- trunk/arch/arm/mach-iop33x/uart.c | 2 +- trunk/arch/arm/mach-ixp2000/enp2611.c | 2 +- trunk/arch/arm/mach-ixp2000/ixdp2400.c | 2 +- trunk/arch/arm/mach-ixp2000/ixdp2800.c | 2 +- trunk/arch/arm/mach-ixp2000/ixdp2x00.c | 2 +- trunk/arch/arm/mach-ixp2000/ixdp2x01.c | 2 +- trunk/arch/arm/mach-ixp2000/pci.c | 2 +- trunk/arch/arm/mach-ixp23xx/pci.c | 2 +- trunk/arch/arm/mach-ixp4xx/common-pci.c | 9 +- trunk/arch/arm/mach-ixp4xx/common.c | 2 +- trunk/arch/arm/mach-ixp4xx/fsg-setup.c | 2 +- trunk/arch/arm/mach-ixp4xx/include/mach/cpu.h | 9 +- trunk/arch/arm/mach-ixp4xx/ixdp425-setup.c | 2 +- trunk/arch/arm/mach-ixp4xx/nas100d-setup.c | 2 +- trunk/arch/arm/mach-ixp4xx/nslu2-setup.c | 2 +- trunk/arch/arm/mach-ks8695/cpu.c | 2 +- trunk/arch/arm/mach-ks8695/gpio.c | 2 +- .../arm/mach-ks8695/include/mach/system.h | 2 +- .../arm/mach-ks8695/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-ks8695/irq.c | 2 +- trunk/arch/arm/mach-ks8695/pci.c | 2 +- trunk/arch/arm/mach-ks8695/time.c | 2 +- trunk/arch/arm/mach-lh7a40x/Kconfig | 13 +- .../arm/mach-lh7a40x/include/mach/memory.h | 6 - trunk/arch/arm/mach-lh7a40x/ssp-cpld.c | 2 +- trunk/arch/arm/mach-lh7a40x/time.c | 2 +- trunk/arch/arm/mach-loki/addr-map.c | 2 +- trunk/arch/arm/mach-loki/irq.c | 2 +- trunk/arch/arm/mach-msm/board-halibut.c | 5 +- trunk/arch/arm/mach-msm/common.c | 2 +- trunk/arch/arm/mach-msm/dma.c | 2 +- trunk/arch/arm/mach-msm/io.c | 2 +- trunk/arch/arm/mach-msm/irq.c | 5 +- trunk/arch/arm/mach-msm/timer.c | 3 +- trunk/arch/arm/mach-mv78xx0/addr-map.c | 2 +- trunk/arch/arm/mach-netx/generic.c | 2 +- .../arch/arm/mach-netx/include/mach/system.h | 2 +- trunk/arch/arm/mach-netx/pfifo.c | 2 +- trunk/arch/arm/mach-netx/time.c | 2 +- trunk/arch/arm/mach-netx/xc.c | 2 +- trunk/arch/arm/mach-ns9xxx/gpio.c | 2 +- .../arm/mach-ns9xxx/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-ns9xxx/irq.c | 2 +- trunk/arch/arm/mach-omap1/clock.c | 2 +- trunk/arch/arm/mach-omap1/devices.c | 2 +- trunk/arch/arm/mach-omap1/fpga.c | 2 +- trunk/arch/arm/mach-omap1/id.c | 3 +- trunk/arch/arm/mach-omap1/io.c | 2 +- trunk/arch/arm/mach-omap1/irq.c | 3 +- trunk/arch/arm/mach-omap1/leds-h2p2-debug.c | 2 +- trunk/arch/arm/mach-omap1/mailbox.c | 2 +- trunk/arch/arm/mach-omap1/mux.c | 5 +- trunk/arch/arm/mach-omap1/pm.c | 2 +- trunk/arch/arm/mach-omap1/serial.c | 2 +- trunk/arch/arm/mach-omap1/time.c | 2 +- trunk/arch/arm/mach-omap1/timer32k.c | 2 +- trunk/arch/arm/mach-omap2/board-2430sdp.c | 3 +- trunk/arch/arm/mach-omap2/board-h4.c | 3 +- trunk/arch/arm/mach-omap2/clock.c | 5 +- trunk/arch/arm/mach-omap2/clock24xx.c | 3 +- trunk/arch/arm/mach-omap2/clock34xx.c | 2 +- trunk/arch/arm/mach-omap2/devices.c | 2 +- trunk/arch/arm/mach-omap2/gpmc.c | 2 +- trunk/arch/arm/mach-omap2/id.c | 3 +- trunk/arch/arm/mach-omap2/io.c | 2 +- trunk/arch/arm/mach-omap2/irq.c | 2 +- trunk/arch/arm/mach-omap2/mailbox.c | 2 +- trunk/arch/arm/mach-omap2/memory.c | 3 +- trunk/arch/arm/mach-omap2/mux.c | 5 +- trunk/arch/arm/mach-omap2/pm.c | 2 +- trunk/arch/arm/mach-omap2/serial.c | 3 +- trunk/arch/arm/mach-orion5x/addr-map.c | 2 +- trunk/arch/arm/mach-orion5x/gpio.c | 2 +- trunk/arch/arm/mach-orion5x/irq.c | 2 +- trunk/arch/arm/mach-orion5x/mpp.c | 2 +- trunk/arch/arm/mach-pnx4008/clock.c | 2 +- trunk/arch/arm/mach-pnx4008/core.c | 2 +- trunk/arch/arm/mach-pnx4008/dma.c | 2 +- trunk/arch/arm/mach-pnx4008/gpio.c | 2 +- .../arm/mach-pnx4008/include/mach/system.h | 2 +- .../arm/mach-pnx4008/include/mach/timex.h | 2 +- trunk/arch/arm/mach-pnx4008/irq.c | 2 +- trunk/arch/arm/mach-pnx4008/pm.c | 2 +- trunk/arch/arm/mach-pnx4008/serial.c | 3 +- trunk/arch/arm/mach-pnx4008/time.c | 2 +- trunk/arch/arm/mach-pxa/Kconfig | 1 - trunk/arch/arm/mach-pxa/corgi.c | 2 +- trunk/arch/arm/mach-pxa/gpio.c | 2 +- .../arch/arm/mach-pxa/include/mach/hardware.h | 2 - trunk/arch/arm/mach-pxa/reset.c | 2 +- trunk/arch/arm/mach-pxa/spitz.c | 2 +- trunk/arch/arm/mach-pxa/ssp.c | 2 +- trunk/arch/arm/mach-realview/core.c | 2 +- trunk/arch/arm/mach-realview/core.h | 2 +- .../arm/mach-realview/include/mach/system.h | 2 +- trunk/arch/arm/mach-realview/localtimer.c | 2 +- trunk/arch/arm/mach-realview/platsmp.c | 2 +- trunk/arch/arm/mach-realview/realview_eb.c | 2 +- .../arch/arm/mach-realview/realview_pb1176.c | 2 +- .../arch/arm/mach-realview/realview_pb11mp.c | 2 +- trunk/arch/arm/mach-rpc/dma.c | 2 +- trunk/arch/arm/mach-rpc/include/mach/memory.h | 8 - trunk/arch/arm/mach-rpc/include/mach/system.h | 2 +- .../arm/mach-rpc/include/mach/uncompress.h | 2 +- trunk/arch/arm/mach-rpc/irq.c | 2 +- trunk/arch/arm/mach-rpc/riscpc.c | 2 +- trunk/arch/arm/mach-s3c2400/gpio.c | 2 +- trunk/arch/arm/mach-s3c2410/bast-irq.c | 2 +- trunk/arch/arm/mach-s3c2410/clock.c | 2 +- trunk/arch/arm/mach-s3c2410/gpio.c | 2 +- .../mach-s3c2410/include/mach/system-reset.h | 2 +- .../arm/mach-s3c2410/include/mach/system.h | 2 +- trunk/arch/arm/mach-s3c2410/mach-amlm5900.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-bast.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-h1940.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-n30.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-otom.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-qt2410.c | 3 +- trunk/arch/arm/mach-s3c2410/mach-smdk2410.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-tct_hammer.c | 2 +- trunk/arch/arm/mach-s3c2410/mach-vr1000.c | 2 +- trunk/arch/arm/mach-s3c2410/pm.c | 2 +- trunk/arch/arm/mach-s3c2410/s3c2410.c | 2 +- trunk/arch/arm/mach-s3c2410/usb-simtec.c | 2 +- trunk/arch/arm/mach-s3c2412/clock.c | 2 +- trunk/arch/arm/mach-s3c2412/dma.c | 2 +- trunk/arch/arm/mach-s3c2412/irq.c | 2 +- trunk/arch/arm/mach-s3c2412/mach-smdk2413.c | 2 +- trunk/arch/arm/mach-s3c2412/mach-vstms.c | 3 +- trunk/arch/arm/mach-s3c2412/pm.c | 2 +- trunk/arch/arm/mach-s3c2412/s3c2412.c | 2 +- trunk/arch/arm/mach-s3c2440/clock.c | 2 +- trunk/arch/arm/mach-s3c2440/dsc.c | 2 +- trunk/arch/arm/mach-s3c2440/irq.c | 2 +- trunk/arch/arm/mach-s3c2440/mach-anubis.c | 3 +- trunk/arch/arm/mach-s3c2440/mach-nexcoder.c | 2 +- trunk/arch/arm/mach-s3c2440/mach-osiris.c | 2 +- trunk/arch/arm/mach-s3c2440/mach-rx3715.c | 3 +- trunk/arch/arm/mach-s3c2440/mach-smdk2440.c | 2 +- trunk/arch/arm/mach-s3c2440/s3c2440.c | 2 +- trunk/arch/arm/mach-s3c2442/clock.c | 2 +- trunk/arch/arm/mach-s3c2443/clock.c | 2 +- trunk/arch/arm/mach-s3c2443/dma.c | 2 +- trunk/arch/arm/mach-s3c2443/irq.c | 2 +- trunk/arch/arm/mach-s3c2443/mach-smdk2443.c | 2 +- trunk/arch/arm/mach-s3c2443/s3c2443.c | 2 +- trunk/arch/arm/mach-sa1100/cpu-sa1100.c | 4 +- trunk/arch/arm/mach-sa1100/cpu-sa1110.c | 3 +- .../arm/mach-sa1100/include/mach/SA-1100.h | 16 + .../arm/mach-sa1100/include/mach/hardware.h | 18 - .../arm/mach-sa1100/include/mach/memory.h | 16 +- trunk/arch/arm/mach-sa1100/pleb.c | 3 +- trunk/arch/arm/mach-sa1100/simpad.c | 2 +- trunk/arch/arm/mach-sa1100/ssp.c | 2 +- trunk/arch/arm/mach-shark/core.c | 2 +- .../arch/arm/mach-shark/include/mach/system.h | 2 +- trunk/arch/arm/mach-shark/irq.c | 2 +- trunk/arch/arm/mach-shark/leds.c | 2 +- trunk/arch/arm/mach-versatile/core.c | 2 +- .../arm/mach-versatile/include/mach/system.h | 2 +- trunk/arch/arm/mach-versatile/pci.c | 2 +- trunk/arch/arm/mach-versatile/versatile_ab.c | 2 +- trunk/arch/arm/mach-versatile/versatile_pb.c | 2 +- trunk/arch/arm/mm/Makefile | 2 +- trunk/arch/arm/mm/abort-ev7.S | 1 - trunk/arch/arm/mm/abort-nommu.S | 1 - trunk/arch/arm/mm/alignment.c | 2 +- trunk/arch/arm/mm/cache-l2x0.c | 2 +- trunk/arch/arm/mm/cache-v7.S | 10 - trunk/arch/arm/mm/cache-xsc3l2.c | 3 +- .../arm/mm/{dma-mapping.c => consistent.c} | 104 +---- trunk/arch/arm/mm/copypage-v6.c | 1 - trunk/arch/arm/mm/extable.c | 2 +- trunk/arch/arm/mm/fault-armv.c | 2 - trunk/arch/arm/mm/fault.c | 7 +- trunk/arch/arm/mm/flush.c | 1 - trunk/arch/arm/mm/init.c | 193 +++----- trunk/arch/arm/mm/iomap.c | 3 +- trunk/arch/arm/mm/ioremap.c | 12 +- trunk/arch/arm/mm/mm.h | 2 - trunk/arch/arm/mm/mmap.c | 6 +- trunk/arch/arm/mm/mmu.c | 34 +- trunk/arch/arm/mm/nommu.c | 18 +- trunk/arch/arm/mm/proc-v7.S | 10 +- trunk/arch/arm/mm/tlb-v7.S | 2 - trunk/arch/arm/nwfpe/fpa11_cpdt.c | 2 +- trunk/arch/arm/oprofile/Makefile | 1 - trunk/arch/arm/oprofile/backtrace.c | 2 +- trunk/arch/arm/oprofile/common.c | 4 - trunk/arch/arm/oprofile/op_arm_model.h | 1 - trunk/arch/arm/oprofile/op_model_mpcore.c | 2 +- trunk/arch/arm/oprofile/op_model_v7.c | 411 ------------------ trunk/arch/arm/oprofile/op_model_v7.h | 103 ----- trunk/arch/arm/oprofile/op_model_xscale.c | 2 +- trunk/arch/arm/plat-iop/i2c.c | 2 +- trunk/arch/arm/plat-iop/io.c | 2 +- trunk/arch/arm/plat-iop/pci.c | 2 +- trunk/arch/arm/plat-iop/time.c | 2 +- trunk/arch/arm/plat-mxc/irq.c | 2 +- trunk/arch/arm/plat-omap/clock.c | 3 +- trunk/arch/arm/plat-omap/common.c | 2 +- trunk/arch/arm/plat-omap/cpu-omap.c | 2 +- trunk/arch/arm/plat-omap/debug-devices.c | 2 +- trunk/arch/arm/plat-omap/debug-leds.c | 2 +- trunk/arch/arm/plat-omap/devices.c | 2 +- trunk/arch/arm/plat-omap/dmtimer.c | 2 +- trunk/arch/arm/plat-omap/fb.c | 2 +- trunk/arch/arm/plat-omap/gpio.c | 3 +- trunk/arch/arm/plat-omap/include/mach/gpio.h | 2 +- trunk/arch/arm/plat-omap/include/mach/irqs.h | 2 - trunk/arch/arm/plat-omap/mailbox.c | 2 +- trunk/arch/arm/plat-omap/mux.c | 2 +- trunk/arch/arm/plat-omap/ocpi.c | 2 +- trunk/arch/arm/plat-omap/sram.c | 2 +- trunk/arch/arm/plat-omap/usb.c | 2 +- trunk/arch/arm/plat-s3c24xx/clock.c | 2 +- trunk/arch/arm/plat-s3c24xx/common-smdk.c | 2 +- trunk/arch/arm/plat-s3c24xx/cpu.c | 4 +- trunk/arch/arm/plat-s3c24xx/devs.c | 2 +- trunk/arch/arm/plat-s3c24xx/dma.c | 2 +- trunk/arch/arm/plat-s3c24xx/gpio.c | 2 +- trunk/arch/arm/plat-s3c24xx/irq.c | 2 +- trunk/arch/arm/plat-s3c24xx/pm-simtec.c | 2 +- trunk/arch/arm/plat-s3c24xx/pm.c | 2 +- trunk/arch/arm/plat-s3c24xx/s3c244x-clock.c | 2 +- trunk/arch/arm/plat-s3c24xx/s3c244x-irq.c | 2 +- trunk/arch/arm/plat-s3c24xx/s3c244x.c | 2 +- trunk/arch/arm/plat-s3c24xx/time.c | 2 +- trunk/arch/arm/vfp/entry.S | 8 +- trunk/arch/arm/vfp/vfphw.S | 25 +- trunk/drivers/watchdog/ixp4xx_wdt.c | 4 +- 409 files changed, 1491 insertions(+), 2078 deletions(-) delete mode 100644 trunk/arch/arm/include/asm/cachetype.h delete mode 100644 trunk/arch/arm/include/asm/cputype.h rename trunk/arch/arm/mm/{dma-mapping.c => consistent.c} (79%) delete mode 100644 trunk/arch/arm/oprofile/op_model_v7.c delete mode 100644 trunk/arch/arm/oprofile/op_model_v7.h diff --git a/[refs] b/[refs] index 8f91adc5f729..190796465ecd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3bca103a1e658d23737d20e1989139d9ca8973bf +refs/heads/master: f69162ae63a5fa045aff35b535906696ba85666f diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index ea52fae33290..4b8acd2851f4 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -148,6 +148,7 @@ config ARCH_MAY_HAVE_PC_FDC config ZONE_DMA bool + default y config GENERIC_ISA_DMA bool @@ -177,11 +178,6 @@ config OPROFILE_MPCORE config OPROFILE_ARM11_CORE bool -config OPROFILE_ARMV7 - def_bool y - depends on CPU_V7 && !SMP - bool - endif config VECTORS_BASE @@ -249,7 +245,6 @@ config ARCH_CLPS7500 select TIMER_ACORN select ISA select NO_IOPORT - select ARCH_SPARSEMEM_ENABLE help Support for the Cirrus Logic PS7500FE system-on-a-chip. @@ -311,7 +306,6 @@ config ARCH_IOP13XX select PLAT_IOP select PCI select ARCH_SUPPORTS_MSI - select VMSPLIT_1G help Support for Intel's IOP13XX (XScale) family of processors. @@ -356,7 +350,6 @@ config ARCH_IXP4XX select GENERIC_GPIO select GENERIC_TIME select GENERIC_CLOCKEVENTS - select ZONE_DMA if PCI help Support for Intel's IXP4XX (XScale) family of processors. @@ -471,7 +464,6 @@ config ARCH_RPC select HAVE_PATA_PLATFORM select ISA_DMA_API select NO_IOPORT - select ARCH_SPARSEMEM_ENABLE help On the Acorn Risc-PC, Linux can support the internal IDE disk and CD-ROM interface, serial and parallel port, and the floppy drive. @@ -479,7 +471,9 @@ config ARCH_RPC config ARCH_SA1100 bool "SA1100-based" select ISA + select ARCH_DISCONTIGMEM_ENABLE select ARCH_SPARSEMEM_ENABLE + select ARCH_SELECT_MEMORY_MODEL select ARCH_MTD_XIP select GENERIC_GPIO select GENERIC_TIME @@ -503,7 +497,6 @@ config ARCH_SHARK bool "Shark" select ISA select ISA_DMA - select ZONE_DMA select PCI help Support for the StrongARM based Digital DNARD machine, also known @@ -511,8 +504,6 @@ config ARCH_SHARK config ARCH_LH7A40X bool "Sharp LH7A40X" - select ARCH_DISCONTIGMEM_ENABLE if !LH7A40X_CONTIGMEM - select ARCH_SPARSEMEM_ENABLE if !LH7A40X_CONTIGMEM help Say Y here for systems based on one of the Sharp LH7A40X System on a Chip processors. These CPUs include an ARM922T @@ -525,7 +516,6 @@ config ARCH_DAVINCI select GENERIC_CLOCKEVENTS select GENERIC_GPIO select HAVE_CLK - select ZONE_DMA help Support for TI's DaVinci platform. @@ -744,29 +734,6 @@ config SMP If you don't know what to do here, say N. -choice - prompt "Memory split" - default VMSPLIT_3G - help - Select the desired split between kernel and user memory. - - If you are not absolutely sure what you are doing, leave this - option alone! - - config VMSPLIT_3G - bool "3G/1G user/kernel split" - config VMSPLIT_2G - bool "2G/2G user/kernel split" - config VMSPLIT_1G - bool "1G/3G user/kernel split" -endchoice - -config PAGE_OFFSET - hex - default 0x40000000 if VMSPLIT_1G - default 0x80000000 if VMSPLIT_2G - default 0xC0000000 - config NR_CPUS int "Maximum number of CPUs (2-32)" range 2 32 @@ -843,18 +810,20 @@ config OABI_COMPAT UNPREDICTABLE (in fact it can be predicted that it won't work at all). If in doubt say Y. -# Discontigmem is deprecated config ARCH_DISCONTIGMEM_ENABLE bool + default (ARCH_LH7A40X && !LH7A40X_CONTIGMEM) + help + Say Y to support efficient handling of discontiguous physical memory, + for architectures which are either NUMA (Non-Uniform Memory Access) + or have huge holes in the physical address space for other reasons. + See for more. config ARCH_SPARSEMEM_ENABLE bool -config ARCH_SPARSEMEM_DEFAULT - def_bool ARCH_SPARSEMEM_ENABLE - config ARCH_SELECT_MEMORY_MODEL - def_bool ARCH_DISCONTIGMEM_ENABLE && ARCH_SPARSEMEM_ENABLE + bool config NODES_SHIFT int @@ -1031,10 +1000,10 @@ config ATAGS_PROC endmenu -menu "CPU Power Management" - if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA) +menu "CPU Frequency scaling" + source "drivers/cpufreq/Kconfig" config CPU_FREQ_SA1100 @@ -1073,12 +1042,10 @@ config CPU_FREQ_PXA default y select CPU_FREQ_DEFAULT_GOV_USERSPACE -endif - -source "drivers/cpuidle/Kconfig" - endmenu +endif + menu "Floating point emulation" comment "At least one emulation must be selected" @@ -1230,8 +1197,6 @@ source "drivers/power/Kconfig" source "drivers/hwmon/Kconfig" -source "drivers/thermal/Kconfig" - source "drivers/watchdog/Kconfig" source "drivers/ssb/Kconfig" @@ -1252,10 +1217,6 @@ source "drivers/usb/Kconfig" source "drivers/mmc/Kconfig" -source "drivers/memstick/Kconfig" - -source "drivers/accessibility/Kconfig" - source "drivers/leds/Kconfig" source "drivers/rtc/Kconfig" @@ -1264,8 +1225,6 @@ source "drivers/dma/Kconfig" source "drivers/dca/Kconfig" -source "drivers/auxdisplay/Kconfig" - source "drivers/regulator/Kconfig" source "drivers/uio/Kconfig" diff --git a/trunk/arch/arm/Makefile b/trunk/arch/arm/Makefile index e2274bc0b544..703a44fa0f9b 100644 --- a/trunk/arch/arm/Makefile +++ b/trunk/arch/arm/Makefile @@ -47,7 +47,7 @@ comma = , # Note that GCC does not numerically define an architecture version # macro, but instead defines a whole series of macros which makes # testing for a specific architecture or later rather impossible. -arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a) +arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7a,-march=armv5t -Wa$(comma)-march=armv7a) arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) # Only override the compiler option if ARMv6. The ARMv6K extensions are # always available in ARMv7 diff --git a/trunk/arch/arm/boot/compressed/Makefile b/trunk/arch/arm/boot/compressed/Makefile index 7a03f2007882..94462a097f86 100644 --- a/trunk/arch/arm/boot/compressed/Makefile +++ b/trunk/arch/arm/boot/compressed/Makefile @@ -76,7 +76,7 @@ KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) endif EXTRA_CFLAGS := -fpic -fno-builtin -EXTRA_AFLAGS := -Wa,-march=all +EXTRA_AFLAGS := # Supply ZRELADDR, INITRD_PHYS and PARAMS_PHYS to the decompressor via # linker symbols. We only define initrd_phys and params_phys if the diff --git a/trunk/arch/arm/boot/compressed/head.S b/trunk/arch/arm/boot/compressed/head.S index 84a1e0496a3c..d42f89b7760b 100644 --- a/trunk/arch/arm/boot/compressed/head.S +++ b/trunk/arch/arm/boot/compressed/head.S @@ -421,7 +421,6 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size add r1, r1, #1048576 str r1, [r0] mov pc, lr -ENDPROC(__setup_mmu) __armv4_mmu_cache_on: mov r12, lr @@ -802,7 +801,7 @@ loop1: add r2, r2, #4 @ add 4 (line length offset) ldr r4, =0x3ff ands r4, r4, r1, lsr #3 @ find maximum number on the way size - clz r5, r4 @ find bit position of way size increment + .word 0xe16f5f14 @ clz r5, r4 - find bit position of way size increment ldr r7, =0x7fff ands r7, r7, r1, lsr #13 @ extract max number of the index size loop2: diff --git a/trunk/arch/arm/common/Kconfig b/trunk/arch/arm/common/Kconfig index 2e32acca02fb..3e073467caca 100644 --- a/trunk/arch/arm/common/Kconfig +++ b/trunk/arch/arm/common/Kconfig @@ -12,8 +12,7 @@ config ICST307 config SA1111 bool - select DMABOUNCE if !ARCH_PXA - select ZONE_DMA if !ARCH_PXA + select DMABOUNCE config DMABOUNCE bool diff --git a/trunk/arch/arm/common/dmabounce.c b/trunk/arch/arm/common/dmabounce.c index f030f0775be7..aecc6c3f908f 100644 --- a/trunk/arch/arm/common/dmabounce.c +++ b/trunk/arch/arm/common/dmabounce.c @@ -154,7 +154,9 @@ alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr, #endif write_lock_irqsave(&device_info->lock, flags); + list_add(&buf->node, &device_info->safe_buffers); + write_unlock_irqrestore(&device_info->lock, flags); return buf; @@ -203,22 +205,8 @@ free_safe_buffer(struct dmabounce_device_info *device_info, struct safe_buffer * /* ************************************************** */ -static struct safe_buffer *find_safe_buffer_dev(struct device *dev, - dma_addr_t dma_addr, const char *where) -{ - if (!dev || !dev->archdata.dmabounce) - return NULL; - if (dma_mapping_error(dev, dma_addr)) { - if (dev) - dev_err(dev, "Trying to %s invalid mapping\n", where); - else - pr_err("unknown device: Trying to %s invalid mapping\n", where); - return NULL; - } - return find_safe_buffer(dev->archdata.dmabounce, dma_addr); -} - -static inline dma_addr_t map_single(struct device *dev, void *ptr, size_t size, +static inline dma_addr_t +map_single(struct device *dev, void *ptr, size_t size, enum dma_data_direction dir) { struct dmabounce_device_info *device_info = dev->archdata.dmabounce; @@ -282,21 +270,33 @@ static inline dma_addr_t map_single(struct device *dev, void *ptr, size_t size, return dma_addr; } -static inline void unmap_single(struct device *dev, dma_addr_t dma_addr, - size_t size, enum dma_data_direction dir) +static inline void +unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, + enum dma_data_direction dir) { - struct safe_buffer *buf = find_safe_buffer_dev(dev, dma_addr, "unmap"); + struct dmabounce_device_info *device_info = dev->archdata.dmabounce; + struct safe_buffer *buf = NULL; + + /* + * Trying to unmap an invalid mapping + */ + if (dma_mapping_error(dev, dma_addr)) { + dev_err(dev, "Trying to unmap invalid mapping\n"); + return; + } + + if (device_info) + buf = find_safe_buffer(device_info, dma_addr); if (buf) { BUG_ON(buf->size != size); - BUG_ON(buf->direction != dir); dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n", __func__, buf->ptr, virt_to_dma(dev, buf->ptr), buf->safe, buf->safe_dma_addr); - DO_STATS(dev->archdata.dmabounce->bounce_count++); + DO_STATS ( device_info->bounce_count++ ); if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL) { void *ptr = buf->ptr; @@ -317,7 +317,74 @@ static inline void unmap_single(struct device *dev, dma_addr_t dma_addr, dmac_clean_range(ptr, ptr + size); outer_clean_range(__pa(ptr), __pa(ptr) + size); } - free_safe_buffer(dev->archdata.dmabounce, buf); + free_safe_buffer(device_info, buf); + } +} + +static int sync_single(struct device *dev, dma_addr_t dma_addr, size_t size, + enum dma_data_direction dir) +{ + struct dmabounce_device_info *device_info = dev->archdata.dmabounce; + struct safe_buffer *buf = NULL; + + if (device_info) + buf = find_safe_buffer(device_info, dma_addr); + + if (buf) { + /* + * Both of these checks from original code need to be + * commented out b/c some drivers rely on the following: + * + * 1) Drivers may map a large chunk of memory into DMA space + * but only sync a small portion of it. Good example is + * allocating a large buffer, mapping it, and then + * breaking it up into small descriptors. No point + * in syncing the whole buffer if you only have to + * touch one descriptor. + * + * 2) Buffers that are mapped as DMA_BIDIRECTIONAL are + * usually only synced in one dir at a time. + * + * See drivers/net/eepro100.c for examples of both cases. + * + * -ds + * + * BUG_ON(buf->size != size); + * BUG_ON(buf->direction != dir); + */ + + dev_dbg(dev, + "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n", + __func__, buf->ptr, virt_to_dma(dev, buf->ptr), + buf->safe, buf->safe_dma_addr); + + DO_STATS ( device_info->bounce_count++ ); + + switch (dir) { + case DMA_FROM_DEVICE: + dev_dbg(dev, + "%s: copy back safe %p to unsafe %p size %d\n", + __func__, buf->safe, buf->ptr, size); + memcpy(buf->ptr, buf->safe, size); + break; + case DMA_TO_DEVICE: + dev_dbg(dev, + "%s: copy out unsafe %p to safe %p, size %d\n", + __func__,buf->ptr, buf->safe, size); + memcpy(buf->safe, buf->ptr, size); + break; + case DMA_BIDIRECTIONAL: + BUG(); /* is this allowed? what does it mean? */ + default: + BUG(); + } + /* + * No need to sync the safe buffer - it was allocated + * via the coherent allocators. + */ + return 0; + } else { + return 1; } } @@ -329,29 +396,21 @@ static inline void unmap_single(struct device *dev, dma_addr_t dma_addr, * substitute the safe buffer for the unsafe one. * (basically move the buffer from an unsafe area to a safe one) */ -dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size, +dma_addr_t +dma_map_single(struct device *dev, void *ptr, size_t size, enum dma_data_direction dir) { + dma_addr_t dma_addr; + dev_dbg(dev, "%s(ptr=%p,size=%d,dir=%x)\n", __func__, ptr, size, dir); - BUG_ON(!valid_dma_direction(dir)); - - return map_single(dev, ptr, size, dir); -} -EXPORT_SYMBOL(dma_map_single); - -dma_addr_t dma_map_page(struct device *dev, struct page *page, - unsigned long offset, size_t size, enum dma_data_direction dir) -{ - dev_dbg(dev, "%s(page=%p,off=%#lx,size=%zx,dir=%x)\n", - __func__, page, offset, size, dir); + BUG_ON(dir == DMA_NONE); - BUG_ON(!valid_dma_direction(dir)); + dma_addr = map_single(dev, ptr, size, dir); - return map_single(dev, page_address(page) + offset, size, dir); + return dma_addr; } -EXPORT_SYMBOL(dma_map_page); /* * see if a mapped address was really a "safe" buffer and if so, copy @@ -360,76 +419,126 @@ EXPORT_SYMBOL(dma_map_page); * should be) */ -void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, - enum dma_data_direction dir) +void +dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, + enum dma_data_direction dir) { dev_dbg(dev, "%s(ptr=%p,size=%d,dir=%x)\n", __func__, (void *) dma_addr, size, dir); + BUG_ON(dir == DMA_NONE); + unmap_single(dev, dma_addr, size, dir); } -EXPORT_SYMBOL(dma_unmap_single); -int dmabounce_sync_for_cpu(struct device *dev, dma_addr_t addr, - unsigned long off, size_t sz, enum dma_data_direction dir) +int +dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) { - struct safe_buffer *buf; + int i; - dev_dbg(dev, "%s(dma=%#x,off=%#lx,sz=%zx,dir=%x)\n", - __func__, addr, off, sz, dir); + dev_dbg(dev, "%s(sg=%p,nents=%d,dir=%x)\n", + __func__, sg, nents, dir); - buf = find_safe_buffer_dev(dev, addr, __func__); - if (!buf) - return 1; + BUG_ON(dir == DMA_NONE); - BUG_ON(buf->direction != dir); + for (i = 0; i < nents; i++, sg++) { + struct page *page = sg_page(sg); + unsigned int offset = sg->offset; + unsigned int length = sg->length; + void *ptr = page_address(page) + offset; - dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n", - __func__, buf->ptr, virt_to_dma(dev, buf->ptr), - buf->safe, buf->safe_dma_addr); + sg->dma_address = + map_single(dev, ptr, length, dir); + } - DO_STATS(dev->archdata.dmabounce->bounce_count++); + return nents; +} - if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL) { - dev_dbg(dev, "%s: copy back safe %p to unsafe %p size %d\n", - __func__, buf->safe + off, buf->ptr + off, sz); - memcpy(buf->ptr + off, buf->safe + off, sz); +void +dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + dev_dbg(dev, "%s(sg=%p,nents=%d,dir=%x)\n", + __func__, sg, nents, dir); + + BUG_ON(dir == DMA_NONE); + + for (i = 0; i < nents; i++, sg++) { + dma_addr_t dma_addr = sg->dma_address; + unsigned int length = sg->length; + + unmap_single(dev, dma_addr, length, dir); } - return 0; } -EXPORT_SYMBOL(dmabounce_sync_for_cpu); -int dmabounce_sync_for_device(struct device *dev, dma_addr_t addr, - unsigned long off, size_t sz, enum dma_data_direction dir) +void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_addr, + unsigned long offset, size_t size, + enum dma_data_direction dir) { - struct safe_buffer *buf; + dev_dbg(dev, "%s(dma=%#x,off=%#lx,size=%zx,dir=%x)\n", + __func__, dma_addr, offset, size, dir); - dev_dbg(dev, "%s(dma=%#x,off=%#lx,sz=%zx,dir=%x)\n", - __func__, addr, off, sz, dir); + if (sync_single(dev, dma_addr, offset + size, dir)) + dma_cache_maint(dma_to_virt(dev, dma_addr) + offset, size, dir); +} +EXPORT_SYMBOL(dma_sync_single_range_for_cpu); - buf = find_safe_buffer_dev(dev, addr, __func__); - if (!buf) - return 1; +void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_addr, + unsigned long offset, size_t size, + enum dma_data_direction dir) +{ + dev_dbg(dev, "%s(dma=%#x,off=%#lx,size=%zx,dir=%x)\n", + __func__, dma_addr, offset, size, dir); + + if (sync_single(dev, dma_addr, offset + size, dir)) + dma_cache_maint(dma_to_virt(dev, dma_addr) + offset, size, dir); +} +EXPORT_SYMBOL(dma_sync_single_range_for_device); - BUG_ON(buf->direction != dir); +void +dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + dev_dbg(dev, "%s(sg=%p,nents=%d,dir=%x)\n", + __func__, sg, nents, dir); - dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n", - __func__, buf->ptr, virt_to_dma(dev, buf->ptr), - buf->safe, buf->safe_dma_addr); + BUG_ON(dir == DMA_NONE); - DO_STATS(dev->archdata.dmabounce->bounce_count++); + for (i = 0; i < nents; i++, sg++) { + dma_addr_t dma_addr = sg->dma_address; + unsigned int length = sg->length; - if (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL) { - dev_dbg(dev, "%s: copy out unsafe %p to safe %p, size %d\n", - __func__,buf->ptr + off, buf->safe + off, sz); - memcpy(buf->safe + off, buf->ptr + off, sz); + sync_single(dev, dma_addr, length, dir); } - return 0; } -EXPORT_SYMBOL(dmabounce_sync_for_device); -static int dmabounce_init_pool(struct dmabounce_pool *pool, struct device *dev, - const char *name, unsigned long size) +void +dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + dev_dbg(dev, "%s(sg=%p,nents=%d,dir=%x)\n", + __func__, sg, nents, dir); + + BUG_ON(dir == DMA_NONE); + + for (i = 0; i < nents; i++, sg++) { + dma_addr_t dma_addr = sg->dma_address; + unsigned int length = sg->length; + + sync_single(dev, dma_addr, length, dir); + } +} + +static int +dmabounce_init_pool(struct dmabounce_pool *pool, struct device *dev, const char *name, + unsigned long size) { pool->size = size; DO_STATS(pool->allocs = 0); @@ -440,8 +549,9 @@ static int dmabounce_init_pool(struct dmabounce_pool *pool, struct device *dev, return pool->pool ? 0 : -ENOMEM; } -int dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size, - unsigned long large_buffer_size) +int +dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size, + unsigned long large_buffer_size) { struct dmabounce_device_info *device_info; int ret; @@ -497,9 +607,9 @@ int dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size, kfree(device_info); return ret; } -EXPORT_SYMBOL(dmabounce_register_dev); -void dmabounce_unregister_dev(struct device *dev) +void +dmabounce_unregister_dev(struct device *dev) { struct dmabounce_device_info *device_info = dev->archdata.dmabounce; @@ -532,6 +642,15 @@ void dmabounce_unregister_dev(struct device *dev) dev_info(dev, "dmabounce: device unregistered\n"); } + + +EXPORT_SYMBOL(dma_map_single); +EXPORT_SYMBOL(dma_unmap_single); +EXPORT_SYMBOL(dma_map_sg); +EXPORT_SYMBOL(dma_unmap_sg); +EXPORT_SYMBOL(dma_sync_sg_for_cpu); +EXPORT_SYMBOL(dma_sync_sg_for_device); +EXPORT_SYMBOL(dmabounce_register_dev); EXPORT_SYMBOL(dmabounce_unregister_dev); MODULE_AUTHOR("Christopher Hoover , Deepak Saxena "); diff --git a/trunk/arch/arm/common/gic.c b/trunk/arch/arm/common/gic.c index 7fc9860a97d7..0c89bd35e06f 100644 --- a/trunk/arch/arm/common/gic.c +++ b/trunk/arch/arm/common/gic.c @@ -27,9 +27,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/common/locomo.c b/trunk/arch/arm/common/locomo.c index 534b23d95864..283051eaf931 100644 --- a/trunk/arch/arm/common/locomo.c +++ b/trunk/arch/arm/common/locomo.c @@ -24,9 +24,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/common/sa1111.c b/trunk/arch/arm/common/sa1111.c index fb86f248aab8..ec8a5471bf06 100644 --- a/trunk/arch/arm/common/sa1111.c +++ b/trunk/arch/arm/common/sa1111.c @@ -25,10 +25,10 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/common/scoop.c b/trunk/arch/arm/common/scoop.c index 697c64913990..ae39553589dd 100644 --- a/trunk/arch/arm/common/scoop.c +++ b/trunk/arch/arm/common/scoop.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/common/time-acorn.c b/trunk/arch/arm/common/time-acorn.c index deeed561b168..df0983aafe69 100644 --- a/trunk/arch/arm/common/time-acorn.c +++ b/trunk/arch/arm/common/time-acorn.c @@ -17,9 +17,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/common/uengine.c b/trunk/arch/arm/common/uengine.c index b520e56216a9..7ecd3c0ab011 100644 --- a/trunk/arch/arm/common/uengine.c +++ b/trunk/arch/arm/common/uengine.c @@ -16,9 +16,9 @@ #include #include #include -#include #include #include +#include #if defined(CONFIG_ARCH_IXP2000) #define IXP_UENGINE_CSR_VIRT_BASE IXP2000_UENGINE_CSR_VIRT_BASE diff --git a/trunk/arch/arm/common/via82c505.c b/trunk/arch/arm/common/via82c505.c index 8421d39109b3..79a8206e62ac 100644 --- a/trunk/arch/arm/common/via82c505.c +++ b/trunk/arch/arm/common/via82c505.c @@ -4,8 +4,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/common/vic.c b/trunk/arch/arm/common/vic.c index f1e4b8f60cab..c026fa2214a3 100644 --- a/trunk/arch/arm/common/vic.c +++ b/trunk/arch/arm/common/vic.c @@ -20,8 +20,8 @@ */ #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/include/asm/bug.h b/trunk/arch/arm/include/asm/bug.h index 4d88425a4169..7b62351f097d 100644 --- a/trunk/arch/arm/include/asm/bug.h +++ b/trunk/arch/arm/include/asm/bug.h @@ -12,7 +12,7 @@ extern void __bug(const char *file, int line) __attribute__((noreturn)); #else /* this just causes an oops */ -#define BUG() do { *(int *)0 = 0; } while (1) +#define BUG() (*(int *)0 = 0) #endif diff --git a/trunk/arch/arm/include/asm/cacheflush.h b/trunk/arch/arm/include/asm/cacheflush.h index de6c59f814a1..9073d9c6567e 100644 --- a/trunk/arch/arm/include/asm/cacheflush.h +++ b/trunk/arch/arm/include/asm/cacheflush.h @@ -444,4 +444,94 @@ static inline void flush_ioremap_region(unsigned long phys, void __iomem *virt, dmac_inv_range(start, start + size); } +#define __cacheid_present(val) (val != read_cpuid(CPUID_ID)) +#define __cacheid_type_v7(val) ((val & (7 << 29)) == (4 << 29)) + +#define __cacheid_vivt_prev7(val) ((val & (15 << 25)) != (14 << 25)) +#define __cacheid_vipt_prev7(val) ((val & (15 << 25)) == (14 << 25)) +#define __cacheid_vipt_nonaliasing_prev7(val) ((val & (15 << 25 | 1 << 23)) == (14 << 25)) +#define __cacheid_vipt_aliasing_prev7(val) ((val & (15 << 25 | 1 << 23)) == (14 << 25 | 1 << 23)) + +#define __cacheid_vivt(val) (__cacheid_type_v7(val) ? 0 : __cacheid_vivt_prev7(val)) +#define __cacheid_vipt(val) (__cacheid_type_v7(val) ? 1 : __cacheid_vipt_prev7(val)) +#define __cacheid_vipt_nonaliasing(val) (__cacheid_type_v7(val) ? 1 : __cacheid_vipt_nonaliasing_prev7(val)) +#define __cacheid_vipt_aliasing(val) (__cacheid_type_v7(val) ? 0 : __cacheid_vipt_aliasing_prev7(val)) +#define __cacheid_vivt_asid_tagged_instr(val) (__cacheid_type_v7(val) ? ((val & (3 << 14)) == (1 << 14)) : 0) + +#if defined(CONFIG_CPU_CACHE_VIVT) && !defined(CONFIG_CPU_CACHE_VIPT) +/* + * VIVT caches only + */ +#define cache_is_vivt() 1 +#define cache_is_vipt() 0 +#define cache_is_vipt_nonaliasing() 0 +#define cache_is_vipt_aliasing() 0 +#define icache_is_vivt_asid_tagged() 0 + +#elif !defined(CONFIG_CPU_CACHE_VIVT) && defined(CONFIG_CPU_CACHE_VIPT) +/* + * VIPT caches only + */ +#define cache_is_vivt() 0 +#define cache_is_vipt() 1 +#define cache_is_vipt_nonaliasing() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + __cacheid_vipt_nonaliasing(__val); \ + }) + +#define cache_is_vipt_aliasing() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + __cacheid_vipt_aliasing(__val); \ + }) + +#define icache_is_vivt_asid_tagged() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + __cacheid_vivt_asid_tagged_instr(__val); \ + }) + +#else +/* + * VIVT or VIPT caches. Note that this is unreliable since ARM926 + * and V6 CPUs satisfy the "(val & (15 << 25)) == (14 << 25)" test. + * There's no way to tell from the CacheType register what type (!) + * the cache is. + */ +#define cache_is_vivt() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + (!__cacheid_present(__val)) || __cacheid_vivt(__val); \ + }) + +#define cache_is_vipt() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + __cacheid_present(__val) && __cacheid_vipt(__val); \ + }) + +#define cache_is_vipt_nonaliasing() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + __cacheid_present(__val) && \ + __cacheid_vipt_nonaliasing(__val); \ + }) + +#define cache_is_vipt_aliasing() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + __cacheid_present(__val) && \ + __cacheid_vipt_aliasing(__val); \ + }) + +#define icache_is_vivt_asid_tagged() \ + ({ \ + unsigned int __val = read_cpuid(CPUID_CACHETYPE); \ + __cacheid_present(__val) && \ + __cacheid_vivt_asid_tagged_instr(__val); \ + }) + +#endif + #endif diff --git a/trunk/arch/arm/include/asm/cachetype.h b/trunk/arch/arm/include/asm/cachetype.h deleted file mode 100644 index d3a4c2cb9f2f..000000000000 --- a/trunk/arch/arm/include/asm/cachetype.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef __ASM_ARM_CACHETYPE_H -#define __ASM_ARM_CACHETYPE_H - -#define CACHEID_VIVT (1 << 0) -#define CACHEID_VIPT_NONALIASING (1 << 1) -#define CACHEID_VIPT_ALIASING (1 << 2) -#define CACHEID_VIPT (CACHEID_VIPT_ALIASING|CACHEID_VIPT_NONALIASING) -#define CACHEID_ASID_TAGGED (1 << 3) - -extern unsigned int cacheid; - -#define cache_is_vivt() cacheid_is(CACHEID_VIVT) -#define cache_is_vipt() cacheid_is(CACHEID_VIPT) -#define cache_is_vipt_nonaliasing() cacheid_is(CACHEID_VIPT_NONALIASING) -#define cache_is_vipt_aliasing() cacheid_is(CACHEID_VIPT_ALIASING) -#define icache_is_vivt_asid_tagged() cacheid_is(CACHEID_ASID_TAGGED) - -/* - * __LINUX_ARM_ARCH__ is the minimum supported CPU architecture - * Mask out support which will never be present on newer CPUs. - * - v6+ is never VIVT - * - v7+ VIPT never aliases - */ -#if __LINUX_ARM_ARCH__ >= 7 -#define __CACHEID_ARCH_MIN (CACHEID_VIPT_NONALIASING | CACHEID_ASID_TAGGED) -#elif __LINUX_ARM_ARCH__ >= 6 -#define __CACHEID_ARCH_MIN (~CACHEID_VIVT) -#else -#define __CACHEID_ARCH_MIN (~0) -#endif - -/* - * Mask out support which isn't configured - */ -#if defined(CONFIG_CPU_CACHE_VIVT) && !defined(CONFIG_CPU_CACHE_VIPT) -#define __CACHEID_ALWAYS (CACHEID_VIVT) -#define __CACHEID_NEVER (~CACHEID_VIVT) -#elif !defined(CONFIG_CPU_CACHE_VIVT) && defined(CONFIG_CPU_CACHE_VIPT) -#define __CACHEID_ALWAYS (0) -#define __CACHEID_NEVER (CACHEID_VIVT) -#else -#define __CACHEID_ALWAYS (0) -#define __CACHEID_NEVER (0) -#endif - -static inline unsigned int __attribute__((pure)) cacheid_is(unsigned int mask) -{ - return (__CACHEID_ALWAYS & mask) | - (~__CACHEID_NEVER & __CACHEID_ARCH_MIN & mask & cacheid); -} - -#endif diff --git a/trunk/arch/arm/include/asm/cputype.h b/trunk/arch/arm/include/asm/cputype.h deleted file mode 100644 index 7b9d27e749b8..000000000000 --- a/trunk/arch/arm/include/asm/cputype.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef __ASM_ARM_CPUTYPE_H -#define __ASM_ARM_CPUTYPE_H - -#include - -#define CPUID_ID 0 -#define CPUID_CACHETYPE 1 -#define CPUID_TCM 2 -#define CPUID_TLBTYPE 3 - -#ifdef CONFIG_CPU_CP15 -#define read_cpuid(reg) \ - ({ \ - unsigned int __val; \ - asm("mrc p15, 0, %0, c0, c0, " __stringify(reg) \ - : "=r" (__val) \ - : \ - : "cc"); \ - __val; \ - }) -#else -extern unsigned int processor_id; -#define read_cpuid(reg) (processor_id) -#endif - -/* - * The CPU ID never changes at run time, so we might as well tell the - * compiler that it's constant. Use this function to read the CPU ID - * rather than directly reading processor_id or read_cpuid() directly. - */ -static inline unsigned int __attribute_const__ read_cpuid_id(void) -{ - return read_cpuid(CPUID_ID); -} - -static inline unsigned int __attribute_const__ read_cpuid_cachetype(void) -{ - return read_cpuid(CPUID_CACHETYPE); -} - -/* - * Intel's XScale3 core supports some v6 features (supersections, L2) - * but advertises itself as v5 as it does not support the v6 ISA. For - * this reason, we need a way to explicitly test for this type of CPU. - */ -#ifndef CONFIG_CPU_XSC3 -#define cpu_is_xsc3() 0 -#else -static inline int cpu_is_xsc3(void) -{ - if ((read_cpuid_id() & 0xffffe000) == 0x69056000) - return 1; - - return 0; -} -#endif - -#if !defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_CPU_XSC3) -#define cpu_is_xscale() 0 -#else -#define cpu_is_xscale() 1 -#endif - -#endif diff --git a/trunk/arch/arm/include/asm/dma-mapping.h b/trunk/arch/arm/include/asm/dma-mapping.h index 1cb8602dd9d5..7b95d2058395 100644 --- a/trunk/arch/arm/include/asm/dma-mapping.h +++ b/trunk/arch/arm/include/asm/dma-mapping.h @@ -104,14 +104,15 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) * Dummy noncoherent implementation. We don't provide a dma_cache_sync * function so drivers using this API are highlighted with build warnings. */ -static inline void *dma_alloc_noncoherent(struct device *dev, size_t size, - dma_addr_t *handle, gfp_t gfp) +static inline void * +dma_alloc_noncoherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp) { return NULL; } -static inline void dma_free_noncoherent(struct device *dev, size_t size, - void *cpu_addr, dma_addr_t handle) +static inline void +dma_free_noncoherent(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle) { } @@ -126,7 +127,8 @@ static inline void dma_free_noncoherent(struct device *dev, size_t size, * return the CPU-viewed address, and sets @handle to be the * device-viewed address. */ -extern void *dma_alloc_coherent(struct device *, size_t, dma_addr_t *, gfp_t); +extern void * +dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp); /** * dma_free_coherent - free memory allocated by dma_alloc_coherent @@ -141,7 +143,9 @@ extern void *dma_alloc_coherent(struct device *, size_t, dma_addr_t *, gfp_t); * References to memory and mappings associated with cpu_addr/handle * during and after this call executing are illegal. */ -extern void dma_free_coherent(struct device *, size_t, void *, dma_addr_t); +extern void +dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle); /** * dma_mmap_coherent - map a coherent DMA allocation into user space @@ -155,8 +159,8 @@ extern void dma_free_coherent(struct device *, size_t, void *, dma_addr_t); * into user space. The coherent DMA buffer must not be freed by the * driver until the user space mapping has been released. */ -int dma_mmap_coherent(struct device *, struct vm_area_struct *, - void *, dma_addr_t, size_t); +int dma_mmap_coherent(struct device *dev, struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t handle, size_t size); /** @@ -170,94 +174,14 @@ int dma_mmap_coherent(struct device *, struct vm_area_struct *, * return the CPU-viewed address, and sets @handle to be the * device-viewed address. */ -extern void *dma_alloc_writecombine(struct device *, size_t, dma_addr_t *, - gfp_t); +extern void * +dma_alloc_writecombine(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp); #define dma_free_writecombine(dev,size,cpu_addr,handle) \ dma_free_coherent(dev,size,cpu_addr,handle) -int dma_mmap_writecombine(struct device *, struct vm_area_struct *, - void *, dma_addr_t, size_t); - - -#ifdef CONFIG_DMABOUNCE -/* - * For SA-1111, IXP425, and ADI systems the dma-mapping functions are "magic" - * and utilize bounce buffers as needed to work around limited DMA windows. - * - * On the SA-1111, a bug limits DMA to only certain regions of RAM. - * On the IXP425, the PCI inbound window is 64MB (256MB total RAM) - * On some ADI engineering systems, PCI inbound window is 32MB (12MB total RAM) - * - * The following are helper functions used by the dmabounce subystem - * - */ - -/** - * dmabounce_register_dev - * - * @dev: valid struct device pointer - * @small_buf_size: size of buffers to use with small buffer pool - * @large_buf_size: size of buffers to use with large buffer pool (can be 0) - * - * This function should be called by low-level platform code to register - * a device as requireing DMA buffer bouncing. The function will allocate - * appropriate DMA pools for the device. - * - */ -extern int dmabounce_register_dev(struct device *, unsigned long, - unsigned long); - -/** - * dmabounce_unregister_dev - * - * @dev: valid struct device pointer - * - * This function should be called by low-level platform code when device - * that was previously registered with dmabounce_register_dev is removed - * from the system. - * - */ -extern void dmabounce_unregister_dev(struct device *); - -/** - * dma_needs_bounce - * - * @dev: valid struct device pointer - * @dma_handle: dma_handle of unbounced buffer - * @size: size of region being mapped - * - * Platforms that utilize the dmabounce mechanism must implement - * this function. - * - * The dmabounce routines call this function whenever a dma-mapping - * is requested to determine whether a given buffer needs to be bounced - * or not. The function must return 0 if the buffer is OK for - * DMA access and 1 if the buffer needs to be bounced. - * - */ -extern int dma_needs_bounce(struct device*, dma_addr_t, size_t); - -/* - * The DMA API, implemented by dmabounce.c. See below for descriptions. - */ -extern dma_addr_t dma_map_single(struct device *, void *, size_t, - enum dma_data_direction); -extern dma_addr_t dma_map_page(struct device *, struct page *, - unsigned long, size_t, enum dma_data_direction); -extern void dma_unmap_single(struct device *, dma_addr_t, size_t, - enum dma_data_direction); - -/* - * Private functions - */ -int dmabounce_sync_for_cpu(struct device *, dma_addr_t, unsigned long, - size_t, enum dma_data_direction); -int dmabounce_sync_for_device(struct device *, dma_addr_t, unsigned long, - size_t, enum dma_data_direction); -#else -#define dmabounce_sync_for_cpu(dev,dma,off,sz,dir) (1) -#define dmabounce_sync_for_device(dev,dma,off,sz,dir) (1) +int dma_mmap_writecombine(struct device *dev, struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t handle, size_t size); /** @@ -274,16 +198,19 @@ int dmabounce_sync_for_device(struct device *, dma_addr_t, unsigned long, * can regain ownership by calling dma_unmap_single() or * dma_sync_single_for_cpu(). */ -static inline dma_addr_t dma_map_single(struct device *dev, void *cpu_addr, - size_t size, enum dma_data_direction dir) +#ifndef CONFIG_DMABOUNCE +static inline dma_addr_t +dma_map_single(struct device *dev, void *cpu_addr, size_t size, + enum dma_data_direction dir) { - BUG_ON(!valid_dma_direction(dir)); - if (!arch_is_coherent()) dma_cache_maint(cpu_addr, size, dir); return virt_to_dma(dev, cpu_addr); } +#else +extern dma_addr_t dma_map_single(struct device *,void *, size_t, enum dma_data_direction); +#endif /** * dma_map_page - map a portion of a page for streaming DMA @@ -297,25 +224,23 @@ static inline dma_addr_t dma_map_single(struct device *dev, void *cpu_addr, * or written back. * * The device owns this memory once this call has completed. The CPU - * can regain ownership by calling dma_unmap_page(). + * can regain ownership by calling dma_unmap_page() or + * dma_sync_single_for_cpu(). */ -static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, - unsigned long offset, size_t size, enum dma_data_direction dir) +static inline dma_addr_t +dma_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, + enum dma_data_direction dir) { - BUG_ON(!valid_dma_direction(dir)); - - if (!arch_is_coherent()) - dma_cache_maint(page_address(page) + offset, size, dir); - - return page_to_dma(dev, page) + offset; + return dma_map_single(dev, page_address(page) + offset, size, dir); } /** * dma_unmap_single - unmap a single buffer previously mapped * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices * @handle: DMA address of buffer - * @size: size of buffer (same as passed to dma_map_single) - * @dir: DMA transfer direction (same as passed to dma_map_single) + * @size: size of buffer to map + * @dir: DMA transfer direction * * Unmap a single streaming mode DMA translation. The handle and size * must match what was provided in the previous dma_map_single() call. @@ -324,33 +249,107 @@ static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, * After this call, reads by the CPU to the buffer are guaranteed to see * whatever the device wrote there. */ -static inline void dma_unmap_single(struct device *dev, dma_addr_t handle, - size_t size, enum dma_data_direction dir) +#ifndef CONFIG_DMABOUNCE +static inline void +dma_unmap_single(struct device *dev, dma_addr_t handle, size_t size, + enum dma_data_direction dir) { /* nothing to do */ } -#endif /* CONFIG_DMABOUNCE */ +#else +extern void dma_unmap_single(struct device *, dma_addr_t, size_t, enum dma_data_direction); +#endif /** * dma_unmap_page - unmap a buffer previously mapped through dma_map_page() * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices * @handle: DMA address of buffer - * @size: size of buffer (same as passed to dma_map_page) - * @dir: DMA transfer direction (same as passed to dma_map_page) + * @size: size of buffer to map + * @dir: DMA transfer direction * - * Unmap a page streaming mode DMA translation. The handle and size - * must match what was provided in the previous dma_map_page() call. + * Unmap a single streaming mode DMA translation. The handle and size + * must match what was provided in the previous dma_map_single() call. * All other usages are undefined. * * After this call, reads by the CPU to the buffer are guaranteed to see * whatever the device wrote there. */ -static inline void dma_unmap_page(struct device *dev, dma_addr_t handle, - size_t size, enum dma_data_direction dir) +static inline void +dma_unmap_page(struct device *dev, dma_addr_t handle, size_t size, + enum dma_data_direction dir) { dma_unmap_single(dev, handle, size, dir); } +/** + * dma_map_sg - map a set of SG buffers for streaming mode DMA + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Map a set of buffers described by scatterlist in streaming + * mode for DMA. This is the scatter-gather version of the + * above dma_map_single interface. Here the scatter gather list + * elements are each tagged with the appropriate dma address + * and length. They are obtained via sg_dma_{address,length}(SG). + * + * NOTE: An implementation may be able to use a smaller number of + * DMA address/length pairs than there are SG table elements. + * (for example via virtual mapping capabilities) + * The routine returns the number of addr/length pairs actually + * used, at most nents. + * + * Device ownership issues as mentioned above for dma_map_single are + * the same here. + */ +#ifndef CONFIG_DMABOUNCE +static inline int +dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + for (i = 0; i < nents; i++, sg++) { + char *virt; + + sg->dma_address = page_to_dma(dev, sg_page(sg)) + sg->offset; + virt = sg_virt(sg); + + if (!arch_is_coherent()) + dma_cache_maint(virt, sg->length, dir); + } + + return nents; +} +#else +extern int dma_map_sg(struct device *, struct scatterlist *, int, enum dma_data_direction); +#endif + +/** + * dma_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Unmap a set of streaming mode DMA translations. + * Again, CPU read rules concerning calls here are the same as for + * dma_unmap_single() above. + */ +#ifndef CONFIG_DMABOUNCE +static inline void +dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + + /* nothing to do */ +} +#else +extern void dma_unmap_sg(struct device *, struct scatterlist *, int, enum dma_data_direction); +#endif + + /** * dma_sync_single_range_for_cpu * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices @@ -369,52 +368,145 @@ static inline void dma_unmap_page(struct device *dev, dma_addr_t handle, * must first the perform a dma_sync_for_device, and then the * device again owns the buffer. */ -static inline void dma_sync_single_range_for_cpu(struct device *dev, - dma_addr_t handle, unsigned long offset, size_t size, - enum dma_data_direction dir) +#ifndef CONFIG_DMABOUNCE +static inline void +dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t handle, + unsigned long offset, size_t size, + enum dma_data_direction dir) { - BUG_ON(!valid_dma_direction(dir)); - - dmabounce_sync_for_cpu(dev, handle, offset, size, dir); + if (!arch_is_coherent()) + dma_cache_maint(dma_to_virt(dev, handle) + offset, size, dir); } -static inline void dma_sync_single_range_for_device(struct device *dev, - dma_addr_t handle, unsigned long offset, size_t size, - enum dma_data_direction dir) +static inline void +dma_sync_single_range_for_device(struct device *dev, dma_addr_t handle, + unsigned long offset, size_t size, + enum dma_data_direction dir) { - BUG_ON(!valid_dma_direction(dir)); - - if (!dmabounce_sync_for_device(dev, handle, offset, size, dir)) - return; - if (!arch_is_coherent()) dma_cache_maint(dma_to_virt(dev, handle) + offset, size, dir); } +#else +extern void dma_sync_single_range_for_cpu(struct device *, dma_addr_t, unsigned long, size_t, enum dma_data_direction); +extern void dma_sync_single_range_for_device(struct device *, dma_addr_t, unsigned long, size_t, enum dma_data_direction); +#endif -static inline void dma_sync_single_for_cpu(struct device *dev, - dma_addr_t handle, size_t size, enum dma_data_direction dir) +static inline void +dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, + enum dma_data_direction dir) { dma_sync_single_range_for_cpu(dev, handle, 0, size, dir); } -static inline void dma_sync_single_for_device(struct device *dev, - dma_addr_t handle, size_t size, enum dma_data_direction dir) +static inline void +dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size, + enum dma_data_direction dir) { dma_sync_single_range_for_device(dev, handle, 0, size, dir); } + +/** + * dma_sync_sg_for_cpu + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Make physical memory consistent for a set of streaming + * mode DMA translations after a transfer. + * + * The same as dma_sync_single_for_* but for a scatter-gather list, + * same rules and usage. + */ +#ifndef CONFIG_DMABOUNCE +static inline void +dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + for (i = 0; i < nents; i++, sg++) { + char *virt = sg_virt(sg); + if (!arch_is_coherent()) + dma_cache_maint(virt, sg->length, dir); + } +} + +static inline void +dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + for (i = 0; i < nents; i++, sg++) { + char *virt = sg_virt(sg); + if (!arch_is_coherent()) + dma_cache_maint(virt, sg->length, dir); + } +} +#else +extern void dma_sync_sg_for_cpu(struct device*, struct scatterlist*, int, enum dma_data_direction); +extern void dma_sync_sg_for_device(struct device*, struct scatterlist*, int, enum dma_data_direction); +#endif + +#ifdef CONFIG_DMABOUNCE /* - * The scatter list versions of the above methods. + * For SA-1111, IXP425, and ADI systems the dma-mapping functions are "magic" + * and utilize bounce buffers as needed to work around limited DMA windows. + * + * On the SA-1111, a bug limits DMA to only certain regions of RAM. + * On the IXP425, the PCI inbound window is 64MB (256MB total RAM) + * On some ADI engineering systems, PCI inbound window is 32MB (12MB total RAM) + * + * The following are helper functions used by the dmabounce subystem + * + */ + +/** + * dmabounce_register_dev + * + * @dev: valid struct device pointer + * @small_buf_size: size of buffers to use with small buffer pool + * @large_buf_size: size of buffers to use with large buffer pool (can be 0) + * + * This function should be called by low-level platform code to register + * a device as requireing DMA buffer bouncing. The function will allocate + * appropriate DMA pools for the device. + * + */ +extern int dmabounce_register_dev(struct device *, unsigned long, unsigned long); + +/** + * dmabounce_unregister_dev + * + * @dev: valid struct device pointer + * + * This function should be called by low-level platform code when device + * that was previously registered with dmabounce_register_dev is removed + * from the system. + * */ -extern int dma_map_sg(struct device *, struct scatterlist *, int, - enum dma_data_direction); -extern void dma_unmap_sg(struct device *, struct scatterlist *, int, - enum dma_data_direction); -extern void dma_sync_sg_for_cpu(struct device *, struct scatterlist *, int, - enum dma_data_direction); -extern void dma_sync_sg_for_device(struct device *, struct scatterlist *, int, - enum dma_data_direction); +extern void dmabounce_unregister_dev(struct device *); +/** + * dma_needs_bounce + * + * @dev: valid struct device pointer + * @dma_handle: dma_handle of unbounced buffer + * @size: size of region being mapped + * + * Platforms that utilize the dmabounce mechanism must implement + * this function. + * + * The dmabounce routines call this function whenever a dma-mapping + * is requested to determine whether a given buffer needs to be bounced + * or not. The function must return 0 if the buffer is OK for + * DMA access and 1 if the buffer needs to be bounced. + * + */ +extern int dma_needs_bounce(struct device*, dma_addr_t, size_t); +#endif /* CONFIG_DMABOUNCE */ #endif /* __KERNEL__ */ #endif diff --git a/trunk/arch/arm/include/asm/futex.h b/trunk/arch/arm/include/asm/futex.h index 9ee743b95de8..6a332a9f099c 100644 --- a/trunk/arch/arm/include/asm/futex.h +++ b/trunk/arch/arm/include/asm/futex.h @@ -1,124 +1,6 @@ -#ifndef _ASM_ARM_FUTEX_H -#define _ASM_ARM_FUTEX_H - -#ifdef __KERNEL__ - -#ifdef CONFIG_SMP +#ifndef _ASM_FUTEX_H +#define _ASM_FUTEX_H #include -#else /* !SMP, we can work around lack of atomic ops by disabling preemption */ - -#include -#include -#include -#include - -#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg) \ - __asm__ __volatile__( \ - "1: ldrt %1, [%2]\n" \ - " " insn "\n" \ - "2: strt %0, [%2]\n" \ - " mov %0, #0\n" \ - "3:\n" \ - " .section __ex_table,\"a\"\n" \ - " .align 3\n" \ - " .long 1b, 4f, 2b, 4f\n" \ - " .previous\n" \ - " .section .fixup,\"ax\"\n" \ - "4: mov %0, %4\n" \ - " b 3b\n" \ - " .previous" \ - : "=&r" (ret), "=&r" (oldval) \ - : "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \ - : "cc", "memory") - -static inline int -futex_atomic_op_inuser (int encoded_op, int __user *uaddr) -{ - int op = (encoded_op >> 28) & 7; - int cmp = (encoded_op >> 24) & 15; - int oparg = (encoded_op << 8) >> 20; - int cmparg = (encoded_op << 20) >> 20; - int oldval = 0, ret; - - if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) - oparg = 1 << oparg; - - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) - return -EFAULT; - - pagefault_disable(); /* implies preempt_disable() */ - - switch (op) { - case FUTEX_OP_SET: - __futex_atomic_op("mov %0, %3", ret, oldval, uaddr, oparg); - break; - case FUTEX_OP_ADD: - __futex_atomic_op("add %0, %1, %3", ret, oldval, uaddr, oparg); - break; - case FUTEX_OP_OR: - __futex_atomic_op("orr %0, %1, %3", ret, oldval, uaddr, oparg); - break; - case FUTEX_OP_ANDN: - __futex_atomic_op("and %0, %1, %3", ret, oldval, uaddr, ~oparg); - break; - case FUTEX_OP_XOR: - __futex_atomic_op("eor %0, %1, %3", ret, oldval, uaddr, oparg); - break; - default: - ret = -ENOSYS; - } - - pagefault_enable(); /* subsumes preempt_enable() */ - - if (!ret) { - switch (cmp) { - case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break; - case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break; - case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break; - case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break; - case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break; - case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break; - default: ret = -ENOSYS; - } - } - return ret; -} - -static inline int -futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) -{ - int val; - - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) - return -EFAULT; - - pagefault_disable(); /* implies preempt_disable() */ - - __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n" - "1: ldrt %0, [%3]\n" - " teq %0, %1\n" - "2: streqt %2, [%3]\n" - "3:\n" - " .section __ex_table,\"a\"\n" - " .align 3\n" - " .long 1b, 4f, 2b, 4f\n" - " .previous\n" - " .section .fixup,\"ax\"\n" - "4: mov %0, %4\n" - " b 3b\n" - " .previous" - : "=&r" (val) - : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT) - : "cc", "memory"); - - pagefault_enable(); /* subsumes preempt_enable() */ - - return val; -} - -#endif /* !SMP */ - -#endif /* __KERNEL__ */ -#endif /* _ASM_ARM_FUTEX_H */ +#endif diff --git a/trunk/arch/arm/include/asm/irq.h b/trunk/arch/arm/include/asm/irq.h index a0009aa5d157..d6786090d02c 100644 --- a/trunk/arch/arm/include/asm/irq.h +++ b/trunk/arch/arm/include/asm/irq.h @@ -22,10 +22,6 @@ #ifndef __ASSEMBLY__ struct irqaction; extern void migrate_irqs(void); - -extern void asm_do_IRQ(unsigned int, struct pt_regs *); -void init_IRQ(void); - #endif #endif diff --git a/trunk/arch/arm/include/asm/kprobes.h b/trunk/arch/arm/include/asm/kprobes.h index bb8a19bd5822..a5d0d99ad387 100644 --- a/trunk/arch/arm/include/asm/kprobes.h +++ b/trunk/arch/arm/include/asm/kprobes.h @@ -61,6 +61,7 @@ struct kprobe_ctlblk { void arch_remove_kprobe(struct kprobe *); void kretprobe_trampoline(void); +int kprobe_trap_handler(struct pt_regs *regs, unsigned int instr); int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr); int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *data); diff --git a/trunk/arch/arm/include/asm/mc146818rtc.h b/trunk/arch/arm/include/asm/mc146818rtc.h index 6b884d2b0b69..e1ca48a9e973 100644 --- a/trunk/arch/arm/include/asm/mc146818rtc.h +++ b/trunk/arch/arm/include/asm/mc146818rtc.h @@ -4,8 +4,8 @@ #ifndef _ASM_MC146818RTC_H #define _ASM_MC146818RTC_H -#include #include +#include #ifndef RTC_PORT #define RTC_PORT(x) (0x70 + (x)) diff --git a/trunk/arch/arm/include/asm/memory.h b/trunk/arch/arm/include/asm/memory.h index 809ff9ab853a..bf7c737c9226 100644 --- a/trunk/arch/arm/include/asm/memory.h +++ b/trunk/arch/arm/include/asm/memory.h @@ -13,33 +13,43 @@ #ifndef __ASM_ARM_MEMORY_H #define __ASM_ARM_MEMORY_H -#include -#include -#include -#include - /* * Allow for constants defined here to be used from assembly code * by prepending the UL suffix only with actual C code compilation. */ -#define UL(x) _AC(x, UL) +#ifndef __ASSEMBLY__ +#define UL(x) (x##UL) +#else +#define UL(x) (x) +#endif + +#include +#include +#include #ifdef CONFIG_MMU +#ifndef TASK_SIZE /* - * PAGE_OFFSET - the virtual address of the start of the kernel image * TASK_SIZE - the maximum size of a user space task. * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area */ -#define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET) -#define TASK_SIZE (UL(CONFIG_PAGE_OFFSET) - UL(0x01000000)) -#define TASK_UNMAPPED_BASE (UL(CONFIG_PAGE_OFFSET) / 3) +#define TASK_SIZE UL(0xbf000000) +#define TASK_UNMAPPED_BASE UL(0x40000000) +#endif /* * The maximum size of a 26-bit user space task. */ #define TASK_SIZE_26 UL(0x04000000) +/* + * Page offset: 3GB + */ +#ifndef PAGE_OFFSET +#define PAGE_OFFSET UL(0xc0000000) +#endif + /* * The module space lives between the addresses given by TASK_SIZE * and PAGE_OFFSET - it must be within 32MB of the kernel text. @@ -137,10 +147,16 @@ #ifndef arch_adjust_zones #define arch_adjust_zones(node,size,holes) do { } while (0) -#elif !defined(CONFIG_ZONE_DMA) -#error "custom arch_adjust_zones() requires CONFIG_ZONE_DMA" #endif +/* + * Amount of memory reserved for the vmalloc() area, and minimum + * address for vmalloc mappings. + */ +extern unsigned long vmalloc_reserve; + +#define VMALLOC_MIN (void *)(VMALLOC_END - vmalloc_reserve) + /* * PFNs are used to describe any physical page; this means * PFN 0 == physical address 0. diff --git a/trunk/arch/arm/include/asm/mmu_context.h b/trunk/arch/arm/include/asm/mmu_context.h index 0559f37c2a27..a301e446007f 100644 --- a/trunk/arch/arm/include/asm/mmu_context.h +++ b/trunk/arch/arm/include/asm/mmu_context.h @@ -15,7 +15,6 @@ #include #include -#include #include #include diff --git a/trunk/arch/arm/include/asm/pgtable.h b/trunk/arch/arm/include/asm/pgtable.h index ec630109a8c7..8e21ef15bd74 100644 --- a/trunk/arch/arm/include/asm/pgtable.h +++ b/trunk/arch/arm/include/asm/pgtable.h @@ -319,6 +319,11 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd) #define pmd_page(pmd) virt_to_page(__va(pmd_val(pmd))) +/* + * Permanent address of a page. We never have highmem, so this is trivial. + */ +#define pages_to_mb(x) ((x) >> (20 - PAGE_SHIFT)) + /* * Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. diff --git a/trunk/arch/arm/include/asm/ptrace.h b/trunk/arch/arm/include/asm/ptrace.h index 73192618f1c2..b415c0e85458 100644 --- a/trunk/arch/arm/include/asm/ptrace.h +++ b/trunk/arch/arm/include/asm/ptrace.h @@ -54,6 +54,7 @@ #define PSR_C_BIT 0x20000000 #define PSR_Z_BIT 0x40000000 #define PSR_N_BIT 0x80000000 +#define PCMASK 0 /* * Groups of PSR bits @@ -138,7 +139,11 @@ static inline int valid_user_regs(struct pt_regs *regs) return 0; } -#define instruction_pointer(regs) (regs)->ARM_pc +#define pc_pointer(v) \ + ((v) & ~PCMASK) + +#define instruction_pointer(regs) \ + (pc_pointer((regs)->ARM_pc)) #ifdef CONFIG_SMP extern unsigned long profile_pc(struct pt_regs *regs); diff --git a/trunk/arch/arm/include/asm/setup.h b/trunk/arch/arm/include/asm/setup.h index a65413ba121d..7bbf105463f1 100644 --- a/trunk/arch/arm/include/asm/setup.h +++ b/trunk/arch/arm/include/asm/setup.h @@ -209,17 +209,6 @@ struct meminfo { struct membank bank[NR_BANKS]; }; -#define for_each_nodebank(iter,mi,no) \ - for (iter = 0; iter < mi->nr_banks; iter++) \ - if (mi->bank[iter].node == no) - -#define bank_pfn_start(bank) __phys_to_pfn((bank)->start) -#define bank_pfn_end(bank) __phys_to_pfn((bank)->start + (bank)->size) -#define bank_pfn_size(bank) ((bank)->size >> PAGE_SHIFT) -#define bank_phys_start(bank) (bank)->start -#define bank_phys_end(bank) ((bank)->start + (bank)->size) -#define bank_phys_size(bank) (bank)->size - /* * Early command line parameters. */ diff --git a/trunk/arch/arm/include/asm/sparsemem.h b/trunk/arch/arm/include/asm/sparsemem.h index 00098615c6f0..277158191a0d 100644 --- a/trunk/arch/arm/include/asm/sparsemem.h +++ b/trunk/arch/arm/include/asm/sparsemem.h @@ -3,22 +3,8 @@ #include -/* - * Two definitions are required for sparsemem: - * - * MAX_PHYSMEM_BITS: The number of physical address bits required - * to address the last byte of memory. - * - * SECTION_SIZE_BITS: The number of physical address bits to cover - * the maximum amount of memory in a section. - * - * Eg, if you have 2 banks of up to 64MB at 0x80000000, 0x84000000, - * then MAX_PHYSMEM_BITS is 32, SECTION_SIZE_BITS is 26. - * - * Define these in your mach/memory.h. - */ -#if !defined(SECTION_SIZE_BITS) || !defined(MAX_PHYSMEM_BITS) -#error Sparsemem is not supported on this platform -#endif +#define MAX_PHYSADDR_BITS 32 +#define MAX_PHYSMEM_BITS 32 +#define SECTION_SIZE_BITS NODE_MEM_SIZE_BITS #endif diff --git a/trunk/arch/arm/include/asm/system.h b/trunk/arch/arm/include/asm/system.h index 7aad78420f18..514af792a598 100644 --- a/trunk/arch/arm/include/asm/system.h +++ b/trunk/arch/arm/include/asm/system.h @@ -43,6 +43,11 @@ #define CR_XP (1 << 23) /* Extended page tables */ #define CR_VE (1 << 24) /* Vectored interrupts */ +#define CPUID_ID 0 +#define CPUID_CACHETYPE 1 +#define CPUID_TCM 2 +#define CPUID_TLBTYPE 3 + /* * This is used to ensure the compiler did actually allocate the register we * asked it for some inline assembly sequences. Apparently we can't trust @@ -56,8 +61,36 @@ #ifndef __ASSEMBLY__ #include +#include #include +#ifdef CONFIG_CPU_CP15 +#define read_cpuid(reg) \ + ({ \ + unsigned int __val; \ + asm("mrc p15, 0, %0, c0, c0, " __stringify(reg) \ + : "=r" (__val) \ + : \ + : "cc"); \ + __val; \ + }) +#else +extern unsigned int processor_id; +#define read_cpuid(reg) (processor_id) +#endif + +/* + * The CPU ID never changes at run time, so we might as well tell the + * compiler that it's constant. Use this function to read the CPU ID + * rather than directly reading processor_id or read_cpuid() directly. + */ +static inline unsigned int read_cpuid_id(void) __attribute_const__; + +static inline unsigned int read_cpuid_id(void) +{ + return read_cpuid(CPUID_ID); +} + #define __exception __attribute__((section(".exception.text"))) struct thread_info; @@ -98,6 +131,31 @@ extern void cpu_init(void); void arm_machine_restart(char mode); extern void (*arm_pm_restart)(char str); +/* + * Intel's XScale3 core supports some v6 features (supersections, L2) + * but advertises itself as v5 as it does not support the v6 ISA. For + * this reason, we need a way to explicitly test for this type of CPU. + */ +#ifndef CONFIG_CPU_XSC3 +#define cpu_is_xsc3() 0 +#else +static inline int cpu_is_xsc3(void) +{ + extern unsigned int processor_id; + + if ((processor_id & 0xffffe000) == 0x69056000) + return 1; + + return 0; +} +#endif + +#if !defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_CPU_XSC3) +#define cpu_is_xscale() 0 +#else +#define cpu_is_xscale() 1 +#endif + #define UDBG_UNDEFINED (1 << 0) #define UDBG_SYSCALL (1 << 1) #define UDBG_BADABORT (1 << 2) diff --git a/trunk/arch/arm/include/asm/thread_info.h b/trunk/arch/arm/include/asm/thread_info.h index 68b9ec82a37f..e56fa48e4ae7 100644 --- a/trunk/arch/arm/include/asm/thread_info.h +++ b/trunk/arch/arm/include/asm/thread_info.h @@ -98,7 +98,7 @@ static inline struct thread_info *current_thread_info(void) } #define thread_saved_pc(tsk) \ - ((unsigned long)(task_thread_info(tsk)->cpu_context.pc)) + ((unsigned long)(pc_pointer(task_thread_info(tsk)->cpu_context.pc))) #define thread_saved_fp(tsk) \ ((unsigned long)(task_thread_info(tsk)->cpu_context.fp)) diff --git a/trunk/arch/arm/include/asm/uaccess.h b/trunk/arch/arm/include/asm/uaccess.h index e98ec60b3400..d0f51ff900b5 100644 --- a/trunk/arch/arm/include/asm/uaccess.h +++ b/trunk/arch/arm/include/asm/uaccess.h @@ -225,7 +225,7 @@ do { \ #define __get_user_asm_byte(x,addr,err) \ __asm__ __volatile__( \ - "1: ldrbt %1,[%2]\n" \ + "1: ldrbt %1,[%2],#0\n" \ "2:\n" \ " .section .fixup,\"ax\"\n" \ " .align 2\n" \ @@ -261,7 +261,7 @@ do { \ #define __get_user_asm_word(x,addr,err) \ __asm__ __volatile__( \ - "1: ldrt %1,[%2]\n" \ + "1: ldrt %1,[%2],#0\n" \ "2:\n" \ " .section .fixup,\"ax\"\n" \ " .align 2\n" \ @@ -306,7 +306,7 @@ do { \ #define __put_user_asm_byte(x,__pu_addr,err) \ __asm__ __volatile__( \ - "1: strbt %1,[%2]\n" \ + "1: strbt %1,[%2],#0\n" \ "2:\n" \ " .section .fixup,\"ax\"\n" \ " .align 2\n" \ @@ -339,7 +339,7 @@ do { \ #define __put_user_asm_word(x,__pu_addr,err) \ __asm__ __volatile__( \ - "1: strt %1,[%2]\n" \ + "1: strt %1,[%2],#0\n" \ "2:\n" \ " .section .fixup,\"ax\"\n" \ " .align 2\n" \ @@ -365,7 +365,7 @@ do { \ #define __put_user_asm_dword(x,__pu_addr,err) \ __asm__ __volatile__( \ "1: strt " __reg_oper1 ", [%1], #4\n" \ - "2: strt " __reg_oper0 ", [%1]\n" \ + "2: strt " __reg_oper0 ", [%1], #0\n" \ "3:\n" \ " .section .fixup,\"ax\"\n" \ " .align 2\n" \ diff --git a/trunk/arch/arm/include/asm/vga.h b/trunk/arch/arm/include/asm/vga.h index 250a4dd00630..6a3cd2a2f670 100644 --- a/trunk/arch/arm/include/asm/vga.h +++ b/trunk/arch/arm/include/asm/vga.h @@ -1,8 +1,8 @@ #ifndef ASMARM_VGA_H #define ASMARM_VGA_H -#include #include +#include #define VGA_MAP_MEM(x,s) (PCIMEM_BASE + (x)) diff --git a/trunk/arch/arm/kernel/armksyms.c b/trunk/arch/arm/kernel/armksyms.c index 2357b1cf1cf9..cc7b246e9652 100644 --- a/trunk/arch/arm/kernel/armksyms.c +++ b/trunk/arch/arm/kernel/armksyms.c @@ -13,11 +13,11 @@ #include #include #include -#include -#include #include +#include #include +#include #include /* diff --git a/trunk/arch/arm/kernel/bios32.c b/trunk/arch/arm/kernel/bios32.c index 17a59b6e521f..e5747547b44c 100644 --- a/trunk/arch/arm/kernel/bios32.c +++ b/trunk/arch/arm/kernel/bios32.c @@ -10,8 +10,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/kernel/crunch.c b/trunk/arch/arm/kernel/crunch.c index 99995c2b2312..3b6a1c293ee4 100644 --- a/trunk/arch/arm/kernel/crunch.c +++ b/trunk/arch/arm/kernel/crunch.c @@ -15,9 +15,9 @@ #include #include #include -#include #include #include +#include struct crunch_state *crunch_owner; diff --git a/trunk/arch/arm/kernel/debug.S b/trunk/arch/arm/kernel/debug.S index f53c58290543..9550ff0ddde4 100644 --- a/trunk/arch/arm/kernel/debug.S +++ b/trunk/arch/arm/kernel/debug.S @@ -89,12 +89,10 @@ ENTRY(printhex8) mov r1, #8 b printhex -ENDPROC(printhex8) ENTRY(printhex4) mov r1, #4 b printhex -ENDPROC(printhex4) ENTRY(printhex2) mov r1, #2 @@ -112,7 +110,6 @@ printhex: adr r2, hexbuf bne 1b mov r0, r2 b printascii -ENDPROC(printhex2) .ltorg @@ -130,13 +127,11 @@ ENTRY(printascii) teqne r1, #0 bne 1b mov pc, lr -ENDPROC(printascii) ENTRY(printch) addruart r3 mov r1, r0 mov r0, #0 b 1b -ENDPROC(printch) hexbuf: .space 16 diff --git a/trunk/arch/arm/kernel/dma-isa.c b/trunk/arch/arm/kernel/dma-isa.c index 4a3a50495c60..2f080a35a2d9 100644 --- a/trunk/arch/arm/kernel/dma-isa.c +++ b/trunk/arch/arm/kernel/dma-isa.c @@ -19,9 +19,10 @@ #include #include #include -#include #include +#include + #include #define ISA_DMA_MODE_READ 0x44 diff --git a/trunk/arch/arm/kernel/entry-armv.S b/trunk/arch/arm/kernel/entry-armv.S index 77b047475539..617e509d60df 100644 --- a/trunk/arch/arm/kernel/entry-armv.S +++ b/trunk/arch/arm/kernel/entry-armv.S @@ -76,17 +76,14 @@ __pabt_invalid: inv_entry BAD_PREFETCH b common_invalid -ENDPROC(__pabt_invalid) __dabt_invalid: inv_entry BAD_DATA b common_invalid -ENDPROC(__dabt_invalid) __irq_invalid: inv_entry BAD_IRQ b common_invalid -ENDPROC(__irq_invalid) __und_invalid: inv_entry BAD_UNDEFINSTR @@ -110,7 +107,6 @@ common_invalid: mov r0, sp b bad_mode -ENDPROC(__und_invalid) /* * SVC mode handlers @@ -196,7 +192,6 @@ __dabt_svc: ldr r0, [sp, #S_PSR] msr spsr_cxsf, r0 ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr -ENDPROC(__dabt_svc) .align 5 __irq_svc: @@ -228,7 +223,6 @@ __irq_svc: bleq trace_hardirqs_on #endif ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr -ENDPROC(__irq_svc) .ltorg @@ -278,7 +272,6 @@ __und_svc: ldr lr, [sp, #S_PSR] @ Get SVC cpsr msr spsr_cxsf, lr ldmia sp, {r0 - pc}^ @ Restore SVC registers -ENDPROC(__und_svc) .align 5 __pabt_svc: @@ -320,7 +313,6 @@ __pabt_svc: ldr r0, [sp, #S_PSR] msr spsr_cxsf, r0 ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr -ENDPROC(__pabt_svc) .align 5 .LCcralign: @@ -420,7 +412,6 @@ __dabt_usr: mov r2, sp adr lr, ret_from_exception b do_DataAbort -ENDPROC(__dabt_usr) .align 5 __irq_usr: @@ -450,7 +441,6 @@ __irq_usr: mov why, #0 b ret_to_user -ENDPROC(__irq_usr) .ltorg @@ -484,7 +474,6 @@ __und_usr: #else b __und_usr_unknown #endif -ENDPROC(__und_usr) @ @ fallthrough to call_fpe @@ -653,7 +642,6 @@ __und_usr_unknown: mov r0, sp adr lr, ret_from_exception b do_undefinstr -ENDPROC(__und_usr_unknown) .align 5 __pabt_usr: @@ -678,8 +666,6 @@ ENTRY(ret_from_exception) get_thread_info tsk mov why, #0 b ret_to_user -ENDPROC(__pabt_usr) -ENDPROC(ret_from_exception) /* * Register switch for ARMv3 and ARMv4 processors @@ -716,7 +702,6 @@ ENTRY(__switch_to) bl atomic_notifier_call_chain mov r0, r5 ldmia r4, {r4 - sl, fp, sp, pc} @ Load all regs saved previously -ENDPROC(__switch_to) __INIT @@ -1044,7 +1029,6 @@ vector_\name: mov r0, sp ldr lr, [pc, lr, lsl #2] movs pc, lr @ branch to handler in SVC mode -ENDPROC(vector_\name) .endm .globl __stubs_start diff --git a/trunk/arch/arm/kernel/entry-common.S b/trunk/arch/arm/kernel/entry-common.S index 3aa14dcc5bab..060d7e2e9f64 100644 --- a/trunk/arch/arm/kernel/entry-common.S +++ b/trunk/arch/arm/kernel/entry-common.S @@ -77,7 +77,6 @@ no_work_pending: mov r0, r0 add sp, sp, #S_FRAME_SIZE - S_PC movs pc, lr @ return & move spsr_svc into cpsr -ENDPROC(ret_to_user) /* * This is how we return from a fork. @@ -93,7 +92,7 @@ ENTRY(ret_from_fork) mov r0, #1 @ trace exit [IP = 1] bl syscall_trace b ret_slow_syscall -ENDPROC(ret_from_fork) + .equ NR_syscalls,0 #define CALL(x) .equ NR_syscalls,NR_syscalls+1 @@ -270,7 +269,6 @@ ENTRY(vector_swi) eor r0, scno, #__NR_SYSCALL_BASE @ put OS number back bcs arm_syscall b sys_ni_syscall @ not private func -ENDPROC(vector_swi) /* * This is the really slow path. We're going to be doing @@ -328,6 +326,7 @@ ENTRY(sys_call_table) */ @ r0 = syscall number @ r8 = syscall table + .type sys_syscall, #function sys_syscall: bic scno, r0, #__NR_OABI_SYSCALL_BASE cmp scno, #__NR_syscall - __NR_SYSCALL_BASE @@ -339,65 +338,53 @@ sys_syscall: movlo r3, r4 ldrlo pc, [tbl, scno, lsl #2] b sys_ni_syscall -ENDPROC(sys_syscall) sys_fork_wrapper: add r0, sp, #S_OFF b sys_fork -ENDPROC(sys_fork_wrapper) sys_vfork_wrapper: add r0, sp, #S_OFF b sys_vfork -ENDPROC(sys_vfork_wrapper) sys_execve_wrapper: add r3, sp, #S_OFF b sys_execve -ENDPROC(sys_execve_wrapper) sys_clone_wrapper: add ip, sp, #S_OFF str ip, [sp, #4] b sys_clone -ENDPROC(sys_clone_wrapper) sys_sigsuspend_wrapper: add r3, sp, #S_OFF b sys_sigsuspend -ENDPROC(sys_sigsuspend_wrapper) sys_rt_sigsuspend_wrapper: add r2, sp, #S_OFF b sys_rt_sigsuspend -ENDPROC(sys_rt_sigsuspend_wrapper) sys_sigreturn_wrapper: add r0, sp, #S_OFF b sys_sigreturn -ENDPROC(sys_sigreturn_wrapper) sys_rt_sigreturn_wrapper: add r0, sp, #S_OFF b sys_rt_sigreturn -ENDPROC(sys_rt_sigreturn_wrapper) sys_sigaltstack_wrapper: ldr r2, [sp, #S_OFF + S_SP] b do_sigaltstack -ENDPROC(sys_sigaltstack_wrapper) sys_statfs64_wrapper: teq r1, #88 moveq r1, #84 b sys_statfs64 -ENDPROC(sys_statfs64_wrapper) sys_fstatfs64_wrapper: teq r1, #88 moveq r1, #84 b sys_fstatfs64 -ENDPROC(sys_fstatfs64_wrapper) /* * Note: off_4k (r5) is always units of 4K. If we can't do the requested @@ -415,14 +402,11 @@ sys_mmap2: str r5, [sp, #4] b do_mmap2 #endif -ENDPROC(sys_mmap2) ENTRY(pabort_ifar) mrc p15, 0, r0, cr6, cr0, 2 ENTRY(pabort_noifar) mov pc, lr -ENDPROC(pabort_ifar) -ENDPROC(pabort_noifar) #ifdef CONFIG_OABI_COMPAT @@ -433,31 +417,26 @@ ENDPROC(pabort_noifar) sys_oabi_pread64: stmia sp, {r3, r4} b sys_pread64 -ENDPROC(sys_oabi_pread64) sys_oabi_pwrite64: stmia sp, {r3, r4} b sys_pwrite64 -ENDPROC(sys_oabi_pwrite64) sys_oabi_truncate64: mov r3, r2 mov r2, r1 b sys_truncate64 -ENDPROC(sys_oabi_truncate64) sys_oabi_ftruncate64: mov r3, r2 mov r2, r1 b sys_ftruncate64 -ENDPROC(sys_oabi_ftruncate64) sys_oabi_readahead: str r3, [sp] mov r3, r2 mov r2, r1 b sys_readahead -ENDPROC(sys_oabi_readahead) /* * Let's declare a second syscall table for old ABI binaries diff --git a/trunk/arch/arm/kernel/fiq.c b/trunk/arch/arm/kernel/fiq.c index 36f81d967979..e8e90346f11c 100644 --- a/trunk/arch/arm/kernel/fiq.c +++ b/trunk/arch/arm/kernel/fiq.c @@ -45,6 +45,7 @@ #include #include #include +#include static unsigned long no_fiq_insn; diff --git a/trunk/arch/arm/kernel/head-common.S b/trunk/arch/arm/kernel/head-common.S index bde52df1c668..1c3c6ea5f9e7 100644 --- a/trunk/arch/arm/kernel/head-common.S +++ b/trunk/arch/arm/kernel/head-common.S @@ -36,6 +36,7 @@ __switch_data: * r2 = atags pointer * r9 = processor ID */ + .type __mmap_switched, %function __mmap_switched: adr r3, __switch_data + 4 @@ -58,7 +59,6 @@ __mmap_switched: bic r4, r0, #CR_A @ Clear 'A' bit stmia r7, {r0, r4} @ Save control register values b start_kernel -ENDPROC(__mmap_switched) /* * Exception handling. Something went wrong and we can't proceed. We @@ -69,6 +69,8 @@ ENDPROC(__mmap_switched) * and hope for the best (useful if bootloader fails to pass a proper * machine ID for example). */ + + .type __error_p, %function __error_p: #ifdef CONFIG_DEBUG_LL adr r0, str_p1 @@ -82,8 +84,8 @@ str_p1: .asciz "\nError: unrecognized/unsupported processor variant (0x" str_p2: .asciz ").\n" .align #endif -ENDPROC(__error_p) + .type __error_a, %function __error_a: #ifdef CONFIG_DEBUG_LL mov r4, r1 @ preserve machine ID @@ -113,14 +115,13 @@ __error_a: adr r0, str_a3 bl printascii b __error -ENDPROC(__error_a) - str_a1: .asciz "\nError: unrecognized/unsupported machine ID (r1 = 0x" str_a2: .asciz ").\n\nAvailable machine support:\n\nID (hex)\tNAME\n" str_a3: .asciz "\nPlease check your kernel config and/or bootloader.\n" .align #endif + .type __error, %function __error: #ifdef CONFIG_ARCH_RPC /* @@ -137,7 +138,6 @@ __error: #endif 1: mov r0, r0 b 1b -ENDPROC(__error) /* @@ -153,6 +153,7 @@ ENDPROC(__error) * r5 = proc_info pointer in physical address space * r9 = cpuid (preserved) */ + .type __lookup_processor_type, %function __lookup_processor_type: adr r3, 3f ldmda r3, {r5 - r7} @@ -168,7 +169,6 @@ __lookup_processor_type: blo 1b mov r5, #0 @ unknown processor 2: mov pc, lr -ENDPROC(__lookup_processor_type) /* * This provides a C-API version of the above function. @@ -179,7 +179,6 @@ ENTRY(lookup_processor_type) bl __lookup_processor_type mov r0, r5 ldmfd sp!, {r4 - r7, r9, pc} -ENDPROC(lookup_processor_type) /* * Look in and arch/arm/kernel/arch.[ch] for @@ -202,6 +201,7 @@ ENDPROC(lookup_processor_type) * r3, r4, r6 corrupted * r5 = mach_info pointer in physical address space */ + .type __lookup_machine_type, %function __lookup_machine_type: adr r3, 3b ldmia r3, {r4, r5, r6} @@ -216,7 +216,6 @@ __lookup_machine_type: blo 1b mov r5, #0 @ unknown machine 2: mov pc, lr -ENDPROC(__lookup_machine_type) /* * This provides a C-API version of the above function. @@ -227,7 +226,6 @@ ENTRY(lookup_machine_type) bl __lookup_machine_type mov r0, r5 ldmfd sp!, {r4 - r6, pc} -ENDPROC(lookup_machine_type) /* Determine validity of the r2 atags pointer. The heuristic requires * that the pointer be aligned, in the first 16k of physical RAM and @@ -241,6 +239,8 @@ ENDPROC(lookup_machine_type) * r2 either valid atags pointer, or zero * r5, r6 corrupted */ + + .type __vet_atags, %function __vet_atags: tst r2, #0x3 @ aligned? bne 1f @@ -257,4 +257,3 @@ __vet_atags: 1: mov r2, #0 mov pc, lr -ENDPROC(__vet_atags) diff --git a/trunk/arch/arm/kernel/head-nommu.S b/trunk/arch/arm/kernel/head-nommu.S index cc87e1765ed2..27329bd32037 100644 --- a/trunk/arch/arm/kernel/head-nommu.S +++ b/trunk/arch/arm/kernel/head-nommu.S @@ -33,6 +33,7 @@ * */ .section ".text.head", "ax" + .type stext, %function ENTRY(stext) msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode @ and irqs disabled @@ -52,11 +53,11 @@ ENTRY(stext) @ the initialization is done adr lr, __after_proc_init @ return (PIC) address add pc, r10, #PROCINFO_INITFUNC -ENDPROC(stext) /* * Set the Control Register and Read the process ID. */ + .type __after_proc_init, %function __after_proc_init: #ifdef CONFIG_CPU_CP15 mrc p15, 0, r0, c1, c0, 0 @ read control reg @@ -84,7 +85,6 @@ __after_proc_init: mov pc, r13 @ clear the BSS and jump @ to start_kernel -ENDPROC(__after_proc_init) .ltorg #include "head-common.S" diff --git a/trunk/arch/arm/kernel/head.S b/trunk/arch/arm/kernel/head.S index 21e17dc94cb5..bff4c6e90dd5 100644 --- a/trunk/arch/arm/kernel/head.S +++ b/trunk/arch/arm/kernel/head.S @@ -75,6 +75,7 @@ * circumstances, zImage) is for. */ .section ".text.head", "ax" + .type stext, %function ENTRY(stext) msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode @ and irqs disabled @@ -99,9 +100,9 @@ ENTRY(stext) @ mmu has been enabled adr lr, __enable_mmu @ return (PIC) address add pc, r10, #PROCINFO_INITFUNC -ENDPROC(stext) #if defined(CONFIG_SMP) + .type secondary_startup, #function ENTRY(secondary_startup) /* * Common entry point for secondary CPUs. @@ -127,7 +128,6 @@ ENTRY(secondary_startup) adr lr, __enable_mmu @ return address add pc, r10, #PROCINFO_INITFUNC @ initialise processor @ (return control reg) -ENDPROC(secondary_startup) /* * r6 = &secondary_data @@ -136,7 +136,6 @@ ENTRY(__secondary_switched) ldr sp, [r7, #4] @ get secondary_data.stack mov fp, #0 b secondary_start_kernel -ENDPROC(__secondary_switched) .type __secondary_data, %object __secondary_data: @@ -152,6 +151,7 @@ __secondary_data: * this is just loading the page table pointer and domain access * registers. */ + .type __enable_mmu, %function __enable_mmu: #ifdef CONFIG_ALIGNMENT_TRAP orr r0, r0, #CR_A @@ -174,7 +174,6 @@ __enable_mmu: mcr p15, 0, r5, c3, c0, 0 @ load domain access register mcr p15, 0, r4, c2, c0, 0 @ load page table pointer b __turn_mmu_on -ENDPROC(__enable_mmu) /* * Enable the MMU. This completely changes the structure of the visible @@ -188,6 +187,7 @@ ENDPROC(__enable_mmu) * other registers depend on the function called upon completion */ .align 5 + .type __turn_mmu_on, %function __turn_mmu_on: mov r0, r0 mcr p15, 0, r0, c1, c0, 0 @ write control reg @@ -195,7 +195,7 @@ __turn_mmu_on: mov r3, r3 mov r3, r3 mov pc, r13 -ENDPROC(__turn_mmu_on) + /* @@ -211,6 +211,7 @@ ENDPROC(__turn_mmu_on) * r0, r3, r6, r7 corrupted * r4 = physical page table address */ + .type __create_page_tables, %function __create_page_tables: pgtbl r4 @ page table address @@ -324,7 +325,6 @@ __create_page_tables: #endif #endif mov pc, lr -ENDPROC(__create_page_tables) .ltorg #include "head-common.S" diff --git a/trunk/arch/arm/kernel/init_task.c b/trunk/arch/arm/kernel/init_task.c index 0bbf80625395..8b8c9d38a761 100644 --- a/trunk/arch/arm/kernel/init_task.c +++ b/trunk/arch/arm/kernel/init_task.c @@ -8,8 +8,8 @@ #include #include #include -#include +#include #include static struct fs_struct init_fs = INIT_FS; diff --git a/trunk/arch/arm/kernel/io.c b/trunk/arch/arm/kernel/io.c index f4470307edb8..1f6822dfae74 100644 --- a/trunk/arch/arm/kernel/io.c +++ b/trunk/arch/arm/kernel/io.c @@ -1,6 +1,7 @@ #include #include -#include + +#include /* * Copy data from IO memory space to "real" memory space. diff --git a/trunk/arch/arm/kernel/kprobes-decode.c b/trunk/arch/arm/kernel/kprobes-decode.c index da1f94906a4e..b4565bb133c1 100644 --- a/trunk/arch/arm/kernel/kprobes-decode.c +++ b/trunk/arch/arm/kernel/kprobes-decode.c @@ -488,7 +488,7 @@ static void __kprobes simulate_ldm1stm1(struct kprobe *p, struct pt_regs *regs) if (!ubit) addr -= reg_count; - addr += (!pbit == !ubit); + addr += (!pbit ^ !ubit); reg_bit_vector = insn & 0xffff; while (reg_bit_vector) { @@ -503,7 +503,7 @@ static void __kprobes simulate_ldm1stm1(struct kprobe *p, struct pt_regs *regs) if (wbit) { if (!ubit) addr -= reg_count; - addr -= (!pbit == !ubit); + addr -= (!pbit ^ !ubit); regs->uregs[rn] = (long)addr; } } diff --git a/trunk/arch/arm/kernel/kprobes.c b/trunk/arch/arm/kernel/kprobes.c index 3f9abe0e9aff..d28513f14d05 100644 --- a/trunk/arch/arm/kernel/kprobes.c +++ b/trunk/arch/arm/kernel/kprobes.c @@ -200,12 +200,9 @@ void __kprobes kprobe_handler(struct pt_regs *regs) } } -static int __kprobes kprobe_trap_handler(struct pt_regs *regs, unsigned int instr) +int kprobe_trap_handler(struct pt_regs *regs, unsigned int instr) { - unsigned long flags; - local_irq_save(flags); kprobe_handler(regs); - local_irq_restore(flags); return 0; } diff --git a/trunk/arch/arm/kernel/machine_kexec.c b/trunk/arch/arm/kernel/machine_kexec.c index 440dc62cdc3a..fae5beb3c3d6 100644 --- a/trunk/arch/arm/kernel/machine_kexec.c +++ b/trunk/arch/arm/kernel/machine_kexec.c @@ -6,10 +6,10 @@ #include #include #include -#include #include #include #include +#include #include #include diff --git a/trunk/arch/arm/kernel/process.c b/trunk/arch/arm/kernel/process.c index d3ea6fa89521..3fd882337064 100644 --- a/trunk/arch/arm/kernel/process.c +++ b/trunk/arch/arm/kernel/process.c @@ -28,12 +28,12 @@ #include #include #include -#include #include #include #include #include +#include #include static const char *processor_modes[] = { @@ -267,6 +267,35 @@ void show_regs(struct pt_regs * regs) __backtrace(); } +void show_fpregs(struct user_fp *regs) +{ + int i; + + for (i = 0; i < 8; i++) { + unsigned long *p; + char type; + + p = (unsigned long *)(regs->fpregs + i); + + switch (regs->ftype[i]) { + case 1: type = 'f'; break; + case 2: type = 'd'; break; + case 3: type = 'e'; break; + default: type = '?'; break; + } + if (regs->init_flag) + type = '?'; + + printk(" f%d(%c): %08lx %08lx %08lx%c", + i, type, p[0], p[1], p[2], i & 1 ? '\n' : ' '); + } + + + printk("FPSR: %08lx FPCR: %08lx\n", + (unsigned long)regs->fpsr, + (unsigned long)regs->fpcr); +} + /* * Free current thread data structures etc.. */ @@ -385,7 +414,7 @@ unsigned long get_wchan(struct task_struct *p) do { if (fp < stack_start || fp > stack_end) return 0; - lr = ((unsigned long *)fp)[-1]; + lr = pc_pointer (((unsigned long *)fp)[-1]); if (!in_sched_functions(lr)) return lr; fp = *(unsigned long *) (fp - 12); diff --git a/trunk/arch/arm/kernel/ptrace.c b/trunk/arch/arm/kernel/ptrace.c index df653ea59250..4b05dc5c1023 100644 --- a/trunk/arch/arm/kernel/ptrace.c +++ b/trunk/arch/arm/kernel/ptrace.c @@ -18,8 +18,8 @@ #include #include #include -#include +#include #include #include #include @@ -126,7 +126,7 @@ ptrace_getrn(struct task_struct *child, unsigned long insn) val = get_user_reg(child, reg); if (reg == 15) - val += 8; + val = pc_pointer(val + 8); return val; } @@ -278,7 +278,8 @@ get_branch_address(struct task_struct *child, unsigned long pc, unsigned long in else base -= aluop2; } - read_u32(child, base, &alt); + if (read_u32(child, base, &alt) == 0) + alt = pc_pointer(alt); } break; @@ -304,7 +305,8 @@ get_branch_address(struct task_struct *child, unsigned long pc, unsigned long in base = ptrace_getrn(child, insn); - read_u32(child, base + nr_regs, &alt); + if (read_u32(child, base + nr_regs, &alt) == 0) + alt = pc_pointer(alt); break; } break; diff --git a/trunk/arch/arm/kernel/setup.c b/trunk/arch/arm/kernel/setup.c index 1f1eecca7f55..2ca7038b67a7 100644 --- a/trunk/arch/arm/kernel/setup.c +++ b/trunk/arch/arm/kernel/setup.c @@ -26,13 +26,11 @@ #include #include -#include #include #include #include #include #include -#include #include #include @@ -61,14 +59,13 @@ __setup("fpe=", fpe_setup); extern void paging_init(struct meminfo *, struct machine_desc *desc); extern void reboot_setup(char *str); -extern void _text, _etext, __data_start, _edata, _end; +extern int root_mountflags; +extern void _stext, _text, _etext, __data_start, _edata, _end; unsigned int processor_id; EXPORT_SYMBOL(processor_id); unsigned int __machine_arch_type; EXPORT_SYMBOL(__machine_arch_type); -unsigned int cacheid; -EXPORT_SYMBOL(cacheid); unsigned int __atags_pointer __initdata; @@ -84,6 +81,8 @@ EXPORT_SYMBOL(system_serial_high); unsigned int elf_hwcap; EXPORT_SYMBOL(elf_hwcap); +unsigned long __initdata vmalloc_reserve = 128 << 20; + #ifdef MULTI_CPU struct processor processor; @@ -112,6 +111,9 @@ static struct stack stacks[NR_CPUS]; char elf_platform[ELF_PLATFORM_SIZE]; EXPORT_SYMBOL(elf_platform); +unsigned long phys_initrd_start __initdata = 0; +unsigned long phys_initrd_size __initdata = 0; + static struct meminfo meminfo __initdata = { 0, }; static const char *cpu_name; static const char *machine_name; @@ -176,6 +178,63 @@ static struct resource io_res[] = { #define lp1 io_res[1] #define lp2 io_res[2] +static const char *cache_types[16] = { + "write-through", + "write-back", + "write-back", + "undefined 3", + "undefined 4", + "undefined 5", + "write-back", + "write-back", + "undefined 8", + "undefined 9", + "undefined 10", + "undefined 11", + "undefined 12", + "undefined 13", + "write-back", + "undefined 15", +}; + +static const char *cache_clean[16] = { + "not required", + "read-block", + "cp15 c7 ops", + "undefined 3", + "undefined 4", + "undefined 5", + "cp15 c7 ops", + "cp15 c7 ops", + "undefined 8", + "undefined 9", + "undefined 10", + "undefined 11", + "undefined 12", + "undefined 13", + "cp15 c7 ops", + "undefined 15", +}; + +static const char *cache_lockdown[16] = { + "not supported", + "not supported", + "not supported", + "undefined 3", + "undefined 4", + "undefined 5", + "format A", + "format B", + "undefined 8", + "undefined 9", + "undefined 10", + "undefined 11", + "undefined 12", + "undefined 13", + "format C", + "undefined 15", +}; + static const char *proc_arch[] = { "undefined/unknown", "3", @@ -196,19 +255,61 @@ static const char *proc_arch[] = { "?(17)", }; +#define CACHE_TYPE(x) (((x) >> 25) & 15) +#define CACHE_S(x) ((x) & (1 << 24)) +#define CACHE_DSIZE(x) (((x) >> 12) & 4095) /* only if S=1 */ +#define CACHE_ISIZE(x) ((x) & 4095) + +#define CACHE_SIZE(y) (((y) >> 6) & 7) +#define CACHE_ASSOC(y) (((y) >> 3) & 7) +#define CACHE_M(y) ((y) & (1 << 2)) +#define CACHE_LINE(y) ((y) & 3) + +static inline void dump_cache(const char *prefix, int cpu, unsigned int cache) +{ + unsigned int mult = 2 + (CACHE_M(cache) ? 1 : 0); + + printk("CPU%u: %s: %d bytes, associativity %d, %d byte lines, %d sets\n", + cpu, prefix, + mult << (8 + CACHE_SIZE(cache)), + (mult << CACHE_ASSOC(cache)) >> 1, + 8 << CACHE_LINE(cache), + 1 << (6 + CACHE_SIZE(cache) - CACHE_ASSOC(cache) - + CACHE_LINE(cache))); +} + +static void __init dump_cpu_info(int cpu) +{ + unsigned int info = read_cpuid(CPUID_CACHETYPE); + + if (info != processor_id) { + printk("CPU%u: D %s %s cache\n", cpu, cache_is_vivt() ? "VIVT" : "VIPT", + cache_types[CACHE_TYPE(info)]); + if (CACHE_S(info)) { + dump_cache("I cache", cpu, CACHE_ISIZE(info)); + dump_cache("D cache", cpu, CACHE_DSIZE(info)); + } else { + dump_cache("cache", cpu, CACHE_ISIZE(info)); + } + } + + if (arch_is_coherent()) + printk("Cache coherency enabled\n"); +} + int cpu_architecture(void) { int cpu_arch; - if ((read_cpuid_id() & 0x0008f000) == 0) { + if ((processor_id & 0x0008f000) == 0) { cpu_arch = CPU_ARCH_UNKNOWN; - } else if ((read_cpuid_id() & 0x0008f000) == 0x00007000) { - cpu_arch = (read_cpuid_id() & (1 << 23)) ? CPU_ARCH_ARMv4T : CPU_ARCH_ARMv3; - } else if ((read_cpuid_id() & 0x00080000) == 0x00000000) { - cpu_arch = (read_cpuid_id() >> 16) & 7; + } else if ((processor_id & 0x0008f000) == 0x00007000) { + cpu_arch = (processor_id & (1 << 23)) ? CPU_ARCH_ARMv4T : CPU_ARCH_ARMv3; + } else if ((processor_id & 0x00080000) == 0x00000000) { + cpu_arch = (processor_id >> 16) & 7; if (cpu_arch) cpu_arch += CPU_ARCH_ARMv3; - } else if ((read_cpuid_id() & 0x000f0000) == 0x000f0000) { + } else if ((processor_id & 0x000f0000) == 0x000f0000) { unsigned int mmfr0; /* Revised CPUID format. Read the Memory Model Feature @@ -229,34 +330,6 @@ int cpu_architecture(void) return cpu_arch; } -static void __init cacheid_init(void) -{ - unsigned int cachetype = read_cpuid_cachetype(); - unsigned int arch = cpu_architecture(); - - if (arch >= CPU_ARCH_ARMv7) { - cacheid = CACHEID_VIPT_NONALIASING; - if ((cachetype & (3 << 14)) == 1 << 14) - cacheid |= CACHEID_ASID_TAGGED; - } else if (arch >= CPU_ARCH_ARMv6) { - if (cachetype & (1 << 23)) - cacheid = CACHEID_VIPT_ALIASING; - else - cacheid = CACHEID_VIPT_NONALIASING; - } else { - cacheid = CACHEID_VIVT; - } - - printk("CPU: %s data cache, %s instruction cache\n", - cache_is_vivt() ? "VIVT" : - cache_is_vipt_aliasing() ? "VIPT aliasing" : - cache_is_vipt_nonaliasing() ? "VIPT nonaliasing" : "unknown", - cache_is_vivt() ? "VIVT" : - icache_is_vivt_asid_tagged() ? "VIVT ASID tagged" : - cache_is_vipt_aliasing() ? "VIPT aliasing" : - cache_is_vipt_nonaliasing() ? "VIPT nonaliasing" : "unknown"); -} - /* * These functions re-use the assembly code in head.S, which * already provide the required functionality. @@ -273,10 +346,10 @@ static void __init setup_processor(void) * types. The linker builds this table for us from the * entries in arch/arm/mm/proc-*.S */ - list = lookup_processor_type(read_cpuid_id()); + list = lookup_processor_type(processor_id); if (!list) { printk("CPU configuration botched (ID %08x), unable " - "to continue.\n", read_cpuid_id()); + "to continue.\n", processor_id); while (1); } @@ -296,7 +369,7 @@ static void __init setup_processor(void) #endif printk("CPU: %s [%08x] revision %d (ARMv%s), cr=%08lx\n", - cpu_name, read_cpuid_id(), read_cpuid_id() & 15, + cpu_name, processor_id, (int)processor_id & 15, proc_arch[cpu_architecture()], cr_alignment); sprintf(init_utsname()->machine, "%s%c", list->arch_name, ENDIANNESS); @@ -306,14 +379,14 @@ static void __init setup_processor(void) elf_hwcap &= ~HWCAP_THUMB; #endif - cacheid_init(); cpu_proc_init(); } /* * cpu_init - initialise one CPU. * - * cpu_init sets up the per-CPU stacks. + * cpu_init dumps the cache information, initialises SMP specific + * information, and sets up the per-CPU stacks. */ void cpu_init(void) { @@ -325,6 +398,9 @@ void cpu_init(void) BUG(); } + if (system_state == SYSTEM_BOOTING) + dump_cpu_info(cpu); + /* * setup stacks for re-entrant exception handlers */ @@ -367,6 +443,20 @@ static struct machine_desc * __init setup_machine(unsigned int nr) return list; } +static void __init early_initrd(char **p) +{ + unsigned long start, size; + + start = memparse(*p, p); + if (**p == ',') { + size = memparse((*p) + 1, p); + + phys_initrd_start = start; + phys_initrd_size = size; + } +} +__early_param("initrd=", early_initrd); + static void __init arm_add_memory(unsigned long start, unsigned long size) { struct membank *bank; @@ -412,6 +502,17 @@ static void __init early_mem(char **p) } __early_param("mem=", early_mem); +/* + * vmalloc=size forces the vmalloc area to be exactly 'size' + * bytes. This can be used to increase (or decrease) the vmalloc + * area - the default is 128m. + */ +static void __init early_vmalloc(char **arg) +{ + vmalloc_reserve = memparse(*arg, arg); +} +__early_param("vmalloc=", early_vmalloc); + /* * Initial parsing of the command line. */ @@ -426,12 +527,12 @@ static void __init parse_cmdline(char **cmdline_p, char *from) struct early_params *p; for (p = &__early_begin; p < &__early_end; p++) { - int arglen = strlen(p->arg); + int len = strlen(p->arg); - if (memcmp(from, p->arg, arglen) == 0) { + if (memcmp(from, p->arg, len) == 0) { if (to != command_line) to -= 1; - from += arglen; + from += len; p->fn(&from); while (*from != ' ' && *from != '\0') @@ -478,13 +579,18 @@ request_standard_resources(struct meminfo *mi, struct machine_desc *mdesc) kernel_data.end = virt_to_phys(&_end - 1); for (i = 0; i < mi->nr_banks; i++) { + unsigned long virt_start, virt_end; + if (mi->bank[i].size == 0) continue; + virt_start = __phys_to_virt(mi->bank[i].start); + virt_end = virt_start + mi->bank[i].size - 1; + res = alloc_bootmem_low(sizeof(*res)); res->name = "System RAM"; - res->start = mi->bank[i].start; - res->end = mi->bank[i].start + mi->bank[i].size - 1; + res->start = __virt_to_phys(virt_start); + res->end = __virt_to_phys(virt_end); res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; request_resource(&iomem_resource, res); @@ -588,6 +694,26 @@ static int __init parse_tag_ramdisk(const struct tag *tag) __tagtable(ATAG_RAMDISK, parse_tag_ramdisk); +static int __init parse_tag_initrd(const struct tag *tag) +{ + printk(KERN_WARNING "ATAG_INITRD is deprecated; " + "please update your bootloader.\n"); + phys_initrd_start = __virt_to_phys(tag->u.initrd.start); + phys_initrd_size = tag->u.initrd.size; + return 0; +} + +__tagtable(ATAG_INITRD, parse_tag_initrd); + +static int __init parse_tag_initrd2(const struct tag *tag) +{ + phys_initrd_start = tag->u.initrd.start; + phys_initrd_size = tag->u.initrd.size; + return 0; +} + +__tagtable(ATAG_INITRD2, parse_tag_initrd2); + static int __init parse_tag_serialnr(const struct tag *tag) { system_serial_low = tag->u.serialnr.low; @@ -775,12 +901,28 @@ static const char *hwcap_str[] = { NULL }; +static void +c_show_cache(struct seq_file *m, const char *type, unsigned int cache) +{ + unsigned int mult = 2 + (CACHE_M(cache) ? 1 : 0); + + seq_printf(m, "%s size\t\t: %d\n" + "%s assoc\t\t: %d\n" + "%s line length\t: %d\n" + "%s sets\t\t: %d\n", + type, mult << (8 + CACHE_SIZE(cache)), + type, (mult << CACHE_ASSOC(cache)) >> 1, + type, 8 << CACHE_LINE(cache), + type, 1 << (6 + CACHE_SIZE(cache) - CACHE_ASSOC(cache) - + CACHE_LINE(cache))); +} + static int c_show(struct seq_file *m, void *v) { int i; seq_printf(m, "Processor\t: %s rev %d (%s)\n", - cpu_name, read_cpuid_id() & 15, elf_platform); + cpu_name, (int)processor_id & 15, elf_platform); #if defined(CONFIG_SMP) for_each_online_cpu(i) { @@ -807,26 +949,47 @@ static int c_show(struct seq_file *m, void *v) if (elf_hwcap & (1 << i)) seq_printf(m, "%s ", hwcap_str[i]); - seq_printf(m, "\nCPU implementer\t: 0x%02x\n", read_cpuid_id() >> 24); + seq_printf(m, "\nCPU implementer\t: 0x%02x\n", processor_id >> 24); seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]); - if ((read_cpuid_id() & 0x0008f000) == 0x00000000) { + if ((processor_id & 0x0008f000) == 0x00000000) { /* pre-ARM7 */ - seq_printf(m, "CPU part\t: %07x\n", read_cpuid_id() >> 4); + seq_printf(m, "CPU part\t: %07x\n", processor_id >> 4); } else { - if ((read_cpuid_id() & 0x0008f000) == 0x00007000) { + if ((processor_id & 0x0008f000) == 0x00007000) { /* ARM7 */ seq_printf(m, "CPU variant\t: 0x%02x\n", - (read_cpuid_id() >> 16) & 127); + (processor_id >> 16) & 127); } else { /* post-ARM7 */ seq_printf(m, "CPU variant\t: 0x%x\n", - (read_cpuid_id() >> 20) & 15); + (processor_id >> 20) & 15); } seq_printf(m, "CPU part\t: 0x%03x\n", - (read_cpuid_id() >> 4) & 0xfff); + (processor_id >> 4) & 0xfff); + } + seq_printf(m, "CPU revision\t: %d\n", processor_id & 15); + + { + unsigned int cache_info = read_cpuid(CPUID_CACHETYPE); + if (cache_info != processor_id) { + seq_printf(m, "Cache type\t: %s\n" + "Cache clean\t: %s\n" + "Cache lockdown\t: %s\n" + "Cache format\t: %s\n", + cache_types[CACHE_TYPE(cache_info)], + cache_clean[CACHE_TYPE(cache_info)], + cache_lockdown[CACHE_TYPE(cache_info)], + CACHE_S(cache_info) ? "Harvard" : "Unified"); + + if (CACHE_S(cache_info)) { + c_show_cache(m, "I", CACHE_ISIZE(cache_info)); + c_show_cache(m, "D", CACHE_DSIZE(cache_info)); + } else { + c_show_cache(m, "Cache", CACHE_ISIZE(cache_info)); + } + } } - seq_printf(m, "CPU revision\t: %d\n", read_cpuid_id() & 15); seq_puts(m, "\n"); diff --git a/trunk/arch/arm/kernel/signal.c b/trunk/arch/arm/kernel/signal.c index 80b8b5c7e07a..ef2f86a5e78a 100644 --- a/trunk/arch/arm/kernel/signal.c +++ b/trunk/arch/arm/kernel/signal.c @@ -11,11 +11,11 @@ #include #include #include -#include #include #include #include +#include #include #include "ptrace.h" diff --git a/trunk/arch/arm/kernel/sys_arm.c b/trunk/arch/arm/kernel/sys_arm.c index b3ec641b5cf8..0128687ba0f7 100644 --- a/trunk/arch/arm/kernel/sys_arm.c +++ b/trunk/arch/arm/kernel/sys_arm.c @@ -27,7 +27,8 @@ #include #include #include -#include + +#include extern unsigned long do_mremap(unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, diff --git a/trunk/arch/arm/kernel/sys_oabi-compat.c b/trunk/arch/arm/kernel/sys_oabi-compat.c index 42623db7f870..96ab5f52949c 100644 --- a/trunk/arch/arm/kernel/sys_oabi-compat.c +++ b/trunk/arch/arm/kernel/sys_oabi-compat.c @@ -82,7 +82,7 @@ #include #include #include -#include +#include struct oldabi_stat64 { unsigned long long st_dev; diff --git a/trunk/arch/arm/kernel/time.c b/trunk/arch/arm/kernel/time.c index c68b44aa88d2..368d171754cf 100644 --- a/trunk/arch/arm/kernel/time.c +++ b/trunk/arch/arm/kernel/time.c @@ -59,7 +59,7 @@ unsigned long profile_pc(struct pt_regs *regs) if (in_lock_functions(pc)) { fp = regs->ARM_fp; - pc = ((unsigned long *)fp)[-1]; + pc = pc_pointer(((unsigned long *)fp)[-1]); } return pc; diff --git a/trunk/arch/arm/kernel/traps.c b/trunk/arch/arm/kernel/traps.c index 57e6874d0b80..872f1f8fbb57 100644 --- a/trunk/arch/arm/kernel/traps.c +++ b/trunk/arch/arm/kernel/traps.c @@ -19,13 +19,15 @@ #include #include #include -#include +#include #include #include #include +#include #include #include +#include #include "ptrace.h" #include "signal.h" @@ -67,8 +69,7 @@ void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long */ static int verify_stack(unsigned long sp) { - if (sp < PAGE_OFFSET || - (sp > (unsigned long)high_memory && high_memory != NULL)) + if (sp < PAGE_OFFSET || (sp > (unsigned long)high_memory && high_memory != 0)) return -EFAULT; return 0; @@ -327,6 +328,17 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) get_user(instr, (u32 __user *)pc); } +#ifdef CONFIG_KPROBES + /* + * It is possible to have recursive kprobes, so we can't call + * the kprobe trap handler with the undef_lock held. + */ + if (instr == KPROBE_BREAKPOINT_INSTRUCTION && !user_mode(regs)) { + kprobe_trap_handler(regs, instr); + return; + } +#endif + if (call_undef_hook(regs, instr) == 0) return; diff --git a/trunk/arch/arm/kernel/xscale-cp0.c b/trunk/arch/arm/kernel/xscale-cp0.c index 17127db906fa..180000bfdc8f 100644 --- a/trunk/arch/arm/kernel/xscale-cp0.c +++ b/trunk/arch/arm/kernel/xscale-cp0.c @@ -14,8 +14,8 @@ #include #include #include -#include #include +#include static inline void dsp_save_state(u32 *state) { diff --git a/trunk/arch/arm/lib/ashldi3.S b/trunk/arch/arm/lib/ashldi3.S index 1154d924080b..55e57a1c2e6d 100644 --- a/trunk/arch/arm/lib/ashldi3.S +++ b/trunk/arch/arm/lib/ashldi3.S @@ -47,5 +47,3 @@ ENTRY(__aeabi_llsl) mov al, al, lsl r2 mov pc, lr -ENDPROC(__ashldi3) -ENDPROC(__aeabi_llsl) diff --git a/trunk/arch/arm/lib/ashrdi3.S b/trunk/arch/arm/lib/ashrdi3.S index 9f8b35572f8c..0b31398f89b2 100644 --- a/trunk/arch/arm/lib/ashrdi3.S +++ b/trunk/arch/arm/lib/ashrdi3.S @@ -47,5 +47,3 @@ ENTRY(__aeabi_lasr) mov ah, ah, asr r2 mov pc, lr -ENDPROC(__ashrdi3) -ENDPROC(__aeabi_lasr) diff --git a/trunk/arch/arm/lib/backtrace.S b/trunk/arch/arm/lib/backtrace.S index b0951d0e8b2c..84dc890d2bf3 100644 --- a/trunk/arch/arm/lib/backtrace.S +++ b/trunk/arch/arm/lib/backtrace.S @@ -30,8 +30,6 @@ ENTRY(c_backtrace) #if !defined(CONFIG_FRAME_POINTER) || !defined(CONFIG_PRINTK) mov pc, lr -ENDPROC(__backtrace) -ENDPROC(c_backtrace) #else stmfd sp!, {r4 - r8, lr} @ Save an extra register so we have a location... movs frame, r0 @ if frame pointer is zero @@ -105,8 +103,6 @@ for_each_frame: tst frame, mask @ Check for address exceptions mov r1, frame bl printk no_frame: ldmfd sp!, {r4 - r8, pc} -ENDPROC(__backtrace) -ENDPROC(c_backtrace) .section __ex_table,"a" .align 3 diff --git a/trunk/arch/arm/lib/changebit.S b/trunk/arch/arm/lib/changebit.S index 80f3115cbee2..389567c24090 100644 --- a/trunk/arch/arm/lib/changebit.S +++ b/trunk/arch/arm/lib/changebit.S @@ -19,5 +19,3 @@ ENTRY(_change_bit_be) eor r0, r0, #0x18 @ big endian byte ordering ENTRY(_change_bit_le) bitop eor -ENDPROC(_change_bit_be) -ENDPROC(_change_bit_le) diff --git a/trunk/arch/arm/lib/clear_user.S b/trunk/arch/arm/lib/clear_user.S index 4d6bc71231f3..ecb28dcdaf7b 100644 --- a/trunk/arch/arm/lib/clear_user.S +++ b/trunk/arch/arm/lib/clear_user.S @@ -41,10 +41,9 @@ USER( strplt r2, [r0], #4) USER( strnebt r2, [r0], #1) USER( strnebt r2, [r0], #1) tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1 -USER( strnebt r2, [r0]) +USER( strnebt r2, [r0], #1) mov r0, #0 ldmfd sp!, {r1, pc} -ENDPROC(__clear_user) .section .fixup,"ax" .align 0 diff --git a/trunk/arch/arm/lib/clearbit.S b/trunk/arch/arm/lib/clearbit.S index 1a63e43a1df0..347516533025 100644 --- a/trunk/arch/arm/lib/clearbit.S +++ b/trunk/arch/arm/lib/clearbit.S @@ -20,5 +20,3 @@ ENTRY(_clear_bit_be) eor r0, r0, #0x18 @ big endian byte ordering ENTRY(_clear_bit_le) bitop bic -ENDPROC(_clear_bit_be) -ENDPROC(_clear_bit_le) diff --git a/trunk/arch/arm/lib/copy_from_user.S b/trunk/arch/arm/lib/copy_from_user.S index 56799a165cc4..6b7363ce749c 100644 --- a/trunk/arch/arm/lib/copy_from_user.S +++ b/trunk/arch/arm/lib/copy_from_user.S @@ -87,8 +87,6 @@ ENTRY(__copy_from_user) #include "copy_template.S" -ENDPROC(__copy_from_user) - .section .fixup,"ax" .align 0 copy_abort_preamble diff --git a/trunk/arch/arm/lib/copy_page.S b/trunk/arch/arm/lib/copy_page.S index 6ae04db1ca4f..666c99cc0744 100644 --- a/trunk/arch/arm/lib/copy_page.S +++ b/trunk/arch/arm/lib/copy_page.S @@ -44,4 +44,3 @@ ENTRY(copy_page) PLD( ldmeqia r1!, {r3, r4, ip, lr} ) PLD( beq 2b ) ldmfd sp!, {r4, pc} @ 3 -ENDPROC(copy_page) diff --git a/trunk/arch/arm/lib/copy_to_user.S b/trunk/arch/arm/lib/copy_to_user.S index 22f968bbdffd..5224d94688d9 100644 --- a/trunk/arch/arm/lib/copy_to_user.S +++ b/trunk/arch/arm/lib/copy_to_user.S @@ -90,8 +90,6 @@ ENTRY(__copy_to_user) #include "copy_template.S" -ENDPROC(__copy_to_user) - .section .fixup,"ax" .align 0 copy_abort_preamble diff --git a/trunk/arch/arm/lib/csumipv6.S b/trunk/arch/arm/lib/csumipv6.S index 3ac6ef01bc43..9621469beec1 100644 --- a/trunk/arch/arm/lib/csumipv6.S +++ b/trunk/arch/arm/lib/csumipv6.S @@ -29,5 +29,4 @@ ENTRY(__csum_ipv6_magic) adcs r0, r0, r2 adcs r0, r0, #0 ldmfd sp!, {pc} -ENDPROC(__csum_ipv6_magic) diff --git a/trunk/arch/arm/lib/csumpartial.S b/trunk/arch/arm/lib/csumpartial.S index 31d3cb34740d..a78dae5a7b28 100644 --- a/trunk/arch/arm/lib/csumpartial.S +++ b/trunk/arch/arm/lib/csumpartial.S @@ -139,4 +139,3 @@ ENTRY(csum_partial) tst len, #0x1c bne 4b b .Lless4 -ENDPROC(csum_partial) diff --git a/trunk/arch/arm/lib/csumpartialcopy.S b/trunk/arch/arm/lib/csumpartialcopy.S index d03fc71fc88c..21effe0dbf97 100644 --- a/trunk/arch/arm/lib/csumpartialcopy.S +++ b/trunk/arch/arm/lib/csumpartialcopy.S @@ -18,11 +18,13 @@ */ .macro save_regs - stmfd sp!, {r1, r4 - r8, lr} + mov ip, sp + stmfd sp!, {r1, r4 - r8, fp, ip, lr, pc} + sub fp, ip, #4 .endm .macro load_regs - ldmfd sp!, {r1, r4 - r8, pc} + ldmfd sp, {r1, r4 - r8, fp, sp, pc} .endm .macro load1b, reg1 @@ -48,6 +50,5 @@ .endm #define FN_ENTRY ENTRY(csum_partial_copy_nocheck) -#define FN_EXIT ENDPROC(csum_partial_copy_nocheck) #include "csumpartialcopygeneric.S" diff --git a/trunk/arch/arm/lib/csumpartialcopygeneric.S b/trunk/arch/arm/lib/csumpartialcopygeneric.S index d620a5f22a09..c50e8f5285d1 100644 --- a/trunk/arch/arm/lib/csumpartialcopygeneric.S +++ b/trunk/arch/arm/lib/csumpartialcopygeneric.S @@ -329,4 +329,3 @@ FN_ENTRY adcs sum, sum, r4, push #24 mov r5, r4, get_byte_1 b .Lexit -FN_EXIT diff --git a/trunk/arch/arm/lib/csumpartialcopyuser.S b/trunk/arch/arm/lib/csumpartialcopyuser.S index 14677fb4b0c4..c3b93e22ea25 100644 --- a/trunk/arch/arm/lib/csumpartialcopyuser.S +++ b/trunk/arch/arm/lib/csumpartialcopyuser.S @@ -18,11 +18,13 @@ .text .macro save_regs - stmfd sp!, {r1, r2, r4 - r8, lr} + mov ip, sp + stmfd sp!, {r1 - r2, r4 - r8, fp, ip, lr, pc} + sub fp, ip, #4 .endm .macro load_regs - ldmfd sp!, {r1, r2, r4 - r8, pc} + ldmfd sp, {r1, r2, r4-r8, fp, sp, pc} .endm .macro load1b, reg1 @@ -80,7 +82,6 @@ */ #define FN_ENTRY ENTRY(csum_partial_copy_from_user) -#define FN_EXIT ENDPROC(csum_partial_copy_from_user) #include "csumpartialcopygeneric.S" diff --git a/trunk/arch/arm/lib/delay.S b/trunk/arch/arm/lib/delay.S index 8d6a8762ab88..930a70259220 100644 --- a/trunk/arch/arm/lib/delay.S +++ b/trunk/arch/arm/lib/delay.S @@ -60,6 +60,3 @@ ENTRY(__delay) #endif bhi __delay mov pc, lr -ENDPROC(__udelay) -ENDPROC(__const_udelay) -ENDPROC(__delay) diff --git a/trunk/arch/arm/lib/div64.S b/trunk/arch/arm/lib/div64.S index 1425e789ba86..58eef6607629 100644 --- a/trunk/arch/arm/lib/div64.S +++ b/trunk/arch/arm/lib/div64.S @@ -198,4 +198,3 @@ ENTRY(__do_div64) mov xh, #0 ldr pc, [sp], #8 -ENDPROC(__do_div64) diff --git a/trunk/arch/arm/lib/findbit.S b/trunk/arch/arm/lib/findbit.S index 8c4defc4f3c4..a5ca0248aa4e 100644 --- a/trunk/arch/arm/lib/findbit.S +++ b/trunk/arch/arm/lib/findbit.S @@ -33,7 +33,6 @@ ENTRY(_find_first_zero_bit_le) blo 1b 3: mov r0, r1 @ no free bits mov pc, lr -ENDPROC(_find_first_zero_bit_le) /* * Purpose : Find next 'zero' bit @@ -51,7 +50,6 @@ ENTRY(_find_next_zero_bit_le) orr r2, r2, #7 @ if zero, then no bits here add r2, r2, #1 @ align bit pointer b 2b @ loop for next bit -ENDPROC(_find_next_zero_bit_le) /* * Purpose : Find a 'one' bit @@ -69,7 +67,6 @@ ENTRY(_find_first_bit_le) blo 1b 3: mov r0, r1 @ no free bits mov pc, lr -ENDPROC(_find_first_bit_le) /* * Purpose : Find next 'one' bit @@ -86,7 +83,6 @@ ENTRY(_find_next_bit_le) orr r2, r2, #7 @ if zero, then no bits here add r2, r2, #1 @ align bit pointer b 2b @ loop for next bit -ENDPROC(_find_next_bit_le) #ifdef __ARMEB__ @@ -103,7 +99,6 @@ ENTRY(_find_first_zero_bit_be) blo 1b 3: mov r0, r1 @ no free bits mov pc, lr -ENDPROC(_find_first_zero_bit_be) ENTRY(_find_next_zero_bit_be) teq r1, #0 @@ -118,7 +113,6 @@ ENTRY(_find_next_zero_bit_be) orr r2, r2, #7 @ if zero, then no bits here add r2, r2, #1 @ align bit pointer b 2b @ loop for next bit -ENDPROC(_find_next_zero_bit_be) ENTRY(_find_first_bit_be) teq r1, #0 @@ -133,7 +127,6 @@ ENTRY(_find_first_bit_be) blo 1b 3: mov r0, r1 @ no free bits mov pc, lr -ENDPROC(_find_first_bit_be) ENTRY(_find_next_bit_be) teq r1, #0 @@ -147,7 +140,6 @@ ENTRY(_find_next_bit_be) orr r2, r2, #7 @ if zero, then no bits here add r2, r2, #1 @ align bit pointer b 2b @ loop for next bit -ENDPROC(_find_next_bit_be) #endif diff --git a/trunk/arch/arm/lib/getuser.S b/trunk/arch/arm/lib/getuser.S index 6763088b7607..2034d4dbe6ad 100644 --- a/trunk/arch/arm/lib/getuser.S +++ b/trunk/arch/arm/lib/getuser.S @@ -26,16 +26,16 @@ * Note that ADDR_LIMIT is either 0 or 0xc0000000. * Note also that it is intended that __get_user_bad is not global. */ -#include #include -ENTRY(__get_user_1) + .global __get_user_1 +__get_user_1: 1: ldrbt r2, [r0] mov r0, #0 mov pc, lr -ENDPROC(__get_user_1) -ENTRY(__get_user_2) + .global __get_user_2 +__get_user_2: 2: ldrbt r2, [r0], #1 3: ldrbt r3, [r0] #ifndef __ARMEB__ @@ -45,19 +45,17 @@ ENTRY(__get_user_2) #endif mov r0, #0 mov pc, lr -ENDPROC(__get_user_2) -ENTRY(__get_user_4) + .global __get_user_4 +__get_user_4: 4: ldrt r2, [r0] mov r0, #0 mov pc, lr -ENDPROC(__get_user_4) __get_user_bad: mov r2, #0 mov r0, #-EFAULT mov pc, lr -ENDPROC(__get_user_bad) .section __ex_table, "a" .long 1b, __get_user_bad diff --git a/trunk/arch/arm/lib/io-readsb.S b/trunk/arch/arm/lib/io-readsb.S index 9f4238987fe9..fb966ad0276f 100644 --- a/trunk/arch/arm/lib/io-readsb.S +++ b/trunk/arch/arm/lib/io-readsb.S @@ -120,4 +120,3 @@ ENTRY(__raw_readsb) strgtb r3, [r1] ldmfd sp!, {r4 - r6, pc} -ENDPROC(__raw_readsb) diff --git a/trunk/arch/arm/lib/io-readsl.S b/trunk/arch/arm/lib/io-readsl.S index 5fb97e7f9f4b..75a9121cb23f 100644 --- a/trunk/arch/arm/lib/io-readsl.S +++ b/trunk/arch/arm/lib/io-readsl.S @@ -76,4 +76,3 @@ ENTRY(__raw_readsl) 8: mov r3, ip, get_byte_0 strb r3, [r1, #0] mov pc, lr -ENDPROC(__raw_readsl) diff --git a/trunk/arch/arm/lib/io-readsw-armv4.S b/trunk/arch/arm/lib/io-readsw-armv4.S index 1f393d42593d..4db1c5f0b219 100644 --- a/trunk/arch/arm/lib/io-readsw-armv4.S +++ b/trunk/arch/arm/lib/io-readsw-armv4.S @@ -128,4 +128,3 @@ ENTRY(__raw_readsw) _BE_ONLY_( movne ip, ip, lsr #24 ) strneb ip, [r1] ldmfd sp!, {r4, pc} -ENDPROC(__raw_readsw) diff --git a/trunk/arch/arm/lib/io-writesb.S b/trunk/arch/arm/lib/io-writesb.S index 68b92f4acaeb..7eba2b6cc69f 100644 --- a/trunk/arch/arm/lib/io-writesb.S +++ b/trunk/arch/arm/lib/io-writesb.S @@ -91,4 +91,3 @@ ENTRY(__raw_writesb) strgtb r3, [r0] ldmfd sp!, {r4, r5, pc} -ENDPROC(__raw_writesb) diff --git a/trunk/arch/arm/lib/io-writesl.S b/trunk/arch/arm/lib/io-writesl.S index 8d3b7813725c..f8f14dd227ca 100644 --- a/trunk/arch/arm/lib/io-writesl.S +++ b/trunk/arch/arm/lib/io-writesl.S @@ -64,4 +64,3 @@ ENTRY(__raw_writesl) str ip, [r0] bne 6b mov pc, lr -ENDPROC(__raw_writesl) diff --git a/trunk/arch/arm/lib/io-writesw-armv4.S b/trunk/arch/arm/lib/io-writesw-armv4.S index d6585612c86b..c8e85bd653b7 100644 --- a/trunk/arch/arm/lib/io-writesw-armv4.S +++ b/trunk/arch/arm/lib/io-writesw-armv4.S @@ -94,4 +94,3 @@ ENTRY(__raw_writesw) 3: movne ip, r3, lsr #8 strneh ip, [r0] mov pc, lr -ENDPROC(__raw_writesw) diff --git a/trunk/arch/arm/lib/lib1funcs.S b/trunk/arch/arm/lib/lib1funcs.S index 67964bcfc854..4e492f4b3f0e 100644 --- a/trunk/arch/arm/lib/lib1funcs.S +++ b/trunk/arch/arm/lib/lib1funcs.S @@ -230,8 +230,6 @@ ENTRY(__aeabi_uidiv) mov r0, r0, lsr r2 mov pc, lr -ENDPROC(__udivsi3) -ENDPROC(__aeabi_uidiv) ENTRY(__umodsi3) @@ -247,7 +245,6 @@ ENTRY(__umodsi3) mov pc, lr -ENDPROC(__umodsi3) ENTRY(__divsi3) ENTRY(__aeabi_idiv) @@ -287,8 +284,6 @@ ENTRY(__aeabi_idiv) rsbmi r0, r0, #0 mov pc, lr -ENDPROC(__divsi3) -ENDPROC(__aeabi_idiv) ENTRY(__modsi3) @@ -310,8 +305,6 @@ ENTRY(__modsi3) rsbmi r0, r0, #0 mov pc, lr -ENDPROC(__modsi3) - #ifdef CONFIG_AEABI ENTRY(__aeabi_uidivmod) @@ -323,8 +316,6 @@ ENTRY(__aeabi_uidivmod) sub r1, r1, r3 mov pc, lr -ENDPROC(__aeabi_uidivmod) - ENTRY(__aeabi_idivmod) stmfd sp!, {r0, r1, ip, lr} @@ -334,8 +325,6 @@ ENTRY(__aeabi_idivmod) sub r1, r1, r3 mov pc, lr -ENDPROC(__aeabi_idivmod) - #endif Ldiv0: diff --git a/trunk/arch/arm/lib/lshrdi3.S b/trunk/arch/arm/lib/lshrdi3.S index 99ea338bf87c..a86dbdd59cc4 100644 --- a/trunk/arch/arm/lib/lshrdi3.S +++ b/trunk/arch/arm/lib/lshrdi3.S @@ -47,5 +47,3 @@ ENTRY(__aeabi_llsr) mov ah, ah, lsr r2 mov pc, lr -ENDPROC(__lshrdi3) -ENDPROC(__aeabi_llsr) diff --git a/trunk/arch/arm/lib/memchr.S b/trunk/arch/arm/lib/memchr.S index 1da86991d700..e7ab1ea8ebaa 100644 --- a/trunk/arch/arm/lib/memchr.S +++ b/trunk/arch/arm/lib/memchr.S @@ -23,4 +23,3 @@ ENTRY(memchr) sub r0, r0, #1 2: movne r0, #0 mov pc, lr -ENDPROC(memchr) diff --git a/trunk/arch/arm/lib/memcpy.S b/trunk/arch/arm/lib/memcpy.S index e0d002641d3f..7e71d6708a8d 100644 --- a/trunk/arch/arm/lib/memcpy.S +++ b/trunk/arch/arm/lib/memcpy.S @@ -57,4 +57,3 @@ ENTRY(memcpy) #include "copy_template.S" -ENDPROC(memcpy) diff --git a/trunk/arch/arm/lib/memmove.S b/trunk/arch/arm/lib/memmove.S index 12549187088c..2e301b7bd8f1 100644 --- a/trunk/arch/arm/lib/memmove.S +++ b/trunk/arch/arm/lib/memmove.S @@ -196,4 +196,3 @@ ENTRY(memmove) 18: backward_copy_shift push=24 pull=8 -ENDPROC(memmove) diff --git a/trunk/arch/arm/lib/memset.S b/trunk/arch/arm/lib/memset.S index 761eefa76243..b477d4ac88ef 100644 --- a/trunk/arch/arm/lib/memset.S +++ b/trunk/arch/arm/lib/memset.S @@ -124,4 +124,3 @@ ENTRY(memset) tst r2, #1 strneb r1, [r0], #1 mov pc, lr -ENDPROC(memset) diff --git a/trunk/arch/arm/lib/memzero.S b/trunk/arch/arm/lib/memzero.S index 3fbdef5f802a..b8f79d80ee9b 100644 --- a/trunk/arch/arm/lib/memzero.S +++ b/trunk/arch/arm/lib/memzero.S @@ -122,4 +122,3 @@ ENTRY(__memzero) tst r1, #1 @ 1 a byte left over strneb r2, [r0], #1 @ 1 mov pc, lr @ 1 -ENDPROC(__memzero) diff --git a/trunk/arch/arm/lib/muldi3.S b/trunk/arch/arm/lib/muldi3.S index 36c91b4957e2..d89c60615794 100644 --- a/trunk/arch/arm/lib/muldi3.S +++ b/trunk/arch/arm/lib/muldi3.S @@ -43,5 +43,3 @@ ENTRY(__aeabi_lmul) adc xh, xh, ip, lsr #16 mov pc, lr -ENDPROC(__muldi3) -ENDPROC(__aeabi_lmul) diff --git a/trunk/arch/arm/lib/putuser.S b/trunk/arch/arm/lib/putuser.S index 864f3c1c4f18..08ec7dffa52e 100644 --- a/trunk/arch/arm/lib/putuser.S +++ b/trunk/arch/arm/lib/putuser.S @@ -26,16 +26,16 @@ * Note that ADDR_LIMIT is either 0 or 0xc0000000 * Note also that it is intended that __put_user_bad is not global. */ -#include #include -ENTRY(__put_user_1) + .global __put_user_1 +__put_user_1: 1: strbt r2, [r0] mov r0, #0 mov pc, lr -ENDPROC(__put_user_1) -ENTRY(__put_user_2) + .global __put_user_2 +__put_user_2: mov ip, r2, lsr #8 #ifndef __ARMEB__ 2: strbt r2, [r0], #1 @@ -46,25 +46,23 @@ ENTRY(__put_user_2) #endif mov r0, #0 mov pc, lr -ENDPROC(__put_user_2) -ENTRY(__put_user_4) + .global __put_user_4 +__put_user_4: 4: strt r2, [r0] mov r0, #0 mov pc, lr -ENDPROC(__put_user_4) -ENTRY(__put_user_8) + .global __put_user_8 +__put_user_8: 5: strt r2, [r0], #4 6: strt r3, [r0] mov r0, #0 mov pc, lr -ENDPROC(__put_user_8) __put_user_bad: mov r0, #-EFAULT mov pc, lr -ENDPROC(__put_user_bad) .section __ex_table, "a" .long 1b, __put_user_bad diff --git a/trunk/arch/arm/lib/setbit.S b/trunk/arch/arm/lib/setbit.S index 1dd7176c4b2b..83bc23d5b037 100644 --- a/trunk/arch/arm/lib/setbit.S +++ b/trunk/arch/arm/lib/setbit.S @@ -20,5 +20,3 @@ ENTRY(_set_bit_be) eor r0, r0, #0x18 @ big endian byte ordering ENTRY(_set_bit_le) bitop orr -ENDPROC(_set_bit_be) -ENDPROC(_set_bit_le) diff --git a/trunk/arch/arm/lib/sha1.S b/trunk/arch/arm/lib/sha1.S index 8a1c67fe0544..ff6ece487ffc 100644 --- a/trunk/arch/arm/lib/sha1.S +++ b/trunk/arch/arm/lib/sha1.S @@ -185,8 +185,6 @@ ENTRY(sha_transform) ldmfd sp!, {r4 - r8, pc} -ENDPROC(sha_transform) - .L_sha_K: .word 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6 @@ -206,4 +204,3 @@ ENTRY(sha_init) stmia r0, {r1, r2, r3, ip, lr} ldr pc, [sp], #4 -ENDPROC(sha_init) diff --git a/trunk/arch/arm/lib/strchr.S b/trunk/arch/arm/lib/strchr.S index d8f2a1c1aea4..9f18d6fdee6a 100644 --- a/trunk/arch/arm/lib/strchr.S +++ b/trunk/arch/arm/lib/strchr.S @@ -24,4 +24,3 @@ ENTRY(strchr) movne r0, #0 subeq r0, r0, #1 mov pc, lr -ENDPROC(strchr) diff --git a/trunk/arch/arm/lib/strncpy_from_user.S b/trunk/arch/arm/lib/strncpy_from_user.S index 330373c26dd9..36e3741a3772 100644 --- a/trunk/arch/arm/lib/strncpy_from_user.S +++ b/trunk/arch/arm/lib/strncpy_from_user.S @@ -31,7 +31,6 @@ USER( ldrplbt r3, [r1], #1) sub r1, r1, #1 @ take NUL character out of count 2: sub r0, r1, ip mov pc, lr -ENDPROC(__strncpy_from_user) .section .fixup,"ax" .align 0 diff --git a/trunk/arch/arm/lib/strnlen_user.S b/trunk/arch/arm/lib/strnlen_user.S index 90bb9d020836..18d8fa4f925a 100644 --- a/trunk/arch/arm/lib/strnlen_user.S +++ b/trunk/arch/arm/lib/strnlen_user.S @@ -31,7 +31,6 @@ USER( ldrbt r3, [r0], #1) add r0, r0, #1 2: sub r0, r0, r2 mov pc, lr -ENDPROC(__strnlen_user) .section .fixup,"ax" .align 0 diff --git a/trunk/arch/arm/lib/strrchr.S b/trunk/arch/arm/lib/strrchr.S index 302f20cd2423..538df220aa48 100644 --- a/trunk/arch/arm/lib/strrchr.S +++ b/trunk/arch/arm/lib/strrchr.S @@ -23,4 +23,3 @@ ENTRY(strrchr) bne 1b mov r0, r3 mov pc, lr -ENDPROC(strrchr) diff --git a/trunk/arch/arm/lib/testchangebit.S b/trunk/arch/arm/lib/testchangebit.S index 5c98dc567f0f..b25dcd2be53e 100644 --- a/trunk/arch/arm/lib/testchangebit.S +++ b/trunk/arch/arm/lib/testchangebit.S @@ -16,5 +16,3 @@ ENTRY(_test_and_change_bit_be) eor r0, r0, #0x18 @ big endian byte ordering ENTRY(_test_and_change_bit_le) testop eor, strb -ENDPROC(_test_and_change_bit_be) -ENDPROC(_test_and_change_bit_le) diff --git a/trunk/arch/arm/lib/testclearbit.S b/trunk/arch/arm/lib/testclearbit.S index 543d7094d18e..2dcc4b16b68e 100644 --- a/trunk/arch/arm/lib/testclearbit.S +++ b/trunk/arch/arm/lib/testclearbit.S @@ -16,5 +16,3 @@ ENTRY(_test_and_clear_bit_be) eor r0, r0, #0x18 @ big endian byte ordering ENTRY(_test_and_clear_bit_le) testop bicne, strneb -ENDPROC(_test_and_clear_bit_be) -ENDPROC(_test_and_clear_bit_le) diff --git a/trunk/arch/arm/lib/testsetbit.S b/trunk/arch/arm/lib/testsetbit.S index 0b3f390401ce..9011c969761a 100644 --- a/trunk/arch/arm/lib/testsetbit.S +++ b/trunk/arch/arm/lib/testsetbit.S @@ -16,5 +16,3 @@ ENTRY(_test_and_set_bit_be) eor r0, r0, #0x18 @ big endian byte ordering ENTRY(_test_and_set_bit_le) testop orreq, streqb -ENDPROC(_test_and_set_bit_be) -ENDPROC(_test_and_set_bit_le) diff --git a/trunk/arch/arm/lib/uaccess.S b/trunk/arch/arm/lib/uaccess.S index ffdd27498cee..b48bd6d5fd83 100644 --- a/trunk/arch/arm/lib/uaccess.S +++ b/trunk/arch/arm/lib/uaccess.S @@ -277,7 +277,6 @@ USER( strgebt r3, [r0], #1) @ May fault ldrgtb r3, [r1], #0 USER( strgtbt r3, [r0], #1) @ May fault b .Lc2u_finished -ENDPROC(__copy_to_user) .section .fixup,"ax" .align 0 @@ -543,7 +542,6 @@ USER( ldrgebt r3, [r1], #1) @ May fault USER( ldrgtbt r3, [r1], #1) @ May fault strgtb r3, [r0], #1 b .Lcfu_finished -ENDPROC(__copy_from_user) .section .fixup,"ax" .align 0 diff --git a/trunk/arch/arm/lib/ucmpdi2.S b/trunk/arch/arm/lib/ucmpdi2.S index f0df6a91db04..f76de07ac182 100644 --- a/trunk/arch/arm/lib/ucmpdi2.S +++ b/trunk/arch/arm/lib/ucmpdi2.S @@ -33,8 +33,6 @@ ENTRY(__ucmpdi2) movhi r0, #2 mov pc, lr -ENDPROC(__ucmpdi2) - #ifdef CONFIG_AEABI ENTRY(__aeabi_ulcmp) @@ -46,7 +44,5 @@ ENTRY(__aeabi_ulcmp) movhi r0, #1 mov pc, lr -ENDPROC(__aeabi_ulcmp) - #endif diff --git a/trunk/arch/arm/mach-at91/at91x40_time.c b/trunk/arch/arm/mach-at91/at91x40_time.c index dfff2895f4b2..869b5e28d195 100644 --- a/trunk/arch/arm/mach-at91/at91x40_time.c +++ b/trunk/arch/arm/mach-at91/at91x40_time.c @@ -23,8 +23,8 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-at91/clock.c b/trunk/arch/arm/mach-at91/clock.c index e4345106ee57..f5c2847161f5 100644 --- a/trunk/arch/arm/mach-at91/clock.c +++ b/trunk/arch/arm/mach-at91/clock.c @@ -22,7 +22,8 @@ #include #include #include -#include + +#include #include #include diff --git a/trunk/arch/arm/mach-at91/gpio.c b/trunk/arch/arm/mach-at91/gpio.c index 93e0614f2afb..8392d5b517f1 100644 --- a/trunk/arch/arm/mach-at91/gpio.c +++ b/trunk/arch/arm/mach-at91/gpio.c @@ -18,8 +18,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-at91/include/mach/irqs.h b/trunk/arch/arm/mach-at91/include/mach/irqs.h index 36bd55f3fc6e..bda29ccbcd94 100644 --- a/trunk/arch/arm/mach-at91/include/mach/irqs.h +++ b/trunk/arch/arm/mach-at91/include/mach/irqs.h @@ -21,7 +21,7 @@ #ifndef __ASM_ARCH_IRQS_H #define __ASM_ARCH_IRQS_H -#include +#include #include #define NR_AIC_IRQS 32 diff --git a/trunk/arch/arm/mach-at91/include/mach/uncompress.h b/trunk/arch/arm/mach-at91/include/mach/uncompress.h index 18bdcdeb474f..0410d548e9b1 100644 --- a/trunk/arch/arm/mach-at91/include/mach/uncompress.h +++ b/trunk/arch/arm/mach-at91/include/mach/uncompress.h @@ -21,7 +21,7 @@ #ifndef __ASM_ARCH_UNCOMPRESS_H #define __ASM_ARCH_UNCOMPRESS_H -#include +#include #include #if defined(CONFIG_AT91_EARLY_DBGU) diff --git a/trunk/arch/arm/mach-at91/pm.c b/trunk/arch/arm/mach-at91/pm.c index 9bb4f043aa22..ec2fe4ca1e27 100644 --- a/trunk/arch/arm/mach-at91/pm.c +++ b/trunk/arch/arm/mach-at91/pm.c @@ -17,8 +17,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-clps711x/autcpu12.c b/trunk/arch/arm/mach-clps711x/autcpu12.c index 5f18eccdc725..474616dcd7a6 100644 --- a/trunk/arch/arm/mach-clps711x/autcpu12.c +++ b/trunk/arch/arm/mach-clps711x/autcpu12.c @@ -22,10 +22,10 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-clps711x/cdb89712.c b/trunk/arch/arm/mach-clps711x/cdb89712.c index 71a80b5b8ad6..aa02aa5a01f4 100644 --- a/trunk/arch/arm/mach-clps711x/cdb89712.c +++ b/trunk/arch/arm/mach-clps711x/cdb89712.c @@ -22,9 +22,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-clps711x/include/mach/system.h b/trunk/arch/arm/mach-clps711x/include/mach/system.h index 24e96159e3e7..a8eade40317f 100644 --- a/trunk/arch/arm/mach-clps711x/include/mach/system.h +++ b/trunk/arch/arm/mach-clps711x/include/mach/system.h @@ -20,9 +20,9 @@ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H -#include #include #include +#include static inline void arch_idle(void) { diff --git a/trunk/arch/arm/mach-clps711x/irq.c b/trunk/arch/arm/mach-clps711x/irq.c index 9a12d8562284..38623cfcac5a 100644 --- a/trunk/arch/arm/mach-clps711x/irq.c +++ b/trunk/arch/arm/mach-clps711x/irq.c @@ -19,10 +19,10 @@ */ #include #include -#include #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-clps711x/p720t-leds.c b/trunk/arch/arm/mach-clps711x/p720t-leds.c index 15121446efc8..262c3c361453 100644 --- a/trunk/arch/arm/mach-clps711x/p720t-leds.c +++ b/trunk/arch/arm/mach-clps711x/p720t-leds.c @@ -21,9 +21,9 @@ */ #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-clps711x/p720t.c b/trunk/arch/arm/mach-clps711x/p720t.c index 0d94a30fd6fc..f51f97d4f212 100644 --- a/trunk/arch/arm/mach-clps711x/p720t.c +++ b/trunk/arch/arm/mach-clps711x/p720t.c @@ -22,9 +22,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-clps711x/time.c b/trunk/arch/arm/mach-clps711x/time.c index d581ef0bcd24..ef1fcd17189e 100644 --- a/trunk/arch/arm/mach-clps711x/time.c +++ b/trunk/arch/arm/mach-clps711x/time.c @@ -21,11 +21,11 @@ #include #include #include -#include #include #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-clps7500/core.c b/trunk/arch/arm/mach-clps7500/core.c index c3a33b8a5aac..cc1b82179e83 100644 --- a/trunk/arch/arm/mach-clps7500/core.c +++ b/trunk/arch/arm/mach-clps7500/core.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -24,6 +23,7 @@ #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-clps7500/include/mach/irq.h b/trunk/arch/arm/mach-clps7500/include/mach/irq.h index d02fcf28ee05..e8da3c58df76 100644 --- a/trunk/arch/arm/mach-clps7500/include/mach/irq.h +++ b/trunk/arch/arm/mach-clps7500/include/mach/irq.h @@ -10,8 +10,8 @@ * 11-08-1999 PJB Created ARM7500 version, derived from RiscPC code */ -#include #include +#include static inline int fixup_irq(unsigned int irq) { diff --git a/trunk/arch/arm/mach-clps7500/include/mach/memory.h b/trunk/arch/arm/mach-clps7500/include/mach/memory.h index 87b32db470c8..3326aa99d3ec 100644 --- a/trunk/arch/arm/mach-clps7500/include/mach/memory.h +++ b/trunk/arch/arm/mach-clps7500/include/mach/memory.h @@ -32,12 +32,4 @@ #define FLUSH_BASE_PHYS 0x00000000 #define FLUSH_BASE 0xdf000000 -/* - * Sparsemem support. Each section is a maximum of 64MB. The sections - * are offset by 128MB and can cover 128MB, so that gives us a maximum - * of 29 physmem bits. - */ -#define MAX_PHYSMEM_BITS 29 -#define SECTION_SIZE_BITS 26 - #endif diff --git a/trunk/arch/arm/mach-clps7500/include/mach/system.h b/trunk/arch/arm/mach-clps7500/include/mach/system.h index 6d325fbe8b08..624fc2830ae0 100644 --- a/trunk/arch/arm/mach-clps7500/include/mach/system.h +++ b/trunk/arch/arm/mach-clps7500/include/mach/system.h @@ -6,8 +6,8 @@ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H -#include #include +#include static inline void arch_idle(void) { diff --git a/trunk/arch/arm/mach-davinci/board-evm.c b/trunk/arch/arm/mach-davinci/board-evm.c index 41f3cc4ac4af..134355787814 100644 --- a/trunk/arch/arm/mach-davinci/board-evm.c +++ b/trunk/arch/arm/mach-davinci/board-evm.c @@ -16,9 +16,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-davinci/clock.c b/trunk/arch/arm/mach-davinci/clock.c index 28f6dbc95bd7..d46c69b55aaa 100644 --- a/trunk/arch/arm/mach-davinci/clock.c +++ b/trunk/arch/arm/mach-davinci/clock.c @@ -16,9 +16,9 @@ #include #include #include -#include #include +#include #include #include "clock.h" diff --git a/trunk/arch/arm/mach-davinci/id.c b/trunk/arch/arm/mach-davinci/id.c index bf067d604918..70608f76aed8 100644 --- a/trunk/arch/arm/mach-davinci/id.c +++ b/trunk/arch/arm/mach-davinci/id.c @@ -13,7 +13,8 @@ #include #include #include -#include + +#include #define JTAG_ID_BASE 0x01c40028 diff --git a/trunk/arch/arm/mach-davinci/include/mach/system.h b/trunk/arch/arm/mach-davinci/include/mach/system.h index 17ca41dc2c53..84ff77aeb738 100644 --- a/trunk/arch/arm/mach-davinci/include/mach/system.h +++ b/trunk/arch/arm/mach-davinci/include/mach/system.h @@ -11,7 +11,7 @@ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H -#include +#include #include extern void davinci_watchdog_reset(void); diff --git a/trunk/arch/arm/mach-davinci/io.c b/trunk/arch/arm/mach-davinci/io.c index 299515f70b8b..5bb66b61c1a3 100644 --- a/trunk/arch/arm/mach-davinci/io.c +++ b/trunk/arch/arm/mach-davinci/io.c @@ -11,9 +11,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-davinci/irq.c b/trunk/arch/arm/mach-davinci/irq.c index 38021af8359a..12ca9f29f847 100644 --- a/trunk/arch/arm/mach-davinci/irq.c +++ b/trunk/arch/arm/mach-davinci/irq.c @@ -22,9 +22,9 @@ #include #include #include -#include #include +#include #include #define IRQ_BIT(irq) ((irq) & 0x1f) diff --git a/trunk/arch/arm/mach-davinci/psc.c b/trunk/arch/arm/mach-davinci/psc.c index 42b976e8a7e9..720c48b9ee04 100644 --- a/trunk/arch/arm/mach-davinci/psc.c +++ b/trunk/arch/arm/mach-davinci/psc.c @@ -21,8 +21,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-davinci/serial.c b/trunk/arch/arm/mach-davinci/serial.c index 3010f9971255..caf101e2cc62 100644 --- a/trunk/arch/arm/mach-davinci/serial.c +++ b/trunk/arch/arm/mach-davinci/serial.c @@ -26,8 +26,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-davinci/time.c b/trunk/arch/arm/mach-davinci/time.c index 3b9a296b5c4b..206e80d41717 100644 --- a/trunk/arch/arm/mach-davinci/time.c +++ b/trunk/arch/arm/mach-davinci/time.c @@ -15,8 +15,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ebsa110/core.c b/trunk/arch/arm/mach-ebsa110/core.c index c7bc7fbb11a6..65cc7c271917 100644 --- a/trunk/arch/arm/mach-ebsa110/core.c +++ b/trunk/arch/arm/mach-ebsa110/core.c @@ -14,10 +14,10 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ebsa110/io.c b/trunk/arch/arm/mach-ebsa110/io.c index c52e3047a7eb..53748f5462e9 100644 --- a/trunk/arch/arm/mach-ebsa110/io.c +++ b/trunk/arch/arm/mach-ebsa110/io.c @@ -23,9 +23,9 @@ #include #include #include -#include #include +#include #include static void __iomem *__isamem_convert_addr(const volatile void __iomem *addr) diff --git a/trunk/arch/arm/mach-ep93xx/adssphere.c b/trunk/arch/arm/mach-ep93xx/adssphere.c index 18f8b1dc8bd0..aa1fb352fb8f 100644 --- a/trunk/arch/arm/mach-ep93xx/adssphere.c +++ b/trunk/arch/arm/mach-ep93xx/adssphere.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/clock.c b/trunk/arch/arm/mach-ep93xx/clock.c index 8c9f2491dccc..6062e47f2043 100644 --- a/trunk/arch/arm/mach-ep93xx/clock.c +++ b/trunk/arch/arm/mach-ep93xx/clock.c @@ -15,9 +15,9 @@ #include #include #include -#include #include #include +#include struct clk { char *name; diff --git a/trunk/arch/arm/mach-ep93xx/core.c b/trunk/arch/arm/mach-ep93xx/core.c index 1a5af1b262be..d6967dedce52 100644 --- a/trunk/arch/arm/mach-ep93xx/core.c +++ b/trunk/arch/arm/mach-ep93xx/core.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include @@ -42,6 +41,7 @@ #include #include #include +#include #include #include @@ -157,7 +157,7 @@ static unsigned char gpio_int_type2[3]; static const u8 int_type1_register_offset[3] = { 0x90, 0xac, 0x4c }; static const u8 int_type2_register_offset[3] = { 0x94, 0xb0, 0x50 }; static const u8 eoi_register_offset[3] = { 0x98, 0xb4, 0x54 }; -static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x5c }; +static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 }; void ep93xx_gpio_update_int_params(unsigned port) { diff --git a/trunk/arch/arm/mach-ep93xx/edb9302.c b/trunk/arch/arm/mach-ep93xx/edb9302.c index 358a83392d04..97550c0ad7b0 100644 --- a/trunk/arch/arm/mach-ep93xx/edb9302.c +++ b/trunk/arch/arm/mach-ep93xx/edb9302.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/edb9302a.c b/trunk/arch/arm/mach-ep93xx/edb9302a.c index 65cc55cfeac7..99b01d44bf1c 100644 --- a/trunk/arch/arm/mach-ep93xx/edb9302a.c +++ b/trunk/arch/arm/mach-ep93xx/edb9302a.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/edb9307.c b/trunk/arch/arm/mach-ep93xx/edb9307.c index 551de24d6f25..9fb72d01a36c 100644 --- a/trunk/arch/arm/mach-ep93xx/edb9307.c +++ b/trunk/arch/arm/mach-ep93xx/edb9307.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/edb9312.c b/trunk/arch/arm/mach-ep93xx/edb9312.c index 9167e7c8dbc4..87267a574f5e 100644 --- a/trunk/arch/arm/mach-ep93xx/edb9312.c +++ b/trunk/arch/arm/mach-ep93xx/edb9312.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/edb9315.c b/trunk/arch/arm/mach-ep93xx/edb9315.c index d267bb644473..7e373950be4d 100644 --- a/trunk/arch/arm/mach-ep93xx/edb9315.c +++ b/trunk/arch/arm/mach-ep93xx/edb9315.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/edb9315a.c b/trunk/arch/arm/mach-ep93xx/edb9315a.c index 6ffe21d81e46..08a7c9bfb689 100644 --- a/trunk/arch/arm/mach-ep93xx/edb9315a.c +++ b/trunk/arch/arm/mach-ep93xx/edb9315a.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/gesbc9312.c b/trunk/arch/arm/mach-ep93xx/gesbc9312.c index ad57bb1780da..9b41ec1f089e 100644 --- a/trunk/arch/arm/mach-ep93xx/gesbc9312.c +++ b/trunk/arch/arm/mach-ep93xx/gesbc9312.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/gpio.c b/trunk/arch/arm/mach-ep93xx/gpio.c index 5a06ed9eafdc..0f3fb87ca4be 100644 --- a/trunk/arch/arm/mach-ep93xx/gpio.c +++ b/trunk/arch/arm/mach-ep93xx/gpio.c @@ -16,9 +16,9 @@ #include #include #include -#include #include +#include #include struct ep93xx_gpio_chip { diff --git a/trunk/arch/arm/mach-ep93xx/include/mach/ts72xx.h b/trunk/arch/arm/mach-ep93xx/include/mach/ts72xx.h index 34ddec081c40..30b318aa1a1f 100644 --- a/trunk/arch/arm/mach-ep93xx/include/mach/ts72xx.h +++ b/trunk/arch/arm/mach-ep93xx/include/mach/ts72xx.h @@ -70,7 +70,7 @@ #ifndef __ASSEMBLY__ -#include +#include static inline int board_is_ts7200(void) { diff --git a/trunk/arch/arm/mach-ep93xx/micro9.c b/trunk/arch/arm/mach-ep93xx/micro9.c index 06555f372cd1..de047a5c8112 100644 --- a/trunk/arch/arm/mach-ep93xx/micro9.c +++ b/trunk/arch/arm/mach-ep93xx/micro9.c @@ -16,9 +16,10 @@ #include #include #include -#include + #include +#include #include #include diff --git a/trunk/arch/arm/mach-ep93xx/ts72xx.c b/trunk/arch/arm/mach-ep93xx/ts72xx.c index a6959c8bb84f..c3cbff126d0c 100644 --- a/trunk/arch/arm/mach-ep93xx/ts72xx.c +++ b/trunk/arch/arm/mach-ep93xx/ts72xx.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/cats-hw.c b/trunk/arch/arm/mach-footbridge/cats-hw.c index 6a5b437ab86f..c261472208cb 100644 --- a/trunk/arch/arm/mach-footbridge/cats-hw.c +++ b/trunk/arch/arm/mach-footbridge/cats-hw.c @@ -9,9 +9,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-footbridge/common.c b/trunk/arch/arm/mach-footbridge/common.c index 818014e09f4a..b08ab507c052 100644 --- a/trunk/arch/arm/mach-footbridge/common.c +++ b/trunk/arch/arm/mach-footbridge/common.c @@ -13,11 +13,11 @@ #include #include #include -#include #include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/dc21285.c b/trunk/arch/arm/mach-footbridge/dc21285.c index d4c1e526f59c..d0dc51e81338 100644 --- a/trunk/arch/arm/mach-footbridge/dc21285.c +++ b/trunk/arch/arm/mach-footbridge/dc21285.c @@ -16,8 +16,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/dma.c b/trunk/arch/arm/mach-footbridge/dma.c index b653e9cfa3f7..1f9b09b8ed88 100644 --- a/trunk/arch/arm/mach-footbridge/dma.c +++ b/trunk/arch/arm/mach-footbridge/dma.c @@ -11,9 +11,9 @@ * ISA DMA controllers. */ #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-footbridge/include/mach/memory.h b/trunk/arch/arm/mach-footbridge/include/mach/memory.h index 6ae2f1a07ab9..e9cae99dd1f9 100644 --- a/trunk/arch/arm/mach-footbridge/include/mach/memory.h +++ b/trunk/arch/arm/mach-footbridge/include/mach/memory.h @@ -42,6 +42,10 @@ extern unsigned long __bus_to_virt(unsigned long); #endif +/* Task size and page offset at 3GB */ +#define TASK_SIZE UL(0xbf000000) +#define PAGE_OFFSET UL(0xc0000000) + /* * Cache flushing area. */ @@ -52,6 +56,12 @@ extern unsigned long __bus_to_virt(unsigned long); */ #define PHYS_OFFSET UL(0x00000000) +/* + * This decides where the kernel will search for a free chunk of vm + * space during mmap's. + */ +#define TASK_UNMAPPED_BASE ((TASK_SIZE + 0x01000000) / 3) + #define FLUSH_BASE_PHYS 0x50000000 #endif diff --git a/trunk/arch/arm/mach-footbridge/include/mach/system.h b/trunk/arch/arm/mach-footbridge/include/mach/system.h index 2db7f36bd6ca..01c9f407f498 100644 --- a/trunk/arch/arm/mach-footbridge/include/mach/system.h +++ b/trunk/arch/arm/mach-footbridge/include/mach/system.h @@ -7,8 +7,8 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/isa-irq.c b/trunk/arch/arm/mach-footbridge/isa-irq.c index 62bb38f1369d..7132e522c366 100644 --- a/trunk/arch/arm/mach-footbridge/isa-irq.c +++ b/trunk/arch/arm/mach-footbridge/isa-irq.c @@ -18,13 +18,13 @@ #include #include #include -#include #include #include #include #include +#include #include static void isa_mask_pic_lo_irq(unsigned int irq) diff --git a/trunk/arch/arm/mach-footbridge/isa-timer.c b/trunk/arch/arm/mach-footbridge/isa-timer.c index 0c8390082fa8..a764e01d3573 100644 --- a/trunk/arch/arm/mach-footbridge/isa-timer.c +++ b/trunk/arch/arm/mach-footbridge/isa-timer.c @@ -7,8 +7,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-footbridge/netwinder-hw.c b/trunk/arch/arm/mach-footbridge/netwinder-hw.c index 00b0ddcac283..a1f381c64a30 100644 --- a/trunk/arch/arm/mach-footbridge/netwinder-hw.c +++ b/trunk/arch/arm/mach-footbridge/netwinder-hw.c @@ -10,9 +10,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-footbridge/time.c b/trunk/arch/arm/mach-footbridge/time.c index 216ed5c7404d..fd9a7c11d62d 100644 --- a/trunk/arch/arm/mach-footbridge/time.c +++ b/trunk/arch/arm/mach-footbridge/time.c @@ -22,9 +22,9 @@ #include #include #include -#include #include +#include #include #include "common.h" diff --git a/trunk/arch/arm/mach-h720x/common.c b/trunk/arch/arm/mach-h720x/common.c index 3a410e3f1e5f..b5f9741ae13c 100644 --- a/trunk/arch/arm/mach-h720x/common.c +++ b/trunk/arch/arm/mach-h720x/common.c @@ -18,11 +18,11 @@ #include #include #include -#include #include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-imx/clock.c b/trunk/arch/arm/mach-imx/clock.c index 7ec60fc91565..4b4230db3765 100644 --- a/trunk/arch/arm/mach-imx/clock.c +++ b/trunk/arch/arm/mach-imx/clock.c @@ -21,8 +21,8 @@ #include #include #include -#include +#include #include /* diff --git a/trunk/arch/arm/mach-imx/irq.c b/trunk/arch/arm/mach-imx/irq.c index 2ce75625b417..798f221eb3b7 100644 --- a/trunk/arch/arm/mach-imx/irq.c +++ b/trunk/arch/arm/mach-imx/irq.c @@ -26,10 +26,10 @@ #include #include #include -#include #include #include +#include #include diff --git a/trunk/arch/arm/mach-imx/leds-mx1ads.c b/trunk/arch/arm/mach-imx/leds-mx1ads.c index 1d48f2762cbc..af81621f689b 100644 --- a/trunk/arch/arm/mach-imx/leds-mx1ads.c +++ b/trunk/arch/arm/mach-imx/leds-mx1ads.c @@ -13,9 +13,9 @@ #include #include -#include #include #include +#include #include #include "leds.h" diff --git a/trunk/arch/arm/mach-imx/time.c b/trunk/arch/arm/mach-imx/time.c index a11765f5f23b..08be3875c59e 100644 --- a/trunk/arch/arm/mach-imx/time.c +++ b/trunk/arch/arm/mach-imx/time.c @@ -18,9 +18,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-integrator/core.c b/trunk/arch/arm/mach-integrator/core.c index 595b7392ee4e..8bacf6d4d097 100644 --- a/trunk/arch/arm/mach-integrator/core.c +++ b/trunk/arch/arm/mach-integrator/core.c @@ -19,10 +19,10 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-integrator/cpu.c b/trunk/arch/arm/mach-integrator/cpu.c index e4f72d202cc0..7c49d55e6b27 100644 --- a/trunk/arch/arm/mach-integrator/cpu.c +++ b/trunk/arch/arm/mach-integrator/cpu.c @@ -17,9 +17,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-integrator/impd1.c b/trunk/arch/arm/mach-integrator/impd1.c index 172299a78302..3c8383dbe9e6 100644 --- a/trunk/arch/arm/mach-integrator/impd1.c +++ b/trunk/arch/arm/mach-integrator/impd1.c @@ -20,8 +20,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-integrator/integrator_ap.c b/trunk/arch/arm/mach-integrator/integrator_ap.c index 8138a7e24562..6e472b5f8f26 100644 --- a/trunk/arch/arm/mach-integrator/integrator_ap.c +++ b/trunk/arch/arm/mach-integrator/integrator_ap.c @@ -27,9 +27,9 @@ #include #include #include -#include #include +#include #include #include #include /* HZ */ diff --git a/trunk/arch/arm/mach-integrator/integrator_cp.c b/trunk/arch/arm/mach-integrator/integrator_cp.c index c0eaf0a6f453..6b99e9c258bd 100644 --- a/trunk/arch/arm/mach-integrator/integrator_cp.c +++ b/trunk/arch/arm/mach-integrator/integrator_cp.c @@ -19,9 +19,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-integrator/leds.c b/trunk/arch/arm/mach-integrator/leds.c index 8dcc823f4135..7bc6881434ec 100644 --- a/trunk/arch/arm/mach-integrator/leds.c +++ b/trunk/arch/arm/mach-integrator/leds.c @@ -24,9 +24,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-integrator/pci_v3.c b/trunk/arch/arm/mach-integrator/pci_v3.c index f1d72b225450..9f2b1ea8fb20 100644 --- a/trunk/arch/arm/mach-integrator/pci_v3.c +++ b/trunk/arch/arm/mach-integrator/pci_v3.c @@ -27,9 +27,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop13xx/include/mach/memory.h b/trunk/arch/arm/mach-iop13xx/include/mach/memory.h index b82602d529bf..e8b59d8f1bb9 100644 --- a/trunk/arch/arm/mach-iop13xx/include/mach/memory.h +++ b/trunk/arch/arm/mach-iop13xx/include/mach/memory.h @@ -7,6 +7,9 @@ * Physical DRAM offset. */ #define PHYS_OFFSET UL(0x00000000) +#define TASK_SIZE UL(0x3f000000) +#define PAGE_OFFSET UL(0x40000000) +#define TASK_UNMAPPED_BASE ((TASK_SIZE + 0x01000000) / 3) #ifndef __ASSEMBLY__ @@ -26,52 +29,32 @@ /* RAM has 1:1 mapping on the PCIe/x Busses */ #define __virt_to_bus(x) (__virt_to_phys(x)) -#define __bus_to_virt(x) (__phys_to_virt(x)) +#define __bus_to_virt(x) (__phys_to_virt(x)) -static inline dma_addr_t __virt_to_lbus(unsigned long x) -{ - return x + IOP13XX_PMMR_PHYS_MEM_BASE - IOP13XX_PMMR_VIRT_MEM_BASE; -} +#define virt_to_lbus(x) \ +(( ((void*)(x) >= (void*)IOP13XX_PMMR_V_START) && \ +((void*)(x) < (void*)IOP13XX_PMMR_V_END) ) ? \ +((x) - IOP13XX_PMMR_VIRT_MEM_BASE + IOP13XX_PMMR_PHYS_MEM_BASE) : \ +((x) - PAGE_OFFSET + PHYS_OFFSET)) -static inline unsigned long __lbus_to_virt(dma_addr_t x) -{ - return x + IOP13XX_PMMR_VIRT_MEM_BASE - IOP13XX_PMMR_PHYS_MEM_BASE; -} - -#define __is_lbus_dma(a) \ - ((a) >= IOP13XX_PMMR_P_START && (a) < IOP13XX_PMMR_P_END) - -#define __is_lbus_virt(a) \ - ((a) >= IOP13XX_PMMR_V_START && (a) < IOP13XX_PMMR_V_END) +#define lbus_to_virt(x) \ +(( ((x) >= IOP13XX_PMMR_P_START) && ((x) < IOP13XX_PMMR_P_END) ) ? \ +((x) - IOP13XX_PMMR_PHYS_MEM_BASE + IOP13XX_PMMR_VIRT_MEM_BASE ) : \ +((x) - PHYS_OFFSET + PAGE_OFFSET)) /* Device is an lbus device if it is on the platform bus of the IOP13XX */ -#define is_lbus_device(dev) \ - (dev && strncmp(dev->bus->name, "platform", 8) == 0) +#define is_lbus_device(dev) (dev &&\ + (strncmp(dev->bus->name, "platform", 8) == 0)) -#define __arch_dma_to_virt(dev, addr) \ - ({ \ - unsigned long __virt; \ - dma_addr_t __dma = addr; \ - if (is_lbus_device(dev) && __is_lbus_dma(__dma)) \ - __virt = __lbus_to_virt(__dma); \ - else \ - __virt = __bus_to_virt(__dma); \ - (void *)__virt; \ - }) +#define __arch_page_to_dma(dev, page) \ +({is_lbus_device(dev) ? (dma_addr_t)virt_to_lbus(page_address(page)) : \ +(dma_addr_t)__virt_to_bus(page_address(page));}) -#define __arch_virt_to_dma(dev, addr) \ - ({ \ - unsigned long __virt = (unsigned long)addr; \ - dma_addr_t __dma; \ - if (is_lbus_device(dev) && __is_lbus_virt(__virt)) \ - __dma = __virt_to_lbus(__virt); \ - else \ - __dma = __virt_to_bus(__virt); \ - __dma; \ - }) +#define __arch_dma_to_virt(dev, addr) \ +({is_lbus_device(dev) ? lbus_to_virt(addr) : __bus_to_virt(addr);}) -#define __arch_page_to_dma(dev, page) \ - __arch_virt_to_dma(dev, page_address(page)) +#define __arch_virt_to_dma(dev, addr) \ +({is_lbus_device(dev) ? virt_to_lbus(addr) : __virt_to_bus(addr);}) #endif /* CONFIG_ARCH_IOP13XX */ #endif /* !ASSEMBLY */ diff --git a/trunk/arch/arm/mach-iop13xx/include/mach/pci.h b/trunk/arch/arm/mach-iop13xx/include/mach/pci.h index 59f42b535572..17b5515af8b1 100644 --- a/trunk/arch/arm/mach-iop13xx/include/mach/pci.h +++ b/trunk/arch/arm/mach-iop13xx/include/mach/pci.h @@ -1,7 +1,7 @@ #ifndef _IOP13XX_PCI_H_ #define _IOP13XX_PCI_H_ -#include #include +#include struct pci_sys_data; struct hw_pci; diff --git a/trunk/arch/arm/mach-iop13xx/io.c b/trunk/arch/arm/mach-iop13xx/io.c index 529580997814..26cfa318142c 100644 --- a/trunk/arch/arm/mach-iop13xx/io.c +++ b/trunk/arch/arm/mach-iop13xx/io.c @@ -18,8 +18,8 @@ */ #include #include -#include #include +#include void * __iomem __iop13xx_io(unsigned long io_addr) { diff --git a/trunk/arch/arm/mach-iop13xx/setup.c b/trunk/arch/arm/mach-iop13xx/setup.c index cfd4d2e6dacd..b17ccc8cb471 100644 --- a/trunk/arch/arm/mach-iop13xx/setup.c +++ b/trunk/arch/arm/mach-iop13xx/setup.c @@ -18,13 +18,13 @@ */ #include -#include #ifdef CONFIG_MTD_PHYSMAP #include #endif #include #include #include +#include #include #define IOP13XX_UART_XTAL 33334000 diff --git a/trunk/arch/arm/mach-iop13xx/tpmi.c b/trunk/arch/arm/mach-iop13xx/tpmi.c index c6af1e1bee32..2476347ea62f 100644 --- a/trunk/arch/arm/mach-iop13xx/tpmi.c +++ b/trunk/arch/arm/mach-iop13xx/tpmi.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-iop32x/glantank.c b/trunk/arch/arm/mach-iop32x/glantank.c index a9c2dfdb2507..45d61276d233 100644 --- a/trunk/arch/arm/mach-iop32x/glantank.c +++ b/trunk/arch/arm/mach-iop32x/glantank.c @@ -25,8 +25,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop32x/iq31244.c b/trunk/arch/arm/mach-iop32x/iq31244.c index dd1cd9904518..082818aaa205 100644 --- a/trunk/arch/arm/mach-iop32x/iq31244.c +++ b/trunk/arch/arm/mach-iop32x/iq31244.c @@ -26,9 +26,8 @@ #include #include #include -#include #include -#include +#include #include #include #include @@ -50,7 +49,8 @@ static int force_ep80219; static int is_80219(void) { - return !!((read_cpuid_id() & 0xffffffe0) == 0x69052e20); + extern int processor_id; + return !!((processor_id & 0xffffffe0) == 0x69052e20); } static int is_ep80219(void) diff --git a/trunk/arch/arm/mach-iop32x/iq80321.c b/trunk/arch/arm/mach-iop32x/iq80321.c index fbe27798759d..d735539808b4 100644 --- a/trunk/arch/arm/mach-iop32x/iq80321.c +++ b/trunk/arch/arm/mach-iop32x/iq80321.c @@ -23,8 +23,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop32x/n2100.c b/trunk/arch/arm/mach-iop32x/n2100.c index d2e427899729..3173f9c5835d 100644 --- a/trunk/arch/arm/mach-iop32x/n2100.c +++ b/trunk/arch/arm/mach-iop32x/n2100.c @@ -30,8 +30,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop33x/iq80331.c b/trunk/arch/arm/mach-iop33x/iq80331.c index d51e10cddf20..c7d99f9fafed 100644 --- a/trunk/arch/arm/mach-iop33x/iq80331.c +++ b/trunk/arch/arm/mach-iop33x/iq80331.c @@ -22,8 +22,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop33x/iq80332.c b/trunk/arch/arm/mach-iop33x/iq80332.c index 92fb44cdbcad..af616c5f4fb2 100644 --- a/trunk/arch/arm/mach-iop33x/iq80332.c +++ b/trunk/arch/arm/mach-iop33x/iq80332.c @@ -22,8 +22,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-iop33x/uart.c b/trunk/arch/arm/mach-iop33x/uart.c index cdae24e46eea..8c21870fa808 100644 --- a/trunk/arch/arm/mach-iop33x/uart.c +++ b/trunk/arch/arm/mach-iop33x/uart.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/enp2611.c b/trunk/arch/arm/mach-ixp2000/enp2611.c index 279e431e0379..c62ed655c1a7 100644 --- a/trunk/arch/arm/mach-ixp2000/enp2611.c +++ b/trunk/arch/arm/mach-ixp2000/enp2611.c @@ -32,8 +32,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2400.c b/trunk/arch/arm/mach-ixp2000/ixdp2400.c index 4467c4224d73..c673b9ef9f69 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2400.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2400.c @@ -25,8 +25,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2800.c b/trunk/arch/arm/mach-ixp2000/ixdp2800.c index 94f68ba9ea50..6715b50829a6 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2800.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2800.c @@ -25,8 +25,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2x00.c b/trunk/arch/arm/mach-ixp2000/ixdp2x00.c index 4debb9ff056c..5a781fd9757a 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2x00.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2x00.c @@ -25,8 +25,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/ixdp2x01.c b/trunk/arch/arm/mach-ixp2000/ixdp2x01.c index c7042725dc80..78a2341dee2c 100644 --- a/trunk/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/trunk/arch/arm/mach-ixp2000/ixdp2x01.c @@ -30,8 +30,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp2000/pci.c b/trunk/arch/arm/mach-ixp2000/pci.c index 60e9fd08ab80..03d916fbe531 100644 --- a/trunk/arch/arm/mach-ixp2000/pci.c +++ b/trunk/arch/arm/mach-ixp2000/pci.c @@ -24,8 +24,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp23xx/pci.c b/trunk/arch/arm/mach-ixp23xx/pci.c index 59022becb134..701d60aa0efd 100644 --- a/trunk/arch/arm/mach-ixp23xx/pci.c +++ b/trunk/arch/arm/mach-ixp23xx/pci.c @@ -25,8 +25,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp4xx/common-pci.c b/trunk/arch/arm/mach-ixp4xx/common-pci.c index d816c51320c7..192538a04575 100644 --- a/trunk/arch/arm/mach-ixp4xx/common-pci.c +++ b/trunk/arch/arm/mach-ixp4xx/common-pci.c @@ -25,10 +25,9 @@ #include #include #include -#include #include -#include +#include #include #include #include @@ -367,13 +366,15 @@ void __init ixp4xx_adjust_zones(int node, unsigned long *zone_size, void __init ixp4xx_pci_preinit(void) { - unsigned long cpuid = read_cpuid_id(); + unsigned long processor_id; + + asm("mrc p15, 0, %0, cr0, cr0, 0;" : "=r"(processor_id) :); /* * Determine which PCI read method to use. * Rev 0 IXP425 requires workaround. */ - if (!(cpuid & 0xf) && cpu_is_ixp42x()) { + if (!(processor_id & 0xf) && cpu_is_ixp42x()) { printk("PCI: IXP42x A0 silicon detected - " "PCI Non-Prefetch Workaround Enabled\n"); ixp4xx_pci_read = ixp4xx_pci_read_errata; diff --git a/trunk/arch/arm/mach-ixp4xx/common.c b/trunk/arch/arm/mach-ixp4xx/common.c index 7766f469456b..58bd2842a6f1 100644 --- a/trunk/arch/arm/mach-ixp4xx/common.c +++ b/trunk/arch/arm/mach-ixp4xx/common.c @@ -28,11 +28,11 @@ #include #include #include -#include #include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ixp4xx/fsg-setup.c b/trunk/arch/arm/mach-ixp4xx/fsg-setup.c index e7c6386782ed..501dfdcc39fe 100644 --- a/trunk/arch/arm/mach-ixp4xx/fsg-setup.c +++ b/trunk/arch/arm/mach-ixp4xx/fsg-setup.c @@ -23,11 +23,11 @@ #include #include #include -#include #include #include #include +#include #include static struct flash_platform_data fsg_flash_data = { diff --git a/trunk/arch/arm/mach-ixp4xx/include/mach/cpu.h b/trunk/arch/arm/mach-ixp4xx/include/mach/cpu.h index 51bd69c46d94..ff8aa2393bf9 100644 --- a/trunk/arch/arm/mach-ixp4xx/include/mach/cpu.h +++ b/trunk/arch/arm/mach-ixp4xx/include/mach/cpu.h @@ -14,19 +14,18 @@ #ifndef __ASM_ARCH_CPU_H__ #define __ASM_ARCH_CPU_H__ -#include - +extern unsigned int processor_id; /* Processor id value in CP15 Register 0 */ #define IXP425_PROCESSOR_ID_VALUE 0x690541c0 #define IXP435_PROCESSOR_ID_VALUE 0x69054040 #define IXP465_PROCESSOR_ID_VALUE 0x69054200 #define IXP4XX_PROCESSOR_ID_MASK 0xfffffff0 -#define cpu_is_ixp42x() ((read_cpuid_id() & IXP4XX_PROCESSOR_ID_MASK) == \ +#define cpu_is_ixp42x() ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == \ IXP425_PROCESSOR_ID_VALUE) -#define cpu_is_ixp43x() ((read_cpuid_id() & IXP4XX_PROCESSOR_ID_MASK) == \ +#define cpu_is_ixp43x() ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == \ IXP435_PROCESSOR_ID_VALUE) -#define cpu_is_ixp46x() ((read_cpuid_id() & IXP4XX_PROCESSOR_ID_MASK) == \ +#define cpu_is_ixp46x() ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == \ IXP465_PROCESSOR_ID_VALUE) static inline u32 ixp4xx_read_feature_bits(void) diff --git a/trunk/arch/arm/mach-ixp4xx/ixdp425-setup.c b/trunk/arch/arm/mach-ixp4xx/ixdp425-setup.c index f4a0c1bc1331..9b2d2ec14c80 100644 --- a/trunk/arch/arm/mach-ixp4xx/ixdp425-setup.c +++ b/trunk/arch/arm/mach-ixp4xx/ixdp425-setup.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -30,6 +29,7 @@ #include #include #include +#include static struct flash_platform_data ixdp425_flash_data = { .map_name = "cfi_probe", diff --git a/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c b/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c index 0acd95ecf27e..84b5e62a9c0a 100644 --- a/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c @@ -28,11 +28,11 @@ #include #include #include -#include #include #include #include +#include #include static struct flash_platform_data nas100d_flash_data = { diff --git a/trunk/arch/arm/mach-ixp4xx/nslu2-setup.c b/trunk/arch/arm/mach-ixp4xx/nslu2-setup.c index bc9d920ae54f..a48a6655b887 100644 --- a/trunk/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/trunk/arch/arm/mach-ixp4xx/nslu2-setup.c @@ -25,12 +25,12 @@ #include #include #include -#include #include #include #include #include +#include #include static struct flash_platform_data nslu2_flash_data = { diff --git a/trunk/arch/arm/mach-ks8695/cpu.c b/trunk/arch/arm/mach-ks8695/cpu.c index 7f3f24053a00..c6c08e800233 100644 --- a/trunk/arch/arm/mach-ks8695/cpu.c +++ b/trunk/arch/arm/mach-ks8695/cpu.c @@ -24,9 +24,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-ks8695/gpio.c b/trunk/arch/arm/mach-ks8695/gpio.c index 2f122823f85a..3624e65cd89b 100644 --- a/trunk/arch/arm/mach-ks8695/gpio.c +++ b/trunk/arch/arm/mach-ks8695/gpio.c @@ -23,8 +23,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-ks8695/include/mach/system.h b/trunk/arch/arm/mach-ks8695/include/mach/system.h index 5a9b032bdbeb..2a6f91869056 100644 --- a/trunk/arch/arm/mach-ks8695/include/mach/system.h +++ b/trunk/arch/arm/mach-ks8695/include/mach/system.h @@ -14,7 +14,7 @@ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H -#include +#include #include static void arch_idle(void) diff --git a/trunk/arch/arm/mach-ks8695/include/mach/uncompress.h b/trunk/arch/arm/mach-ks8695/include/mach/uncompress.h index 9495cb4d701a..0eee37a69075 100644 --- a/trunk/arch/arm/mach-ks8695/include/mach/uncompress.h +++ b/trunk/arch/arm/mach-ks8695/include/mach/uncompress.h @@ -14,7 +14,7 @@ #ifndef __ASM_ARCH_UNCOMPRESS_H #define __ASM_ARCH_UNCOMPRESS_H -#include +#include #include static void putc(char c) diff --git a/trunk/arch/arm/mach-ks8695/irq.c b/trunk/arch/arm/mach-ks8695/irq.c index e375c1d53f81..e5e71f4dbb84 100644 --- a/trunk/arch/arm/mach-ks8695/irq.c +++ b/trunk/arch/arm/mach-ks8695/irq.c @@ -24,10 +24,10 @@ #include #include #include -#include #include #include +#include #include diff --git a/trunk/arch/arm/mach-ks8695/pci.c b/trunk/arch/arm/mach-ks8695/pci.c index 064b3208141d..1746c67af176 100644 --- a/trunk/arch/arm/mach-ks8695/pci.c +++ b/trunk/arch/arm/mach-ks8695/pci.c @@ -27,8 +27,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-ks8695/time.c b/trunk/arch/arm/mach-ks8695/time.c index 69c072c2c0f9..940888dffc16 100644 --- a/trunk/arch/arm/mach-ks8695/time.c +++ b/trunk/arch/arm/mach-ks8695/time.c @@ -24,8 +24,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-lh7a40x/Kconfig b/trunk/arch/arm/mach-lh7a40x/Kconfig index 9be7466e346c..6f4c6a1798c1 100644 --- a/trunk/arch/arm/mach-lh7a40x/Kconfig +++ b/trunk/arch/arm/mach-lh7a40x/Kconfig @@ -40,22 +40,23 @@ config LPD7A40X_CPLD_SSP bool config LH7A40X_CONTIGMEM - bool "Disable NUMA/SparseMEM Support" + bool "Disable NUMA Support" + depends on ARCH_LH7A40X help Say Y here if your bootloader sets the SROMLL bit(s) in the SDRAM controller, organizing memory as a contiguous - array. This option will disable sparse memory support - and force the kernel to manage all memory in one node. + array. This option will disable CONFIG_DISCONTIGMEM and + force the kernel to manage all memory in one node. - Setting this option incorrectly may prevent the kernel - from booting. It is OK to leave it N. + Setting this option incorrectly may prevent the kernel from + booting. It is OK to leave it N. For more information, consult . config LH7A40X_ONE_BANK_PER_NODE bool "Optimize NUMA Node Tables for Size" - depends on !LH7A40X_CONTIGMEM + depends on ARCH_LH7A40X && !LH7A40X_CONTIGMEM help Say Y here to produce compact memory node tables. By default pairs of adjacent physical RAM banks are managed diff --git a/trunk/arch/arm/mach-lh7a40x/include/mach/memory.h b/trunk/arch/arm/mach-lh7a40x/include/mach/memory.h index 1da14ff66c93..f7107b4c197a 100644 --- a/trunk/arch/arm/mach-lh7a40x/include/mach/memory.h +++ b/trunk/arch/arm/mach-lh7a40x/include/mach/memory.h @@ -73,10 +73,4 @@ #endif -/* - * Sparsemem version of the above - */ -#define MAX_PHYSMEM_BITS 32 -#define SECTION_SIZE_BITS 24 - #endif diff --git a/trunk/arch/arm/mach-lh7a40x/ssp-cpld.c b/trunk/arch/arm/mach-lh7a40x/ssp-cpld.c index 2901d49d1484..51fbef9601b9 100644 --- a/trunk/arch/arm/mach-lh7a40x/ssp-cpld.c +++ b/trunk/arch/arm/mach-lh7a40x/ssp-cpld.c @@ -43,8 +43,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-lh7a40x/time.c b/trunk/arch/arm/mach-lh7a40x/time.c index 4601e425bae3..7fe9e06cf662 100644 --- a/trunk/arch/arm/mach-lh7a40x/time.c +++ b/trunk/arch/arm/mach-lh7a40x/time.c @@ -13,9 +13,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-loki/addr-map.c b/trunk/arch/arm/mach-loki/addr-map.c index 0332d8f5c18c..70ca56bb6f33 100644 --- a/trunk/arch/arm/mach-loki/addr-map.c +++ b/trunk/arch/arm/mach-loki/addr-map.c @@ -11,8 +11,8 @@ #include #include #include -#include #include +#include #include "common.h" /* diff --git a/trunk/arch/arm/mach-loki/irq.c b/trunk/arch/arm/mach-loki/irq.c index e1f97338d5b7..5a487930cb2f 100644 --- a/trunk/arch/arm/mach-loki/irq.c +++ b/trunk/arch/arm/mach-loki/irq.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include "common.h" diff --git a/trunk/arch/arm/mach-msm/board-halibut.c b/trunk/arch/arm/mach-msm/board-halibut.c index a24259133e07..995afc4ade4b 100644 --- a/trunk/arch/arm/mach-msm/board-halibut.c +++ b/trunk/arch/arm/mach-msm/board-halibut.c @@ -18,8 +18,6 @@ #include #include #include -#include -#include #include #include @@ -30,6 +28,9 @@ #include #include +#include +#include + #include #include diff --git a/trunk/arch/arm/mach-msm/common.c b/trunk/arch/arm/mach-msm/common.c index 604f8ade9587..3a511368a5d8 100644 --- a/trunk/arch/arm/mach-msm/common.c +++ b/trunk/arch/arm/mach-msm/common.c @@ -19,9 +19,9 @@ #include #include #include -#include #include +#include #include diff --git a/trunk/arch/arm/mach-msm/dma.c b/trunk/arch/arm/mach-msm/dma.c index 0c8f252637e1..9de08265d974 100644 --- a/trunk/arch/arm/mach-msm/dma.c +++ b/trunk/arch/arm/mach-msm/dma.c @@ -13,7 +13,7 @@ * */ -#include +#include #include #include diff --git a/trunk/arch/arm/mach-msm/io.c b/trunk/arch/arm/mach-msm/io.c index 7999e4ba8e20..5976200de99b 100644 --- a/trunk/arch/arm/mach-msm/io.c +++ b/trunk/arch/arm/mach-msm/io.c @@ -18,9 +18,9 @@ #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-msm/irq.c b/trunk/arch/arm/mach-msm/irq.c index 04b8d182ff8a..66901baf8c8e 100644 --- a/trunk/arch/arm/mach-msm/irq.c +++ b/trunk/arch/arm/mach-msm/irq.c @@ -19,11 +19,12 @@ #include #include #include -#include -#include +#include #include +#include + #include #define VIC_REG(off) (MSM_VIC_BASE + (off)) diff --git a/trunk/arch/arm/mach-msm/timer.c b/trunk/arch/arm/mach-msm/timer.c index 2bffe9b7e9fe..9f02d7dca985 100644 --- a/trunk/arch/arm/mach-msm/timer.c +++ b/trunk/arch/arm/mach-msm/timer.c @@ -20,11 +20,12 @@ #include #include #include -#include #include #include +#include + #define MSM_DGT_BASE (MSM_GPT_BASE + 0x10) #define MSM_DGT_SHIFT (5) diff --git a/trunk/arch/arm/mach-mv78xx0/addr-map.c b/trunk/arch/arm/mach-mv78xx0/addr-map.c index 311d5b0e9bc7..4004b672a2eb 100644 --- a/trunk/arch/arm/mach-mv78xx0/addr-map.c +++ b/trunk/arch/arm/mach-mv78xx0/addr-map.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include "common.h" /* diff --git a/trunk/arch/arm/mach-netx/generic.c b/trunk/arch/arm/mach-netx/generic.c index e60c4061dc40..1b40483ea753 100644 --- a/trunk/arch/arm/mach-netx/generic.c +++ b/trunk/arch/arm/mach-netx/generic.c @@ -22,10 +22,10 @@ #include #include #include -#include #include #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-netx/include/mach/system.h b/trunk/arch/arm/mach-netx/include/mach/system.h index 6c1023b8a9ab..27d8ef8e8e29 100644 --- a/trunk/arch/arm/mach-netx/include/mach/system.h +++ b/trunk/arch/arm/mach-netx/include/mach/system.h @@ -19,7 +19,7 @@ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H -#include +#include #include #include "netx-regs.h" diff --git a/trunk/arch/arm/mach-netx/pfifo.c b/trunk/arch/arm/mach-netx/pfifo.c index 03984943e16d..19ae0a72bea3 100644 --- a/trunk/arch/arm/mach-netx/pfifo.c +++ b/trunk/arch/arm/mach-netx/pfifo.c @@ -20,8 +20,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-netx/time.c b/trunk/arch/arm/mach-netx/time.c index 7c540c1f01fa..ac8e5bfed691 100644 --- a/trunk/arch/arm/mach-netx/time.c +++ b/trunk/arch/arm/mach-netx/time.c @@ -21,9 +21,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-netx/xc.c b/trunk/arch/arm/mach-netx/xc.c index 32eabf5dfa4f..04c34e82fe6d 100644 --- a/trunk/arch/arm/mach-netx/xc.c +++ b/trunk/arch/arm/mach-netx/xc.c @@ -21,8 +21,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-ns9xxx/gpio.c b/trunk/arch/arm/mach-ns9xxx/gpio.c index 5241e6a286cc..804c30075960 100644 --- a/trunk/arch/arm/mach-ns9xxx/gpio.c +++ b/trunk/arch/arm/mach-ns9xxx/gpio.c @@ -12,13 +12,13 @@ #include #include #include -#include #include #include #include #include #include +#include #include "gpio-ns9360.h" diff --git a/trunk/arch/arm/mach-ns9xxx/include/mach/uncompress.h b/trunk/arch/arm/mach-ns9xxx/include/mach/uncompress.h index 1b12d324b087..5dbc3c5167c8 100644 --- a/trunk/arch/arm/mach-ns9xxx/include/mach/uncompress.h +++ b/trunk/arch/arm/mach-ns9xxx/include/mach/uncompress.h @@ -11,7 +11,7 @@ #ifndef __ASM_ARCH_UNCOMPRESS_H #define __ASM_ARCH_UNCOMPRESS_H -#include +#include #define __REG(x) ((void __iomem __force *)(x)) diff --git a/trunk/arch/arm/mach-ns9xxx/irq.c b/trunk/arch/arm/mach-ns9xxx/irq.c index 22e0eb6e9ec4..38260d5f849b 100644 --- a/trunk/arch/arm/mach-ns9xxx/irq.c +++ b/trunk/arch/arm/mach-ns9xxx/irq.c @@ -10,7 +10,7 @@ */ #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/clock.c b/trunk/arch/arm/mach-omap1/clock.c index 478c2c9a22cb..5965cf09f8c4 100644 --- a/trunk/arch/arm/mach-omap1/clock.c +++ b/trunk/arch/arm/mach-omap1/clock.c @@ -17,8 +17,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-omap1/devices.c b/trunk/arch/arm/mach-omap1/devices.c index 99982d3380c9..ab708d4c597e 100644 --- a/trunk/arch/arm/mach-omap1/devices.c +++ b/trunk/arch/arm/mach-omap1/devices.c @@ -13,9 +13,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-omap1/fpga.c b/trunk/arch/arm/mach-omap1/fpga.c index 0d9f48f780ad..4449d86095f6 100644 --- a/trunk/arch/arm/mach-omap1/fpga.c +++ b/trunk/arch/arm/mach-omap1/fpga.c @@ -21,9 +21,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-omap1/id.c b/trunk/arch/arm/mach-omap1/id.c index 13083d7e692d..da13c3e82850 100644 --- a/trunk/arch/arm/mach-omap1/id.c +++ b/trunk/arch/arm/mach-omap1/id.c @@ -14,7 +14,8 @@ #include #include #include -#include + +#include #define OMAP_DIE_ID_0 0xfffe1800 #define OMAP_DIE_ID_1 0xfffe1804 diff --git a/trunk/arch/arm/mach-omap1/io.c b/trunk/arch/arm/mach-omap1/io.c index b3bd8ca85118..2b9750b200ce 100644 --- a/trunk/arch/arm/mach-omap1/io.c +++ b/trunk/arch/arm/mach-omap1/io.c @@ -11,10 +11,10 @@ #include #include #include -#include #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-omap1/irq.c b/trunk/arch/arm/mach-omap1/irq.c index 9ad5197075ff..0ec6c1ec4250 100644 --- a/trunk/arch/arm/mach-omap1/irq.c +++ b/trunk/arch/arm/mach-omap1/irq.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include @@ -48,6 +47,8 @@ #include #include +#include + #define IRQ_BANK(irq) ((irq) >> 5) #define IRQ_BIT(irq) ((irq) & 0x1f) diff --git a/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c b/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c index 71fe2cc7f7cf..610f51f18741 100644 --- a/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c +++ b/trunk/arch/arm/mach-omap1/leds-h2p2-debug.c @@ -12,8 +12,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/mailbox.c b/trunk/arch/arm/mach-omap1/mailbox.c index 59abbf331a96..af44eab1ed24 100644 --- a/trunk/arch/arm/mach-omap1/mailbox.c +++ b/trunk/arch/arm/mach-omap1/mailbox.c @@ -13,9 +13,9 @@ #include #include #include -#include #include #include +#include #define MAILBOX_ARM2DSP1 0x00 #define MAILBOX_ARM2DSP1b 0x04 diff --git a/trunk/arch/arm/mach-omap1/mux.c b/trunk/arch/arm/mach-omap1/mux.c index 062c905c2ba6..898516e362e7 100644 --- a/trunk/arch/arm/mach-omap1/mux.c +++ b/trunk/arch/arm/mach-omap1/mux.c @@ -24,10 +24,9 @@ */ #include #include -#include -#include - #include +#include +#include #include diff --git a/trunk/arch/arm/mach-omap1/pm.c b/trunk/arch/arm/mach-omap1/pm.c index 770d256c790b..63c4ea18b1ca 100644 --- a/trunk/arch/arm/mach-omap1/pm.c +++ b/trunk/arch/arm/mach-omap1/pm.c @@ -41,8 +41,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/serial.c b/trunk/arch/arm/mach-omap1/serial.c index aefc967fc003..0e25a996bb4c 100644 --- a/trunk/arch/arm/mach-omap1/serial.c +++ b/trunk/arch/arm/mach-omap1/serial.c @@ -18,8 +18,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-omap1/time.c b/trunk/arch/arm/mach-omap1/time.c index 2cf7e32bd293..e54708595ecf 100644 --- a/trunk/arch/arm/mach-omap1/time.c +++ b/trunk/arch/arm/mach-omap1/time.c @@ -43,10 +43,10 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap1/timer32k.c b/trunk/arch/arm/mach-omap1/timer32k.c index 705367ece174..e67760189d14 100644 --- a/trunk/arch/arm/mach-omap1/timer32k.c +++ b/trunk/arch/arm/mach-omap1/timer32k.c @@ -44,10 +44,10 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/board-2430sdp.c b/trunk/arch/arm/mach-omap2/board-2430sdp.c index cbb921ded7f9..d4d6385cad7c 100644 --- a/trunk/arch/arm/mach-omap2/board-2430sdp.c +++ b/trunk/arch/arm/mach-omap2/board-2430sdp.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include @@ -35,6 +34,8 @@ #include #include +#include + #define SDP2430_FLASH_CS 0 #define SDP2430_SMC91X_CS 5 diff --git a/trunk/arch/arm/mach-omap2/board-h4.c b/trunk/arch/arm/mach-omap2/board-h4.c index d4e3b6fc4705..9e2624ca70a2 100644 --- a/trunk/arch/arm/mach-omap2/board-h4.c +++ b/trunk/arch/arm/mach-omap2/board-h4.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include @@ -42,6 +41,8 @@ #include #include +#include + #define H4_FLASH_CS 0 #define H4_SMC91X_CS 1 diff --git a/trunk/arch/arm/mach-omap2/clock.c b/trunk/arch/arm/mach-omap2/clock.c index 97cde3d3611d..1d891e4a6933 100644 --- a/trunk/arch/arm/mach-omap2/clock.c +++ b/trunk/arch/arm/mach-omap2/clock.c @@ -21,8 +21,9 @@ #include #include #include -#include -#include +#include + +#include #include #include diff --git a/trunk/arch/arm/mach-omap2/clock24xx.c b/trunk/arch/arm/mach-omap2/clock24xx.c index d382eb0184ac..295e671e9cfd 100644 --- a/trunk/arch/arm/mach-omap2/clock24xx.c +++ b/trunk/arch/arm/mach-omap2/clock24xx.c @@ -24,13 +24,14 @@ #include #include #include + #include #include -#include #include #include #include +#include #include "memory.h" #include "clock.h" diff --git a/trunk/arch/arm/mach-omap2/clock34xx.c b/trunk/arch/arm/mach-omap2/clock34xx.c index e5b475f21081..3ff74952f835 100644 --- a/trunk/arch/arm/mach-omap2/clock34xx.c +++ b/trunk/arch/arm/mach-omap2/clock34xx.c @@ -25,11 +25,11 @@ #include #include #include -#include #include #include #include +#include #include "memory.h" #include "clock.h" diff --git a/trunk/arch/arm/mach-omap2/devices.c b/trunk/arch/arm/mach-omap2/devices.c index 2ee954a0bc7c..7a7f02559075 100644 --- a/trunk/arch/arm/mach-omap2/devices.c +++ b/trunk/arch/arm/mach-omap2/devices.c @@ -13,9 +13,9 @@ #include #include #include -#include #include +#include #include #include diff --git a/trunk/arch/arm/mach-omap2/gpmc.c b/trunk/arch/arm/mach-omap2/gpmc.c index af1081a0b27c..f51d69bc457d 100644 --- a/trunk/arch/arm/mach-omap2/gpmc.c +++ b/trunk/arch/arm/mach-omap2/gpmc.c @@ -15,8 +15,8 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-omap2/id.c b/trunk/arch/arm/mach-omap2/id.c index 209177c7f22f..a5d4526ac4d6 100644 --- a/trunk/arch/arm/mach-omap2/id.c +++ b/trunk/arch/arm/mach-omap2/id.c @@ -14,9 +14,8 @@ #include #include #include -#include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-omap2/io.c b/trunk/arch/arm/mach-omap2/io.c index 7c3d6289c05f..987351f07d7b 100644 --- a/trunk/arch/arm/mach-omap2/io.c +++ b/trunk/arch/arm/mach-omap2/io.c @@ -15,9 +15,9 @@ #include #include #include -#include #include +#include #include diff --git a/trunk/arch/arm/mach-omap2/irq.c b/trunk/arch/arm/mach-omap2/irq.c index 196a9565a8dc..9ef15b31d8fc 100644 --- a/trunk/arch/arm/mach-omap2/irq.c +++ b/trunk/arch/arm/mach-omap2/irq.c @@ -13,10 +13,10 @@ #include #include #include -#include #include #include #include +#include #define INTC_REVISION 0x0000 #define INTC_SYSCONFIG 0x0010 diff --git a/trunk/arch/arm/mach-omap2/mailbox.c b/trunk/arch/arm/mach-omap2/mailbox.c index 32b7af3c610b..a480b96948e4 100644 --- a/trunk/arch/arm/mach-omap2/mailbox.c +++ b/trunk/arch/arm/mach-omap2/mailbox.c @@ -14,9 +14,9 @@ #include #include #include -#include #include #include +#include #define MAILBOX_REVISION 0x00 #define MAILBOX_SYSCONFIG 0x10 diff --git a/trunk/arch/arm/mach-omap2/memory.c b/trunk/arch/arm/mach-omap2/memory.c index ab1462b02e6e..6b49cc9cbdcb 100644 --- a/trunk/arch/arm/mach-omap2/memory.c +++ b/trunk/arch/arm/mach-omap2/memory.c @@ -21,7 +21,8 @@ #include #include #include -#include + +#include #include #include diff --git a/trunk/arch/arm/mach-omap2/mux.c b/trunk/arch/arm/mach-omap2/mux.c index 6b7d672058b9..443d07fef7f3 100644 --- a/trunk/arch/arm/mach-omap2/mux.c +++ b/trunk/arch/arm/mach-omap2/mux.c @@ -25,10 +25,9 @@ */ #include #include -#include -#include - #include +#include +#include #include #include diff --git a/trunk/arch/arm/mach-omap2/pm.c b/trunk/arch/arm/mach-omap2/pm.c index 55361c16c9d9..8671e1079ab5 100644 --- a/trunk/arch/arm/mach-omap2/pm.c +++ b/trunk/arch/arm/mach-omap2/pm.c @@ -24,8 +24,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-omap2/serial.c b/trunk/arch/arm/mach-omap2/serial.c index 7d9444adc5df..adc8a26a8fb0 100644 --- a/trunk/arch/arm/mach-omap2/serial.c +++ b/trunk/arch/arm/mach-omap2/serial.c @@ -17,7 +17,8 @@ #include #include #include -#include + +#include #include #include diff --git a/trunk/arch/arm/mach-orion5x/addr-map.c b/trunk/arch/arm/mach-orion5x/addr-map.c index 719957e05d9e..bea37972120a 100644 --- a/trunk/arch/arm/mach-orion5x/addr-map.c +++ b/trunk/arch/arm/mach-orion5x/addr-map.c @@ -13,8 +13,8 @@ #include #include #include -#include #include +#include #include "common.h" /* diff --git a/trunk/arch/arm/mach-orion5x/gpio.c b/trunk/arch/arm/mach-orion5x/gpio.c index fc419868e39f..cd8a16f67d2b 100644 --- a/trunk/arch/arm/mach-orion5x/gpio.c +++ b/trunk/arch/arm/mach-orion5x/gpio.c @@ -15,8 +15,8 @@ #include #include #include -#include #include +#include #include #include "common.h" diff --git a/trunk/arch/arm/mach-orion5x/irq.c b/trunk/arch/arm/mach-orion5x/irq.c index 02ceeb3c6737..2545ff9e5830 100644 --- a/trunk/arch/arm/mach-orion5x/irq.c +++ b/trunk/arch/arm/mach-orion5x/irq.c @@ -13,8 +13,8 @@ #include #include #include -#include #include +#include #include #include #include "common.h" diff --git a/trunk/arch/arm/mach-orion5x/mpp.c b/trunk/arch/arm/mach-orion5x/mpp.c index 640ea2a3fc6c..c04ab0e16ea1 100644 --- a/trunk/arch/arm/mach-orion5x/mpp.c +++ b/trunk/arch/arm/mach-orion5x/mpp.c @@ -11,8 +11,8 @@ #include #include #include -#include #include +#include #include "common.h" #include "mpp.h" diff --git a/trunk/arch/arm/mach-pnx4008/clock.c b/trunk/arch/arm/mach-pnx4008/clock.c index 898c0e88acbc..24d036a24a72 100644 --- a/trunk/arch/arm/mach-pnx4008/clock.c +++ b/trunk/arch/arm/mach-pnx4008/clock.c @@ -20,9 +20,9 @@ #include #include #include -#include #include +#include #include #include "clock.h" diff --git a/trunk/arch/arm/mach-pnx4008/core.c b/trunk/arch/arm/mach-pnx4008/core.c index 45734bb880a8..3ba46ede9bbd 100644 --- a/trunk/arch/arm/mach-pnx4008/core.c +++ b/trunk/arch/arm/mach-pnx4008/core.c @@ -25,9 +25,9 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-pnx4008/dma.c b/trunk/arch/arm/mach-pnx4008/dma.c index ac2f70eddb9e..833c56be7344 100644 --- a/trunk/arch/arm/mach-pnx4008/dma.c +++ b/trunk/arch/arm/mach-pnx4008/dma.c @@ -21,12 +21,12 @@ #include #include #include -#include #include #include #include #include +#include #include #include diff --git a/trunk/arch/arm/mach-pnx4008/gpio.c b/trunk/arch/arm/mach-pnx4008/gpio.c index 015cc21d5f55..fb51f7279e95 100644 --- a/trunk/arch/arm/mach-pnx4008/gpio.c +++ b/trunk/arch/arm/mach-pnx4008/gpio.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include diff --git a/trunk/arch/arm/mach-pnx4008/include/mach/system.h b/trunk/arch/arm/mach-pnx4008/include/mach/system.h index e12e7abfcbcf..8985a4622b8c 100644 --- a/trunk/arch/arm/mach-pnx4008/include/mach/system.h +++ b/trunk/arch/arm/mach-pnx4008/include/mach/system.h @@ -21,8 +21,8 @@ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H -#include #include +#include #include static void arch_idle(void) diff --git a/trunk/arch/arm/mach-pnx4008/include/mach/timex.h b/trunk/arch/arm/mach-pnx4008/include/mach/timex.h index 5ff0196c0f16..956fbd8e977c 100644 --- a/trunk/arch/arm/mach-pnx4008/include/mach/timex.h +++ b/trunk/arch/arm/mach-pnx4008/include/mach/timex.h @@ -14,8 +14,8 @@ #ifndef __PNX4008_TIMEX_H #define __PNX4008_TIMEX_H -#include #include +#include #define CLOCK_TICK_RATE 1000000 diff --git a/trunk/arch/arm/mach-pnx4008/irq.c b/trunk/arch/arm/mach-pnx4008/irq.c index a9ce02b4bf17..5c4f55af5d4b 100644 --- a/trunk/arch/arm/mach-pnx4008/irq.c +++ b/trunk/arch/arm/mach-pnx4008/irq.c @@ -23,8 +23,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-pnx4008/pm.c b/trunk/arch/arm/mach-pnx4008/pm.c index b3d8d53e32ef..f970906d8848 100644 --- a/trunk/arch/arm/mach-pnx4008/pm.c +++ b/trunk/arch/arm/mach-pnx4008/pm.c @@ -18,8 +18,8 @@ #include #include #include -#include +#include #include #include #include diff --git a/trunk/arch/arm/mach-pnx4008/serial.c b/trunk/arch/arm/mach-pnx4008/serial.c index f40961e51914..9be84bbb30e8 100644 --- a/trunk/arch/arm/mach-pnx4008/serial.c +++ b/trunk/arch/arm/mach-pnx4008/serial.c @@ -12,7 +12,8 @@ #include #include -#include + +#include #include #include diff --git a/trunk/arch/arm/mach-pnx4008/time.c b/trunk/arch/arm/mach-pnx4008/time.c index fc0ba183fe12..180975244f96 100644 --- a/trunk/arch/arm/mach-pnx4008/time.c +++ b/trunk/arch/arm/mach-pnx4008/time.c @@ -22,10 +22,10 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/trunk/arch/arm/mach-pxa/Kconfig b/trunk/arch/arm/mach-pxa/Kconfig index e484f609feda..e8ee7ec9ff6d 100644 --- a/trunk/arch/arm/mach-pxa/Kconfig +++ b/trunk/arch/arm/mach-pxa/Kconfig @@ -210,7 +210,6 @@ config MACH_ARMCORE bool "CompuLab CM-X270 modules" select PXA27x select IWMMXT - select ZONE_DMA if PCI config MACH_MAGICIAN bool "Enable HTC Magician Support" diff --git a/trunk/arch/arm/mach-pxa/corgi.c b/trunk/arch/arm/mach-pxa/corgi.c index fe5f1ba6c34b..123a950db466 100644 --- a/trunk/arch/arm/mach-pxa/corgi.c +++ b/trunk/arch/arm/mach-pxa/corgi.c @@ -21,7 +21,6 @@ #include #include #include -#include #include