Provide structures from <ucontext.h> for Android.
authorulan@chromium.org <ulan@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 16 Apr 2012 10:42:39 +0000 (10:42 +0000)
committerulan@chromium.org <ulan@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 16 Apr 2012 10:42:39 +0000 (10:42 +0000)
Patch from Ben Murdoch <benm@chromium.org>.

Review URL: https://chromiumcodereview.appspot.com/10001005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/platform-linux.cc

index bed069d..5c05a3a 100644 (file)
@@ -964,6 +964,46 @@ typedef struct ucontext {
   __sigset_t uc_sigmask;
 } ucontext_t;
 
+#elif !defined(__GLIBC__) && defined(__i386__)
+// x86 version for Android.
+struct _libc_fpreg {
+  uint16_t significand[4];
+  uint16_t exponent;
+};
+
+struct _libc_fpstate {
+  uint64_t cw;
+  uint64_t sw;
+  uint64_t tag;
+  uint64_t ipoff;
+  uint64_t cssel;
+  uint64_t dataoff;
+  uint64_t datasel;
+  struct _libc_fpreg _st[8];
+  uint64_t status;
+};
+
+typedef struct _libc_fpstate *fpregset_t;
+
+typedef struct mcontext {
+  int32_t gregs[19];
+  fpregset_t fpregs;
+  int64_t oldmask;
+  int64_t cr2;
+} mcontext_t;
+
+typedef uint64_t __sigset_t;
+
+typedef struct ucontext {
+  uint64_t uc_flags;
+  struct ucontext *uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  __sigset_t uc_sigmask;
+  struct _libc_fpstate __fpregs_mem;
+} ucontext_t;
+
+enum { REG_EBP = 6, REG_ESP = 7, REG_EIP = 14 };
 #endif