mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-05-13 19:09:18 +08:00
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.
This commit is contained in:
parent
865a290ee4
commit
e43b452e28
128
Makefile
128
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
|
||||
|
||||
|
@ -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' \
|
||||
|
@ -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_ */
|
Loading…
x
Reference in New Issue
Block a user