repo.or.cz
/
pv_ops_mirror.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
dmaengine: driver for the iop32x, iop33x, and iop13xx raid engines
[pv_ops_mirror.git]
/
arch
/
sparc64
/
lib
/
ipcsum.S
blob
58ca5b9a8778d343125500c0cadbfc8830eccdb2
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