asmacros.h revision 84176
134461Speter/*-
234461Speter * Copyright (c) 2001 Jake Burkholder.
334461Speter * All rights reserved.
434461Speter *
534461Speter * Redistribution and use in source and binary forms, with or without
634461Speter * modification, are permitted provided that the following conditions
734461Speter * are met:
834461Speter * 1. Redistributions of source code must retain the above copyright
934461Speter *    notice, this list of conditions and the following disclaimer.
1034461Speter * 2. Redistributions in binary form must reproduce the above copyright
1134461Speter *    notice, this list of conditions and the following disclaimer in the
1234461Speter *    documentation and/or other materials provided with the distribution.
1334461Speter *
1434461Speter * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1534461Speter * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1634461Speter * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1734461Speter * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1834461Speter * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1934461Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2034461Speter * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2134461Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2234461Speter * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2334461Speter * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2434461Speter * SUCH DAMAGE.
2534461Speter *
2634461Speter * $FreeBSD: head/sys/sparc64/include/asmacros.h 84176 2001-09-30 18:41:57Z jake $
2732785Speter */
2832785Speter
2932785Speter#ifndef	_MACHINE_ASMACROS_H_
3032785Speter#define	_MACHINE_ASMACROS_H_
3132785Speter
3232785Speter#ifdef _KERNEL
3332785Speter
3432785Speter	.register %g2,#ignore
3532785Speter	.register %g3,#ignore
3632785Speter	.register %g6,#ignore
3732785Speter	.register %g7,#ignore
3832785Speter
3932785Speter#define	PCPU(member)	%g7 + GD_ ## member
4032785Speter#define	PCPU_ADDR(member, reg) add %g7, GD_ ## member, reg
4132785Speter
4232785Speter#define	DEBUGGER()	ta %xcc, 1
4332785Speter
4432785Speter#define	PANIC(msg, reg) \
4532785Speter	.sect	.rodata ; \
4632785Speter9:	.asciz	msg ; \
4732785Speter	.previous ; \
4832785Speter	setx	9b, reg, %o0 ; \
4932785Speter	call	panic ; \
5032785Speter	 nop
5132785Speter
5232785Speter#endif
5332785Speter
5432785Speter#define	DATA(name) \
5532785Speter	.data ; \
5632785Speter	.globl	name ; \
5732785Speter	.type	name, @object ; \
5832785Spetername ## :
5932785Speter
6032785Speter#define	EMPTY
6132785Speter
6232785Speter#define	ENTRY(name) \
6332785Speter	.text ; \
6432785Speter	.align	16 ; \
6532785Speter	.globl	name ; \
6632785Speter	.type	name, @function ; \
6732785Spetername ## :
6832785Speter
6932785Speter#define	END(name) \
7032785Speter	.size	name, . - name
7132785Speter
7232785Speter#endif /* !_MACHINE_ASMACROS_H_ */
7332785Speter