/* 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) {
#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__)
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