aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-ia64.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2005-07-27 06:32:46 +0000
committerJan Beulich <jbeulich@novell.com>2005-07-27 06:32:46 +0000
commitba825241e117100f7314d8583a173c770e42707f (patch)
treef8569ba859ff6c645c463baa57f48e353f745365 /gas/config/tc-ia64.h
parentd8d83e9b52d6dfd4c6dc8214dd875fab7a1600e4 (diff)
downloadgdb-ba825241e117100f7314d8583a173c770e42707f.zip
gdb-ba825241e117100f7314d8583a173c770e42707f.tar.gz
gdb-ba825241e117100f7314d8583a173c770e42707f.tar.bz2
gas/
2005-07-27 Jan Beulich <jbeulich@novell.com> * config/tc-ia64.h (unw_r_record): Change type of fr_mem to unsigned int. (unw_p_record): Remove unused/redundant fields imask and rmask. Combine spoff and pspoff into a union. Combine gr and br into a union. Change type of grmask and brmask to unsigned char. Change type of frmask to unsigned int. (unw_x_record): Combine spoff, pspoff, and treg into a union. * config/tc-ia64.c (unwind): New field 'pending_saves'. (check_pending_save): New. (alloc_record): Clear out entire record. (output_psp_gr): Use renamed structure fields. (output_psp_sprel): Likewise. (output_rp_gr): Likewise. (output_rp_br): Likewise. (output_rp_psprel): Likewise. (output_rp_sprel): Likewise. (output_pfs_gr): Likewise. (output_pfs_psprel): Likewise. (output_pfs_sprel): Likewise. (output_preds_gr): Likewise. (output_preds_psprel): Likewise. (output_preds_sprel): Likewise. (output_spill_base): Likewise. (output_unat_gr): Likewise. (output_unat_psprel): Likewise. (output_unat_sprel): Likewise. (output_lc_gr): Likewise. (output_lc_psprel): Likewise. (output_lc_sprel): Likewise. (output_fpsr_gr): Likewise. (output_fpsr_psprel): Likewise. (output_fpsr_sprel): Likewise. (output_priunat_gr): Likewise. (output_priunat_psprel): Likewise. (output_priunat_sprel): Likewise. (output_bsp_gr): Likewise. (output_bsp_psprel): Likewise. (output_bsp_sprel): Likewise. (output_bspstore_gr): Likewise. (output_bspstore_psprel): Likewise. (output_bspstore_sprel): Likewise. (output_rnat_gr): Likewise. (output_rnat_psprel): Likewise. (output_rnat_sprel): Likewise. (output_spill_psprel): Likewise. (output_spill_sprel): Likewise. (output_spill_reg): Likewise. (output_fr_mem): Likewise. Allocate one unwind record per set mask bit. (output_frgr_mem): Likewise. (output_gr_mem): Likewise. (output_br_mem): Likewise. (output_gr_gr): Likewise. (output_br_gr): Likewise. (fixup_unw_records): Likewise. (process_one_record): Use renamed structure fields. For gr_gr and br_gr, collect mask from chain of records before output. (in_prologue): Simplify and eliminate early returns. Call check_pending_save. (in_body): Simplify and eliminate early returns. (dot_body): Call check_pending_save. (md_assemble): Update comment. Deal with pending saves. gas/testsuite/ 2005-07-27 Jan Beulich <jbeulich@novell.com> * gas/ia64/unwind-bad.l: Uncomment patterns matching new warnings. * gas/ia64/unwind-ok.d: Correct expectations.
Diffstat (limited to 'gas/config/tc-ia64.h')
-rw-r--r--gas/config/tc-ia64.h34
1 files changed, 21 insertions, 13 deletions
diff --git a/gas/config/tc-ia64.h b/gas/config/tc-ia64.h
index ad0a116..f322fbf 100644
--- a/gas/config/tc-ia64.h
+++ b/gas/config/tc-ia64.h
@@ -241,7 +241,7 @@ typedef struct unw_r_record
struct
{
unsigned char *i;
- unsigned long fr_mem;
+ unsigned int fr_mem;
unsigned char gr_mem;
unsigned char br_mem;
} mask;
@@ -249,17 +249,22 @@ typedef struct unw_r_record
typedef struct unw_p_record
{
- void *imask;
+ struct unw_rec_list *next;
unsigned long t;
unsigned long size;
- unsigned long spoff;
- unsigned long br;
- unsigned long pspoff;
- unsigned short gr;
- unsigned short rmask;
- unsigned short grmask;
- unsigned long frmask;
- unsigned short brmask;
+ union
+ {
+ unsigned long sp;
+ unsigned long psp;
+ } off;
+ union
+ {
+ unsigned short gr;
+ unsigned short br;
+ } r;
+ unsigned char grmask;
+ unsigned char brmask;
+ unsigned int frmask;
unsigned char abi;
unsigned char context;
} unw_p_record;
@@ -274,10 +279,13 @@ typedef struct unw_b_record
typedef struct unw_x_record
{
unsigned long t;
- unsigned long spoff;
- unsigned long pspoff;
+ union
+ {
+ unsigned long spoff;
+ unsigned long pspoff;
+ unsigned int reg;
+ } where;
unsigned short reg;
- unsigned short treg;
unsigned short qp;
unsigned short ab; /* Value of the AB field.. */
unsigned short xy; /* Value of the XY field.. */