projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SCORE: Replace regset_alloc() invocation by a static regset structure.
[deliverable/binutils-gdb.git]
/
gdb
/
m68kbsd-tdep.c
diff --git
a/gdb/m68kbsd-tdep.c
b/gdb/m68kbsd-tdep.c
index eb5dfe003497b10957769be88595f2aec47da5d1..d27beb8828ca65fd4688bd6cbca306da52ff3c76 100644
(file)
--- a/
gdb/m68kbsd-tdep.c
+++ b/
gdb/m68kbsd-tdep.c
@@
-1,12
+1,12
@@
/* Target-dependent code for Motorola 68000 BSD's.
/* Target-dependent code for Motorola 68000 BSD's.
- Copyright (C) 2004
, 2005
Free Software Foundation, Inc.
+ Copyright (C) 2004
-2014
Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2
of the License, or
+ the Free Software Foundation; either version
3
of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@
-15,9
+15,7
@@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "arch-utils.h"
#include "defs.h"
#include "arch-utils.h"
@@
-27,9
+25,10
@@
#include "regset.h"
#include "trad-frame.h"
#include "tramp-frame.h"
#include "regset.h"
#include "trad-frame.h"
#include "tramp-frame.h"
+#include "gdbtypes.h"
#include "gdb_assert.h"
#include "gdb_assert.h"
-#include
"gdb_string.h"
+#include
<string.h>
#include "m68k-tdep.h"
#include "solib-svr4.h"
#include "m68k-tdep.h"
#include "solib-svr4.h"
@@
-43,12
+42,14
@@
#define M68KBSD_SIZEOF_FPREGS (((8 * 3) + 3) * 4)
int
#define M68KBSD_SIZEOF_FPREGS (((8 * 3) + 3) * 4)
int
-m68kbsd_fpreg_offset (int regnum)
+m68kbsd_fpreg_offset (
struct gdbarch *gdbarch,
int regnum)
{
{
+ int fp_len = TYPE_LENGTH (gdbarch_register_type (gdbarch, regnum));
+
if (regnum >= M68K_FPC_REGNUM)
if (regnum >= M68K_FPC_REGNUM)
- return 8 *
12
+ (regnum - M68K_FPC_REGNUM) * 4;
+ return 8 *
fp_len
+ (regnum - M68K_FPC_REGNUM) * 4;
- return (regnum - M68K_FP0_REGNUM) *
12
;
+ return (regnum - M68K_FP0_REGNUM) *
fp_len
;
}
/* Supply register REGNUM from the buffer specified by FPREGS and LEN
}
/* Supply register REGNUM from the buffer specified by FPREGS and LEN
@@
-60,6
+61,7
@@
m68kbsd_supply_fpregset (const struct regset *regset,
struct regcache *regcache,
int regnum, const void *fpregs, size_t len)
{
struct regcache *regcache,
int regnum, const void *fpregs, size_t len)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
const gdb_byte *regs = fpregs;
int i;
const gdb_byte *regs = fpregs;
int i;
@@
-68,7
+70,8
@@
m68kbsd_supply_fpregset (const struct regset *regset,
for (i = M68K_FP0_REGNUM; i <= M68K_PC_REGNUM; i++)
{
if (regnum == i || regnum == -1)
for (i = M68K_FP0_REGNUM; i <= M68K_PC_REGNUM; i++)
{
if (regnum == i || regnum == -1)
- regcache_raw_supply (regcache, i, regs + m68kbsd_fpreg_offset (i));
+ regcache_raw_supply (regcache, i,
+ regs + m68kbsd_fpreg_offset (gdbarch, i));
}
}
}
}
@@
-102,13
+105,13
@@
m68kbsd_supply_gregset (const struct regset *regset,
/* Motorola 68000 register sets. */
/* Motorola 68000 register sets. */
-static struct regset m68kbsd_gregset =
+static
const
struct regset m68kbsd_gregset =
{
NULL,
m68kbsd_supply_gregset
};
{
NULL,
m68kbsd_supply_gregset
};
-static struct regset m68kbsd_fpregset =
+static
const
struct regset m68kbsd_fpregset =
{
NULL,
m68kbsd_supply_fpregset
{
NULL,
m68kbsd_supply_fpregset
@@
-135,24
+138,24
@@
m68kbsd_regset_from_core_section (struct gdbarch *gdbarch,
static void
m68kobsd_sigtramp_cache_init (const struct tramp_frame *self,
static void
m68kobsd_sigtramp_cache_init (const struct tramp_frame *self,
- struct frame_info *
next
_frame,
+ struct frame_info *
this
_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
CORE_ADDR addr, base, pc;
int regnum;
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
CORE_ADDR addr, base, pc;
int regnum;
- base =
frame_unwind_register_unsigned (next
_frame, M68K_SP_REGNUM);
+ base =
get_frame_register_unsigned (this
_frame, M68K_SP_REGNUM);
/* The 'addql #4,%sp' instruction at offset 8 adjusts the stack
pointer. Adjust the frame base accordingly. */
/* The 'addql #4,%sp' instruction at offset 8 adjusts the stack
pointer. Adjust the frame base accordingly. */
- pc =
frame_unwind_register_unsigned (next
_frame, M68K_PC_REGNUM);
+ pc =
get_frame_register_unsigned (this
_frame, M68K_PC_REGNUM);
if ((pc - func) > 8)
base -= 4;
/* Get frame pointer, stack pointer, program counter and processor
state from `struct sigcontext'. */
if ((pc - func) > 8)
base -= 4;
/* Get frame pointer, stack pointer, program counter and processor
state from `struct sigcontext'. */
- addr = get_frame_memory_unsigned (
next
_frame, base + 8, 4);
+ addr = get_frame_memory_unsigned (
this
_frame, base + 8, 4);
trad_frame_set_reg_addr (this_cache, M68K_FP_REGNUM, addr + 8);
trad_frame_set_reg_addr (this_cache, M68K_SP_REGNUM, addr + 12);
trad_frame_set_reg_addr (this_cache, M68K_PC_REGNUM, addr + 20);
trad_frame_set_reg_addr (this_cache, M68K_FP_REGNUM, addr + 8);
trad_frame_set_reg_addr (this_cache, M68K_SP_REGNUM, addr + 12);
trad_frame_set_reg_addr (this_cache, M68K_PC_REGNUM, addr + 20);
@@
-160,7
+163,7
@@
m68kobsd_sigtramp_cache_init (const struct tramp_frame *self,
/* The sc_ap member of `struct sigcontext' points to additional
hardware state. Here we find the missing registers. */
/* The sc_ap member of `struct sigcontext' points to additional
hardware state. Here we find the missing registers. */
- addr = get_frame_memory_unsigned (
next
_frame, addr + 16, 4) + 4;
+ addr = get_frame_memory_unsigned (
this
_frame, addr + 16, 4) + 4;
for (regnum = M68K_D0_REGNUM; regnum < M68K_FP_REGNUM; regnum++, addr += 4)
trad_frame_set_reg_addr (this_cache, regnum, addr);
for (regnum = M68K_D0_REGNUM; regnum < M68K_FP_REGNUM; regnum++, addr += 4)
trad_frame_set_reg_addr (this_cache, regnum, addr);
@@
-193,6
+196,8
@@
m68kbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->jb_pc = 5;
tdep->jb_elt_size = 4;
tdep->jb_pc = 5;
tdep->jb_elt_size = 4;
+ set_gdbarch_decr_pc_after_break (gdbarch, 2);
+
set_gdbarch_regset_from_core_section
(gdbarch, m68kbsd_regset_from_core_section);
}
set_gdbarch_regset_from_core_section
(gdbarch, m68kbsd_regset_from_core_section);
}
This page took
0.025363 seconds
and
4
git commands to generate.