Merge tag 'drm-next-2018-12-27' of git://anongit.freedesktop.org/drm/drm
[sfrench/cifs-2.6.git] / arch / mips / include / asm / mipsregs.h
index 341a02c929853ac13d0fe90405b30514a085ed3b..402b80af91aafa8386b9dc86ddd1e42fcc87c739 100644 (file)
@@ -1345,9 +1345,10 @@ do {                                                             \
                        : "=r" (__res));                                \
        else                                                            \
                __asm__ vol(                                            \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips32\n\t"                              \
                        "mfc0\t%0, " #source ", " #sel "\n\t"           \
-                       ".set\tmips0\n\t"                               \
+                       ".set\tpop\n\t"                                 \
                        : "=r" (__res));                                \
        __res;                                                          \
 })
@@ -1358,15 +1359,17 @@ do {                                                            \
                __res = __read_64bit_c0_split(source, sel, vol);        \
        else if (sel == 0)                                              \
                __asm__ vol(                                            \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips3\n\t"                               \
                        "dmfc0\t%0, " #source "\n\t"                    \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : "=r" (__res));                                \
        else                                                            \
                __asm__ vol(                                            \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips64\n\t"                              \
                        "dmfc0\t%0, " #source ", " #sel "\n\t"          \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : "=r" (__res));                                \
        __res;                                                          \
 })
@@ -1391,9 +1394,10 @@ do {                                                                     \
                        : : "Jr" ((unsigned int)(value)));              \
        else                                                            \
                __asm__ __volatile__(                                   \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips32\n\t"                              \
                        "mtc0\t%z0, " #register ", " #sel "\n\t"        \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : : "Jr" ((unsigned int)(value)));              \
 } while (0)
 
@@ -1403,15 +1407,17 @@ do {                                                                    \
                __write_64bit_c0_split(register, sel, value);           \
        else if (sel == 0)                                              \
                __asm__ __volatile__(                                   \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips3\n\t"                               \
                        "dmtc0\t%z0, " #register "\n\t"                 \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : : "Jr" (value));                              \
        else                                                            \
                __asm__ __volatile__(                                   \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips64\n\t"                              \
                        "dmtc0\t%z0, " #register ", " #sel "\n\t"       \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : : "Jr" (value));                              \
 } while (0)
 
@@ -1463,19 +1469,21 @@ do {                                                                    \
        local_irq_save(__flags);                                        \
        if (sel == 0)                                                   \
                __asm__ vol(                                            \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips64\n\t"                              \
                        "dmfc0\t%L0, " #source "\n\t"                   \
                        "dsra\t%M0, %L0, 32\n\t"                        \
                        "sll\t%L0, %L0, 0\n\t"                          \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : "=r" (__val));                                \
        else                                                            \
                __asm__ vol(                                            \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips64\n\t"                              \
                        "dmfc0\t%L0, " #source ", " #sel "\n\t"         \
                        "dsra\t%M0, %L0, 32\n\t"                        \
                        "sll\t%L0, %L0, 0\n\t"                          \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : "=r" (__val));                                \
        local_irq_restore(__flags);                                     \
                                                                        \
@@ -1498,23 +1506,25 @@ do {                                                                    \
                        : "+r" (__tmp));                                \
        else if (sel == 0)                                              \
                __asm__ __volatile__(                                   \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips64\n\t"                              \
                        "dsll\t%L0, %L0, 32\n\t"                        \
                        "dsrl\t%L0, %L0, 32\n\t"                        \
                        "dsll\t%M0, %M0, 32\n\t"                        \
                        "or\t%L0, %L0, %M0\n\t"                         \
                        "dmtc0\t%L0, " #source "\n\t"                   \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : "+r" (__tmp));                                \
        else                                                            \
                __asm__ __volatile__(                                   \
+                       ".set\tpush\n\t"                                \
                        ".set\tmips64\n\t"                              \
                        "dsll\t%L0, %L0, 32\n\t"                        \
                        "dsrl\t%L0, %L0, 32\n\t"                        \
                        "dsll\t%M0, %M0, 32\n\t"                        \
                        "or\t%L0, %L0, %M0\n\t"                         \
                        "dmtc0\t%L0, " #source ", " #sel "\n\t"         \
-                       ".set\tmips0"                                   \
+                       ".set\tpop"                                     \
                        : "+r" (__tmp));                                \
        local_irq_restore(__flags);                                     \
 } while (0)