1 /* SPDX-License-Identifier: GPL-2.0-only */
4 #include <soc/early_init.h>
7 static struct early_init_data
*find_early_init(void)
9 assert(sizeof(struct early_init_data
) <= REGION_SIZE(early_init_data
));
10 return (struct early_init_data
*)_early_init_data
;
13 void early_init_clear(void)
15 struct early_init_data
*data
= find_early_init();
20 memset(data
, 0, sizeof(*data
));
23 void early_init_save_time(enum early_init_type init_type
)
25 struct early_init_data
*data
= find_early_init();
30 timer_monotonic_get(&data
->init_time
[init_type
]);
33 long early_init_get_elapsed_time_us(enum early_init_type init_type
)
35 struct early_init_data
*data
= find_early_init();
36 struct mono_time cur_time
= {0};
41 /* If early init data was never saved */
42 if (!memcmp(&data
->init_time
[init_type
], &cur_time
, sizeof(cur_time
)))
45 timer_monotonic_get(&cur_time
);
47 return mono_time_diff_microseconds(&data
->init_time
[init_type
],