| OLD | NEW |
| 1 /* On-demand PLT fixup for shared objects. | 1 /* On-demand PLT fixup for shared objects. |
| 2 Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc. | 2 Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc. |
| 3 This file is part of the GNU C Library. | 3 This file is part of the GNU C Library. |
| 4 | 4 |
| 5 The GNU C Library is free software; you can redistribute it and/or | 5 The GNU C Library is free software; you can redistribute it and/or |
| 6 modify it under the terms of the GNU Lesser General Public | 6 modify it under the terms of the GNU Lesser General Public |
| 7 License as published by the Free Software Foundation; either | 7 License as published by the Free Software Foundation; either |
| 8 version 2.1 of the License, or (at your option) any later version. | 8 version 2.1 of the License, or (at your option) any later version. |
| 9 | 9 |
| 10 The GNU C Library is distributed in the hope that it will be useful, | 10 The GNU C Library is distributed in the hope that it will be useful, |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 } | 96 } |
| 97 | 97 |
| 98 #if defined(__native_client__) && defined(__x86_64__) | 98 #if defined(__native_client__) && defined(__x86_64__) |
| 99 /* We need to save the SSE registers in case something we do | 99 /* We need to save the SSE registers in case something we do |
| 100 here clobbers them. An audit library might do it. Our | 100 here clobbers them. An audit library might do it. Our |
| 101 calls to __nacl_read_tp (deep inside THREAD_GETMEM and the | 101 calls to __nacl_read_tp (deep inside THREAD_GETMEM and the |
| 102 like) might do it. These registers are call-clobbered, but | 102 like) might do it. These registers are call-clobbered, but |
| 103 they are also used for passing floating-point arguments, so | 103 they are also used for passing floating-point arguments, so |
| 104 the need to survive past the PLT fixup work. */ | 104 the need to survive past the PLT fixup work. */ |
| 105 typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16))); | 105 typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16))); |
| 106 La_x86_64_xmm save_xmm[8]; | 106 La_x86_64_xmm save_xmm[8] __attribute__ ((__aligned__ (16))); |
| 107 # define SAVE_XMM(n) \ | 107 # define SAVE_XMM(n) \ |
| 108 asm volatile ("movdqa %%xmm" #n ", %0" : "=m" (save_xmm[n])) | 108 asm volatile ("movdqa %%xmm" #n ", %0" : "=m" (save_xmm[n])) |
| 109 # define RESTORE_XMM(n) \ | 109 # define RESTORE_XMM(n) \ |
| 110 asm volatile ("movdqa %0, %%xmm" #n :: "m" (save_xmm[n])) | 110 asm volatile ("movdqa %0, %%xmm" #n :: "m" (save_xmm[n])) |
| 111 SAVE_XMM (0); | 111 SAVE_XMM (0); |
| 112 SAVE_XMM (1); | 112 SAVE_XMM (1); |
| 113 SAVE_XMM (2); | 113 SAVE_XMM (2); |
| 114 SAVE_XMM (3); | 114 SAVE_XMM (3); |
| 115 SAVE_XMM (4); | 115 SAVE_XMM (4); |
| 116 SAVE_XMM (5); | 116 SAVE_XMM (5); |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 afct->ARCH_LA_PLTEXIT (&sym, reloc_result->boundndx, | 469 afct->ARCH_LA_PLTEXIT (&sym, reloc_result->boundndx, |
| 470 &l->l_audit[cnt].cookie, | 470 &l->l_audit[cnt].cookie, |
| 471 &reloc_result->bound->l_audit[cnt].cookie, | 471 &reloc_result->bound->l_audit[cnt].cookie, |
| 472 inregs, outregs, symname); | 472 inregs, outregs, symname); |
| 473 } | 473 } |
| 474 | 474 |
| 475 afct = afct->next; | 475 afct = afct->next; |
| 476 } | 476 } |
| 477 #endif | 477 #endif |
| 478 } | 478 } |
| OLD | NEW |