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

Side by Side Diff: src/nonsfi/linux/linux_pthread_private.c

Issue 722423003: Fix stack alignment of child threads on ARM. (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: fix comment Created 6 years 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 | « SConstruct ('k') | no next file » | 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 2014 The Native Client Authors. All rights reserved. 2 * Copyright 2014 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 <errno.h> 7 #include <errno.h>
8 8
9 #include "native_client/src/nonsfi/linux/linux_syscall_defines.h" 9 #include "native_client/src/nonsfi/linux/linux_syscall_defines.h"
10 #include "native_client/src/nonsfi/linux/linux_syscall_structs.h" 10 #include "native_client/src/nonsfi/linux/linux_syscall_structs.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 __asm__ __volatile__("svc #0\n" 88 __asm__ __volatile__("svc #0\n"
89 /* 89 /*
90 * If the return value of clone is non-zero, we are 90 * If the return value of clone is non-zero, we are
91 * in the parent thread of clone. 91 * in the parent thread of clone.
92 */ 92 */
93 "cmp r0, #0\n" 93 "cmp r0, #0\n"
94 "bne 0f\n" 94 "bne 0f\n"
95 /* 95 /*
96 * In child thread. Clear the frame pointer to 96 * In child thread. Clear the frame pointer to
97 * prevent debuggers from unwinding beyond this, 97 * prevent debuggers from unwinding beyond this,
98 * pop the stack to get start_func and call it. 98 * load start_func from the stack and call it.
99 */ 99 */
100 "mov fp, #0\n" 100 "mov fp, #0\n"
101 "pop {r0}\n" 101 "ldr r0, [sp]\n"
102 "blx r0\n" 102 "blx r0\n"
103 /* start_func never finishes. */ 103 /* start_func never finishes. */
104 "bkpt #0\n" 104 "bkpt #0\n"
105 "0:\n" 105 "0:\n"
106 : "=r"(result) 106 : "=r"(result)
107 : "r"(sysno), 107 : "r"(sysno),
108 "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5) 108 "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)
109 : "memory"); 109 : "memory");
110 #else 110 #else
111 # error Unsupported architecture 111 # error Unsupported architecture
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 } 150 }
151 151
152 void __nc_initialize_interfaces(void) { 152 void __nc_initialize_interfaces(void) {
153 const struct nacl_irt_thread init = { 153 const struct nacl_irt_thread init = {
154 nacl_irt_thread_create, 154 nacl_irt_thread_create,
155 nacl_irt_thread_exit, 155 nacl_irt_thread_exit,
156 nacl_irt_thread_nice, 156 nacl_irt_thread_nice,
157 }; 157 };
158 __libnacl_irt_thread = init; 158 __libnacl_irt_thread = init;
159 } 159 }
OLDNEW
« no previous file with comments | « SConstruct ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698