Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __ALPHA_SPECIAL_INSNS_H
0003 #define __ALPHA_SPECIAL_INSNS_H
0004 
0005 enum implver_enum {
0006     IMPLVER_EV4,
0007     IMPLVER_EV5,
0008     IMPLVER_EV6
0009 };
0010 
0011 #ifdef CONFIG_ALPHA_GENERIC
0012 #define implver()               \
0013 ({ unsigned long __implver;         \
0014    __asm__ ("implver %0" : "=r"(__implver));    \
0015    (enum implver_enum) __implver; })
0016 #else
0017 /* Try to eliminate some dead code.  */
0018 #ifdef CONFIG_ALPHA_EV4
0019 #define implver() IMPLVER_EV4
0020 #endif
0021 #ifdef CONFIG_ALPHA_EV5
0022 #define implver() IMPLVER_EV5
0023 #endif
0024 #if defined(CONFIG_ALPHA_EV6)
0025 #define implver() IMPLVER_EV6
0026 #endif
0027 #endif
0028 
0029 enum amask_enum {
0030     AMASK_BWX = (1UL << 0),
0031     AMASK_FIX = (1UL << 1),
0032     AMASK_CIX = (1UL << 2),
0033     AMASK_MAX = (1UL << 8),
0034     AMASK_PRECISE_TRAP = (1UL << 9),
0035 };
0036 
0037 #define amask(mask)                     \
0038 ({ unsigned long __amask, __input = (mask);         \
0039    __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \
0040    __amask; })
0041 
0042 #endif /* __ALPHA_SPECIAL_INSNS_H */