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

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

Issue 10919162: [MIPS] Implementation of sel_ldr for MIPS architecture. (Closed) Base URL: http://src.chromium.org/native_client/trunk/src/native_client/
Patch Set: Second update per Mark's comments. Created 8 years, 3 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
OLDNEW
(Empty)
1 /*
2 * Copyright 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can
4 * be found in the LICENSE file.
5 */
6
7 #include "native_client/src/trusted/service_runtime/nacl_config.h"
8
9 .text
10
11 /*
12 * Assembly code template.
13 * This is linked into the service runtime but is unused as code -- it is used
14 * as data to be patched into a NaCl app's address space.
15 *
16 * Trampoline to transfer control from native client module to
17 * sel_ldr's NaClSyscallSeg residing in the service runtime portion of address
18 * space. Trampolines are patched into nacl module's address space in the
19 * trampoline region. They are patched by NaClLoadTrampoline() code (sel_ldr.c).
20 * Each trampoline code segment corresponds to a system call, so the trampoline
21 * region is full of identical trampoline code segments. Service runtime
22 * distinguish which system call is requested using the address of an executed
23 * trampoline (it is saved on stack in NaClSyscallSeg()).
24 *
25 * The trampoline code should push first 4 parameters of the system call to
26 * the stack, and on top of that it should push the return address. On Mips the
27 * trampoline is too small for all this, so the only thing that trampoline does
28 * is call the function NaClSyscallSeg where the push is actually done.
29 */
30
31 DEFINE_GLOBAL_HIDDEN_IDENTIFIER(NaCl_trampoline_seg_code):
32
33 .set noreorder
34
35 /* We don't actually load $t9 with zero, but we patch it with real address
Mark Seaborn 2012/09/18 03:24:34 Nit: please use the NaCl comment style of /* * ..
petarj 2012/09/19 17:27:51 Done.
36 * of NaClSyscallSeg during placement of trampoline code. */
37
38 lui $t9, 0
39 ori $t9, $t9, 0
40 jalr $t5, $t9
41 nop
42
43 jr $0 /* NACL_HALT - at the start of the second block of the trampoline */
44 .set reorder
45
46 DEFINE_GLOBAL_HIDDEN_IDENTIFIER(NaCl_trampoline_seg_end):
47
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698