Load initrd for elf kernels

Change-Id: I359f64d9075bd7bac5b9ac1cdef3211832891acc
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index fef4072..74c0f0a 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -1023,6 +1023,26 @@
     kernel_size = arm_load_elf(info, &elf_entry, &image_low_addr,
                                &image_high_addr, elf_machine, as);
     if (kernel_size > 0 && have_dtb(info)) {
+        if (info->initrd_filename) {
+            initrd_size = load_ramdisk(info->initrd_filename,
+                                       info->initrd_start,
+                                       info->ram_size -
+                                       info->initrd_start);
+            if (initrd_size < 0) {
+                initrd_size = load_image_targphys(info->initrd_filename,
+                                                  info->initrd_start,
+                                                  info->ram_size -
+                                                  info->initrd_start);
+            }
+            if (initrd_size < 0) {
+                fprintf(stderr, "qemu: could not load initrd '%s'\n",
+                        info->initrd_filename);
+                exit(1);
+            }
+        } else {
+            initrd_size = 0;
+        }
+        info->initrd_size = initrd_size;
         /*
          * If there is still some room left at the base of RAM, try and put
          * the DTB there like we do for images loaded with -bios or -pflash.