| Index: src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c
|
| diff --git a/src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c b/src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c
|
| index 5bd0438d931366f48ca10729a24245232c60cd73..87129dee375e07fbfe3ae831d885b80b466c6587 100644
|
| --- a/src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c
|
| +++ b/src/trusted/service_runtime/arch/arm/nacl_switch_to_app_arm.c
|
| @@ -1,32 +1,7 @@
|
| /*
|
| - * Copyright 2008, Google Inc.
|
| - * All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions are
|
| - * met:
|
| - *
|
| - * * Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * * Redistributions in binary form must reproduce the above
|
| - * copyright notice, this list of conditions and the following disclaimer
|
| - * in the documentation and/or other materials provided with the
|
| - * distribution.
|
| - * * Neither the name of Google Inc. nor the names of its
|
| - * contributors may be used to endorse or promote products derived from
|
| - * this software without specific prior written permission.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| + * Copyright (c) 2011 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.
|
| */
|
|
|
| /*
|
| @@ -47,18 +22,27 @@ NORETURN void NaClStartThreadInApp(struct NaClAppThread *natp,
|
|
|
| natp->sys.stack_ptr = (NaClGetSp() & ~0xf) + 4;
|
|
|
| - /*
|
| - * springboard pops 4 words from stack which are the parameters for
|
| - * syscall. In this case, it is not a syscall so no parameters, but we still
|
| - * need to adjust the stack
|
| - */
|
| - natp->user.stack_ptr -= 16;
|
| nap = natp->nap;
|
| context = &natp->user;
|
| context->spring_addr = NaClSysToUser(nap,
|
| nap->mem_start + nap->springboard_addr);
|
| context->new_eip = new_prog_ctr;
|
| - context->sysret = 0; /* not used to return */
|
| +
|
| + /*
|
| + * At startup this is not the return value, but the first argument.
|
| + * In the initial thread, it gets the pointer to the information
|
| + * block on the stack. Additional threads do not expect anything in
|
| + * particular in the first argument register, so we don't bother to
|
| + * conditionalize this.
|
| + */
|
| + context->sysret = context->stack_ptr;
|
| +
|
| + /*
|
| + * springboard pops 4 words from stack which are the parameters for
|
| + * syscall. In this case, it is not a syscall so no parameters, but we still
|
| + * need to adjust the stack
|
| + */
|
| + context->stack_ptr -= 16;
|
|
|
| NaClSwitch(context);
|
| }
|
|
|