Browse Source

Plan 9 from Bell Labs 2010-09-21

David du Colombier 13 years ago
parent
commit
3253817759

+ 1 - 1
sys/src/9/kw/fns.h

@@ -106,7 +106,7 @@ extern void fpuprocrestore(Proc*);
 extern void fpuprocsave(Proc*);
 extern void fpusysprocsetup(Proc*);
 extern void fpusysrfork(Ureg*);
-extern void fpusysrforkchild(Proc*, Proc*);
+extern void fpusysrforkchild(Proc*, Ureg *, Proc*);
 extern int fpuemu(Ureg*);
 
 /*

+ 2 - 2
sys/src/9/kw/main.c

@@ -499,7 +499,7 @@ bootargs(uintptr base)
 	 * of the argument list checked in syscall.
 	 */
 	i = oargblen+1;
-	p = UINT2PTR(STACKALIGN(base + PGSIZE - sizeof(up->s.args) - i));
+	p = UINT2PTR(STACKALIGN(base + BY2PG - sizeof(up->s.args) - i));
 	memmove(p, oargb, i);
 
 	/*
@@ -512,7 +512,7 @@ bootargs(uintptr base)
 	 * unused so it doesn't matter (at the moment...).
 	 */
 	av = (char**)(p - (oargc+2)*sizeof(char*));
-	ssize = base + PGSIZE - PTR2UINT(av);
+	ssize = base + BY2PG - PTR2UINT(av);
 	*av++ = (char*)oargc;
 	for(i = 0; i < oargc; i++)
 		*av++ = (oargv[i] - oargb) + (p - base) + (USTKTOP - BY2PG);

+ 4 - 5
sys/src/9/kw/mem.h

@@ -34,13 +34,13 @@
 /*
  * Sizes
  */
-#define	PGSIZE		(4*KiB)			/* bytes per page */
-#define	PGSHIFT		12			/* log(PGZIZE) */
-#define	PGROUND(s)	ROUNDUP(s, PGSIZE)
+#define	BY2PG		(4*KiB)			/* bytes per page */
+#define	PGSHIFT		12			/* log(BY2PG) */
+#define	PGROUND(s)	ROUNDUP(s, BY2PG)
 #define	ROUND(s, sz)	(((s)+(sz-1))&~(sz-1))
 
 #define	MAXMACH		1			/* max # cpus system can run */
-#define	MACHSIZE	(PGSIZE)
+#define	MACHSIZE	BY2PG
 
 #define KSTKSIZE	(8*KiB)
 #define STACKALIGN(sp)	((sp) & ~3)		/* bug: assure with alloc */
@@ -102,7 +102,6 @@
  * Sizes
  */
 #define BI2BY		8			/* bits per byte */
-#define BY2PG		PGSIZE
 #define BY2SE		4
 #define BY2WD		4
 #define BY2V		8			/* only used in xalloc.c */

+ 1 - 1
sys/src/9/kw/mmu.c

@@ -464,7 +464,7 @@ vmap(uintptr pa, usize size)
 	o = pa & (BY2PG-1);
 	pa -= o;
 	size += o;
-	size = ROUNDUP(size, PGSIZE);
+	size = ROUNDUP(size, BY2PG);
 
 	va = kseg0|pa;
 	pae = mmukmap(va, pa, size);

+ 1 - 1
sys/src/9/kw/softfpu.c

@@ -53,7 +53,7 @@ fpusysrfork(Ureg*)
 }
 
 void
-fpusysrforkchild(Proc*, Proc*)
+fpusysrforkchild(Proc*, Ureg*, Proc*)
 {
 	/*
 	 * Called later in sysrfork() via the machine-dependent

+ 3 - 1
sys/src/9/kw/syscall.c

@@ -277,7 +277,7 @@ syscall(Ureg* ureg)
 	kexit(ureg);
 }
 
-long	/* void* */
+long
 execregs(ulong entry, ulong ssize, ulong nargs)
 {
 	ulong *sp;
@@ -328,4 +328,6 @@ forkchild(Proc *p, Ureg *ureg)
 	/* Things from bottom of syscall which were never executed */
 	p->psstate = 0;
 	p->insyscall = 0;
+
+	fpusysrforkchild(p, cureg, up);
 }

+ 7 - 7
sys/src/9/omap/cache.v7.s

@@ -45,21 +45,21 @@ TEXT cachedwb(SB), $-4
 	MOVW.W	R14, -8(R13)
 	MOVW	$cachedwb_sw(SB), R0
 	MOVW	$1, R8
-	BL	cacheall(SB)
+	BL	wholecache(SB)
 	MOVW.P	8(R13), R15
 
 TEXT cachedwbinv(SB), $-4
 	MOVW.W	R14, -8(R13)
 	MOVW	$cachedwbinv_sw(SB), R0
 	MOVW	$1, R8
-	BL	cacheall(SB)
+	BL	wholecache(SB)
 	MOVW.P	8(R13), R15
 
 TEXT cachedinv(SB), $-4
 	MOVW.W	R14, -8(R13)
 	MOVW	$cachedinv_sw(SB), R0
 	MOVW	$1, R8
-	BL	cacheall(SB)
+	BL	wholecache(SB)
 	MOVW.P	8(R13), R15
 
 TEXT cacheuwbinv(SB), $-4
@@ -85,7 +85,7 @@ TEXT l2cacheuwb(SB), $-4
 	MOVW.W	R14, -8(R13)
 	MOVW	$cachedwb_sw(SB), R0
 	MOVW	$2, R8
-	BL	cacheall(SB)
+	BL	wholecache(SB)
 	MOVW.P	8(R13), R15
 
 TEXT l2cacheuwbinv(SB), $-4
@@ -97,7 +97,7 @@ TEXT l2cacheuwbinv(SB), $-4
 
 	MOVW	$cachedwbinv_sw(SB), R0
 	MOVW	$2, R8
-	BL	cacheall(SB)
+	BL	wholecache(SB)
 	BL	l2cacheuinv(SB)
 
 	MOVM.IA.W (R13), [R1]	/* restore R1 (saved CPSR) */
@@ -108,7 +108,7 @@ TEXT l2cacheuinv(SB), $-4
 	MOVW.W	R14, -8(R13)
 	MOVW	$cachedinv_sw(SB), R0
 	MOVW	$2, R8
-	BL	cacheall(SB)
+	BL	wholecache(SB)
 	MOVW.P	8(R13), R15
 
 /*
@@ -129,7 +129,7 @@ TEXT l2cacheuinv(SB), $-4
  *
  * initial translation by 5c, then massaged by hand.
  */
-TEXT cacheall+0(SB), $-4
+TEXT wholecache+0(SB), $-4
 	MOVW	R0, R1		/* save argument for inner loop in R1 */
 	SUB	$1, R8		/* convert cache level to zero origin */
 

+ 1 - 1
sys/src/9/omap/fns.h

@@ -109,7 +109,7 @@ extern void fpuprocrestore(Proc*);
 extern void fpuprocsave(Proc*);
 extern void fpusysprocsetup(Proc*);
 extern void fpusysrfork(Ureg*);
-extern void fpusysrforkchild(Proc*, Proc*);
+extern void fpusysrforkchild(Proc*, Ureg*, Proc*);
 extern int fpuemu(Ureg*);
 
 /*

+ 2 - 2
sys/src/9/omap/main.c

@@ -472,7 +472,7 @@ bootargs(uintptr base)
 	 * of the argument list checked in syscall.
 	 */
 	i = oargblen+1;
-	p = UINT2PTR(STACKALIGN(base + PGSIZE - sizeof(up->s.args) - i));
+	p = UINT2PTR(STACKALIGN(base + BY2PG - sizeof(up->s.args) - i));
 	memmove(p, oargb, i);
 
 	/*
@@ -485,7 +485,7 @@ bootargs(uintptr base)
 	 * unused so it doesn't matter (at the moment...).
 	 */
 	av = (char**)(p - (oargc+2)*sizeof(char*));
-	ssize = base + PGSIZE - PTR2UINT(av);
+	ssize = base + BY2PG - PTR2UINT(av);
 	*av++ = (char*)oargc;
 	for(i = 0; i < oargc; i++)
 		*av++ = (oargv[i] - oargb) + (p - base) + (USTKTOP - BY2PG);

+ 4 - 5
sys/src/9/omap/mem.h

@@ -34,13 +34,13 @@
 /*
  * Sizes
  */
-#define	PGSIZE		(4*KiB)			/* bytes per page */
-#define	PGSHIFT		12			/* log(PGZIZE) */
-#define	PGROUND(s)	ROUNDUP(s, PGSIZE)
+#define	BY2PG		(4*KiB)			/* bytes per page */
+#define	PGSHIFT		12			/* log(BY2PG) */
+#define	PGROUND(s)	ROUNDUP(s, BY2PG)
 #define	ROUND(s, sz)	(((s)+(sz-1))&~(sz-1))
 
 #define	MAXMACH		1			/* max # cpus system can run */
-#define	MACHSIZE	(PGSIZE)
+#define	MACHSIZE	BY2PG
 
 #define KSTKSIZE	(16*KiB)			/* was 8K */
 #define STACKALIGN(sp)	((sp) & ~3)		/* bug: assure with alloc */
@@ -91,7 +91,6 @@
  * Sizes
  */
 #define BI2BY		8			/* bits per byte */
-#define BY2PG		PGSIZE
 #define BY2SE		4
 #define BY2WD		4
 #define BY2V		8			/* only used in xalloc.c */

+ 1 - 1
sys/src/9/omap/mmu.c

@@ -440,7 +440,7 @@ vmap(uintptr pa, usize size)
 	o = pa & (BY2PG-1);
 	pa -= o;
 	size += o;
-	size = ROUNDUP(size, PGSIZE);
+	size = ROUNDUP(size, BY2PG);
 
 	va = kseg0|pa;
 	pae = mmukmap(va, pa, size);

+ 1 - 1
sys/src/9/omap/softfpu.c

@@ -53,7 +53,7 @@ fpusysrfork(Ureg*)
 }
 
 void
-fpusysrforkchild(Proc*, Proc*)
+fpusysrforkchild(Proc*, Ureg *, Proc*)
 {
 	/*
 	 * Called later in sysrfork() via the machine-dependent

+ 2 - 0
sys/src/9/omap/syscall.c

@@ -328,4 +328,6 @@ forkchild(Proc *p, Ureg *ureg)
 	/* Things from bottom of syscall which were never executed */
 	p->psstate = 0;
 	p->insyscall = 0;
+
+	fpusysrforkchild(p, cureg, up);
 }