| OLD | NEW | 
|    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 #include <stdio.h> |    7 #include <stdio.h> | 
|    8 #include <stdlib.h> |    8 #include <stdlib.h> | 
|    9 #include <string.h> |    9 #include <string.h> | 
|   10  |   10  | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   70  * (nacl_thread_index). |   70  * (nacl_thread_index). | 
|   71  */ |   71  */ | 
|   72 void NaClSignalContextGetCurrentThread(const struct NaClSignalContext *sigCtx, |   72 void NaClSignalContextGetCurrentThread(const struct NaClSignalContext *sigCtx, | 
|   73                                        int *is_untrusted, |   73                                        int *is_untrusted, | 
|   74                                        struct NaClAppThread **result_thread) { |   74                                        struct NaClAppThread **result_thread) { | 
|   75 #if NACL_ARCH(NACL_BUILD_ARCH) == NACL_x86 && NACL_BUILD_SUBARCH == 32 |   75 #if NACL_ARCH(NACL_BUILD_ARCH) == NACL_x86 && NACL_BUILD_SUBARCH == 32 | 
|   76   /* For x86-32, if %cs does not match, it is untrusted code. */ |   76   /* For x86-32, if %cs does not match, it is untrusted code. */ | 
|   77   *is_untrusted = (NaClGetGlobalCs() != sigCtx->cs); |   77   *is_untrusted = (NaClGetGlobalCs() != sigCtx->cs); | 
|   78   *result_thread = nacl_thread[sigCtx->gs >> 3]; |   78   *result_thread = nacl_thread[sigCtx->gs >> 3]; | 
|   79 #elif (NACL_ARCH(NACL_BUILD_ARCH) == NACL_x86 && NACL_BUILD_SUBARCH == 64) || \ |   79 #elif (NACL_ARCH(NACL_BUILD_ARCH) == NACL_x86 && NACL_BUILD_SUBARCH == 64) || \ | 
|   80       NACL_ARCH(NACL_BUILD_ARCH) == NACL_arm |   80       NACL_ARCH(NACL_BUILD_ARCH) == NACL_arm || \ | 
 |   81       NACL_ARCH(NACL_BUILD_ARCH) == NACL_mips | 
|   81   uint32_t current_thread_index = NaClTlsGetIdx(); |   82   uint32_t current_thread_index = NaClTlsGetIdx(); | 
|   82   if (NACL_TLS_INDEX_INVALID == current_thread_index) { |   83   if (NACL_TLS_INDEX_INVALID == current_thread_index) { | 
|   83     *is_untrusted = 0; |   84     *is_untrusted = 0; | 
|   84     *result_thread = NULL; |   85     *result_thread = NULL; | 
|   85   } else { |   86   } else { | 
|   86     struct NaClAppThread *thread = nacl_thread[current_thread_index]; |   87     struct NaClAppThread *thread = nacl_thread[current_thread_index]; | 
|   87     /* |   88     /* | 
|   88      * Get the address of an arbitrary local, stack-allocated variable, |   89      * Get the address of an arbitrary local, stack-allocated variable, | 
|   89      * just for the purpose of doing a sanity check. |   90      * just for the purpose of doing a sanity check. | 
|   90      */ |   91      */ | 
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  259   } |  260   } | 
|  260  |  261  | 
|  261   NaClSignalHandlerInitPlatform(); |  262   NaClSignalHandlerInitPlatform(); | 
|  262   NaClSignalHandlerAdd(NaClSignalHandleUntrusted); |  263   NaClSignalHandlerAdd(NaClSignalHandleUntrusted); | 
|  263 } |  264 } | 
|  264  |  265  | 
|  265 void NaClSignalHandlerFini() { |  266 void NaClSignalHandlerFini() { | 
|  266   /* We try to lock, but since we are shutting down, we ignore failures. */ |  267   /* We try to lock, but since we are shutting down, we ignore failures. */ | 
|  267   NaClSignalHandlerFiniPlatform(); |  268   NaClSignalHandlerFiniPlatform(); | 
|  268 } |  269 } | 
| OLD | NEW |