diff options
author | Mike Stump <mrs@gcc.gnu.org> | 1996-07-25 22:00:09 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1996-07-25 22:00:09 +0000 |
commit | bbe79f845fe1c695ba61bece26f1369f4bbfddd3 (patch) | |
tree | 0d27cbf158dad94c1a0a09b1a658bcb78b107539 /gcc | |
parent | 5703bb66031e55b695395004578410c8e4e08f31 (diff) | |
download | gcc-bbe79f845fe1c695ba61bece26f1369f4bbfddd3.zip gcc-bbe79f845fe1c695ba61bece26f1369f4bbfddd3.tar.gz gcc-bbe79f845fe1c695ba61bece26f1369f4bbfddd3.tar.bz2 |
install EH code
From-SVN: r12564
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/pa/pa.h | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index ac03586..16d20f98 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -2323,12 +2323,27 @@ extern void hppa_encode_label (); removing the dead (but important) initialization of REFERENCE. */ -#define DO_GLOBAL_DTORS_BODY \ -do { \ - extern void __gcc_plt_call (); \ - void (*reference)() = &__gcc_plt_call; \ - func_ptr *p; \ - __asm__ ("" : : "r" (reference)); \ - for (p = __DTOR_LIST__ + 1; *p; ) \ - (*p++) (); \ +#define DO_GLOBAL_DTORS_BODY \ +do { \ + extern void __gcc_plt_call (); \ + void (*reference)() = &__gcc_plt_call; \ + func_ptr *p; \ + __asm__ ("" : : "r" (reference)); \ + for (p = __DTOR_LIST__ + 1; *p; ) \ + (*p++) (); \ } while (0) + +/* The current return address is in [%sp-20]. */ +#define RETURN_ADDR_RTX(COUNT, FRAME) \ + ((COUNT == 0) \ + ? gen_rtx (MEM, Pmode, \ + memory_address (Pmode, plus_constant (FRAME, \ + 5 * UNITS_PER_WORD))) \ + : (rtx) 0) + +/* Used to mask out junk bits from the return address, such as + processor state, interrupt status, condition codes and the like. */ +#define MASK_RETURN_ADDR \ + /* The priviledge level is in the two low order bits, mask em out \ + of the return address. */ \ + (GEN_INT (0xfffffffc)) |