mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-02 09:33:31 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
 | 
						|
   This file is part of the GNU C Library.
 | 
						|
 | 
						|
   The GNU C Library is free software; you can redistribute it and/or
 | 
						|
   modify it under the terms of the GNU Lesser General Public
 | 
						|
   License as published by the Free Software Foundation; either
 | 
						|
   version 2.1 of the License, or (at your option) any later version.
 | 
						|
 | 
						|
   The GNU C Library is distributed in the hope that it will be useful,
 | 
						|
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
   Lesser General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU Lesser General Public
 | 
						|
   License along with the GNU C Library; if not, see
 | 
						|
   <http://www.gnu.org/licenses/>.  */
 | 
						|
 | 
						|
#ifdef __ASSEMBLER__
 | 
						|
 | 
						|
/* Get the Mach definitions of ENTRY and kernel_trap.  */
 | 
						|
#include <mach/machine/syscall_sw.h>
 | 
						|
 | 
						|
/* The Mach definitions assume underscores should be prepended to
 | 
						|
   symbol names.  Redefine them to do so only when appropriate.  */
 | 
						|
#undef EXT
 | 
						|
#undef LEXT
 | 
						|
#define EXT(x) C_SYMBOL_NAME(x)
 | 
						|
#define LEXT(x) C_SYMBOL_NAME(x##:)
 | 
						|
 | 
						|
/* For ELF we need to add the `.type' directive to make shared libraries
 | 
						|
   work right.  */
 | 
						|
#undef ENTRY
 | 
						|
#define ENTRY(name) \
 | 
						|
  .globl name; \
 | 
						|
  .align ALIGN; \
 | 
						|
  .type name,@function; \
 | 
						|
  name:
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
/* This is invoked by things run when there is random lossage, before they
 | 
						|
   try to do anything else.  Just to be safe, deallocate the reply port so
 | 
						|
   bogons arriving on it don't foul up future RPCs.  */
 | 
						|
 | 
						|
#ifndef __ASSEMBLER__
 | 
						|
#define FATAL_PREPARE_INCLUDE <mach/mig_support.h>
 | 
						|
#define FATAL_PREPARE __mig_dealloc_reply_port (MACH_PORT_NULL)
 | 
						|
#endif
 | 
						|
 | 
						|
/* sysdeps/mach/MACHINE/sysdep.h should define the following macros.  */
 | 
						|
 | 
						|
/* Produce a text assembler label for the C global symbol NAME.  */
 | 
						|
#ifndef ENTRY
 | 
						|
#define ENTRY(name) .error ENTRY not defined by sysdeps/mach/MACHINE/sysdep.h
 | 
						|
/* This is not used on all machines.  */
 | 
						|
#endif
 | 
						|
 | 
						|
/* Set variables ARGC, ARGV, and ENVP for the arguments
 | 
						|
   left on the stack by the microkernel.  */
 | 
						|
#ifndef SNARF_ARGS
 | 
						|
#define SNARF_ARGS(argc, argv, envp)
 | 
						|
#error SNARF_ARGS not defined by sysdeps/mach/MACHINE/sysdep.h
 | 
						|
#endif
 | 
						|
 | 
						|
/* Call the C function FN with no arguments,
 | 
						|
   on a stack starting at SP (as returned by *_cthread_init_routine).
 | 
						|
   You don't need to deal with FN returning; it shouldn't.  */
 | 
						|
#ifndef	CALL_WITH_SP
 | 
						|
#define CALL_WITH_SP(fn, sp)
 | 
						|
#error CALL_WITH_SP not defined by sysdeps/mach/MACHINE/sysdep.h
 | 
						|
#endif
 | 
						|
 | 
						|
/* LOSE can be defined as the `halt' instruction or something
 | 
						|
   similar which will cause the process to die in a characteristic
 | 
						|
   way suggesting a bug.  */
 | 
						|
#ifndef LOSE
 | 
						|
#define	LOSE	({ volatile int zero = 0; zero / zero; })
 | 
						|
#endif
 | 
						|
 | 
						|
/* One of these should be defined to specify the stack direction.  */
 | 
						|
#if !defined (STACK_GROWTH_UP) && !defined (STACK_GROWTH_DOWN)
 | 
						|
#error stack direction unspecified
 | 
						|
#endif
 | 
						|
 | 
						|
/* Used by some assembly code.  */
 | 
						|
#define C_SYMBOL_NAME(name)	name
 |