1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright IBM Corp. 2007, 2018
7 * Early setup functions which may not rely on an initialized bss
8 * section. The last thing that is supposed to happen here is
9 * initialization of the bss section.
12 #include <linux/processor.h>
13 #include <linux/string.h>
14 #include <asm/sections.h>
15 #include <asm/lowcore.h>
16 #include <asm/timex.h>
17 #include <asm/kasan.h>
20 static void __init
reset_tod_clock(void)
24 if (store_tod_clock(&time
) == 0)
26 /* TOD clock not running. Set the clock to Unix Epoch. */
27 if (set_tod_clock(TOD_UNIX_EPOCH
) != 0 || store_tod_clock(&time
) != 0)
30 memset(tod_clock_base
, 0, 16);
31 *(__u64
*) &tod_clock_base
[1] = TOD_UNIX_EPOCH
;
32 S390_lowcore
.last_update_clock
= TOD_UNIX_EPOCH
;
35 static void __init
clear_bss_section(void)
37 memset(__bss_start
, 0, __bss_stop
- __bss_start
);
40 void __init
startup_init_nobss(void)