From 8c2740cfe324131373afa75fec4abb3fd9d44e24 Mon Sep 17 00:00:00 2001 From: "mostang.com!davidm" Date: Sat, 8 Feb 2003 10:10:59 +0000 Subject: [PATCH] (unw_tdep_fpreg_t): New type. (UNW_TDEP_EH_ARG0): Make it an alias for r15. (UNW_TDEP_EH_ARG1): Make it an alias for r16. (UNW_TDEP_EH_ARG2): Make it an alias for r17. (UNW_TDEP_EH_ARG3): Make it an alias for r18. (Logical change 1.45) --- include/libunwind-ia64.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/include/libunwind-ia64.h b/include/libunwind-ia64.h index c8c45722..5d55d2c7 100644 --- a/include/libunwind-ia64.h +++ b/include/libunwind-ia64.h @@ -48,6 +48,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ typedef uint64_t unw_tdep_word_t; +/* On IA-64, we want to access the contents of floating-point + registers as a pair of "words", but to ensure 16-byte alignment, we + make it a union that contains a "long double". This will do the + Right Thing on all known IA-64 platforms, including HP-UX. */ +typedef union + { + struct { unw_tdep_word_t bits[2]; } raw; + long double dummy; /* dummy to force 16-byte alignment */ + } +unw_tdep_fpreg_t; + typedef enum { /* Note: general registers are excepted to start with index 0. @@ -88,7 +99,11 @@ typedef enum UNW_TDEP_LAST_REG = UNW_IA64_SP, UNW_TDEP_IP = UNW_IA64_IP, - UNW_TDEP_SP = UNW_IA64_SP + UNW_TDEP_SP = UNW_IA64_SP, + UNW_TDEP_EH_ARG0 = UNW_IA64_GR + 15, + UNW_TDEP_EH_ARG1 = UNW_IA64_GR + 16, + UNW_TDEP_EH_ARG2 = UNW_IA64_GR + 17, + UNW_TDEP_EH_ARG3 = UNW_IA64_GR + 18 } ia64_regnum_t;