/* -----------------------------------------------------------------------
   sysv.S - Copyright (c) 2002, 2003, 2004, 2006, 2008 Kaz Kojima
   
   SuperH Foreign Function Interface 

   Permission is hereby granted, free of charge, to any person obtaining
   a copy of this software and associated documentation files (the
   ``Software''), to deal in the Software without restriction, including
   without limitation the rights to use, copy, modify, merge, publish,
   distribute, sublicense, and/or sell copies of the Software, and to
   permit persons to whom the Software is furnished to do so, subject to
   the following conditions:

   The above copyright notice and this permission notice shall be included
   in all copies or substantial portions of the Software.

   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
	ANY CLAIM, DAMAGES OR
   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
   OTHER DEALINGS IN THE SOFTWARE.
   ----------------------------------------------------------------------- */

#define LIBFFI_ASM	
#include <fficonfig.h>
#include <ffi.h>
#ifdef HAVE_MACHINE_ASM_H
#include <machine/asm.h>
#else
/* XXX these lose for some platforms, I'm sure. */
#define CNAME(x) x
#define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x):
#endif

#if defined(__HITACHI__)
#define STRUCT_VALUE_ADDRESS_WITH_ARG 1
#else
#define STRUCT_VALUE_ADDRESS_WITH_ARG 0
#endif

.text

	# r4:	ffi_prep_args
	# r5:	&ecif
	# r6:	bytes
	# r7:	flags
	# sp+0: rvalue
	# sp+4: fn

	# This assumes we are using gas.
ENTRY(ffi_call_SYSV)
	# Save registers
.LFB1:
	mov.l	r8,@-r15
.LCFI0:
	mov.l	r9,@-r15
.LCFI1:
	mov.l	r10,@-r15
.LCFI2:
	mov.l	r12,@-r15
.LCFI3:
	mov.l	r14,@-r15
.LCFI4:
	sts.l	pr,@-r15
.LCFI5:
	mov	r15,r14
.LCFI6:
#if defined(__SH4__)
	mov	r6,r8
	mov	r7,r9

	sub	r6,r15
	add	#-16,r15
	mov	#~7,r0
	and	r0,r15

	mov	r4,r0
	jsr	@r0
	 mov	r15,r4

	mov	r9,r1
	shlr8	r9
	shlr8	r9
	shlr8	r9

	mov	#FFI_TYPE_STRUCT,r2
	cmp/eq	r2,r9
	bf	1f
#if STRUCT_VALUE_ADDRESS_WITH_ARG
 	mov.l	@r15+,r4
	bra	2f
	 mov	#5,r2
#else
 	mov.l	@r15+,r10
#endif
1:
	mov	#4,r2
2:
	mov	#4,r3

L_pass:
	cmp/pl	r8
	bf	L_call_it

	mov	r1,r0
	and	#3,r0

L_pass_d:
	cmp/eq	#FFI_TYPE_DOUBLE,r0
	bf	L_pass_f

	mov	r3,r0
	and	#1,r0
	tst	r0,r0
	bt	1f
	add	#1,r3
1:
	mov	#12,r0
	cmp/hs	r0,r3
	bt/s	3f
	 shlr2	r1
	bsr	L_pop_d
	 nop
3:
	add	#2,r3
	bra	L_pass
	 add	#-8,r8

L_pop_d:
	mov	r3,r0
	add	r0,r0
	add	r3,r0
	add	#-12,r0
	braf	r0
	 nop
#ifdef __LITTLE_ENDIAN__
	fmov.s	@r15+,fr5
	rts
	 fmov.s	@r15+,fr4
	fmov.s	@r15+,fr7
	rts
	 fmov.s	@r15+,fr6
	fmov.s	@r15+,fr9
	rts
	 fmov.s	@r15+,fr8
	fmov.s	@r15+,fr11
	rts
	 fmov.s	@r15+,fr10
#else
	fmov.s	@r15+,fr4
	rts
	 fmov.s	@r15+,fr5
	fmov.s	@r15+,fr6
	rts
	 fmov.s	@r15+,fr7
	fmov.s	@r15+,fr8
	rts
	 fmov.s	@r15+,fr9
	fmov.s	@r15+,fr10
	rts
	 fmov.s	@r15+,fr11
#endif

L_pass_f:
	cmp/eq	#FFI_TYPE_FLOAT,r0
	bf	L_pass_i

	mov	#12,r0
	cmp/hs	r0,r3
	bt/s	2f
	 shlr2	r1
	bsr	L_pop_f
	 nop
2:
	add	#1,r3
	bra	L_pass
	 add	#-4,r8

L_pop_f:
	mov	r3,r0
	shll2	r0
	add	#-16,r0
	braf	r0
	 nop
#ifdef __LITTLE_ENDIAN__
	rts
	 fmov.s	@r15+,fr5
	rts
	 fmov.s	@r15+,fr4
	rts
	 fmov.s	@r15+,fr7
	rts
	 fmov.s	@r15+,fr6
	rts
	 fmov.s	@r15+,fr9
	rts
	 fmov.s	@r15+,fr8
	rts
	 fmov.s	@r15+,fr11
	rts
	 fmov.s	@r15+,fr10
#else
	rts
	 fmov.s	@r15+,fr4
	rts
	 fmov.s	@r15+,fr5
	rts
	 fmov.s	@r15+,fr6
	rts
	 fmov.s	@r15+,fr7
	rts
	 fmov.s	@r15+,fr8
	rts
	 fmov.s	@r15+,fr9
	rts
	 fmov.s	@r15+,fr10
	rts
	 fmov.s	@r15+,fr11
#endif

L_pass_i:
	cmp/eq	#FFI_TYPE_INT,r0
	bf	L_call_it

	mov	#8,r0
	cmp/hs	r0,r2
	bt/s	2f
	 shlr2	r1
	bsr	L_pop_i
	 nop
2:
	add	#1,r2
	bra	L_pass
	 add	#-4,r8

L_pop_i:
	mov	r2,r0
	shll2	r0
	add	#-16,r0
	braf	r0
	 nop
	rts
	 mov.l	@r15+,r4
	rts
	 mov.l	@r15+,r5
	rts
	 mov.l	@r15+,r6
	rts
	 mov.l	@r15+,r7

L_call_it:
	# call function
#if (! STRUCT_VALUE_ADDRESS_WITH_ARG)
	mov	r10, r2
#endif
	mov.l  @(28,r14),r1
	jsr    @r1
	 nop

L_ret_d:
	mov	#FFI_TYPE_DOUBLE,r2
	cmp/eq	r2,r9
	bf	L_ret_ll

	mov.l	@(24,r14),r1
#ifdef __LITTLE_ENDIAN__
	fmov.s	fr1,@r1
	add	#4,r1
	bra	L_epilogue
	 fmov.s	fr0,@r1
#else
	fmov.s	fr0,@r1
	add	#4,r1
	bra	L_epilogue
	 fmov.s	fr1,@r1
#endif

L_ret_ll:
	mov	#FFI_TYPE_SINT64,r2
	cmp/eq	r2,r9
	bt/s	1f
	 mov	#FFI_TYPE_UINT64,r2
	cmp/eq	r2,r9
	bf	L_ret_f

1:
	mov.l	@(24,r14),r2
	mov.l	r0,@r2
	bra	L_epilogue
	 mov.l	r1,@(4,r2)

L_ret_f:
	mov	#FFI_TYPE_FLOAT,r2
	cmp/eq	r2,r9
	bf	L_ret_i

	mov.l	@(24,r14),r1
	bra	L_epilogue
	 fmov.s	fr0,@r1

L_ret_i:
	mov	#FFI_TYPE_INT,r2
	cmp/eq	r2,r9
	bf	L_epilogue

	mov.l	@(24,r14),r1
	bra	L_epilogue
	 mov.l	r0,@r1

L_epilogue:
	# Remove the space we pushed for the args
	mov   r14,r15

	lds.l  @r15+,pr
	mov.l  @r15+,r14
	mov.l  @r15+,r12
	mov.l  @r15+,r10
	mov.l  @r15+,r9
	rts
	 mov.l  @r15+,r8
#else
	mov	r6,r8
	mov	r7,r9

	sub	r6,r15
	add	#-16,r15
	mov	#~7,r0
	and	r0,r15

	mov	r4,r0
	jsr	@r0
	 mov	r15,r4

	mov	r9,r3
	shlr8	r9
	shlr8	r9
	shlr8	r9

	mov	#FFI_TYPE_STRUCT,r2
	cmp/eq	r2,r9
	bf	1f
#if STRUCT_VALUE_ADDRESS_WITH_ARG
	mov.l	@r15+,r4
	bra	2f
	 mov	#5,r2
#else
	mov.l	@r15+,r10
#endif
1:
	mov	#4,r2
2:

L_pass:
	cmp/pl	r8
	bf	L_call_it

	mov	r3,r0
	and	#3,r0

L_pass_d:
	cmp/eq	#FFI_TYPE_DOUBLE,r0
	bf	L_pass_i

	mov	r15,r0
	and	#7,r0
	tst	r0,r0
	bt	1f
	add	#4,r15
1:
	mov	#8,r0
	cmp/hs	r0,r2
	bt/s	2f
	 shlr2	r3
	bsr	L_pop_d
	 nop
2:
	add	#2,r2
	bra	L_pass
	 add	#-8,r8

L_pop_d:
	mov	r2,r0
	add	r0,r0
	add	r2,r0
	add	#-12,r0
	add	r0,r0
	braf	r0
	 nop
	mov.l	@r15+,r4
	rts
	 mov.l	@r15+,r5
	mov.l	@r15+,r5
	rts
	 mov.l	@r15+,r6
	mov.l	@r15+,r6
	rts
	 mov.l	@r15+,r7
	rts
	 mov.l	@r15+,r7

L_pass_i:
	cmp/eq	#FFI_TYPE_INT,r0
	bf	L_call_it

	mov	#8,r0
	cmp/hs	r0,r2
	bt/s	2f
	 shlr2	r3
	bsr	L_pop_i
	 nop
2:
	add	#1,r2
	bra	L_pass
	 add	#-4,r8

L_pop_i:
	mov	r2,r0
	shll2	r0
	add	#-16,r0
	braf	r0
	 nop
	rts
	 mov.l	@r15+,r4
	rts
	 mov.l	@r15+,r5
	rts
	 mov.l	@r15+,r6
	rts
	 mov.l	@r15+,r7

L_call_it:
	# call function
#if (! STRUCT_VALUE_ADDRESS_WITH_ARG)
	mov	r10, r2
#endif
	mov.l  @(28,r14),r1
	jsr    @r1
	 nop

L_ret_d:
	mov	#FFI_TYPE_DOUBLE,r2
	cmp/eq	r2,r9
	bf	L_ret_ll

	mov.l	@(24,r14),r2
	mov.l	r0,@r2
	bra	L_epilogue
	 mov.l	r1,@(4,r2)

L_ret_ll:
	mov	#FFI_TYPE_SINT64,r2
	cmp/eq	r2,r9
	bt/s	1f
	 mov	#FFI_TYPE_UINT64,r2
	cmp/eq	r2,r9
	bf	L_ret_i

1:
	mov.l	@(24,r14),r2
	mov.l	r0,@r2
	bra	L_epilogue
	 mov.l	r1,@(4,r2)

L_ret_i:
	mov	#FFI_TYPE_FLOAT,r2
	cmp/eq	r2,r9
	bt	1f
	mov	#FFI_TYPE_INT,r2
	cmp/eq	r2,r9
	bf	L_epilogue
1:
	mov.l	@(24,r14),r1
	bra	L_epilogue
	 mov.l	r0,@r1

L_epilogue:
	# Remove the space we pushed for the args
	mov   r14,r15

	lds.l  @r15+,pr
	mov.l  @r15+,r14
	mov.l  @r15+,r12
	mov.l  @r15+,r10
	mov.l  @r15+,r9
	rts
	 mov.l  @r15+,r8
#endif
.LFE1:
.ffi_call_SYSV_end:
        .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)

.globl	ffi_closure_helper_SYSV

ENTRY(ffi_closure_SYSV)
.LFB2:
	mov.l	r7,@-r15
.LCFI7:
	mov.l	r6,@-r15
.LCFI8:
	mov.l	r5,@-r15
.LCFI9:
	mov.l	r4,@-r15
.LCFIA:
	mov.l	r14,@-r15
.LCFIB:
	sts.l	pr,@-r15

	/* Stack layout:	
	   xx bytes (on stack parameters)
	   16 bytes (register parameters)
	    4 bytes (saved frame pointer)
	    4 bytes (saved return address)
	   32 bytes (floating register parameters, SH-4 only)
	    8 bytes (result)
	    4 bytes (pad)
	    4 bytes (5th arg)
	   <- new stack pointer
	*/
.LCFIC:
#if defined(__SH4__)
	add	#-48,r15
#else
	add	#-16,r15
#endif
.LCFID:
	mov	r15,r14
.LCFIE:

#if defined(__SH4__)
	mov	r14,r1
	add	#48,r1
#ifdef __LITTLE_ENDIAN__
	fmov.s	fr10,@-r1
	fmov.s	fr11,@-r1
	fmov.s	fr8,@-r1
	fmov.s	fr9,@-r1
	fmov.s	fr6,@-r1
	fmov.s	fr7,@-r1
	fmov.s	fr4,@-r1
	fmov.s	fr5,@-r1
#else
	fmov.s	fr11,@-r1
	fmov.s	fr10,@-r1
	fmov.s	fr9,@-r1
	fmov.s	fr8,@-r1
	fmov.s	fr7,@-r1
	fmov.s	fr6,@-r1
	fmov.s	fr5,@-r1
	fmov.s	fr4,@-r1
#endif
	mov	r1,r7
	mov	r14,r6
	add	#56,r6
#else
	mov	r14,r6
	add	#24,r6
#endif

	bt/s	10f
	 mov	r2, r5
	mov	r14,r1
	add	#8,r1
	mov	r1,r5
10:

	mov	r14,r1
#if defined(__SH4__)
	add	#72,r1
#else
	add	#40,r1
#endif
	mov.l	r1,@r14

#ifdef PIC
	mov.l	L_got,r1
	mova	L_got,r0
	add	r0,r1
	mov.l	L_helper,r0
	add	r1,r0
#else
	mov.l	L_helper,r0
#endif
	jsr	@r0
	 mov	r3,r4

	shll	r0
	mov	r0,r1
	mova	L_table,r0
	add	r1,r0
	mov.w	@r0,r0
	mov	r14,r2
	braf	r0
	 add	#8,r2
0:
	.align 2
#ifdef PIC
L_got:
	.long	_GLOBAL_OFFSET_TABLE_
L_helper:
	.long	ffi_closure_helper_SYSV@GOTOFF
#else
L_helper:
	.long	ffi_closure_helper_SYSV
#endif
L_table:
	.short L_case_v - 0b	/* FFI_TYPE_VOID */
	.short L_case_i - 0b	/* FFI_TYPE_INT */
#if defined(__SH4__)
	.short L_case_f - 0b	/* FFI_TYPE_FLOAT */
	.short L_case_d - 0b	/* FFI_TYPE_DOUBLE */
	.short L_case_d - 0b	/* FFI_TYPE_LONGDOUBLE */
#else
	.short L_case_i - 0b	/* FFI_TYPE_FLOAT */
	.short L_case_ll - 0b	/* FFI_TYPE_DOUBLE */
	.short L_case_ll - 0b	/* FFI_TYPE_LONGDOUBLE */
#endif
	.short L_case_uq - 0b	/* FFI_TYPE_UINT8 */
	.short L_case_q - 0b	/* FFI_TYPE_SINT8 */
	.short L_case_uh - 0b	/* FFI_TYPE_UINT16 */
	.short L_case_h - 0b	/* FFI_TYPE_SINT16 */
	.short L_case_i - 0b	/* FFI_TYPE_UINT32 */
	.short L_case_i - 0b	/* FFI_TYPE_SINT32 */
	.short L_case_ll - 0b	/* FFI_TYPE_UINT64 */
	.short L_case_ll - 0b	/* FFI_TYPE_SINT64 */
	.short L_case_v - 0b	/* FFI_TYPE_STRUCT */
	.short L_case_i - 0b	/* FFI_TYPE_POINTER */

#if defined(__SH4__)
L_case_d:
#ifdef __LITTLE_ENDIAN__
	fmov.s	@r2+,fr1
	bra	L_case_v
	 fmov.s	@r2,fr0
#else
	fmov.s	@r2+,fr0
	bra	L_case_v
	 fmov.s	@r2,fr1
#endif

L_case_f:
	bra	L_case_v
	 fmov.s	@r2,fr0
#endif
	
L_case_ll:
	mov.l	@r2+,r0
	bra	L_case_v
	 mov.l	@r2,r1
	
L_case_i:
	bra	L_case_v
	 mov.l	@r2,r0
	
L_case_q:
#ifdef __LITTLE_ENDIAN__
#else
	add	#3,r2
#endif
	bra	L_case_v
	 mov.b	@r2,r0

L_case_uq:
#ifdef __LITTLE_ENDIAN__
#else
	add	#3,r2
#endif
	mov.b	@r2,r0
	bra	L_case_v
	 extu.b r0,r0

L_case_h:
#ifdef __LITTLE_ENDIAN__
#else
	add	#2,r2
#endif
	bra	L_case_v
	 mov.w	@r2,r0

L_case_uh:
#ifdef __LITTLE_ENDIAN__
#else
	add	#2,r2
#endif
	mov.w	@r2,r0
	extu.w	r0,r0
	/* fall through */

L_case_v:
#if defined(__SH4__)
	add	#48,r15
#else
	add	#16,r15
#endif
	lds.l	@r15+,pr
	mov.l	@r15+,r14
	rts
	 add	#16,r15
.LFE2:
.ffi_closure_SYSV_end:
        .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)

#if defined __ELF__ && defined __linux__
	.section	.note.GNU-stack,"",@progbits
#endif
	
	.section	".eh_frame","aw",@progbits
__FRAME_BEGIN__:
	.4byte	.LECIE1-.LSCIE1	/* Length of Common Information Entry */
.LSCIE1:
	.4byte	0x0	/* CIE Identifier Tag */
	.byte	0x1	/* CIE Version */
#ifdef PIC
	.ascii "zR\0"	/* CIE Augmentation */
#else
	.byte	0x0	/* CIE Augmentation */
#endif
	.byte	0x1	/* uleb128 0x1; CIE Code Alignment Factor */
	.byte	0x7c	/* sleb128 -4; CIE Data Alignment Factor */
	.byte	0x11	/* CIE RA Column */
#ifdef PIC
	.uleb128 0x1	/* Augmentation size */
	.byte	0x10	/* FDE Encoding (pcrel) */
#endif
	.byte	0xc	/* DW_CFA_def_cfa */
	.byte	0xf	/* uleb128 0xf */
	.byte	0x0	/* uleb128 0x0 */
	.align	2
.LECIE1:
.LSFDE1:
	.4byte	.LEFDE1-.LASFDE1	/* FDE Length */
.LASFDE1:
	.4byte	.LASFDE1-__FRAME_BEGIN__	/* FDE CIE offset */
#ifdef PIC
	.4byte	.LFB1-.	/* FDE initial location */
#else
	.4byte	.LFB1	/* FDE initial location */
#endif
	.4byte	.LFE1-.LFB1	 /* FDE address range */
#ifdef PIC
	.uleb128 0x0	/* Augmentation size */
#endif
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI0-.LFB1
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x4	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI1-.LCFI0
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x8	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI2-.LCFI1
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0xc	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI3-.LCFI2
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x10	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI4-.LCFI3
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x14	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI5-.LCFI4
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x18	/* uleb128 0x4 */
	.byte	0x91	/* DW_CFA_offset, column 0x11 */
	.byte	0x6	/* uleb128 0x6 */
	.byte	0x8e	/* DW_CFA_offset, column 0xe */
	.byte	0x5	/* uleb128 0x5 */
	.byte	0x8c	/* DW_CFA_offset, column 0xc */
	.byte	0x4	/* uleb128 0x4 */
	.byte	0x8a	/* DW_CFA_offset, column 0xa */
	.byte	0x3	/* uleb128 0x3 */
	.byte	0x89	/* DW_CFA_offset, column 0x9 */
	.byte	0x2	/* uleb128 0x2 */
	.byte	0x88	/* DW_CFA_offset, column 0x8 */
	.byte	0x1	/* uleb128 0x1 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI6-.LCFI5
	.byte	0xd	/* DW_CFA_def_cfa_register */
	.byte	0xe	/* uleb128 0xe */
	.align	2
.LEFDE1:

.LSFDE3:
	.4byte	.LEFDE3-.LASFDE3	/* FDE Length */
.LASFDE3:
	.4byte	.LASFDE3-__FRAME_BEGIN__	/* FDE CIE offset */
#ifdef PIC
	.4byte	.LFB2-.	/* FDE initial location */
#else
	.4byte	.LFB2	/* FDE initial location */
#endif
	.4byte	.LFE2-.LFB2	 /* FDE address range */
#ifdef PIC
	.uleb128 0x0	/* Augmentation size */
#endif
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI7-.LFB2
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x4	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI8-.LCFI7
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x8	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFI9-.LCFI8
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0xc	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFIA-.LCFI9
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x10	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFIB-.LCFIA
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x14	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFIC-.LCFIB
	.byte	0xe	/* DW_CFA_def_cfa_offset */
	.byte	0x18	/* uleb128 0x4 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFID-.LCFIC
	.byte	0xe	/* DW_CFA_def_cfa_offset */
#if defined(__SH4__)
	.byte	24+48	/* uleb128 24+48 */
#else
	.byte	24+16	/* uleb128 24+16 */
#endif
	.byte	0x91	/* DW_CFA_offset, column 0x11 */
	.byte	0x6	/* uleb128 0x6 */
	.byte	0x8e	/* DW_CFA_offset, column 0xe */
	.byte	0x5	/* uleb128 0x5 */
	.byte	0x84	/* DW_CFA_offset, column 0x4 */
	.byte	0x4	/* uleb128 0x4 */
	.byte	0x85	/* DW_CFA_offset, column 0x5 */
	.byte	0x3	/* uleb128 0x3 */
	.byte	0x86	/* DW_CFA_offset, column 0x6 */
	.byte	0x2	/* uleb128 0x2 */
	.byte	0x87	/* DW_CFA_offset, column 0x7 */
	.byte	0x1	/* uleb128 0x1 */
	.byte	0x4	/* DW_CFA_advance_loc4 */
	.4byte	.LCFIE-.LCFID
	.byte	0xd	/* DW_CFA_def_cfa_register */
	.byte	0xe	/* uleb128 0xe */
	.align	2
.LEFDE3:
