| #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_EV4 | |
| #define implver() IMPLVER_EV4 | |
| #endif | |
| #ifdef CONFIG_ALPHA_EV5 | |
| #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 */ |