|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 3/3] xen/riscv: initialize .bss section
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
---
xen/arch/riscv/riscv64/head.S | 9 +++++++++
xen/arch/riscv/setup.c | 8 ++++++++
2 files changed, 17 insertions(+)
diff --git a/xen/arch/riscv/riscv64/head.S b/xen/arch/riscv/riscv64/head.S
index adf5d6c74a..8887f0cbd4 100644
--- a/xen/arch/riscv/riscv64/head.S
+++ b/xen/arch/riscv/riscv64/head.S
@@ -1,3 +1,4 @@
+#include <asm/asm.h>
#include <asm/riscv_encoding.h>
.section .text.header, "ax", %progbits
@@ -18,6 +19,14 @@ ENTRY(start)
li t0, SSTATUS_FS
csrc CSR_SSTATUS, t0
+ /* Clear the BSS */
+ la t3, __bss_start
+ la t4, __bss_end
+.L_clear_bss:
+ REG_S zero, (t3)
+ add t3, t3, __SIZEOF_POINTER__
+ bltu t3, t4, .L_clear_bss
+
la sp, cpu0_boot_stack
li t0, STACK_SIZE
add sp, sp, t0
diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index d9723fe1c0..929565720b 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -7,6 +7,14 @@
unsigned char __initdata cpu0_boot_stack[STACK_SIZE]
__aligned(STACK_SIZE);
+/*
+ * To be sure that .bss isn't zero. It will simplify code of
+ * .bss initialization.
+ * TODO:
+ * To be deleted when the first real .bss user appears
+ */
+int dummy_bss __attribute__((unused));
+
void __init noreturn start_xen(unsigned long bootcpu_id,
unsigned long dtb_base)
{
--
2.39.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |