1 /* Copyright (C) 2000-2021 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3 
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8 
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13 
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, see
16    <https://www.gnu.org/licenses/>.  */
17 
18 #include <sysdeps/generic/sysdep.h>
19 
20 #ifdef __ASSEMBLER__
21 
22 /* Macros to help writing .prologue directives in assembly code.  */
23 #define ASM_UNW_PRLG_RP			0x8
24 #define ASM_UNW_PRLG_PFS		0x4
25 #define ASM_UNW_PRLG_PSP		0x2
26 #define ASM_UNW_PRLG_PR			0x1
27 #define ASM_UNW_PRLG_GRSAVE(ninputs)	(32+(ninputs))
28 
29 #define ENTRY(name)				\
30 	.text;					\
31 	.align 32;				\
32 	.proc C_SYMBOL_NAME(name);		\
33 	.global C_SYMBOL_NAME(name);		\
34 	C_LABEL(name)				\
35 	CALL_MCOUNT
36 
37 #define LOCAL_ENTRY(name)			\
38 	.text;					\
39 	.align 32;				\
40 	.proc C_SYMBOL_NAME(name);		\
41 	C_LABEL(name)				\
42 	CALL_MCOUNT
43 
44 #define LEAF(name)				\
45   .text;					\
46   .align 32;					\
47   .proc C_SYMBOL_NAME(name);			\
48   .global name;					\
49   C_LABEL(name)
50 
51 #define LOCAL_LEAF(name)			\
52   .text;					\
53   .align 32;					\
54   .proc C_SYMBOL_NAME(name);			\
55   C_LABEL(name)
56 
57 /* Mark the end of function SYM.  */
58 #undef END
59 #define END(sym)	.endp C_SYMBOL_NAME(sym)
60 
61 #endif /* ASSEMBLER */
62