X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fmn10300-tdep.c;h=b472c36ebf1bed280235a9c4d42cd56d58f7406b;hb=3804da7e07a13c14210d79de55ebfe2318421164;hp=93c02d67b40869667f1b680deda48007ff305ff1;hpb=e2882c85786571175a0b0bfc3bcd2f14620b1ea3;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c index 93c02d67b4..b472c36ebf 100644 --- a/gdb/mn10300-tdep.c +++ b/gdb/mn10300-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger. - Copyright (C) 1996-2018 Free Software Foundation, Inc. + Copyright (C) 1996-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -117,7 +117,7 @@ mn10300_type_align (struct type *type) case TYPE_CODE_ARRAY: /* HACK! Structures containing arrays, even small ones, are not - elligible for returning in registers. */ + eligible for returning in registers. */ return 256; case TYPE_CODE_TYPEDEF: @@ -182,13 +182,12 @@ mn10300_store_return_value (struct gdbarch *gdbarch, struct type *type, regsz = register_size (gdbarch, reg); if (len <= regsz) - regcache_raw_write_part (regcache, reg, 0, len, valbuf); + regcache->raw_write_part (reg, 0, len, valbuf); else if (len <= 2 * regsz) { - regcache_raw_write (regcache, reg, valbuf); + regcache->raw_write (reg, valbuf); gdb_assert (regsz == register_size (gdbarch, reg + 1)); - regcache_raw_write_part (regcache, reg+1, 0, - len - regsz, valbuf + regsz); + regcache->raw_write_part (reg + 1, 0, len - regsz, valbuf + regsz); } else internal_error (__FILE__, __LINE__, @@ -212,15 +211,15 @@ mn10300_extract_return_value (struct gdbarch *gdbarch, struct type *type, gdb_assert (regsz <= MN10300_MAX_REGISTER_SIZE); if (len <= regsz) { - regcache_raw_read (regcache, reg, buf); + regcache->raw_read (reg, buf); memcpy (valbuf, buf, len); } else if (len <= 2 * regsz) { - regcache_raw_read (regcache, reg, buf); + regcache->raw_read (reg, buf); memcpy (valbuf, buf, regsz); gdb_assert (regsz == register_size (gdbarch, reg + 1)); - regcache_raw_read (regcache, reg + 1, buf); + regcache->raw_read (reg + 1, buf); memcpy ((char *) valbuf + regsz, buf, len - regsz); } else @@ -307,20 +306,6 @@ mn10300_register_type (struct gdbarch *gdbarch, int reg) return builtin_type (gdbarch)->builtin_int; } -static CORE_ADDR -mn10300_read_pc (struct regcache *regcache) -{ - ULONGEST val; - regcache_cooked_read_unsigned (regcache, E_PC_REGNUM, &val); - return val; -} - -static void -mn10300_write_pc (struct regcache *regcache, CORE_ADDR val) -{ - regcache_cooked_write_unsigned (regcache, E_PC_REGNUM, val); -} - /* The breakpoint instruction must be the same size as the smallest instruction in the instruction set. @@ -1113,15 +1098,6 @@ mn10300_frame_base (struct frame_info *this_frame, void **this_prologue_cache) } } -/* Here is a dummy implementation. */ -static struct frame_id -mn10300_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, E_SP_REGNUM); - CORE_ADDR pc = get_frame_register_unsigned (this_frame, E_PC_REGNUM); - return frame_id_build (sp, pc); -} - static void mn10300_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, @@ -1164,32 +1140,11 @@ static const struct frame_unwind mn10300_frame_unwind = { default_frame_sniffer }; -static CORE_ADDR -mn10300_unwind_pc (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - ULONGEST pc; - - pc = frame_unwind_register_unsigned (this_frame, E_PC_REGNUM); - return pc; -} - -static CORE_ADDR -mn10300_unwind_sp (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - ULONGEST sp; - - sp = frame_unwind_register_unsigned (this_frame, E_SP_REGNUM); - return sp; -} - static void mn10300_frame_unwind_init (struct gdbarch *gdbarch) { dwarf2_append_unwinders (gdbarch); frame_unwind_append_unwinder (gdbarch, &mn10300_frame_unwind); - set_gdbarch_dummy_id (gdbarch, mn10300_dummy_id); - set_gdbarch_unwind_pc (gdbarch, mn10300_unwind_pc); - set_gdbarch_unwind_sp (gdbarch, mn10300_unwind_sp); } /* Function: push_dummy_call @@ -1206,7 +1161,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, - int struct_return, + function_call_return_method return_method, CORE_ADDR struct_addr) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); @@ -1226,7 +1181,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch, XXX This doesn't appear to handle pass-by-invisible reference arguments. */ - regs_used = struct_return ? 1 : 0; + regs_used = (return_method == return_method_struct) ? 1 : 0; for (len = 0, argnum = 0; argnum < nargs; argnum++) { arg_len = (TYPE_LENGTH (value_type (args[argnum])) + 3) & ~3; @@ -1241,7 +1196,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch, /* Allocate stack space. */ sp -= len; - if (struct_return) + if (return_method == return_method_struct) { regs_used = 1; regcache_cooked_write_unsigned (regcache, E_D0_REGNUM, struct_addr); @@ -1323,7 +1278,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch, { CORE_ADDR func_addr = find_function_addr (target_func, NULL); CORE_ADDR unwound_sp - = mn10300_unwind_sp (gdbarch, create_new_frame (sp, func_addr)); + = gdbarch_unwind_sp (gdbarch, create_new_frame (sp, func_addr)); if (sp != unwound_sp) regcache_cooked_write_unsigned (regcache, E_SP_REGNUM, sp - (unwound_sp - sp)); @@ -1423,8 +1378,6 @@ mn10300_gdbarch_init (struct gdbarch_info info, set_gdbarch_num_regs (gdbarch, num_regs); set_gdbarch_register_type (gdbarch, mn10300_register_type); set_gdbarch_skip_prologue (gdbarch, mn10300_skip_prologue); - set_gdbarch_read_pc (gdbarch, mn10300_read_pc); - set_gdbarch_write_pc (gdbarch, mn10300_write_pc); set_gdbarch_pc_regnum (gdbarch, E_PC_REGNUM); set_gdbarch_sp_regnum (gdbarch, E_SP_REGNUM); set_gdbarch_dwarf2_reg_to_regnum (gdbarch, mn10300_dwarf2_reg_to_regnum);