linux/arch/alpha/include/asm/special_insns.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __ALPHA_SPECIAL_INSNS_H
   3#define __ALPHA_SPECIAL_INSNS_H
   4
   5enum implver_enum {
   6        IMPLVER_EV4,
   7        IMPLVER_EV5,
   8        IMPLVER_EV6
   9};
  10
  11#ifdef CONFIG_ALPHA_GENERIC
  12#define implver()                               \
  13({ unsigned long __implver;                     \
  14   __asm__ ("implver %0" : "=r"(__implver));    \
  15   (enum implver_enum) __implver; })
  16#else
  17/* Try to eliminate some dead code.  */
  18#ifdef CONFIG_ALPHA_EV4
  19#define implver() IMPLVER_EV4
  20#endif
  21#ifdef CONFIG_ALPHA_EV5
  22#define implver() IMPLVER_EV5
  23#endif
  24#if defined(CONFIG_ALPHA_EV6)
  25#define implver() IMPLVER_EV6
  26#endif
  27#endif
  28
  29enum amask_enum {
  30        AMASK_BWX = (1UL << 0),
  31        AMASK_FIX = (1UL << 1),
  32        AMASK_CIX = (1UL << 2),
  33        AMASK_MAX = (1UL << 8),
  34        AMASK_PRECISE_TRAP = (1UL << 9),
  35};
  36
  37#define amask(mask)                                             \
  38({ unsigned long __amask, __input = (mask);                     \
  39   __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input));     \
  40   __amask; })
  41
  42#endif /* __ALPHA_SPECIAL_INSNS_H */
  43