1  /* Copyright (C) 2000-2023 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 */