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