77 lines
1.7 KiB
C
77 lines
1.7 KiB
C
/* -----------------------------------------------------------------------------
|
|
*
|
|
* (c) The GHC Team, 1998-2011
|
|
*
|
|
* This header includes MachRegs.h "selecting" regs for the current host
|
|
* platform.
|
|
*
|
|
* Don't #include this in the RTS directly, instead include "RTS.h".
|
|
*
|
|
* To understand the structure of the RTS headers, see the wiki:
|
|
* https://gitlab.haskell.org/ghc/ghc/wikis/commentary/source-tree/includes
|
|
*
|
|
* ---------------------------------------------------------------------------*/
|
|
|
|
#pragma once
|
|
|
|
#if defined(UnregisterisedCompiler)
|
|
#if !defined(NO_REGS)
|
|
#define NO_REGS
|
|
#endif
|
|
#endif
|
|
|
|
/*
|
|
* Defining NO_REGS causes no global registers to be used. NO_REGS is
|
|
* typically defined by GHC, via a command-line option passed to gcc,
|
|
* when the -funregisterised flag is given.
|
|
*
|
|
* NB. When NO_REGS is on, calling & return conventions may be
|
|
* different. For example, all function arguments will be passed on
|
|
* the stack, and components of an unboxed tuple will be returned on
|
|
* the stack rather than in registers.
|
|
*/
|
|
#if defined(NO_REGS)
|
|
|
|
#define MACHREGS_NO_REGS 1
|
|
|
|
#else
|
|
|
|
#define MACHREGS_NO_REGS 0
|
|
|
|
#if defined(i386_HOST_ARCH)
|
|
#define MACHREGS_i386 1
|
|
#endif
|
|
|
|
#if defined(x86_64_HOST_ARCH)
|
|
#define MACHREGS_x86_64 1
|
|
#endif
|
|
|
|
#if defined(powerpc_HOST_ARCH) || defined(powerpc64_HOST_ARCH) \
|
|
|| defined(powerpc64le_HOST_ARCH) || defined(rs6000_HOST_ARCH)
|
|
#define MACHREGS_powerpc 1
|
|
#endif
|
|
|
|
#if defined(sparc_HOST_ARCH)
|
|
#define MACHREGS_sparc 1
|
|
#endif
|
|
|
|
#if defined(arm_HOST_ARCH)
|
|
#define MACHREGS_arm 1
|
|
#endif
|
|
|
|
#if defined(aarch64_HOST_ARCH)
|
|
#define MACHREGS_aarch64 1
|
|
#endif
|
|
|
|
#if defined(darwin_HOST_OS)
|
|
#define MACHREGS_darwin 1
|
|
#endif
|
|
|
|
#if defined(s390x_HOST_ARCH)
|
|
#define MACHREGS_s390x 1
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#include "MachRegs.h"
|