osprey-gcc-4.2.0/gcc/config/ia64/unwind-ia64.c File Reference

#include "tconfig.h"
#include "tsystem.h"
#include "coretypes.h"
#include "tm.h"
#include "unwind.h"
#include "unwind-ia64.h"
#include "unwind-compat.h"
#include "ia64intrin.h"
#include "unwind.inc"

Include dependency graph for unwind-ia64.c:

Go to the source code of this file.

Data Types

type  unw_reg_info
type  unw_reg_state
type  unw_labeled_state
type  unw_state_record
type  unw_stack
type  _Unwind_Context
type  _Unwind_Context::unw_ireg
type  _Unwind_Context::unw_ireg::unw_ireg_nat

Defines

#define UNW_VER(x)   ((x) >> 48)
#define UNW_FLAG_MASK   0x0000ffff00000000
#define UNW_FLAG_OSMASK   0x0000f00000000000
#define UNW_FLAG_EHANDLER(x)   ((x) & 0x0000000100000000L)
#define UNW_FLAG_UHANDLER(x)   ((x) & 0x0000000200000000L)
#define UNW_LENGTH(x)   ((x) & 0x00000000ffffffffL)
#define UNW_WHEN_NEVER   0x7fffffff
#define MIN(X, Y)   ((X) < (Y) ? (X) : (Y))
#define SIZE(X)   (sizeof(X) / sizeof(*(X)))
#define MASK_FOR(X)   ((2U << (SIZE (X) - 1)) - 1)
#define PTR_IN(X, P)   ((P) >= (X) && (P) < (X) + SIZE (X))
#define UNW_DEC_BAD_CODE(code)   abort ();
#define UNW_DEC_PROLOGUE_GR(fmt, r, m, gr, arg)   desc_prologue(0,r,m,gr,arg)
#define UNW_DEC_PROLOGUE(fmt, b, r, arg)   desc_prologue(b,r,0,32,arg)
#define UNW_DEC_ABI(fmt, a, c, arg)   desc_abi(a,c,arg)
#define UNW_DEC_BR_GR(fmt, b, g, arg)   desc_br_gr(b,g,arg)
#define UNW_DEC_BR_MEM(fmt, b, arg)   desc_br_mem(b,arg)
#define UNW_DEC_FRGR_MEM(fmt, g, f, arg)   desc_frgr_mem(g,f,arg)
#define UNW_DEC_FR_MEM(fmt, f, arg)   desc_fr_mem(f,arg)
#define UNW_DEC_GR_GR(fmt, m, g, arg)   desc_gr_gr(m,g,arg)
#define UNW_DEC_GR_MEM(fmt, m, arg)   desc_gr_mem(m,arg)
#define UNW_DEC_MEM_STACK_F(fmt, t, s, arg)   desc_mem_stack_f(t,s,arg)
#define UNW_DEC_MEM_STACK_V(fmt, t, arg)   desc_mem_stack_v(t,arg)
#define UNW_DEC_REG_GR(fmt, r, d, arg)   desc_reg_gr(r,d,arg)
#define UNW_DEC_REG_PSPREL(fmt, r, o, arg)   desc_reg_psprel(r,o,arg)
#define UNW_DEC_REG_SPREL(fmt, r, o, arg)   desc_reg_sprel(r,o,arg)
#define UNW_DEC_REG_WHEN(fmt, r, t, arg)   desc_reg_when(r,t,arg)
#define UNW_DEC_PRIUNAT_WHEN_GR(fmt, t, arg)   desc_reg_when(UNW_REG_PRI_UNAT_GR,t,arg)
#define UNW_DEC_PRIUNAT_WHEN_MEM(fmt, t, arg)   desc_reg_when(UNW_REG_PRI_UNAT_MEM,t,arg)
#define UNW_DEC_PRIUNAT_GR(fmt, r, arg)   desc_reg_gr(UNW_REG_PRI_UNAT_GR,r,arg)
#define UNW_DEC_PRIUNAT_PSPREL(fmt, o, arg)   desc_reg_psprel(UNW_REG_PRI_UNAT_MEM,o,arg)
#define UNW_DEC_PRIUNAT_SPREL(fmt, o, arg)   desc_reg_sprel(UNW_REG_PRI_UNAT_MEM,o,arg)
#define UNW_DEC_RP_BR(fmt, d, arg)   desc_rp_br(d,arg)
#define UNW_DEC_SPILL_BASE(fmt, o, arg)   desc_spill_base(o,arg)
#define UNW_DEC_SPILL_MASK(fmt, m, arg)   (m = desc_spill_mask(m,arg))
#define UNW_DEC_EPILOGUE(fmt, t, c, arg)   desc_epilogue(t,c,arg)
#define UNW_DEC_COPY_STATE(fmt, l, arg)   desc_copy_state(l,arg)
#define UNW_DEC_LABEL_STATE(fmt, l, arg)   desc_label_state(l,arg)
#define UNW_DEC_SPILL_REG_P(f, p, t, a, x, y, arg)   desc_spill_reg_p(p,t,a,x,y,arg)
#define UNW_DEC_SPILL_REG(f, t, a, x, y, arg)   desc_spill_reg_p(0,t,a,x,y,arg)
#define UNW_DEC_SPILL_PSPREL_P(f, p, t, a, o, arg)   desc_spill_psprel_p(p,t,a,o,arg)
#define UNW_DEC_SPILL_PSPREL(f, t, a, o, arg)   desc_spill_psprel_p(0,t,a,o,arg)
#define UNW_DEC_SPILL_SPREL_P(f, p, t, a, o, arg)   desc_spill_sprel_p(p,t,a,o,arg)
#define UNW_DEC_SPILL_SPREL(f, t, a, o, arg)   desc_spill_sprel_p(0,t,a,o,arg)
#define UNW_DEC_RESTORE_P(f, p, t, a, arg)   desc_restore_p(p,t,a,arg)
#define UNW_DEC_RESTORE(f, t, a, arg)   desc_restore_p(0,t,a,arg)
#define uw_init_context(CONTEXT)

Typedefs

typedef struct unw_state_record _Unwind_FrameState
typedef unsigned long unw_word
typedef unsigned char *(* unw_decoder )(unsigned char *, unsigned char, void *)

Enumerations

enum  unw_application_register {
  UNW_AR_BSP, UNW_AR_BSPSTORE, UNW_AR_PFS, UNW_AR_RNAT,
  UNW_AR_UNAT, UNW_AR_LC, UNW_AR_EC, UNW_AR_FPSR,
  UNW_AR_RSC, UNW_AR_CCV, UNW_AR_BSP, UNW_AR_BSPSTORE,
  UNW_AR_PFS, UNW_AR_RNAT, UNW_AR_UNAT, UNW_AR_LC,
  UNW_AR_EC, UNW_AR_FPSR, UNW_AR_RSC, UNW_AR_CCV,
  UNW_AR_BSP, UNW_AR_BSPSTORE, UNW_AR_PFS, UNW_AR_RNAT,
  UNW_AR_UNAT, UNW_AR_LC, UNW_AR_EC, UNW_AR_FPSR,
  UNW_AR_RSC, UNW_AR_CCV, UNW_AR_BSP, UNW_AR_BSPSTORE,
  UNW_AR_PFS, UNW_AR_RNAT, UNW_AR_UNAT, UNW_AR_LC,
  UNW_AR_EC, UNW_AR_FPSR, UNW_AR_RSC, UNW_AR_CCV
}
enum  unw_register_index {
  UNW_REG_PRI_UNAT_GR, UNW_REG_PRI_UNAT_MEM, UNW_REG_PSP, UNW_REG_BSP,
  UNW_REG_BSPSTORE, UNW_REG_PFS, UNW_REG_RNAT, UNW_REG_RP,
  UNW_REG_UNAT, UNW_REG_PR, UNW_REG_LC, UNW_REG_FPSR,
  UNW_REG_R2, UNW_REG_R4 = UNW_REG_R2 + 2, UNW_REG_R7 = UNW_REG_R2 + 5, UNW_REG_R31 = UNW_REG_R2 + 29,
  UNW_REG_F2, UNW_REG_F5 = UNW_REG_F2 + 3, UNW_REG_F16 = UNW_REG_F2 + 14, UNW_REG_F31 = UNW_REG_F2 + 29,
  UNW_REG_B0, UNW_REG_B1, UNW_REG_B5 = UNW_REG_B1 + 4, UNW_NUM_REGS,
  UNW_REG_PRI_UNAT_GR, UNW_REG_PRI_UNAT_MEM, UNW_REG_PSP, UNW_REG_BSP,
  UNW_REG_BSPSTORE, UNW_REG_PFS, UNW_REG_RNAT, UNW_REG_RP,
  UNW_REG_UNAT, UNW_REG_PR, UNW_REG_LC, UNW_REG_FPSR,
  UNW_REG_R2, UNW_REG_R4 = UNW_REG_R2 + 2, UNW_REG_R7 = UNW_REG_R2 + 5, UNW_REG_R31 = UNW_REG_R2 + 29,
  UNW_REG_F2, UNW_REG_F5 = UNW_REG_F2 + 3, UNW_REG_F16 = UNW_REG_F2 + 14, UNW_REG_F31 = UNW_REG_F2 + 29,
  UNW_REG_B0, UNW_REG_B1, UNW_REG_B5 = UNW_REG_B1 + 4, UNW_NUM_REGS,
  UNW_REG_PRI_UNAT_GR, UNW_REG_PRI_UNAT_MEM, UNW_REG_PSP, UNW_REG_BSP,
  UNW_REG_BSPSTORE, UNW_REG_PFS, UNW_REG_RNAT, UNW_REG_RP,
  UNW_REG_UNAT, UNW_REG_PR, UNW_REG_LC, UNW_REG_FPSR,
  UNW_REG_R2, UNW_REG_R4 = UNW_REG_R2 + 2, UNW_REG_R7 = UNW_REG_R2 + 5, UNW_REG_R31 = UNW_REG_R2 + 29,
  UNW_REG_F2, UNW_REG_F5 = UNW_REG_F2 + 3, UNW_REG_F16 = UNW_REG_F2 + 14, UNW_REG_F31 = UNW_REG_F2 + 29,
  UNW_REG_B0, UNW_REG_B1, UNW_REG_B5 = UNW_REG_B1 + 4, UNW_NUM_REGS,
  UNW_REG_PRI_UNAT_GR, UNW_REG_PRI_UNAT_MEM, UNW_REG_PSP, UNW_REG_BSP,
  UNW_REG_BSPSTORE, UNW_REG_PFS, UNW_REG_RNAT, UNW_REG_RP,
  UNW_REG_UNAT, UNW_REG_PR, UNW_REG_LC, UNW_REG_FPSR,
  UNW_REG_R2, UNW_REG_R4 = UNW_REG_R2 + 2, UNW_REG_R7 = UNW_REG_R2 + 5, UNW_REG_R31 = UNW_REG_R2 + 29,
  UNW_REG_F2, UNW_REG_F5 = UNW_REG_F2 + 3, UNW_REG_F16 = UNW_REG_F2 + 14, UNW_REG_F31 = UNW_REG_F2 + 29,
  UNW_REG_B0, UNW_REG_B1, UNW_REG_B5 = UNW_REG_B1 + 4, UNW_NUM_REGS
}
enum  unw_where {
  UNW_WHERE_NONE, UNW_WHERE_GR, UNW_WHERE_FR, UNW_WHERE_BR,
  UNW_WHERE_SPREL, UNW_WHERE_PSPREL, UNW_WHERE_SPILL_HOME, UNW_WHERE_GR_SAVE,
  UNW_WHERE_NONE, UNW_WHERE_GR, UNW_WHERE_FR, UNW_WHERE_BR,
  UNW_WHERE_SPREL, UNW_WHERE_PSPREL, UNW_WHERE_SPILL_HOME, UNW_WHERE_GR_SAVE,
  UNW_WHERE_NONE, UNW_WHERE_GR, UNW_WHERE_FR, UNW_WHERE_BR,
  UNW_WHERE_SPREL, UNW_WHERE_PSPREL, UNW_WHERE_SPILL_HOME, UNW_WHERE_GR_SAVE,
  UNW_WHERE_NONE, UNW_WHERE_GR, UNW_WHERE_FR, UNW_WHERE_BR,
  UNW_WHERE_SPREL, UNW_WHERE_PSPREL, UNW_WHERE_SPILL_HOME, UNW_WHERE_GR_SAVE
}
enum  unw_nat_type {
  UNW_NAT_NONE, UNW_NAT_VAL, UNW_NAT_MEMSTK, UNW_NAT_REGSTK,
  UNW_NAT_NONE, UNW_NAT_VAL, UNW_NAT_MEMSTK, UNW_NAT_REGSTK,
  UNW_NAT_NONE, UNW_NAT_VAL, UNW_NAT_MEMSTK, UNW_NAT_REGSTK,
  UNW_NAT_NONE, UNW_NAT_VAL, UNW_NAT_MEMSTK, UNW_NAT_REGSTK
}

Functions/Subroutines

static int atomic_alloc (unsigned int *mask)
static void atomic_free (unsigned int *mask, int bit)
static struct unw_reg_statealloc_reg_state (void)
static void free_reg_state (struct unw_reg_state *rs)
static struct unw_labeled_statealloc_label_state (void)
static void free_label_state (struct unw_labeled_state *ls)
static void push (struct unw_state_record *sr)
static void pop (struct unw_state_record *sr)
static struct unw_reg_statedup_state_stack (struct unw_reg_state *rs)
static void free_state_stack (struct unw_reg_state *rs)
static void free_label_states (struct unw_labeled_state *ls)
static enum unw_register_index __attribute__ ((const))
static void set_reg (struct unw_reg_info *reg, enum unw_where where, int when, unsigned long val)
static void alloc_spill_area (unsigned long *offp, unsigned long regsize, struct unw_reg_info *lo, struct unw_reg_info *hi)
static void spill_next_when (struct unw_reg_info **regp, struct unw_reg_info *lim, unw_word t)
static void finish_prologue (struct unw_state_record *sr)
static void desc_prologue (int body, unw_word rlen, unsigned char mask, unsigned char grsave, struct unw_state_record *sr)
static void desc_abi (unsigned char abi, unsigned char context, struct unw_state_record *sr)
static void desc_br_gr (unsigned char brmask, unsigned char gr, struct unw_state_record *sr)
static void desc_br_mem (unsigned char brmask, struct unw_state_record *sr)
static void desc_frgr_mem (unsigned char grmask, unw_word frmask, struct unw_state_record *sr)
static void desc_fr_mem (unsigned char frmask, struct unw_state_record *sr)
static void desc_gr_gr (unsigned char grmask, unsigned char gr, struct unw_state_record *sr)
static void desc_gr_mem (unsigned char grmask, struct unw_state_record *sr)
static void desc_mem_stack_f (unw_word t, unw_word size, struct unw_state_record *sr)
static void desc_mem_stack_v (unw_word t, struct unw_state_record *sr)
static void desc_reg_gr (unsigned char reg, unsigned char dst, struct unw_state_record *sr)
static void desc_reg_psprel (unsigned char reg, unw_word pspoff, struct unw_state_record *sr)
static void desc_reg_sprel (unsigned char reg, unw_word spoff, struct unw_state_record *sr)
static void desc_rp_br (unsigned char dst, struct unw_state_record *sr)
static void desc_reg_when (unsigned char regnum, unw_word t, struct unw_state_record *sr)
static void desc_spill_base (unw_word pspoff, struct unw_state_record *sr)
static unsigned char * desc_spill_mask (unsigned char *imaskp, struct unw_state_record *sr)
static void desc_epilogue (unw_word t, unw_word ecount, struct unw_state_record *sr)
static void desc_copy_state (unw_word label, struct unw_state_record *sr)
static void desc_label_state (unw_word label, struct unw_state_record *sr)
static int desc_is_active (unsigned char qp, unw_word t, struct unw_state_record *sr)
static void desc_restore_p (unsigned char qp, unw_word t, unsigned char abreg, struct unw_state_record *sr)
static void desc_spill_reg_p (unsigned char qp, unw_word t, unsigned char abreg, unsigned char x, unsigned char ytreg, struct unw_state_record *sr)
static void desc_spill_psprel_p (unsigned char qp, unw_word t, unsigned char abreg, unw_word pspoff, struct unw_state_record *sr)
static void desc_spill_sprel_p (unsigned char qp, unw_word t, unsigned char abreg, unw_word spoff, struct unw_state_record *sr)
static unw_word unw_decode_uleb128 (unsigned char **dpp)
static unsigned char * unw_decode_x1 (unsigned char *dp, unsigned char code __attribute__((unused)), void *arg)
static unsigned char * unw_decode_x2 (unsigned char *dp, unsigned char code __attribute__((unused)), void *arg)
static unsigned char * unw_decode_x3 (unsigned char *dp, unsigned char code __attribute__((unused)), void *arg)
static unsigned char * unw_decode_x4 (unsigned char *dp, unsigned char code __attribute__((unused)), void *arg)
static unsigned char * unw_decode_r1 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_r2 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_r3 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_p1 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_p2_p5 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_p6 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_p7_p10 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_b1 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_b2 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode_b3_x4 (unsigned char *dp, unsigned char code, void *arg)
static unsigned char * unw_decode (unsigned char *dp, int inside_body, void *arg)
static unsigned long ia64_rse_slot_num (unsigned long *addr)
static unsigned long ia64_rse_is_rnat_slot (unsigned long *addr)
static unsigned longia64_rse_rnat_addr (unsigned long *slot_addr)
static unsigned long ia64_rse_num_regs (unsigned long *bspstore, unsigned long *bsp)
static unsigned longia64_rse_skip_regs (unsigned long *addr, long num_regs)
static void ia64_copy_rbs (struct _Unwind_Context *info, unsigned long dst, unsigned long src, long len, unsigned long dst_rnat)
static void unw_access_gr (struct _Unwind_Context *info, int regnum, unsigned long *val, char *nat, int write)
_Unwind_Word _Unwind_GetGR (struct _Unwind_Context *context, int index)
void _Unwind_SetGR (struct _Unwind_Context *context, int index, _Unwind_Word val)
_Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *context)
_Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
void _Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
void_Unwind_GetLanguageSpecificData (struct _Unwind_Context *context)
_Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *context)
void_Unwind_FindEnclosingFunction (void *pc)
_Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *context)
_Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *context)
static _Unwind_Reason_Code uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
static void uw_update_reg_address (struct _Unwind_Context *context, _Unwind_FrameState *fs, enum unw_register_index regno)
static void uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
static void uw_advance_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
static void uw_init_context_1 (struct _Unwind_Context *context, void *bsp)
static void __attribute__ ((noreturn))
static _Unwind_Ptr uw_identify_context (struct _Unwind_Context *context)

Variables

static unsigned char const save_order []
static struct unw_reg_state emergency_reg_state [32]
static unsigned int emergency_reg_state_free = MASK_FOR (emergency_reg_state)
static struct unw_labeled_state emergency_labeled_state [8]
static unsigned int emergency_labeled_state_free = MASK_FOR (emergency_labeled_state)
static const unw_decoder unw_decode_table [2][8]


Define Documentation

#define MASK_FOR ( X   )     ((2U << (SIZE (X) - 1)) - 1)

Definition at line 284 of file unwind-ia64.c.

#define MIN ( X,
 )     ((X) < (Y) ? (X) : (Y))

Definition at line 248 of file unwind-ia64.c.

#define PTR_IN ( X,
P   )     ((P) >= (X) && (P) < (X) + SIZE (X))

Definition at line 285 of file unwind-ia64.c.

#define SIZE ( X   )     (sizeof(X) / sizeof(*(X)))

Definition at line 283 of file unwind-ia64.c.

#define UNW_DEC_ABI ( fmt,
a,
c,
arg   )     desc_abi(a,c,arg)

Definition at line 947 of file unwind-ia64.c.

#define UNW_DEC_BAD_CODE ( code   )     abort ();

Definition at line 940 of file unwind-ia64.c.

#define UNW_DEC_BR_GR ( fmt,
b,
g,
arg   )     desc_br_gr(b,g,arg)

Definition at line 948 of file unwind-ia64.c.

#define UNW_DEC_BR_MEM ( fmt,
b,
arg   )     desc_br_mem(b,arg)

Definition at line 949 of file unwind-ia64.c.

#define UNW_DEC_COPY_STATE ( fmt,
l,
arg   )     desc_copy_state(l,arg)

Definition at line 971 of file unwind-ia64.c.

#define UNW_DEC_EPILOGUE ( fmt,
t,
c,
arg   )     desc_epilogue(t,c,arg)

Definition at line 970 of file unwind-ia64.c.

#define UNW_DEC_FR_MEM ( fmt,
f,
arg   )     desc_fr_mem(f,arg)

Definition at line 951 of file unwind-ia64.c.

#define UNW_DEC_FRGR_MEM ( fmt,
g,
f,
arg   )     desc_frgr_mem(g,f,arg)

Definition at line 950 of file unwind-ia64.c.

#define UNW_DEC_GR_GR ( fmt,
m,
g,
arg   )     desc_gr_gr(m,g,arg)

Definition at line 952 of file unwind-ia64.c.

#define UNW_DEC_GR_MEM ( fmt,
m,
arg   )     desc_gr_mem(m,arg)

Definition at line 953 of file unwind-ia64.c.

#define UNW_DEC_LABEL_STATE ( fmt,
l,
arg   )     desc_label_state(l,arg)

Definition at line 972 of file unwind-ia64.c.

#define UNW_DEC_MEM_STACK_F ( fmt,
t,
s,
arg   )     desc_mem_stack_f(t,s,arg)

Definition at line 954 of file unwind-ia64.c.

#define UNW_DEC_MEM_STACK_V ( fmt,
t,
arg   )     desc_mem_stack_v(t,arg)

Definition at line 955 of file unwind-ia64.c.

#define UNW_DEC_PRIUNAT_GR ( fmt,
r,
arg   )     desc_reg_gr(UNW_REG_PRI_UNAT_GR,r,arg)

Definition at line 962 of file unwind-ia64.c.

#define UNW_DEC_PRIUNAT_PSPREL ( fmt,
o,
arg   )     desc_reg_psprel(UNW_REG_PRI_UNAT_MEM,o,arg)

Definition at line 963 of file unwind-ia64.c.

#define UNW_DEC_PRIUNAT_SPREL ( fmt,
o,
arg   )     desc_reg_sprel(UNW_REG_PRI_UNAT_MEM,o,arg)

Definition at line 964 of file unwind-ia64.c.

#define UNW_DEC_PRIUNAT_WHEN_GR ( fmt,
t,
arg   )     desc_reg_when(UNW_REG_PRI_UNAT_GR,t,arg)

Definition at line 960 of file unwind-ia64.c.

#define UNW_DEC_PRIUNAT_WHEN_MEM ( fmt,
t,
arg   )     desc_reg_when(UNW_REG_PRI_UNAT_MEM,t,arg)

Definition at line 961 of file unwind-ia64.c.

#define UNW_DEC_PROLOGUE ( fmt,
b,
r,
arg   )     desc_prologue(b,r,0,32,arg)

Definition at line 944 of file unwind-ia64.c.

#define UNW_DEC_PROLOGUE_GR ( fmt,
r,
m,
gr,
arg   )     desc_prologue(0,r,m,gr,arg)

Definition at line 943 of file unwind-ia64.c.

#define UNW_DEC_REG_GR ( fmt,
r,
d,
arg   )     desc_reg_gr(r,d,arg)

Definition at line 956 of file unwind-ia64.c.

#define UNW_DEC_REG_PSPREL ( fmt,
r,
o,
arg   )     desc_reg_psprel(r,o,arg)

Definition at line 957 of file unwind-ia64.c.

#define UNW_DEC_REG_SPREL ( fmt,
r,
o,
arg   )     desc_reg_sprel(r,o,arg)

Definition at line 958 of file unwind-ia64.c.

#define UNW_DEC_REG_WHEN ( fmt,
r,
t,
arg   )     desc_reg_when(r,t,arg)

Definition at line 959 of file unwind-ia64.c.

#define UNW_DEC_RESTORE ( f,
t,
a,
arg   )     desc_restore_p(0,t,a,arg)

Definition at line 982 of file unwind-ia64.c.

#define UNW_DEC_RESTORE_P ( f,
p,
t,
a,
arg   )     desc_restore_p(p,t,a,arg)

Definition at line 981 of file unwind-ia64.c.

#define UNW_DEC_RP_BR ( fmt,
d,
arg   )     desc_rp_br(d,arg)

Definition at line 965 of file unwind-ia64.c.

#define UNW_DEC_SPILL_BASE ( fmt,
o,
arg   )     desc_spill_base(o,arg)

Definition at line 966 of file unwind-ia64.c.

#define UNW_DEC_SPILL_MASK ( fmt,
m,
arg   )     (m = desc_spill_mask(m,arg))

Definition at line 967 of file unwind-ia64.c.

#define UNW_DEC_SPILL_PSPREL ( f,
t,
a,
o,
arg   )     desc_spill_psprel_p(0,t,a,o,arg)

Definition at line 978 of file unwind-ia64.c.

#define UNW_DEC_SPILL_PSPREL_P ( f,
p,
t,
a,
o,
arg   )     desc_spill_psprel_p(p,t,a,o,arg)

Definition at line 977 of file unwind-ia64.c.

#define UNW_DEC_SPILL_REG ( f,
t,
a,
x,
y,
arg   )     desc_spill_reg_p(0,t,a,x,y,arg)

Definition at line 976 of file unwind-ia64.c.

#define UNW_DEC_SPILL_REG_P ( f,
p,
t,
a,
x,
y,
arg   )     desc_spill_reg_p(p,t,a,x,y,arg)

Definition at line 975 of file unwind-ia64.c.

#define UNW_DEC_SPILL_SPREL ( f,
t,
a,
o,
arg   )     desc_spill_sprel_p(0,t,a,o,arg)

Definition at line 980 of file unwind-ia64.c.

#define UNW_DEC_SPILL_SPREL_P ( f,
p,
t,
a,
o,
arg   )     desc_spill_sprel_p(p,t,a,o,arg)

Definition at line 979 of file unwind-ia64.c.

#define UNW_FLAG_EHANDLER (  )     ((x) & 0x0000000100000000L)

Definition at line 51 of file unwind-ia64.c.

#define UNW_FLAG_MASK   0x0000ffff00000000

Definition at line 49 of file unwind-ia64.c.

#define UNW_FLAG_OSMASK   0x0000f00000000000

Definition at line 50 of file unwind-ia64.c.

#define UNW_FLAG_UHANDLER (  )     ((x) & 0x0000000200000000L)

Definition at line 52 of file unwind-ia64.c.

#define UNW_LENGTH (  )     ((x) & 0x00000000ffffffffL)

Definition at line 53 of file unwind-ia64.c.

#define UNW_VER (  )     ((x) >> 48)

Definition at line 48 of file unwind-ia64.c.

#define UNW_WHEN_NEVER   0x7fffffff

Definition at line 123 of file unwind-ia64.c.

#define uw_init_context ( CONTEXT   ) 

Value:

do {                  \
    /* ??? There is a whole lot o code in uw_install_context that \
       tries to avoid spilling the entire machine state here.  We \
       should try to make that work again.  */        \
    __builtin_unwind_init();            \
    uw_init_context_1 (CONTEXT, __builtin_ia64_bsp ());     \
  } while (0)

Definition at line 2079 of file unwind-ia64.c.


Typedef Documentation

typedef unsigned char*(* unw_decoder)(unsigned char *, unsigned char, void *)

Definition at line 1408 of file unwind-ia64.c.

typedef unsigned long unw_word

Definition at line 236 of file unwind-ia64.c.


Enumeration Type Documentation

Enumerator:
UNW_AR_BSP 
UNW_AR_BSPSTORE 
UNW_AR_PFS 
UNW_AR_RNAT 
UNW_AR_UNAT 
UNW_AR_LC 
UNW_AR_EC 
UNW_AR_FPSR 
UNW_AR_RSC 
UNW_AR_CCV 
UNW_AR_BSP 
UNW_AR_BSPSTORE 
UNW_AR_PFS 
UNW_AR_RNAT 
UNW_AR_UNAT 
UNW_AR_LC 
UNW_AR_EC 
UNW_AR_FPSR 
UNW_AR_RSC 
UNW_AR_CCV 
UNW_AR_BSP 
UNW_AR_BSPSTORE 
UNW_AR_PFS 
UNW_AR_RNAT 
UNW_AR_UNAT 
UNW_AR_LC 
UNW_AR_EC 
UNW_AR_FPSR 
UNW_AR_RSC 
UNW_AR_CCV 
UNW_AR_BSP 
UNW_AR_BSPSTORE 
UNW_AR_PFS 
UNW_AR_RNAT 
UNW_AR_UNAT 
UNW_AR_LC 
UNW_AR_EC 
UNW_AR_FPSR 
UNW_AR_RSC 
UNW_AR_CCV 

Definition at line 55 of file unwind-ia64.c.

Enumerator:
UNW_NAT_NONE 
UNW_NAT_VAL 
UNW_NAT_MEMSTK 
UNW_NAT_REGSTK 
UNW_NAT_NONE 
UNW_NAT_VAL 
UNW_NAT_MEMSTK 
UNW_NAT_REGSTK 
UNW_NAT_NONE 
UNW_NAT_VAL 
UNW_NAT_MEMSTK 
UNW_NAT_REGSTK 
UNW_NAT_NONE 
UNW_NAT_VAL 
UNW_NAT_MEMSTK 
UNW_NAT_REGSTK 

Definition at line 171 of file unwind-ia64.c.

Enumerator:
UNW_REG_PRI_UNAT_GR 
UNW_REG_PRI_UNAT_MEM 
UNW_REG_PSP 
UNW_REG_BSP 
UNW_REG_BSPSTORE 
UNW_REG_PFS 
UNW_REG_RNAT 
UNW_REG_RP 
UNW_REG_UNAT 
UNW_REG_PR 
UNW_REG_LC 
UNW_REG_FPSR 
UNW_REG_R2 
UNW_REG_R4 
UNW_REG_R7 
UNW_REG_R31 
UNW_REG_F2 
UNW_REG_F5 
UNW_REG_F16 
UNW_REG_F31 
UNW_REG_B0 
UNW_REG_B1 
UNW_REG_B5 
UNW_NUM_REGS 
UNW_REG_PRI_UNAT_GR 
UNW_REG_PRI_UNAT_MEM 
UNW_REG_PSP 
UNW_REG_BSP 
UNW_REG_BSPSTORE 
UNW_REG_PFS 
UNW_REG_RNAT 
UNW_REG_RP 
UNW_REG_UNAT 
UNW_REG_PR 
UNW_REG_LC 
UNW_REG_FPSR 
UNW_REG_R2 
UNW_REG_R4 
UNW_REG_R7 
UNW_REG_R31 
UNW_REG_F2 
UNW_REG_F5 
UNW_REG_F16 
UNW_REG_F31 
UNW_REG_B0 
UNW_REG_B1 
UNW_REG_B5 
UNW_NUM_REGS 
UNW_REG_PRI_UNAT_GR 
UNW_REG_PRI_UNAT_MEM 
UNW_REG_PSP 
UNW_REG_BSP 
UNW_REG_BSPSTORE 
UNW_REG_PFS 
UNW_REG_RNAT 
UNW_REG_RP 
UNW_REG_UNAT 
UNW_REG_PR 
UNW_REG_LC 
UNW_REG_FPSR 
UNW_REG_R2 
UNW_REG_R4 
UNW_REG_R7 
UNW_REG_R31 
UNW_REG_F2 
UNW_REG_F5 
UNW_REG_F16 
UNW_REG_F31 
UNW_REG_B0 
UNW_REG_B1 
UNW_REG_B5 
UNW_NUM_REGS 
UNW_REG_PRI_UNAT_GR 
UNW_REG_PRI_UNAT_MEM 
UNW_REG_PSP 
UNW_REG_BSP 
UNW_REG_BSPSTORE 
UNW_REG_PFS 
UNW_REG_RNAT 
UNW_REG_RP 
UNW_REG_UNAT 
UNW_REG_PR 
UNW_REG_LC 
UNW_REG_FPSR 
UNW_REG_R2 
UNW_REG_R4 
UNW_REG_R7 
UNW_REG_R31 
UNW_REG_F2 
UNW_REG_F5 
UNW_REG_F16 
UNW_REG_F31 
UNW_REG_B0 
UNW_REG_B1 
UNW_REG_B5 
UNW_NUM_REGS 

Definition at line 69 of file unwind-ia64.c.

enum unw_where

Enumerator:
UNW_WHERE_NONE 
UNW_WHERE_GR 
UNW_WHERE_FR 
UNW_WHERE_BR 
UNW_WHERE_SPREL 
UNW_WHERE_PSPREL 
UNW_WHERE_SPILL_HOME 
UNW_WHERE_GR_SAVE 
UNW_WHERE_NONE 
UNW_WHERE_GR 
UNW_WHERE_FR 
UNW_WHERE_BR 
UNW_WHERE_SPREL 
UNW_WHERE_PSPREL 
UNW_WHERE_SPILL_HOME 
UNW_WHERE_GR_SAVE 
UNW_WHERE_NONE 
UNW_WHERE_GR 
UNW_WHERE_FR 
UNW_WHERE_BR 
UNW_WHERE_SPREL 
UNW_WHERE_PSPREL 
UNW_WHERE_SPILL_HOME 
UNW_WHERE_GR_SAVE 
UNW_WHERE_NONE 
UNW_WHERE_GR 
UNW_WHERE_FR 
UNW_WHERE_BR 
UNW_WHERE_SPREL 
UNW_WHERE_PSPREL 
UNW_WHERE_SPILL_HOME 
UNW_WHERE_GR_SAVE 

Definition at line 108 of file unwind-ia64.c.


Function Documentation

static void __attribute__ ( (noreturn)   )  [static]

Definition at line 2127 of file unwind-ia64.c.

References i, ia64_rse_rnat_addr(), ia64_rse_skip_regs(), L, long, offsetof, pr, and unw_access_gr().

static enum unw_register_index __attribute__ ( (const)   )  [static]

void* _Unwind_FindEnclosingFunction ( void pc  ) 

Definition at line 1735 of file unwind-ia64.c.

References _Unwind_FindTableEntry(), NULL, and unw_table_entry::start_offset.

_Unwind_Word _Unwind_GetBSP ( struct _Unwind_Context context  ) 

Definition at line 1760 of file unwind-ia64.c.

References _Unwind_Context::bsp.

_Unwind_Word _Unwind_GetCFA ( struct _Unwind_Context context  ) 

Definition at line 1752 of file unwind-ia64.c.

References _Unwind_Context::psp.

_Unwind_Word _Unwind_GetGR ( struct _Unwind_Context context,
int  index 
) [inline]

Definition at line 1669 of file unwind-ia64.c.

References _Unwind_Context::eh_data, _Unwind_Context::gp, ret, and unw_access_gr().

_Unwind_Ptr _Unwind_GetIP ( struct _Unwind_Context context  )  [inline]

Definition at line 1702 of file unwind-ia64.c.

References _Unwind_Context::rp.

_Unwind_Ptr _Unwind_GetIPInfo ( struct _Unwind_Context context,
int *  ip_before_insn 
) [inline]

Definition at line 1708 of file unwind-ia64.c.

void* _Unwind_GetLanguageSpecificData ( struct _Unwind_Context context  ) 

Definition at line 1723 of file unwind-ia64.c.

References _Unwind_Context::lsda.

_Unwind_Ptr _Unwind_GetRegionStart ( struct _Unwind_Context context  ) 

Definition at line 1729 of file unwind-ia64.c.

References _Unwind_Context::region_start.

void _Unwind_SetGR ( struct _Unwind_Context context,
int  index,
_Unwind_Word  val 
) [inline]

Definition at line 1687 of file unwind-ia64.c.

References _Unwind_Context::eh_data, _Unwind_Context::gp, and unw_access_gr().

void _Unwind_SetIP ( struct _Unwind_Context context,
_Unwind_Ptr  val 
) [inline]

Definition at line 1717 of file unwind-ia64.c.

References _Unwind_Context::rp.

static struct unw_labeled_state* alloc_label_state ( void   )  [static, read]

static struct unw_reg_state* alloc_reg_state ( void   )  [static, read]

Definition at line 301 of file unwind-ia64.c.

References atomic_alloc(), emergency_reg_state, emergency_reg_state_free, malloc, and n.

static void alloc_spill_area ( unsigned long offp,
unsigned long  regsize,
struct unw_reg_info lo,
struct unw_reg_info hi 
) [static]

static int atomic_alloc ( unsigned int *  mask  )  [inline, static]

Definition at line 255 of file unwind-ia64.c.

References __sync_val_compare_and_swap, and ret.

static void atomic_free ( unsigned int *  mask,
int  bit 
) [inline, static]

Definition at line 277 of file unwind-ia64.c.

References __sync_xor_and_fetch.

static void desc_abi ( unsigned char  abi,
unsigned char  context,
struct unw_state_record sr 
) [inline, static]

Definition at line 628 of file unwind-ia64.c.

References unw_state_record::unwabi.

static void desc_br_gr ( unsigned char  brmask,
unsigned char  gr,
struct unw_state_record sr 
) [inline, static]

static void desc_br_mem ( unsigned char  brmask,
struct unw_state_record sr 
) [inline, static]

static void desc_copy_state ( unw_word  label,
struct unw_state_record sr 
) [inline, static]

static void desc_epilogue ( unw_word  t,
unw_word  ecount,
struct unw_state_record sr 
) [inline, static]

static void desc_fr_mem ( unsigned char  frmask,
struct unw_state_record sr 
) [inline, static]

static void desc_frgr_mem ( unsigned char  grmask,
unw_word  frmask,
struct unw_state_record sr 
) [inline, static]

static void desc_gr_gr ( unsigned char  grmask,
unsigned char  gr,
struct unw_state_record sr 
) [inline, static]

static void desc_gr_mem ( unsigned char  grmask,
struct unw_state_record sr 
) [inline, static]

static int desc_is_active ( unsigned char  qp,
unw_word  t,
struct unw_state_record sr 
) [inline, static]

static void desc_label_state ( unw_word  label,
struct unw_state_record sr 
) [inline, static]

static void desc_mem_stack_f ( unw_word  t,
unw_word  size,
struct unw_state_record sr 
) [inline, static]

static void desc_mem_stack_v ( unw_word  t,
struct unw_state_record sr 
) [inline, static]

static void desc_prologue ( int  body,
unw_word  rlen,
unsigned char  mask,
unsigned char  grsave,
struct unw_state_record sr 
) [static]

static void desc_reg_gr ( unsigned char  reg,
unsigned char  dst,
struct unw_state_record sr 
) [inline, static]

static void desc_reg_psprel ( unsigned char  reg,
unw_word  pspoff,
struct unw_state_record sr 
) [inline, static]

static void desc_reg_sprel ( unsigned char  reg,
unw_word  spoff,
struct unw_state_record sr 
) [inline, static]

static void desc_reg_when ( unsigned char  regnum,
unw_word  t,
struct unw_state_record sr 
) [inline, static]

static void desc_restore_p ( unsigned char  qp,
unw_word  t,
unsigned char  abreg,
struct unw_state_record sr 
) [inline, static]

static void desc_rp_br ( unsigned char  dst,
struct unw_state_record sr 
) [inline, static]

Definition at line 784 of file unwind-ia64.c.

References unw_state_record::return_link_reg.

static void desc_spill_base ( unw_word  pspoff,
struct unw_state_record sr 
) [inline, static]

Definition at line 800 of file unwind-ia64.c.

References unw_state_record::spill_offset.

static unsigned char* desc_spill_mask ( unsigned char *  imaskp,
struct unw_state_record sr 
) [inline, static]

Definition at line 806 of file unwind-ia64.c.

References unw_state_record::imask, and unw_state_record::region_len.

static void desc_spill_psprel_p ( unsigned char  qp,
unw_word  t,
unsigned char  abreg,
unw_word  pspoff,
struct unw_state_record sr 
) [inline, static]

static void desc_spill_reg_p ( unsigned char  qp,
unw_word  t,
unsigned char  abreg,
unsigned char  x,
unsigned char  ytreg,
struct unw_state_record sr 
) [inline, static]

static void desc_spill_sprel_p ( unsigned char  qp,
unw_word  t,
unsigned char  abreg,
unw_word  spoff,
struct unw_state_record sr 
) [inline, static]

static struct unw_reg_state* dup_state_stack ( struct unw_reg_state rs  )  [static, read]

Definition at line 390 of file unwind-ia64.c.

References alloc_reg_state(), copy, first, memcpy, unw_reg_state::next, NULL, and prev.

static void finish_prologue ( struct unw_state_record sr  )  [static]

static void free_label_state ( struct unw_labeled_state ls  )  [static]

static void free_label_states ( struct unw_labeled_state ls  )  [static]

static void free_reg_state ( struct unw_reg_state rs  )  [static]

Definition at line 321 of file unwind-ia64.c.

References atomic_free(), emergency_reg_state, emergency_reg_state_free, free(), and PTR_IN.

static void free_state_stack ( struct unw_reg_state rs  )  [static]

Definition at line 411 of file unwind-ia64.c.

References free_reg_state(), next, unw_reg_state::next, NULL, and p.

static void ia64_copy_rbs ( struct _Unwind_Context info,
unsigned long  dst,
unsigned long  src,
long  len,
unsigned long  dst_rnat 
) [static]

static unsigned long ia64_rse_is_rnat_slot ( unsigned long addr  )  [inline, static]

Definition at line 1461 of file unwind-ia64.c.

References ia64_rse_slot_num().

static unsigned long ia64_rse_num_regs ( unsigned long bspstore,
unsigned long bsp 
) [inline, static]

Definition at line 1478 of file unwind-ia64.c.

References ia64_rse_slot_num(), and slots.

static unsigned long* ia64_rse_rnat_addr ( unsigned long slot_addr  )  [inline, static]

Definition at line 1469 of file unwind-ia64.c.

static unsigned long* ia64_rse_skip_regs ( unsigned long addr,
long  num_regs 
) [inline, static]

Definition at line 1488 of file unwind-ia64.c.

References ia64_rse_slot_num().

static unsigned long ia64_rse_slot_num ( unsigned long addr  )  [inline, static]

Definition at line 1454 of file unwind-ia64.c.

static void pop ( struct unw_state_record sr  )  [static]

Definition at line 377 of file unwind-ia64.c.

References abort, unw_state_record::curr, free_reg_state(), memcpy, and unw_reg_state::next.

static void push ( struct unw_state_record sr  )  [static]

Definition at line 369 of file unwind-ia64.c.

References alloc_reg_state(), unw_state_record::curr, memcpy, and unw_reg_state::next.

static void set_reg ( struct unw_reg_info reg,
enum unw_where  where,
int  when,
unsigned long  val 
) [static]

static void spill_next_when ( struct unw_reg_info **  regp,
struct unw_reg_info lim,
unw_word  t 
) [inline, static]

Definition at line 494 of file unwind-ia64.c.

References abort, UNW_WHERE_SPILL_HOME, unw_reg_info::when, and unw_reg_info::where.

static void unw_access_gr ( struct _Unwind_Context info,
int  regnum,
unsigned long val,
char *  nat,
int  write 
) [static]

static unsigned char* unw_decode ( unsigned char *  dp,
int  inside_body,
void arg 
) [inline, static]

Definition at line 1439 of file unwind-ia64.c.

static unsigned char* unw_decode_b1 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

Definition at line 1356 of file unwind-ia64.c.

References B1, UNW_DEC_COPY_STATE, and UNW_DEC_LABEL_STATE.

static unsigned char* unw_decode_b2 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

Definition at line 1368 of file unwind-ia64.c.

References B2, UNW_DEC_EPILOGUE, and unw_decode_uleb128().

static unsigned char* unw_decode_b3_x4 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

static unsigned char* unw_decode_p1 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

Definition at line 1186 of file unwind-ia64.c.

References P1, and UNW_DEC_BR_MEM.

static unsigned char* unw_decode_p2_p5 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

static unsigned char* unw_decode_p6 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

Definition at line 1244 of file unwind-ia64.c.

References UNW_DEC_FR_MEM, and UNW_DEC_GR_MEM.

static unsigned char* unw_decode_p7_p10 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

static unsigned char* unw_decode_r1 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

Definition at line 1150 of file unwind-ia64.c.

References R1, and UNW_DEC_PROLOGUE.

static unsigned char* unw_decode_r2 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

Definition at line 1161 of file unwind-ia64.c.

References R2, UNW_DEC_PROLOGUE_GR, and unw_decode_uleb128().

static unsigned char* unw_decode_r3 ( unsigned char *  dp,
unsigned char  code,
void arg 
) [static]

Definition at line 1176 of file unwind-ia64.c.

References R3, UNW_DEC_PROLOGUE, and unw_decode_uleb128().

static unw_word unw_decode_uleb128 ( unsigned char **  dpp  )  [static]

Definition at line 1047 of file unwind-ia64.c.

References result, and shift.

static unsigned char* unw_decode_x1 ( unsigned char *  dp,
unsigned char code   __attribute__(unused),
void arg 
) [static]

Definition at line 1066 of file unwind-ia64.c.

References UNW_DEC_SPILL_PSPREL, UNW_DEC_SPILL_SPREL, unw_decode_uleb128(), and X1.

static unsigned char* unw_decode_x2 ( unsigned char *  dp,
unsigned char code   __attribute__(unused),
void arg 
) [static]

Definition at line 1085 of file unwind-ia64.c.

References UNW_DEC_RESTORE, UNW_DEC_SPILL_REG, unw_decode_uleb128(), and x.

static unsigned char* unw_decode_x3 ( unsigned char *  dp,
unsigned char code   __attribute__(unused),
void arg 
) [static]

static unsigned char* unw_decode_x4 ( unsigned char *  dp,
unsigned char code   __attribute__(unused),
void arg 
) [static]

Definition at line 1127 of file unwind-ia64.c.

References UNW_DEC_RESTORE_P, UNW_DEC_SPILL_REG_P, unw_decode_uleb128(), and x.

static void uw_advance_context ( struct _Unwind_Context context,
_Unwind_FrameState fs 
) [static]

Definition at line 2071 of file unwind-ia64.c.

References uw_update_context().

static _Unwind_Reason_Code uw_frame_state_for ( struct _Unwind_Context context,
_Unwind_FrameState fs 
) [static]

static _Unwind_Ptr uw_identify_context ( struct _Unwind_Context context  )  [inline, static]

Definition at line 2392 of file unwind-ia64.c.

References _Unwind_GetIP.

static void uw_init_context_1 ( struct _Unwind_Context context,
void bsp 
) [static]

static void uw_update_context ( struct _Unwind_Context context,
_Unwind_FrameState fs 
) [static]

static void uw_update_reg_address ( struct _Unwind_Context context,
_Unwind_FrameState fs,
enum unw_register_index  regno 
) [static]


Variable Documentation

Definition at line 290 of file unwind-ia64.c.

unsigned int emergency_labeled_state_free = MASK_FOR (emergency_labeled_state) [static]

Definition at line 291 of file unwind-ia64.c.

Definition at line 287 of file unwind-ia64.c.

unsigned int emergency_reg_state_free = MASK_FOR (emergency_reg_state) [static]

Definition at line 288 of file unwind-ia64.c.

unsigned char const save_order[] [static]

const unw_decoder unw_decode_table[2][8] [static]


Generated on Wed Apr 8 15:21:50 2009 for Open64 by  doxygen 1.5.6