diff options
author | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:34:07 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:34:07 +0000 |
commit | 071ea11e85eb9d529cc5eb3d35f6247466a21b99 (patch) | |
tree | 5deda65b8d7b04d1f4cbc534c3206d328e1267ec /gdb/m68klinux-nat.c | |
parent | 1730ec6b1848f0f32154277f788fb29f88d8475b (diff) | |
download | binutils-071ea11e85eb9d529cc5eb3d35f6247466a21b99.zip binutils-071ea11e85eb9d529cc5eb3d35f6247466a21b99.tar.gz binutils-071ea11e85eb9d529cc5eb3d35f6247466a21b99.tar.bz2 |
Initial creation of sourceware repository
Diffstat (limited to 'gdb/m68klinux-nat.c')
-rw-r--r-- | gdb/m68klinux-nat.c | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/gdb/m68klinux-nat.c b/gdb/m68klinux-nat.c deleted file mode 100644 index 8367b24..0000000 --- a/gdb/m68klinux-nat.c +++ /dev/null @@ -1,155 +0,0 @@ -/* Motorola m68k native support for Linux - Copyright (C) 1996,1998 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 -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -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. */ - -#include "defs.h" -#include "frame.h" -#include "inferior.h" -#include "language.h" -#include "gdbcore.h" - -#ifdef USG -#include <sys/types.h> -#endif - -#include <sys/param.h> -#include <sys/dir.h> -#include <signal.h> -#include <sys/user.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <sys/procfs.h> - -#include <sys/file.h> -#include "gdb_stat.h" - -#include "floatformat.h" - -#include "target.h" - - -/* This table must line up with REGISTER_NAMES in tm-m68k.h */ -static const int regmap[] = -{ - PT_D0, PT_D1, PT_D2, PT_D3, PT_D4, PT_D5, PT_D6, PT_D7, - PT_A0, PT_A1, PT_A2, PT_A3, PT_A4, PT_A5, PT_A6, PT_USP, - PT_SR, PT_PC, - /* PT_FP0, ..., PT_FP7 */ - 21, 24, 27, 30, 33, 36, 39, 42, - /* PT_FPCR, PT_FPSR, PT_FPIAR */ - 45, 46, 47 -}; - -/* BLOCKEND is the value of u.u_ar0, and points to the place where GS - is stored. */ - -int -m68k_linux_register_u_addr (blockend, regnum) - int blockend; - int regnum; -{ - return (blockend + 4 * regmap[regnum]); -} - -/* Given a pointer to a general register set in /proc format (gregset_t *), - unpack the register contents and supply them as gdb's idea of the current - register values. */ - - -/* Note both m68k-tdep.c and m68klinux-nat.c contain definitions - for supply_gregset and supply_fpregset. The definitions - in m68k-tdep.c are valid if USE_PROC_FS is defined. Otherwise, - the definitions in m68klinux-nat.c will be used. This is a - bit of a hack. The supply_* routines do not belong in - *_tdep.c files. But, there are several lynx ports that currently - depend on these definitions. */ - -#ifndef USE_PROC_FS - -void -supply_gregset (gregsetp) - gregset_t *gregsetp; -{ - int regi; - - for (regi = D0_REGNUM ; regi <= SP_REGNUM ; regi++) - supply_register (regi, (char *) (*gregsetp + regmap[regi])); - supply_register (PS_REGNUM, (char *) (*gregsetp + PT_SR)); - supply_register (PC_REGNUM, (char *) (*gregsetp + PT_PC)); -} - -/* Given a pointer to a floating point register set in /proc format - (fpregset_t *), unpack the register contents and supply them as gdb's - idea of the current floating point register values. */ - -void -supply_fpregset (fpregsetp) - fpregset_t *fpregsetp; -{ - int regi; - - for (regi = FP0_REGNUM ; regi < FPC_REGNUM ; regi++) - supply_register (regi, (char *) &fpregsetp->fpregs[(regi - FP0_REGNUM) * 3]); - supply_register (FPC_REGNUM, (char *) &fpregsetp->fpcntl[0]); - supply_register (FPS_REGNUM, (char *) &fpregsetp->fpcntl[1]); - supply_register (FPI_REGNUM, (char *) &fpregsetp->fpcntl[2]); -} - -#endif - - -int -kernel_u_size () -{ - return (sizeof (struct user)); -} - -/* Return non-zero if PC points into the signal trampoline. */ - -int -in_sigtramp (pc) - CORE_ADDR pc; -{ - CORE_ADDR sp; - char buf[TARGET_SHORT_BIT / TARGET_CHAR_BIT]; - int insn; - - sp = read_register (SP_REGNUM); - if (pc - 2 < sp) - return 0; - - if (read_memory_nobpt (pc, buf, sizeof (buf))) - return 0; - insn = extract_unsigned_integer (buf, sizeof (buf)); - if (insn == 0xdefc /* addaw #,sp */ - || insn == 0x7077 /* moveq #119,d0 */ - || insn == 0x4e40 /* trap #0 */ - || insn == 0x203c /* movel #,d0 */) - return 1; - - if (read_memory_nobpt (pc - 2, buf, sizeof (buf))) - return 0; - insn = extract_unsigned_integer (buf, sizeof (buf)); - if (insn == 0xdefc /* addaw #,sp */ - || insn == 0x7077 /* moveq #119,d0 */ - || insn == 0x4e40 /* trap #0 */ - || insn == 0x203c /* movel #,d0 */) - return 1; - - return 0; -} |