diff options
author | Tom Rini <trini@konsulko.com> | 2024-08-26 14:06:16 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-08-26 14:06:16 -0600 |
commit | 02d587a447ccae12618abbfb2b8ddd88ac3c7648 (patch) | |
tree | 23acd3b2a0e077ab3a4f8924d132a137ea01ad20 /common/spl/spl.c | |
parent | 7670200d4b7bbb572290d0fb2ed9cd0fb1f989cc (diff) | |
parent | cafaa1a17f765e684e3a5b52448d495c0e1da83d (diff) |
Merge patch series "global_data: Reduce size of struct global_data"
Simon Glass <sjg@chromium.org> says:
The global data structure has grown quite a lot over the years, being
the best place to put an important pointer or something that must be
accessed before and after relocation.
This series attempts to reduce the size a little, by moving some things
out and shrinking and aligning some fields.
Some fields are needed during init but not afterwards. To deal with this
a new 'boardf' structure is created, which sits on the stack and is only
present during board_init_f(). It is possible that more fields could
move to this struct, but for now only 4 are moved.
An assumption is made that an int is 32-bits wide on all architectures,
which seems to be true, but maintainers should be able to confirm.
Mostly the code-size impact is neutral, but the patch
'Use less space for environment fields' does increase U-Boot's size by
about 30 bytes on aarch64.
For firefly-rk3399 (64-bit) the size of global reduces from 456 to 368
bytes. For SPL it reduces from 416 to 272 bytes.
There are other things which could be attempted, for example:
- Using hlist instead of list for some lists
- Checking that only necessary fields are present in SPL
Diffstat (limited to 'common/spl/spl.c')
-rw-r--r-- | common/spl/spl.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/common/spl/spl.c b/common/spl/spl.c index 7c6e322ffd7..da110ee0783 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -782,7 +782,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) } if (CONFIG_IS_ENABLED(SYS_MALLOC_F) && !IS_ENABLED(CONFIG_SPL_SYS_MALLOC_SIZE)) - debug("SPL malloc() used 0x%lx bytes (%ld KB)\n", + debug("SPL malloc() used 0x%x bytes (%d KB)\n", gd_malloc_ptr(), gd_malloc_ptr() / 1024); bootstage_mark_name(get_bootstage_id(false), "end phase"); @@ -838,7 +838,7 @@ void preloader_console_init(void) serial_init(); /* serial communications setup */ - gd->have_console = 1; + gd->flags |= GD_FLG_HAVE_CONSOLE; #if CONFIG_IS_ENABLED(BANNER_PRINT) puts("\nU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " @@ -901,7 +901,7 @@ ulong spl_relocate_stack_gd(void) #if defined(CONFIG_SPL_SYS_MALLOC_SIMPLE) && CONFIG_IS_ENABLED(SYS_MALLOC_F) if (CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN) { - debug("SPL malloc() before relocation used 0x%lx bytes (%ld KB)\n", + debug("SPL malloc() before relocation used 0x%x bytes (%d KB)\n", gd->malloc_ptr, gd->malloc_ptr / 1024); ptr -= CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN; gd->malloc_base = ptr; |