Lines Matching +full:0 +full:- +full:9 +full:a +full:- +full:f
1 /* SPDX-License-Identifier: GPL-2.0+
32 * computes a partial checksum, e.g. for TCP/UDP fragments
43 * is aligned on either a 2-byte or 4-byte boundary. We get at
44 * least a twofold speedup on 486 and Pentium if it is 4-byte aligned.
45 * Fortunately, it is easy to convert 2-byte alignment to 4-byte
50 bt/s 2f ! Jump if alignment is ok.
51 mov r4, r7 ! Keep a copy to check for alignment
54 bt 21f ! Jump if alignment is boundary of 2bytes.
58 add #-1, r5
59 bt 9f
62 addc r0, r6 ! t=0 from previous tst
70 bt 2f
72 ! buf is 2 byte aligned (len could be 0)
73 add #-2, r5 ! Alignment uses up two bytes.
75 bt/s 1f ! Jump if we had at least two bytes.
77 bra 6f
83 bf 2f
86 ! buf is 4 byte aligned (len could be 0)
88 mov #-5, r0
91 bt/s 4f ! if it's =0, go to 4f
115 ! here, we know r1==0
119 and #0x1c, r0
121 bt 6f
125 mov #0, r2
134 addc r1, r6 ! r1==0 here, so it means add carry-bit
140 bt 9f ! if it's =0 go to 9f
143 bf 7f
147 bt/s 8f
159 mov #0, r0
161 9:
165 bt 10f
181 * sum being ~0U
186 .section __ex_table, "a"; \
187 .long 9999b, 6001f ; \
196 mov #-1,r7
202 bf 3f ! Different alignments, use slow version
204 bf 3f ! If not, do it the slow way
208 bt 2f ! Jump if alignment is ok.
209 add #-2,r6 ! Alignment uses up two bytes.
211 bt/s 1f
214 bra 4f
222 bt 4f
246 mov #0,r0
251 bt 7f
252 bra 5f
255 ! src and dest equally aligned, but to a two byte boundary.
256 ! Handle first two bytes as a special case
264 mov #0,r0
268 mov #-5,r0
271 bt/s 2f
307 mov #0,r0
311 mov #0x1c,r0
314 bf/s 4f
326 mov #0,r0
332 bf 7f
335 bf 5f
341 bt/s 6f
353 mov #0,r0
362 mov #0,r0