On 29.08.23 11:28, Johannes Zink wrote: > crc32 may be required in PBL for checking data integrity. Add > CONFIG_CRC32_EARLY to kconfig which allows adding crc32 also in the PBL. > > As the PBL has no dynamic allocation, do not use dynamic CRC table > generation when CRC32 is added in PBL. > > Signed-off-by: Johannes Zink <j.zink@xxxxxxxxxxxxxx> > --- > To: Barebox Mailing List <barebox@xxxxxxxxxxxxxxxxxxx> > Cc: Johannes Zink <j.zink@xxxxxxxxxxxxxx> > Cc: patchwork-jzi@xxxxxxxxxxxxxx > --- > crypto/Kconfig | 3 +++ > crypto/Makefile | 1 + > crypto/crc32.c | 6 +++--- > 3 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/crypto/Kconfig b/crypto/Kconfig > index 04e5ef43705b..6e18b5868061 100644 > --- a/crypto/Kconfig > +++ b/crypto/Kconfig > @@ -5,6 +5,9 @@ menu "Crypto support" > config CRC32 > bool > > +config CRC32_EARLY > + bool > + > config CRC_ITU_T > bool > > diff --git a/crypto/Makefile b/crypto/Makefile > index 22035d4f69ee..24e1f3d91797 100644 > --- a/crypto/Makefile > +++ b/crypto/Makefile > @@ -11,6 +11,7 @@ obj-$(CONFIG_DIGEST_SHA1_GENERIC) += sha1.o > obj-$(CONFIG_DIGEST_SHA224_GENERIC) += sha2.o > obj-$(CONFIG_DIGEST_SHA256_GENERIC) += sha2.o > pbl-y += sha2.o digest.o > +lwl-$(CONFIG_CRC32_EARLY) += crc32.o pbl-obj- is the correct prefix. lwl- means pbl- if we have PBL support at all and obj- otherwise (for legacy systems without PBL), while pbl-obj- is equivalent to duplicating the line once with pbl- and once with obj- > obj-$(CONFIG_DIGEST_SHA384_GENERIC) += sha4.o > obj-$(CONFIG_DIGEST_SHA512_GENERIC) += sha4.o > obj-y += memneq.o > diff --git a/crypto/crc32.c b/crypto/crc32.c > index 95cb2212db2b..284d39351682 100644 > --- a/crypto/crc32.c > +++ b/crypto/crc32.c > @@ -22,7 +22,7 @@ > #define STATIC static inline > #endif > > -#ifdef CONFIG_DYNAMIC_CRC_TABLE > +#if defined(CONFIG_DYNAMIC_CRC_TABLE) && !defined(__PBL__) You could also replace the dynamic allocation with a static array initialized to zero. That way you can have a dynamic crc table even in PBL without affecting image size as the BSS is not part of the image. > > static uint32_t *crc_table; > > @@ -145,7 +145,7 @@ STATIC uint32_t crc32(uint32_t crc, const void *_buf, unsigned int len) > { > const unsigned char *buf = _buf; > > -#ifdef CONFIG_DYNAMIC_CRC_TABLE > +#if defined(CONFIG_DYNAMIC_CRC_TABLE) && !defined(__PBL__) > if (!crc_table) > make_crc_table(); > #endif > @@ -171,7 +171,7 @@ STATIC uint32_t crc32_no_comp(uint32_t crc, const void *_buf, unsigned int len) > { > const unsigned char *buf = _buf; > > -#ifdef CONFIG_DYNAMIC_CRC_TABLE > +#if defined(CONFIG_DYNAMIC_CRC_TABLE) && !defined(__PBL__) > if (!crc_table) > make_crc_table(); > #endif > > --- > base-commit: bef38b18eeb5d2f1fac334fb8b831e47261e099c > change-id: 20230829-crc32_in_pbl-4d824629d4e2 > > Best regards, -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |