diff options
author | root <root@(null).(none)> | 2009-05-03 17:20:00 +0200 |
---|---|---|
committer | root <root@(null).(none)> | 2009-05-03 17:20:00 +0200 |
commit | e0faf22f31c48fb27b43c1825897d26e58feafc4 (patch) | |
tree | 65a09372b31e08a3a865bd0a88cd2718bafcd643 /pfinet.old/linux-src/arch/s390 |
This is my initial working version.
There is a bug in boot in this version: subhurd sometimes cannot boot.
Diffstat (limited to 'pfinet.old/linux-src/arch/s390')
-rw-r--r-- | pfinet.old/linux-src/arch/s390/CVS/Entries | 1 | ||||
-rw-r--r-- | pfinet.old/linux-src/arch/s390/CVS/Repository | 1 | ||||
-rw-r--r-- | pfinet.old/linux-src/arch/s390/CVS/Root | 1 | ||||
-rw-r--r-- | pfinet.old/linux-src/arch/s390/lib/CVS/Entries | 2 | ||||
-rw-r--r-- | pfinet.old/linux-src/arch/s390/lib/CVS/Repository | 1 | ||||
-rw-r--r-- | pfinet.old/linux-src/arch/s390/lib/CVS/Root | 1 | ||||
-rw-r--r-- | pfinet.old/linux-src/arch/s390/lib/checksum.c | 56 |
7 files changed, 63 insertions, 0 deletions
diff --git a/pfinet.old/linux-src/arch/s390/CVS/Entries b/pfinet.old/linux-src/arch/s390/CVS/Entries new file mode 100644 index 00000000..7b214dc9 --- /dev/null +++ b/pfinet.old/linux-src/arch/s390/CVS/Entries @@ -0,0 +1 @@ +D/lib//// diff --git a/pfinet.old/linux-src/arch/s390/CVS/Repository b/pfinet.old/linux-src/arch/s390/CVS/Repository new file mode 100644 index 00000000..55a1f21a --- /dev/null +++ b/pfinet.old/linux-src/arch/s390/CVS/Repository @@ -0,0 +1 @@ +hurd/pfinet/linux-src/arch/s390 diff --git a/pfinet.old/linux-src/arch/s390/CVS/Root b/pfinet.old/linux-src/arch/s390/CVS/Root new file mode 100644 index 00000000..55403097 --- /dev/null +++ b/pfinet.old/linux-src/arch/s390/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/s390/lib/CVS/Entries b/pfinet.old/linux-src/arch/s390/lib/CVS/Entries new file mode 100644 index 00000000..c82e1d67 --- /dev/null +++ b/pfinet.old/linux-src/arch/s390/lib/CVS/Entries @@ -0,0 +1,2 @@ +/checksum.c/1.1.1.1/Sat Feb 5 12:21:17 2000/-ko/ +D diff --git a/pfinet.old/linux-src/arch/s390/lib/CVS/Repository b/pfinet.old/linux-src/arch/s390/lib/CVS/Repository new file mode 100644 index 00000000..182a0dbc --- /dev/null +++ b/pfinet.old/linux-src/arch/s390/lib/CVS/Repository @@ -0,0 +1 @@ +hurd/pfinet/linux-src/arch/s390/lib diff --git a/pfinet.old/linux-src/arch/s390/lib/CVS/Root b/pfinet.old/linux-src/arch/s390/lib/CVS/Root new file mode 100644 index 00000000..55403097 --- /dev/null +++ b/pfinet.old/linux-src/arch/s390/lib/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/s390/lib/checksum.c b/pfinet.old/linux-src/arch/s390/lib/checksum.c new file mode 100644 index 00000000..9411e1c5 --- /dev/null +++ b/pfinet.old/linux-src/arch/s390/lib/checksum.c @@ -0,0 +1,56 @@ +/* + * arch/s390/lib/checksum.c + * S390 fast network checksum routines + * + * S390 version + * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation + * Author(s): Ulrich Hild (first version), + * Martin Schwidefsky (schwidefsky@de.ibm.com), + * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com), + * + * This file contains network checksum routines + */ + +#include <linux/string.h> +#include <linux/types.h> +#include <asm/uaccess.h> +#include <asm/byteorder.h> +#include <asm/checksum.h> + +/* + * computes a partial checksum, e.g. for TCP/UDP fragments + */ +unsigned int +csum_partial (const unsigned char *buff, int len, unsigned int sum) +{ + /* + * Experiments with ethernet and slip connections show that buff + * is aligned on either a 2-byte or 4-byte boundary. + */ + __asm__ __volatile__ ( + " lr 2,%1\n" /* address in gpr 2 */ + " lr 3,%2\n" /* length in gpr 3 */ + "0: cksm %0,2\n" /* do checksum on longs */ + " jo 0b\n" + : "+&d" (sum) + : "d" (buff), "d" (len) + : "cc", "2", "3" ); + return sum; +} + +/* + * Fold a partial checksum without adding pseudo headers + */ +unsigned short csum_fold(unsigned int sum) +{ + __asm__ __volatile__ ( + " sr 3,3\n" /* %0 = H*65536 + L */ + " lr 2,%0\n" /* %0 = H L, R2/R3 = H L / 0 0 */ + " srdl 2,16\n" /* %0 = H L, R2/R3 = 0 H / L 0 */ + " alr 2,3\n" /* %0 = H L, R2/R3 = L H / L 0 */ + " alr %0,2\n" /* %0 = H+L+C L+H */ + " srl %0,16\n" /* %0 = H+L+C */ + : "+d" (sum) : : "cc", "2", "3"); + return ((unsigned short) ~sum); +} + |