Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(708)

Side by Side Diff: src/trusted/service_runtime/arch/mips/nacl_syscall.S

Issue 1536713003: [MIPS] Make $t8 point to the address of TLS pointers (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client@master
Patch Set: Move EditMipsCode() below EditArmCode(). Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/tools/tls_edit/tls_edit.c ('k') | src/trusted/service_runtime/arch/mips/nacl_tls.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/trusted/service_runtime/arch/mips/sel_ldr_mips.h" 7 #include "native_client/src/trusted/service_runtime/arch/mips/sel_ldr_mips.h"
8 #include "native_client/src/trusted/service_runtime/arch/mips/sel_rt.h" 8 #include "native_client/src/trusted/service_runtime/arch/mips/sel_rt.h"
9 #include "native_client/src/trusted/service_runtime/nacl_config.h" 9 #include "native_client/src/trusted/service_runtime/nacl_config.h"
10 10
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 * stack frame (o32 ABI), and place return address on top of that. 79 * stack frame (o32 ABI), and place return address on top of that.
80 */ 80 */
81 sw $a3, 12($sp) 81 sw $a3, 12($sp)
82 sw $a2, 8($sp) 82 sw $a2, 8($sp)
83 sw $a1, 4($sp) 83 sw $a1, 4($sp)
84 sw $a0, 0($sp) 84 sw $a0, 0($sp)
85 /* Save return address for returning to untrusted code. */ 85 /* Save return address for returning to untrusted code. */
86 sw $ra, -4($sp) 86 sw $ra, -4($sp)
87 /* Save return address that indicates which trampoline was called. */ 87 /* Save return address that indicates which trampoline was called. */
88 sw $t5, -8($sp) 88 sw $t5, -8($sp)
89 add $a0, $t8, -NACL_THREAD_CONTEXT_OFFSET_TLS_VALUE1
89 90
90 /* Load the __thread variable's offset into a3. */ 91 lw $t2, NACL_THREAD_CONTEXT_OFFSET_GUARD_TOKEN($a0)
91 lui $a3, %tprel_hi(nacl_current_thread) 92 la $t3, nacl_guard_token
92 addiu $a3, $a3, %tprel_lo(nacl_current_thread) 93 lw $t3, 0($t3)
94 bne $t2, $t3, NaClSyscallThreadCaptureFault
95 nop
93 96
94 /* Fetch the thread-local variable: set a0 = nacl_current_thread */
95 rdhwr $v1, $29
96 addu $a3, $v1, $a3
97 lw $a0, 0($a3)
98
99 DEFINE_GLOBAL_HIDDEN_LOCATION(NaClSyscallThreadCaptureFault):
100 sw $s0, NACL_THREAD_CONTEXT_OFFSET_S0($a0) 97 sw $s0, NACL_THREAD_CONTEXT_OFFSET_S0($a0)
101 sw $s1, NACL_THREAD_CONTEXT_OFFSET_S1($a0) 98 sw $s1, NACL_THREAD_CONTEXT_OFFSET_S1($a0)
102 sw $s2, NACL_THREAD_CONTEXT_OFFSET_S2($a0) 99 sw $s2, NACL_THREAD_CONTEXT_OFFSET_S2($a0)
103 sw $s3, NACL_THREAD_CONTEXT_OFFSET_S3($a0) 100 sw $s3, NACL_THREAD_CONTEXT_OFFSET_S3($a0)
104 sw $s4, NACL_THREAD_CONTEXT_OFFSET_S4($a0) 101 sw $s4, NACL_THREAD_CONTEXT_OFFSET_S4($a0)
105 sw $s5, NACL_THREAD_CONTEXT_OFFSET_S5($a0) 102 sw $s5, NACL_THREAD_CONTEXT_OFFSET_S5($a0)
106 sw $s6, NACL_THREAD_CONTEXT_OFFSET_S6($a0) 103 sw $s6, NACL_THREAD_CONTEXT_OFFSET_S6($a0)
107 sw $s7, NACL_THREAD_CONTEXT_OFFSET_S7($a0) 104 sw $s7, NACL_THREAD_CONTEXT_OFFSET_S7($a0)
108 sw $t8, NACL_THREAD_CONTEXT_OFFSET_T8($a0) 105 sw $t8, NACL_THREAD_CONTEXT_OFFSET_T8($a0)
109 sw $sp, NACL_THREAD_CONTEXT_OFFSET_STACK_PTR($a0) 106 sw $sp, NACL_THREAD_CONTEXT_OFFSET_STACK_PTR($a0)
(...skipping 15 matching lines...) Expand all
125 lw $t9,%call16(NaClSwitch)($s0) 122 lw $t9,%call16(NaClSwitch)($s0)
126 jr $t9 123 jr $t9
127 move $a0, $v0 /* delay slot */ 124 move $a0, $v0 /* delay slot */
128 125
129 /* NOTREACHED */ 126 /* NOTREACHED */
130 127
131 /* 128 /*
132 * If the thread returns, which must not happen, it will be halted 129 * If the thread returns, which must not happen, it will be halted
133 * by the following instruction. 130 * by the following instruction.
134 */ 131 */
135 132 DEFINE_GLOBAL_HIDDEN_LOCATION(NaClSyscallThreadCaptureFault):
136 .word NACL_HALT_WORD 133 .word NACL_HALT_WORD
OLDNEW
« no previous file with comments | « src/tools/tls_edit/tls_edit.c ('k') | src/trusted/service_runtime/arch/mips/nacl_tls.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698