version 1.1, 2000/09/09 14:12:22 |
version 1.1.1.2, 2003/08/25 16:06:18 |
|
|
divert(-1) |
divert(-1) |
|
|
|
dnl m4 macros for alpha assembler (everywhere except unicos). |
|
|
dnl Copyright (C) 2000 Free Software Foundation, Inc. |
|
dnl |
dnl Copyright 2000, 2002 Free Software Foundation, Inc. |
|
dnl |
dnl This file is part of the GNU MP Library. |
dnl This file is part of the GNU MP Library. |
dnl |
dnl |
dnl The GNU MP Library is free software; you can redistribute it and/or |
dnl The GNU MP Library is free software; you can redistribute it and/or |
Line 21 dnl not, write to the Free Software Foundation, Inc., |
|
Line 23 dnl not, write to the Free Software Foundation, Inc., |
|
dnl Suite 330, Boston, MA 02111-1307, USA. |
dnl Suite 330, Boston, MA 02111-1307, USA. |
|
|
|
|
|
dnl Usage: ASM_START() |
define(`ASM_START', |
define(`ASM_START', |
` |
m4_assert_numargs(0) |
.set noreorder |
` .set noreorder |
.set noat') |
.set noat') |
|
|
define(`X',`0x$1') |
dnl Usage: X(value) |
|
define(`X', |
|
m4_assert_numargs(1) |
|
`0x$1') |
|
|
|
dnl Usage: FLOAT64(label,value) |
define(`FLOAT64', |
define(`FLOAT64', |
` |
m4_assert_numargs(2) |
.align 3 |
` .align 3 |
$1: .t_floating $2') |
$1: .t_floating $2') |
|
|
define(`PROLOGUE', |
|
` |
dnl Called: PROLOGUE_cpu(GSYM_PREFIX`'foo[,gp|noalign]) |
|
dnl EPILOGUE_cpu(GSYM_PREFIX`'foo) |
|
|
|
define(`PROLOGUE_cpu', |
|
m4_assert_numargs_range(1,2) |
|
`ifelse(`$2',gp,, |
|
`ifelse(`$2',noalign,, |
|
`ifelse(`$2',,,`m4_error(`Unrecognised PROLOGUE parameter |
|
')')')')dnl |
.text |
.text |
.align 3 |
ifelse(`$2',noalign,,` ALIGN(8)') |
.globl $1 |
.globl $1 |
.ent $1 |
.ent $1 |
$1: |
$1: |
|
ifelse(`$2',gp,` ldgp r29,0(r27)') |
.frame r30,0,r26 |
.frame r30,0,r26 |
.prologue 0') |
.prologue ifelse(`$2',gp,1,0)') |
|
|
define(`PROLOGUE_GP', |
define(`EPILOGUE_cpu', |
` |
m4_assert_numargs(1) |
.text |
` .end $1') |
.align 3 |
|
.globl $1 |
|
.ent $1 |
|
$1: |
|
ldgp r29,0(r27) |
|
.frame r30,0,r26 |
|
.prologue 1') |
|
|
|
define(`EPILOGUE', |
|
` |
|
.end $1') |
|
|
|
dnl Map register names r0, r1, etc, to `$0', `$1', etc. |
dnl Usage: EXTERN(variable_name) |
dnl This is needed on all systems but Unicos |
define(`EXTERN', |
forloop(i,0,31, |
m4_assert_numargs(1) |
`define(`r'i,``$''i)' |
|
) |
) |
forloop(i,0,31, |
|
`define(`f'i,``$f''i)' |
|
) |
|
|
|
|
dnl Usage: r0 ... r31 |
|
dnl f0 ... f31 |
|
dnl |
|
dnl Map register names r0 to $0, and f0 to $f0, etc. |
|
dnl This is needed on all systems but Unicos |
|
dnl |
|
dnl defreg() is used to protect the $ in $0 (otherwise it would represent a |
|
dnl macro argument). Double quoting is used to protect the f0 in $f0 |
|
dnl (otherwise it would be an infinite recursion). |
|
|
|
forloop(i,0,31,`defreg(`r'i,$i)') |
|
forloop(i,0,31,`deflit(`f'i,``$f''i)') |
|
|
|
|
|
dnl Usage: DATASTART(name) |
|
dnl DATAEND() |
|
|
define(`DATASTART', |
define(`DATASTART', |
`dnl |
m4_assert_numargs(1) |
DATA |
` DATA |
$1:') |
$1:') |
define(`DATAEND',`dnl') |
define(`DATAEND', |
|
m4_assert_numargs(0) |
|
) |
|
|
define(`ASM_END',`dnl') |
dnl Load a symbolic address into a register |
|
define(`LEA', |
|
m4_assert_numargs(2) |
|
`lda $1, $2') |
|
|
|
dnl Need some stuff for extwl just for bigend systems. Define to empty. |
|
define(`bigend', |
|
m4_assert_numargs(1) |
|
`') |
|
|
|
dnl Usage: ASM_END() |
|
define(`ASM_END', |
|
m4_assert_numargs(0) |
|
) |
|
|
divert |
divert |