blob: 0c37711d3f0dbaab2dcd767be13a0a4af17ac5ba [file] [log] [blame]
Patrick Georgi0a3d4e02020-03-04 14:39:09 +01001/* SPDX-License-Identifier: GPL-2.0-only */
Julius Werner5d6593a2018-08-10 16:13:26 -07002
3#include <arch/exception.h>
4#include <arch/stages.h>
5#include <cbmem.h>
6#include <console/console.h>
7#include <program_loading.h>
Arthur Heymans3e914d32022-04-06 22:25:50 +02008#include <romstage_common.h>
Julius Werner5d6593a2018-08-10 16:13:26 -07009#include <timestamp.h>
10
11__weak void platform_romstage_main(void) { /* no-op, for bring-up */ }
12__weak void platform_romstage_postram(void) { /* no-op */ }
13
Arthur Heymansa2bc2542021-05-29 08:10:49 +020014#if CONFIG(SEPARATE_ROMSTAGE)
Julius Werner5d6593a2018-08-10 16:13:26 -070015void main(void)
16{
Jakub Czapigaad6157e2022-02-15 11:50:31 +010017 timestamp_add_now(TS_ROMSTAGE_START);
Julius Werner5d6593a2018-08-10 16:13:26 -070018
19 console_init();
Julius Werner5d6593a2018-08-10 16:13:26 -070020
Arthur Heymans3e914d32022-04-06 22:25:50 +020021 exception_init();
22 romstage_main();
23}
Arthur Heymansa2bc2542021-05-29 08:10:49 +020024#endif
Arthur Heymans3e914d32022-04-06 22:25:50 +020025
26void __noreturn romstage_main(void)
27{
Julius Werner5d6593a2018-08-10 16:13:26 -070028 platform_romstage_main();
29 cbmem_initialize_empty();
30 platform_romstage_postram();
31
32 run_ramstage();
33}