1#include <linux/linkage.h> 2#include <asm/export.h> 3 4 .text 5ENTRY(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 171: 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 272: 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 34ENDPROC(ip_fast_csum) 35EXPORT_SYMBOL(ip_fast_csum) 36