aboutsummaryrefslogtreecommitdiffstats
path: root/usr
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2010-01-18 17:00:34 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-04-26 10:47:58 -0400
commit6c7ba7a3df486d5e2940881c0983e063857dee72 (patch)
treeb36d4a5506efbce6b6399d8e519d689d5132013f /usr
parente7ca1656d8124ec81c9b86944010040f1dfd8191 (diff)
x86-64, rwsem: 64-bit xadd rwsem implementation
commit 1838ef1d782f7527e6defe87e180598622d2d071 upstream. For x86-64, 32767 threads really is not enough. Change rwsem_count_t to a signed long, so that it is 64 bits on x86-64. This required the following changes to the assembly code: a) %z0 doesn't work on all versions of gcc! At least gcc 4.4.2 as shipped with Fedora 12 emits "ll" not "q" for 64 bits, even for integer operands. Newer gccs apparently do this correctly, but avoid this problem by using the _ASM_ macros instead of %z. b) 64 bits immediates are only allowed in "movq $imm,%reg" constructs... no others. Change some of the constraints to "e", and fix the one case where we would have had to use an invalid immediate -- in that case, we only care about the upper half anyway, so just access the upper half. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> LKML-Reference: <tip-bafaecd11df15ad5b1e598adc7736afcd38ee13d@git.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'usr')
0 files changed, 0 insertions, 0 deletions