[OpenBIOS] [PATCH 2/2] ppc: Use unsigned long for effective addresses

Andreas Färber andreas.faerber at web.de
Sun Dec 5 19:08:45 CET 2010


Adjust the special handling of ROM-to-RAM for ppc64.

In particular this allows ISI and DSI exceptions to set up TLB entries for
high addresses on ppc64.

Signed-off-by: Andreas Färber <andreas.faerber at web.de>
---
 arch/ppc/qemu/ofmem.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/ppc/qemu/ofmem.c b/arch/ppc/qemu/ofmem.c
index 2892d54..c21a112 100644
--- a/arch/ppc/qemu/ofmem.c
+++ b/arch/ppc/qemu/ofmem.c
@@ -47,7 +47,7 @@ extern void setup_mmu(unsigned long code_base);
 #define FREE_BASE		0x00004000UL
 #define OF_CODE_START	0xfff00000UL
 #define OF_CODE_SIZE    0x00100000
-#define IO_BASE			0x80000000
+#define IO_BASE			0x80000000UL
 
 #ifdef __powerpc64__
 #define HASH_BITS		18
@@ -85,7 +85,7 @@ get_ram_bottom(void)
     return FREE_BASE;
 }
 
-static ucell get_heap_top(void)
+static unsigned long get_heap_top(void)
 {
     return get_hash_base() - (32 + 64 + 64) * 1024;
 }
@@ -217,11 +217,11 @@ ucell ofmem_arch_default_translation_mode(phys_addr_t phys)
 /************************************************************************/
 
 static phys_addr_t
-ea_to_phys(ucell ea, ucell *mode)
+ea_to_phys(unsigned long ea, ucell *mode)
 {
     phys_addr_t phys;
 
-    if (ea >= OF_CODE_START) {
+    if (ea >= OF_CODE_START && ea <= 0xffffffffUL) {
         /* ROM into RAM */
         ea -= OF_CODE_START;
         phys = get_rom_base() + ea;
@@ -242,7 +242,7 @@ ea_to_phys(ucell ea, ucell *mode)
 }
 
 static void
-hash_page_64(ucell ea, phys_addr_t phys, ucell mode)
+hash_page_64(unsigned long ea, phys_addr_t phys, ucell mode)
 {
     static int next_grab_slot = 0;
     uint64_t vsid_mask, page_mask, pgidx, hash;
@@ -308,7 +308,7 @@ hash_page_64(ucell ea, phys_addr_t phys, ucell mode)
 }
 
 static void
-hash_page_32(ucell ea, phys_addr_t phys, ucell mode)
+hash_page_32(unsigned long ea, phys_addr_t phys, ucell mode)
 {
 #ifndef __powerpc64__
     static int next_grab_slot = 0;
-- 
1.7.3




More information about the OpenBIOS mailing list