1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #include <linux/export.h> << 3 #include <linux/linkage.h> 1 #include <linux/linkage.h> 4 2 5 .text 3 .text 6 ENTRY(ip_fast_csum) /* %o0 = iph, %o1 = ihl */ 4 ENTRY(ip_fast_csum) /* %o0 = iph, %o1 = ihl */ 7 sub %o1, 4, %g7 5 sub %o1, 4, %g7 8 lduw [%o0 + 0x00], %o2 6 lduw [%o0 + 0x00], %o2 9 lduw [%o0 + 0x04], %g2 7 lduw [%o0 + 0x04], %g2 10 lduw [%o0 + 0x08], %g3 8 lduw [%o0 + 0x08], %g3 11 addcc %g2, %o2, %o2 9 addcc %g2, %o2, %o2 12 lduw [%o0 + 0x0c], %g2 10 lduw [%o0 + 0x0c], %g2 13 addccc %g3, %o2, %o2 11 addccc %g3, %o2, %o2 14 lduw [%o0 + 0x10], %g3 12 lduw [%o0 + 0x10], %g3 15 13 16 addccc %g2, %o2, %o2 14 addccc %g2, %o2, %o2 17 addc %o2, %g0, %o2 15 addc %o2, %g0, %o2 18 1: addcc %g3, %o2, %o2 16 1: addcc %g3, %o2, %o2 19 add %o0, 4, %o0 17 add %o0, 4, %o0 20 addccc %o2, %g0, %o2 18 addccc %o2, %g0, %o2 21 subcc %g7, 1, %g7 19 subcc %g7, 1, %g7 22 be,a,pt %icc, 2f 20 be,a,pt %icc, 2f 23 sll %o2, 16, %g2 21 sll %o2, 16, %g2 24 22 25 lduw [%o0 + 0x10], %g3 23 lduw [%o0 + 0x10], %g3 26 ba,pt %xcc, 1b 24 ba,pt %xcc, 1b 27 nop 25 nop 28 2: addcc %o2, %g2, %g2 26 2: addcc %o2, %g2, %g2 29 srl %g2, 16, %o2 27 srl %g2, 16, %o2 30 addc %o2, %g0, %o2 28 addc %o2, %g0, %o2 31 xnor %g0, %o2, %o2 29 xnor %g0, %o2, %o2 32 set 0xffff, %o1 30 set 0xffff, %o1 33 retl 31 retl 34 and %o2, %o1, %o0 32 and %o2, %o1, %o0 35 ENDPROC(ip_fast_csum) 33 ENDPROC(ip_fast_csum) 36 EXPORT_SYMBOL(ip_fast_csum) <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.