[rtems-libbsd commit] Makefile: Use MIPS generic in_cksum when no target specific implementation

Joel Sherrill joel at rtems.org
Sat Jul 14 17:23:42 UTC 2012


Module:    rtems-libbsd
Branch:    master
Commit:    e43b452e28fb334fc1d62027b19e17ed40befdde
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=e43b452e28fb334fc1d62027b19e17ed40befdde

Author:    Joel Sherrill <joel.sherrill at oarcorp.com>
Date:      Sat Jul 14 12:15:57 2012 -0500

Makefile: Use MIPS generic in_cksum when no target specific implementation

The MIPS in_cksum.c method supports big and little endian targets. This
does not include any inline assembly and should be reasonable for most
targets.

---

 Makefile                                          |  128 ++++++++++++++++++++-
 freebsd-to-rtems.py                               |   38 ++++++-
 rtemsbsd/sparc/include/freebsd/machine/in_cksum.h |   77 ------------
 3 files changed, 161 insertions(+), 82 deletions(-)

diff --git a/Makefile b/Makefile
index f4be056..031ae69 100644
--- a/Makefile
+++ b/Makefile
@@ -16,6 +16,8 @@ CFLAGS += -std=gnu99
 CFLAGS += -MT $@ -MD -MP -MF $(basename $@).d
 NEED_DUMMY_PIC_IRQ=yes
 
+GENERATED_FILES =
+
 C_FILES =
 C_FILES += rtemsbsd/dev/usb/controller/ohci_lpc24xx.c
 C_FILES += rtemsbsd/dev/usb/controller/ohci_lpc32xx.c
@@ -443,6 +445,61 @@ endif
 ifeq ($(RTEMS_CPU), sparc64)
 C_FILES += freebsd/sparc64/sparc64/in_cksum.c
 endif
+ifeq ($(RTEMS_CPU), avr)
+GENERATED_FILES += rtemsbsd/avr/avr/in_cksum.c
+GENERATED_FILES += rtemsbsd/avr/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/avr/avr/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), bfin)
+GENERATED_FILES += rtemsbsd/bfin/bfin/in_cksum.c
+GENERATED_FILES += rtemsbsd/bfin/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/bfin/bfin/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), h8300)
+GENERATED_FILES += rtemsbsd/h8300/h8300/in_cksum.c
+GENERATED_FILES += rtemsbsd/h8300/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/h8300/h8300/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), lm32)
+GENERATED_FILES += rtemsbsd/lm32/lm32/in_cksum.c
+GENERATED_FILES += rtemsbsd/lm32/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/lm32/lm32/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), m32c)
+GENERATED_FILES += rtemsbsd/m32c/m32c/in_cksum.c
+GENERATED_FILES += rtemsbsd/m32c/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/m32c/m32c/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), m32r)
+GENERATED_FILES += rtemsbsd/m32r/m32r/in_cksum.c
+GENERATED_FILES += rtemsbsd/m32r/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/m32r/m32r/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), m68k)
+GENERATED_FILES += rtemsbsd/m68k/m68k/in_cksum.c
+GENERATED_FILES += rtemsbsd/m68k/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/m68k/m68k/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), nios2)
+GENERATED_FILES += rtemsbsd/nios2/nios2/in_cksum.c
+GENERATED_FILES += rtemsbsd/nios2/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/nios2/nios2/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), sh)
+GENERATED_FILES += rtemsbsd/sh/sh/in_cksum.c
+GENERATED_FILES += rtemsbsd/sh/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/sh/sh/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), sparc)
+GENERATED_FILES += rtemsbsd/sparc/sparc/in_cksum.c
+GENERATED_FILES += rtemsbsd/sparc/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/sparc/sparc/in_cksum.c
+endif
+ifeq ($(RTEMS_CPU), v850)
+GENERATED_FILES += rtemsbsd/v850/v850/in_cksum.c
+GENERATED_FILES += rtemsbsd/v850/include/freebsd/machine/in_cksum.h
+C_FILES += rtemsbsd/v850/v850/in_cksum.c
+endif
 
 ifeq ($(NEED_DUMMY_PIC_IRQ),yes)
 CFLAGS += -I rtems-dummy-pic-irq/include
@@ -452,7 +509,7 @@ C_D_FILES = $(C_FILES:%.c=%.d)
 
 LIB = libbsd.a
 
-all: $(LIB) lib_user
+all: $(GENERATED_FILES) $(LIB) lib_user
 
 $(LIB): $(C_O_FILES)
 	$(AR) rcu $@ $^
@@ -460,6 +517,73 @@ $(LIB): $(C_O_FILES)
 lib_user: $(LIB) install_bsd
 	$(MAKE) -C freebsd-userspace
 
+# The following targets use the MIPS Generic in_cksum routine
+rtemsbsd/avr/avr/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/avr/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/bfin/bfin/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/bfin/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/h8300/h8300/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/h8300/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/lm32/lm32/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/lm32/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/m32c/m32c/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/m32c/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/m32r/m32r/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/m32r/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/m68k/m68k/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/m68k/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/nios2/nios2/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/nios2/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/sh/sh/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/sh/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/sparc/sparc/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/sparc/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
+rtemsbsd/v850/v850/in_cksum.c: freebsd/mips/mips/in_cksum.c
+	cp $< $@
+
+rtemsbsd/v850/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h
+	cp $< $@
+
 CPU_SED  = sed
 CPU_SED += -e '/arm/d'
 CPU_SED += -e '/i386/d'
@@ -488,7 +612,7 @@ install_user:
 
 clean:
 	rm -f -r $(PROJECT_INCLUDE)/rtems/freebsd
-	rm -f $(LIB) $(C_O_FILES) $(C_D_FILES)
+	rm -f $(LIB) $(C_O_FILES) $(C_D_FILES) $(GENERATED_FILES)
 	rm -f libbsd.html
 	$(MAKE) -C freebsd-userspace clean
 
diff --git a/freebsd-to-rtems.py b/freebsd-to-rtems.py
index 2d0e59e..9a8f766 100755
--- a/freebsd-to-rtems.py
+++ b/freebsd-to-rtems.py
@@ -52,6 +52,21 @@ isOnlyMakefile = False
 tempFile = "/tmp/tmp_FBRT"
 filesProcessed = 0
 
+# currently these all use the MIPS in_cksum method
+CPUsNeedingGenericIncksum = [ 
+	"avr",
+	"bfin",
+	"h8300",
+	"lm32",
+	"m32c",
+	"m32r",
+	"m68k",
+	"nios2",
+	"sh",
+	"sparc",
+	"v850",
+]
+
 def usage():
   print "freebsd-to-rtems.py [args]"
   print "  -?|-h|--help     print this and exit"
@@ -346,6 +361,8 @@ class ModuleManager:
 			'CFLAGS += -std=gnu99\n' \
 			'CFLAGS += -MT $@ -MD -MP -MF $(basename $@).d\n' \
 			'NEED_DUMMY_PIC_IRQ=yes\n' \
+			'\n' \
+			'GENERATED_FILES =\n' \
 			'\n'
 		data += 'C_FILES =\n'
 		for m in self.modules:
@@ -358,6 +375,12 @@ class ModuleManager:
 				if cpu in ("arm", "i386", "lm32", "mips", "powerpc", "sparc"):
 					data += 'NEED_DUMMY_PIC_IRQ=no\n'
 				data += 'endif\n'
+		for cpu in CPUsNeedingGenericIncksum:
+			data += 'ifeq ($(RTEMS_CPU), ' + cpu + ')\n' \
+				'GENERATED_FILES += rtemsbsd/' + cpu + '/' + cpu + '/in_cksum.c\n' \
+				'GENERATED_FILES += rtemsbsd/' + cpu + '/include/freebsd/machine/in_cksum.h\n' \
+				'C_FILES += rtemsbsd/' + cpu + '/' + cpu + '/in_cksum.c\n' \
+				'endif\n'
 		data += '\n' \
 			'ifeq ($(NEED_DUMMY_PIC_IRQ),yes)\n' \
 			'CFLAGS += -I rtems-dummy-pic-irq/include\n' \
@@ -367,7 +390,7 @@ class ModuleManager:
 			'\n' \
 			'LIB = libbsd.a\n' \
 			'\n' \
-			'all: $(LIB) lib_user\n' \
+			'all: $(GENERATED_FILES) $(LIB) lib_user\n' \
 			'\n' \
 			'$(LIB): $(C_O_FILES)\n' \
 			'\t$(AR) rcu $@ $^\n' \
@@ -375,7 +398,16 @@ class ModuleManager:
 			'lib_user: $(LIB) install_bsd\n' \
 			'\t$(MAKE) -C freebsd-userspace\n' \
 			'\n' \
-			'CPU_SED  = sed\n' \
+			'# The following targets use the MIPS Generic in_cksum routine\n'
+		for cpu in CPUsNeedingGenericIncksum:
+			data += 'rtemsbsd/' + cpu + '/' + cpu + '/in_cksum.c: freebsd/mips/mips/in_cksum.c\n' \
+				'\tcp $< $@\n' \
+				'\n' \
+				'rtemsbsd/' + cpu + '/include/freebsd/machine/in_cksum.h: freebsd/mips/include/freebsd/machine/in_cksum.h\n' \
+				'\tcp $< $@\n' \
+				'\n' \
+
+		data += 'CPU_SED  = sed\n' \
 			'CPU_SED += -e \'/arm/d\'\n' \
 			'CPU_SED += -e \'/i386/d\'\n' \
 			'CPU_SED += -e \'/powerpc/d\'\n' \
@@ -403,7 +435,7 @@ class ModuleManager:
 			'\n' \
 			'clean:\n' \
 			'\trm -f -r $(PROJECT_INCLUDE)/rtems/freebsd\n' \
-			'\trm -f $(LIB) $(C_O_FILES) $(C_D_FILES)\n' \
+			'\trm -f $(LIB) $(C_O_FILES) $(C_D_FILES) $(GENERATED_FILES)\n' \
 			'\trm -f libbsd.html\n' \
 			'\t$(MAKE) -C freebsd-userspace clean\n' \
 			'\n' \
diff --git a/rtemsbsd/sparc/include/freebsd/machine/in_cksum.h b/rtemsbsd/sparc/include/freebsd/machine/in_cksum.h
deleted file mode 100644
index 37d88e2..0000000
--- a/rtemsbsd/sparc/include/freebsd/machine/in_cksum.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	from tahoe:	in_cksum.c	1.2	86/01/05
- *	from:		@(#)in_cksum.c	1.3 (Berkeley) 1/19/91
- *	from: Id: in_cksum.c,v 1.8 1995/12/03 18:35:19 bde Exp
- *	from: src/sys/alpha/include/in_cksum.h,v 1.7 2005/03/02 21:33:20 joerg
- * $FreeBSD$
- */
-
-#ifndef _MACHINE_IN_CKSUM_H_
-#define	_MACHINE_IN_CKSUM_H_	1
-
-#include <sys/cdefs.h>
-
-#define	in_cksum(m, len)	in_cksum_skip(m, len, 0)
-
-/*
- * It it useful to have an Internet checksum routine which is inlineable
- * and optimized specifically for the task of computing IP header checksums
- * in the normal case (where there are no options and the header length is
- * therefore always exactly five 32-bit words.
- */
-#ifdef __CC_SUPPORTS___INLINE
-
-static __inline void
-in_cksum_update(struct ip *ip)
-{
-	int __tmpsum;
-	__tmpsum = (int)ntohs(ip->ip_sum) + 256;
-	ip->ip_sum = htons(__tmpsum + (__tmpsum >> 16));
-}
-
-#else
-
-#define	in_cksum_update(ip)						\
-	do {								\
-		int __tmpsum;						\
-		__tmpsum = (int)ntohs(ip->ip_sum) + 256;		\
-		ip->ip_sum = htons(__tmpsum + (__tmpsum >> 16));	\
-	} while(0)
-
-#endif
-
-#ifdef _KERNEL
-u_int in_cksum_hdr(const struct ip *ip);
-u_short in_addword(u_short sum, u_short b);
-u_short in_pseudo(u_int sum, u_int b, u_int c);
-u_short in_cksum_skip(struct mbuf *m, int len, int skip);
-#endif
-
-#endif /* _MACHINE_IN_CKSUM_H_ */




More information about the vc mailing list