From 96ff369d81abbd31d404d3d5e0ffd7a9d33db87b Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Sat, 13 Aug 1994 16:17:45 +0000 Subject: [PATCH] Harris CX/UX support, from Bob Rusk (rrusk@mail.csd.harris.com). * cxux-nat.c: Remove dangling #else block. ((m88k_harris_core_register_addr): New function. --- gdb/ChangeLog | 4 ++++ gdb/cxux-nat.c | 31 ++++++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index adedc3cf26..c7282d30fa 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ Sat Aug 13 08:22:50 1994 Fred Fish (fnf@cygnus.com) + Harris CX/UX support, from Bob Rusk (rrusk@mail.csd.harris.com). + * cxux-nat.c: Remove dangling #else block. + ((m88k_harris_core_register_addr): New function. + * environ.c (init_environ): If no environment, do nothing. Fri Aug 12 15:52:37 1994 Stu Grossman (grossman@cygnus.com) diff --git a/gdb/cxux-nat.c b/gdb/cxux-nat.c index 52a4eb352d..6216ede6d7 100644 --- a/gdb/cxux-nat.c +++ b/gdb/cxux-nat.c @@ -54,11 +54,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define PSR_OFFSET (PT_PSR * sizeof(int)) #define FPSR_OFFSET (PT_FPSR * sizeof(int)) #define FPCR_OFFSET (PT_FPCR * sizeof(int)) -#else /* _CX_UX */ -/* define offsets to the pc instruction offsets in ptrace_user struct */ -#define SXIP_OFFSET ((char *)&u.pt_sigframe.dg_sigframe.sc_sxip - (char *)&u) -#define SNIP_OFFSET ((char *)&u.pt_sigframe.dg_sigframe.sc_snip - (char *)&u) -#define SFIP_OFFSET ((char *)&u.pt_sigframe.dg_sigframe.sc_sfip - (char *)&u) #define XREGADDR(r) (((char *)&u.pt_x0-(char *)&u) + \ ((r)-X0_REGNUM)*sizeof(X_REGISTER_RAW_TYPE)) @@ -498,3 +493,29 @@ supply_fpregset (fpregsetp) } #endif /* _ES_MP */ + +#ifdef _CX_UX + +#include + +unsigned int m88k_harris_core_register_addr(int regno, int reg_ptr) +{ + unsigned int word_offset; + + switch (regno) { + case PSR_REGNUM : word_offset = R_PSR; break; + case FPSR_REGNUM : word_offset = R_FPSR; break; + case FPCR_REGNUM : word_offset = R_FPCR; break; + case SXIP_REGNUM : word_offset = R_XIP; break; + case SNIP_REGNUM : word_offset = R_NIP; break; + case SFIP_REGNUM : word_offset = R_FIP; break; + default : + if (regno <= FP_REGNUM) + word_offset = regno; + else + word_offset = ((regno - X0_REGNUM) * 4) + R_X0; + } + return (word_offset * 4); +} + +#endif /* _CX_UX */