1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Licensed under the GPL 3*4882a593Smuzhiyun */ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #ifndef __UM_SYSDEP_CHECKSUM_H 6*4882a593Smuzhiyun #define __UM_SYSDEP_CHECKSUM_H 7*4882a593Smuzhiyun add32_with_carry(unsigned a,unsigned b)8*4882a593Smuzhiyunstatic inline unsigned add32_with_carry(unsigned a, unsigned b) 9*4882a593Smuzhiyun { 10*4882a593Smuzhiyun asm("addl %2,%0\n\t" 11*4882a593Smuzhiyun "adcl $0,%0" 12*4882a593Smuzhiyun : "=r" (a) 13*4882a593Smuzhiyun : "0" (a), "r" (b)); 14*4882a593Smuzhiyun return a; 15*4882a593Smuzhiyun } 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun extern __sum16 ip_compute_csum(const void *buff, int len); 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #endif 20