[PATCH 22/35] global_data: Collect common fields at the top
Simon Glass
sjg at chromium.org
Wed Jul 24 17:09:09 CEST 2024
Move all the fields which are always present to the top of the struct,
so we can potentially save some space by taking note of alignment.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
include/asm-generic/global_data.h | 166 +++++++++++++++---------------
1 file changed, 82 insertions(+), 84 deletions(-)
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index 1331686066c..48241d10034 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -70,48 +70,6 @@ struct global_data {
* @mem_clk: memory clock rate in Hz
*/
unsigned long mem_clk;
-#if defined(CONFIG_POST)
- /**
- * @post_log_word: active POST tests
- *
- * @post_log_word is a bit mask defining which POST tests are recorded
- * (see constants POST_*).
- */
- unsigned long post_log_word;
- /**
- * @post_log_res: POST results
- *
- * @post_log_res is a bit mask with the POST results. A bit with value 1
- * indicates successful execution.
- */
- unsigned long post_log_res;
- /**
- * @post_init_f_time: time in ms when post_init_f() started
- */
- unsigned long post_init_f_time;
-#endif
-#ifdef CONFIG_BOARD_TYPES
- /**
- * @board_type: board type
- *
- * If a U-Boot configuration supports multiple board types, the actual
- * board type may be stored in this field.
- */
- unsigned long board_type;
-#endif
-#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER)
- /**
- * @precon_buf_idx: pre-console buffer index
- *
- * @precon_buf_idx indicates the current position of the
- * buffer used to collect output before the console becomes
- * available. When negative, the pre-console buffer is
- * temporarily disabled (used when the pre-console buffer is
- * being written out, to prevent adding its contents to
- * itself).
- */
- long precon_buf_idx;
-#endif
/**
* @env_addr: address of environment structure
*
@@ -176,7 +134,87 @@ struct global_data {
* @new_gd: pointer to relocated global data
*/
struct global_data *new_gd;
-
+ /**
+ * @fdt_blob: U-Boot's own device tree, NULL if none
+ */
+ const void *fdt_blob;
+ /**
+ * @fdt_src: Source of FDT
+ */
+ enum fdt_source_t fdt_src;
+ /**
+ * @jt: jump table
+ *
+ * The jump table contains pointers to exported functions. A pointer to
+ * the jump table is passed to standalone applications.
+ */
+ struct jt_funcs *jt;
+ /**
+ * @env_buf: buffer for env_get() before reloc
+ */
+ char env_buf[32];
+ /**
+ * @cur_serial_dev: current serial device
+ */
+ struct udevice *cur_serial_dev;
+ /**
+ * @arch: architecture-specific data
+ */
+ struct arch_global_data arch;
+ /**
+ * @dmtag_list: List of DM tags
+ */
+ struct list_head dmtag_list;
+ /**
+ * @timebase_h: high 32 bits of timer
+ */
+ unsigned int timebase_h;
+ /**
+ * @timebase_l: low 32 bits of timer
+ */
+ unsigned int timebase_l;
+#if defined(CONFIG_POST)
+ /**
+ * @post_log_word: active POST tests
+ *
+ * @post_log_word is a bit mask defining which POST tests are recorded
+ * (see constants POST_*).
+ */
+ unsigned long post_log_word;
+ /**
+ * @post_log_res: POST results
+ *
+ * @post_log_res is a bit mask with the POST results. A bit with value 1
+ * indicates successful execution.
+ */
+ unsigned long post_log_res;
+ /**
+ * @post_init_f_time: time in ms when post_init_f() started
+ */
+ unsigned long post_init_f_time;
+#endif
+#ifdef CONFIG_BOARD_TYPES
+ /**
+ * @board_type: board type
+ *
+ * If a U-Boot configuration supports multiple board types, the actual
+ * board type may be stored in this field.
+ */
+ unsigned long board_type;
+#endif
+#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER)
+ /**
+ * @precon_buf_idx: pre-console buffer index
+ *
+ * @precon_buf_idx indicates the current position of the
+ * buffer used to collect output before the console becomes
+ * available. When negative, the pre-console buffer is
+ * temporarily disabled (used when the pre-console buffer is
+ * being written out, to prevent adding its contents to
+ * itself).
+ */
+ long precon_buf_idx;
+#endif
#ifdef CONFIG_DM
/**
* @dm_root: root instance for Driver Model
@@ -221,38 +259,18 @@ struct global_data {
*/
struct udevice *timer;
#endif
- /**
- * @fdt_blob: U-Boot's own device tree, NULL if none
- */
- const void *fdt_blob;
- /**
- * @fdt_src: Source of FDT
- */
- enum fdt_source_t fdt_src;
#if CONFIG_IS_ENABLED(OF_LIVE)
/**
* @of_root: root node of the live tree
*/
struct device_node *of_root;
#endif
-
#if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
/**
* @multi_dtb_fit: pointer to uncompressed multi-dtb FIT image
*/
const void *multi_dtb_fit;
#endif
- /**
- * @jt: jump table
- *
- * The jump table contains pointers to exported functions. A pointer to
- * the jump table is passed to standalone applications.
- */
- struct jt_funcs *jt;
- /**
- * @env_buf: buffer for env_get() before reloc
- */
- char env_buf[32];
#ifdef CONFIG_TRACE
/**
* @trace_buff: trace buffer
@@ -268,18 +286,10 @@ struct global_data {
*/
int cur_i2c_bus;
#endif
- /**
- * @timebase_h: high 32 bits of timer
- */
- unsigned int timebase_h;
- /**
- * @timebase_l: low 32 bits of timer
- */
- unsigned int timebase_l;
+#if CONFIG_IS_ENABLED(CMD_BDINFO_EXTRA)
/**
* @malloc_start: start of malloc() region
*/
-#if CONFIG_IS_ENABLED(CMD_BDINFO_EXTRA)
unsigned long malloc_start;
#endif
#if CONFIG_IS_ENABLED(SYS_MALLOC_F)
@@ -296,14 +306,6 @@ struct global_data {
*/
unsigned long malloc_ptr;
#endif
- /**
- * @cur_serial_dev: current serial device
- */
- struct udevice *cur_serial_dev;
- /**
- * @arch: architecture-specific data
- */
- struct arch_global_data arch;
#ifdef CONFIG_CONSOLE_RECORD
/**
* @console_out: output buffer for console recording
@@ -431,10 +433,6 @@ struct global_data {
*/
struct hlist_head cyclic_list;
#endif
- /**
- * @dmtag_list: List of DM tags
- */
- struct list_head dmtag_list;
};
#ifndef DO_DEPS_ONLY
static_assert(sizeof(struct global_data) == GD_SIZE);
--
2.34.1
More information about the U-Boot
mailing list