Revision 04088adb hw/ppc440_bamboo.c

b/hw/ppc440_bamboo.c
27 27

  
28 28
#define BINARY_DEVICE_TREE_FILE "bamboo.dtb"
29 29

  
30
static void *bamboo_load_device_tree(target_phys_addr_t addr,
30
static int bamboo_load_device_tree(target_phys_addr_t addr,
31 31
                                     uint32_t ramsize,
32 32
                                     target_phys_addr_t initrd_base,
33 33
                                     target_phys_addr_t initrd_size,
......
42 42

  
43 43
    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, BINARY_DEVICE_TREE_FILE);
44 44
    if (!filename) {
45
        ret = -1;
45 46
        goto out;
46 47
    }
47 48
    fdt = load_device_tree(filename, &fdt_size);
48 49
    qemu_free(filename);
49 50
    if (fdt == NULL) {
51
        ret = -1;
50 52
        goto out;
51 53
    }
52 54

  
......
75 77
    if (kvm_enabled())
76 78
        kvmppc_fdt_update(fdt);
77 79

  
78
    cpu_physical_memory_write (addr, (void *)fdt, fdt_size);
80
    ret = rom_add_blob_fixed(BINARY_DEVICE_TREE_FILE, fdt, fdt_size, addr);
81
    qemu_free(fdt);
79 82

  
80 83
out:
81 84
#endif
82 85

  
83
    return fdt;
86
    return ret;
84 87
}
85 88

  
86 89
static void bamboo_init(ram_addr_t ram_size,
......
101 104
    target_ulong initrd_base = 0;
102 105
    target_long initrd_size = 0;
103 106
    target_ulong dt_base = 0;
104
    void *fdt;
105 107
    int i;
106 108

  
107 109
    /* Setup CPU. */
......
153 155
        else
154 156
            dt_base = kernel_size + loadaddr;
155 157

  
156
        fdt = bamboo_load_device_tree(dt_base, ram_size,
157
                                      initrd_base, initrd_size, kernel_cmdline);
158
        if (fdt == NULL) {
158
        if (bamboo_load_device_tree(dt_base, ram_size,
159
                        initrd_base, initrd_size, kernel_cmdline) < 0) {
159 160
            fprintf(stderr, "couldn't load device tree\n");
160 161
            exit(1);
161 162
        }

Also available in: Unified diff