[OpenBIOS] [commit] r975 - trunk/openbios-devel/arch/ppc/qemu

repository service svn at openbios.org
Sat Nov 27 23:37:47 CET 2010


Author: afaerber
Date: Sat Nov 27 23:37:46 2010
New Revision: 975
URL: http://tracker.coreboot.org/trac/openbios/changeset/975

Log:
ppc: Increase #address-cells for ppc64

To store a full 64-bit address we need two cells. This setting matches
Apple's OpenFirmware on my G5 and IBM's firmware on the JS20.

The PCI driver zero-pads its physical addresses, so is okay as long as devices
remain in lower 32 bits. ofmem needs changes for memory ranges and translations.

Note that an enlarged #size-cells is not strictly needed
and constitutes a difference between Apple and IBM firmware (1 vs. 2).

v2:
* Introduce local helper push_physaddr(). A more general, global definition
  was not easily reachable due to inability to determine in preprocessor
  whether phys_addr_t is wider than ucell, leading to compilation errors
  due to a shift the size of the variable.

Signed-off-by: Andreas Färber <andreas.faerber at web.de>

Modified:
   trunk/openbios-devel/arch/ppc/qemu/init.c
   trunk/openbios-devel/arch/ppc/qemu/tree.fs

Modified: trunk/openbios-devel/arch/ppc/qemu/init.c
==============================================================================
--- trunk/openbios-devel/arch/ppc/qemu/init.c	Sat Nov 27 18:58:30 2010	(r974)
+++ trunk/openbios-devel/arch/ppc/qemu/init.c	Sat Nov 27 23:37:46 2010	(r975)
@@ -191,6 +191,16 @@
     }
 }
 
+/* -- phys.lo ... phys.hi */
+static void
+push_physaddr(phys_addr_t value)
+{
+    PUSH(value);
+#ifdef CONFIG_PPC64
+    PUSH(value >> 32);
+#endif
+}
+
 static void
 cpu_generic_init(const struct cpudef *cpu)
 {
@@ -730,8 +740,7 @@
 
     /* all memory */
 
-    /* TODO Adjust this when #address-cells gets increased for ppc64. */
-    PUSH(0);
+    push_physaddr(0);
     fword("encode-phys");
     /* This needs adjusting if #size-cells gets increased.
        Alternatively use multiple (address, size) tuples. */

Modified: trunk/openbios-devel/arch/ppc/qemu/tree.fs
==============================================================================
--- trunk/openbios-devel/arch/ppc/qemu/tree.fs	Sat Nov 27 18:58:30 2010	(r974)
+++ trunk/openbios-devel/arch/ppc/qemu/tree.fs	Sat Nov 27 23:37:46 2010	(r975)
@@ -5,13 +5,15 @@
 \   as published by the Free Software Foundation
 \
 
+include config.fs
+
 \ -------------------------------------------------------------
 \ device-tree
 \ -------------------------------------------------------------
 
 " /" find-device
 
-1 encode-int " #address-cells" property
+[IFDEF] CONFIG_PPC64 2 [ELSE] 1 [THEN] encode-int " #address-cells" property
 1 encode-int " #size-cells" property
 h# 05f5e100 encode-int " clock-frequency" property
 



More information about the OpenBIOS mailing list