eabi.asm: Define 64-bit versions of FPR save/restore routines.

* config/rs6000/eabi.asm: Define 64-bit versions of FPR
        save/restore routines.
        * ginclude/ppc-asm.h: Define 64-bit FUNC_* macros.

From-SVN: r44862
This commit is contained in:
David Edelsohn 2001-08-13 17:37:17 +00:00 committed by David Edelsohn
parent 3d146acbef
commit 710fdaadee
3 changed files with 132 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2001-08-13 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/eabi.asm: Define 64-bit versions of FPR
save/restore routines.
* ginclude/ppc-asm.h: Define 64-bit FUNC_* macros.
2001-08-13 Andreas Jaeger <aj@suse.de>
* gcc.c (init_spec): Revert last patch by Theodore Papadopoulo,

View File

@ -1,8 +1,9 @@
/*
* special support for eabi
* Special support for eabi and SVR4
*
* Copyright (C) 1995, 1996, 1998, 2000 Free Software Foundation, Inc.
* Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc.
* Written By Michael Meissner
* 64-bit support written by David Edelsohn
*
* This file is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@ -40,6 +41,8 @@
.section ".text"
#include "ppc-asm.h"
#ifndef __powerpc64__
.section ".got2","aw"
.align 2
.LCTOC1 = . /* +32768 */
@ -554,3 +557,106 @@ FUNC_END(_restgpr_17_x)
FUNC_END(_restgpr_16_x)
FUNC_END(_restgpr_15_x)
FUNC_END(_restgpr_14_x)
#else /* __powerpc64__ */
.section ".text"
.align 2
/* Routines for saving floating point registers, called by the compiler. */
.fsav:
FUNC_START(_savef14) stfd 14,-144(1) /* save fp registers */
FUNC_START(_savef15) stfd 15,-136(1)
FUNC_START(_savef16) stfd 16,-128(1)
FUNC_START(_savef17) stfd 17,-120(1)
FUNC_START(_savef18) stfd 18,-112(1)
FUNC_START(_savef19) stfd 19,-104(1)
FUNC_START(_savef20) stfd 20,-96(1)
FUNC_START(_savef21) stfd 21,-88(1)
FUNC_START(_savef22) stfd 22,-80(1)
FUNC_START(_savef23) stfd 23,-72(1)
FUNC_START(_savef24) stfd 24,-64(1)
FUNC_START(_savef25) stfd 25,-56(1)
FUNC_START(_savef26) stfd 26,-48(1)
FUNC_START(_savef27) stfd 27,-40(1)
FUNC_START(_savef28) stfd 28,-32(1)
FUNC_START(_savef29) stfd 29,-24(1)
FUNC_START(_savef30) stfd 30,-16(1)
FUNC_START(_savef31) stfd 31,-8(1)
blr
.LTfsav:
.long 0
.byte 0,12,0,0,0,0,0,0
.long 0
.long .LTfsav-.fsav
.short 4
.ascii "fsav"
FUNC_END(_savef31)
FUNC_END(_savef30)
FUNC_END(_savef29)
FUNC_END(_savef28)
FUNC_END(_savef27)
FUNC_END(_savef26)
FUNC_END(_savef25)
FUNC_END(_savef24)
FUNC_END(_savef23)
FUNC_END(_savef22)
FUNC_END(_savef21)
FUNC_END(_savef20)
FUNC_END(_savef19)
FUNC_END(_savef18)
FUNC_END(_savef17)
FUNC_END(_savef16)
FUNC_END(_savef15)
FUNC_END(_savef14)
/* Routines for restoring floating point registers, called by the compiler. */
.fres:
FUNC_START(_restf14) lfd 14,-144(1) /* restore fp registers */
FUNC_START(_restf15) lfd 15,-136(1)
FUNC_START(_restf16) lfd 16,-128(1)
FUNC_START(_restf17) lfd 17,-120(1)
FUNC_START(_restf18) lfd 18,-112(1)
FUNC_START(_restf19) lfd 19,-104(1)
FUNC_START(_restf20) lfd 20,-96(1)
FUNC_START(_restf21) lfd 21,-88(1)
FUNC_START(_restf22) lfd 22,-80(1)
FUNC_START(_restf23) lfd 23,-72(1)
FUNC_START(_restf24) lfd 24,-64(1)
FUNC_START(_restf25) lfd 25,-56(1)
FUNC_START(_restf26) lfd 26,-48(1)
FUNC_START(_restf27) lfd 27,-40(1)
FUNC_START(_restf28) lfd 28,-32(1)
FUNC_START(_restf29) lfd 29,-24(1)
FUNC_START(_restf30) lfd 30,-16(1)
FUNC_START(_restf31) lfd 31,-8(1)
blr
.LTfres:
.long 0
.byte 0,12,0,0,0,0,0,0
.long 0
.long .LTfres-.fres
.short 4
.ascii "fres"
FUNC_END(_restf31)
FUNC_END(_restf30)
FUNC_END(_restf29)
FUNC_END(_restf28)
FUNC_END(_restf27)
FUNC_END(_restf26)
FUNC_END(_restf25)
FUNC_END(_restf24)
FUNC_END(_restf23)
FUNC_END(_restf22)
FUNC_END(_restf21)
FUNC_END(_restf20)
FUNC_END(_restf19)
FUNC_END(_restf18)
FUNC_END(_restf17)
FUNC_END(_restf16)
FUNC_END(_restf15)
FUNC_END(_restf14)
#endif

View File

@ -156,6 +156,24 @@ GLUE(..,name):
GLUE(.L,name): \
.size GLUE(..,name),GLUE(.L,name)-GLUE(..,name)
#elif defined (__powerpc64__)
#define FUNC_NAME(name) GLUE(.,name)
#define FUNC_START(name) \
.section ".opd","aw"; \
name: \
.quad GLUE(.,name); \
.quad .TOC.@tocbase; \
.quad 0; \
.previous; \
.type GLUE(.,name),@function; \
.globl name; \
.globl GLUE(.,name); \
GLUE(.,name):
#define FUNC_END(name) \
GLUE(.L,name): \
.size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
#else
#define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name)
#define FUNC_START(name) \