1
linux/arch/arm
Nicolas Pitre cb9dc92c0a [ARM] lower overhead with alternative copy_to_user for small copies
Because the alternate copy_to_user implementation has a higher setup cost
than the standard implementation, the size of the memory area to copy
is tested and the standard implementation invoked instead when that size
is too small.  Still, that test is made after the processor has preserved
a bunch of registers on the stack which have to be reloaded right away
needlessly in that case, causing a measurable performance regression
compared to plain usage of the standard implementation only.

To make the size test overhead negligible, let's factorize it out of
the alternate copy_to_user function where it is clear to the compiler
that no stack frame is needed.  Thanks to CONFIG_ARM_UNWIND allowing
for frame pointers to be disabled and tail call optimization to kick in,
the overhead in the small copy case becomes only 3 assembly instructions.

A similar trick is applied to clear_user as well.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
2009-05-29 22:38:33 -04:00
..
boot arm: allow usage of string functions in linux/string.h 2009-03-31 13:05:36 +10:30
common [ARM] smp: fix cpumask usage in ARM SMP code 2009-05-17 16:22:46 +01:00
configs Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 2009-05-05 09:22:26 +01:00
include/asm [ARM] allow for alternative __copy_to_user/__clear_user implementations 2009-05-29 22:34:45 -04:00
kernel [ARM] smp: fix cpumask usage in ARM SMP code 2009-05-17 16:22:46 +01:00
lib [ARM] lower overhead with alternative copy_to_user for small copies 2009-05-29 22:38:33 -04:00
mach-aaec2000
mach-at91 clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-clps711x
mach-davinci Merge branch 'fix/asoc' into for-linus 2009-05-15 15:38:26 +02:00
mach-ebsa110
mach-ep93xx [ARM] 5509/1: ep93xx: clkdev enable UARTS 2009-05-16 19:55:56 +01:00
mach-footbridge
mach-gemini [ARM] arch_reset() now takes a second parameter 2009-03-30 10:40:12 +01:00
mach-h720x
mach-imx Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-04-24 08:36:41 -07:00
mach-integrator [ARM] 5517/1: integrator: don't put clock lookups in __initdata 2009-05-18 17:43:16 +01:00
mach-iop13xx dma-mapping: replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64) 2009-04-07 08:31:10 -07:00
mach-iop32x
mach-iop33x
mach-ixp4xx Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-05-10 10:46:45 -07:00
mach-ixp23xx
mach-ixp2000
mach-kirkwood [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-ks8695
mach-l7200 [ARM] mach-l7200: fix spelling of SYS_CLOCK_OFF 2009-05-18 11:25:08 +01:00
mach-lh7a40x
mach-loki [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-mmp [ARM] arch_reset() now takes a second parameter 2009-03-30 10:40:12 +01:00
mach-msm clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-mv78xx0 [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-mx1 MX1ADS: remove I2C ifdefs 2009-04-16 12:57:15 +02:00
mach-mx2 imx21: activate i2c 2009-04-16 12:57:13 +02:00
mach-mx3 mx31ads: Mark as having full regulatoion constraints with 1133-EV1 board 2009-04-16 13:03:56 +02:00
mach-netx clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-ns9xxx clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-omap1 Merge branch 'omap-clock-fixes' into omap-fixes 2009-04-24 09:56:16 -07:00
mach-omap2 ARM: OMAP2/3: Change omapfb to use clkdev for dispc and rfbi, v2 2009-05-16 08:28:17 -07:00
mach-orion5x [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-pnx4008
mach-pxa [ARM] 5513/1: Eurotech VIPER SBC: fix compilation error 2009-05-16 19:55:56 +01:00
mach-realview [ARM] realview: fix broadcast tick support 2009-05-17 17:11:35 +01:00
mach-rpc
mach-s3c24a0/include/mach
mach-s3c2400
mach-s3c2410 [ARM] S3C2410: mach-bast.c registering i2c data too early 2009-05-15 15:13:25 +01:00
mach-s3c2412 [ARM] S3C2412: Add missing cache flush in suspend code 2009-05-01 12:28:16 +01:00
mach-s3c2440 [ARM] Osiris: Fix double initialisation in machine block 2009-04-17 12:42:24 +01:00
mach-s3c2442
mach-s3c2443
mach-s3c6400 [ARM] S3C64XX: Add S3C64XX_PA_IIS{0,1} to <mach/map.h> 2009-05-01 12:28:16 +01:00
mach-s3c6410 [ARM] SMDK6410: Request GPIOs for LCD power control 2009-04-15 14:46:03 +01:00
mach-sa1100 [ARM] lart: fix build error 2009-04-26 13:56:01 +01:00
mach-shark
mach-versatile [ARM] 5518/1: versatile: don't put clock lookups in __initdata 2009-05-18 17:43:06 +01:00
mach-w90x900
mm Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-05-02 16:40:20 -07:00
nwfpe [ARM] nwfpe: fix 'floatx80_is_nan' sparse warning 2009-05-15 12:49:14 +01:00
oprofile Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-03-28 14:03:14 -07:00
plat-iop dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
plat-mxc mx27ads: move PBC mapping out of vmalloc space 2009-05-05 09:37:08 +02:00
plat-omap ARM: OMAP3: Fix number of GPIO lines for 34xx 2009-05-16 08:28:16 -07:00
plat-orion Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-04-24 08:36:41 -07:00
plat-pxa [ARM] pxa: fix issue of muxed GPIO irq_chip functions touching non-muxed GPIOs 2009-04-27 11:45:16 +08:00
plat-s3c [ARM] S3C: Do not set clk->owner field if unset 2009-05-15 15:21:57 +01:00
plat-s3c24xx [ARM] S3C24XX: Fix unused code warning in arch/arm/plat-s3c24xx/dma.c 2009-05-15 15:13:24 +01:00
plat-s3c64xx [ARM] S3C64XX: fix GPIO debug 2009-05-15 15:13:18 +01:00
tools
vfp [ARM] 5440/1: Fix VFP state corruption due to preemption during VFP exceptions 2009-04-01 22:17:50 +01:00
Kconfig [ARM] alternative copy_to_user/clear_user implementation 2009-05-29 22:36:45 -04:00
Kconfig-nommu
Kconfig.debug
Makefile Merge branch 'for-rmk' of git://gitorious.org/linux-gemini/mainline into devel 2009-03-26 23:10:11 +00:00