aboutsummaryrefslogtreecommitdiff
path: root/libffi/src/powerpc
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2001-06-03 14:05:38 +0000
committerAndrew Haley <aph@redhat.com>2001-06-03 14:05:38 +0000
commit492022a765f146d618a320a06e02d134f318e2ec (patch)
treece00b28f5d7bd08247a828f02331d92f4c8ed89d /libffi/src/powerpc
parenta34729b8561818673bfa4dd5669aa232fc462f86 (diff)
2001-06-03 Andrew Haley <aph@redhat.com>
* src/alpha/osf.S: Add unwind info. * src/powerpc/sysv.S: Add unwind info. * src/powerpc/ppc_closure.S: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@42828 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi/src/powerpc')
-rw-r--r--libffi/src/powerpc/ppc_closure.S39
-rw-r--r--libffi/src/powerpc/sysv.S54
2 files changed, 90 insertions, 3 deletions
diff --git a/libffi/src/powerpc/ppc_closure.S b/libffi/src/powerpc/ppc_closure.S
index 311857724cc..a9ea9c7ee52 100644
--- a/libffi/src/powerpc/ppc_closure.S
+++ b/libffi/src/powerpc/ppc_closure.S
@@ -4,9 +4,12 @@
.globl ffi_closure_helper_SYSV
ENTRY(ffi_closure_SYSV)
+.LFB1:
stwu %r1,-144(%r1)
+.LCFI0:
mflr %r0
stw %r31,140(%r1)
+.LCFI1:
stw %r0,148(%r1)
# we want to build up an areas for the parameters passed
@@ -67,6 +70,7 @@ ENTRY(ffi_closure_SYSV)
add %r3,%r3,%r4 # add contents of table to table address
mtctr %r3
bctr # jump to it
+.LFE1:
.align 2
.L60:
.long .L44-.L60 # FFI_TYPE_VOID
@@ -143,6 +147,35 @@ ENTRY(ffi_closure_SYSV)
blr
END(ffi_closure_SYSV)
-
-
-
+ .section ".eh_frame","aw"
+__FRAME_BEGIN__:
+ .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry
+.LSCIE1:
+ .4byte 0x0 # CIE Identifier Tag
+ .byte 0x1 # CIE Version
+ .ascii "\0" # CIE Augmentation
+ .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor
+ .byte 0x7c # sleb128 -4; CIE Data Alignment Factor
+ .byte 0x41 # CIE RA Column
+ .byte 0xc # DW_CFA_def_cfa
+ .byte 0x1 # uleb128 0x1
+ .byte 0x0 # uleb128 0x0
+ .align 2
+.LECIE1:
+.LSFDE1:
+ .4byte .LEFDE1-.LASFDE1 # FDE Length
+.LASFDE1:
+ .4byte .LASFDE1-__FRAME_BEGIN__ # FDE CIE offset
+ .4byte .LFB1 # FDE initial location
+ .4byte .LFE1-.LFB1 # FDE address range
+ .byte 0x4 # DW_CFA_advance_loc4
+ .4byte .LCFI0-.LFB1
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .byte 144,1 # uleb128 144
+ .byte 0x4 # DW_CFA_advance_loc4
+ .4byte .LCFI1-.LCFI0
+ .byte 0x2f # DW_CFA_GNU_negative_offset_extended
+ .byte 0x41 # uleb128 0x41
+ .byte 0x1 # uleb128 0x1
+ .align 2
+.LEFDE1:
diff --git a/libffi/src/powerpc/sysv.S b/libffi/src/powerpc/sysv.S
index 88b037844f3..538ffa83bdb 100644
--- a/libffi/src/powerpc/sysv.S
+++ b/libffi/src/powerpc/sysv.S
@@ -31,24 +31,32 @@
.globl ffi_prep_args
ENTRY(ffi_call_SYSV)
+.LFB1:
/* Save the old stack pointer as AP. */
mr %r8,%r1
+.LCFI0:
/* Allocate the stack space we need. */
stwux %r1,%r1,%r4
/* Save registers we use. */
mflr %r9
stw %r28,-16(%r8)
+.LCFI1:
stw %r29,-12(%r8)
+.LCFI2:
stw %r30, -8(%r8)
+.LCFI3:
stw %r31, -4(%r8)
+.LCFI4:
stw %r9, 4(%r8)
+.LCFI5:
/* Save arguments over call... */
mr %r31,%r5 /* flags, */
mr %r30,%r6 /* rvalue, */
mr %r29,%r7 /* function address, */
mr %r28,%r8 /* our AP. */
+.LCFI6:
/* Call ffi_prep_args. */
mr %r4,%r1
@@ -116,4 +124,50 @@ L(fp_return_value):
L(float_return_value):
stfs %f1,0(%r30)
b L(done_return_value)
+.LFE1:
END(ffi_call_SYSV)
+
+ .section ".eh_frame","aw"
+__FRAME_BEGIN__:
+ .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */
+.LSCIE1:
+ .4byte 0x0 /* CIE Identifier Tag */
+ .byte 0x1 /* CIE Version */
+ .ascii "\0" /* CIE Augmentation */
+ .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */
+ .byte 0x7c /* sleb128 -4; CIE Data Alignment Factor */
+ .byte 0x41 /* CIE RA Column */
+ .byte 0xc /* DW_CFA_def_cfa */
+ .byte 0x1 /* uleb128 0x1 */
+ .byte 0x0 /* uleb128 0x0 */
+ .align 2
+.LECIE1:
+.LSFDE1:
+ .4byte .LEFDE1-.LASFDE1 /* FDE Length */
+.LASFDE1:
+ .4byte .LASFDE1-__FRAME_BEGIN__ /* FDE CIE offset */
+ .4byte .LFB1 /* FDE initial location */
+ .4byte .LFE1-.LFB1 /* FDE address range */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .4byte .LCFI0-.LFB1
+ .byte 0xd /* DW_CFA_def_cfa_register */
+ .byte 0x08 /* uleb128 0x08 */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .4byte .LCFI5-.LCFI0
+ .byte 0x2f /* DW_CFA_GNU_negative_offset_extended */
+ .byte 0x41 /* uleb128 0x41 */
+ .byte 0x1 /* uleb128 0x1 */
+ .byte 0x9f /* DW_CFA_offset, column 0x1f */
+ .byte 0x1 /* uleb128 0x1 */
+ .byte 0x9e /* DW_CFA_offset, column 0x1e */
+ .byte 0x2 /* uleb128 0x2 */
+ .byte 0x9d /* DW_CFA_offset, column 0x1d */
+ .byte 0x3 /* uleb128 0x3 */
+ .byte 0x9c /* DW_CFA_offset, column 0x1c */
+ .byte 0x4 /* uleb128 0x4 */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .4byte .LCFI6-.LCFI5
+ .byte 0xd /* DW_CFA_def_cfa_register */
+ .byte 0x1c /* uleb128 0x1c */
+ .align 2
+.LEFDE1: