1  /* Assembler macros for HP/PA.
       2     Copyright (C) 1999-2023 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__ */