]> git.hungrycats.org Git - linux/commitdiff
Remove <asm-i386/xor.h>'s own home-made FPU begin/end macros,
authorLinus Torvalds <torvalds@home.transmeta.com>
Mon, 10 Mar 2003 06:36:20 +0000 (22:36 -0800)
committerLinus Torvalds <torvalds@home.transmeta.com>
Mon, 10 Mar 2003 06:36:20 +0000 (22:36 -0800)
use the real ones instead.

include/asm-i386/xor.h

index 4ddeb7e686219d4a21544e73272257bc9ca38bce..0b0dfb0b94318b1aacdd7648a8b1c708ef9a7aa7 100644 (file)
  * Copyright (C) 1998 Ingo Molnar.
  */
 
-#define FPU_SAVE                                                       \
-  do {                                                                 \
-       preempt_disable();                                              \
-       if (!test_thread_flag(TIF_USEDFPU))                             \
-               __asm__ __volatile__ (" clts;\n");                      \
-       __asm__ __volatile__ ("fsave %0; fwait": "=m"(fpu_save[0]));    \
-  } while (0)
-
-#define FPU_RESTORE                                                    \
-  do {                                                                 \
-       __asm__ __volatile__ ("frstor %0": : "m"(fpu_save[0]));         \
-       if (!test_thread_flag(TIF_USEDFPU))                             \
-               stts();                                                 \
-       preempt_enable();                                               \
-  } while (0)
-
 #define LD(x,y)                "       movq   8*("#x")(%1), %%mm"#y"   ;\n"
 #define ST(x,y)                "       movq %%mm"#y",   8*("#x")(%1)   ;\n"
 #define XO1(x,y)       "       pxor   8*("#x")(%2), %%mm"#y"   ;\n"
@@ -46,9 +30,8 @@ static void
 xor_pII_mmx_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
 {
        unsigned long lines = bytes >> 7;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        __asm__ __volatile__ (
 #undef BLOCK
@@ -83,7 +66,7 @@ xor_pII_mmx_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
        :
        : "memory");
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 static void
@@ -91,9 +74,8 @@ xor_pII_mmx_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
              unsigned long *p3)
 {
        unsigned long lines = bytes >> 7;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        __asm__ __volatile__ (
 #undef BLOCK
@@ -133,7 +115,7 @@ xor_pII_mmx_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
        :
        : "memory");
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 static void
@@ -141,9 +123,8 @@ xor_pII_mmx_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
              unsigned long *p3, unsigned long *p4)
 {
        unsigned long lines = bytes >> 7;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        __asm__ __volatile__ (
 #undef BLOCK
@@ -188,7 +169,7 @@ xor_pII_mmx_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
        :
        : "memory");
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 
@@ -197,9 +178,8 @@ xor_pII_mmx_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
              unsigned long *p3, unsigned long *p4, unsigned long *p5)
 {
        unsigned long lines = bytes >> 7;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        /* need to save/restore p4/p5 manually otherwise gcc's 10 argument
           limit gets exceeded (+ counts as two arguments) */
@@ -255,7 +235,7 @@ xor_pII_mmx_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
        : "r" (p4), "r" (p5) 
        : "memory");
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 #undef LD
@@ -270,9 +250,8 @@ static void
 xor_p5_mmx_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
 {
        unsigned long lines = bytes >> 6;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        __asm__ __volatile__ (
        " .align 32                  ;\n"
@@ -311,7 +290,7 @@ xor_p5_mmx_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
        :
        : "memory");
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 static void
@@ -319,9 +298,8 @@ xor_p5_mmx_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
             unsigned long *p3)
 {
        unsigned long lines = bytes >> 6;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        __asm__ __volatile__ (
        " .align 32,0x90             ;\n"
@@ -369,7 +347,7 @@ xor_p5_mmx_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
        :
        : "memory" );
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 static void
@@ -377,9 +355,8 @@ xor_p5_mmx_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
             unsigned long *p3, unsigned long *p4)
 {
        unsigned long lines = bytes >> 6;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        __asm__ __volatile__ (
        " .align 32,0x90             ;\n"
@@ -436,7 +413,7 @@ xor_p5_mmx_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
        :
        : "memory");
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 static void
@@ -444,9 +421,8 @@ xor_p5_mmx_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
             unsigned long *p3, unsigned long *p4, unsigned long *p5)
 {
        unsigned long lines = bytes >> 6;
-       char fpu_save[108];
 
-       FPU_SAVE;
+       kernel_fpu_begin();
 
        /* need to save p4/p5 manually to not exceed gcc's 10 argument limit */
        __asm__ __volatile__ (
@@ -517,7 +493,7 @@ xor_p5_mmx_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
        : "r" (p4), "r" (p5)
        : "memory");
 
-       FPU_RESTORE;
+       kernel_fpu_end();
 }
 
 static struct xor_block_template xor_block_pII_mmx = {
@@ -536,9 +512,6 @@ static struct xor_block_template xor_block_p5_mmx = {
        .do_5 = xor_p5_mmx_5,
 };
 
-#undef FPU_SAVE
-#undef FPU_RESTORE
-
 /*
  * Cache avoiding checksumming functions utilizing KNI instructions
  * Copyright (C) 1999 Zach Brown (with obvious credit due Ingo)