X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Falphabsd-tdep.c;h=3bbb55da253ccf59a39b9e0c1aa9d589bbbcca75;hb=d4f3a0e91896a0aad797e221ba6876ba7f0cd05c;hp=39a9b1ae77eb93c979fa1ea49f49059281d473c0;hpb=2ee563b53258d390d7446e90a67f465d504ae44c;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/alphabsd-tdep.c b/gdb/alphabsd-tdep.c index 39a9b1a..3bbb55d 100644 --- a/gdb/alphabsd-tdep.c +++ b/gdb/alphabsd-tdep.c @@ -1,11 +1,12 @@ -/* Common target dependent code for GDB on Alpha systems running BSD. - Copyright 2000, 2001, 2002 Free Software Foundation, Inc. +/* Common target dependent code Alpha BSD's. + + Copyright (C) 2000-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 - 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, @@ -14,9 +15,7 @@ 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., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #include "defs.h" #include "regcache.h" @@ -24,79 +23,34 @@ #include "alpha-tdep.h" #include "alphabsd-tdep.h" -/* Number of general-purpose registers. */ -#define NUM_GREGS 32 - -/* Number of floating-point registers. */ -#define NUM_FPREGS 31 - /* Conviently, GDB uses the same register numbering as the ptrace register structure used by BSD on Alpha. */ void -alphabsd_supply_reg (char *regs, int regno) +alphabsd_supply_reg (struct regcache *regcache, const char *regs, int regno) { - int i; - - for (i = 0; i < NUM_GREGS; i++) - { - if (i == regno || regno == -1) - { - if (CANNOT_FETCH_REGISTER (i)) - supply_register (i, NULL); - else - supply_register (i, regs + (i * 8)); - } - } - - /* The PC travels in the ZERO slot. */ - if (regno == PC_REGNUM || regno == -1) - supply_register (PC_REGNUM, regs + (31 * 8)); + /* PC is at slot 32; UNIQUE not present. */ + alpha_supply_int_regs (regcache, regno, regs, regs + 31 * 8, NULL); } void -alphabsd_fill_reg (char *regs, int regno) +alphabsd_fill_reg (const struct regcache *regcache, char *regs, int regno) { - int i; - - for (i = 0; i < NUM_GREGS; i++) - if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i)) - regcache_collect (i, regs + (i * 8)); - - /* The PC travels in the ZERO slot. */ - if (regno == PC_REGNUM || regno == -1) - regcache_collect (PC_REGNUM, regs + (31 * 8)); + /* PC is at slot 32; UNIQUE not present. */ + alpha_fill_int_regs (regcache, regno, regs, regs + 31 * 8, NULL); } void -alphabsd_supply_fpreg (char *fpregs, int regno) +alphabsd_supply_fpreg (struct regcache *regcache, + const char *fpregs, int regno) { - int i; - - for (i = FP0_REGNUM; i < FP0_REGNUM + NUM_FPREGS; i++) - { - if (i == regno || regno == -1) - { - if (CANNOT_FETCH_REGISTER (i)) - supply_register (i, NULL); - else - supply_register (i, fpregs + ((i - FP0_REGNUM) * 8)); - } - } - - if (regno == ALPHA_FPCR_REGNUM || regno == -1) - supply_register (ALPHA_FPCR_REGNUM, fpregs + (32 * 8)); + /* FPCR is at slot 33; slot 32 unused. */ + alpha_supply_fp_regs (regcache, regno, fpregs, fpregs + 32 * 8); } void -alphabsd_fill_fpreg (char *fpregs, int regno) +alphabsd_fill_fpreg (const struct regcache *regcache, char *fpregs, int regno) { - int i; - - for (i = FP0_REGNUM; i < FP0_REGNUM + NUM_FPREGS; i++) - if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i)) - regcache_collect (i, fpregs + ((i - FP0_REGNUM) * 8)); - - if (regno == ALPHA_FPCR_REGNUM || regno == -1) - regcache_collect (ALPHA_FPCR_REGNUM, fpregs + (32 * 8)); + /* FPCR is at slot 33; slot 32 unused. */ + alpha_fill_fp_regs (regcache, regno, fpregs, fpregs + 32 * 8); }