asm.h revision 1.15
1/*	$NetBSD: asm.h,v 1.15 2002/10/02 00:23:29 thorpej Exp $ */
2/*
3 * Copyright (c) 1982, 1993
4 *	The Regents of the University of California.  All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 *    must display the following acknowledgement:
16 *	This product includes software developed by the University of
17 *	California, Berkeley and its contributors.
18 * 4. Neither the name of the University nor the names of its contributors
19 *    may be used to endorse or promote products derived from this software
20 *    without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 *	@(#)DEFS.h	8.1 (Berkeley) 6/4/93
35 */
36
37#ifndef _VAX_ASM_H_
38#define _VAX_ASM_H_
39
40#define R0	0x001
41#define R1	0x002
42#define R2	0x004
43#define R3	0x008
44#define R4	0x010
45#define R5	0x020
46#define R6	0x040
47#define R7 	0x080
48#define R8	0x100
49#define R9	0x200
50#define R10	0x400
51#define R11	0x800
52
53#ifdef __ELF__
54# define _C_LABEL(x)	x
55#else
56# ifdef __STDC__
57#  define _C_LABEL(x)	_ ## x
58# else
59#  define _C_LABEL(x)	_/**/x
60# endif
61#endif
62
63#define	_ASM_LABEL(x)	x
64
65#ifdef __STDC__
66# define __CONCAT(x,y)	x ## y
67# define __STRING(x)	#x
68#else
69# define __CONCAT(x,y)	x/**/y
70# define __STRING(x)	"x"
71#endif
72
73/* let kernels and others override entrypoint alignment */
74#ifndef _ALIGN_TEXT
75# ifdef __ELF__
76#  define _ALIGN_TEXT .align 4
77# else
78#  define _ALIGN_TEXT .align 2
79# endif
80#endif
81
82#define	_ENTRY(x, regs) \
83	.text; _ALIGN_TEXT; .globl x; .type x@function; x: .word regs
84
85#ifdef GPROF
86# ifdef __ELF__
87#  define _PROF_PROLOGUE	\
88	.data; 1:; .long 0; .text; moval 1b,%r0; jsb _ASM_LABEL(__mcount)
89# else
90#  define _PROF_PROLOGUE	\
91	.data; 1:; .long 0; .text; moval 1b,r0; jsb _ASM_LABEL(mcount)
92# endif
93#else
94# define _PROF_PROLOGUE
95#endif
96
97#define ENTRY(x, regs)		_ENTRY(_C_LABEL(x), regs); _PROF_PROLOGUE
98#define NENTRY(x, regs)		_ENTRY(_C_LABEL(x), regs)
99#define ASENTRY(x, regs)	_ENTRY(_ASM_LABEL(x), regs); _PROF_PROLOGUE
100
101#define ALTENTRY(x)		.globl _C_LABEL(x); _C_LABEL(x):
102#define RCSID(x)		.text; .asciz x
103
104#ifdef __ELF__
105#define	WEAK_ALIAS(alias,sym)						\
106	.weak alias;							\
107	alias = sym
108#endif
109
110#ifdef __STDC__
111#define	WARN_REFERENCES(sym,msg)					\
112	.stabs msg ## ,30,0,0,0 ;					\
113	.stabs __STRING(_C_LABEL(sym)) ## ,1,0,0,0
114#else
115#define	WARN_REFERENCES(sym,msg)					\
116	.stabs msg,30,0,0,0 ;						\
117	.stabs __STRING(_C_LABEL(sym)),1,0,0,0
118#endif /* __STDC__ */
119
120#endif /* !_VAX_ASM_H_ */
121