Under OpenBoot on sparc64: The value of the #address-cells property in the root node is the default value of 2. The value of the #size-cells property in the root node is the non-default value 2. (NOTE: Since the #address-cells property value in the root node is the default value 2, the property may or may not exist since the absence of the property implies the default value.)
So the address-cells property may or may not be there in the root device node. However we can depend upon the size-cells property being there, and equal to 2. The easiest way to handle this in the current grub code is to check to see if the size-cells value is larger than the address-cells value. Since that is nonsensicle, when we see that situation we set the address-cells value to be equal to size-cells. 2009-04-19 David S. Miller <da...@davemloft.net> * kern/ieee1275/mmap.c (grub_machine_mmap_iterate): If size_cells is larger than address_cells, use that value for address_cells too. --- kern/ieee1275/mmap.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/kern/ieee1275/mmap.c b/kern/ieee1275/mmap.c index 5b30dbb..317a121 100644 --- a/kern/ieee1275/mmap.c +++ b/kern/ieee1275/mmap.c @@ -38,6 +38,9 @@ grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uin grub_ieee1275_get_integer_property (root, "#size-cells", &size_cells, sizeof size_cells, 0); + if (size_cells > address_cells) + address_cells = size_cells; + /* Load `/memory/available'. */ if (grub_ieee1275_finddevice ("/memory", &memory)) return grub_error (GRUB_ERR_UNKNOWN_DEVICE, -- 1.6.2.3 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel