]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libffi/src/powerpc/aix.S
Imported gcc-4.4.3
[msp430-gcc.git] / libffi / src / powerpc / aix.S
diff --git a/libffi/src/powerpc/aix.S b/libffi/src/powerpc/aix.S
deleted file mode 100644 (file)
index 427733f..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/* -----------------------------------------------------------------------
-   aix.S - Copyright (c) 2002 Free Software Foundation, Inc.
-   based on darwin.S by John Hornkvist
-   
-   PowerPC Assembly glue.
-
-   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 AUTHOR 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.
-   ----------------------------------------------------------------------- */
-
-        .set r0,0
-        .set r1,1
-        .set r2,2
-        .set r3,3
-        .set r4,4
-        .set r5,5
-        .set r6,6
-        .set r7,7
-        .set r8,8
-        .set r9,9
-        .set r10,10
-        .set r11,11
-        .set r12,12
-        .set r13,13
-        .set r14,14
-        .set r15,15
-        .set r16,16
-        .set r17,17
-        .set r18,18
-        .set r19,19
-        .set r20,20
-        .set r21,21
-        .set r22,22
-        .set r23,23
-        .set r24,24
-        .set r25,25
-        .set r26,26
-        .set r27,27
-        .set r28,28
-        .set r29,29
-        .set r30,30
-        .set r31,31
-        .set f0,0
-        .set f1,1
-        .set f2,2
-        .set f3,3
-        .set f4,4
-        .set f5,5
-        .set f6,6
-        .set f7,7
-        .set f8,8
-        .set f9,9
-        .set f10,10
-        .set f11,11
-        .set f12,12
-        .set f13,13
-        .set f14,14
-        .set f15,15
-        .set f16,16
-        .set f17,17
-        .set f18,18
-        .set f19,19
-        .set f20,20
-        .set f21,21
-
-#define LIBFFI_ASM     
-#include <ffi.h>
-#define JUMPTARGET(name) name
-#define L(x) x
-       .file "aix.S"
-       .toc
-       .csect .text[PR]
-       .align 2
-.globl ffi_prep_args
-
-.csect .text[PR]
-       .align 2
-       .globl ffi_call_AIX
-       .globl .ffi_call_AIX
-.csect ffi_call_AIX[DS]
-ffi_call_AIX:
-       .long .ffi_call_AIX, TOC[tc0], 0
-       .csect .text[PR]
-.ffi_call_AIX:
-       mr      r12,r8 // We only need r12 until the call, so it doesn't have to be saved...
-       /* Save the old stack pointer as AP.  */
-       mr      r8,r1
-
-       /* Allocate the stack space we need.  */
-       stwux   r1,r1,r4        
-
-       /* Save registers we use.  */
-       mflr    r9
-
-       stw     r28,-16(r8)
-       stw     r29,-12(r8)
-       stw     r30, -8(r8)
-       stw     r31, -4(r8)
-
-       stw     r9,  8(r8)
-       stw     r2, 20(r1)
-
-       /* Save arguments over call...  */
-       mr      r31,r5  /* flags, */
-       mr      r30,r6  /* rvalue, */
-       mr      r29,r7  /* function address, */
-       mr      r28,r8  /* our AP. */
-               
-       /* Call ffi_prep_args.  */
-       mr      r4,r1
-       li      r9,0
-
-       lwz     r2,4(r12)
-       lwz     r12,0(r12)
-       mtctr   r12 // r12 holds address of _ffi_prep_args
-       bctrl 
-       lwz     r2,20(r1)
-
-       /* Now do the call.  */
-       lwz     r12,0(r29)
-       /* Set up cr1 with bits 4-7 of the flags.  */
-       mtcrf   0x40,r31
-       stw     r2,20(r1)
-       mtctr   r12
-       lwz     r2,4(r29)
-       /* Load all those argument registers.  */
-        // We have set up a nice stack frame, just load it into registers.
-        lwz     r3, 20+(1*4)(r1)
-        lwz     r4, 20+(2*4)(r1)
-        lwz     r5, 20+(3*4)(r1)
-        lwz     r6, 20+(4*4)(r1)
-        nop
-       lwz     r7, 20+(5*4)(r1)
-        lwz     r8, 20+(6*4)(r1)
-        lwz     r9, 20+(7*4)(r1)
-        lwz     r10,20+(8*4)(r1)
-
-L1:
-       /* Load all the FP registers.  */
-       bf      6,L2 // 2f + 0x18
-       lfd     f1,-16-(13*8)(r28)
-       lfd     f2,-16-(12*8)(r28)
-       lfd     f3,-16-(11*8)(r28)
-       lfd     f4,-16-(10*8)(r28)
-       nop
-       lfd     f5,-16-(9*8)(r28)
-       lfd     f6,-16-(8*8)(r28)
-       lfd     f7,-16-(7*8)(r28)
-       lfd     f8,-16-(6*8)(r28)
-       nop
-       lfd     f9,-16-(5*8)(r28)
-        lfd     f10,-16-(4*8)(r28)
-       lfd     f11,-16-(3*8)(r28)
-       lfd     f12,-16-(2*8)(r28)
-       nop
-       lfd     f13,-16-(1*8)(r28)
-
-L2:    
-       /* Make the call.  */
-       bctrl
-       lwz r2,20(r1)
-        
-       /* Now, deal with the return value.  */
-       mtcrf   0x01,r31
-
-       bt      30,L(done_return_value)
-       bt      29,L(fp_return_value)
-       stw     r3,0(r30)
-       bf      28,L(done_return_value)
-       stw     r4,4(r30)
-
-       /* Fall through...  */
-
-L(done_return_value):
-       /* Restore the registers we used and return.  */
-       lwz     r9,   8(r28)
-       lwz     r31,  -4(r28)
-       mtlr    r9
-       lwz     r30, -8(r28)
-       lwz     r29,-12(r28)
-       lwz     r28,-16(r28)
-       lwz     r1,0(r1)
-       blr
-
-L(fp_return_value):
-       bf      28,L(float_return_value)
-       stfd    f1,0(r30)
-       b       L(done_return_value)
-L(float_return_value):
-       stfs    f1,0(r30)
-       b       L(done_return_value)
-       .long 0
-       .byte 0,0,0,1,128,4,0,0
-//END(ffi_call_AIX)
-
-.csect .text[PR]
-       .align 2
-       .globl ffi_call_DARWIN
-       .globl .ffi_call_DARWIN
-.csect ffi_call_DARWIN[DS]
-ffi_call_DARWIN:
-       .long .ffi_call_DARWIN, TOC[tc0], 0
-       .csect .text[PR]
-.ffi_call_DARWIN:
-       blr
-       .long 0
-       .byte 0,0,0,0,0,0,0,0
-//END(ffi_call_DARWIN)