1
linux/arch/tile/lib
Chris Metcalf 47d632f9f8 arch/tile: optimize get_user/put_user and friends
Use direct load/store for the get_user/put_user.

Previously, we would call out to a helper routine that would do the
appropriate thing and then return, handling the possible exception
internally.  Now we inline the load or store, along with a "we succeeded"
indication in a register; if the load or store faults, we write a
"we failed" indication into the same register and then return to the
following instruction.  This is more efficient and gives us more compact
code, as well as being more in line with what other architectures do.

The special futex assembly source file for TILE-Gx also disappears in
this change; we just use the same inlining idiom there as well, putting
the appropriate atomic operations directly into futex_atomic_op_inuser()
(and thus into the FUTEX_WAIT function).

The underlying atomic copy_from_user, copy_to_user functions were
renamed using the (cryptic) x86 convention as copy_from_user_ll and
copy_to_user_ll.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
2012-05-25 12:48:23 -04:00
..
atomic_32.c arch/tile: optimize get_user/put_user and friends 2012-05-25 12:48:23 -04:00
atomic_asm_32.S tile: revert change from <asm/atomic.h> to <linux/atomic.h> in asm files 2011-10-13 08:25:01 -04:00
cacheflush.c arch/tile: fix finv_buffer_remote() for tilegx 2012-04-02 12:13:53 -04:00
checksum.c
cpumask.c arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
delay.c arch/tile: fix __ndelay etc to work better 2011-03-01 16:20:04 -05:00
exports.c arch/tile: optimize get_user/put_user and friends 2012-05-25 12:48:23 -04:00
Makefile arch/tile: make sure to build memcpy_user_64 without frame pointer 2012-04-02 12:12:42 -04:00
memchr_32.c arch/tile: fix memchr() not to dereference memory for zero length 2010-11-24 13:57:42 -05:00
memchr_64.c arch/tile: support building big-endian kernel 2012-05-25 12:48:22 -04:00
memcpy_32.S arch/tile: minor whitespace/naming changes for string support files 2010-10-15 15:38:54 -04:00
memcpy_64.c arch/tile: support building big-endian kernel 2012-05-25 12:48:22 -04:00
memcpy_tile64.c arch/tile: support 4KB page size as well as 64KB 2011-03-10 13:17:53 -05:00
memcpy_user_64.c arch/tile: make sure to build memcpy_user_64 without frame pointer 2012-04-02 12:12:42 -04:00
memmove.c arch/tile: minor whitespace/naming changes for string support files 2010-10-15 15:38:54 -04:00
memset_32.c arch/tile: minor whitespace/naming changes for string support files 2010-10-15 15:38:54 -04:00
memset_64.c arch/tile: finish enabling support for TILE-Gx 64-bit chip 2011-05-12 15:52:12 -04:00
spinlock_32.c arch/tile: misplaced parens near likely 2012-03-12 15:32:18 -04:00
spinlock_64.c arch/tile: finish enabling support for TILE-Gx 64-bit chip 2011-05-12 15:52:12 -04:00
spinlock_common.h arch/tile: fix bug in delay_backoff() 2012-04-02 12:13:15 -04:00
strchr_32.c
strchr_64.c arch/tile: support building big-endian kernel 2012-05-25 12:48:22 -04:00
string-endian.h arch/tile: support building big-endian kernel 2012-05-25 12:48:22 -04:00
strlen_32.c arch/tile: minor whitespace/naming changes for string support files 2010-10-15 15:38:54 -04:00
strlen_64.c arch/tile: support building big-endian kernel 2012-05-25 12:48:22 -04:00
uaccess.c arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
usercopy_32.S arch/tile: optimize get_user/put_user and friends 2012-05-25 12:48:23 -04:00
usercopy_64.S arch/tile: optimize get_user/put_user and friends 2012-05-25 12:48:23 -04:00