40 #define asmv(arg) __asm__ __volatile__(arg)
42 #ifdef UIP_ARCH_IPCHKSUM
43 #ifdef __IAR_SYSTEMS_ICC__
55 register uint16_t sum;
58 asmv(
"add %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[1]));
59 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[2]));
60 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[3]));
61 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[4]));
62 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[5]));
63 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[6]));
64 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[7]));
65 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[8]));
66 asmv(
"addc %[p], %[sum]": [sum]
"+r" (sum): [p]
"m" (p[9]));
69 asmv(
"addc #0, %[sum]": [sum]
"+r" (sum));
72 return (sum == 0) ? 0xffff : sum;
uint16_t uip_ipchksum(void)
Calculate the IP header checksum of the packet header in uip_buf.
Header file for the uIP TCP/IP stack.
#define UIP_LLH_LEN
The link level header length.