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

Side by Side Diff: src/trusted/service_runtime/nacl_config.h

Issue 12460003: [MIPS] Leave room for frame header on stack for MIPS arch (Closed) Base URL: http://git.chromium.org/native_client/src/native_client.git@master
Patch Set: Rename NACL_STACK_ARG_SIZE to NACL_STACK_ARGS_SIZE. Created 7 years, 9 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 | « no previous file | src/trusted/service_runtime/nacl_syscall_common.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 /* 7 /*
8 * NaCl Simple/secure ELF loader (NaCl SEL). 8 * NaCl Simple/secure ELF loader (NaCl SEL).
9 * 9 *
10 * NOTE: This header is ALSO included by assembler files and hence 10 * NOTE: This header is ALSO included by assembler files and hence
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 # define NACL_USERRET_FIX (-0x4) 177 # define NACL_USERRET_FIX (-0x4)
178 # define NACL_SYSARGS_FIX (0) 178 # define NACL_SYSARGS_FIX (0)
179 /* 179 /*
180 * System V Application Binary Interface, Intel386 Architcture 180 * System V Application Binary Interface, Intel386 Architcture
181 * Processor Supplement, section 3-10, says stack alignment is 181 * Processor Supplement, section 3-10, says stack alignment is
182 * 4-bytes, but gcc-generated code can require 16-byte alignment 182 * 4-bytes, but gcc-generated code can require 16-byte alignment
183 * (depending on compiler flags in force) for SSE instructions, so we 183 * (depending on compiler flags in force) for SSE instructions, so we
184 * must do so here as well. 184 * must do so here as well.
185 */ 185 */
186 # define NACL_STACK_ALIGN_MASK (0xf) 186 # define NACL_STACK_ALIGN_MASK (0xf)
187 # define NACL_STACK_ARGS_SIZE (0)
187 # define NACL_STACK_GETS_ARG (1) 188 # define NACL_STACK_GETS_ARG (1)
188 # define NACL_STACK_PAD_BELOW_ALIGN (4) 189 # define NACL_STACK_PAD_BELOW_ALIGN (4)
189 # define NACL_STACK_RED_ZONE (0) 190 # define NACL_STACK_RED_ZONE (0)
190 191
191 # elif NACL_BUILD_SUBARCH == 64 192 # elif NACL_BUILD_SUBARCH == 64
192 /* 193 /*
193 * The untrusted stack looks like this on x86-64: 194 * The untrusted stack looks like this on x86-64:
194 * rsp-0x08: 8 byte return address pushed by untrusted code's call 195 * rsp-0x08: 8 byte return address pushed by untrusted code's call
195 * rsp-0x10: 8 byte return address pushed by the trampoline's call 196 * rsp-0x10: 8 byte return address pushed by the trampoline's call
196 * rsp-0x28: 0x18 bytes of syscall arguments saved by NaClSyscallSeg 197 * rsp-0x28: 0x18 bytes of syscall arguments saved by NaClSyscallSeg
197 */ 198 */
198 # define NACL_TRAMPRET_FIX (-0x10) 199 # define NACL_TRAMPRET_FIX (-0x10)
199 # define NACL_USERRET_FIX (-0x8) 200 # define NACL_USERRET_FIX (-0x8)
200 # define NACL_SYSARGS_FIX (-0x28) 201 # define NACL_SYSARGS_FIX (-0x28)
201 /* 202 /*
202 * System V Application Binary Interface, AMD64 Architecture Processor 203 * System V Application Binary Interface, AMD64 Architecture Processor
203 * Supplement, at http://www.x86-64.org/documentation/abi.pdf, section 204 * Supplement, at http://www.x86-64.org/documentation/abi.pdf, section
204 * 3.2.2 discusses stack alignment. 205 * 3.2.2 discusses stack alignment.
205 */ 206 */
206 # define NACL_STACK_ALIGN_MASK (0xf) 207 # define NACL_STACK_ALIGN_MASK (0xf)
208 # define NACL_STACK_ARGS_SIZE (0)
207 # define NACL_STACK_GETS_ARG (0) 209 # define NACL_STACK_GETS_ARG (0)
208 # define NACL_STACK_PAD_BELOW_ALIGN (8) 210 # define NACL_STACK_PAD_BELOW_ALIGN (8)
209 # define NACL_STACK_RED_ZONE (128) 211 # define NACL_STACK_RED_ZONE (128)
210 # else /* NACL_BUILD_SUBARCH */ 212 # else /* NACL_BUILD_SUBARCH */
211 # error Unknown platform! 213 # error Unknown platform!
212 # endif /* NACL_BUILD_SUBARCH */ 214 # endif /* NACL_BUILD_SUBARCH */
213 215
214 #elif NACL_ARCH(NACL_BUILD_ARCH) == NACL_arm 216 #elif NACL_ARCH(NACL_BUILD_ARCH) == NACL_arm
215 217
216 # define NACL_BLOCK_SHIFT (4) 218 # define NACL_BLOCK_SHIFT (4)
(...skipping 15 matching lines...) Expand all
232 # define NACL_SYSARGS_FIX (-0x10) 234 # define NACL_SYSARGS_FIX (-0x10)
233 /* 235 /*
234 * See ARM Procedure Call Standard, ARM IHI 0042D, section 5.2.1.2. 236 * See ARM Procedure Call Standard, ARM IHI 0042D, section 5.2.1.2.
235 * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf 237 * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf
236 * -- the "public" stack alignment is required to be 8 bytes. 238 * -- the "public" stack alignment is required to be 8 bytes.
237 * While ARM vector loads and stores work with misaligned addresses, there can 239 * While ARM vector loads and stores work with misaligned addresses, there can
238 * be performance penalties on some microarchitectures. To improve the 240 * be performance penalties on some microarchitectures. To improve the
239 * performance of vector instructions, we increase this to 16. 241 * performance of vector instructions, we increase this to 16.
240 */ 242 */
241 # define NACL_STACK_ALIGN_MASK (0xf) 243 # define NACL_STACK_ALIGN_MASK (0xf)
244 # define NACL_STACK_ARGS_SIZE (0)
242 # define NACL_STACK_GETS_ARG (0) 245 # define NACL_STACK_GETS_ARG (0)
243 # define NACL_STACK_PAD_BELOW_ALIGN (0) 246 # define NACL_STACK_PAD_BELOW_ALIGN (0)
244 # define NACL_STACK_RED_ZONE (0) 247 # define NACL_STACK_RED_ZONE (0)
245 248
246 /* 249 /*
247 * NOTE: Used by various assembler files, needs to be 250 * NOTE: Used by various assembler files, needs to be
248 * synchronized with NaClThreadContext 251 * synchronized with NaClThreadContext
249 */ 252 */
250 # define NACL_CALLEE_SAVE_LIST {r4, r5, r6, r7, r8, r9, r10, fp, sp} 253 # define NACL_CALLEE_SAVE_LIST {r4, r5, r6, r7, r8, r9, r10, fp, sp}
251 254
(...skipping 11 matching lines...) Expand all
263 * The untrusted stack looks like this on MIPS: 266 * The untrusted stack looks like this on MIPS:
264 * $sp+0x10: 0-8 bytes for 0-2 syscall arguments saved by untrusted code 267 * $sp+0x10: 0-8 bytes for 0-2 syscall arguments saved by untrusted code
265 * $sp+0x00: 16 bytes for 4 syscall arguments saved by NaClSyscallSeg 268 * $sp+0x00: 16 bytes for 4 syscall arguments saved by NaClSyscallSeg
266 * $sp-0x04: 4 byte user return address saved by NaClSyscallSeg 269 * $sp-0x04: 4 byte user return address saved by NaClSyscallSeg
267 * $sp-0x08: 4 byte trampoline address saved by NaClSyscallSeg 270 * $sp-0x08: 4 byte trampoline address saved by NaClSyscallSeg
268 */ 271 */
269 # define NACL_TRAMPRET_FIX (-0x8) 272 # define NACL_TRAMPRET_FIX (-0x8)
270 # define NACL_USERRET_FIX (-0x4) 273 # define NACL_USERRET_FIX (-0x4)
271 # define NACL_SYSARGS_FIX (0) 274 # define NACL_SYSARGS_FIX (0)
272 # define NACL_STACK_ALIGN_MASK (0x7) 275 # define NACL_STACK_ALIGN_MASK (0x7)
276 /*
277 * The MIPS o32 ABI requires callers to reserve 16 bytes above the stack
278 * pointer, which the callee can spill arguments to.
279 */
280 # define NACL_STACK_ARGS_SIZE (0x10)
273 # define NACL_STACK_GETS_ARG (0) 281 # define NACL_STACK_GETS_ARG (0)
274 # define NACL_STACK_PAD_BELOW_ALIGN (0) 282 # define NACL_STACK_PAD_BELOW_ALIGN (0)
275 # define NACL_STACK_RED_ZONE (0) 283 # define NACL_STACK_RED_ZONE (0)
276 /* 16 byte bundles */ 284 /* 16 byte bundles */
277 285
278 #else /* NACL_ARCH(NACL_BUILD_ARCH) */ 286 #else /* NACL_ARCH(NACL_BUILD_ARCH) */
279 287
280 # error Unknown platform! 288 # error Unknown platform!
281 289
282 #endif /* NACL_ARCH(NACL_BUILD_ARCH) */ 290 #endif /* NACL_ARCH(NACL_BUILD_ARCH) */
283 291
284 #ifdef __ASSEMBLER__ 292 #ifdef __ASSEMBLER__
285 # if NACL_WINDOWS 293 # if NACL_WINDOWS
286 # define NACL_RODATA .section .rdata, "dr" 294 # define NACL_RODATA .section .rdata, "dr"
287 # elif NACL_OSX 295 # elif NACL_OSX
288 # define NACL_RODATA .section __TEXT, __const 296 # define NACL_RODATA .section __TEXT, __const
289 # else 297 # else
290 # define NACL_RODATA .section .rodata, "a" 298 # define NACL_RODATA .section .rodata, "a"
291 # endif 299 # endif
292 #endif 300 #endif
293 301
294 #endif /* NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_NACL_CONFIG_H_ */ 302 #endif /* NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_NACL_CONFIG_H_ */
OLDNEW
« no previous file with comments | « no previous file | src/trusted/service_runtime/nacl_syscall_common.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698