<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 16, 2023 at 11:19 AM Sam Price <<a href="mailto:thesamprice@gmail.com" target="_blank">thesamprice@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">i want to test the device tree loading stuff in qemu.<br>
I don't see a way to set the r5 register on startup via command line in qemu.<br>
<br>
<br>
void bsp_fdt_copy(const void *src)<br>
{<br>
  const volatile uint32_t *s = (const uint32_t *) src;<br>
<br>
im tempted to either hard code the src location rather than passing it in via r5<br>
or add a check if the passed in value is null then use a hard coded address.<br>
if(src == 0x0)<br>
{<br>
  s = BSP_START_COPY_FDT_ADDRESS;<br>
}<br>
<br>
qemu can then take a address for the device tree file and place it in<br>
the proper memory address<br>
<br>
-device loader,file=$DTB_FILE,addr=$BSP_START_COPY_FDT_ADDRESS,force-raw=true \<br>
<br>
Does this seem reasonable or is there a way people are testing device<br>
tree support in qemu by setting the r5 register on startup?<br></blockquote><div><br></div><div>That register is generally set by the bootloader and under QEMU there generally isn't a bootloader (not to say that there can't be), and QEMU has a bunch of platform-specific rules on where to place that address if at all. For MicroBlaze (which I assume you're talking about from the mention of r5 for FDT), it looks like QEMU may stuff the address into r7 instead of r5 based on main_cpu_reset() in hw/microblaze/boot.c in Xilinx's branch.</div><div><br></div><div>Kinsey<br></div></div></div>