--- a/crc32.c
+++ b/crc32.c
@@ -8,21 +8,16 @@
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
-#ifndef USE_HOSTCC
-#include <common.h>
-#endif
-#include <compiler.h>
-#include <u-boot/crc.h>
+#include <stdint.h>
+#include <asm/byteorder.h>
+
+#include "zlib.h"
 
-#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
-#include <watchdog.h>
-#endif
-#include "u-boot/zlib.h"
 
 #define local static
 #define ZEXPORT	/* empty */
 
-#define tole(x) cpu_to_le32(x)
+#define tole(x) __constant_cpu_to_le32(x)
 
 #ifdef DYNAMIC_CRC_TABLE
 
@@ -151,7 +146,7 @@ tole(0xb40bbe37L), tole(0xc30c8ea1L), to
 
 #if 0
 /* =========================================================================
- * This function can be used by asm versions of crc32()
+ * This function can be used by asm versions of uboot_crc32()
  */
 const uint32_t * ZEXPORT get_crc_table()
 {
@@ -183,7 +178,7 @@ uint32_t ZEXPORT crc32_no_comp(uint32_t
     if (crc_table_empty)
       make_crc_table();
 #endif
-    crc = cpu_to_le32(crc);
+    crc = __cpu_to_le32(crc);
     /* Align it */
     if (((long)b) & 3 && len) {
 	 uint8_t *p = (uint8_t *)b;
@@ -212,11 +207,11 @@ uint32_t ZEXPORT crc32_no_comp(uint32_t
 	 } while (--len);
     }
 
-    return le32_to_cpu(crc);
+    return __le32_to_cpu(crc);
 }
 #undef DO_CRC
 
-uint32_t ZEXPORT crc32 (uint32_t crc, const Bytef *p, uInt len)
+uint32_t ZEXPORT uboot_crc32 (uint32_t crc, const Bytef *p, uInt len)
 {
      return crc32_no_comp(crc ^ 0xffffffffL, p, len) ^ 0xffffffffL;
 }
@@ -239,12 +234,12 @@ uint32_t ZEXPORT crc32_wd (uint32_t crc,
 		chunk = end - curr;
 		if (chunk > chunk_sz)
 			chunk = chunk_sz;
-		crc = crc32 (crc, curr, chunk);
+		crc = uboot_crc32 (crc, curr, chunk);
 		curr += chunk;
 		WATCHDOG_RESET ();
 	}
 #else
-	crc = crc32 (crc, buf, len);
+	crc = uboot_crc32 (crc, buf, len);
 #endif
 
 	return crc;
--- a/fw_env.c
+++ b/fw_env.c
@@ -34,6 +34,7 @@
 #include <sys/ioctl.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <zlib.h>
 
 #ifdef MTD_OLD
 # include <stdint.h>
@@ -210,13 +211,14 @@ static char default_environment[] = {
 static int flash_io (int mode);
 static char *envmatch (char * s1, char * s2);
 static int parse_config (void);
+uint32_t uboot_crc32 (uint32_t crc, const Bytef *p, uInt len);
 
 #if defined(CONFIG_FILE)
 static int get_config (char *);
 #endif
-static inline ulong getenvsize (void)
+static inline uint32_t getenvsize (void)
 {
-	ulong rc = CONFIG_ENV_SIZE - sizeof (long);
+	uint32_t rc = CONFIG_ENV_SIZE - sizeof (uint32_t);
 
 	if (HaveRedundEnv)
 		rc -= sizeof (char);
@@ -346,7 +348,7 @@ int fw_env_close(void)
 	/*
 	 * Update CRC
 	 */
-	*environment.crc = crc32(0, (uint8_t *) environment.data, ENV_SIZE);
+	*environment.crc = uboot_crc32(0, (uint8_t *) environment.data, ENV_SIZE);
 
 	/* write environment back to flash */
 	if (flash_io(O_RDWR)) {
@@ -802,7 +804,7 @@ static int flash_write_buf (int dev, int
 		data = malloc (erase_len);
 		if (!data) {
 			fprintf (stderr,
-				 "Cannot malloc %u bytes: %s\n",
+				 "Cannot malloc %zu bytes: %s\n",
 				 erase_len, strerror (errno));
 			return -1;
 		}
@@ -1107,7 +1109,7 @@ int fw_env_open(void)
 	if (flash_io (O_RDONLY))
 		return -1;
 
-	crc0 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE);
+	crc0 = uboot_crc32 (0, (uint8_t *) environment.data, ENV_SIZE);
 	crc0_ok = (crc0 == *environment.crc);
 	if (!HaveRedundEnv) {
 		if (!crc0_ok) {
@@ -1151,7 +1153,7 @@ int fw_env_open(void)
 			return -1;
 		}
 
-		crc1 = crc32 (0, (uint8_t *) redundant->data, ENV_SIZE);
+		crc1 = uboot_crc32 (0, (uint8_t *) redundant->data, ENV_SIZE);
 		crc1_ok = (crc1 == redundant->crc);
 		flag1 = redundant->flags;