diff options
-rw-r--r-- | sim/ppc/ChangeLog | 9 | ||||
-rw-r--r-- | sim/ppc/emul_chirp.c | 14 | ||||
-rw-r--r-- | sim/ppc/hw_htab.c | 10 |
3 files changed, 28 insertions, 5 deletions
diff --git a/sim/ppc/ChangeLog b/sim/ppc/ChangeLog index e325321c1ae..3600c79e461 100644 --- a/sim/ppc/ChangeLog +++ b/sim/ppc/ChangeLog @@ -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). diff --git a/sim/ppc/emul_chirp.c b/sim/ppc/emul_chirp.c index c9bb89c5e0c..c4deb186668 100644 --- a/sim/ppc/emul_chirp.c +++ b/sim/ppc/emul_chirp.c @@ -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*)¬e->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; } diff --git a/sim/ppc/hw_htab.c b/sim/ppc/hw_htab.c index 35aa5711371..50a7b6adfcc 100644 --- a/sim/ppc/hw_htab.c +++ b/sim/ppc/hw_htab.c @@ -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, |