1 /*
2 * Copyright (c) 1994 William F. Jolitz.
3 * 386BSD Copyright Restrictions Apply. All Other Rights Reserved.
4 *
5 * $Id: in_cksumiphdr.h,v 1.1 94/06/08 12:38:48 bill Exp Locker: bill $
6 * Calculate 16 bit ones compliment checksum for minimal ip header(no options)
7 */
8
9 __INLINE u_short
in_cksumiphdr(void * ip)10 in_cksumiphdr(void *ip) {
11 u_long val, acc;
12
13 asm ("\
14 movl (%2), %0 ; \
15 addl 4(%2), %0 ; \
16 adcl 8(%2), %0 ; \
17 adcl 12(%2), %0 ; \
18 adcl 16(%2), %0 ; \
19 adcl $0, %0 ; \
20 movl %0, %1 ; \
21 roll $16, %0 ; \
22 addw %w0, %w1 ; \
23 adcw $0, %w1 ; "
24 : "=r" (acc), "=r" (val) : "r" (ip));
25 return (~val);
26 }
27
28