1/* Native-dependent code for GNU/Linux UltraSPARC. 2 3 Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc. 4 5 This file is part of GDB. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20#include "defs.h" 21#include "regcache.h" 22 23#include <sys/procfs.h> 24#include "gregset.h" 25 26#include "sparc64-tdep.h" 27#include "sparc-tdep.h" 28#include "sparc-nat.h" 29#include "inferior.h" 30#include "target.h" 31#include "linux-nat.h" 32 33static const struct sparc_gregset sparc64_linux_ptrace_gregset = 34{ 35 16 * 8, /* "tstate" */ 36 17 * 8, /* %pc */ 37 18 * 8, /* %npc */ 38 19 * 8, /* %y */ 39 -1, /* %wim */ 40 -1, /* %tbr */ 41 0 * 8, /* %g1 */ 42 -1, /* %l0 */ 43 4 /* sizeof (%y) */ 44}; 45 46 47void 48supply_gregset (struct regcache *regcache, const prgregset_t *gregs) 49{ 50 sparc64_supply_gregset (sparc_gregset, regcache, -1, gregs); 51} 52 53void 54supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs) 55{ 56 sparc64_supply_fpregset (regcache, -1, fpregs); 57} 58 59void 60fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum) 61{ 62 sparc64_collect_gregset (sparc_gregset, regcache, regnum, gregs); 63} 64 65void 66fill_fpregset (const struct regcache *regcache, 67 prfpregset_t *fpregs, int regnum) 68{ 69 sparc64_collect_fpregset (regcache, regnum, fpregs); 70} 71 72/* Provide a prototype to silence -Wmissing-prototypes. */ 73void _initialize_sparc64_linux_nat (void); 74 75void 76_initialize_sparc64_linux_nat (void) 77{ 78 struct target_ops *t; 79 80 /* Fill in the generic GNU/Linux methods. */ 81 t = linux_target (); 82 83 /* Add our register access methods. */ 84 t->to_fetch_registers = sparc_fetch_inferior_registers; 85 t->to_store_registers = sparc_store_inferior_registers; 86 87 /* Register the target. */ 88 linux_nat_add_target (t); 89 90 sparc_gregset = &sparc64_linux_ptrace_gregset; 91} 92