diff --git a/lib/Headers/unwind.h b/lib/Headers/unwind.h
index 618de04..079bee5 100644
--- a/lib/Headers/unwind.h
+++ b/lib/Headers/unwind.h
@@ -156,14 +156,48 @@ _Unwind_VRS_Result _Unwind_VRS_Get(struct _Unwind_Context *__context,
   _Unwind_VRS_DataRepresentation __representation,
   void *__valuep);
 
-#endif
+_Unwind_VRS_Result _Unwind_VRS_Set(struct _Unwind_Context *__context,
+  _Unwind_VRS_RegClass __regclass,
+  uint32_t __regno,
+  _Unwind_VRS_DataRepresentation __representation,
+  void *__valuep);
+
+static __inline__
+_Unwind_Word _Unwind_GetGR(struct _Unwind_Context *__context, int __index) {
+  _Unwind_Word __value;
+  _Unwind_VRS_Get(__context, _UVRSC_CORE, __index, _UVRSD_UINT32, &__value);
+  return __value;
+}
 
+static __inline__
+void _Unwind_SetGR(struct _Unwind_Context *__context, int __index,
+                   _Unwind_Word __value) {
+  _Unwind_VRS_Set(__context, _UVRSC_CORE, __index, _UVRSD_UINT32, &__value);
+}
+
+static __inline__
+_Unwind_Word _Unwind_GetIP(struct _Unwind_Context *__context) {
+  _Unwind_Word __ip = _Unwind_GetGR(__context, 15);
+  return __ip & ~(_Unwind_Word)(0x1); /* Remove thumb mode bit. */
+}
+
+/* FIXME: I'm not sure what this should do. */
+_Unwind_Word _Unwind_GetIPInfo(struct _Unwind_Context *__context,
+                               int *__ip_before_insn);
+
+static __inline__
+void _Unwind_SetIP(struct _Unwind_Context *__context, _Unwind_Word __value) {
+  _Unwind_Word __thumb_mode_bit = _Unwind_GetGR(__context, 15) & 0x1;
+  _Unwind_SetGR(__context, 15, __value | __thumb_mode_bit);
+}
+#else
 _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int);
 void _Unwind_SetGR(struct _Unwind_Context *, int, _Unwind_Word);
 
 _Unwind_Word _Unwind_GetIP(struct _Unwind_Context *);
 _Unwind_Word _Unwind_GetIPInfo(struct _Unwind_Context *, int *);
 void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Word);
+#endif
 
 _Unwind_Word _Unwind_GetCFA(struct _Unwind_Context *);
 
