aboutsummaryrefslogtreecommitdiff
path: root/arch/sparc64/lib/NGmemcpy.S
AgeCommit message (Collapse)Author
2007-10-02[SPARC64]: Don't use in/local regs for ldx/stx data in N1 memcpy.David S. Miller
It doesn't matter for use in 64-bit objects, but when used in 32-bit environments the top 32-bits of the local and in registers will get chopped off on the next register window spill/restore which leads to difficult to track down and subtle bugs. Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-02[SPARC64]: Fix missing load-twin usage in Niagara-1 memcpy.David S. Miller
For the case where the source is not aligned modulo 8 we don't use load-twins to suck the data in and this kills performance since normal loads allocate in the L1 cache (unlike load-twin) and thus big memcpys swipe the entire L1 D-cache. We need to allocate a register window to implement this properly, but that actually simplifies a lot of things as a nice side-effect. Signed-off-by: David S. Miller <davem@davemloft.net>
2007-03-19[SPARC64]: store-init needs trailing membar.David S. Miller
The manual says that it is required and we actually have crash reports where loads see stale data due to not having membars here. In one case the networking does: memset(skb, 0, offsetof(struct sk_buff, truesize)); and then some code later checks skb->nohdr for zero, but it's still the value that was there before the memset(). Note that arch/sparc64/lib/xor.S already got this right. Signed-off-by: David S. Miller <davem@davemloft.net>
2006-03-20[SPARC64]: Fix some Niagara memcpy() bugs.David S. Miller
We need to restore the %asi register properly. For the kernel this means get_fs(), for user this means ASI_PNF. Also, NGcopy_to_user.S was including U3memcpy.S instead of NGmemcpy.S, oops :-) Signed-off-by: David S. Miller <davem@davemloft.net>
2006-03-20[SPARC64]: Niagara optimized memcpy() and copy_{to,from}_user().David S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>