@@ -41,6 +41,9 @@ FUNC(start)
jal setup_initial_pagetables
+ mv a0, s1
+ jal fdt_map
+
/* Calculate proper VA after jump from 1:1 mapping */
la a0, .L_primary_switched
sub a0, a0, s2
@@ -1,7 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/bootfdt.h>
#include <xen/bug.h>
#include <xen/compile.h>
+#include <xen/device_tree.h>
#include <xen/init.h>
#include <xen/mm.h>
@@ -33,15 +35,34 @@ static void test_macros_from_bug_h(void)
printk("WARN is most likely working\n");
}
+void __init fdt_map(paddr_t dtb_addr)
+{
+ device_tree_flattened = early_fdt_map(dtb_addr);
+ if ( !device_tree_flattened )
+ {
+ printk("wrong FDT\n");
+ die();
+ }
+}
+
void __init noreturn start_xen(unsigned long bootcpu_id,
paddr_t dtb_addr)
{
+ size_t fdt_size;
+ const char *cmdline;
+
remove_identity_mapping();
trap_init();
test_macros_from_bug_h();
+ fdt_size = boot_fdt_info(device_tree_flattened, dtb_addr);
+
+ cmdline = boot_fdt_cmdline(device_tree_flattened);
+ printk("Command line: %s\n", cmdline);
+ cmdline_parse(cmdline);
+
printk("All set up\n");
for ( ;; )
Except mapping of FDT, it is also printing command line passed by a DTB and initialize bootinfo from a DTB. Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> --- xen/arch/riscv/riscv64/head.S | 3 +++ xen/arch/riscv/setup.c | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+)