From f5f18bfde0e46c154cf0207c895f917d0b50d53f Mon Sep 17 00:00:00 2001 From: Evgeniy Stepanov Date: Thu, 19 Jan 2012 11:39:05 +0000 Subject: Extend unwind.h with the ARM unwinder interface. These declarations come from the sample code in the "Exception Handling ABI for the ARM Architecture" document. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148469 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Headers/unwind.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'lib/Headers') diff --git a/lib/Headers/unwind.h b/lib/Headers/unwind.h index 773f3e8093..cef20cc214 100644 --- a/lib/Headers/unwind.h +++ b/lib/Headers/unwind.h @@ -55,7 +55,42 @@ typedef enum { _URC_CONTINUE_UNWIND = 8 } _Unwind_Reason_Code; + +#ifdef __arm__ + +typedef enum { + _UVRSC_CORE = 0, /* integer register */ + _UVRSC_VFP = 1, /* vfp */ + _UVRSC_WMMXD = 3, /* Intel WMMX data register */ + _UVRSC_WMMXC = 4 /* Intel WMMX control register */ +} _Unwind_VRS_RegClass; + +typedef enum { + _UVRSD_UINT32 = 0, + _UVRSD_VFPX = 1, + _UVRSD_UINT64 = 3, + _UVRSD_FLOAT = 4, + _UVRSD_DOUBLE = 5 +} _Unwind_VRS_DataRepresentation; + +typedef enum { + _UVRSR_OK = 0, + _UVRSR_NOT_IMPLEMENTED = 1, + _UVRSR_FAILED = 2 +} _Unwind_VRS_Result; + +_Unwind_VRS_Result _Unwind_VRS_Get(_Unwind_Context *context, + _Unwind_VRS_RegClass regclass, + uint32_t regno, + _Unwind_VRS_DataRepresentation representation, + void *valuep); + +#else + uintptr_t _Unwind_GetIP(struct _Unwind_Context* context); + +#endif + typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context*, void*); _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void*); -- cgit v1.2.3