| Index: src/trusted/service_runtime/arch/mips/nacl_switch_to_app_mips.c
 | 
| diff --git a/src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c b/src/trusted/service_runtime/arch/mips/nacl_switch_to_app_mips.c
 | 
| similarity index 66%
 | 
| copy from src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c
 | 
| copy to src/trusted/service_runtime/arch/mips/nacl_switch_to_app_mips.c
 | 
| index fc7c1a85ed6a81f15a71c1f29357d679c0234899..883b2090561da5c9bbd21e07a1510f6d6fc56495 100644
 | 
| --- a/src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c
 | 
| +++ b/src/trusted/service_runtime/arch/mips/nacl_switch_to_app_mips.c
 | 
| @@ -1,25 +1,24 @@
 | 
|  /*
 | 
| - * Copyright (c) 2012 The Native Client Authors. All rights reserved.
 | 
| - * Use of this source code is governed by a BSD-style license that can be
 | 
| - * found in the LICENSE file.
 | 
| - */
 | 
| +* Copyright (c) 2012 The Native Client Authors. All rights reserved.
 | 
| +* Use of this source code is governed by a BSD-style license that can be
 | 
| +* found in the LICENSE file.
 | 
| +*/
 | 
|  
 | 
|  /*
 | 
|   * NaCl Service Runtime, C-level context switch code.
 | 
|   */
 | 
|  
 | 
|  #include "native_client/src/shared/platform/nacl_check.h"
 | 
| -#include "native_client/src/trusted/service_runtime/sel_ldr.h"
 | 
| -#include "native_client/src/trusted/service_runtime/arch/arm/sel_rt.h"
 | 
| +#include "native_client/src/trusted/service_runtime/arch/mips/sel_rt.h"
 | 
|  #include "native_client/src/trusted/service_runtime/nacl_app_thread.h"
 | 
|  #include "native_client/src/trusted/service_runtime/nacl_globals.h"
 | 
|  #include "native_client/src/trusted/service_runtime/nacl_switch_to_app.h"
 | 
| +#include "native_client/src/trusted/service_runtime/sel_ldr.h"
 | 
|  
 | 
|  void NaClInitSwitchToApp(struct NaClApp *nap) {
 | 
| -  /*
 | 
| -   * We don't need anything here.  We might need it in future if e.g.
 | 
| -   * we start letting untrusted code use NEON extensions.
 | 
| -   */
 | 
| + /*
 | 
| +  * We don't need anything here.
 | 
| +  */
 | 
|    UNREFERENCED_PARAMETER(nap);
 | 
|  }
 | 
|  
 | 
| @@ -28,7 +27,7 @@ NORETURN void NaClStartThreadInApp(struct NaClAppThread *natp,
 | 
|    struct NaClApp  *nap;
 | 
|    struct NaClThreadContext  *context;
 | 
|  
 | 
| -  natp->user.trusted_stack_ptr = NaClGetStackPtr() & ~0xf;
 | 
| +  natp->user.trusted_stack_ptr = (NaClGetStackPtr() & ~0xf) + 4;
 | 
|  
 | 
|    nap = natp->nap;
 | 
|    context = &natp->user;
 | 
| @@ -43,6 +42,20 @@ NORETURN void NaClStartThreadInApp(struct NaClAppThread *natp,
 | 
|     */
 | 
|    context->sysret = context->stack_ptr;
 | 
|  
 | 
| +  /*
 | 
| +   * Define load/store and jump masks before switching to app
 | 
| +   */
 | 
| +  context->t6 = NACL_CONTROL_FLOW_MASK;
 | 
| +  context->t7 = NACL_DATA_FLOW_MASK;
 | 
| +
 | 
| +  /*
 | 
| +   * Just to be sure that app does not spoil gp
 | 
| +   */
 | 
| +  context->global_ptr = NaClGetGlobalPtr();
 | 
| +
 | 
| +  /*
 | 
| +   * context stored in $a0
 | 
| +   */
 | 
|    NaClSwitch(context);
 | 
|  }
 | 
|  
 | 
| 
 |