kernel/eka/compsupp/symaehabi/unwinder.h
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/compsupp/symaehabi/unwinder.h	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,128 @@
+/* unwinder.h
+ *
+ * Copyright 2002-2005 ARM Limited. All rights reserved.
+ *
+ * Your rights to use this code are set out in the accompanying licence
+ * text file LICENCE.txt (ARM contract number LEC-ELA-00080 v2.0).
+ */
+/*
+ * RCS $Revision: 91721 $
+ * Checkin $Date: 2005-08-08 19:30:07 +0100 (Mon, 08 Aug 2005) $
+ * Revising $Author: drodgman $
+ */
+
+/* Language-independent unwinder header public defines */
+
+#ifndef UNWINDER_H
+#define UNWINDER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  typedef enum {
+    _URC_OK = 0,       /* operation completed successfully */
+    _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
+    _URC_HANDLER_FOUND = 6,
+    _URC_INSTALL_CONTEXT = 7,
+    _URC_CONTINUE_UNWIND = 8,
+    _URC_FAILURE = 9   /* unspecified failure of some kind */
+  } _Unwind_Reason_Code;
+  
+  typedef enum {
+    _US_VIRTUAL_UNWIND_FRAME = 0,
+    _US_UNWIND_FRAME_STARTING = 1,
+    _US_UNWIND_FRAME_RESUME = 2
+  } _Unwind_State;
+  
+  typedef struct _Unwind_Control_Block _Unwind_Control_Block;
+  typedef struct _Unwind_Context _Unwind_Context;
+  typedef uint32_t _Unwind_EHT_Header;
+  
+  
+  /* UCB: */
+  
+  struct _Unwind_Control_Block {
+    char exception_class[8];
+    void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
+    /* Unwinder cache, private fields for the unwinder's use */
+    struct {
+      uint32_t reserved1;     /* init reserved1 to 0, then don't touch */
+      uint32_t reserved2;
+      uint32_t reserved3;
+      uint32_t reserved4;
+      uint32_t reserved5;
+    } unwinder_cache;
+    /* Propagation barrier cache (valid after phase 1): */
+    struct {
+      uint32_t sp;
+      uint32_t bitpattern[5];
+    } barrier_cache;
+    /* Cleanup cache (preserved over cleanup): */
+    struct {
+      uint32_t bitpattern[4];
+    } cleanup_cache;
+    /* Pr cache (for pr's benefit): */
+    struct {
+      uint32_t fnstart;             /* function start address */
+      _Unwind_EHT_Header *ehtp;     /* pointer to EHT entry header word */
+      uint32_t additional;          /* additional data */
+      uint32_t reserved1;
+    } pr_cache;
+    long long int :0;               /* Force alignment of next item to 8-byte boundary */
+  };
+  
+  /* Interface functions: */
+  
+  _Unwind_Reason_Code _Unwind_RaiseException(_Unwind_Control_Block *ucbp);
+  NORETURNDECL void _Unwind_Resume(_Unwind_Control_Block *ucbp);
+  void _Unwind_Complete(_Unwind_Control_Block *ucbp);
+  void _Unwind_DeleteException(_Unwind_Control_Block *ucbp); 
+
+  /* Virtual Register Set*/
+        
+  typedef enum {
+    _UVRSC_CORE = 0,      /* integer register */
+    _UVRSC_VFP = 1,       /* vfp */
+                          /* 2: was fpa (obsolete) */
+    _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,
+                          /* 2: was fpa (obsolete) */
+    _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;
+
+  IMPORT_C _Unwind_VRS_Result _Unwind_VRS_Set(_Unwind_Context *context,
+                                              _Unwind_VRS_RegClass regclass,
+                                              uint32_t regno,
+                                              _Unwind_VRS_DataRepresentation representation,
+                                              void *valuep);
+  
+  IMPORT_C _Unwind_VRS_Result _Unwind_VRS_Get(_Unwind_Context *context,
+                                              _Unwind_VRS_RegClass regclass,
+                                              uint32_t regno,
+                                              _Unwind_VRS_DataRepresentation representation,
+                                              void *valuep);
+  
+  IMPORT_C _Unwind_VRS_Result _Unwind_VRS_Pop(_Unwind_Context *context,
+                                              _Unwind_VRS_RegClass regclass,
+                                              uint32_t descriminator,
+                                              _Unwind_VRS_DataRepresentation representation);
+
+#ifdef __cplusplus
+}   /* extern "C" */
+#endif
+
+#endif /* defined UNWINDER_H */