Module Name:    src
Committed By:   snj
Date:           Sun May  3 17:31:42 UTC 2009

Modified Files:
        src/common/dist/zlib [netbsd-5]: zlib.h
        src/sys/lib/libkern [netbsd-5]: crc32.c libkern.h
        src/sys/lib/libsa [netbsd-5]: cread.c
        src/sys/lib/libz [netbsd-5]: Makefile

Log Message:
Pull up following revision(s) (requested by tls in ticket #611):
        common/dist/zlib/zlib.h: revision 1.3
        sys/lib/libkern/crc32.c: revision 1.2
        sys/lib/libkern/libkern.h: revision 1.90 via patch
        sys/lib/libsa/cread.c: revision 1.23
        sys/lib/libz/Makefile: revision 1.16
Fix build problems caused by crc32 addition to libkern.  Also, this makes
the i386 bootblocks about 2K smaller than they were before we monkeyed
with crc32 at all.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.34.1 src/common/dist/zlib/zlib.h
cvs rdiff -u -r1.4.4.2 -r1.4.4.3 src/sys/lib/libkern/crc32.c
cvs rdiff -u -r1.82.4.1 -r1.82.4.2 src/sys/lib/libkern/libkern.h
cvs rdiff -u -r1.21 -r1.21.14.1 src/sys/lib/libsa/cread.c
cvs rdiff -u -r1.15 -r1.15.44.1 src/sys/lib/libz/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/dist/zlib/zlib.h
diff -u src/common/dist/zlib/zlib.h:1.2 src/common/dist/zlib/zlib.h:1.2.34.1
--- src/common/dist/zlib/zlib.h:1.2	Mon Jan 16 17:02:29 2006
+++ src/common/dist/zlib/zlib.h	Sun May  3 17:31:41 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: zlib.h,v 1.2 2006/01/16 17:02:29 christos Exp $	*/
+/*	$NetBSD: zlib.h,v 1.2.34.1 2009/05/03 17:31:41 snj Exp $	*/
 
 /* zlib.h -- interface of the 'zlib' general purpose compression library
   version 1.2.3, July 18th, 2005
@@ -1284,7 +1284,9 @@
    seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
 */
 
+#if !defined(_KERNEL) && !defined(_STANDALONE)
 ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
+#endif
 /*
      Update a running CRC-32 with the bytes buf[0..len-1] and return the
    updated CRC-32. If buf is NULL, this function returns the required initial

Index: src/sys/lib/libkern/crc32.c
diff -u src/sys/lib/libkern/crc32.c:1.4.4.2 src/sys/lib/libkern/crc32.c:1.4.4.3
--- src/sys/lib/libkern/crc32.c:1.4.4.2	Sun May  3 17:24:45 2009
+++ src/sys/lib/libkern/crc32.c	Sun May  3 17:31:42 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: crc32.c,v 1.4.4.2 2009/05/03 17:24:45 snj Exp $	*/
+/*	$NetBSD: crc32.c,v 1.4.4.3 2009/05/03 17:31:42 snj Exp $	*/
 
 /* crc32.c -- compute the CRC-32 of a data stream
  *
@@ -30,6 +30,7 @@
 /* ========================================================================
  * Tables of CRC-32s of all single-byte values, made by make_crc_table().
  */
+#include <lib/libkern/libkern.h>
 #include "crc32.h"
 
 #if BYTE_ORDER == LITTLE_ENDIAN
@@ -40,10 +41,7 @@
 #define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
 
 /* ========================================================================= */
-uint32_t crc32(
-    uint32_t crc,
-    const unsigned char *buf,
-    unsigned len)
+uint32_t crc32(uint32_t crc, const uint8_t *buf, size_t len)
 {
     register u4 c;
     register const u4 *buf4;

Index: src/sys/lib/libkern/libkern.h
diff -u src/sys/lib/libkern/libkern.h:1.82.4.1 src/sys/lib/libkern/libkern.h:1.82.4.2
--- src/sys/lib/libkern/libkern.h:1.82.4.1	Sun May  3 17:24:45 2009
+++ src/sys/lib/libkern/libkern.h	Sun May  3 17:31:42 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: libkern.h,v 1.82.4.1 2009/05/03 17:24:45 snj Exp $	*/
+/*	$NetBSD: libkern.h,v 1.82.4.2 2009/05/03 17:31:42 snj Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -337,7 +337,7 @@
 size_t	 strlcat __P((char *, const char *, size_t));
 int	 strncasecmp __P((const char *, const char *, size_t));
 u_long	 strtoul __P((const char *, char **, int));
-uint32_t crc32(uint32_t, const unsigned char *, unsigned);
+uint32_t crc32(uint32_t, const uint8_t *, size_t);
 long long strtoll __P((const char *, char **, int));
 unsigned long long strtoull __P((const char *, char **, int));
 uintmax_t strtoumax __P((const char *, char **, int));

Index: src/sys/lib/libsa/cread.c
diff -u src/sys/lib/libsa/cread.c:1.21 src/sys/lib/libsa/cread.c:1.21.14.1
--- src/sys/lib/libsa/cread.c:1.21	Tue Mar 25 21:23:50 2008
+++ src/sys/lib/libsa/cread.c	Sun May  3 17:31:42 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: cread.c,v 1.21 2008/03/25 21:23:50 christos Exp $	*/
+/*	$NetBSD: cread.c,v 1.21.14.1 2009/05/03 17:31:42 snj Exp $	*/
 
 /*
  * Copyright (c) 1996
@@ -86,6 +86,35 @@
 void	zcfree __P((void *, void *));
 void	zmemcpy __P((unsigned char *, unsigned char *, unsigned int));
 
+/*
+ * The libkern version of this function uses an 8K set of tables.
+ * This is the double-loop version of LE CRC32 from if_ethersubr,
+ * lightly modified -- it is 200 bytes smaller than the version using
+ * a 4-bit table and at least 8K smaller than the libkern version.
+ */
+#ifndef ETHER_CRC_POLY_LE
+#define ETHER_CRC_POLY_LE	0xedb88320
+#endif
+uint32_t
+crc32(uint32_t crc, const uint8_t *const buf, size_t len)
+{
+	uint32_t c, carry;
+	size_t i, j;
+
+	crc = 0xffffffffU ^ crc;
+	for (i = 0; i < len; i++) {
+	    c = buf[i];
+	    for (j = 0; j < 8; j++) {
+		carry = ((crc & 0x01) ? 1 : 0) ^ (c & 0x01);
+		crc >>= 1;
+		c >>= 1;
+		if (carry) {
+			crc = (crc ^ ETHER_CRC_POLY_LE);
+		}
+	    }
+	}
+	return (crc ^ 0xffffffffU);
+}
 
 /*
  * compression utilities

Index: src/sys/lib/libz/Makefile
diff -u src/sys/lib/libz/Makefile:1.15 src/sys/lib/libz/Makefile:1.15.44.1
--- src/sys/lib/libz/Makefile:1.15	Sat Jun 23 10:50:24 2007
+++ src/sys/lib/libz/Makefile	Sun May  3 17:31:42 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.15 2007/06/23 10:50:24 isaki Exp $
+#	$NetBSD: Makefile,v 1.15.44.1 2009/05/03 17:31:42 snj Exp $
 
 LIB=	z
 NOPIC=	# defined
@@ -11,9 +11,9 @@
 .PATH.c: ${ZDISTDIR} ${.PARSEDIR}
 
 # files to be copied down from libz.
-LIBZSRCS= adler32.c compress.c crc32.c deflate.c infback.c inffast.c \
+LIBZSRCS= adler32.c compress.c deflate.c infback.c inffast.c \
 	inflate.c inftrees.c trees.c uncompr.c
-LIBZHDRS= crc32.h deflate.h inffast.h inffixed.h inflate.h inftrees.h \
+LIBZHDRS= deflate.h inffast.h inffixed.h inflate.h inftrees.h \
 	trees.h zconf.h zlib.h
 
 # Other stuff

Reply via email to