Browse Source

Plan 9 from Bell Labs 2013-06-13

David du Colombier 10 years ago
parent
commit
e5fd97a95a

+ 9 - 6
mips/include/u.h

@@ -20,13 +20,13 @@ typedef unsigned short u16int;
 typedef unsigned int	u32int;
 typedef unsigned long long u64int;
 
-/* FCR */
-#define	FPINEX	(1<<7)
+/* FCR (FCR31) */
+#define	FPINEX	(1<<7)		/* enables */
 #define	FPUNFL	(1<<8)
 #define	FPOVFL	(1<<9)
 #define	FPZDIV	(1<<10)
 #define	FPINVAL	(1<<11)
-#define	FPRNR	(0<<0)
+#define	FPRNR	(0<<0)		/* rounding modes */
 #define	FPRZ	(1<<0)
 #define	FPRPINF	(2<<0)
 #define	FPRNINF	(3<<0)
@@ -35,12 +35,15 @@ typedef unsigned long long u64int;
 #define	FPPSGL	0
 #define	FPPDBL	0
 #define	FPPMASK	0
-/* FSR */
-#define	FPAINEX	(1<<2)
+#define FPCOND	(1<<23)
+
+/* FSR (also FCR31) */
+#define	FPAINEX	(1<<2)		/* flags */
 #define	FPAOVFL	(1<<4)
 #define	FPAUNFL	(1<<3)
 #define	FPAZDIV	(1<<5)
-#define	FPAINVAL	(1<<6)
+#define	FPAINVAL (1<<6)
+
 union FPdbleword
 {
 	double	x;

+ 3 - 0
sys/src/ape/lib/ap/mips/c_fcr0.s

@@ -0,0 +1,3 @@
+	TEXT	C_fcr0(SB), $0
+	MOVW	FCR0, R1
+	RET

+ 2 - 1
sys/src/ape/lib/ap/mips/lock.c

@@ -43,7 +43,8 @@ lockinit(void)
 	case R4K:
 		break;
 	default:
-		abort();
+		arch = R4K;
+		break;
 	}
 	
 }

+ 1 - 1
sys/src/ape/lib/ap/mips/memmove.s

@@ -26,7 +26,7 @@ ok:
 
 /*
  * if not at least 4 chars,
- * dont even mess around.
+ * don't even mess around.
  * 3 chars to guarantee any
  * rounding up to a word
  * boundary and 4 characters

+ 1 - 0
sys/src/ape/lib/ap/mips/mkfile

@@ -2,6 +2,7 @@ APE=/sys/src/ape
 <$APE/config
 LIB=/$objtype/lib/ape/libap.a
 OFILES=\
+	c_fcr0.$O\
 	cycles.$O\
 	getfcr.$O\
 	lock.$O\

+ 1 - 5
sys/src/ape/lib/ap/mips/tas.s

@@ -1,5 +1,5 @@
 /*
- *	magnum user level lock code
+ *	mips user level lock code
  */
 
 #define	LL(base, rt)	WORD	$((060<<26)|((base)<<21)|((rt)<<16))
@@ -27,7 +27,3 @@ tas1:
 	NOOP
 	BEQ	R3, tas1
 	RET
-
-	TEXT	C_fcr0(SB), $0
-	MOVW	FCR0, R1
-	RET

+ 1 - 1
sys/src/ape/lib/mp/mips/mkfile

@@ -8,7 +8,7 @@ SFILES=\
 	mpvecdigmuladd.s\
 	mpvecdigmulsub.s\
 	mpvecsub.s\
-	mpdigdiv.s\
+#	mpdigdiv.s\
 
 HFILES=\
 	/sys/include/ape/mp.h\

+ 0 - 6
sys/src/libc/mips/atom.s

@@ -49,9 +49,3 @@ spincas:
 fail:
 	MOVW	$0, R1
 	RET
-
-/* general-purpose abort */
-_trap:
-	MOVD	$0, R0
-	MOVD	0(R0), R0
-	RET

+ 2 - 1
sys/src/libmp/mips/mkfile

@@ -2,12 +2,13 @@ objtype=mips
 </mips/mkfile
 
 LIB=/$objtype/lib/libmp.a
+# can't use this mpdigdiv.s on mips32 cpus
 SFILES=\
 	mpvecadd.s\
 	mpvecsub.s\
 	mpvecdigmuladd.s\
 	mpvecdigmulsub.s\
-	mpdigdiv.s\
+#	mpdigdiv.s\
 
 HFILES=/$objtype/include/u.h /sys/include/mp.h ../port/dat.h
 

+ 1 - 2
sys/src/libmp/mips/mpdigdiv.s → sys/src/libmp/mips/r4k/mpdigdiv.s

@@ -1,6 +1,6 @@
 /*
  *  This only works on R[45]000 chips that allow 64 bit
- *  integer arithmetic even when uding 32 bit addresses
+ *  integer arithmetic even when using 32 bit addresses
  *
  *	R1 = dividend*
  *	R2 = dividend[low]
@@ -38,4 +38,3 @@ _digovfl:
 	MOVW	$-1,R1
 	MOVW	R1,0(R5)
 	RET
-