You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
David S. Miller
9f825962ef
sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy.
...
This adds optimized memset/bzero/page-clear routines for Niagara-4.
We basically can do what powerpc has been able to do for a decade (via
the "dcbz" instruction), which is use cache line clearing stores for
bzero and memsets with a 'c' argument of zero.
As long as we make the cache initializing store to each 32-byte
subblock of the L2 cache line, it works.
As with other Niagara-4 optimized routines, the key is to make sure to
avoid any usage of the %asi register, as reads and writes to it cost
at least 50 cycles.
For the user clear cases, we don't use these new routines, we use the
Niagara-1 variants instead. Those have to use %asi in an unavoidable
way.
A Niagara-4 8K page clear costs just under 600 cycles.
Add definitions of the MRU variants of the cache initializing store
ASIs. By default, cache initializing stores install the line as Least
Recently Used. If we know we're going to use the data immediately
(which is true for page copies and clears) we can use the Most
Recently Used variant, to decrease the likelyhood of the lines being
evicted before they get used.
Signed-off-by: David S. Miller <davem@davemloft.net>
13 years ago
..
COPYING.LIB
…
GENbzero.S
…
GENcopy_from_user.S
…
GENcopy_to_user.S
…
GENmemcpy.S
…
GENpage.S
…
GENpatch.S
…
Makefile
sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy.
13 years ago
NG2copy_from_user.S
…
NG2copy_to_user.S
…
NG2memcpy.S
sparc64: Fix return value of Niagara-2 memcpy.
13 years ago
NG2patch.S
…
NG4clear_page.S
sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy.
13 years ago
NG4copy_from_user.S
sparc64: Fix comment type in NG4 copy from user.
13 years ago
NG4copy_page.S
sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy.
13 years ago
NG4copy_to_user.S
sparc64: Add SPARC-T4 optimized memcpy.
13 years ago
NG4memcpy.S
sparc64: Fix trailing whitespace in NG4 memcpy.
13 years ago
NG4memset.S
sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy.
13 years ago
NG4patch.S
sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy.
13 years ago
NGbzero.S
…
NGcopy_from_user.S
…
NGcopy_to_user.S
…
NGmemcpy.S
…
NGpage.S
sparc64: Add SPARC-T4 optimized memcpy.
13 years ago
NGpatch.S
…
PeeCeeI.c
…
U1copy_from_user.S
…
U1copy_to_user.S
…
U1memcpy.S
sparc64: Consistently use fsrc2 rather than fmovd in optimized asm.
13 years ago
U3copy_from_user.S
…
U3copy_to_user.S
…
U3memcpy.S
…
U3patch.S
…
VISsave.S
…
ashldi3.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
ashrdi3.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
atomic32.c
…
atomic_64.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
bitext.c
…
bitops.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
blockops.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
bzero.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
checksum_32.S
…
checksum_64.S
…
clear_page.S
…
cmpdi2.c
…
copy_in_user.S
…
copy_page.S
sparc64: Consistently use fsrc2 rather than fmovd in optimized asm.
13 years ago
copy_user.S
…
csum_copy.S
…
csum_copy_from_user.S
…
csum_copy_to_user.S
…
divdi3.S
sparc32: Kill off software 32-bit multiply/divide routines.
13 years ago
ffs.S
…
hweight.S
…
iomap.c
…
ipcsum.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
ksyms.c
sparc64: Add SHA1 driver making use of the 'sha1' instruction.
13 years ago
libgcc.h
…
locks.S
…
lshrdi3.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
mcount.S
…
memcmp.S
…
memcpy.S
…
memmove.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
memscan_32.S
…
memscan_64.S
…
memset.S
…
muldi3.S
sparc32: Kill off software 32-bit multiply/divide routines.
13 years ago
strlen.S
…
strncmp_32.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
strncmp_64.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago
ucmpdi2.c
sparc32: add ucmpdi2
13 years ago
udivdi3.S
sparc32: Kill off software 32-bit multiply/divide routines.
13 years ago
user_fixup.c
…
usercopy.c
lib: Sparc's strncpy_from_user is generic enough, move under lib/
13 years ago
xor.S
sparc: Convert some assembler over to linakge.h's ENTRY/ENDPROC
13 years ago