patch-2.1.44 linux/include/asm-sparc64/fpumacro.h
Next file: linux/include/asm-sparc64/fs_mount.h
Previous file: linux/include/asm-sparc64/fbio.h
Back to the patch index
Back to the overall index
- Lines: 91
- Date:
Mon Jul 7 08:18:55 1997
- Orig file:
v2.1.43/linux/include/asm-sparc64/fpumacro.h
- Orig date:
Mon Jun 16 16:36:00 1997
diff -u --recursive --new-file v2.1.43/linux/include/asm-sparc64/fpumacro.h linux/include/asm-sparc64/fpumacro.h
@@ -21,68 +21,44 @@
__asm__ __volatile__("wr %0, 0x0, %%fprs" : : "r" (val));
}
-extern __inline__ void fpsave32(unsigned int *fpregs, unsigned long *fsr)
+extern __inline__ void fpsave(unsigned long *fpregs,
+ unsigned long *fsr,
+ unsigned long *gsr)
{
__asm__ __volatile__ ("
- wr %%g0, %2, %%asi
- stx %%fsr, [%1]
- stda %%f0, [%0] %%asi
- stda %%f16, [%0 + 64] %%asi
- " : : "r" (fpregs), "r" (fsr), "i" (ASI_BLK_P));
-}
-
-extern __inline__ void fpload32(unsigned int *fpregs, unsigned long *fsr)
-{
- __asm__ __volatile__ ("
- wr %%g0, %2, %%asi
- ldda [%0] %%asi, %%f0
- ldda [%0 + 64] %%asi, %%f16
- ldx [%1], %%fsr
- " : : "r" (fpregs), "r" (fsr), "i" (ASI_BLK_P));
-}
-
-extern __inline__ void fpsave64hi(unsigned int *fpregs, unsigned long *fsr)
-{
- __asm__ __volatile__ ("
- wr %%g0, %2, %%asi
- stx %%fsr, [%1]
- stda %%f32, [%0 + 128] %%asi
- stda %%f48, [%0 + 192] %%asi
- " : : "r" (fpregs), "r" (fsr), "i" (ASI_BLK_P));
-}
-
-extern __inline__ void fpload64hi(unsigned int *fpregs, unsigned long *fsr)
-{
- __asm__ __volatile__ ("
- wr %%g0, %2, %%asi
- ldda [%0 + 128] %%asi, %%f32
- ldda [%0 + 192] %%asi, %%f48
- ldx [%1], %%fsr
- " : : "r" (fpregs), "r" (fsr), "i" (ASI_BLK_P));
-}
-
-extern __inline__ void fpsave(unsigned int *fpregs, unsigned long *fsr)
-{
- __asm__ __volatile__ ("
- wr %%g0, %2, %%asi
+ wr %%g0, %3, %%asi
+ rd %%gsr, %%g1
+ membar #LoadStore | #StoreStore
stx %%fsr, [%1]
+ stx %%g1, [%2]
stda %%f0, [%0] %%asi
stda %%f16, [%0 + 64] %%asi
stda %%f32, [%0 + 128] %%asi
stda %%f48, [%0 + 192] %%asi
- " : : "r" (fpregs), "r" (fsr), "i" (ASI_BLK_P));
+ membar #Sync
+" : /* No outputs */
+ : "r" (fpregs), "r" (fsr), "r" (gsr), "i" (ASI_BLK_P)
+ : "g1");
}
-extern __inline__ void fpload(unsigned int *fpregs, unsigned long *fsr)
+extern __inline__ void fpload(unsigned long *fpregs,
+ unsigned long *fsr,
+ unsigned long *gsr)
{
__asm__ __volatile__ ("
- wr %%g0, %2, %%asi
+ wr %%g0, %3, %%asi
+ membar #StoreLoad | #LoadLoad
ldda [%0] %%asi, %%f0
ldda [%0 + 64] %%asi, %%f16
ldda [%0 + 128] %%asi, %%f32
ldda [%0 + 192] %%asi, %%f48
ldx [%1], %%fsr
- " : : "r" (fpregs), "r" (fsr), "i" (ASI_BLK_P));
+ ldx [%2], %%g1
+ wr %%g1, 0, %%gsr
+ membar #Sync
+" : /* No outputs */
+ : "r" (fpregs), "r" (fsr), "r" (gsr), "i" (ASI_BLK_P)
+ : "g1");
}
#endif /* !(_SPARC64_FPUMACRO_H) */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov