X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Farm-tdep.c;h=3ea0e79b7392af6194d4b48af65de065aff609a5;hb=b66f5587de2a096f357124b20376b2bab980238b;hp=539ee756e1b77a272094e5f79c6e25fbfc3d93ae;hpb=984c72381ccd9f950a87d4d7edecc6fa30db8b41;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 539ee756e1..3ea0e79b73 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -44,7 +44,7 @@ #include "remote.h" #include "target-descriptions.h" #include "user-regs.h" -#include "observer.h" +#include "observable.h" #include "arch/arm.h" #include "arch/arm-get-next-pcs.h" @@ -3804,8 +3804,7 @@ arm_push_dummy_call (struct gdbarch *gdbarch, struct value *function, reg_char, reg_scaled + i); regnum = user_reg_map_name_to_regnum (gdbarch, name_buf, strlen (name_buf)); - regcache_cooked_write (regcache, regnum, - val + i * unit_length); + regcache->cooked_write (regnum, val + i * unit_length); } } continue; @@ -6568,6 +6567,7 @@ arm_decode_miscellaneous (struct gdbarch *gdbarch, uint32_t insn, else if (op == 0x3) /* Not really supported. */ return arm_copy_unmodified (gdbarch, insn, "smc", dsc); + /* Fall through. */ default: return arm_copy_undef (gdbarch, insn, dsc); @@ -7892,7 +7892,7 @@ arm_extract_return_value (struct type *type, struct regcache *regs, internal type. */ bfd_byte tmpbuf[FP_REGISTER_SIZE]; - regcache_cooked_read (regs, ARM_F0_REGNUM, tmpbuf); + regs->cooked_read (ARM_F0_REGNUM, tmpbuf); target_float_convert (tmpbuf, arm_ext_type (gdbarch), valbuf, type); } @@ -7903,10 +7903,9 @@ arm_extract_return_value (struct type *type, struct regcache *regs, /* ARM_FLOAT_VFP can arise if this is a variadic function so not using the VFP ABI code. */ case ARM_FLOAT_VFP: - regcache_cooked_read (regs, ARM_A1_REGNUM, valbuf); + regs->cooked_read (ARM_A1_REGNUM, valbuf); if (TYPE_LENGTH (type) > 4) - regcache_cooked_read (regs, ARM_A1_REGNUM + 1, - valbuf + INT_REGISTER_SIZE); + regs->cooked_read (ARM_A1_REGNUM + 1, valbuf + INT_REGISTER_SIZE); break; default: @@ -7954,7 +7953,7 @@ arm_extract_return_value (struct type *type, struct regcache *regs, while (len > 0) { - regcache_cooked_read (regs, regno++, tmpbuf); + regs->cooked_read (regno++, tmpbuf); memcpy (valbuf, tmpbuf, len > INT_REGISTER_SIZE ? INT_REGISTER_SIZE : len); len -= INT_REGISTER_SIZE; @@ -8099,7 +8098,7 @@ arm_store_return_value (struct type *type, struct regcache *regs, case ARM_FLOAT_FPA: target_float_convert (valbuf, type, buf, arm_ext_type (gdbarch)); - regcache_cooked_write (regs, ARM_F0_REGNUM, buf); + regs->cooked_write (ARM_F0_REGNUM, buf); break; case ARM_FLOAT_SOFT_FPA: @@ -8107,10 +8106,9 @@ arm_store_return_value (struct type *type, struct regcache *regs, /* ARM_FLOAT_VFP can arise if this is a variadic function so not using the VFP ABI code. */ case ARM_FLOAT_VFP: - regcache_cooked_write (regs, ARM_A1_REGNUM, valbuf); + regs->cooked_write (ARM_A1_REGNUM, valbuf); if (TYPE_LENGTH (type) > 4) - regcache_cooked_write (regs, ARM_A1_REGNUM + 1, - valbuf + INT_REGISTER_SIZE); + regs->cooked_write (ARM_A1_REGNUM + 1, valbuf + INT_REGISTER_SIZE); break; default: @@ -8135,7 +8133,7 @@ arm_store_return_value (struct type *type, struct regcache *regs, LONGEST val = unpack_long (type, valbuf); store_signed_integer (tmpbuf, INT_REGISTER_SIZE, byte_order, val); - regcache_cooked_write (regs, ARM_A1_REGNUM, tmpbuf); + regs->cooked_write (ARM_A1_REGNUM, tmpbuf); } else { @@ -8147,7 +8145,7 @@ arm_store_return_value (struct type *type, struct regcache *regs, while (len > 0) { - regcache_cooked_write (regs, regno++, valbuf); + regs->cooked_write (regno++, valbuf); len -= INT_REGISTER_SIZE; valbuf += INT_REGISTER_SIZE; } @@ -8166,7 +8164,7 @@ arm_store_return_value (struct type *type, struct regcache *regs, { memcpy (tmpbuf, valbuf, len > INT_REGISTER_SIZE ? INT_REGISTER_SIZE : len); - regcache_cooked_write (regs, regno++, tmpbuf); + regs->cooked_write (regno++, tmpbuf); len -= INT_REGISTER_SIZE; valbuf += INT_REGISTER_SIZE; } @@ -8213,11 +8211,9 @@ arm_return_value (struct gdbarch *gdbarch, struct value *function, regnum = user_reg_map_name_to_regnum (gdbarch, name_buf, strlen (name_buf)); if (writebuf) - regcache_cooked_write (regcache, regnum, - writebuf + i * unit_length); + regcache->cooked_write (regnum, writebuf + i * unit_length); if (readbuf) - regcache_cooked_read (regcache, regnum, - readbuf + i * unit_length); + regcache->cooked_read (regnum, readbuf + i * unit_length); } } return RETURN_VALUE_REGISTER_CONVENTION; @@ -8764,9 +8760,9 @@ arm_neon_quad_write (struct gdbarch *gdbarch, struct regcache *regcache, else offset = 0; - regcache_raw_write (regcache, double_regnum, buf + offset); + regcache->raw_write (double_regnum, buf + offset); offset = 8 - offset; - regcache_raw_write (regcache, double_regnum + 1, buf + offset); + regcache->raw_write (double_regnum + 1, buf + offset); } static void @@ -8799,9 +8795,9 @@ arm_pseudo_write (struct gdbarch *gdbarch, struct regcache *regcache, double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf, strlen (name_buf)); - regcache_raw_read (regcache, double_regnum, reg_buf); + regcache->raw_read (double_regnum, reg_buf); memcpy (reg_buf + offset, buf, 4); - regcache_raw_write (regcache, double_regnum, reg_buf); + regcache->raw_write (double_regnum, reg_buf); } } @@ -9547,7 +9543,7 @@ _initialize_arm_tdep (void) = register_objfile_data_with_cleanup (NULL, arm_objfile_data_free); /* Add ourselves to objfile event chain. */ - observer_attach_new_objfile (arm_exidx_new_objfile); + gdb::observers::new_objfile.attach (arm_exidx_new_objfile); arm_exidx_data_key = register_objfile_data_with_cleanup (NULL, arm_exidx_data_free); @@ -11420,7 +11416,8 @@ arm_record_vfp_data_proc_insn (insn_decode_record *arm_insn_r) opc3 = bits (arm_insn_r->arm_insn, 6, 7); dp_op_sz = bit (arm_insn_r->arm_insn, 8); bit_d = bit (arm_insn_r->arm_insn, 22); - opc1 = opc1 & 0x04; + /* Mask off the "D" bit. */ + opc1 = opc1 & ~0x04; /* Handle VMLA, VMLS. */ if (opc1 == 0x00) @@ -11485,7 +11482,7 @@ arm_record_vfp_data_proc_insn (insn_decode_record *arm_insn_r) } } /* Handle VDIV. */ - else if (opc1 == 0x0b) + else if (opc1 == 0x08) { if (dp_op_sz) curr_insn_type = INSN_T1; @@ -13061,7 +13058,7 @@ public: class instruction_reader : public abstract_memory_reader { public: - bool read (CORE_ADDR memaddr, gdb_byte *buf, const size_t len) + bool read (CORE_ADDR memaddr, gdb_byte *buf, const size_t len) override { if (target_read_memory (memaddr, buf, len)) return false; @@ -13214,7 +13211,7 @@ public: : m_endian (endian), m_insns (insns), m_insns_size (SIZE) {} - bool read (CORE_ADDR memaddr, gdb_byte *buf, const size_t len) + bool read (CORE_ADDR memaddr, gdb_byte *buf, const size_t len) override { SELF_CHECK (len == 4 || len == 2); SELF_CHECK (memaddr % 2 == 0);