1 /* Assembler macros for HP/PA.
2    Copyright (C) 1999-2021 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library.  If not, see
17    <https://www.gnu.org/licenses/>.  */
18 
19 #include <sysdeps/generic/sysdep.h>
20 
21 #undef ASM_LINE_SEP
22 #define ASM_LINE_SEP !
23 
24 #ifdef	__ASSEMBLER__
25 
26 /* Syntactic details of assembler.  */
27 
28 #define ALIGNARG(log2) log2
29 
30 
31 /* Define an entry point visible from C.
32 
33    There is currently a bug in gdb which prevents us from specifying
34    incomplete stabs information.  Fake some entries here which specify
35    the current source file.  */
36 #define	ENTRY(name)							      \
37   .SPACE $TEXT$							ASM_LINE_SEP  \
38   .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY		ASM_LINE_SEP  \
39   .align ALIGNARG(4)						ASM_LINE_SEP  \
40   .NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY		ASM_LINE_SEP  \
41   .EXPORT C_SYMBOL_NAME(name),ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR ASM_LINE_SEP\
42   C_LABEL(name)								      \
43   CALL_MCOUNT
44 
45 #undef	END
46 #define END(name)							      \
47   .PROCEND
48 
49 /* GCC does everything for us. */
50 #ifdef	PROF
51 #define CALL_MCOUNT
52 #else
53 #define CALL_MCOUNT		/* Do nothing.  */
54 #endif
55 
56 #define	PSEUDO(name, syscall_name, args)				      \
57   ENTRY (name)								      \
58   DO_CALL (syscall_name, args)
59 
60 #undef	PSEUDO_END
61 #define	PSEUDO_END(name)						      \
62   END (name)
63 
64 #undef JUMPTARGET
65 #define JUMPTARGET(name)	name
66 #define SYSCALL_PIC_SETUP	/* Nothing.  */
67 
68 /* Local label name for asm code. */
69 #ifndef L
70 #define L(name)		name
71 #endif
72 
73 #endif	/* __ASSEMBLER__ */
74