Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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_EV56
19#define implver() IMPLVER_EV5
20#endif
21#if defined(CONFIG_ALPHA_EV6)
22#define implver() IMPLVER_EV6
23#endif
24#endif
25
26enum amask_enum {
27 AMASK_BWX = (1UL << 0),
28 AMASK_FIX = (1UL << 1),
29 AMASK_CIX = (1UL << 2),
30 AMASK_MAX = (1UL << 8),
31 AMASK_PRECISE_TRAP = (1UL << 9),
32};
33
34#define amask(mask) \
35({ unsigned long __amask, __input = (mask); \
36 __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \
37 __amask; })
38
39#endif /* __ALPHA_SPECIAL_INSNS_H */