repo.or.cz
/
linux
/
fpc-iii.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
x86/boot: Rename overlapping memcpy() to memmove()
[linux/fpc-iii.git]
/
arch
/
sparc
/
lib
/
ipcsum.S
blob
4742d59029ee3677d0a77cd121d4437bb823e151
1
#include <linux/linkage.h>
2
3
.text
4
ENTRY(ip_fast_csum) /* %o0 = iph, %o1 = ihl */
5
sub %o1, 4, %g7
6
lduw [%o0 + 0x00], %o2
7
lduw [%o0 + 0x04], %g2
8
lduw [%o0 + 0x08], %g3
9
addcc %g2, %o2, %o2
10
lduw [%o0 + 0x0c], %g2
11
addccc %g3, %o2, %o2
12
lduw [%o0 + 0x10], %g3
13
14
addccc %g2, %o2, %o2
15
addc %o2, %g0, %o2
16
1: addcc %g3, %o2, %o2
17
add %o0, 4, %o0
18
addccc %o2, %g0, %o2
19
subcc %g7, 1, %g7
20
be,a,pt %icc, 2f
21
sll %o2, 16, %g2
22
23
lduw [%o0 + 0x10], %g3
24
ba,pt %xcc, 1b
25
nop
26
2: addcc %o2, %g2, %g2
27
srl %g2, 16, %o2
28
addc %o2, %g0, %o2
29
xnor %g0, %o2, %o2
30
set 0xffff, %o1
31
retl
32
and %o2, %o1, %o0
33
ENDPROC(ip_fast_csum)