summaryrefslogtreecommitdiff
path: root/include/spl.h
diff options
context:
space:
mode:
authorSean Anderson <seanga2@gmail.com>2023-11-08 11:48:43 -0500
committerTom Rini <trini@konsulko.com>2023-11-16 13:49:14 -0500
commit5271e359a46cc6a60d0048576326e2fa1527f231 (patch)
tree4eac04fe7c7fed86c53ff24c460df5827d623be2 /include/spl.h
parentafdd2d98c29c443f348fd88198e59b78d50f4e2c (diff)
downloadu-boot-5271e359a46cc6a60d0048576326e2fa1527f231.tar.gz
u-boot-5271e359a46cc6a60d0048576326e2fa1527f231.tar.bz2
u-boot-5271e359a46cc6a60d0048576326e2fa1527f231.zip
spl: Only support bl_len when we have to
Aligning addresses and sizes causes overhead which is unnecessary when we are not loading from block devices. Remove bl_len when it is not needed. For example, on iot2050 we save 144 bytes with this patch (once the rest of this series is applied): add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-144 (-144) Function old new delta spl_load_simple_fit 920 904 -16 load_simple_fit 496 444 -52 spl_spi_load_image 384 308 -76 Total: Before=87431, After=87287, chg -0.16% We use panic() instead of BUILD_BUG_ON in spl_set_bl_len because we still need to be able to compile it for things like mmc_load_image_raw_sector, even if that function will not be used. Signed-off-by: Sean Anderson <seanga2@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/spl.h')
-rw-r--r--include/spl.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/include/spl.h b/include/spl.h
index fec656d301..03c5c5c66b 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -304,9 +304,34 @@ struct spl_load_info {
*/
ulong (*read)(struct spl_load_info *load, ulong sector, ulong count,
void *buf);
+#if IS_ENABLED(CONFIG_SPL_LOAD_BLOCK)
int bl_len;
};
+static inline int spl_get_bl_len(struct spl_load_info *info)
+{
+ return info->bl_len;
+}
+
+static inline void spl_set_bl_len(struct spl_load_info *info, int bl_len)
+{
+ info->bl_len = bl_len;
+}
+#else
+};
+
+static inline int spl_get_bl_len(struct spl_load_info *info)
+{
+ return 1;
+}
+
+static inline void spl_set_bl_len(struct spl_load_info *info, int bl_len)
+{
+ if (bl_len != 1)
+ panic("CONFIG_SPL_LOAD_BLOCK not enabled");
+}
+#endif
+
/*
* We need to know the position of U-Boot in memory so we can jump to it. We
* allow any U-Boot binary to be used (u-boot.bin, u-boot-nodtb.bin,