Signed-off-by: Oleksii Kurochko <oleksii.kuroc...@gmail.com>
---
 xen/arch/riscv/setup.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index b3f8b10f71..154bf3a0bc 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -26,6 +26,18 @@ static void test_macros_from_bug_h(void)
 
 void __init noreturn start_xen(void)
 {
+    /*
+     * The following things are passed by bootloader:
+     *   a0 -> hart_id
+     *   a1 -> dtb_base
+    */
+    register unsigned long hart_id  asm("a0");
+    register unsigned long dtb_base asm("a1");
+
+    asm volatile( "mv %0, a0" : "=r" (hart_id) );
+
+    asm volatile( "mv %0, a1" : "=r" (dtb_base) );
+
     early_printk("Hello from C env\n");
 
     trap_init();
-- 
2.39.0


Reply via email to