]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/mips/math-emu/kernel_linkage.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 into next
[linux-2.6-omap-h63xx.git] / arch / mips / math-emu / kernel_linkage.c
index 4002f0cf79f3d443651761b54185b82ed5988c06..52e6c58c8de1d88b12d80b6bac2872cc54bb72f6 100644 (file)
  * manipulation primitives for the Algorithmics MIPS
  * FPU Emulator
  */
-#include <linux/config.h>
 #include <linux/sched.h>
 #include <asm/processor.h>
 #include <asm/signal.h>
 #include <asm/uaccess.h>
 
+#include <asm/fpu.h>
 #include <asm/fpu_emulator.h>
 
-extern struct mips_fpu_emulator_private fpuemuprivate;
-
 #define SIGNALLING_NAN 0x7ff800007ff80000LL
 
 void fpu_emulator_init_fpu(void)
@@ -41,9 +39,9 @@ void fpu_emulator_init_fpu(void)
                printk("Algorithmics/MIPS FPU Emulator v1.5\n");
        }
 
-       current->thread.fpu.soft.fcr31 = 0;
+       current->thread.fpu.fcr31 = 0;
        for (i = 0; i < 32; i++) {
-               current->thread.fpu.soft.fpr[i] = SIGNALLING_NAN;
+               current->thread.fpu.fpr[i] = SIGNALLING_NAN;
        }
 }
 
@@ -54,34 +52,30 @@ void fpu_emulator_init_fpu(void)
  * with appropriate macros from uaccess.h
  */
 
-int fpu_emulator_save_context(struct sigcontext *sc)
+int fpu_emulator_save_context(struct sigcontext __user *sc)
 {
        int i;
        int err = 0;
 
        for (i = 0; i < 32; i++) {
                err |=
-                   __put_user(current->thread.fpu.soft.fpr[i],
-                              &sc->sc_fpregs[i]);
+                   __put_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]);
        }
-       err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-       err |= __put_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
+       err |= __put_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr);
 
        return err;
 }
 
-int fpu_emulator_restore_context(struct sigcontext *sc)
+int fpu_emulator_restore_context(struct sigcontext __user *sc)
 {
        int i;
        int err = 0;
 
        for (i = 0; i < 32; i++) {
                err |=
-                   __get_user(current->thread.fpu.soft.fpr[i],
-                              &sc->sc_fpregs[i]);
+                   __get_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]);
        }
-       err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-       err |= __get_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
+       err |= __get_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr);
 
        return err;
 }
@@ -91,34 +85,30 @@ int fpu_emulator_restore_context(struct sigcontext *sc)
  * This is the o32 version
  */
 
-int fpu_emulator_save_context32(struct sigcontext32 *sc)
+int fpu_emulator_save_context32(struct sigcontext32 __user *sc)
 {
        int i;
        int err = 0;
 
        for (i = 0; i < 32; i+=2) {
                err |=
-                   __put_user(current->thread.fpu.soft.fpr[i],
-                              &sc->sc_fpregs[i]);
+                   __put_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]);
        }
-       err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-       err |= __put_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
+       err |= __put_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr);
 
        return err;
 }
 
-int fpu_emulator_restore_context32(struct sigcontext32 *sc)
+int fpu_emulator_restore_context32(struct sigcontext32 __user *sc)
 {
        int i;
        int err = 0;
 
        for (i = 0; i < 32; i+=2) {
                err |=
-                   __get_user(current->thread.fpu.soft.fpr[i],
-                              &sc->sc_fpregs[i]);
+                   __get_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]);
        }
-       err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-       err |= __get_user(fpuemuprivate.eir, &sc->sc_fpc_eir);
+       err |= __get_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr);
 
        return err;
 }