* ns32k-tdep.c (ns32k_register_byte_32082,
ns32k_register_byte_32382, ns32k_register_raw_size, ns32k_register_virtual_size, ns32k_register_virtual_type): New functions. * config/ns32k/tm-nbsd.h (REGISTER_BYTE): Define as ns32k_register_byte_32382. * config/ns32k/tm-umax.h: Update copyright years. (REGISTER_BYTE): Define as ns32k_register_byte_32082. (REGISTER_RAW_SIZE): Define as ns32k_register_raw_size. (REGISTER_VIRTUAL_SIZE): Define as ns32k_register_virtual_size. (REGISTER_VIRTUAL_TYPE): Define as ns32k_register_virtual_type. (ns32k_get_enter_addr): Fix prototype.
This commit is contained in:
parent
d43efbe328
commit
f2c762e031
4 changed files with 81 additions and 39 deletions
|
@ -1,3 +1,18 @@
|
||||||
|
2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
|
||||||
|
|
||||||
|
* ns32k-tdep.c (ns32k_register_byte_32082,
|
||||||
|
ns32k_register_byte_32382, ns32k_register_raw_size,
|
||||||
|
ns32k_register_virtual_size, ns32k_register_virtual_type): New
|
||||||
|
functions.
|
||||||
|
* config/ns32k/tm-nbsd.h (REGISTER_BYTE): Define as
|
||||||
|
ns32k_register_byte_32382.
|
||||||
|
* config/ns32k/tm-umax.h: Update copyright years.
|
||||||
|
(REGISTER_BYTE): Define as ns32k_register_byte_32082.
|
||||||
|
(REGISTER_RAW_SIZE): Define as ns32k_register_raw_size.
|
||||||
|
(REGISTER_VIRTUAL_SIZE): Define as ns32k_register_virtual_size.
|
||||||
|
(REGISTER_VIRTUAL_TYPE): Define as ns32k_register_virtual_type.
|
||||||
|
(ns32k_get_enter_addr): Fix prototype.
|
||||||
|
|
||||||
2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
|
2002-05-26 Jason Thorpe <thorpej@wasabisystems.com>
|
||||||
|
|
||||||
* ns32k-tdep.c: Update copyright years.
|
* ns32k-tdep.c: Update copyright years.
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
/* tm-umax.h assumes a 32082 fpu. We have a 32382 fpu. */
|
/* tm-umax.h assumes a 32082 fpu. We have a 32382 fpu. */
|
||||||
|
|
||||||
#undef REGISTER_NAME
|
#undef REGISTER_NAME
|
||||||
#define REGISTER_NAME(REGNUM) ns32k_register_name_32382(REGNUM)
|
#define REGISTER_NAME(REGNUM) ns32k_register_name_32382((REGNUM))
|
||||||
|
|
||||||
#undef NUM_REGS
|
#undef NUM_REGS
|
||||||
#define NUM_REGS 29
|
#define NUM_REGS 29
|
||||||
|
@ -61,18 +61,7 @@
|
||||||
((NUM_REGS - 4) * REGISTER_RAW_SIZE(R0_REGNUM) \
|
((NUM_REGS - 4) * REGISTER_RAW_SIZE(R0_REGNUM) \
|
||||||
+ 8 * REGISTER_RAW_SIZE(LP0_REGNUM))
|
+ 8 * REGISTER_RAW_SIZE(LP0_REGNUM))
|
||||||
|
|
||||||
/* Index within `registers' of the first byte of the space for
|
|
||||||
register N. */
|
|
||||||
|
|
||||||
/* This is a bit yuck. The even numbered double precision floating
|
|
||||||
point long registers occupy the same space as the even:odd numbered
|
|
||||||
single precision floating point registers, but the extra 32381 fpu
|
|
||||||
registers are at the end. Doing it this way is compatable for both
|
|
||||||
32081 and 32381 equiped machines. */
|
|
||||||
|
|
||||||
#undef REGISTER_BYTE
|
#undef REGISTER_BYTE
|
||||||
#define REGISTER_BYTE(N) (((N) < LP0_REGNUM? (N)\
|
#define REGISTER_BYTE(N) ns32k_register_byte_32382 ((N))
|
||||||
: ((N) - LP0_REGNUM) & 1? (N) - 1 \
|
|
||||||
: ((N) - LP0_REGNUM + FP0_REGNUM)) * 4)
|
|
||||||
|
|
||||||
#endif /* TM_NBSD_H */
|
#endif /* TM_NBSD_H */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Definitions to make GDB run on an encore under umax 4.2
|
/* Definitions to make GDB run on an encore under umax 4.2
|
||||||
Copyright 1987, 1989, 1991, 1993, 1994, 1998, 1999, 2000, 2001
|
Copyright 1987, 1989, 1991, 1993, 1994, 1998, 1999, 2000, 2001, 2002
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -106,21 +106,15 @@ extern char *ns32k_register_name_32382 (int);
|
||||||
|
|
||||||
/* Index within `registers' of the first byte of the space for
|
/* Index within `registers' of the first byte of the space for
|
||||||
register N. */
|
register N. */
|
||||||
|
extern int ns32k_register_byte_32082 (int);
|
||||||
|
extern int ns32k_register_byte_32382 (int);
|
||||||
|
#define REGISTER_BYTE(N) ns32k_register_byte_32082 ((N))
|
||||||
|
|
||||||
#define REGISTER_BYTE(N) ((N) >= LP0_REGNUM ? \
|
extern int ns32k_register_raw_size (int);
|
||||||
LP0_REGNUM * 4 + ((N) - LP0_REGNUM) * 8 : (N) * 4)
|
#define REGISTER_RAW_SIZE(N) ns32k_register_raw_size ((N))
|
||||||
|
|
||||||
/* Number of bytes of storage in the actual machine representation
|
extern int ns32k_register_virtual_size (int);
|
||||||
for register N. On the 32000, all regs are 4 bytes
|
#define REGISTER_VIRTUAL_SIZE(N) ns32k_register_virtual_size ((N))
|
||||||
except for the doubled floating registers. */
|
|
||||||
|
|
||||||
#define REGISTER_RAW_SIZE(N) ((N) >= LP0_REGNUM ? 8 : 4)
|
|
||||||
|
|
||||||
/* Number of bytes of storage in the program's representation
|
|
||||||
for register N. On the 32000, all regs are 4 bytes
|
|
||||||
except for the doubled floating registers. */
|
|
||||||
|
|
||||||
#define REGISTER_VIRTUAL_SIZE(N) ((N) >= LP0_REGNUM ? 8 : 4)
|
|
||||||
|
|
||||||
/* Largest value REGISTER_RAW_SIZE can have. */
|
/* Largest value REGISTER_RAW_SIZE can have. */
|
||||||
|
|
||||||
|
@ -130,17 +124,8 @@ extern char *ns32k_register_name_32382 (int);
|
||||||
|
|
||||||
#define MAX_REGISTER_VIRTUAL_SIZE 8
|
#define MAX_REGISTER_VIRTUAL_SIZE 8
|
||||||
|
|
||||||
/* Return the GDB type object for the "standard" data type
|
struct type *ns32k_register_virtual_type (int);
|
||||||
of data in register N. */
|
#define REGISTER_VIRTUAL_TYPE(N) ns32k_register_virtual_type ((N))
|
||||||
|
|
||||||
#define REGISTER_VIRTUAL_TYPE(N) \
|
|
||||||
(((N) < FP0_REGNUM) ? \
|
|
||||||
builtin_type_int : \
|
|
||||||
((N) < FP0_REGNUM + 8) ? \
|
|
||||||
builtin_type_float : \
|
|
||||||
((N) < LP0_REGNUM) ? \
|
|
||||||
builtin_type_int : \
|
|
||||||
builtin_type_double)
|
|
||||||
|
|
||||||
/* Store the address of the place in which to copy the structure the
|
/* Store the address of the place in which to copy the structure the
|
||||||
subroutine will return. This is called from call_function.
|
subroutine will return. This is called from call_function.
|
||||||
|
@ -199,7 +184,7 @@ extern char *ns32k_register_name_32382 (int);
|
||||||
Returns positive address > 1 if pc is between enter/exit,
|
Returns positive address > 1 if pc is between enter/exit,
|
||||||
1 if pc before enter or after exit, 0 otherwise. */
|
1 if pc before enter or after exit, 0 otherwise. */
|
||||||
|
|
||||||
extern CORE_ADDR ns32k_get_enter_addr ();
|
extern CORE_ADDR ns32k_get_enter_addr (CORE_ADDR);
|
||||||
|
|
||||||
/* Return number of args passed to a frame.
|
/* Return number of args passed to a frame.
|
||||||
Can return -1, meaning no way to tell. */
|
Can return -1, meaning no way to tell. */
|
||||||
|
|
|
@ -64,6 +64,59 @@ ns32k_register_name_32382 (int regno)
|
||||||
return (register_names[regno]);
|
return (register_names[regno]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ns32k_register_byte_32082 (int regno)
|
||||||
|
{
|
||||||
|
if (regno >= LP0_REGNUM)
|
||||||
|
return (LP0_REGNUM * 4) + ((regno - LP0_REGNUM) * 8);
|
||||||
|
|
||||||
|
return (regno * 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ns32k_register_byte_32382 (int regno)
|
||||||
|
{
|
||||||
|
/* This is a bit yuk. The even numbered double precision floating
|
||||||
|
point long registers occupy the same space as the even:odd numbered
|
||||||
|
single precision floating point registers, but the extra 32381 FPU
|
||||||
|
registers are at the end. Doing it this way is compatible for both
|
||||||
|
32081 and 32381 equipped machines. */
|
||||||
|
|
||||||
|
return ((regno < LP0_REGNUM ? regno
|
||||||
|
: (regno - LP0_REGNUM) & 1 ? regno - 1
|
||||||
|
: (regno - LP0_REGNUM + FP0_REGNUM)) * 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ns32k_register_raw_size (int regno)
|
||||||
|
{
|
||||||
|
/* All registers are 4 bytes, except for the doubled floating
|
||||||
|
registers. */
|
||||||
|
|
||||||
|
return ((regno >= LP0_REGNUM) ? 8 : 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ns32k_register_virtual_size (int regno)
|
||||||
|
{
|
||||||
|
return ((regno >= LP0_REGNUM) ? 8 : 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct type *
|
||||||
|
ns32k_register_virtual_type (int regno)
|
||||||
|
{
|
||||||
|
if (regno < FP0_REGNUM)
|
||||||
|
return (builtin_type_int);
|
||||||
|
|
||||||
|
if (regno < FP0_REGNUM + 8)
|
||||||
|
return (builtin_type_float);
|
||||||
|
|
||||||
|
if (regno < LP0_REGNUM)
|
||||||
|
return (builtin_type_int);
|
||||||
|
|
||||||
|
return (builtin_type_double);
|
||||||
|
}
|
||||||
|
|
||||||
/* Advance PC across any function entry prologue instructions
|
/* Advance PC across any function entry prologue instructions
|
||||||
to reach some "real" code. */
|
to reach some "real" code. */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue