Home | History | Annotate | Line # | Download | only in powerpc32
elf.m4 revision 1.2
      1  1.1   mrg divert(-1)
      2  1.1   mrg dnl  m4 macros for powerpc32 GNU/Linux assembly.
      3  1.1   mrg 
      4  1.1   mrg dnl  Copyright 2003, 2005, 2006 Free Software Foundation, Inc.
      5  1.1   mrg dnl
      6  1.1   mrg dnl  This file is part of the GNU MP Library.
      7  1.1   mrg dnl
      8  1.1   mrg dnl  The GNU MP Library is free software; you can redistribute it and/or
      9  1.1   mrg dnl  modify it under the terms of the GNU Lesser General Public License as
     10  1.1   mrg dnl  published by the Free Software Foundation; either version 3 of the
     11  1.1   mrg dnl  License, or (at your option) any later version.
     12  1.1   mrg dnl
     13  1.1   mrg dnl  The GNU MP Library is distributed in the hope that it will be useful,
     14  1.1   mrg dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  1.1   mrg dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     16  1.1   mrg dnl  Lesser General Public License for more details.
     17  1.1   mrg dnl
     18  1.1   mrg dnl  You should have received a copy of the GNU Lesser General Public License
     19  1.1   mrg dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
     20  1.1   mrg 
     21  1.1   mrg define(`ASM_START',`')
     22  1.1   mrg 
     23  1.1   mrg dnl  Called: PROLOGUE_cpu(GSYM_PREFIX`'foo)
     24  1.1   mrg dnl          EPILOGUE_cpu(GSYM_PREFIX`'foo)
     25  1.1   mrg dnl
     26  1.1   mrg 
     27  1.1   mrg define(`PROLOGUE_cpu',
     28  1.1   mrg m4_assert_numargs(1)
     29  1.1   mrg 	`
     30  1.1   mrg 	.section	".text"
     31  1.1   mrg 	.align	3
     32  1.1   mrg 	.globl	$1
     33  1.1   mrg 	.type	$1, @function
     34  1.1   mrg $1:')
     35  1.1   mrg 
     36  1.1   mrg define(`EPILOGUE_cpu',
     37  1.1   mrg m4_assert_numargs(1)
     38  1.1   mrg `	.size	$1, .-$1')
     39  1.1   mrg 
     40  1.1   mrg define(`LEA',
     41  1.1   mrg m4_assert_numargs(2)
     42  1.1   mrg `ifdef(`PIC',`
     43  1.1   mrg 	mflr	r0
     44  1.2  matt 	bl	20,31,1f
     45  1.2  matt 1:	mflr	$1
     46  1.1   mrg 	mtlr	r0
     47  1.2  matt 	addis	$1,$1,_GLOBAL_OFFSET_TABLE_-1b@ha
     48  1.2  matt 	addi	$1,$1,_GLOBAL_OFFSET_TABLE_-1b@l
     49  1.1   mrg 	lwz	$1, $2@got($1)
     50  1.1   mrg ',`
     51  1.1   mrg 	lis	$1, $2@ha
     52  1.1   mrg 	la	$1, $2@l($1)
     53  1.1   mrg ')')
     54  1.1   mrg 
     55  1.1   mrg define(`LEAL',
     56  1.1   mrg m4_assert_numargs(2)
     57  1.1   mrg `LEA($1,$2)')
     58  1.1   mrg 
     59  1.1   mrg 
     60  1.1   mrg define(`EXTERN',
     61  1.1   mrg m4_assert_numargs(1)
     62  1.1   mrg `dnl')
     63  1.1   mrg 
     64  1.1   mrg define(`DEF_OBJECT',
     65  1.1   mrg m4_assert_numargs_range(1,2)
     66  1.1   mrg `
     67  1.1   mrg 	.section	.rodata
     68  1.1   mrg 	ALIGN(ifelse($#,1,2,$2))
     69  1.1   mrg 	.type	$1, @object
     70  1.1   mrg $1:
     71  1.1   mrg ')
     72  1.1   mrg 
     73  1.1   mrg define(`END_OBJECT',
     74  1.1   mrg m4_assert_numargs(1)
     75  1.1   mrg `	.size	$1, .-$1')
     76  1.1   mrg 
     77  1.1   mrg define(`ASM_END', `dnl')
     78  1.1   mrg 
     79  1.1   mrg ifdef(`PIC',`
     80  1.1   mrg define(`PIC_SLOW')')
     81  1.1   mrg 
     82  1.1   mrg dnl  64-bit "long long" parameters are put in an even-odd pair, skipping an
     83  1.1   mrg dnl  even register if that was in turn.  I wish somebody could explain why that
     84  1.1   mrg dnl  is a good idea.
     85  1.1   mrg define(`BROKEN_LONGLONG_PARAM')
     86  1.1   mrg 
     87  1.1   mrg divert
     88