diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2012-01-19 11:39:05 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2012-01-19 11:39:05 +0000 |
commit | f5f18bfde0e46c154cf0207c895f917d0b50d53f (patch) | |
tree | 05e2dad751c7e723e13bd7a913218d1fd359e498 | |
parent | b0f9dd22bf469028b2c40eab60ad1019c3e6089d (diff) |
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
-rw-r--r-- | lib/Headers/unwind.h | 35 |
1 files changed, 35 insertions, 0 deletions
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*); |