text: /* -----------------------------------------------------------------------------
   *
   * (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"
  