| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef __ALPHA_SPECIAL_INSNS_H |
| #define __ALPHA_SPECIAL_INSNS_H |
| |
| enum implver_enum { |
| IMPLVER_EV4, |
| IMPLVER_EV5, |
| IMPLVER_EV6 |
| }; |
| |
| #ifdef CONFIG_ALPHA_GENERIC |
| #define implver() \ |
| ({ unsigned long __implver; \ |
| __asm__ ("implver %0" : "=r"(__implver)); \ |
| (enum implver_enum) __implver; }) |
| #else |
| /* Try to eliminate some dead code. */ |
| #ifdef CONFIG_ALPHA_EV56 |
| #define implver() IMPLVER_EV5 |
| #endif |
| #if defined(CONFIG_ALPHA_EV6) |
| #define implver() IMPLVER_EV6 |
| #endif |
| #endif |
| |
| enum amask_enum { |
| AMASK_BWX = (1UL << 0), |
| AMASK_FIX = (1UL << 1), |
| AMASK_CIX = (1UL << 2), |
| AMASK_MAX = (1UL << 8), |
| AMASK_PRECISE_TRAP = (1UL << 9), |
| }; |
| |
| #define amask(mask) \ |
| ({ unsigned long __amask, __input = (mask); \ |
| __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \ |
| __amask; }) |
| |
| #endif /* __ALPHA_SPECIAL_INSNS_H */ |