Upgrade to 4.4.50-rt62
[kvmfornfv.git] / kernel / arch / mips / kernel / mips-r2-to-r6-emul.c
index 1f5aac7..af27334 100644 (file)
@@ -28,6 +28,7 @@
 #include <asm/inst.h>
 #include <asm/mips-r2-to-r6-emul.h>
 #include <asm/local.h>
+#include <asm/mipsregs.h>
 #include <asm/ptrace.h>
 #include <asm/uaccess.h>
 
@@ -1163,7 +1164,9 @@ fpu_emul:
                regs->regs[31] = r31;
                regs->cp0_epc = epc;
                if (!used_math()) {     /* First time FPU user.  */
+                       preempt_disable();
                        err = init_fpu();
+                       preempt_enable();
                        set_used_math();
                }
                lose_fpu(1);    /* Save FPU state for the emulator. */
@@ -1251,10 +1254,10 @@ fpu_emul:
                        "       j       10b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word   1b,8b\n"
-                       "       .word   2b,8b\n"
-                       "       .word   3b,8b\n"
-                       "       .word   4b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -1326,10 +1329,10 @@ fpu_emul:
                        "       j       10b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word   1b,8b\n"
-                       "       .word   2b,8b\n"
-                       "       .word   3b,8b\n"
-                       "       .word   4b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -1397,10 +1400,10 @@ fpu_emul:
                        "       j       9b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word   1b,8b\n"
-                       "       .word   2b,8b\n"
-                       "       .word   3b,8b\n"
-                       "       .word   4b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -1467,10 +1470,10 @@ fpu_emul:
                        "       j       9b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word   1b,8b\n"
-                       "       .word   2b,8b\n"
-                       "       .word   3b,8b\n"
-                       "       .word   4b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -1582,14 +1585,14 @@ fpu_emul:
                        "       j       9b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word   1b,8b\n"
-                       "       .word   2b,8b\n"
-                       "       .word   3b,8b\n"
-                       "       .word   4b,8b\n"
-                       "       .word   5b,8b\n"
-                       "       .word   6b,8b\n"
-                       "       .word   7b,8b\n"
-                       "       .word   0b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
+                       STR(PTR) " 5b,8b\n"
+                       STR(PTR) " 6b,8b\n"
+                       STR(PTR) " 7b,8b\n"
+                       STR(PTR) " 0b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -1701,14 +1704,14 @@ fpu_emul:
                        "       j      9b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word  1b,8b\n"
-                       "       .word  2b,8b\n"
-                       "       .word  3b,8b\n"
-                       "       .word  4b,8b\n"
-                       "       .word  5b,8b\n"
-                       "       .word  6b,8b\n"
-                       "       .word  7b,8b\n"
-                       "       .word  0b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
+                       STR(PTR) " 5b,8b\n"
+                       STR(PTR) " 6b,8b\n"
+                       STR(PTR) " 7b,8b\n"
+                       STR(PTR) " 0b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -1820,14 +1823,14 @@ fpu_emul:
                        "       j       9b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word   1b,8b\n"
-                       "       .word   2b,8b\n"
-                       "       .word   3b,8b\n"
-                       "       .word   4b,8b\n"
-                       "       .word   5b,8b\n"
-                       "       .word   6b,8b\n"
-                       "       .word   7b,8b\n"
-                       "       .word   0b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
+                       STR(PTR) " 5b,8b\n"
+                       STR(PTR) " 6b,8b\n"
+                       STR(PTR) " 7b,8b\n"
+                       STR(PTR) " 0b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -1938,14 +1941,14 @@ fpu_emul:
                        "       j       9b\n"
                        "       .previous\n"
                        "       .section        __ex_table,\"a\"\n"
-                       "       .word   1b,8b\n"
-                       "       .word   2b,8b\n"
-                       "       .word   3b,8b\n"
-                       "       .word   4b,8b\n"
-                       "       .word   5b,8b\n"
-                       "       .word   6b,8b\n"
-                       "       .word   7b,8b\n"
-                       "       .word   0b,8b\n"
+                       STR(PTR) " 1b,8b\n"
+                       STR(PTR) " 2b,8b\n"
+                       STR(PTR) " 3b,8b\n"
+                       STR(PTR) " 4b,8b\n"
+                       STR(PTR) " 5b,8b\n"
+                       STR(PTR) " 6b,8b\n"
+                       STR(PTR) " 7b,8b\n"
+                       STR(PTR) " 0b,8b\n"
                        "       .previous\n"
                        "       .set    pop\n"
                        : "+&r"(rt), "=&r"(rs),
@@ -2000,7 +2003,7 @@ fpu_emul:
                        "j      2b\n"
                        ".previous\n"
                        ".section        __ex_table,\"a\"\n"
-                       ".word  1b, 3b\n"
+                       STR(PTR) " 1b,3b\n"
                        ".previous\n"
                        : "=&r"(res), "+&r"(err)
                        : "r"(vaddr), "i"(SIGSEGV)
@@ -2058,7 +2061,7 @@ fpu_emul:
                        "j      2b\n"
                        ".previous\n"
                        ".section        __ex_table,\"a\"\n"
-                       ".word  1b, 3b\n"
+                       STR(PTR) " 1b,3b\n"
                        ".previous\n"
                        : "+&r"(res), "+&r"(err)
                        : "r"(vaddr), "i"(SIGSEGV));
@@ -2119,7 +2122,7 @@ fpu_emul:
                        "j      2b\n"
                        ".previous\n"
                        ".section        __ex_table,\"a\"\n"
-                       ".word  1b, 3b\n"
+                       STR(PTR) " 1b,3b\n"
                        ".previous\n"
                        : "=&r"(res), "+&r"(err)
                        : "r"(vaddr), "i"(SIGSEGV)
@@ -2182,7 +2185,7 @@ fpu_emul:
                        "j      2b\n"
                        ".previous\n"
                        ".section        __ex_table,\"a\"\n"
-                       ".word  1b, 3b\n"
+                       STR(PTR) " 1b,3b\n"
                        ".previous\n"
                        : "+&r"(res), "+&r"(err)
                        : "r"(vaddr), "i"(SIGSEGV));