func: static void xlnx_ep108_init(MachineState *machine)
  
  {
  
      XlnxEP108 *s = g_new0(XlnxEP108, 1);
  
      Error *err = NULL;
  
  
  
      object_initialize(&s->soc, sizeof(s->soc), TYPE_XLNX_ZYNQMP);
  
      object_property_add_child(OBJECT(machine), "soc", OBJECT(&s->soc),
  
                                &error_abort);
  
  
  
      object_property_set_bool(OBJECT(&s->soc), true, "realized", &err);
  
      if (err) {
  
          error_report("%s", error_get_pretty(err));
  
          exit(1);
  
      }
  
  
  
      if (machine->ram_size > EP108_MAX_RAM_SIZE) {
  
          error_report("WARNING: RAM size " RAM_ADDR_FMT " above max supported, "
  
                       "reduced to %llx", machine->ram_size, EP108_MAX_RAM_SIZE);
  
          machine->ram_size = EP108_MAX_RAM_SIZE;
  
      }
  
  
  
      if (machine->ram_size <= 0x08000000) {
  
          qemu_log("WARNING: RAM size " RAM_ADDR_FMT " is small for EP108",
  
                   machine->ram_size);
  
      }
  
  
  
      memory_region_allocate_system_memory(&s->ddr_ram, NULL, "ddr-ram",
  
                                           machine->ram_size);
  
      memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram);
  
  
  
      xlnx_ep108_binfo.ram_size = machine->ram_size;
  
      xlnx_ep108_binfo.kernel_filename = machine->kernel_filename;
  
      xlnx_ep108_binfo.kernel_cmdline = machine->kernel_cmdline;
  
      xlnx_ep108_binfo.initrd_filename = machine->initrd_filename;
  
      xlnx_ep108_binfo.loader_start = 0;
  
      arm_load_kernel(s->soc.boot_cpu_ptr, &xlnx_ep108_binfo);
  
  }
  