272 lines
4.9 KiB
C
272 lines
4.9 KiB
C
/* $NetBSD: asm.h,v 1.2 2002/07/04 16:43:21 thorpej Exp $ */
|
|
|
|
/* $OpenBSD: asm.h,v 1.12 2001/03/29 02:15:57 mickey Exp $ */
|
|
|
|
/*
|
|
* Copyright (c) 1990,1991,1994 The University of Utah and
|
|
* the Computer Systems Laboratory (CSL). All rights reserved.
|
|
*
|
|
* Permission to use, copy, modify and distribute this software is hereby
|
|
* granted provided that (1) source code retains these copyright, permission,
|
|
* and disclaimer notices, and (2) redistributions including binaries
|
|
* reproduce the notices in supporting documentation, and (3) all advertising
|
|
* materials mentioning features or use of this software display the following
|
|
* acknowledgement: ``This product includes software developed by the
|
|
* Computer Systems Laboratory at the University of Utah.''
|
|
*
|
|
* THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
|
|
* IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
|
|
* ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
|
*
|
|
* CSL requests users of this software to return to csl-dist@cs.utah.edu any
|
|
* improvements that they make and grant CSL redistribution rights.
|
|
*
|
|
* Utah $Hdr: asm.h 1.8 94/12/14$
|
|
*/
|
|
|
|
#ifndef _HPPA_ASM_H_
|
|
#define _HPPA_ASM_H_
|
|
|
|
/*
|
|
* hppa assembler definitions
|
|
*/
|
|
|
|
/*
|
|
* Hardware General Registers
|
|
*/
|
|
r0 .reg %r0
|
|
r1 .reg %r1
|
|
r2 .reg %r2
|
|
r3 .reg %r3
|
|
r4 .reg %r4
|
|
r5 .reg %r5
|
|
r6 .reg %r6
|
|
r7 .reg %r7
|
|
r8 .reg %r8
|
|
r9 .reg %r9
|
|
r10 .reg %r10
|
|
r11 .reg %r11
|
|
r12 .reg %r12
|
|
r13 .reg %r13
|
|
r14 .reg %r14
|
|
r15 .reg %r15
|
|
r16 .reg %r16
|
|
r17 .reg %r17
|
|
r18 .reg %r18
|
|
r19 .reg %r19
|
|
r20 .reg %r20
|
|
r21 .reg %r21
|
|
r22 .reg %r22
|
|
r23 .reg %r23
|
|
r24 .reg %r24
|
|
r25 .reg %r25
|
|
r26 .reg %r26
|
|
r27 .reg %r27
|
|
r28 .reg %r28
|
|
r29 .reg %r29
|
|
r30 .reg %r30
|
|
r31 .reg %r31
|
|
|
|
/*
|
|
* Hardware Space Registers
|
|
*/
|
|
sr0 .reg %sr0
|
|
sr1 .reg %sr1
|
|
sr2 .reg %sr2
|
|
sr3 .reg %sr3
|
|
sr4 .reg %sr4
|
|
sr5 .reg %sr5
|
|
sr6 .reg %sr6
|
|
sr7 .reg %sr7
|
|
|
|
/*
|
|
* Hardware Floating Point Registers
|
|
*/
|
|
fr0 .reg %fr0
|
|
fr1 .reg %fr1
|
|
fr2 .reg %fr2
|
|
fr3 .reg %fr3
|
|
fr4 .reg %fr4
|
|
fr5 .reg %fr5
|
|
fr6 .reg %fr6
|
|
fr7 .reg %fr7
|
|
fr8 .reg %fr8
|
|
fr9 .reg %fr9
|
|
fr10 .reg %fr10
|
|
fr11 .reg %fr11
|
|
fr12 .reg %fr12
|
|
fr13 .reg %fr13
|
|
fr14 .reg %fr14
|
|
fr15 .reg %fr15
|
|
fr16 .reg %fr16
|
|
fr17 .reg %fr17
|
|
fr18 .reg %fr18
|
|
fr19 .reg %fr19
|
|
fr20 .reg %fr20
|
|
fr21 .reg %fr21
|
|
fr22 .reg %fr22
|
|
fr23 .reg %fr23
|
|
fr24 .reg %fr24
|
|
fr25 .reg %fr25
|
|
fr26 .reg %fr26
|
|
fr27 .reg %fr27
|
|
fr28 .reg %fr28
|
|
fr29 .reg %fr29
|
|
fr30 .reg %fr30
|
|
fr31 .reg %fr31
|
|
|
|
/*
|
|
* Hardware Control Registers
|
|
*/
|
|
cr0 .reg %cr0
|
|
cr8 .reg %cr8
|
|
cr9 .reg %cr9
|
|
cr10 .reg %cr10
|
|
cr11 .reg %cr11
|
|
cr12 .reg %cr12
|
|
cr13 .reg %cr13
|
|
cr14 .reg %cr14
|
|
cr15 .reg %cr15
|
|
cr16 .reg %cr16
|
|
cr17 .reg %cr17
|
|
cr18 .reg %cr18
|
|
cr19 .reg %cr19
|
|
cr20 .reg %cr20
|
|
cr21 .reg %cr21
|
|
cr22 .reg %cr22
|
|
cr23 .reg %cr23
|
|
cr24 .reg %cr24
|
|
cr25 .reg %cr25
|
|
cr26 .reg %cr26
|
|
cr27 .reg %cr27
|
|
cr28 .reg %cr28
|
|
cr29 .reg %cr29
|
|
cr30 .reg %cr30
|
|
cr31 .reg %cr31
|
|
|
|
rctr .reg %cr0
|
|
pidr1 .reg %cr8
|
|
pidr2 .reg %cr9
|
|
ccr .reg %cr10
|
|
sar .reg %cr11
|
|
pidr3 .reg %cr12
|
|
pidr4 .reg %cr13
|
|
iva .reg %cr14
|
|
eiem .reg %cr15
|
|
itmr .reg %cr16
|
|
pcsq .reg %cr17
|
|
pcoq .reg %cr18
|
|
iir .reg %cr19
|
|
isr .reg %cr20
|
|
ior .reg %cr21
|
|
ipsw .reg %cr22
|
|
eirr .reg %cr23
|
|
hptmask .reg %cr24
|
|
tr0 .reg %cr24
|
|
vtop .reg %cr25
|
|
tr1 .reg %cr25
|
|
tr2 .reg %cr26
|
|
tr3 .reg %cr27
|
|
tr4 .reg %cr28
|
|
tr5 .reg %cr29
|
|
tr6 .reg %cr30
|
|
tr7 .reg %cr31
|
|
|
|
/*
|
|
* Calling Convention
|
|
*/
|
|
rp .reg %r2
|
|
arg3 .reg %r23
|
|
arg2 .reg %r24
|
|
arg1 .reg %r25
|
|
arg0 .reg %r26
|
|
dp .reg %r27
|
|
ret0 .reg %r28
|
|
ret1 .reg %r29
|
|
sl .reg %r29
|
|
sp .reg %r30
|
|
|
|
/*
|
|
* Temporary registers
|
|
*/
|
|
t1 .reg %r22
|
|
t2 .reg %r21
|
|
t3 .reg %r20
|
|
t4 .reg %r19
|
|
|
|
/*
|
|
* Temporary space registers
|
|
*/
|
|
ts1 .reg %sr2
|
|
|
|
/*
|
|
* Space Registers - SW Conventions
|
|
*/
|
|
sret .reg %sr1 ; return value
|
|
sarg .reg %sr1 ; argument
|
|
|
|
/*
|
|
* Floating Point Registers - SW Conventions
|
|
*/
|
|
farg0 .reg %fr5
|
|
farg1 .reg %fr6
|
|
farg2 .reg %fr7
|
|
farg3 .reg %fr8
|
|
fret .reg %fr4
|
|
|
|
/*
|
|
* Temporary floating point registers
|
|
*/
|
|
tf1 .reg %fr11
|
|
tf2 .reg %fr10
|
|
tf3 .reg %fr9
|
|
tf4 .reg %fr8
|
|
|
|
#ifdef __STDC__
|
|
#define __CONCAT(a,b) a ## b
|
|
#else
|
|
#define __CONCAT(a,b) a/**/b
|
|
#endif
|
|
|
|
#ifdef PROF
|
|
#define _PROF_PROLOGUE !\
|
|
stw rp, HPPA_FRAME_CRP(sr0,sp) !\
|
|
ldil L%_mcount,r1 !\
|
|
ble R%_mcount(sr0,r1) !\
|
|
ldo HPPA_FRAME_SIZE(sp),sp !\
|
|
ldw HPPA_FRAME_CRP(sr0,sp),rp
|
|
#else
|
|
#define _PROF_PROLOGUE
|
|
#endif
|
|
|
|
#define LEAF_ENTRY(x) ! .text ! .align 4 !\
|
|
.export x, entry ! .label x ! .proc !\
|
|
.callinfo frame=0,no_calls,save_rp !\
|
|
.entry ! _PROF_PROLOGUE
|
|
|
|
#define ENTRY(x,n) ! .text ! .align 4 !\
|
|
.export x, entry ! .label x ! .proc !\
|
|
.callinfo frame=n,calls, save_rp, save_sp !\
|
|
.entry ! _PROF_PROLOGUE
|
|
|
|
#define ENTRY_NOPROFILE(x,n) ! .text ! .align 4 !\
|
|
.export x, entry ! .label x ! .proc !\
|
|
.callinfo frame=n,calls, save_rp, save_sp !\
|
|
.entry
|
|
|
|
#define ALTENTRY(x) ! .export x, entry ! .label x
|
|
#define EXIT(x) ! .exit ! .procend
|
|
|
|
#define RCSID(x) .text ! \
|
|
.asciz x ! \
|
|
.align 4
|
|
|
|
#define WEAK_ALIAS(alias,sym) \
|
|
.weak alias ! \
|
|
alias = sym
|
|
|
|
/* XXX unimplemented */
|
|
#define WARN_REFERENCES(sym, msg)
|
|
|
|
#endif /* _HPPA_ASM_H_ */
|