Update MD_FALLBACK_FRAME_STATE_FOR for VMS
Richard Kenner
kenner@vlsi1.ultra.nyu.edu
Wed Feb 13 07:51:00 GMT 2002
2002-02-13 Douglas B Rupp <rupp@gnat.com>
* config/alpha/vms.h (MD_FALLBACK_FRAME_STATE_FOR): Handle
register frame procedures. Optimize retrieving context.
*** config/alpha/vms.h.1 Thu Jan 10 18:55:16 2002
--- config/alpha/vms.h Sat Jan 26 13:31:00 2002
*************** do { \
*** 385,406 ****
#define LINK_EH_SPEC "vms-dwarf2eh.o%s "
#ifdef IN_LIBGCC2
- #include <libicb.h>
#include <pdscdef.h>
#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \
do { \
! unsigned long handle; \
! PDSCDEF *pv; \
! INVO_CONTEXT_BLK invo; \
\
! memset (&invo, 0, sizeof (INVO_CONTEXT_BLK)); \
! \
! invo.libicb$q_ireg [29] = *((long long *) (CONTEXT)->reg [29]); \
! invo.libicb$q_ireg [30] = (long long) (CONTEXT)->cfa; \
! handle = LIB$GET_INVO_HANDLE (&invo); \
! LIB$GET_INVO_CONTEXT (handle, &invo); \
! pv = (PDSCDEF *) invo.libicb$ph_procedure_descriptor; \
\
if (pv && ((pv->pdsc$w_flags & 0xf) == PDSC$K_KIND_FP_STACK)) \
{ \
--- 385,398 ----
#define LINK_EH_SPEC "vms-dwarf2eh.o%s "
#ifdef IN_LIBGCC2
#include <pdscdef.h>
#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \
do { \
! PDSCDEF *pv = *((PDSCDEF **) (CONTEXT)->reg [29]); \
\
! if (pv && ((long) pv & 0x7) == 0) /* low bits 0 means address */ \
! pv = *(PDSCDEF **) pv; \
\
if (pv && ((pv->pdsc$w_flags & 0xf) == PDSC$K_KIND_FP_STACK)) \
{ \
*************** do { \
*** 424,429 ****
--- 416,434 ----
(FS)->regs.reg[i].how = REG_SAVED_OFFSET; \
} \
\
+ goto SUCCESS; \
+ } \
+ else if (pv && ((pv->pdsc$w_flags & 0xf) == PDSC$K_KIND_FP_REGISTER)) \
+ { \
+ (FS)->cfa_offset = pv->pdsc$l_size; \
+ (FS)->cfa_reg = pv->pdsc$w_flags & PDSC$M_BASE_REG_IS_FP ? 29 : 30; \
+ (FS)->retaddr_column = 26; \
+ (FS)->cfa_how = CFA_REG_OFFSET; \
+ (FS)->regs.reg[26].loc.reg = pv->pdsc$b_save_ra; \
+ (FS)->regs.reg[26].how = REG_SAVED_REG; \
+ (FS)->regs.reg[29].loc.reg = pv->pdsc$b_save_fp; \
+ (FS)->regs.reg[29].how = REG_SAVED_REG; \
+ \
goto SUCCESS; \
} \
} while (0)
More information about the Gcc-patches
mailing list