| 638 | } |
| 639 | |
| 640 | fn create_chosen_node( |
| 641 | fdt: &mut FdtWriter, |
| 642 | cmdline: &str, |
| 643 | initrd: &Option<InitramfsConfig>, |
| 644 | ) -> FdtWriterResult<()> { |
| 645 | let chosen_node = fdt.begin_node("chosen")?; |
| 646 | fdt.property_string("bootargs", cmdline)?; |
| 647 | |
| 648 | if let Some(initrd_config) = initrd { |
| 649 | let initrd_start = initrd_config.address.raw_value(); |
| 650 | let initrd_end = initrd_config.address.raw_value() + initrd_config.size as u64; |
| 651 | fdt.property_u64("linux,initrd-start", initrd_start)?; |
| 652 | fdt.property_u64("linux,initrd-end", initrd_end)?; |
| 653 | } |
| 654 | |
| 655 | fdt.end_node(chosen_node)?; |
| 656 | |
| 657 | Ok(()) |
| 658 | } |
| 659 | |
| 660 | fn create_gic_node(fdt: &mut FdtWriter, gic_device: &Arc<Mutex<dyn Vgic>>) -> FdtWriterResult<()> { |
| 661 | let gic_reg_prop = gic_device.lock().unwrap().device_properties(); |