1a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project/* -----------------------------------------------------------------------
2a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   darwin.S - Copyright (c) 2000 John Hornkvist
3a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	      Copyright (c) 2004 Free Software Foundation, Inc.
4a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
5a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   PowerPC Assembly glue.
6a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
7a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   Permission is hereby granted, free of charge, to any person obtaining
8a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   a copy of this software and associated documentation files (the
9a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   ``Software''), to deal in the Software without restriction, including
10a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   without limitation the rights to use, copy, modify, merge, publish,
11a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   distribute, sublicense, and/or sell copies of the Software, and to
12a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   permit persons to whom the Software is furnished to do so, subject to
13a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   the following conditions:
14a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
15a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   The above copyright notice and this permission notice shall be included
16a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   in all copies or substantial portions of the Software.
17a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
18a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
19a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
22a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   OTHER DEALINGS IN THE SOFTWARE.
25a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project   ----------------------------------------------------------------------- */
26a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
27a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if defined(__ppc64__)
28a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define MODE_CHOICE(x, y) y
29a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else
30a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define MODE_CHOICE(x, y) x
31a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif
32a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
33a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define g_long  MODE_CHOICE(long, quad)         /* usage is ".g_long" */
34a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
35a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define LOG2_GPR_BYTES  MODE_CHOICE(2,3)        /* log2(GPR_BYTES) */
36a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
37a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define LIBFFI_ASM
38a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#include <fficonfig.h>
39a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#include <ffi.h>
40a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define JUMPTARGET(name) name
41a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define L(x) x
42a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.text
43a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align 2
44a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl _ffi_prep_args
45a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
46a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.text
47a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align 2
48a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl _ffi_call_DARWIN
49a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.text
50a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align 2
51a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project_ffi_call_DARWIN:
52a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLFB0:
53a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr   	r12,r8	/* We only need r12 until the call,
54a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project			   so it doesn't have to be saved.  */
55a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLFB1:
56a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Save the old stack pointer as AP.  */
57a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr	r8,r1
58a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLCFI0:
59a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Allocate the stack space we need.  */
60a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stwux	r1,r1,r4
61a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
62a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Save registers we use.  */
63a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mflr	r9
64a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
65a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r28,-16(r8)
66a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r29,-12(r8)
67a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r30,-8(r8)
68a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r31,-4(r8)
69a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
70a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r9,8(r8)
71a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r2,20(r1)
72a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLCFI1:
73a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
74a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Save arguments over call.  */
75a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr	r31,r5	/* flags,  */
76a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr	r30,r6	/* rvalue,  */
77a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr	r29,r7	/* function address,  */
78a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr	r28,r8	/* our AP.  */
79a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLCFI2:
80a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Call ffi_prep_args.  */
81a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr	r4,r1
82a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project// ANDROID: these changes were necessary in 2.x; not yet tested in 3.x
83a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project//	subi    r1,r1,32 /* Android: adjust stack for parameter / scratch area */
84a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	li	r9,0
85a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
86a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mtctr	r12 /* r12 holds address of _ffi_prep_args.  */
87a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bctrl
88a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project//	addi    r1,r1,32 /* Android: readjust stack (see subi above) */
89a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r2,20(r1)
90a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
91a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Now do the call.
92a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	   Set up cr1 with bits 4-7 of the flags.  */
93a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mtcrf	0x40,r31
94a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Get the address to call into CTR.  */
95a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mtctr	r29
96a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Load all those argument registers.
97a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	   We have set up a nice stack frame, just load it into registers.  */
98a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r3,20+(1*4)(r1)
99a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r4,20+(2*4)(r1)
100a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r5,20+(3*4)(r1)
101a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r6,20+(4*4)(r1)
102a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	nop
103a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r7,20+(5*4)(r1)
104a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r8,20+(6*4)(r1)
105a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r9,20+(7*4)(r1)
106a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz     r10,20+(8*4)(r1)
107a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
108a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectL1:
109a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Load all the FP registers.  */
110a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bf	6,L2	/* No floats to load.  */
111a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f1,-16-(13*8)(r28)
112a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f2,-16-(12*8)(r28)
113a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f3,-16-(11*8)(r28)
114a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f4,-16-(10*8)(r28)
115a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	nop
116a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f5,-16-(9*8)(r28)
117a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f6,-16-(8*8)(r28)
118a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f7,-16-(7*8)(r28)
119a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd	f8,-16-(6*8)(r28)
120a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	nop
121a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd     f9,-16-(5*8)(r28)
122a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd     f10,-16-(4*8)(r28)
123a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd     f11,-16-(3*8)(r28)
124a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd     f12,-16-(2*8)(r28)
125a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	nop
126a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lfd     f13,-16-(1*8)(r28)
127a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
128a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectL2:
129a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mr	r12,r29	/* Put the target address in r12 as specified.  */
130a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mtctr  	r12
131a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	nop
132a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	nop
133a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Make the call.  */
134a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bctrl
135a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
136a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Now, deal with the return value.  */
137a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mtcrf	0x01,r31
138a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
139a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bt	30,L(done_return_value)
140a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bt	29,L(fp_return_value)
141a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r3,0(r30)
142a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bf	28,L(done_return_value)
143a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stw	r4,4(r30)
144a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
145a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Fall through.  */
146a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
147a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectL(done_return_value):
148a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Restore the registers we used and return.  */
149a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz	r9,8(r28)
150a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz	r31,-4(r28)
151a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	mtlr	r9
152a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz	r30,-8(r28)
153a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz	r29,-12(r28)
154a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz	r28,-16(r28)
155a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	lwz	r1,0(r1)
156a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	blr
157a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
158a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectL(fp_return_value):
159a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Do we have long double to store?  */
160a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bf	31,L(fd_return_value)
161a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stfd	f1,0(r30)
162a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stfd	f2,8(r30)
163a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	b	L(done_return_value)
164a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
165a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectL(fd_return_value):
166a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* Do we have double to store?  */
167a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	bf	28,L(float_return_value)
168a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stfd	f1,0(r30)
169a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	b	L(done_return_value)
170a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
171a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectL(float_return_value):
172a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	/* We only have a float to store.  */
173a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	stfs	f1,0(r30)
174a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	b	L(done_return_value)
175a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
176a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLFE1:
177a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project/* END(_ffi_call_DARWIN)  */
178a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
179a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project/* Provide a null definition of _ffi_call_AIX.  */
180a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.text
181a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align 2
182a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl _ffi_call_AIX
183a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.text
184a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align 2
185a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project_ffi_call_AIX:
186a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	blr
187a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project/* END(_ffi_call_AIX)  */
188a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project
189a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.data
190a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms
191a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectEH_frame1:
192a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.set	L$set$0,LECIE1-LSCIE1
193a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.long	L$set$0	; Length of Common Information Entry
194a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLSCIE1:
195a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.long	0x0	; CIE Identifier Tag
196a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x1	; CIE Version
197a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.ascii	"zR\0"	; CIE Augmentation
198a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x1	; uleb128 0x1; CIE Code Alignment Factor
199a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x7c	; sleb128 -4; CIE Data Alignment Factor
200a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x41	; CIE RA Column
201a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x1	; uleb128 0x1; Augmentation size
202a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x90	; FDE Encoding (indirect pcrel)
203a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0xc	; DW_CFA_def_cfa
204a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x1	; uleb128 0x1
205a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x0	; uleb128 0x0
206a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align	LOG2_GPR_BYTES
207a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLECIE1:
208a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl _ffi_call_DARWIN.eh
209a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project_ffi_call_DARWIN.eh:
210a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLSFDE1:
211a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.set	L$set$1,LEFDE1-LASFDE1
212a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.long	L$set$1	; FDE Length
213a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLASFDE1:
214a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.long	LASFDE1-EH_frame1 ; FDE CIE offset
215a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.g_long	LLFB0$non_lazy_ptr-.	; FDE initial location
216a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.set	L$set$3,LFE1-LFB0
217a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.g_long	L$set$3	; FDE address range
218a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte   0x0     ; uleb128 0x0; Augmentation size
219a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x4	; DW_CFA_advance_loc4
220a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.set	L$set$4,LCFI0-LFB1
221a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.long	L$set$4
222a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0xd	; DW_CFA_def_cfa_register
223a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x08	; uleb128 0x08
224a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x4	; DW_CFA_advance_loc4
225a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.set	L$set$5,LCFI1-LCFI0
226a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.long	L$set$5
227a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte   0x11    ; DW_CFA_offset_extended_sf
228a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x41	; uleb128 0x41
229a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte   0x7e    ; sleb128 -2
230a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x9f	; DW_CFA_offset, column 0x1f
231a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x1	; uleb128 0x1
232a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x9e	; DW_CFA_offset, column 0x1e
233a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x2	; uleb128 0x2
234a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x9d	; DW_CFA_offset, column 0x1d
235a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x3	; uleb128 0x3
236a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x9c	; DW_CFA_offset, column 0x1c
237a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x4	; uleb128 0x4
238a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x4	; DW_CFA_advance_loc4
239a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.set	L$set$6,LCFI2-LCFI1
240a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.long	L$set$6
241a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0xd	; DW_CFA_def_cfa_register
242a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.byte	0x1c	; uleb128 0x1c
243a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align LOG2_GPR_BYTES
244a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLEFDE1:
245a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.data
246a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.align LOG2_GPR_BYTES
247a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectLLFB0$non_lazy_ptr:
248a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project	.g_long LFB0
249