summaryrefslogtreecommitdiffstats
path: root/lib/Headers
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2012-01-19 11:39:05 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2012-01-19 11:39:05 +0000
commitf5f18bfde0e46c154cf0207c895f917d0b50d53f (patch)
tree05e2dad751c7e723e13bd7a913218d1fd359e498 /lib/Headers
parentb0f9dd22bf469028b2c40eab60ad1019c3e6089d (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
Diffstat (limited to 'lib/Headers')
-rw-r--r--lib/Headers/unwind.h35
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*);