parisc: Add constants for control registers and clean up mfctl()
authorHelge Deller <deller@gmx.de>
Fri, 25 Mar 2022 16:37:51 +0000 (17:37 +0100)
committerHelge Deller <deller@gmx.de>
Tue, 29 Mar 2022 19:37:12 +0000 (21:37 +0200)
Clean up the code for the mfctl() and mtctl() functions and add often
used constants.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/include/asm/special_insns.h

index 41b3ddbd344cefc5ed22e632fbac04d815fd769c..c822bd0c0e3c6ccb86b4190d15500589c70f353a 100644 (file)
        pa;                                             \
 })
 
+#define CR_EIEM 15     /* External Interrupt Enable Mask */
+#define CR_CR16 16     /* CR16 Interval Timer */
+#define CR_EIRR 23     /* External Interrupt Request Register */
+
 #define mfctl(reg)     ({              \
        unsigned long cr;               \
        __asm__ __volatile__(           \
-               "mfctl " #reg ",%0" :   \
-                "=r" (cr)              \
+               "mfctl %1,%0" :         \
+                "=r" (cr) : "i" (reg)  \
        );                              \
        cr;                             \
 })
                : /* no outputs */ \
                : "r" (gr), "i" (cr) : "memory")
 
-/* these are here to de-mystefy the calling code, and to provide hooks */
-/* which I needed for debugging EIEM problems -PB */
-#define get_eiem() mfctl(15)
-static inline void set_eiem(unsigned long val)
-{
-       mtctl(val, 15);
-}
+#define get_eiem()     mfctl(CR_EIEM)
+#define set_eiem(val)  mtctl(val, CR_EIEM)
 
 #define mfsp(reg)      ({              \
        unsigned long cr;               \