diff options
| author | Charles Forsyth <charles.forsyth@gmail.com> | 2015-03-24 16:35:00 +0000 |
|---|---|---|
| committer | Charles Forsyth <charles.forsyth@gmail.com> | 2015-03-24 16:35:00 +0000 |
| commit | 1e8781edb296be22fed3bd5588151e465ac5c4ac (patch) | |
| tree | 9c6d1fa0494e3c6f1277e74b1cb7c3d504d027d7 /Linux | |
| parent | 662e797001aeaf4a8acfe46e5c12a52b862ff492 (diff) | |
empty fpuctl.h
Diffstat (limited to 'Linux')
| -rw-r--r-- | Linux/386/include/fpuctl.h | 76 | ||||
| -rw-r--r-- | Linux/arm/include/fpuctl.h | 52 | ||||
| -rw-r--r-- | Linux/power/include/fpuctl.h | 83 | ||||
| -rw-r--r-- | Linux/spim/include/fpuctl.h | 65 |
4 files changed, 0 insertions, 276 deletions
diff --git a/Linux/386/include/fpuctl.h b/Linux/386/include/fpuctl.h index 8389f6ee..e69de29b 100644 --- a/Linux/386/include/fpuctl.h +++ b/Linux/386/include/fpuctl.h @@ -1,76 +0,0 @@ -/* - * Linux 386 fpu support - * Mimic Plan9 floating point support - */ - -static void -setfcr(ulong fcr) -{ - __asm__( "xorb $0x3f, %%al\n\t" - "pushw %%ax\n\t" - "fwait\n\t" - "fldcw (%%esp)\n\t" - "popw %%ax\n\t" - : /* no output */ - : "al" (fcr) - ); -} - -static ulong -getfcr(void) -{ - ulong fcr = 0; - - __asm__( "pushl %%eax\n\t" - "fwait\n\t" - "fstcw (%%esp)\n\t" - "popl %%eax\n\t" - "xorb $0x3f, %%al\n\t" - : "=a" (fcr) - : "eax" (fcr) - ); - return fcr; -} - -static ulong -getfsr(void) -{ - ulong fsr = -1; - - __asm__( "fwait\n\t" - "fstsw (%%eax)\n\t" - "movl (%%eax), %%eax\n\t" - "andl $0xffff, %%eax\n\t" - : "=a" (fsr) - : "eax" (&fsr) - ); - return fsr; -} - -static void -setfsr(ulong fsr) -{ - __asm__("fclex\n\t"); -} - -/* FCR */ -#define FPINEX (1<<5) -#define FPUNFL ((1<<4)|(1<<1)) -#define FPOVFL (1<<3) -#define FPZDIV (1<<2) -#define FPINVAL (1<<0) -#define FPRNR (0<<10) -#define FPRZ (3<<10) -#define FPRPINF (2<<10) -#define FPRNINF (1<<10) -#define FPRMASK (3<<10) -#define FPPEXT (3<<8) -#define FPPSGL (0<<8) -#define FPPDBL (2<<8) -#define FPPMASK (3<<8) -/* FSR */ -#define FPAINEX FPINEX -#define FPAOVFL FPOVFL -#define FPAUNFL FPUNFL -#define FPAZDIV FPZDIV -#define FPAINVAL FPINVAL diff --git a/Linux/arm/include/fpuctl.h b/Linux/arm/include/fpuctl.h index 7903c04b..e69de29b 100644 --- a/Linux/arm/include/fpuctl.h +++ b/Linux/arm/include/fpuctl.h @@ -1,52 +0,0 @@ -/* - * Linux arm fpu support - * Mimic Plan9 floating point support - */ - -#include <fenv.h> - -static void -setfcr(ulong fcr) -{ -} - -static ulong -getfcr(void) -{ - ulong fcr = 0; - return fcr; -} - -static ulong -getfsr(void) -{ - ulong fsr = -1; - return fsr; -} - -static void -setfsr(ulong fsr) -{ -} - -/* FCR */ -#define FPINEX (1<<5) -#define FPUNFL ((1<<4)|(1<<1)) -#define FPOVFL (1<<3) -#define FPZDIV (1<<2) -#define FPINVAL (1<<0) -#define FPRNR (0<<10) -#define FPRZ (3<<10) -#define FPRPINF (2<<10) -#define FPRNINF (1<<10) -#define FPRMASK (3<<10) -#define FPPEXT (3<<8) -#define FPPSGL (0<<8) -#define FPPDBL (2<<8) -#define FPPMASK (3<<8) -/* FSR */ -#define FPAINEX FPINEX -#define FPAOVFL FPOVFL -#define FPAUNFL FPUNFL -#define FPAZDIV FPZDIV -#define FPAINVAL FPINVAL diff --git a/Linux/power/include/fpuctl.h b/Linux/power/include/fpuctl.h index fd03942c..e69de29b 100644 --- a/Linux/power/include/fpuctl.h +++ b/Linux/power/include/fpuctl.h @@ -1,83 +0,0 @@ -/* - * Linux PPC - * Mimic Plan9 floating point support - */ - -static __inline__ ulong -getfcr(void) -{ - float fpscr; - - __asm__ __volatile__ ("mffs %0" : "=&f" (fpscr):); - - return (ulong)fpscr; -} - -static __inline__ ulong -getfsr(void) -{ - float fpscr; - - __asm__ __volatile__ ("mffs %0" : "=&f" (fpscr):); - - return (ulong) fpscr; -} - -static __inline__ void -setfsr(ulong fsr) -{ - float t = (float) fsr; - - __asm__ __volatile__("mtfsf 0xff, %0" : : "f" (t) ); -} - -static __inline__ void -setfcr(ulong fcr) -{ - float t = (float) fcr; - - __asm__ __volatile__("mtfsf 0xff, %0" : : "f" (t) ); -} - -/* FPSCR */ -#define FPSFX (1<<31) /* exception summary (sticky) */ -#define FPSEX (1<<30) /* enabled exception summary */ -#define FPSVX (1<<29) /* invalid operation exception summary */ -#define FPSOX (1<<28) /* overflow exception OX (sticky) */ -#define FPSUX (1<<27) /* underflow exception UX (sticky) */ -#define FPSZX (1<<26) /* zero divide exception ZX (sticky) */ -#define FPSXX (1<<25) /* inexact exception XX (sticky) */ -#define FPSVXSNAN (1<<24) /* invalid operation exception for SNaN (sticky) */ -#define FPSVXISI (1<<23) /* invalid operation exception for ∞-∞ (sticky) */ -#define FPSVXIDI (1<<22) /* invalid operation exception for ∞/∞ (sticky) */ -#define FPSVXZDZ (1<<21) /* invalid operation exception for 0/0 (sticky) */ -#define FPSVXIMZ (1<<20) /* invalid operation exception for ∞*0 (sticky) */ -#define FPSVXVC (1<<19) /* invalid operation exception for invalid compare (sticky) */ -#define FPSFR (1<<18) /* fraction rounded */ -#define FPSFI (1<<17) /* fraction inexact */ -#define FPSFPRF (1<<16) /* floating point result class */ -#define FPSFPCC (0xF<<12) /* <, >, =, unordered */ -#define FPVXCVI (1<<8) /* enable exception for invalid integer convert (sticky) */ - -/* FCR */ -#define FPVE (1<<7) /* invalid operation exception enable */ -#define FPOVFL (1<<6) /* enable overflow exceptions */ -#define FPUNFL (1<<5) /* enable underflow */ -#define FPZDIV (1<<4) /* enable zero divide */ -#define FPINEX (1<<3) /* enable inexact exceptions */ -#define FPRMASK (3<<0) /* rounding mode */ -#define FPRNR (0<<0) -#define FPRZ (1<<0) -#define FPRPINF (2<<0) -#define FPRNINF (3<<0) -#define FPPEXT 0 -#define FPPSGL 0 -#define FPPDBL 0 -#define FPPMASK 0 -#define FPINVAL FPVE -/* FSR */ -#define FPAOVFL FPSOX -#define FPAINEX FPSXX -#define FPAUNFL FPSUX -#define FPAZDIV FPSZX -#define FPAINVAL FPSVX diff --git a/Linux/spim/include/fpuctl.h b/Linux/spim/include/fpuctl.h index ad5dcba7..e69de29b 100644 --- a/Linux/spim/include/fpuctl.h +++ b/Linux/spim/include/fpuctl.h @@ -1,65 +0,0 @@ -/* FCR */ -#define FCRBITS 0x00000F83 -#define FPINEX (1<<7) -#define FPUNFL (1<<8) -#define FPOVFL (1<<9) -#define FPZDIV (1<<10) -#define FPINVAL (1<<11) -#define FPRNR (0<<0) -#define FPRZ (1<<0) -#define FPRPINF (2<<0) -#define FPRNINF (3<<0) -#define FPRMASK (3<<0) -#define FPPEXT 0 -#define FPPSGL 0 -#define FPPDBL 0 -#define FPPMASK 0 -/* FSR */ -#define FSRBITS 0x0003F07C -#define FPAINEX (1<<2) -#define FPAOVFL (1<<4) -#define FPAUNFL (1<<3) -#define FPAZDIV (1<<5) -#define FPAINVAL (1<<6) - -/* - * Linux mips fpu support - * Mimic Plan9 floating point support - */ - -static void -setfcr(ulong fcr) -{ - __asm__("ctc1 %0,$31\n" - : :"r" (fcr) - ); -} - -static ulong -getfcr(void) -{ - ulong fcr = 0; - __asm__("cfc1 %0,$31\n" - : "=r" (fcr) - ); - fcr &= FCRBITS; - return fcr; -} - -static ulong -getfsr(void) -{ - ulong fsr = 0; - __asm__("cfc1 %0,$31\n" - : "=r" (fsr) - ); - fsr &= FSRBITS; - return fsr; -} - -static void -setfsr(ulong fsr) -{ - fsr |= getfcr(); - setfcr(getfcr()|fsr); -} |
