From 28b9facceaea4d2d4cb66ed240300157be42bcdc Mon Sep 17 00:00:00 2001 From: pwpiwi Date: Thu, 30 Apr 2015 17:57:26 +0200 Subject: [PATCH] Tailor zlib to our needs: - disable support for fixed code blocks. Saves 2KByte code tables in ARM Flash memory --- armsrc/Makefile | 2 +- zlib/inflate.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index b1ce4e4d..1771c8c4 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -28,7 +28,7 @@ FPGA_BITSTREAMS = fpga_lf.bit fpga_hf.bit #the zlib source files required for decompressing the fpga config at run time SRC_ZLIB = inflate.c inffast.c inftrees.c adler32.c zutil.c #additional defines required to compile zlib -ZLIB_CFLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP +ZLIB_CFLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED APP_CFLAGS += $(ZLIB_CFLAGS) # zlib includes: APP_CFLAGS += -I../zlib diff --git a/zlib/inflate.c b/zlib/inflate.c index 870f89bb..d2c666b0 100644 --- a/zlib/inflate.c +++ b/zlib/inflate.c @@ -92,7 +92,11 @@ #endif /* function prototypes */ +#ifdef ZLIB_PM3_TUNED +extern void Dbprintf(const char *fmt, ...); +#else local void fixedtables OF((struct inflate_state FAR *state)); +#endif local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, unsigned copy)); #ifdef BUILDFIXED @@ -258,6 +262,7 @@ int value; used for threaded applications, since the rewriting of the tables and virgin may not be thread-safe. */ +#ifndef ZLIB_PM3_TUNED local void fixedtables(state) struct inflate_state FAR *state; { @@ -361,7 +366,7 @@ void makefixed() puts("\n };"); } #endif /* MAKEFIXED */ - +#endif /* ZLIB_PM3_TUNED */ /* Update the window with the last wsize (normally 32K) bytes written before returning. If window does not exist yet, create it. This is only called @@ -841,6 +846,10 @@ int flush; state->mode = STORED; break; case 1: /* fixed block */ +#ifdef ZLIB_PM3_TUNED + Dbprintf("FATAL error. Compressed FPGA files with fixed code blocks are not supported!"); + for(;;); +#else fixedtables(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); @@ -849,6 +858,7 @@ int flush; DROPBITS(2); goto inf_leave; } +#endif break; case 2: /* dynamic block */ Tracev((stderr, "inflate: dynamic codes block%s\n", -- 2.39.2