Chirp fixes:
authorAndrew Cagney <cagney@redhat.com>
Fri, 26 Oct 2001 04:37:54 +0000 (04:37 +0000)
committerAndrew Cagney <cagney@redhat.com>
Fri, 26 Oct 2001 04:37:54 +0000 (04:37 +0000)
* hw_htab.c (htab_map_binary): Don't try to map the text section
when it is empty.
* emul_chirp.c (map_over_chirp_note): Default load-base to -1 not
CHIRP_LOAD_BASE.
(emul_chirp_create): Map in the interrupt table.

sim/ppc/ChangeLog
sim/ppc/emul_chirp.c
sim/ppc/hw_htab.c

index e325321..3600c79 100644 (file)
@@ -1,3 +1,12 @@
+2001-10-25  Andrew Cagney  <ac131313@redhat.com>
+
+       * emul_generic.c (OEA_MEMORY_SIZE): Increase to 4mb.
+       * hw_htab.c (htab_map_binary): Don't try to map the text section
+       when it is empty.
+       * emul_chirp.c (map_over_chirp_note): Default load-base to -1 not
+       CHIRP_LOAD_BASE.
+       (emul_chirp_create): Map in the interrupt table.
+
 2001-07-16  Daniel Jacobowitz  <drow@mvista.com>
 
        * Makefile.in: Add dependencies on $(CPU_H).
index c9bb89c..c4deb18 100644 (file)
@@ -1537,7 +1537,7 @@ map_over_chirp_note(bfd *image,
     if (head.descsz == sizeof(note->desc))
       note->desc.load_base = bfd_get_32(image, (void*)&note->desc.load_base);
     else
-      note->desc.load_base = CHIRP_LOAD_BASE;
+      note->desc.load_base = (signed32)-1;
   }
 }
 
@@ -1904,6 +1904,18 @@ emul_chirp_create(device *root,
     tree_parse(node, "./pp %d", 0x2);
   }
 
+  /* map in the interrupt vectors */
+
+  if (!chirp->real_mode) {
+    node = tree_parse(root, "/openprom/init/htab/pte@0x0");
+    tree_parse(node, "./psim,description \"map in interrupt vectors");
+    tree_parse(node, "./virtual-address 0x0");
+    tree_parse(node, "./real-address 0x0");
+    tree_parse(node, "./nr-bytes 0x3000");
+    tree_parse(node, "./wimg %d", 0x7);
+    tree_parse(node, "./pp %d", 0x2);
+  }
+
   return chirp;
 }
 
index 35aa571..50a7b6a 100644 (file)
@@ -571,10 +571,12 @@ htab_map_binary(device *me,
   }
 
   /* set up virtual memory maps for each of the regions */
-  htab_map_region(me, memory, sizes.text_ra, sizes.text_base,
-                 sizes.text_bound - sizes.text_base,
-                 wimg, pp,
-                 htaborg, htabmask);
+  if (sizes.text_bound - sizes.text_base > 0) {
+    htab_map_region(me, memory, sizes.text_ra, sizes.text_base,
+                   sizes.text_bound - sizes.text_base,
+                   wimg, pp,
+                   htaborg, htabmask);
+  }
 
   htab_map_region(me, memory, sizes.data_ra, sizes.data_base,
                  sizes.data_bound - sizes.data_base,