1a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project/* ----------------------------------------------------------------------- 2a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project v8.S - Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. 3a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 4a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project SPARC Foreign Function Interface 5a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 6a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project Permission is hereby granted, free of charge, to any person obtaining 7a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project a copy of this software and associated documentation files (the 8a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ``Software''), to deal in the Software without restriction, including 9a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project without limitation the rights to use, copy, modify, merge, publish, 10a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project distribute, sublicense, and/or sell copies of the Software, and to 11a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project permit persons to whom the Software is furnished to do so, subject to 12a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project the following conditions: 13a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 14a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project The above copyright notice and this permission notice shall be included 15a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project in all copies or substantial portions of the Software. 16a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 17a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, 18a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 24a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project DEALINGS IN THE SOFTWARE. 25a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ----------------------------------------------------------------------- */ 26a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 27a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define LIBFFI_ASM 28a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#include <fficonfig.h> 29a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#include <ffi.h> 30a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 31a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define STACKFRAME 96 /* Minimum stack framesize for SPARC */ 32a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define ARGS (64+4) /* Offset of register area in frame */ 33a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 34a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.text 35a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 8 36a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl ffi_call_v8 37a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl _ffi_call_v8 38a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 39a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectffi_call_v8: 40a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project_ffi_call_v8: 41a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLFB1: 42a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project save %sp, -STACKFRAME, %sp 43a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLCFI0: 44a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 45a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project sub %sp, %i2, %sp ! alloca() space in stack for frame to set up 46a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project add %sp, STACKFRAME, %l0 ! %l0 has start of 47a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! frame to set up 48a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 49a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project mov %l0, %o0 ! call routine to set up frame 50a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call %i0 51a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project mov %i1, %o1 ! (delay) 52a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 53a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%l0+ARGS], %o0 ! call foreign function 54a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%l0+ARGS+4], %o1 55a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%l0+ARGS+8], %o2 56a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%l0+ARGS+12], %o3 57a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%l0+ARGS+16], %o4 58a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%l0+ARGS+20], %o5 59a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call %i5 60a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project mov %l0, %sp ! (delay) switch to frame 61a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project nop ! STRUCT returning functions skip 12 instead of 8 bytes 62a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 63a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! If the return value pointer is NULL, assume no return value. 64a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project tst %i4 65a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project bz done 66a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project nop 67a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 68a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %i3, FFI_TYPE_INT 69a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be,a done 70a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %o0, [%i4] ! (delay) 71a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 72a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %i3, FFI_TYPE_FLOAT 73a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be,a done 74a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %f0, [%i4+0] ! (delay) 75a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 76a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %i3, FFI_TYPE_SINT64 77a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be longlong 78a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 79a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %i3, FFI_TYPE_DOUBLE 80a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project bne done 81a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project nop 82a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %f0, [%i4+0] 83a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %f1, [%i4+4] 84a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 85a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectdone: 86a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ret 87a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project restore 88a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 89a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectlonglong: 90a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %o0, [%i4+0] 91a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %o1, [%i4+4] 92a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ret 93a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project restore 94a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLFE1: 95a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 96a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.ffi_call_v8_end: 97a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .size ffi_call_v8,.ffi_call_v8_end-ffi_call_v8 98a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 99a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 100a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#undef STACKFRAME 101a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define STACKFRAME 104 /* 16*4 register window + 102a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 1*4 struct return + 103a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 6*4 args backing store + 104a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 3*4 locals */ 105a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 106a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project/* ffi_closure_v8(...) 107a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 108a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project Receives the closure argument in %g2. */ 109a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 110a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .text 111a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 8 112a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .globl ffi_closure_v8 113a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 114a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectffi_closure_v8: 115a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef HAVE_AS_REGISTER_PSEUDO_OP 116a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .register %g2, #scratch 117a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 118a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLFB2: 119a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! Reserve frame space for all arguments in case 120a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! we need to align them on a 8-byte boundary. 121a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%g2+FFI_TRAMPOLINE_SIZE], %g1 122a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%g1+4], %g1 123a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project sll %g1, 3, %g1 124a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project add %g1, STACKFRAME, %g1 125a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! %g1 == STACKFRAME + 8*nargs 126a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project neg %g1 127a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project save %sp, %g1, %sp 128a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLCFI1: 129a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 130a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! Store all of the potential argument registers in va_list format. 131a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %i0, [%fp+68+0] 132a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %i1, [%fp+68+4] 133a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %i2, [%fp+68+8] 134a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %i3, [%fp+68+12] 135a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %i4, [%fp+68+16] 136a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project st %i5, [%fp+68+20] 137a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 138a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! Call ffi_closure_sparc_inner to do the bulk of the work. 139a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project mov %g2, %o0 140a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project add %fp, -8, %o1 141a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project add %fp, 64, %o2 142a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call ffi_closure_sparc_inner_v8 143a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project add %fp, -16, %o3 144a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 145a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! Load up the return value in the proper type. 146a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! See ffi_prep_cif_machdep for the list of cases. 147a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %o0, FFI_TYPE_VOID 148a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be done1 149a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 150a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %o0, FFI_TYPE_INT 151a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be integer 152a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 153a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %o0, FFI_TYPE_FLOAT 154a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be,a done1 155a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%fp-8], %f0 156a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 157a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %o0, FFI_TYPE_DOUBLE 158a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be,a done1 159a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ldd [%fp-8], %f0 160a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 161a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE 162a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %o0, FFI_TYPE_LONGDOUBLE 163a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be done2 164a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 165a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 166a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmp %o0, FFI_TYPE_STRUCT 167a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project be done2 168a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 169a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! FFI_TYPE_SINT64 170a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! FFI_TYPE_UINT64 171a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%fp-4], %i1 172a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 173a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectinteger: 174a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ld [%fp-8], %i0 175a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 176a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectdone1: 177a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp %i7+8 178a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project restore 179a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectdone2: 180a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ! Skip 'unimp'. 181a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp %i7+12 182a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project restore 183a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLFE2: 184a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 185a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.ffi_closure_v8_end: 186a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .size ffi_closure_v8,.ffi_closure_v8_end-ffi_closure_v8 187a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 188a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef SPARC64 189a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define WS 8 190a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define nword xword 191a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define uanword uaxword 192a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 193a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define WS 4 194a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define nword long 195a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define uanword uaword 196a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 197a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 198a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef HAVE_RO_EH_FRAME 199a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .section ".eh_frame",#alloc 200a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 201a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .section ".eh_frame",#alloc,#write 202a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 203a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLframe1: 204a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLECIE1-.LLSCIE1 ! Length of Common Information Entry 205a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLSCIE1: 206a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword 0x0 ! CIE Identifier Tag 207a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1 ! CIE Version 208a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .ascii "zR\0" ! CIE Augmentation 209a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1 ! uleb128 0x1; CIE Code Alignment Factor 210a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x80-WS ! sleb128 -WS; CIE Data Alignment Factor 211a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xf ! CIE RA Column 212a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1 ! uleb128 0x1; Augmentation size 213a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef HAVE_AS_SPARC_UA_PCREL 214a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1b ! FDE Encoding (pcrel sdata4) 215a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 216a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x50 ! FDE Encoding (aligned absolute) 217a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 218a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xc ! DW_CFA_def_cfa 219a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xe ! uleb128 0xe 220a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x0 ! uleb128 0x0 221a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align WS 222a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLECIE1: 223a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLSFDE1: 224a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLEFDE1-.LLASFDE1 ! FDE Length 225a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLASFDE1: 226a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLASFDE1-.LLframe1 ! FDE CIE offset 227a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef HAVE_AS_SPARC_UA_PCREL 228a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword %r_disp32(.LLFB1) 229a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLFE1-.LLFB1 ! FDE address range 230a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 231a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align WS 232a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .nword .LLFB1 233a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uanword .LLFE1-.LLFB1 ! FDE address range 234a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 235a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x0 ! uleb128 0x0; Augmentation size 236a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 ! DW_CFA_advance_loc4 237a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLCFI0-.LLFB1 238a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xd ! DW_CFA_def_cfa_register 239a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1e ! uleb128 0x1e 240a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x2d ! DW_CFA_GNU_window_save 241a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x9 ! DW_CFA_register 242a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xf ! uleb128 0xf 243a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1f ! uleb128 0x1f 244a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align WS 245a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLEFDE1: 246a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLSFDE2: 247a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLEFDE2-.LLASFDE2 ! FDE Length 248a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLASFDE2: 249a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLASFDE2-.LLframe1 ! FDE CIE offset 250a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef HAVE_AS_SPARC_UA_PCREL 251a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword %r_disp32(.LLFB2) 252a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLFE2-.LLFB2 ! FDE address range 253a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 254a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align WS 255a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .nword .LLFB2 256a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uanword .LLFE2-.LLFB2 ! FDE address range 257a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 258a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x0 ! uleb128 0x0; Augmentation size 259a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 ! DW_CFA_advance_loc4 260a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .uaword .LLCFI1-.LLFB2 261a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xd ! DW_CFA_def_cfa_register 262a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1e ! uleb128 0x1e 263a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x2d ! DW_CFA_GNU_window_save 264a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x9 ! DW_CFA_register 265a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xf ! uleb128 0xf 266a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1f ! uleb128 0x1f 267a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align WS 268a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LLEFDE2: 269a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 270a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if defined __ELF__ && defined __linux__ 271a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .section .note.GNU-stack,"",@progbits 272a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 273