RTEMS CPU Kit with SuperCore
Macros | Functions
in_cksum_sparc.h File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/mbuf.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_var.h>
Include dependency graph for in_cksum_sparc.h:

Go to the source code of this file.

Macros

#define Asm   __asm __volatile
 
#define ADD64
 
#define ADD32
 
#define ADD16
 
#define ADD8
 
#define ADD4
 
#define REDUCE   {sum = (sum & 0xffff) + (sum >> 16);}
 
#define ADDCARRY   {if (sum > 0xffff) sum -= 0xffff;}
 
#define ROL   {sum = sum << 8;} /* depends on recent REDUCE */
 
#define ADDBYTE   {ROL; sum += *w; byte_swapped ^= 1;}
 
#define ADDSHORT   {sum += *(u_short *)w;}
 
#define ADVANCE(n)   {w += n; mlen -= n;}
 

Functions

int in_cksum (struct mbuf *m, int len)
 
int in4_cksum (struct mbuf *m, uint8_t nxt, int off, int len)
 

Macro Definition Documentation

◆ ADD16

#define ADD16
Value:
Asm(" ld [%4+ 0],%1; ld [%4+ 4],%2; \ addcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+ 8],%1; ld [%4+12],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ addxcc %0,0,%0" \
: "=r" (sum), "=&r" (tmp1), "=&r" (tmp2)\
: "0" (sum), "r" (w))

◆ ADD32

#define ADD32
Value:
Asm(" ld [%4+ 0],%1; ld [%4+ 4],%2; \ addcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+ 8],%1; ld [%4+12],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+16],%1; ld [%4+20],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+24],%1; ld [%4+28],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ addxcc %0,0,%0" \
: "=r" (sum), "=&r" (tmp1), "=&r" (tmp2)\
: "0" (sum), "r" (w))

◆ ADD4

#define ADD4
Value:
Asm(" ld [%3+ 0],%1; \ addcc %0,%1,%0; \ addxcc %0,0,%0" \
: "=r" (sum), "=&r" (tmp1) \
: "0" (sum), "r" (w))

◆ ADD64

#define ADD64
Value:
Asm(" ld [%4+ 0],%1; ld [%4+ 4],%2; \ addcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+ 8],%1; ld [%4+12],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+16],%1; ld [%4+20],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+24],%1; ld [%4+28],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+32],%1; ld [%4+36],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+40],%1; ld [%4+44],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+48],%1; ld [%4+52],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ ld [%4+56],%1; ld [%4+60],%2; \ addxcc %0,%1,%0; addxcc %0,%2,%0; \ addxcc %0,0,%0" \
: "=r" (sum), "=&r" (tmp1), "=&r" (tmp2)\
: "0" (sum), "r" (w))

◆ ADD8

#define ADD8
Value:
Asm(" ld [%4+ 0],%1; ld [%4+ 4],%2; \ addcc %0,%1,%0; addxcc %0,%2,%0; \ addxcc %0,0,%0" \
: "=r" (sum), "=&r" (tmp1), "=&r" (tmp2)\
: "0" (sum), "r" (w))