{
int res, i;
int reg_size = addrcells + sizecells;
- int nr_cells = reg_size*kinfo->mem.nr_banks;
+ int nr_cells = reg_size * (kinfo->mem.nr_banks + (is_hardware_domain(d) ?
+ bootinfo.reserved_mem.nr_banks : 0));
__be32 reg[NR_MEM_BANKS * 4 /* Worst case addrcells + sizecells */];
__be32 *cells;
dt_child_set_range(&cells, addrcells, sizecells, start, size);
}
+ if ( is_hardware_domain(d) )
+ {
+ for ( i = 0; i < bootinfo.reserved_mem.nr_banks; i++ )
+ {
+ u64 start = bootinfo.reserved_mem.bank[i].start;
+ u64 size = bootinfo.reserved_mem.bank[i].size;
+
+ dt_dprintk(" Bank %d: %#"PRIx64"->%#"PRIx64"\n",
+ i, start, start + size);
+
+ dt_child_set_range(&cells, addrcells, sizecells, start, size);
+ }
+ }
+
res = fdt_property(fdt, "reg", reg, nr_cells * sizeof(*reg));
if ( res )
return res;