1 /* Assembler macros for ARC.
2    Copyright (C) 2020-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 License as
7    published by the Free Software Foundation; either version 2.1 of the
8    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 #ifdef	__ASSEMBLER__
22 
23 /* Syntactic details of assembler.
24    ; is not newline but comment, # is also for comment.  */
25 # define ASM_SIZE_DIRECTIVE(name) .size name,.-name
26 
27 # define ENTRY(name)						\
28 	.align 4				ASM_LINE_SEP	\
29 	.globl C_SYMBOL_NAME(name)		ASM_LINE_SEP	\
30 	.type C_SYMBOL_NAME(name),%function	ASM_LINE_SEP	\
31 	C_LABEL(name)				ASM_LINE_SEP	\
32 	cfi_startproc				ASM_LINE_SEP	\
33 	CALL_MCOUNT
34 
35 # undef  END
36 # define END(name)						\
37 	cfi_endproc				ASM_LINE_SEP	\
38 	ASM_SIZE_DIRECTIVE(name)
39 
40 # ifdef SHARED
41 #  define PLTJMP(_x)	_x##@plt
42 # else
43 #  define PLTJMP(_x)	_x
44 # endif
45 
46 # define L(label) .L##label
47 
48 # define CALL_MCOUNT		/* Do nothing for now.  */
49 
50 # define STR(reg, rbase, off)	st  reg, [rbase, off * 4]
51 # define LDR(reg, rbase, off)	ld  reg, [rbase, off * 4]
52 
53 #endif	/* __ASSEMBLER__ */
54