Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / native_client / src / trusted / service_runtime / arch / arm / sel_rt.h
index 07b4d34..3084abc 100644 (file)
@@ -62,8 +62,10 @@ struct NaClThreadContext {
   /*            40 */
   uint32_t  tls_value2;
   /*            44 */
-  uint32_t  guard_token;
+  uint32_t  syscall_routine;  /* Address of NaClSyscallSeg routine */
   /*            48 */
+  uint32_t  guard_token;
+  /*            4c */
 };
 
 static INLINE uintptr_t NaClGetThreadCtxSp(struct NaClThreadContext *th_ctx) {
@@ -74,12 +76,20 @@ NORETURN void NaClStartSwitch(struct NaClThreadContext *);
 
 #endif /* !defined(__ASSEMBLER__) */
 
+/*
+ * Given an offset for a field in NaClThreadContext, this returns the
+ * field's offset from r9, given that r9 points to tls_value1.
+ */
+#define NACL_R9_OFFSET(offset) \
+    ((offset) - NACL_THREAD_CONTEXT_OFFSET_TLS_VALUE1)
+
 #define NACL_THREAD_CONTEXT_OFFSET_TRUSTED_STACK_PTR 0x30
 #define NACL_THREAD_CONTEXT_OFFSET_TLS_IDX 0x34
 #define NACL_THREAD_CONTEXT_OFFSET_FPSCR 0x38
 #define NACL_THREAD_CONTEXT_OFFSET_SYS_FPSCR 0x3c
 #define NACL_THREAD_CONTEXT_OFFSET_TLS_VALUE1 0x40
-#define NACL_THREAD_CONTEXT_OFFSET_GUARD_TOKEN 0x48
+#define NACL_THREAD_CONTEXT_OFFSET_SYSCALL_ROUTINE 0x48
+#define NACL_THREAD_CONTEXT_OFFSET_GUARD_TOKEN 0x4c
 
 #if !defined(__ASSEMBLER__)
 
@@ -99,6 +109,7 @@ static INLINE void NaClThreadContextOffsetCheck(void) {
   NACL_CHECK_FIELD(NACL_THREAD_CONTEXT_OFFSET_FPSCR, fpscr);
   NACL_CHECK_FIELD(NACL_THREAD_CONTEXT_OFFSET_SYS_FPSCR, sys_fpscr);
   NACL_CHECK_FIELD(NACL_THREAD_CONTEXT_OFFSET_TLS_VALUE1, tls_value1);
+  NACL_CHECK_FIELD(NACL_THREAD_CONTEXT_OFFSET_SYSCALL_ROUTINE, syscall_routine);
   NACL_CHECK_FIELD(NACL_THREAD_CONTEXT_OFFSET_GUARD_TOKEN, guard_token);
 
 #undef NACL_CHECK_FIELD