diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2010-06-19 17:36:51 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2010-06-19 17:36:51 +0000 |
commit | d2ed6730f2ef390d50a47ea03ee3a5b1dd5e37f0 (patch) | |
tree | 321615fd866fdd7f688d14fbf8b62ba1de12ff36 /gdb/spu-tdep.c | |
parent | fbece226ba5bc19f942384f8a048eba3bd92f99a (diff) | |
download | binutils-gdb-d2ed6730f2ef390d50a47ea03ee3a5b1dd5e37f0.tar.gz |
ChangeLog:
* spu-multiarch.c (spu_xfer_partial): Wrap around local store
limit on local store memory accesses.
* spu-linux-nat.c (spu_xfer_partial): Likewise.
* spu-tdep.c (spu_lslr): Remove.
(spu_pointer_to_address): Do not truncate addresses.
(spu_integer_to_address): Likewise.
(spu_overlay_new_objfile): Use SPU_OVERLAY_LMA.
* spu-tdep.h: Add comments.
(SPUADDR_SPU): Respect SPU_OVERLAY_LMA bit.
(SPU_OVERLAY_LMA): Define.
gdbserver/ChangeLog:
* spu-low.c (spu_read_memory): Wrap around local store limit.
(spu_write_memory): Likewise.
testsuite/ChangeLog:
* gdb.arch/spu-ls.exp: New file.
* gdb.arch/spu-ls.c: Likewise.
Diffstat (limited to 'gdb/spu-tdep.c')
-rw-r--r-- | gdb/spu-tdep.c | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index ae648418e9c..072ae8c7340 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -364,23 +364,6 @@ spu_gdbarch_id (struct gdbarch *gdbarch) return id; } -static ULONGEST -spu_lslr (int id) -{ - gdb_byte buf[32]; - char annex[32]; - - if (id == -1) - return SPU_LS_SIZE - 1; - - xsnprintf (annex, sizeof annex, "%d/lslr", id); - memset (buf, 0, sizeof buf); - target_read (¤t_target, TARGET_OBJECT_SPU, annex, - buf, 0, sizeof buf); - - return strtoulst (buf, NULL, 16); -} - static int spu_address_class_type_flags (int byte_size, int dwarf2_addr_class) { @@ -426,7 +409,6 @@ spu_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf) { int id = spu_gdbarch_id (gdbarch); - ULONGEST lslr = spu_lslr (id); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); ULONGEST addr = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order); @@ -435,7 +417,7 @@ spu_pointer_to_address (struct gdbarch *gdbarch, if (TYPE_ADDRESS_CLASS_1 (type)) return addr; - return addr? SPUADDR (id, addr & lslr) : 0; + return addr? SPUADDR (id, addr) : 0; } static CORE_ADDR @@ -443,10 +425,9 @@ spu_integer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf) { int id = spu_gdbarch_id (gdbarch); - ULONGEST lslr = spu_lslr (id); ULONGEST addr = unpack_long (type, buf); - return SPUADDR (id, addr & lslr); + return SPUADDR (id, addr); } @@ -1777,7 +1758,7 @@ spu_overlay_update (struct obj_section *osect) /* Whenever a new objfile is loaded, read the target's _ovly_table. If there is one, go through all sections and make sure for non- overlay sections LMA equals VMA, while for overlay sections LMA - is larger than local store size. */ + is larger than SPU_OVERLAY_LMA. */ static void spu_overlay_new_objfile (struct objfile *objfile) { @@ -1807,7 +1788,7 @@ spu_overlay_new_objfile (struct objfile *objfile) if (ovly_table[ndx].mapped_ptr == 0) bfd_section_lma (obfd, bsect) = bfd_section_vma (obfd, bsect); else - bfd_section_lma (obfd, bsect) = bsect->filepos + SPU_LS_SIZE; + bfd_section_lma (obfd, bsect) = SPU_OVERLAY_LMA + bsect->filepos; } } |