projects
/
linux-2.6
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
blame
|
history
|
raw
|
HEAD
Merge branch 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux...
[linux-2.6]
/
arch
/
sparc64
/
lib
/
ipcsum.S
1
.text
2
.align 32
3
.globl ip_fast_csum
4
.type ip_fast_csum,#function
5
ip_fast_csum: /* %o0 = iph, %o1 = ihl */
6
sub %o1, 4, %g7
7
lduw [%o0 + 0x00], %o2
8
lduw [%o0 + 0x04], %g2
9
lduw [%o0 + 0x08], %g3
10
addcc %g2, %o2, %o2
11
lduw [%o0 + 0x0c], %g2
12
addccc %g3, %o2, %o2
13
lduw [%o0 + 0x10], %g3
14
15
addccc %g2, %o2, %o2
16
addc %o2, %g0, %o2
17
1: addcc %g3, %o2, %o2
18
add %o0, 4, %o0
19
addccc %o2, %g0, %o2
20
subcc %g7, 1, %g7
21
be,a,pt %icc, 2f
22
sll %o2, 16, %g2
23
24
lduw [%o0 + 0x10], %g3
25
ba,pt %xcc, 1b
26
nop
27
2: addcc %o2, %g2, %g2
28
srl %g2, 16, %o2
29
addc %o2, %g0, %o2
30
xnor %g0, %o2, %o2
31
set 0xffff, %o1
32
retl
33
and %o2, %o1, %o0
34
.size ip_fast_csum, .-ip_fast_csum