diff options
Diffstat (limited to 'gdb/config/m68k')
-rw-r--r-- | gdb/config/m68k/.Sanitize | 2 | ||||
-rw-r--r-- | gdb/config/m68k/apollo68b.mt | 3 | ||||
-rw-r--r-- | gdb/config/m68k/nm-apollo68b.h | 22 | ||||
-rw-r--r-- | gdb/config/m68k/tm-apollo68b.h | 63 |
4 files changed, 90 insertions, 0 deletions
diff --git a/gdb/config/m68k/.Sanitize b/gdb/config/m68k/.Sanitize index 9947f75..9ebd0b4 100644 --- a/gdb/config/m68k/.Sanitize +++ b/gdb/config/m68k/.Sanitize @@ -28,6 +28,7 @@ altos.mt amix.mh amix.mt apollo68b.mh +apollo68b.mt apollo68v.mh delta68.mh delta68.mt @@ -65,6 +66,7 @@ sun3os3.mt sun3os4.mh sun3os4.mt tm-3b1.h +tm-apollo68b.h tm-delta68.h tm-m68k-em.h tm-m68k.h diff --git a/gdb/config/m68k/apollo68b.mt b/gdb/config/m68k/apollo68b.mt index e69de29..e1fb1dc 100644 --- a/gdb/config/m68k/apollo68b.mt +++ b/gdb/config/m68k/apollo68b.mt @@ -0,0 +1,3 @@ +# Target: Apollo m68k in BSD mode +TDEPFILES= exec.o m68k-pinsn.o m68k-tdep.o dstread.o +TM_FILE= tm-apollo68b.h diff --git a/gdb/config/m68k/nm-apollo68b.h b/gdb/config/m68k/nm-apollo68b.h index 6f28b62..c90dfac 100644 --- a/gdb/config/m68k/nm-apollo68b.h +++ b/gdb/config/m68k/nm-apollo68b.h @@ -21,3 +21,25 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define FETCH_INFERIOR_REGISTERS +/* Tell gdb that we can attach and detach other processes */ +#define ATTACH_DETACH + +#define U_REGS_OFFSET 6 + +/* This is the amount to subtract from u.u_ar0 + to get the offset in the core file of the register values. */ + +#define KERNEL_U_ADDR 0 + +#undef FLOAT_INFO /* No float info yet */ + +#define REGISTER_U_ADDR(addr, blockend, regno) \ + (addr) = (6 + 4 * (regno)) + +/* Apollos don't really have a USER area,so trying to read it from the + * process address space will fail. It does support a read from a faked + * USER area using the "PEEKUSER" ptrace call. + */ +#define PT_READ_U 3 + +#define MEM_FNS_DECLARED /* /usr/include/string.h can get it wrong */ diff --git a/gdb/config/m68k/tm-apollo68b.h b/gdb/config/m68k/tm-apollo68b.h index e69de29..fd8fbfc 100644 --- a/gdb/config/m68k/tm-apollo68b.h +++ b/gdb/config/m68k/tm-apollo68b.h @@ -0,0 +1,63 @@ +/* Parameters for execution on Apollo 68k running BSD. + Copyright (C) 1986, 1987, 1989, 1991 Free Software Foundation, Inc. + Contributed by Cygnus Support. + +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., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* Apollos use vector 0xb for the breakpoint vector */ + +#define BPT_VECTOR 0xb + +/* Assume we have a coprocessor. If we don't, it still shouldn't hurt */ + +#define HAVE_68881 1 + +#include "m68k/tm-m68k.h" + +#define FRAME_CHAIN_VALID(chain, thisframe) (chain != 0) + +/* These are the jmp_buf registers I could guess. There are 13 registers + * in the buffer. There are 8 data registers, 6 general address registers, + * the Frame Pointer, the Stack Pointer, the PC and the SR in the chip. I would + * guess that 12 is the SR, but we don't need that anyway. 0 and 1 have + * me stumped. 4 appears to be a5 for some unknown reason. If you care + * about this, disassemble setjmp to find out. But don't do it with gdb :) + */ + +#undef JB_SP +#undef JB_FP +#undef JB_PC +#undef JB_D0 +#undef JB_D1 +#undef JB_D2 +#undef JB_D3 +#undef JB_D4 +#undef JB_D5 + +#define JB_SP 2 +#define JB_FP 3 +#define JB_PC 5 +#define JB_D0 6 +#define JB_D1 7 +#define JB_D2 8 +#define JB_D3 9 +#define JB_D4 10 +#define JB_D5 11 + +/* How to decide if we're in a shared library function. (Probably a wrong + definintion inherited from the VxWorks config file). */ +#define IN_SOLIB_TRAMPOLINE(pc, name) (name && strcmp(name, "<end_of_program>") == 0) |