linux/arch/arm
Daniel Thompson e38361d032 ARM: 8091/2: add get_user() support for 8 byte types
Recent contributions, including to DRM and binder, introduce 64-bit
values in their interfaces. A common motivation for this is to allow
the same ABI for 32- and 64-bit userspaces (and therefore also a shared
ABI for 32/64 hybrid userspaces). Anyhow, the developers would like to
avoid gotchas like having to use copy_from_user().

This feature is already implemented on x86-32 and the majority of other
32-bit architectures. The current list of get_user_8 hold out
architectures are: arm, avr32, blackfin, m32r, metag, microblaze,
mn10300, sh.

Credit:

    My name sits rather uneasily at the top of this patch. The v1 and
    v2 versions of the patch were written by Rob Clark and to produce v4
    I mostly copied code from Russell King and H. Peter Anvin. However I
    have mangled the patch sufficiently that *blame* is rightfully mine
    even if credit should more widely shared.

Changelog:

v5: updated to use the ret macro (requested by Russell King)
v4: remove an inlined add on big endian systems (spotted by Russell King),
    used __ARMEB__ rather than BIG_ENDIAN (to match rest of file),
    cleared r3 on EFAULT during __get_user_8.
v3: fix a couple of checkpatch issues
v2: pass correct size to check_uaccess, and better handling of narrowing
    double word read with __get_user_xb() (Russell King's suggestion)
v1: original

Signed-off-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2014-07-18 12:29:34 +01:00
..
boot ARM: 8079/1: zImage: identify kernel endianness 2014-07-18 12:29:08 +01:00
common ARM: 8081/1: MCPM: provide infrastructure to allow for MCPM loopback 2014-07-18 11:58:00 +01:00
configs The i.MX fixes for 3.16: 2014-06-23 14:12:48 +02:00
crypto ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
firmware
include ARM: 8091/2: add get_user() support for 8 byte types 2014-07-18 12:29:34 +01:00
kernel ARM: 8088/1: vmlinux.lds.S: drop redundant .comment 2014-07-18 12:29:23 +01:00
kvm ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
lib ARM: 8091/2: add get_user() support for 8 byte types 2014-07-18 12:29:34 +01:00
mach-at91 ARM: at91: fix at91_sysirq_mask_rtc for sam9x5 SoCs 2014-06-06 16:08:08 -07:00
mach-axxia ARM: Add platform support for LSI AXM55xx SoC 2014-05-23 18:18:39 +02:00
mach-bcm ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-berlin ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-clps711x ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
mach-cns3xxx ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-davinci ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-exynos ARM: make it easier to check the CPU part number correctly 2014-07-18 12:29:02 +01:00
mach-footbridge ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
mach-gemini
mach-highbank ARM: Remove ARCH_HAS_CPUFREQ config option 2014-06-17 17:09:39 +02:00
mach-hisi
mach-imx ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-integrator ARM: integrator: fix OF-related regression 2014-06-24 14:27:03 +02:00
mach-iop13xx ARM: 8101/1: mach-iop13xx: fix possible build failure 2014-07-18 11:57:59 +01:00
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone ARM: keystone requires ARM_PATCH_PHYS_VIRT 2014-06-17 17:09:22 +02:00
mach-kirkwood mvebu SoC changes for v3.16 2014-05-19 21:59:55 -07:00
mach-ks8695
mach-lpc32xx mmc: mmci: Enforce DMA configuration through DT 2014-06-02 11:20:25 +02:00
mach-mmp
mach-moxart ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-msm Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next 2014-06-05 15:57:04 -07:00
mach-mv78xx0
mach-mvebu ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-mxs
mach-netx
mach-nomadik ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-nspire
mach-omap1 ARM: OMAP: replace checks for CONFIG_USB_GADGET_OMAP 2014-05-16 14:14:25 -07:00
mach-omap2 ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-orion5x ARM: SoC updates for 3.16 (part 2) 2014-06-11 11:03:24 -07:00
mach-picoxcell
mach-prima2 ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-pxa ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-qcom ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-realview Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next 2014-06-05 15:57:04 -07:00
mach-rockchip Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next 2014-06-05 15:57:04 -07:00
mach-rpc
mach-s3c24xx ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-s3c64xx ARM: samsung: make SAMSUNG_DMADEV optional 2014-06-17 17:09:37 +02:00
mach-s5p64x0 ARM: samsung: make SAMSUNG_DMADEV optional 2014-06-17 17:09:37 +02:00
mach-s5pc100 ARM: samsung: make SAMSUNG_DMADEV optional 2014-06-17 17:09:37 +02:00
mach-s5pv210 ARM: samsung: make SAMSUNG_DMADEV optional 2014-06-17 17:09:37 +02:00
mach-sa1100 ARM: 8085/1: sa1100: collie: add top boot mtd partition 2014-06-29 10:29:34 +01:00
mach-shmobile ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-socfpga ARM: l2c: socfpga: convert to generic l2c OF initialisation 2014-05-30 00:50:04 +01:00
mach-spear ARM: Remove ARCH_HAS_CPUFREQ config option 2014-06-17 17:09:39 +02:00
mach-sti Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2014-06-24 13:59:00 -07:00
mach-sunxi ARM: sunxi: allow building without reset controller 2014-05-26 21:27:22 +02:00
mach-tegra ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mach-u300 ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
mach-ux500 Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2014-06-24 13:59:00 -07:00
mach-versatile
mach-vexpress ARM: make it easier to check the CPU part number correctly 2014-07-18 12:29:02 +01:00
mach-vt8500 ARM: Remove ARCH_HAS_CPUFREQ config option 2014-06-17 17:09:39 +02:00
mach-w90x900
mach-zynq ARM: Remove ARCH_HAS_CPUFREQ config option 2014-06-17 17:09:39 +02:00
mm ARM: 8090/1: add revision info for PL310 errata 588369 and 727915 2014-07-18 12:29:26 +01:00
net net: filter: get rid of BPF_S_* enum 2014-06-01 22:16:58 -07:00
nwfpe ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
oprofile ARM: 8075/1: oprofile: Use of arm_get_current_stackframe 2014-07-18 12:29:20 +01:00
plat-iop
plat-omap ARM: OMAP: add deprecation message for legacy OMAP DMA API 2014-07-01 15:00:26 +01:00
plat-orion
plat-pxa
plat-samsung Couple of DT fixes for STi platform issues discovered on V3.16-rc1. 2014-06-20 10:59:05 +02:00
plat-versatile
tools
vfp ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
xen ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
Kconfig ARM: exynos: cleanup kconfig option display 2014-06-17 17:09:41 +02:00
Kconfig-nommu
Kconfig.debug Samsung Exynos updates for 3.16 2014-05-30 21:44:49 -07:00
Makefile ARM: 8096/1: Describe required sort order for textofs-y (TEXT_OFFSET) 2014-07-18 12:29:27 +01:00