CVS commit: src/sys/arch/powerpc/powerpc

2021-03-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Sat Mar  6 08:34:58 UTC 2021

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
For ibm4xx and booke, restore saved PSL_EE bit as done for oea,
instead of forcibly enabling interrupts.


To generate a diff of this commit:
cvs rdiff -u -r1.64 -r1.65 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.64 src/sys/arch/powerpc/powerpc/locore_subr.S:1.65
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.64	Sat Mar  6 08:08:19 2021
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Sat Mar  6 08:34:58 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.64 2021/03/06 08:08:19 rin Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.65 2021/03/06 08:34:58 rin Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -401,7 +401,7 @@ _ENTRY(softint_fast_dispatch)
 	addi	%r1, %r5, USPACE - FRAMELEN - CALLFRAMELEN
 
 #if defined(PPC_IBM4XX) || defined(PPC_BOOKE)
-	wrteei	1			/* interrupts are okay again */
+	wrtee	%r29			/* interrupts are okay again */
 #else /* PPC_OEA */
 	mtmsr	%r29
 #endif



CVS commit: src/sys/arch/powerpc/powerpc

2021-03-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Sat Mar  6 08:32:17 UTC 2021

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
Convert to KASSERTMSG(9) to display wrong IPL.


To generate a diff of this commit:
cvs rdiff -u -r1.81 -r1.82 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.81 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.82
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.81	Sat Mar  6 08:08:19 2021
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Sat Mar  6 08:32:17 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.81 2021/03/06 08:08:19 rin Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.82 2021/03/06 08:32:17 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.81 2021/03/06 08:08:19 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.82 2021/03/06 08:32:17 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -381,7 +381,8 @@ void
 cpu_idle(void)
 {
 	KASSERT(mfmsr() & PSL_EE);
-	KASSERT(curcpu()->ci_cpl == IPL_NONE);
+	KASSERTMSG(curcpu()->ci_cpl == IPL_NONE,
+	"ci_cpl = %d", curcpu()->ci_cpl);
 	(*curcpu()->ci_idlespin)();
 }
 



CVS commit: src/sys/arch/powerpc/powerpc

2021-02-19 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Sat Feb 20 01:57:54 UTC 2021

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
Query real-mode? at startup and cache the result.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.28 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.29
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.28	Fri Feb 19 05:21:39 2021
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Sat Feb 20 01:57:54 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.28 2021/02/19 05:21:39 thorpej Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.29 2021/02/20 01:57:54 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2021 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.28 2021/02/19 05:21:39 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.29 2021/02/20 01:57:54 thorpej Exp $");
 
 #include 
 #include 
@@ -91,6 +91,8 @@ __KERNEL_RCSID(0, "$NetBSD: ofw_machdep.
 int	ofw_root;
 int	ofw_chosen;
 
+bool	ofw_real_mode;
+
 /*
  * Bootstrap console support functions.
  */
@@ -411,6 +413,21 @@ ofw_bootstrap_get_translations(void)
 	}
 }
 
+static bool
+ofw_option_truefalse(const char *prop, int proplen)
+{
+	/* These are all supposed to be strings. */
+	switch (prop[0]) {
+	case 'y':
+	case 'Y':
+	case 't':
+	case 'T':
+	case '1':
+		return true;
+	}
+	return false;
+}
+
 /*
  * Called from ofwinit() very early in bootstrap.  We are still
  * running on the stack provided by OpenFirmware and in the same
@@ -421,6 +438,9 @@ ofw_bootstrap_get_translations(void)
 void
 ofw_bootstrap(void)
 {
+	char prop[32];
+	int handle, proplen;
+
 	/* Stash the handles for "/" and "/chosen" for convenience later. */
 	ofw_root = OF_finddevice("/");
 	ofw_chosen = OF_finddevice("/chosen");
@@ -428,6 +448,19 @@ ofw_bootstrap(void)
 	/* Initialize the early bootstrap console. */
 	ofw_bootstrap_console();
 
+	/* Check to see if we're running in real-mode. */
+	handle = OF_finddevice("/options");
+	if (handle != -1) {
+		proplen = OF_getprop(handle, "real-mode?", prop, sizeof(prop));
+		if (proplen > 0) {
+			ofw_real_mode = ofw_option_truefalse(prop, proplen);
+		} else {
+			ofw_real_mode = false;
+		}
+	}
+	aprint_normal("OpenFirmware running in %s-mode\n",
+	ofw_real_mode ? "real" : "virtual");
+
 	/* Get #address-cells and #size-cells to fething memory info. */
 	if (OF_getprop(ofw_root, "#address-cells", _address_cells,
 		   sizeof(ofw_address_cells)) <= 0)



CVS commit: src/sys/arch/powerpc/powerpc

2021-02-04 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Fri Feb  5 00:06:12 UTC 2021

Modified Files:
src/sys/arch/powerpc/powerpc: openfirm.c

Log Message:
s/bootspec/bstr/g to avoid shadowing a global.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/powerpc/powerpc/openfirm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/openfirm.c
diff -u src/sys/arch/powerpc/powerpc/openfirm.c:1.31 src/sys/arch/powerpc/powerpc/openfirm.c:1.32
--- src/sys/arch/powerpc/powerpc/openfirm.c:1.31	Mon Jul  6 09:34:18 2020
+++ src/sys/arch/powerpc/powerpc/openfirm.c	Fri Feb  5 00:06:11 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: openfirm.c,v 1.31 2020/07/06 09:34:18 rin Exp $	*/
+/*	$NetBSD: openfirm.c,v 1.32 2021/02/05 00:06:11 thorpej Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: openfirm.c,v 1.31 2020/07/06 09:34:18 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: openfirm.c,v 1.32 2021/02/05 00:06:11 thorpej Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_multiprocessor.h"
@@ -603,7 +603,7 @@ OF_start_cpu(int phandle, u_int pc, int 
 #endif
 
 void
-OF_boot(const char *bootspec)
+OF_boot(const char *bstr)
 {
 	static struct {
 		const char *name;
@@ -617,10 +617,10 @@ OF_boot(const char *bootspec)
 	};
 	int l;
 
-	if ((l = strlen(bootspec)) >= PAGE_SIZE)
+	if ((l = strlen(bstr)) >= PAGE_SIZE)
 		panic("OF_boot");
 	ofw_stack();
-	ofbcopy(bootspec, OF_buf, l + 1);
+	ofbcopy(bstr, OF_buf, l + 1);
 	args.bootspec = OF_buf;
 	openfirmware();
 	panic("OF_boot didn't");



CVS commit: src/sys/arch/powerpc/powerpc

2021-01-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Wed Jan 27 03:17:24 UTC 2021

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match".  Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.25 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.26
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.25	Fri Feb 28 05:44:39 2014
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Wed Jan 27 03:17:24 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.25 2014/02/28 05:44:39 matt Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.26 2021/01/27 03:17:24 thorpej Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.25 2014/02/28 05:44:39 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.26 2021/01/27 03:17:24 thorpej Exp $");
 
 #include 
 #include 
@@ -151,7 +151,7 @@ mem_regions(struct mem_region **memp, st
 	 * according to comments in FreeBSD all Apple OF has 32bit values in
 	 * "available", no matter what the cell sizes are
 	 */
-	if (of_compatible(hroot, macrisc) != -1) {
+	if (of_compatible(hroot, macrisc)) {
 		DPRINTF("this appears to be a mac...\n");
 		acells = 1;
 		scells = 1;



CVS commit: src/sys/arch/powerpc/powerpc

2020-10-15 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Thu Oct 15 18:57:16 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: process_machdep.c

Log Message:
Add missing 'error' declaration


To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/powerpc/powerpc/process_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/process_machdep.c
diff -u src/sys/arch/powerpc/powerpc/process_machdep.c:1.40 src/sys/arch/powerpc/powerpc/process_machdep.c:1.41
--- src/sys/arch/powerpc/powerpc/process_machdep.c:1.40	Thu Oct 15 17:37:36 2020
+++ src/sys/arch/powerpc/powerpc/process_machdep.c	Thu Oct 15 18:57:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: process_machdep.c,v 1.40 2020/10/15 17:37:36 mgorny Exp $	*/
+/*	$NetBSD: process_machdep.c,v 1.41 2020/10/15 18:57:16 martin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.40 2020/10/15 17:37:36 mgorny Exp $");
+__KERNEL_RCSID(0, "$NetBSD: process_machdep.c,v 1.41 2020/10/15 18:57:16 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -193,7 +193,7 @@ ptrace_machdep_dorequest(struct lwp *l, 
 {
 	struct uio uio;
 	struct iovec iov;
-	int write = 0;
+	int write = 0, error;
 
 	switch (req) {
 	case PT_SETVECREGS:



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-15 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Wed Jul 15 07:58:26 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: trap.c

Log Message:
Rename emulated_opcode() to emulate_privileged() for clarity.
No functional changes.


To generate a diff of this commit:
cvs rdiff -u -r1.161 -r1.162 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.161 src/sys/arch/powerpc/powerpc/trap.c:1.162
--- src/sys/arch/powerpc/powerpc/trap.c:1.161	Mon Jul  6 11:24:57 2020
+++ src/sys/arch/powerpc/powerpc/trap.c	Wed Jul 15 07:58:26 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.161 2020/07/06 11:24:57 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.162 2020/07/15 07:58:26 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -35,7 +35,7 @@
 #define	__UCAS_PRIVATE
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.161 2020/07/06 11:24:57 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.162 2020/07/15 07:58:26 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -69,7 +69,7 @@ __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.1
 #include 
 #include 
 
-static int emulated_opcode(struct lwp *, struct trapframe *);
+static int emulate_privileged(struct lwp *, struct trapframe *);
 static int fix_unaligned(struct lwp *, struct trapframe *);
 static inline vaddr_t setusr(vaddr_t, size_t *);
 static inline void unsetusr(void);
@@ -435,7 +435,7 @@ vm_signal:
 ksi.ksi_signo = SIGFPE;
 ksi.ksi_code = fpu_get_fault_code();
 			} else if (tf->tf_srr1 & 0x4) {
-if (emulated_opcode(l, tf)) {
+if (emulate_privileged(l, tf)) {
 	tf->tf_srr0 += 4;
 	break;
 }
@@ -1076,8 +1076,8 @@ fix_unaligned(struct lwp *l, struct trap
 	return -1;
 }
 
-int
-emulated_opcode(struct lwp *l, struct trapframe *tf)
+static int
+emulate_privileged(struct lwp *l, struct trapframe *tf)
 {
 	uint32_t opcode;
 



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-12 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Sun Jul 12 21:18:01 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: trap_subr.S

Log Message:
No need to work around for IBM405 Errata 77; ibm4xx does not use this file.


To generate a diff of this commit:
cvs rdiff -u -r1.83 -r1.84 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap_subr.S
diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.83 src/sys/arch/powerpc/powerpc/trap_subr.S:1.84
--- src/sys/arch/powerpc/powerpc/trap_subr.S:1.83	Mon Jul  6 11:09:15 2020
+++ src/sys/arch/powerpc/powerpc/trap_subr.S	Sun Jul 12 21:18:01 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.83 2020/07/06 11:09:15 rin Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.84 2020/07/12 21:18:01 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -321,7 +321,6 @@ dsitrap_fix_dbat7:
 	ldreg	%r30,(CI_DISISAVE+CPUSAVE_R30)(%r1)	/* restore r30 */
 	ldreg	%r31,(CI_DISISAVE+CPUSAVE_R31)(%r1)	/* restore r31 */
 	mfsprg1	%r1
-	IBM405_ERRATA77_SYNC
 	RFI/* return to trapped code */
 1:
 #endif	/* !PPC_MPC8XX */
@@ -394,7 +393,6 @@ _C_LABEL(dsi601trap):
 	ldreg	%r30,(CI_DISISAVE+CPUSAVE_R30)(%r1)	/* restore r30 */
 	ldreg	%r31,(CI_DISISAVE+CPUSAVE_R31)(%r1)	/* restore r31 */
 	mfsprg1	%r1
-	IBM405_ERRATA77_SYNC
 	RFI/* return to trapped code */
 1:
 	mflr	%r28			/* save LR */
@@ -511,7 +509,6 @@ _C_LABEL(tlbimiss):
 	srwi	%r1,%r1,8		/* get byte 7 of pte */
 	tlbli	%r0			/* load the itlb */
 	stb	%r1,6(%r2)		/* update page table */
-	IBM405_ERRATA77_SYNC
 	RFI
 
 3:	/* not found in pteg */
@@ -571,7 +568,6 @@ _C_LABEL(tlbdlmiss):
 	srwi	%r1,%r1,8		/* get byte 7 of pte */
 	tlbld	%r0			/* load the dtlb */
 	stb	%r1,6(%r2)		/* update page table */
-	IBM405_ERRATA77_SYNC
 	RFI
 
 3:	/* not found in pteg */
@@ -628,7 +624,6 @@ _C_LABEL(tlbdsmiss):
 	mtcrf	0x80,%r3		/* and restore */
 	mtspr	SPR_RPA,%r1		/* set the pte */
 	tlbld	%r0			/* load the dtlb */
-	IBM405_ERRATA77_SYNC
 	RFI
 
 3:	/* not found in pteg */
@@ -1002,7 +997,6 @@ trapleave:
 	FRAME_RESTORE_CALLEE
 intrleave:
 	FRAME_LEAVE(CI_TEMPSAVE)
-	IBM405_ERRATA77_SYNC
 	RFI
 
 /*
@@ -1226,7 +1220,6 @@ ddbtrap:
 	beq	trapagain
 	FRAME_RESTORE_CALLEE
 	FRAME_LEAVE(CI_DDBSAVE)
-	IBM405_ERRATA77_SYNC
 	RFI
 #endif /* DDB || KGDB */
 



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:24:57 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: trap.c

Log Message:
Stop using DDBX which is defined nowhere.


To generate a diff of this commit:
cvs rdiff -u -r1.160 -r1.161 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.160 src/sys/arch/powerpc/powerpc/trap.c:1.161
--- src/sys/arch/powerpc/powerpc/trap.c:1.160	Mon Jul  6 11:23:59 2020
+++ src/sys/arch/powerpc/powerpc/trap.c	Mon Jul  6 11:24:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.160 2020/07/06 11:23:59 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.161 2020/07/06 11:24:57 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -35,7 +35,7 @@
 #define	__UCAS_PRIVATE
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.160 2020/07/06 11:23:59 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.161 2020/07/06 11:24:57 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -486,7 +486,7 @@ vm_signal:
 	default:
 		printf("trap type %x at %lx\n", type, tf->tf_srr0);
 brain_damage2:
-#ifdef DDBX
+#if defined(DDB) && 0 /* XXX */
 		if (kdb_trap(type, tf))
 			return;
 #endif



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:23:59 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: trap.c

Log Message:
This file is not used for ibm4xx.


To generate a diff of this commit:
cvs rdiff -u -r1.159 -r1.160 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.159 src/sys/arch/powerpc/powerpc/trap.c:1.160
--- src/sys/arch/powerpc/powerpc/trap.c:1.159	Mon Jul  6 11:08:21 2020
+++ src/sys/arch/powerpc/powerpc/trap.c	Mon Jul  6 11:23:59 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.159 2020/07/06 11:08:21 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.160 2020/07/06 11:23:59 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -35,7 +35,7 @@
 #define	__UCAS_PRIVATE
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.159 2020/07/06 11:08:21 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.160 2020/07/06 11:23:59 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -160,7 +160,7 @@ trap(struct trapframe *tf)
 	trunc_page(va), false)) {
 	return;
 }
-#if defined(DIAGNOSTIC) && !defined(PPC_OEA64) && !defined (PPC_IBM4XX)
+#if defined(DIAGNOSTIC) && !defined(PPC_OEA64)
 			} else if ((va >> ADDR_SR_SHFT) == USER_SR) {
 printf("trap: kernel %s DSI trap @ %#lx by %#lx"
 " (DSISR %#x): USER_SR unset\n",



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:09:15 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: trap_subr.S

Log Message:
Include required opt_*.h for sure.


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap_subr.S
diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.82 src/sys/arch/powerpc/powerpc/trap_subr.S:1.83
--- src/sys/arch/powerpc/powerpc/trap_subr.S:1.82	Mon Jul  6 09:34:18 2020
+++ src/sys/arch/powerpc/powerpc/trap_subr.S	Mon Jul  6 11:09:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.82 2020/07/06 09:34:18 rin Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.83 2020/07/06 11:09:15 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -40,6 +40,9 @@
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
+#include "opt_ddb.h"
+#include "opt_kgdb.h"
+#include "opt_ppcarch.h"
 #endif
 
 /* LINTSTUB: include  */



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:08:22 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: trap.c

Log Message:
- Drop unused opt_multiprocessor.h.
- Include missing opt_ppcarch.h.


To generate a diff of this commit:
cvs rdiff -u -r1.158 -r1.159 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.158 src/sys/arch/powerpc/powerpc/trap.c:1.159
--- src/sys/arch/powerpc/powerpc/trap.c:1.158	Mon Jul  6 09:34:18 2020
+++ src/sys/arch/powerpc/powerpc/trap.c	Mon Jul  6 11:08:21 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.158 2020/07/06 09:34:18 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.159 2020/07/06 11:08:21 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -35,12 +35,12 @@
 #define	__UCAS_PRIVATE
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.158 2020/07/06 09:34:18 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.159 2020/07/06 11:08:21 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
 #include "opt_ddb.h"
-#include "opt_multiprocessor.h"
+#include "opt_ppcarch.h"
 #endif
 
 #include 



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:07:39 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: syscall.c

Log Message:
Drop unused opt_altivec.h and opt_multiprocessor.h.


To generate a diff of this commit:
cvs rdiff -u -r1.56 -r1.57 src/sys/arch/powerpc/powerpc/syscall.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/syscall.c
diff -u src/sys/arch/powerpc/powerpc/syscall.c:1.56 src/sys/arch/powerpc/powerpc/syscall.c:1.57
--- src/sys/arch/powerpc/powerpc/syscall.c:1.56	Mon Jul  6 09:34:18 2020
+++ src/sys/arch/powerpc/powerpc/syscall.c	Mon Jul  6 11:07:39 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.56 2020/07/06 09:34:18 rin Exp $	*/
+/*	$NetBSD: syscall.c,v 1.57 2020/07/06 11:07:39 rin Exp $	*/
 
 /*
  * Copyright (C) 2002 Matt Thomas
@@ -35,11 +35,6 @@
 /* DO NOT INCLUDE opt_compat_XXX.h */
 /* If needed, they will be included by file that includes this one */
 
-#ifdef _KERNEL_OPT
-#include "opt_altivec.h"
-#include "opt_multiprocessor.h"
-#endif
-
 #include 
 #include 
 #include 
@@ -64,7 +59,7 @@
 #define EMULNAME(x)	(x)
 #define EMULNAMEU(x)	(x)
 
-__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.56 2020/07/06 09:34:18 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.57 2020/07/06 11:07:39 rin Exp $");
 
 void
 md_child_return(struct lwp *l)



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:06:52 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
Drop unused opt_lockdebug.h.


To generate a diff of this commit:
cvs rdiff -u -r1.62 -r1.63 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.62 src/sys/arch/powerpc/powerpc/locore_subr.S:1.63
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.62	Mon Jul  6 09:34:18 2020
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Mon Jul  6 11:06:52 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.62 2020/07/06 09:34:18 rin Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.63 2020/07/06 11:06:52 rin Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -75,7 +75,6 @@
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
-#include "opt_lockdebug.h"
 #include "opt_modular.h"
 #include "opt_multiprocessor.h"
 #include "opt_ppcarch.h"



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:05:54 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: kgdb_machdep.c

Log Message:
- Drop unused opt_ddb.h.
- Include missing opt_ppcarch.h.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/powerpc/powerpc/kgdb_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/kgdb_machdep.c
diff -u src/sys/arch/powerpc/powerpc/kgdb_machdep.c:1.23 src/sys/arch/powerpc/powerpc/kgdb_machdep.c:1.24
--- src/sys/arch/powerpc/powerpc/kgdb_machdep.c:1.23	Mon Jul  6 09:34:18 2020
+++ src/sys/arch/powerpc/powerpc/kgdb_machdep.c	Mon Jul  6 11:05:54 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kgdb_machdep.c,v 1.23 2020/07/06 09:34:18 rin Exp $	*/
+/*	$NetBSD: kgdb_machdep.c,v 1.24 2020/07/06 11:05:54 rin Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -36,10 +36,10 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: kgdb_machdep.c,v 1.23 2020/07/06 09:34:18 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kgdb_machdep.c,v 1.24 2020/07/06 11:05:54 rin Exp $");
 
 #ifdef _KERNEL_OPT
-#include "opt_ddb.h"
+#include "opt_ppcarch.h"
 #endif
 
 /*



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 11:05:05 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: core_machdep.c

Log Message:
Drop unused opt_ppcarch.h.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/powerpc/powerpc/core_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/core_machdep.c
diff -u src/sys/arch/powerpc/powerpc/core_machdep.c:1.10 src/sys/arch/powerpc/powerpc/core_machdep.c:1.11
--- src/sys/arch/powerpc/powerpc/core_machdep.c:1.10	Wed Nov 20 19:37:52 2019
+++ src/sys/arch/powerpc/powerpc/core_machdep.c	Mon Jul  6 11:05:05 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: core_machdep.c,v 1.10 2019/11/20 19:37:52 pgoyette Exp $	*/
+/*	$NetBSD: core_machdep.c,v 1.11 2020/07/06 11:05:05 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,11 +32,10 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.10 2019/11/20 19:37:52 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: core_machdep.c,v 1.11 2020/07/06 11:05:05 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
-#include "opt_ppcarch.h"
 #endif
 
 #include 



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 08:30:10 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: db_trace.c

Log Message:
db_stack_trace_print():
For ibm4xx, show fault address in dear register also for EXC_DTMISS.


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 src/sys/arch/powerpc/powerpc/db_trace.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/db_trace.c
diff -u src/sys/arch/powerpc/powerpc/db_trace.c:1.58 src/sys/arch/powerpc/powerpc/db_trace.c:1.59
--- src/sys/arch/powerpc/powerpc/db_trace.c:1.58	Wed Feb 28 20:11:09 2018
+++ src/sys/arch/powerpc/powerpc/db_trace.c	Mon Jul  6 08:30:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_trace.c,v 1.58 2018/02/28 20:11:09 mrg Exp $	*/
+/*	$NetBSD: db_trace.c,v 1.59 2020/07/06 08:30:10 rin Exp $	*/
 /*	$OpenBSD: db_trace.c,v 1.3 1997/03/21 02:10:48 niklas Exp $	*/
 
 /*
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.58 2018/02/28 20:11:09 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.59 2020/07/06 08:30:10 rin Exp $");
 
 #include "opt_ppcarch.h"
 
@@ -213,7 +213,9 @@ db_stack_trace_print(db_expr_t addr, boo
 tf->tf_dar);
 #endif
 #ifdef PPC_IBM4XX
-(*pr)("DSI %s trap @ %#x by ",
+trapstr = "DSI";
+dsi:
+(*pr)("%s %s trap @ %#x by ", trapstr,
 tf->tf_esr & ESR_DST ? "write" : "read",
 tf->tf_dear);
 #endif
@@ -241,7 +243,11 @@ db_stack_trace_print(db_expr_t addr, boo
 			case EXC_PERF: trapstr = "PERF"; break;
 			case EXC_SMI: trapstr = "SMI"; break;
 			case EXC_RST: trapstr = "RST"; break;
-			case EXC_DTMISS: trapstr = "DTMISS"; break;
+			case EXC_DTMISS: trapstr = "DTMISS";
+#ifdef PPC_IBM4XX
+goto dsi;
+#endif
+break;
 			case EXC_ITMISS: trapstr = "ITMISS"; break;
 			case EXC_FIT: trapstr = "FIT"; break;
 			case EXC_PIT: trapstr = "PIT"; break;
@@ -278,7 +284,8 @@ db_stack_trace_print(db_expr_t addr, boo
 #endif /* PPC_OEA601 */
 #endif /* PPC_OEA */
 #ifdef PPC_IBM4XX
-			if (tf->tf_exc == EXC_DSI)
+			if (tf->tf_exc == EXC_DSI ||
+			tf->tf_exc == EXC_DTMISS)
 (*pr)(" dear=%#x", tf->tf_dear);
 			(*pr)(" esr=%#x pid=%#x", tf->tf_esr, tf->tf_pid);
 #endif



CVS commit: src/sys/arch/powerpc/powerpc

2020-07-06 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Jul  6 08:10:57 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: intr_stubs.c

Log Message:
Make this compile without __HAVE_FAST_SOFTINTS for debug.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/powerpc/powerpc/intr_stubs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/intr_stubs.c
diff -u src/sys/arch/powerpc/powerpc/intr_stubs.c:1.5 src/sys/arch/powerpc/powerpc/intr_stubs.c:1.6
--- src/sys/arch/powerpc/powerpc/intr_stubs.c:1.5	Wed Oct 19 00:08:42 2016
+++ src/sys/arch/powerpc/powerpc/intr_stubs.c	Mon Jul  6 08:10:57 2020
@@ -38,7 +38,7 @@
 
 #include 
 
-__KERNEL_RCSID(0, "$NetBSD: intr_stubs.c,v 1.5 2016/10/19 00:08:42 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr_stubs.c,v 1.6 2020/07/06 08:10:57 rin Exp $");
 
 #include 
 #include 
@@ -137,6 +137,7 @@ splx(int ipl)
 	return (*powerpc_intrsw->intrsw_splx)(ipl);
 }
 
+#ifdef __HAVE_FAST_SOFTINTS
 void softint_init_md(struct lwp *, u_int, uintptr_t *) __stub;
 
 void
@@ -152,6 +153,7 @@ softint_trigger(uintptr_t machdep)
 {
 	(*powerpc_intrsw->intrsw_softint_trigger)(machdep);
 }
+#endif
 
 void intr_cpu_attach(struct cpu_info *) __stub;
 



CVS commit: src/sys/arch/powerpc/powerpc

2020-02-24 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Feb 25 00:42:12 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S trap.c

Log Message:
Comment out do_ucas_32(), only user of which, _ucas_32(), is commented out
since powerpc/trap.c rev 1.156:


http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/powerpc/powerpc/trap.c#rev1.156


To generate a diff of this commit:
cvs rdiff -u -r1.59 -r1.60 src/sys/arch/powerpc/powerpc/locore_subr.S
cvs rdiff -u -r1.156 -r1.157 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.59 src/sys/arch/powerpc/powerpc/locore_subr.S:1.60
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.59	Wed Jan  8 20:59:19 2020
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Tue Feb 25 00:42:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.59 2020/01/08 20:59:19 skrll Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.60 2020/02/25 00:42:12 rin Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -570,6 +570,7 @@ ENTRY(cpu_spinstart)
 
 #endif /*MULTIPROCESSOR + OEA*/
 
+#if 0 /* XXX CPU configuration spaghetti */
 /*
  * int do_ucas_32(uint32_t *uptr, uint32_t old, uint32_t new, uint32_t *ret);
  */
@@ -585,3 +586,4 @@ ENTRY(do_ucas_32)
 	li	%r3,0
 	stw	%r10,0(%r6)
 	blr
+#endif

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.156 src/sys/arch/powerpc/powerpc/trap.c:1.157
--- src/sys/arch/powerpc/powerpc/trap.c:1.156	Sun Apr  7 05:25:56 2019
+++ src/sys/arch/powerpc/powerpc/trap.c	Tue Feb 25 00:42:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.156 2019/04/07 05:25:56 thorpej Exp $	*/
+/*	$NetBSD: trap.c,v 1.157 2020/02/25 00:42:12 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.156 2019/04/07 05:25:56 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.157 2020/02/25 00:42:12 rin Exp $");
 
 #include "opt_altivec.h"
 #include "opt_ddb.h"
@@ -72,8 +72,6 @@ static int fix_unaligned(struct lwp *, s
 static inline vaddr_t setusr(vaddr_t, size_t *);
 static inline void unsetusr(void);
 
-extern int do_ucas_32(volatile int32_t *, int32_t, int32_t, int32_t *);
-
 void trap(struct trapframe *);	/* Called from locore / trap_subr */
 /* Why are these not defined in a header? */
 int badaddr(void *, size_t);
@@ -686,6 +684,7 @@ kcopy(const void *src, void *dst, size_t
 int
 _ucas_32(volatile uint32_t *uptr, uint32_t old, uint32_t new, uint32_t *ret)
 {
+	extern int do_ucas_32(volatile int32_t *, int32_t, int32_t, int32_t *);
 	vaddr_t uva = (vaddr_t)uptr;
 	vaddr_t p;
 	struct faultbuf env;



CVS commit: src/sys/arch/powerpc/powerpc

2020-02-24 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Feb 24 11:49:17 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
Oops, revert previous; fix build for PPC_OEA64 || PPC_OEA64_BRIDGE.
oea and booke seem to work without direct-mapped and physically
contiguous u-area.


To generate a diff of this commit:
cvs rdiff -u -r1.101 -r1.102 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.101 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.102
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.101	Fri Feb 21 13:38:05 2020
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Mon Feb 24 11:49:17 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.101 2020/02/21 13:38:05 rin Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.102 2020/02/24 11:49:17 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.101 2020/02/21 13:38:05 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.102 2020/02/24 11:49:17 rin Exp $");
 
 #include "opt_altivec.h"
 #include "opt_multiprocessor.h"
@@ -310,11 +310,6 @@ vunmapbuf(struct buf *bp, vsize_t len)
 	bp->b_saveaddr = 0;
 }
 
-#if UPAGES > 1 && \
-(!defined(__HAVE_CPU_UAREA_ROUTINES) || !defined(PMAP_MAP_POOLPAGE))
-#error "We need physically contiguous pages for u-area."
-#endif
-
 #ifdef __HAVE_CPU_UAREA_ROUTINES
 void *
 cpu_uarea_alloc(bool system)



CVS commit: src/sys/arch/powerpc/powerpc

2020-02-21 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Fri Feb 21 13:38:05 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
When UPAGES > 1, both __HAVE_CPU_UAREA_ROUTINES and PMAP_MAP_POOLPAGE
must be defined in order to allocate physically contiguous memory for
u-area.


To generate a diff of this commit:
cvs rdiff -u -r1.100 -r1.101 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.100 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.101
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.100	Mon Jul  6 05:25:29 2015
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Fri Feb 21 13:38:05 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.100 2015/07/06 05:25:29 matt Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.101 2020/02/21 13:38:05 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.100 2015/07/06 05:25:29 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.101 2020/02/21 13:38:05 rin Exp $");
 
 #include "opt_altivec.h"
 #include "opt_multiprocessor.h"
@@ -310,6 +310,11 @@ vunmapbuf(struct buf *bp, vsize_t len)
 	bp->b_saveaddr = 0;
 }
 
+#if UPAGES > 1 && \
+(!defined(__HAVE_CPU_UAREA_ROUTINES) || !defined(PMAP_MAP_POOLPAGE))
+#error "We need physically contiguous pages for u-area."
+#endif
+
 #ifdef __HAVE_CPU_UAREA_ROUTINES
 void *
 cpu_uarea_alloc(bool system)



CVS commit: src/sys/arch/powerpc/powerpc

2020-02-19 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Thu Feb 20 06:12:47 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: fpu.c powerpc_machdep.c

Log Message:
Provide no-op's as pcu_ops_md_defs[PCU_FPU] even if !PPC_HAVE_FPU.

This is required by subr_pcu.c rev 1.21 and later:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/kern/subr_pcu.c#rev1.21

Otherwise, panic occurs when FP instruction is emulated on machines
without FPU.

Note that PowerPC UISA as well as SVR4 ABI require FP instructions,
and emulation is enabled unconditionally on machines without FPU.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/powerpc/powerpc/fpu.c
cvs rdiff -u -r1.76 -r1.77 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fpu.c
diff -u src/sys/arch/powerpc/powerpc/fpu.c:1.38 src/sys/arch/powerpc/powerpc/fpu.c:1.39
--- src/sys/arch/powerpc/powerpc/fpu.c:1.38	Thu Mar 16 16:13:20 2017
+++ src/sys/arch/powerpc/powerpc/fpu.c	Thu Feb 20 06:12:47 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: fpu.c,v 1.38 2017/03/16 16:13:20 chs Exp $	*/
+/*	$NetBSD: fpu.c,v 1.39 2020/02/20 06:12:47 rin Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.38 2017/03/16 16:13:20 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.39 2020/02/20 06:12:47 rin Exp $");
 
 #include "opt_multiprocessor.h"
 
@@ -47,19 +47,15 @@ __KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.38
 #include 
 #include 
 
-#ifdef PPC_HAVE_FPU
 static void fpu_state_load(lwp_t *, u_int);
 static void fpu_state_save(lwp_t *);
 static void fpu_state_release(lwp_t *);
-#endif
 
 const pcu_ops_t fpu_ops = {
 	.pcu_id = PCU_FPU,
-#ifdef PPC_HAVE_FPU
 	.pcu_state_load = fpu_state_load,
 	.pcu_state_save = fpu_state_save,
 	.pcu_state_release = fpu_state_release,
-#endif
 };
 
 bool
@@ -74,10 +70,10 @@ fpu_mark_used(lwp_t *l)
 	pcu_discard(_ops, l, true);
 }
 
-#ifdef PPC_HAVE_FPU
 void
 fpu_state_load(lwp_t *l, u_int flags)
 {
+#ifdef PPC_HAVE_FPU
 	struct pcb * const pcb = lwp_getpcb(l);
 
 	if ((flags & PCU_VALID) == 0) {
@@ -98,6 +94,7 @@ fpu_state_load(lwp_t *l, u_int flags)
 
 	curcpu()->ci_ev_fpusw.ev_count++;
 	l->l_md.md_utf->tf_srr1 |= PSL_FP|(pcb->pcb_flags & (PCB_FE0|PCB_FE1));
+#endif
 }
 
 /*
@@ -106,6 +103,7 @@ fpu_state_load(lwp_t *l, u_int flags)
 void
 fpu_state_save(lwp_t *l)
 {
+#ifdef PPC_HAVE_FPU
 	struct pcb * const pcb = lwp_getpcb(l);
 
 	const register_t msr = mfmsr();
@@ -117,14 +115,18 @@ fpu_state_save(lwp_t *l)
 
 	mtmsr(msr);
 	__asm volatile ("isync");
+#endif
 }
 
 void
 fpu_state_release(lwp_t *l)
 {
+#ifdef PPC_HAVE_FPU
 	l->l_md.md_utf->tf_srr1 &= ~PSL_FP;
+#endif
 }
 
+#ifdef PPC_HAVE_FPU
 #define	STICKYBITS	(FPSCR_VX|FPSCR_OX|FPSCR_UX|FPSCR_ZX|FPSCR_XX)
 #define	STICKYSHIFT	25
 #define	MASKBITS	(FPSCR_VE|FPSCR_OE|FPSCR_UE|FPSCR_ZE|FPSCR_XE)

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.76 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.77
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.76	Mon Feb 17 21:49:27 2020
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Thu Feb 20 06:12:47 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.76 2020/02/17 21:49:27 ad Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.77 2020/02/20 06:12:47 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.76 2020/02/17 21:49:27 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.77 2020/02/20 06:12:47 rin Exp $");
 
 #include "opt_altivec.h"
 #include "opt_ddb.h"
@@ -89,9 +89,7 @@ extern int powersave;
 char *booted_kernel;
 
 const pcu_ops_t * const pcu_ops_md_defs[PCU_UNIT_COUNT] = {
-#if defined(PPC_HAVE_FPU)
 	[PCU_FPU] = _ops,
-#endif
 #if defined(ALTIVEC) || defined(PPC_HAVE_SPE)
 	[PCU_VEC] = _ops,
 #endif



CVS commit: src/sys/arch/powerpc/powerpc

2020-02-17 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Mon Feb 17 21:49:27 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
cpu_ast(): no need to call userret(), as the caller does it for us. From rin@.


To generate a diff of this commit:
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.75 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.76
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.75	Thu Dec  5 20:55:24 2019
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Mon Feb 17 21:49:27 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.75 2019/12/05 20:55:24 ad Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.76 2020/02/17 21:49:27 ad Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.75 2019/12/05 20:55:24 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.76 2020/02/17 21:49:27 ad Exp $");
 
 #include "opt_altivec.h"
 #include "opt_ddb.h"
@@ -373,9 +373,6 @@ void
 cpu_ast(struct lwp *l, struct cpu_info *ci)
 {
 	l->l_md.md_astpending = 0;	/* we are about to do it */
-	__insn_barrier();
-	userret(l, l->l_md.md_utf);
-
 	if (l->l_pflag & LP_OWEUPC) {
 		l->l_pflag &= ~LP_OWEUPC;
 		ADDUPROF(l);



CVS commit: src/sys/arch/powerpc/powerpc

2020-01-20 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Tue Jan 21 04:30:14 UTC 2020

Modified Files:
src/sys/arch/powerpc/powerpc: lock_stubs.S

Log Message:
Update for changes to  -- owner field is now bits 5-N.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/powerpc/powerpc/lock_stubs.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/lock_stubs.S
diff -u src/sys/arch/powerpc/powerpc/lock_stubs.S:1.10 src/sys/arch/powerpc/powerpc/lock_stubs.S:1.11
--- src/sys/arch/powerpc/powerpc/lock_stubs.S:1.10	Fri Feb 28 05:38:15 2014
+++ src/sys/arch/powerpc/powerpc/lock_stubs.S	Tue Jan 21 04:30:14 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: lock_stubs.S,v 1.10 2014/02/28 05:38:15 matt Exp $	*/
+/*	$NetBSD: lock_stubs.S,v 1.11 2020/01/21 04:30:14 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -101,8 +101,8 @@ ENTRY(mutex_exit)
 /*
  * void rw_enter(krwlock_t *krw, krw_t op);
  */
-#if RW_READ_INCR != 16
-#error RW_READ_INCR != 16, clrrXi need fixing
+#if RW_READ_INCR != 32
+#error RW_READ_INCR != 32, clrrXi need fixing
 #endif
 #if RW_OWNER != 0
 #error RW_OWNER != 0, ldptr should be ldptru
@@ -115,7 +115,7 @@ ENTRY(rw_enter)
 	bne-	1f
 
 	ldptr	%r9,RW_OWNER(%r3)
-	clrrptri %r9,%r9,4		/* clear low 4 bits */
+	clrrptri %r9,%r9,5		/* clear low 5 bits */
 	addi	%r7,%r9,RW_READ_INCR
 	b	2f
 1:
@@ -140,7 +140,7 @@ ENTRY(rw_tryenter)
 	bne-	1f
 
 	ldptr	%r9,RW_OWNER(%r3)
-	clrrptri %r9,%r9,4		/* clear low 4 bits */
+	clrrptri %r9,%r9,5		/* clear low 5 bits */
 	addi	%r7,%r9,RW_READ_INCR
 	b	2f
 
@@ -169,7 +169,7 @@ ENTRY(rw_exit)
 	andi.	%r0,%r9,RW_WRITE_LOCKED
 	bne-	1f
 
-	clrrptri. %r9,%r9,4		/* clear low 4 bits */
+	clrrptri. %r9,%r9,5		/* clear low 5 bits */
 	beq-	3f			/* if 0, no reader, go slow */
 
 	addi	%r7,%r9,-RW_READ_INCR



CVS commit: src/sys/arch/powerpc/powerpc

2019-12-05 Thread Andrew Doran
Module Name:src
Committed By:   ad
Date:   Thu Dec  5 20:55:24 UTC 2019

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
Need to call userret() from cpu_ast().


To generate a diff of this commit:
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.74 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.75
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.74	Sat Nov 23 19:40:36 2019
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Thu Dec  5 20:55:24 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.74 2019/11/23 19:40:36 ad Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.75 2019/12/05 20:55:24 ad Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.74 2019/11/23 19:40:36 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.75 2019/12/05 20:55:24 ad Exp $");
 
 #include "opt_altivec.h"
 #include "opt_ddb.h"
@@ -373,6 +373,8 @@ void
 cpu_ast(struct lwp *l, struct cpu_info *ci)
 {
 	l->l_md.md_astpending = 0;	/* we are about to do it */
+	__insn_barrier();
+	userret(l, l->l_md.md_utf);
 
 	if (l->l_pflag & LP_OWEUPC) {
 		l->l_pflag &= ~LP_OWEUPC;
@@ -400,7 +402,7 @@ cpu_need_resched(struct cpu_info *ci, st
 		cpu_send_ipi(cpu_index(ci), IPI_AST);
 #endif
 	} else {
-		l->l_md.md_astpending = 1;		/* force call to ast() */
+		l->l_md.md_astpending = 1;	/* force call to cpu_ast() */
 	}
 }
 



CVS commit: src/sys/arch/powerpc/powerpc

2018-12-31 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Dec 31 18:47:46 UTC 2018

Modified Files:
src/sys/arch/powerpc/powerpc: ofwreal.S

Log Message:
use 0 instead of %r0 for dcbst and icbi otherwise binutils-2.31.1 bitch.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/powerpc/powerpc/ofwreal.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofwreal.S
diff -u src/sys/arch/powerpc/powerpc/ofwreal.S:1.13 src/sys/arch/powerpc/powerpc/ofwreal.S:1.14
--- src/sys/arch/powerpc/powerpc/ofwreal.S:1.13	Sun Jun  5 12:52:26 2011
+++ src/sys/arch/powerpc/powerpc/ofwreal.S	Mon Dec 31 13:47:46 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofwreal.S,v 1.13 2011/06/05 16:52:26 matt Exp $	*/
+/*	$NetBSD: ofwreal.S,v 1.14 2018/12/31 18:47:46 christos Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -230,15 +230,15 @@ copy:
 	stw	%r8,20(%r4)
 	stw	%r9,24(%r4)
 	stw	%r10,28(%r4)
-	dcbst	%r0,%r4
-	icbi	%r0,%r4
+	dcbst	0,%r4
+	icbi	0,%r4
 	add	%r3,%r3,%r6
 	add	%r4,%r4,%r6
 	subf.	%r5,%r6,%r5
 	bgt	1b
 
-	dcbst	%r0,%r4
-	icbi	%r0,%r4
+	dcbst	0,%r4
+	icbi	0,%r4
 
 	sync
 	isync



CVS commit: src/sys/arch/powerpc/powerpc

2018-06-15 Thread Valeriy E. Ushakov
Module Name:src
Committed By:   uwe
Date:   Fri Jun 15 22:07:14 UTC 2018

Modified Files:
src/sys/arch/powerpc/powerpc: trap.c

Log Message:
In mtmsr emulation ignore PSL_VEC we set in mfmsr emulation just
above, as it freaks out PSL_USEROK_P().  This is also congruent with
how we handle PSL_FP.

PR port-macppc/53360


To generate a diff of this commit:
cvs rdiff -u -r1.153 -r1.154 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.153 src/sys/arch/powerpc/powerpc/trap.c:1.154
--- src/sys/arch/powerpc/powerpc/trap.c:1.153	Thu Mar 16 16:13:20 2017
+++ src/sys/arch/powerpc/powerpc/trap.c	Fri Jun 15 22:07:14 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.153 2017/03/16 16:13:20 chs Exp $	*/
+/*	$NetBSD: trap.c,v 1.154 2018/06/15 22:07:14 uwe Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.153 2017/03/16 16:13:20 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.154 2018/06/15 22:07:14 uwe Exp $");
 
 #include "opt_altivec.h"
 #include "opt_ddb.h"
@@ -1062,6 +1062,9 @@ emulated_opcode(struct lwp *l, struct tr
 		 * user code isn't allowed to change it.
 		 */
 		msr &= ~PSL_FP;
+#ifdef ALTIVEC
+		msr &= ~PSL_VEC;
+#endif
 
 		/*
 		 * Don't let the user muck with bits he's not allowed to.



CVS commit: src/sys/arch/powerpc/powerpc

2018-05-11 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Fri May 11 22:23:33 UTC 2018

Modified Files:
src/sys/arch/powerpc/powerpc: pmap_subr.c

Log Message:
disable the MULTIPROCESSOR case in pmap_syncicache() because:
- __syncicache() wants a virtual address, not a pa
- this crashes on G5 SMP
- the rest of the function does the same as __syncicache() except it turns
  the MMU off first so physical addresses work
with this, my PCIe G5 boots SMP


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/powerpc/powerpc/pmap_subr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/pmap_subr.c
diff -u src/sys/arch/powerpc/powerpc/pmap_subr.c:1.27 src/sys/arch/powerpc/powerpc/pmap_subr.c:1.28
--- src/sys/arch/powerpc/powerpc/pmap_subr.c:1.27	Wed Feb  1 09:54:03 2012
+++ src/sys/arch/powerpc/powerpc/pmap_subr.c	Fri May 11 22:23:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_subr.c,v 1.27 2012/02/01 09:54:03 matt Exp $	*/
+/*	$NetBSD: pmap_subr.c,v 1.28 2018/05/11 22:23:33 macallan Exp $	*/
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: pmap_subr.c,v 1.27 2012/02/01 09:54:03 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_subr.c,v 1.28 2018/05/11 22:23:33 macallan Exp $");
 
 #include "opt_multiprocessor.h"
 #include "opt_altivec.h"
@@ -425,7 +425,14 @@ pmap_copy_page(paddr_t src, paddr_t dst)
 void
 pmap_syncicache(paddr_t pa, psize_t len)
 {
-#ifdef MULTIPROCESSOR
+
+/* 
+ * XXX
+ * disabling the MULTIPROCESSOR case because:
+ * - _syncicache() takes a virtual addresses
+ * - this causes crashes on G5
+ */
+#ifdef MULTIPROCESSOR__
 	__syncicache((void *)pa, len);
 #else
 	const size_t linewidth = curcpu()->ci_ci.icache_line_size;



CVS commit: src/sys/arch/powerpc/powerpc

2018-05-04 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Fri May  4 17:13:08 UTC 2018

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
when spinning up secondary CPUs, put them in bridge mode if the primary cpu is


To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.55 src/sys/arch/powerpc/powerpc/locore_subr.S:1.56
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.55	Tue Feb 28 17:35:29 2017
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Fri May  4 17:13:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.55 2017/02/28 17:35:29 chs Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.56 2018/05/04 17:13:08 macallan Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -526,6 +526,18 @@ _ENTRY(cpu_lwp_bootstrap)
 ENTRY(cpu_spinup_trampoline)
 	li	%r0,0
 	mtmsr	%r0
+
+	lis	%r5,oeacpufeat@ha
+	lwz	%r5,oeacpufeat@l(%r5)
+	andi.	%r5,%r5,OEACPU_64_BRIDGE
+	beq	6f
+	sync
+	slbia
+	sync
+	isync
+	clrldi	%r0,%r0,32
+	mtmsrd	%r0
+6:
 	isync
 
 	lis	%r4,_C_LABEL(cpu_hatch_stack)@ha



CVS commit: src/sys/arch/powerpc/powerpc

2018-05-02 Thread Frank Wille
Module Name:src
Committed By:   phx
Date:   Wed May  2 08:24:40 UTC 2018

Modified Files:
src/sys/arch/powerpc/powerpc: trap_subr.S

Log Message:
Fixed non-critical typo in tlbdsmiss: %r8 -> 8.


To generate a diff of this commit:
cvs rdiff -u -r1.78 -r1.79 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap_subr.S
diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.78 src/sys/arch/powerpc/powerpc/trap_subr.S:1.79
--- src/sys/arch/powerpc/powerpc/trap_subr.S:1.78	Tue Jul 29 16:19:45 2014
+++ src/sys/arch/powerpc/powerpc/trap_subr.S	Wed May  2 08:24:40 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.78 2014/07/29 16:19:45 joerg Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.79 2018/05/02 08:24:40 phx Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -598,7 +598,7 @@ _C_LABEL(tlbdlmsize) = .-_C_LABEL(tlbdlm
 	.globl	_C_LABEL(tlbdsmiss),_C_LABEL(tlbdsmsize)
 _C_LABEL(tlbdsmiss):
 	mfspr	%r2,SPR_HASH1		/* get first pointer */
-	li	%r1,%r8
+	li	%r1,8
 	mfctr	%r0			/* save counter */
 	mfspr	%r3,SPR_DCMP		/* get first compare value */
 	addi	%r2,%r2,-8		/* predec pointer */



CVS commit: src/sys/arch/powerpc/powerpc

2018-02-28 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Feb 28 20:11:09 UTC 2018

Modified Files:
src/sys/arch/powerpc/powerpc: db_trace.c

Log Message:
switch an assert in backtrace to an error return.


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/powerpc/powerpc/db_trace.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/db_trace.c
diff -u src/sys/arch/powerpc/powerpc/db_trace.c:1.57 src/sys/arch/powerpc/powerpc/db_trace.c:1.58
--- src/sys/arch/powerpc/powerpc/db_trace.c:1.57	Tue Dec 13 11:03:52 2011
+++ src/sys/arch/powerpc/powerpc/db_trace.c	Wed Feb 28 20:11:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_trace.c,v 1.57 2011/12/13 11:03:52 kiyohara Exp $	*/
+/*	$NetBSD: db_trace.c,v 1.58 2018/02/28 20:11:09 mrg Exp $	*/
 /*	$OpenBSD: db_trace.c,v 1.3 1997/03/21 02:10:48 niklas Exp $	*/
 
 /*
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.57 2011/12/13 11:03:52 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.58 2018/02/28 20:11:09 mrg Exp $");
 
 #include "opt_ppcarch.h"
 
@@ -161,7 +161,10 @@ db_stack_trace_print(db_expr_t addr, boo
 	return;
 }
 l = LIST_FIRST(>p_lwps);
-KASSERT(l != NULL);
+if (l == NULL) {
+	(*pr)("trace: no LWP?\n");
+	return;
+}
 			}
 			(*pr)("lid %d ", l->l_lid);
 			pcb = lwp_getpcb(l);



CVS commit: src/sys/arch/powerpc/powerpc

2017-03-08 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Thu Mar  9 00:15:06 UTC 2017

Modified Files:
src/sys/arch/powerpc/powerpc: trap.c

Log Message:
set signo and code correctly for signals triggered by uvm_fault() errors.


To generate a diff of this commit:
cvs rdiff -u -r1.151 -r1.152 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.151 src/sys/arch/powerpc/powerpc/trap.c:1.152
--- src/sys/arch/powerpc/powerpc/trap.c:1.151	Mon Feb 27 06:54:00 2017
+++ src/sys/arch/powerpc/powerpc/trap.c	Thu Mar  9 00:15:06 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.151 2017/02/27 06:54:00 chs Exp $	*/
+/*	$NetBSD: trap.c,v 1.152 2017/03/09 00:15:06 chs Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.151 2017/02/27 06:54:00 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.152 2017/03/09 00:15:06 chs Exp $");
 
 #include "opt_altivec.h"
 #include "opt_ddb.h"
@@ -262,18 +262,28 @@ trap(struct trapframe *tf)
 			tf->tf_dar, tf->tf_srr0, tf->tf_dsisr, rv);
 		}
 		KSI_INIT_TRAP();
-		ksi.ksi_signo = SIGSEGV;
 		ksi.ksi_trap = EXC_DSI;
 		ksi.ksi_addr = (void *)tf->tf_dar;
-		ksi.ksi_code =
-		(tf->tf_dsisr & DSISR_PROTECT ? SEGV_ACCERR : SEGV_MAPERR);
-		if (rv == ENOMEM) {
-			printf("UVM: pid %d.%d (%s), uid %d killed: "
-			   "out of swap\n",
-			   p->p_pid, l->l_lid, p->p_comm,
-			   l->l_cred ?
-			   kauth_cred_geteuid(l->l_cred) : -1);
+vm_signal:
+		switch (rv) {
+		case EINVAL:
+			ksi.ksi_signo = SIGBUS;
+			ksi.ksi_code = BUS_ADRERR;
+			break;
+		case EACCES:
+			ksi.ksi_signo = SIGSEGV;
+			ksi.ksi_code = SEGV_ACCERR;
+			break;
+		case ENOMEM:
 			ksi.ksi_signo = SIGKILL;
+			printf("UVM: pid %d.%d (%s), uid %d killed: "
+			   "out of swap\n", p->p_pid, l->l_lid, p->p_comm,
+			   l->l_cred ? kauth_cred_geteuid(l->l_cred) : -1);
+			break;
+		default:
+			ksi.ksi_signo = SIGSEGV;
+			ksi.ksi_code = SEGV_MAPERR;
+			break;
 		}
 		(*p->p_emul->e_trapsignal)(l, );
 		break;
@@ -323,12 +333,9 @@ trap(struct trapframe *tf)
 			tf->tf_srr0, tf->tf_srr1);
 		}
 		KSI_INIT_TRAP();
-		ksi.ksi_signo = SIGSEGV;
 		ksi.ksi_trap = EXC_ISI;
 		ksi.ksi_addr = (void *)tf->tf_srr0;
-		ksi.ksi_code = (rv == EACCES ? SEGV_ACCERR : SEGV_MAPERR);
-		(*p->p_emul->e_trapsignal)(l, );
-		break;
+		goto vm_signal;
 
 	case EXC_FPU|EXC_USER:
 		ci->ci_ev_fpu.ev_count++;



CVS commit: src/sys/arch/powerpc/powerpc

2017-03-08 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Thu Mar  9 00:14:03 UTC 2017

Modified Files:
src/sys/arch/powerpc/powerpc: fpu.c

Log Message:
use kpreempt_disable() rather than splsoftclock() to disable preemption.


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/powerpc/powerpc/fpu.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fpu.c
diff -u src/sys/arch/powerpc/powerpc/fpu.c:1.36 src/sys/arch/powerpc/powerpc/fpu.c:1.37
--- src/sys/arch/powerpc/powerpc/fpu.c:1.36	Mon Jul  6 01:55:50 2015
+++ src/sys/arch/powerpc/powerpc/fpu.c	Thu Mar  9 00:14:03 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: fpu.c,v 1.36 2015/07/06 01:55:50 matt Exp $	*/
+/*	$NetBSD: fpu.c,v 1.37 2017/03/09 00:14:03 chs Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.36 2015/07/06 01:55:50 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.37 2017/03/09 00:14:03 chs Exp $");
 
 #include "opt_multiprocessor.h"
 
@@ -139,9 +139,10 @@ fpu_get_fault_code(void)
 	uint32_t fpscr, ofpscr;
 	int code;
 
-	int s = splsoftclock();	/* disable preemption */
+	kpreempt_disable();
 
 	struct cpu_info * const ci = curcpu();
+
 	/*
 	 * If we got preempted, we may be running on a different CPU.  So we
 	 * need to check for that.
@@ -180,7 +181,7 @@ fpu_get_fault_code(void)
 		((uint32_t *)>pcb_fpu.fpscr)[_QUAD_LOWWORD] &= ~MASKBITS;
 	}
 
-	splx(s);	/* allow preemption */
+	kpreempt_enable();
 
 	/*
 	 * Now determine the fault type.  First we test to see if any of sticky



CVS commit: src/sys/arch/powerpc/powerpc

2017-03-05 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Sun Mar  5 16:09:26 UTC 2017

Modified Files:
src/sys/arch/powerpc/powerpc: sig_machdep.c

Log Message:
in cpu_setmcontext(), do not update the TLS register (r2) as part of _UC_CPU.
if _UC_TLSBASE is set, use lwp_setprivate() to update both r2 and the
common field in struct lwp.


To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/powerpc/powerpc/sig_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/sig_machdep.c
diff -u src/sys/arch/powerpc/powerpc/sig_machdep.c:1.44 src/sys/arch/powerpc/powerpc/sig_machdep.c:1.45
--- src/sys/arch/powerpc/powerpc/sig_machdep.c:1.44	Sun Dec 14 23:49:17 2014
+++ src/sys/arch/powerpc/powerpc/sig_machdep.c	Sun Mar  5 16:09:26 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: sig_machdep.c,v 1.44 2014/12/14 23:49:17 chs Exp $	*/
+/*	$NetBSD: sig_machdep.c,v 1.45 2017/03/05 16:09:26 chs Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: sig_machdep.c,v 1.44 2014/12/14 23:49:17 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sig_machdep.c,v 1.45 2017/03/05 16:09:26 chs Exp $");
 
 #include "opt_ppcarch.h"
 #include "opt_altivec.h"
@@ -216,10 +216,17 @@ cpu_setmcontext(struct lwp *l, const mco
 		pcb->pcb_flags |= gr[_REG_MSR] & (PCB_FE0|PCB_FE1);
 #endif
 
+		/*
+		 * R2 is the TLS register so avoid updating it here.
+		 */
+
+		__greg_t save_r2 = tf->tf_fixreg[_REG_R2];
 		(void)memcpy(>tf_fixreg, gr, 32 * sizeof (gr[0]));
+		tf->tf_fixreg[_REG_R2] = save_r2;
 		tf->tf_cr   = gr[_REG_CR];
 		tf->tf_lr   = gr[_REG_LR];
 		tf->tf_srr0 = gr[_REG_PC];
+
 		/*
 		 * Accept all user-settable bits without complaint;
 		 * userland should not need to know the machine-specific
@@ -233,6 +240,9 @@ cpu_setmcontext(struct lwp *l, const mco
 #endif
 	}
 
+	if (flags & _UC_TLSBASE)
+		lwp_setprivate(l, (void *)(uintptr_t)gr[_REG_R2]);
+
 #ifdef PPC_HAVE_FPU
 	/* Restore FPU context, if any. */
 	if (flags & _UC_FPU)



CVS commit: src/sys/arch/powerpc/powerpc

2017-02-28 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Tue Feb 28 17:35:29 UTC 2017

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
in cpu_switchto() and the fast-softint context switch code,
put back the stwcx. instruction to clear the reservation.
we used to have this in the old cpu_switch() until it was
if-0'd in 2003 and removed completely in 2007.
this fixes hangs I've seen where a softint thread is
blocked waiting for a mutex that is not held.
this should also fix PR 44387.


To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.54 src/sys/arch/powerpc/powerpc/locore_subr.S:1.55
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.54	Wed Jul 30 23:27:55 2014
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Tue Feb 28 17:35:29 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.54 2014/07/30 23:27:55 matt Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.55 2017/02/28 17:35:29 chs Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -288,6 +288,7 @@ switchto_restore:
  */
 	ldreg	%r31,CFRAME_R31(%r1)	/* restore saved registers */
 	ldreg	%r30,CFRAME_R30(%r1)
+	stwcx.	%r1,0,%r1		/* clear reservation */
 #if 1
 	addi	%r1,%r1,CALLFRAMELEN
 #else
@@ -328,6 +329,7 @@ _ENTRY(softint_cleanup)
 	mtmsr	%r0
 	isync
 #endif
+	stwcx.	%r1,0,%r1		/* clear reservation */
 	addi	%r1, %r1, CALLFRAMELEN
 	ldreg	%r0, CFRAME_LR(%r1)
 	mtlr	%r0
@@ -478,6 +480,7 @@ _ENTRY(softint_fast_dispatch)
 	ldreg	%r29,SFRAME_R29(%r1)	/* R29 */
 	ldreg	%r31,SFRAMELEN+CFRAME_R31(%r1)	/* restore saved registers */
 	ldreg	%r30,SFRAMELEN+CFRAME_R30(%r1)
+	stwcx.	%r1,0,%r1		/* clear reservation */
 	addi	%r1,%r1,SFRAMELEN+2*CALLFRAMELEN /* remove switch & callframes */
 #endif
 	ldreg	%r0,CFRAME_LR(%r1)



CVS commit: src/sys/arch/powerpc/powerpc

2015-07-05 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jul  6 05:03:56 UTC 2015

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
Clear PSL_FP/PSL_VEC so the lwp won't think it owns them.


To generate a diff of this commit:
cvs rdiff -u -r1.98 -r1.99 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.98 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.99
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.98	Sat Oct 20 14:42:15 2012
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Mon Jul  6 05:03:56 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.98 2012/10/20 14:42:15 kiyohara Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.99 2015/07/06 05:03:56 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.98 2012/10/20 14:42:15 kiyohara Exp $);
+__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.99 2015/07/06 05:03:56 matt Exp $);
 
 #include opt_altivec.h
 #include opt_multiprocessor.h
@@ -107,6 +107,8 @@ cpu_lwp_fork(struct lwp *l1, struct lwp 
 	 * Setup the trap frame for the new process
 	 */
 	*l2-l_md.md_utf = *l1-l_md.md_utf;
+	l2-l_md.md_utf-tf_srr1 = ~(PSL_FP|PSL_VEC);
+	l2-l_md.md_flags = ~PSL_VEC;
 
 	/*
 	 * If specified, give the child a different stack.  Make sure to



CVS commit: src/sys/arch/powerpc/powerpc

2015-07-05 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jul  6 05:25:29 UTC 2015

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
Back out last change.  Clearing PSL_FP/PSL_VEC is handled by child_return.


To generate a diff of this commit:
cvs rdiff -u -r1.99 -r1.100 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.99 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.100
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.99	Mon Jul  6 05:03:56 2015
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Mon Jul  6 05:25:29 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.99 2015/07/06 05:03:56 matt Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.100 2015/07/06 05:25:29 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.99 2015/07/06 05:03:56 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.100 2015/07/06 05:25:29 matt Exp $);
 
 #include opt_altivec.h
 #include opt_multiprocessor.h
@@ -107,8 +107,6 @@ cpu_lwp_fork(struct lwp *l1, struct lwp 
 	 * Setup the trap frame for the new process
 	 */
 	*l2-l_md.md_utf = *l1-l_md.md_utf;
-	l2-l_md.md_utf-tf_srr1 = ~(PSL_FP|PSL_VEC);
-	l2-l_md.md_flags = ~PSL_VEC;
 
 	/*
 	 * If specified, give the child a different stack.  Make sure to



CVS commit: src/sys/arch/powerpc/powerpc

2015-07-05 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jul  6 01:55:50 UTC 2015

Modified Files:
src/sys/arch/powerpc/powerpc: fpu.c

Log Message:
Don't reload the FPU register if this is just a re-enable.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/powerpc/powerpc/fpu.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fpu.c
diff -u src/sys/arch/powerpc/powerpc/fpu.c:1.35 src/sys/arch/powerpc/powerpc/fpu.c:1.36
--- src/sys/arch/powerpc/powerpc/fpu.c:1.35	Fri May 16 00:48:41 2014
+++ src/sys/arch/powerpc/powerpc/fpu.c	Mon Jul  6 01:55:50 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: fpu.c,v 1.35 2014/05/16 00:48:41 rmind Exp $	*/
+/*	$NetBSD: fpu.c,v 1.36 2015/07/06 01:55:50 matt Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: fpu.c,v 1.35 2014/05/16 00:48:41 rmind Exp $);
+__KERNEL_RCSID(0, $NetBSD: fpu.c,v 1.36 2015/07/06 01:55:50 matt Exp $);
 
 #include opt_multiprocessor.h
 
@@ -84,15 +84,17 @@ fpu_state_load(lwp_t *l, u_int flags)
 		memset(pcb-pcb_fpu, 0, sizeof(pcb-pcb_fpu));
 	}
 
-	const register_t msr = mfmsr();
-mtmsr((msr  ~PSL_EE) | PSL_FP);
-	__asm volatile (isync);
+	if ((flags  PCU_REENABLE) == 0) {
+		const register_t msr = mfmsr();
+		mtmsr((msr  ~PSL_EE) | PSL_FP);
+		__asm volatile (isync);
 
-	fpu_load_from_fpreg(pcb-pcb_fpu);
-	__asm volatile (sync);
+		fpu_load_from_fpreg(pcb-pcb_fpu);
+		__asm volatile (sync);
 
-	mtmsr(msr);
-	__asm volatile (isync);
+		mtmsr(msr);
+		__asm volatile (isync);
+	}
 
 	curcpu()-ci_ev_fpusw.ev_count++;
 	l-l_md.md_utf-tf_srr1 |= PSL_FP|(pcb-pcb_flags  (PCB_FE0|PCB_FE1));



CVS commit: src/sys/arch/powerpc/powerpc

2014-08-07 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Thu Aug  7 09:08:09 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: openfirm.c

Log Message:
Panic after openfirm, it is not supposed to return.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/powerpc/powerpc/openfirm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/openfirm.c
diff -u src/sys/arch/powerpc/powerpc/openfirm.c:1.24 src/sys/arch/powerpc/powerpc/openfirm.c:1.25
--- src/sys/arch/powerpc/powerpc/openfirm.c:1.24	Fri Feb 28 05:45:26 2014
+++ src/sys/arch/powerpc/powerpc/openfirm.c	Thu Aug  7 09:08:09 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: openfirm.c,v 1.24 2014/02/28 05:45:26 matt Exp $	*/
+/*	$NetBSD: openfirm.c,v 1.25 2014/08/07 09:08:09 joerg Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -34,7 +34,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.24 2014/02/28 05:45:26 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.25 2014/08/07 09:08:09 joerg Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -615,8 +615,8 @@ OF_boot(const char *bootspec)
 	ofw_stack();
 	ofbcopy(bootspec, OF_buf, l + 1);
 	args.bootspec = OF_buf;
-	if (openfirmware(args) == -1)
-		panic(OF_boot didn't);
+	openfirmware(args);
+	panic(OF_boot didn't);
 }
 
 void



CVS commit: src/sys/arch/powerpc/powerpc

2014-08-02 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Sat Aug  2 15:58:04 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: fixup.c

Log Message:
Fix !DIAGNOSTIC build.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/powerpc/powerpc/fixup.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fixup.c
diff -u src/sys/arch/powerpc/powerpc/fixup.c:1.9 src/sys/arch/powerpc/powerpc/fixup.c:1.10
--- src/sys/arch/powerpc/powerpc/fixup.c:1.9	Fri Aug  1 21:57:22 2014
+++ src/sys/arch/powerpc/powerpc/fixup.c	Sat Aug  2 15:58:04 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: fixup.c,v 1.9 2014/08/01 21:57:22 matt Exp $	*/
+/*	$NetBSD: fixup.c,v 1.10 2014/08/02 15:58:04 joerg Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.9 2014/08/01 21:57:22 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.10 2014/08/02 15:58:04 joerg Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -121,10 +121,8 @@ powerpc_fixup_stubs(uint32_t *start, uin
 			switch (i.i_any.i_opcd) {
 			case OPC_integer_31: {
 const u_int rs = i.i_x.i_rs;
-#ifdef DIAGNOSTIC
 const u_int ra = i.i_x.i_ra;
 const u_int rb = i.i_x.i_rb;
-#endif
 switch (i.i_x.i_xo) {
 case OPC31_MFSPR: {
 #ifdef DIAGNOSTIC



CVS commit: src/sys/arch/powerpc/powerpc

2014-08-01 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug  1 21:57:22 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: fixup.c

Log Message:
Deal with the code LLVM generates for stubs.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/powerpc/powerpc/fixup.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fixup.c
diff -u src/sys/arch/powerpc/powerpc/fixup.c:1.8 src/sys/arch/powerpc/powerpc/fixup.c:1.9
--- src/sys/arch/powerpc/powerpc/fixup.c:1.8	Mon Mar  3 15:36:36 2014
+++ src/sys/arch/powerpc/powerpc/fixup.c	Fri Aug  1 21:57:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: fixup.c,v 1.8 2014/03/03 15:36:36 macallan Exp $	*/
+/*	$NetBSD: fixup.c,v 1.9 2014/08/01 21:57:22 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.8 2014/03/03 15:36:36 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.9 2014/08/01 21:57:22 matt Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -144,6 +144,15 @@ powerpc_fixup_stubs(uint32_t *start, uin
 	ctr = fixreg[rs];
 	break;
 }
+case OPC31_OR: {
+#ifdef DIAGNOSTIC
+	KASSERT(valid_mask  (1  rs));
+	KASSERT(valid_mask  (1  rb));
+#endif
+	fixreg[ra] = fixreg[rs] | fixreg[rb];
+	valid_mask |= 1  ra;
+	break;
+}
 default:
 	panic(%s: %p: unexpected insn 0x%08x,
 	__func__, stub, i.i_int);
@@ -176,7 +185,7 @@ powerpc_fixup_stubs(uint32_t *start, uin
 break;
 			}
 			case OPC_STW: {
-KASSERT(i.i_d.i_rs == r_lr  i.i_d.i_ra == 1);
+KASSERT((i.i_d.i_rs == r_lr || i.i_d.i_rs == 31)  i.i_d.i_ra == 1);
 break;
 			}
 			case OPC_STWU: {
@@ -195,6 +204,11 @@ powerpc_fixup_stubs(uint32_t *start, uin
 fixup.jfi_real = fixup_addr2offset(ctr);
 break;
 			}
+			case OPC_RLWINM: {
+// LLVM emits these for bool operands.
+// Ignore them.
+break;
+			}
 			default: {
 panic(%s: %p: unexpected insn 0x%08x,
 	__func__, stub, i.i_int);



CVS commit: src/sys/arch/powerpc/powerpc

2014-07-30 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Jul 30 23:27:55 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
Fix diagnostic trap to be correct.  PSL_EE@l would be sign-extended and this
could never match the result of the andi. before it.


To generate a diff of this commit:
cvs rdiff -u -r1.53 -r1.54 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.53 src/sys/arch/powerpc/powerpc/locore_subr.S:1.54
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.53	Wed Jul 30 23:15:23 2014
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Wed Jul 30 23:27:55 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.53 2014/07/30 23:15:23 joerg Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.54 2014/07/30 23:27:55 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -304,7 +304,7 @@ ENTRY_NOPROFILE(emptyidlespin)
 	twnei	%r4,IPL_NONE
 	mfmsr	%r5
 	andi.	%r5,%r5,PSL_EE@l
-	tweqi	%r5,PSL_EE@l
+	tweqi	%r5,0
 #endif
 	blr/* CPUINIT needs a raw blr */
 



CVS commit: src/sys/arch/powerpc/powerpc

2014-07-29 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Tue Jul 29 16:19:45 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: pio_subr.S trap_subr.S

Log Message:
cmpl wants four operands, so use the shorter cmplw instead.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/powerpc/powerpc/pio_subr.S
cvs rdiff -u -r1.77 -r1.78 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/pio_subr.S
diff -u src/sys/arch/powerpc/powerpc/pio_subr.S:1.15 src/sys/arch/powerpc/powerpc/pio_subr.S:1.16
--- src/sys/arch/powerpc/powerpc/pio_subr.S:1.15	Fri Feb 28 05:39:49 2014
+++ src/sys/arch/powerpc/powerpc/pio_subr.S	Tue Jul 29 16:19:45 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: pio_subr.S,v 1.15 2014/02/28 05:39:49 matt Exp $	*/
+/*	$NetBSD: pio_subr.S,v 1.16 2014/07/29 16:19:45 joerg Exp $	*/
 
 /*
  * Copyright (c) 2003 Matt Thomas
@@ -331,7 +331,7 @@ ENTRY(outs8)
 	addi	%r4,%r4,-1	/* pre-decrement */
 1:	lbzu	%r0,1(%r4)	/* load and increment */
 	stb	%r0,0(%r3)	/* store */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -357,7 +357,7 @@ ENTRY(outs16)
 	addi	%r4,%r4,-2	/* pre-decrement */
 1:	lhzu	%r0,2(%r4)	/* load and increment */
 	sth	%r0,0(%r3)	/* store */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -383,7 +383,7 @@ ENTRY(outs32)
 	addi	%r4,%r4,-4	/* pre-decrement */
 1:	lwzu	%r0,4(%r4)	/* load and increment */
 	stw	%r0,0(%r3)	/* store */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -409,7 +409,7 @@ ENTRY(outs64)
 	addi	%r4,%r4,-4	/* pre-decrement */
 1:	ldu	%r0,4(%r4)	/* load and increment */
 	std	%r0,0(%r3)	/* store */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -440,7 +440,7 @@ ENTRY(outs16rb)
 	addi	%r4,%r4,-2	/* pre-decrement */
 1:	lwzu	%r0,2(%r4)	/* load and increment */
 	sthbrx	%r0,0,%r3	/* store (byte-reversed) */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -466,7 +466,7 @@ ENTRY(outs32rb)
 	addi	%r4,%r4,-4	/* pre-decrement */
 1:	lwzu	%r0,4(%r4)	/* load and increment */
 	stwbrx	%r0,0,%r3	/* store (byte-reversed) */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -497,7 +497,7 @@ ENTRY(ins8)
 	addi	%r4,%r4,-1	/* pre-decrement */
 1:	lbz	%r0,0(%r3)	/* load value */
 	stbu	%r0,1(%r4)	/* store and increment */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -523,7 +523,7 @@ ENTRY(ins16)
 	addi	%r4,%r4,-2	/* pre-decrement */
 1:	lhz	%r0,0(%r3)	/* load value */
 	sthu	%r0,2(%r4)	/* store and increment */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -549,7 +549,7 @@ ENTRY(ins32)
 	addi	%r4,%r4,-4	/* pre-decrement */
 1:	lwz	%r0,0(%r3)	/* load value */
 	stwu	%r0,4(%r4)	/* store and increment */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -580,7 +580,7 @@ ENTRY(ins16rb)
 	addi	%r4,%r4,-2	/* pre-decrement */
 1:	lhbrx	%r0,0,%r3	/* load value (byte reversed) */
 	sthu	%r0,2(%r4)	/* store and increment */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -605,7 +605,7 @@ ENTRY(ins32rb)
 	addi	%r4,%r4,-4	/* pre-decrement */
 1:	lwbrx	%r0,0,%r3	/* load value (byte reversed) */
 	stwu	%r0,4(%r4)	/* store and increment */
-	cmpl	0,%r4,%r5	/* at the end? */
+	cmplw	%r4,%r5		/* at the end? */
 	bne+	1b		/*   nope, do another pass */
 	eieio			/* memory barrier (reorder protection) */
 	DBGSYNC			/* force exceptions */
@@ -637,7 +637,7 @@ ENTRY(bswr1)
 	sub	%r3,%r3,%r8
 1:	lbzu	%r0,1(%r6)	/* load and increment */
 	

CVS commit: src/sys/arch/powerpc/powerpc

2014-07-29 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Tue Jul 29 19:15:47 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
Official PPC ISA documentation has no SP register, so use R1 directly.


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.50 src/sys/arch/powerpc/powerpc/locore_subr.S:1.51
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.50	Fri Aug 23 06:22:32 2013
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Tue Jul 29 19:15:47 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.50 2013/08/23 06:22:32 matt Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.51 2014/07/29 19:15:47 joerg Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -344,9 +344,9 @@ _ENTRY(softint_fast_dispatch)
 	 */
 	mflr	%r0
 	streg	%r0, CFRAME_LR(%r1)
-	stptru	%sp, -CALLFRAMELEN(%sp)
+	stptru	%r1, -CALLFRAMELEN(%r1)
 	mfmsr	%r0
-	streg	%r0, CFRAME_R31(%sp)
+	streg	%r0, CFRAME_R31(%r1)
 
 	/*
 	 * We need a 2nd callframe from which cpu_switchto will consume
@@ -355,9 +355,9 @@ _ENTRY(softint_fast_dispatch)
 	lis	%r8, _C_LABEL(softint_cleanup)@ha
 	addi	%r8, %r8, _C_LABEL(softint_cleanup)@l
 	streg	%r8, CFRAME_LR(%r1)
-	stptru	%sp, -CALLFRAMELEN(%sp)
-	streg	%r30, CFRAME_R30(%sp)
-	streg	%r31, CFRAME_R31(%sp)
+	stptru	%r1, -CALLFRAMELEN(%r1)
+	streg	%r30, CFRAME_R30(%r1)
+	streg	%r31, CFRAME_R31(%r1)
 
 	GET_CPUINFO(%r7)
 	mr	%r30, %r13		/* curlwp is now in r13 */



CVS commit: src/sys/arch/powerpc/powerpc

2014-04-06 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sun Apr  6 14:47:46 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: procfs_machdep.c

Log Message:
Make it compilable


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/powerpc/powerpc/procfs_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/procfs_machdep.c
diff -u src/sys/arch/powerpc/powerpc/procfs_machdep.c:1.8 src/sys/arch/powerpc/powerpc/procfs_machdep.c:1.9
--- src/sys/arch/powerpc/powerpc/procfs_machdep.c:1.8	Sat Apr  5 18:44:32 2014
+++ src/sys/arch/powerpc/powerpc/procfs_machdep.c	Sun Apr  6 14:47:46 2014
@@ -1,7 +1,7 @@
-/*	$NetBSD: procfs_machdep.c,v 1.8 2014/04/05 18:44:32 christos Exp $	*/
+/*	$NetBSD: procfs_machdep.c,v 1.9 2014/04/06 14:47:46 martin Exp $	*/
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: procfs_machdep.c,v 1.8 2014/04/05 18:44:32 christos Exp $);
+__KERNEL_RCSID(0, $NetBSD: procfs_machdep.c,v 1.9 2014/04/06 14:47:46 martin Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -22,7 +22,7 @@ __KERNEL_RCSID(0, $NetBSD: procfs_machd
 int
 procfs_getcpuinfstr(char *buf, size_t *len)
 {
-	*size_t = 0;
+	*len = 0;
 
 	return 0;
 }



CVS commit: src/sys/arch/powerpc/powerpc

2014-03-24 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Mar 24 19:14:31 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
remove dup cpu_model sysctl; use the mi version in hw.


To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.68 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.69
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.68	Thu Mar  6 14:44:32 2014
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Mon Mar 24 15:14:31 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.68 2014/03/06 19:44:32 matt Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.69 2014/03/24 19:14:31 christos Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.68 2014/03/06 19:44:32 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.69 2014/03/24 19:14:31 christos Exp $);
 
 #include opt_altivec.h
 #include opt_modular.h
@@ -269,11 +269,6 @@ SYSCTL_SETUP(sysctl_machdep_setup, sysc
 #endif
 	sysctl_createv(clog, 0, NULL, NULL,
 		   CTLFLAG_PERMANENT,
-		   CTLTYPE_STRING, model, NULL,
-		   NULL, 0, cpu_model, 0,
-		   CTL_MACHDEP, CPU_MODEL, CTL_EOL);
-	sysctl_createv(clog, 0, NULL, NULL,
-		   CTLFLAG_PERMANENT,
 		   CTLTYPE_STRING, booted_device, NULL,
 		   sysctl_machdep_booted_device, 0, NULL, 0,
 		   CTL_MACHDEP, CPU_BOOTED_DEVICE, CTL_EOL);



CVS commit: src/sys/arch/powerpc/powerpc

2014-03-18 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Tue Mar 18 14:34:31 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: clock.c

Log Message:
split 601 and generic PowerPC timecounter code a bit more


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/powerpc/powerpc/clock.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/clock.c
diff -u src/sys/arch/powerpc/powerpc/clock.c:1.14 src/sys/arch/powerpc/powerpc/clock.c:1.15
--- src/sys/arch/powerpc/powerpc/clock.c:1.14	Mon Mar  3 15:36:36 2014
+++ src/sys/arch/powerpc/powerpc/clock.c	Tue Mar 18 14:34:31 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.14 2014/03/03 15:36:36 macallan Exp $	*/
+/*	$NetBSD: clock.c,v 1.15 2014/03/18 14:34:31 macallan Exp $	*/
 /*  $OpenBSD: clock.c,v 1.3 1997/10/13 13:42:53 pefo Exp $	*/
 
 /*
@@ -33,7 +33,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: clock.c,v 1.14 2014/03/03 15:36:36 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: clock.c,v 1.15 2014/03/18 14:34:31 macallan Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -58,21 +58,33 @@ __KERNEL_RCSID(0, $NetBSD: clock.c,v 1.
 void decr_intr(struct clockframe *);
 void init_powerpc_tc(void);
 static u_int get_powerpc_timecount(struct timecounter *);
+#ifdef PPC_OEA601
+static u_int get_601_timecount(struct timecounter *);
+#endif
 
 uint32_t ticks_per_sec;
 uint32_t ns_per_tick;
 uint32_t ticks_per_intr = 0;
 
+#ifdef PPC_OEA601
+static struct timecounter powerpc_601_timecounter = {
+	get_601_timecount,	/* get_timecount */
+	0,			/* no poll_pps */
+	0x7fff,		/* counter_mask */
+	0,			/* frequency */
+	rtc,			/* name */
+	100,			/* quality */
+	NULL,			/* tc_priv */
+	NULL			/* tc_next */
+};
+#endif
+
 static struct timecounter powerpc_timecounter = {
 	get_powerpc_timecount,	/* get_timecount */
 	0,			/* no poll_pps */
 	0x7fff,		/* counter_mask */
 	0,			/* frequency */
-#if PPC_OEA601
-	rtc,			/* name */
-#else
 	mftb,			/* name */
-#endif
 	100,			/* quality */
 	NULL,			/* tc_priv */
 	NULL			/* tc_next */
@@ -122,7 +134,7 @@ void
 decr_intr(struct clockframe *cfp)
 {
 	struct cpu_info * const ci = curcpu();
-	int msr;
+	const register_t msr = mfmsr();
 	int pri;
 	u_long tb;
 	long ticks;
@@ -163,13 +175,8 @@ decr_intr(struct clockframe *cfp)
 			__asm volatile (mftb %0 : =r(tb));
 
 		ci-ci_lasttb = tb + ticks - ticks_per_intr;
-
-		/*
-		 * Reenable interrupts
-		 */
-		__asm volatile (mfmsr %0; ori %0, %0, %1; mtmsr %0
-			  : =r(msr) : K(PSL_EE));
-
+		ci-ci_idepth++;
+		mtmsr(msr | PSL_EE);
 		/*
 		 * Do standard timer interrupt stuff.
 		 * Do softclock stuff only on the last iteration.
@@ -177,8 +184,12 @@ decr_intr(struct clockframe *cfp)
 		while (--nticks  0)
 			hardclock(cfp);
 		hardclock(cfp);
+		mtmsr(msr);
+		ci-ci_idepth--;
 	}
+	mtmsr(msr | PSL_EE);
 	splx(pri);
+	mtmsr(msr);
 }
 
 /*
@@ -241,21 +252,42 @@ get_powerpc_timecount(struct timecounter
 	
 	__asm volatile (mfmsr %0; andi. %1,%0,%2; mtmsr %1
 		  : =r(msr), =r(scratch) : K((u_short)~PSL_EE));
+
+	tb = (u_int)(mftb()  0x7fff);
+	mtmsr(msr);
+
+	return tb;
+}
+
 #ifdef PPC_OEA601
-	if ((mfpvr()  16) == MPC601)
-		tb = rtc_nanosecs();
-	else
-#endif
-		__asm volatile (mftb %0 : =r(tb));
+static u_int
+get_601_timecount(struct timecounter *tc)
+{
+	u_long tb;
+	int msr, scratch;
+	
+	__asm volatile (mfmsr %0; andi. %1,%0,%2; mtmsr %1
+		  : =r(msr), =r(scratch) : K((u_short)~PSL_EE));
+
+	tb = rtc_nanosecs();
 	mtmsr(msr);
 
 	return tb;
 }
+#endif
 
 void
 init_powerpc_tc(void)
 {
-	/* from machdep initialization */
-	powerpc_timecounter.tc_frequency = ticks_per_sec;
-	tc_init(powerpc_timecounter);
+	struct timecounter *tc;
+
+#ifdef PPC_OEA601
+	if ((mfpvr()  16) == MPC601) {
+		tc = powerpc_601_timecounter;
+	} else
+#endif
+		tc = powerpc_timecounter;
+
+	tc-tc_frequency = ticks_per_sec;
+	tc_init(tc);
 }



CVS commit: src/sys/arch/powerpc/powerpc

2014-03-18 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Tue Mar 18 20:11:08 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: clock.c

Log Message:
 Can we use c99 field initializers here instead of comments?!?

Yes, yes we can.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/powerpc/powerpc/clock.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/clock.c
diff -u src/sys/arch/powerpc/powerpc/clock.c:1.15 src/sys/arch/powerpc/powerpc/clock.c:1.16
--- src/sys/arch/powerpc/powerpc/clock.c:1.15	Tue Mar 18 14:34:31 2014
+++ src/sys/arch/powerpc/powerpc/clock.c	Tue Mar 18 20:11:08 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.15 2014/03/18 14:34:31 macallan Exp $	*/
+/*	$NetBSD: clock.c,v 1.16 2014/03/18 20:11:08 macallan Exp $	*/
 /*  $OpenBSD: clock.c,v 1.3 1997/10/13 13:42:53 pefo Exp $	*/
 
 /*
@@ -33,7 +33,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: clock.c,v 1.15 2014/03/18 14:34:31 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: clock.c,v 1.16 2014/03/18 20:11:08 macallan Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -68,26 +68,26 @@ uint32_t ticks_per_intr = 0;
 
 #ifdef PPC_OEA601
 static struct timecounter powerpc_601_timecounter = {
-	get_601_timecount,	/* get_timecount */
-	0,			/* no poll_pps */
-	0x7fff,		/* counter_mask */
-	0,			/* frequency */
-	rtc,			/* name */
-	100,			/* quality */
-	NULL,			/* tc_priv */
-	NULL			/* tc_next */
+	.tc_get_timecount = get_601_timecount,
+	.tc_poll_pps = 0,
+	.tc_counter_mask = 0x7fff,
+	.tc_frequency = 0,
+	.tc_name = rtc,
+	.tc_quality = 100,
+	.tc_priv = NULL,
+	.tc_next = NULL
 };
 #endif
 
 static struct timecounter powerpc_timecounter = {
-	get_powerpc_timecount,	/* get_timecount */
-	0,			/* no poll_pps */
-	0x7fff,		/* counter_mask */
-	0,			/* frequency */
-	mftb,			/* name */
-	100,			/* quality */
-	NULL,			/* tc_priv */
-	NULL			/* tc_next */
+	.tc_get_timecount = get_powerpc_timecount,
+	.tc_poll_pps = 0,
+	.tc_counter_mask = 0x7fff,
+	.tc_frequency = 0,
+	.tc_name = mftb,
+	.tc_quality = 100,
+	.tc_priv = NULL,
+	.tc_next = NULL
 };
 
 /*



CVS commit: src/sys/arch/powerpc/powerpc

2014-03-06 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Mar  6 09:22:52 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: kobj_machdep.c

Log Message:
Adapt to new elf_machdep.h
Add limited ELF64 support.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/powerpc/powerpc/kobj_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/kobj_machdep.c
diff -u src/sys/arch/powerpc/powerpc/kobj_machdep.c:1.5 src/sys/arch/powerpc/powerpc/kobj_machdep.c:1.6
--- src/sys/arch/powerpc/powerpc/kobj_machdep.c:1.5	Wed Jun  8 17:19:20 2011
+++ src/sys/arch/powerpc/powerpc/kobj_machdep.c	Thu Mar  6 09:22:52 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kobj_machdep.c,v 1.5 2011/06/08 17:19:20 matt Exp $	*/
+/*	$NetBSD: kobj_machdep.c,v 1.6 2014/03/06 09:22:52 matt Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -52,7 +52,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: kobj_machdep.c,v 1.5 2011/06/08 17:19:20 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: kobj_machdep.c,v 1.6 2014/03/06 09:22:52 matt Exp $);
 
 #define	ELFSIZE		ARCH_ELFSIZE
 
@@ -66,6 +66,9 @@ int
 kobj_reloc(kobj_t ko, uintptr_t relocbase, const void *data,
 	   bool isrela, bool local)
 {
+#ifdef _LP64
+	Elf64_Half *wwhere;
+#endif
 	Elf_Addr *where;
 	Elf32_Half *hwhere;
 	Elf_Addr addr;
@@ -80,12 +83,15 @@ kobj_reloc(kobj_t ko, uintptr_t relocbas
 	rela = (const Elf_Rela *)data;
 	where = (Elf_Addr *) (relocbase + rela-r_offset);
 	hwhere = (Elf32_Half *) (relocbase + rela-r_offset);
+#ifdef _LP64
+	wwhere = (Elf64_Half *) (relocbase + rela-r_offset);
+#endif
 	addend = rela-r_addend;
 	rtype = ELF_R_TYPE(rela-r_info);
 	symidx = ELF_R_SYM(rela-r_info);
 
 	switch (rtype) {
-   	case R_PPC_NONE:
+	case R_PPC_NONE:
 	   	break;
 
 	case R_PPC_RELATIVE:	/* word32 B + A */
@@ -100,12 +106,15 @@ kobj_reloc(kobj_t ko, uintptr_t relocbas
 		addend -= relocbase + rela-r_offset;	/* A -= P */
 		/* FALLTHROUGH */
 
-	case R_PPC_32:		/* word32 S + A */
-	case R_PPC_16:		/* half16* S + A */
-   	case R_PPC_16_LO:	/* half16 #lo(S + A) */
-	case R_PPC_16_HA:	/* half16 #ha(S + A) */
-	case R_PPC_16_HI:	/* half16 #hi(S + A) */
-   		addr = kobj_sym_lookup(ko, symidx);
+#ifdef _LP64
+	case R_PPC_ADDR64:	/* doubleword64 S + A */
+#endif
+	case R_PPC_ADDR32:	/* word32 S + A */
+	case R_PPC_ADDR16:	/* half16* S + A */
+	case R_PPC_ADDR16_LO:	/* half16 #lo(S + A) */
+	case R_PPC_ADDR16_HA:	/* half16 #ha(S + A) */
+	case R_PPC_ADDR16_HI:	/* half16 #hi(S + A) */
+		addr = kobj_sym_lookup(ko, symidx);
 	   	if (addr == 0)
 	   		return -1;
 
@@ -123,34 +132,38 @@ kobj_reloc(kobj_t ko, uintptr_t relocbas
 		break;
 
 	default:
-   		printf(kobj_reloc: unexpected relocation type %u\n, rtype);
+		printf(kobj_reloc: unexpected relocation type %u\n, rtype);
 		return -1;
 	}
 
 
 	switch (rtype) {
-	case R_PPC_RELATIVE:	/* word32 B + A */
 	case R_PPC_REL32:	/* word32 S + A - P */
-	case R_PPC_32:		/* word32 S + A */
+#ifdef _LP64
+		*wwhere = addend;
+		break;
+#endif
+	case R_PPC_RELATIVE:	/* doubleword64/word32 B + A */
+	case R_PPC_ADDR32:	/* doubleword64/word32 S + A */
 	   	*where = addend;
 	   	break;
 
 	case R_PPC_REL16:	/* half16* (S + A - P) */
-	case R_PPC_16:		/* half16* S + A */
+	case R_PPC_ADDR16:	/* half16* S + A */
 		if ((int16_t) addend != addend)
 			return -1;
 		/* FALLTHROUGH */
 	case R_PPC_REL16_LO:	/* half16 #lo(S + A - P) */
-   	case R_PPC_16_LO:	/* half16 #lo(S + A) */
+	case R_PPC_ADDR16_LO:	/* half16 #lo(S + A) */
 		*hwhere = addend  0x;
 		break;
 
 	case R_PPC_REL16_HA:	/* half16 #ha(S + A - P) */
-	case R_PPC_16_HA:	/* half16 #ha(S + A) */
+	case R_PPC_ADDR16_HA:	/* half16 #ha(S + A) */
 		addend += 0x8000;
 		/* FALLTHROUGH */
 	case R_PPC_REL16_HI:	/* half16 #hi(S + A - P) */
-	case R_PPC_16_HI:	/* half16 #hi(S + A) */
+	case R_PPC_ADDR16_HI:	/* half16 #hi(S + A) */
 		*hwhere = (addend  16)  0x;
 		break;
 	}



CVS commit: src/sys/arch/powerpc/powerpc

2014-03-06 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Mar  6 19:44:32 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
Fix PPC64 setregs


To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.67 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.68
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.67	Fri Feb 28 05:43:49 2014
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Thu Mar  6 19:44:32 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.67 2014/02/28 05:43:49 matt Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.68 2014/03/06 19:44:32 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.67 2014/02/28 05:43:49 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.68 2014/03/06 19:44:32 matt Exp $);
 
 #include opt_altivec.h
 #include opt_modular.h
@@ -97,13 +97,13 @@ struct cpuset_info cpuset_info;
  * Set set up registers on exec.
  */
 void
-setregs(struct lwp *l, struct exec_package *pack, vaddr_t stack)
+setregs(struct lwp *l, struct exec_package *epp, vaddr_t stack)
 {
 	struct proc * const p = l-l_proc;
 	struct trapframe * const tf = l-l_md.md_utf;
 	struct pcb * const pcb = lwp_getpcb(l);
 	struct ps_strings arginfo;
-	vaddr_t func = pack-ep_entry;
+	vaddr_t func = epp-ep_entry;
 
 	memset(tf, 0, sizeof *tf);
 	tf-tf_fixreg[1] = -roundup(-stack + 8, 16);
@@ -133,20 +133,18 @@ setregs(struct lwp *l, struct exec_packa
 	tf-tf_fixreg[5] = (register_t)arginfo.ps_envstr;
 	tf-tf_fixreg[6] = 0;			/* auxillary vector */
 	tf-tf_fixreg[7] = 0;			/* termination vector */
-	tf-tf_fixreg[8] = p-p_psstrp;	/* NetBSD extension */
+	tf-tf_fixreg[8] = p-p_psstrp;		/* NetBSD extension */
 
 #ifdef _LP64
-	if (l-l_proc-p_emul == emul_netbsd) {
-		/*
-		 * For native ELF64, entry point to the function
-		 * descriptor which contains the real function address
-		 * and its TOC base address.
-		 */
-		uintptr_t fdesc[3] = { [0] = func, [1] = 0, [2] = 0 };
-		copyin((void *)func, fdesc, sizeof(fdesc));
-		tf-tf_fixreg[2] = fdesc[1];
-		func = fdesc[0];
-	}
+	/*
+	 * For native ELF64, entry point to the function
+	 * descriptor which contains the real function address
+	 * and its TOC base address.
+	 */
+	uintptr_t fdesc[3] = { [0] = func, [1] = 0, [2] = 0 };
+	copyin((void *)func, fdesc, sizeof(fdesc));
+	tf-tf_fixreg[2] = fdesc[1] + epp-ep_entryoffset;
+	func = fdesc[0] + epp-ep_entryoffset;
 #endif
 	tf-tf_srr0 = func;
 	tf-tf_srr1 = PSL_MBO | PSL_USERSET;



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:37:52 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: netbsd32_sigcode.S

Log Message:
Use the right file.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/powerpc/powerpc/netbsd32_sigcode.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/netbsd32_sigcode.S
diff -u src/sys/arch/powerpc/powerpc/netbsd32_sigcode.S:1.1 src/sys/arch/powerpc/powerpc/netbsd32_sigcode.S:1.2
--- src/sys/arch/powerpc/powerpc/netbsd32_sigcode.S:1.1	Sun Jan 19 00:00:11 2003
+++ src/sys/arch/powerpc/powerpc/netbsd32_sigcode.S	Fri Feb 28 05:37:51 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_sigcode.S,v 1.1 2003/01/19 00:00:11 matt Exp $	*/
+/*	$NetBSD: netbsd32_sigcode.S,v 1.2 2014/02/28 05:37:51 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -31,13 +31,11 @@
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include sys/syscall.h
 #include compat/netbsd32/netbsd32_syscall.h
 
-#define SIGCODE_NAME		netbsd32_sigcode
-#define ESIGCODE_NAME		netbsd32_esigcode
-#define SIGRETURN_NAME		netbsd32_SYS_netbsd32___sigreturn14
-#define EXIT_NAME		netbsd32_SYS_netbsd32_exit
-#define	SIGCALLFRAMESIZE	16
+#define SIGCODE_NAME	netbsd32_sigcode
+#define ESIGCODE_NAME	netbsd32_esigcode
+#define SIGRETURN_NAME	NETBSD32_SYS_compat_16_netbsd32___sigreturn14
+#define EXIT_NAME	NETBSD32_SYS_netbsd32_exit
 
-#include sigcode.S
+#include powerpc/powerpc/sigcode.S



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:38:15 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: lock_stubs.S

Log Message:
Make 64-bit clean


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/powerpc/powerpc/lock_stubs.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/lock_stubs.S
diff -u src/sys/arch/powerpc/powerpc/lock_stubs.S:1.9 src/sys/arch/powerpc/powerpc/lock_stubs.S:1.10
--- src/sys/arch/powerpc/powerpc/lock_stubs.S:1.9	Sun Sep 23 06:05:32 2012
+++ src/sys/arch/powerpc/powerpc/lock_stubs.S	Fri Feb 28 05:38:15 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: lock_stubs.S,v 1.9 2012/09/23 06:05:32 mrg Exp $	*/
+/*	$NetBSD: lock_stubs.S,v 1.10 2014/02/28 05:38:15 matt Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -53,7 +53,7 @@
 ENTRY(_lock_cas)
 1:
 	lptrarx	%r10,0,%r3
-	cmpw	%r10,%r4
+	cmpptr	%r10,%r4
 	bne-	2f
 	stptrcx. %r5,0,%r3
 	bne-	1b
@@ -71,7 +71,7 @@ ENTRY(_lock_cas)
 ENTRY(mutex_enter)
 1:
 	lptrarx	%r10,0,%r3
-	cmpwi	%r10,0
+	cmpptri	%r10,0
 	bne-	2f
 	stptrcx. %r13,0,%r3
 	bne-	1b
@@ -88,7 +88,7 @@ ENTRY(mutex_exit)
 	li	%r7,0
 1:
 	lptrarx	%r10,0,%r3
-	cmpw	%r10,%r13
+	cmpptr	%r10,%r13
 	bne-	2f
 	stptrcx. %r7,0,%r3
 	bne-	1b
@@ -123,7 +123,7 @@ ENTRY(rw_enter)
 	ori	%r7,%r13,RW_WRITE_LOCKED
 
 2:	lptrarx	%r10,0,%r3
-	cmpw	%r10,%r9
+	cmpptr	%r10,%r9
 	bne-	3f
 	stptrcx. %r7,0,%r3
 	bne-	2b
@@ -148,7 +148,7 @@ ENTRY(rw_tryenter)
 	ori	%r7,%r13,RW_WRITE_LOCKED
 
 2:	lptrarx	%r10,0,%r3
-	cmpw	%r10,%r9
+	cmpptr	%r10,%r9
 	bne-	3f
 	stptrcx. %r7,0,%r3
 	bne-	2b
@@ -179,7 +179,7 @@ ENTRY(rw_exit)
 	ori	%r9,%r13,RW_WRITE_LOCKED
 
 2:	lptrarx	%r10,0,%r3
-	cmpw	%r10,%r9
+	cmpptr	%r10,%r9
 	bne-	3f
 	stptrcx. %r7,0,%r3
 	bne-	2b



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:38:53 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: fixup.c

Log Message:
Use register_t instead of int for register values.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/powerpc/powerpc/fixup.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fixup.c
diff -u src/sys/arch/powerpc/powerpc/fixup.c:1.6 src/sys/arch/powerpc/powerpc/fixup.c:1.7
--- src/sys/arch/powerpc/powerpc/fixup.c:1.6	Thu Nov  7 15:26:36 2013
+++ src/sys/arch/powerpc/powerpc/fixup.c	Fri Feb 28 05:38:53 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: fixup.c,v 1.6 2013/11/07 15:26:36 nisimura Exp $	*/
+/*	$NetBSD: fixup.c,v 1.7 2014/02/28 05:38:53 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.6 2013/11/07 15:26:36 nisimura Exp $);
+__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.7 2014/02/28 05:38:53 matt Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -146,7 +146,7 @@ powerpc_fixup_stubs(uint32_t *start, uin
 			case OPC_ADDIS: {
 const u_int rs = i.i_d.i_rs;
 const u_int ra = i.i_d.i_ra;
-int d = i.i_d.i_d  ((i.i_d.i_opcd  1) * 16);
+register_t d = i.i_d.i_d  ((i.i_d.i_opcd  1) * 16);
 if (ra) {
 	KASSERT(valid_mask  (1  ra));
 	d += fixreg[ra];
@@ -158,7 +158,7 @@ powerpc_fixup_stubs(uint32_t *start, uin
 			case OPC_LWZ: {
 const u_int rs = i.i_d.i_rs;
 const u_int ra = i.i_d.i_ra;
-int addr = i.i_d.i_d;
+register_t addr = i.i_d.i_d;
 if (ra) {
 	KASSERT(valid_mask  (1  ra));
 	addr += fixreg[ra];



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:39:49 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: pio_subr.S

Log Message:
Fix the 64-bit case


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/powerpc/powerpc/pio_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/pio_subr.S
diff -u src/sys/arch/powerpc/powerpc/pio_subr.S:1.14 src/sys/arch/powerpc/powerpc/pio_subr.S:1.15
--- src/sys/arch/powerpc/powerpc/pio_subr.S:1.14	Fri Jul  1 18:59:19 2011
+++ src/sys/arch/powerpc/powerpc/pio_subr.S	Fri Feb 28 05:39:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: pio_subr.S,v 1.14 2011/07/01 18:59:19 dyoung Exp $	*/
+/*	$NetBSD: pio_subr.S,v 1.15 2014/02/28 05:39:49 matt Exp $	*/
 
 /*
  * Copyright (c) 2003 Matt Thomas
@@ -400,14 +400,14 @@ ENTRY(bswm8)
 	add	%r3,%r4,%r5	/* add offset to handle  place in argument 0 */
 	mr	%r4,%r6		/* move addr to argument 1 register */
 	mr	%r5,%r7		/* move count to argument 2 register */
-ENTRY(outs32)
+ENTRY(outs64)
 	cmpdi	%r5,0		/* len == 0? */
 	beqlr-			/*   return if len == 0 */
 	addi	%r5,%r5,-1	/* len -= 1 */
 	sldi	%r5,%r5,2	/* len *= 4 */
 	add	%r5,%r5,%r4	/* len += src */
 	addi	%r4,%r4,-4	/* pre-decrement */
-1:	ldzu	%r0,4(%r4)	/* load and increment */
+1:	ldu	%r0,4(%r4)	/* load and increment */
 	std	%r0,0(%r3)	/* store */
 	cmpl	0,%r4,%r5	/* at the end? */
 	bne+	1b		/*   nope, do another pass */



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:41:21 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: rtas.c

Log Message:
Use uintptr_t for ras_entry


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/powerpc/powerpc/rtas.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/rtas.c
diff -u src/sys/arch/powerpc/powerpc/rtas.c:1.13 src/sys/arch/powerpc/powerpc/rtas.c:1.14
--- src/sys/arch/powerpc/powerpc/rtas.c:1.13	Sun Jul 17 20:54:46 2011
+++ src/sys/arch/powerpc/powerpc/rtas.c	Fri Feb 28 05:41:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtas.c,v 1.13 2011/07/17 20:54:46 joerg Exp $ */
+/*	$NetBSD: rtas.c,v 1.14 2014/02/28 05:41:21 matt Exp $ */
 
 /*
  * CHRP RTAS support routines
@@ -9,7 +9,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: rtas.c,v 1.13 2011/07/17 20:54:46 joerg Exp $);
+__KERNEL_RCSID(0, $NetBSD: rtas.c,v 1.14 2014/02/28 05:41:21 matt Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -101,7 +101,7 @@ rtas_attach(device_t parent, device_t se
 	int ph = ca-ca_node;
 	int ih;
 	int rtas_size;
-	int rtas_entry;
+	uintptr_t rtas_entry;
 	struct pglist pglist;
 	char buf[4];
 	int i;
@@ -157,8 +157,8 @@ rtas_attach(device_t parent, device_t se
 
 	rtas0_softc = sc;
 
-	printf(: version %d, entry @pa 0x%x\n, sc-ra_version,
-		(unsigned) rtas_entry);
+	printf(: version %d, entry @pa 0x%PRIxPTR\n, sc-ra_version,
+		rtas_entry);
 
 	/*
 	 * Initialise TODR support



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:41:59 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: sigcode.S

Log Message:
Remove _LP64 since it's only used on 32-bit


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/powerpc/powerpc/sigcode.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/sigcode.S
diff -u src/sys/arch/powerpc/powerpc/sigcode.S:1.7 src/sys/arch/powerpc/powerpc/sigcode.S:1.8
--- src/sys/arch/powerpc/powerpc/sigcode.S:1.7	Mon Jan 17 08:23:56 2011
+++ src/sys/arch/powerpc/powerpc/sigcode.S	Fri Feb 28 05:41:59 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sigcode.S,v 1.7 2011/01/17 08:23:56 matt Exp $	*/
+/*	$NetBSD: sigcode.S,v 1.8 2014/02/28 05:41:59 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -33,9 +33,9 @@
 
 #include machine/asm.h
 #include machine/signal.h
-#include sys/syscall.h
 
 #ifndef SIGCODE_NAME
+#include sys/syscall.h
 #define	SIGCODE_NAME	sigcode
 #define	ESIGCODE_NAME	esigcode
 #define	SIGRETURN_NAME	SYS_compat_16___sigreturn14
@@ -45,12 +45,8 @@
 #define SIGNAL_FRAMESIZE	0
 #endif
 #ifndef SIGCALLFRAMESIZE
-#ifdef _LP64
-#define	SIGCALLFRAMESIZE	32
-#else
 #define	SIGCALLFRAMESIZE	16
 #endif
-#endif
 
 /*
  * The following code gets copied to the top of the user stack on process



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:43:49 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
If execing a LP64 image, we need to read the function descriptor to get
the entry point and the TOC base.  (Do we need to fixup the TOC base?)


To generate a diff of this commit:
cvs rdiff -u -r1.66 -r1.67 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.66 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.67
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.66	Fri Nov  8 04:32:58 2013
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Fri Feb 28 05:43:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.66 2013/11/08 04:32:58 nisimura Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.67 2014/02/28 05:43:49 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.66 2013/11/08 04:32:58 nisimura Exp $);
+__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.67 2014/02/28 05:43:49 matt Exp $);
 
 #include opt_altivec.h
 #include opt_modular.h
@@ -103,6 +103,7 @@ setregs(struct lwp *l, struct exec_packa
 	struct trapframe * const tf = l-l_md.md_utf;
 	struct pcb * const pcb = lwp_getpcb(l);
 	struct ps_strings arginfo;
+	vaddr_t func = pack-ep_entry;
 
 	memset(tf, 0, sizeof *tf);
 	tf-tf_fixreg[1] = -roundup(-stack + 8, 16);
@@ -134,7 +135,20 @@ setregs(struct lwp *l, struct exec_packa
 	tf-tf_fixreg[7] = 0;			/* termination vector */
 	tf-tf_fixreg[8] = p-p_psstrp;	/* NetBSD extension */
 
-	tf-tf_srr0 = pack-ep_entry;
+#ifdef _LP64
+	if (l-l_proc-p_emul == emul_netbsd) {
+		/*
+		 * For native ELF64, entry point to the function
+		 * descriptor which contains the real function address
+		 * and its TOC base address.
+		 */
+		uintptr_t fdesc[3] = { [0] = func, [1] = 0, [2] = 0 };
+		copyin((void *)func, fdesc, sizeof(fdesc));
+		tf-tf_fixreg[2] = fdesc[1];
+		func = fdesc[0];
+	}
+#endif
+	tf-tf_srr0 = func;
 	tf-tf_srr1 = PSL_MBO | PSL_USERSET;
 #ifdef ALTIVEC
 	tf-tf_vrsave = 0;



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:44:39 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
Use PRIx64


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.24 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.25
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.24	Wed Jun 12 15:11:08 2013
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Fri Feb 28 05:44:39 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.24 2013/06/12 15:11:08 kiyohara Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.25 2014/02/28 05:44:39 matt Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.24 2013/06/12 15:11:08 kiyohara Exp $);
+__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.25 2014/02/28 05:44:39 matt Exp $);
 
 #include sys/param.h
 #include sys/buf.h
@@ -131,7 +131,7 @@ mem_regions(struct mem_region **memp, st
 #endif
 		OFmem[memcnt].start = addr;
 		OFmem[memcnt].size = size;
-		aprint_normal(mem region %d start=%llx size=%llx\n,
+		aprint_normal(mem region %d start=%PRIx64 size=%PRIx64\n,
 		memcnt, addr, size);
 		memcnt++;
 	}
@@ -194,7 +194,7 @@ mem_regions(struct mem_region **memp, st
 #endif
 		OFavail[cnt].start = addr;
 		OFavail[cnt].size = size;
-		aprint_normal(avail region %d start=%llx size=%llx\n,
+		aprint_normal(avail region %d start=%#PRIx64 size=%#PRIx64\n,
 		cnt, addr, size);
 		cnt++;
 	}



CVS commit: src/sys/arch/powerpc/powerpc

2014-02-27 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Feb 28 05:45:26 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: openfirm.c

Log Message:
Use uintptr_t to convert pointers.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/powerpc/powerpc/openfirm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/openfirm.c
diff -u src/sys/arch/powerpc/powerpc/openfirm.c:1.23 src/sys/arch/powerpc/powerpc/openfirm.c:1.24
--- src/sys/arch/powerpc/powerpc/openfirm.c:1.23	Fri Jan 17 09:09:40 2014
+++ src/sys/arch/powerpc/powerpc/openfirm.c	Fri Feb 28 05:45:26 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: openfirm.c,v 1.23 2014/01/17 09:09:40 mrg Exp $	*/
+/*	$NetBSD: openfirm.c,v 1.24 2014/02/28 05:45:26 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -34,7 +34,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.23 2014/01/17 09:09:40 mrg Exp $);
+__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.24 2014/02/28 05:45:26 matt Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -699,13 +699,13 @@ OF_interpret(const char *cmd, int nargs,
 		return -1;
 	ofbcopy(cmd, OF_buf, len + 1);
 	i = 0;
-	args.slots[i] = (uint32_t)OF_buf;
+	args.slots[i] = (uintptr_t)OF_buf;
 	args.nargs = nargs + 1;
 	args.nreturns = nreturns + 1;
 	va_start(ap, nreturns);
 	i++;
 	while (i  args.nargs) {
-		args.slots[i] = (uint32_t)va_arg(ap, uint32_t *);
+		args.slots[i] = (uintptr_t)va_arg(ap, uint32_t *);
 		i++;
 	}
 



CVS commit: src/sys/arch/powerpc/powerpc

2014-01-17 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Fri Jan 17 09:09:40 UTC 2014

Modified Files:
src/sys/arch/powerpc/powerpc: openfirm.c

Log Message:
convert a failure to call OF for a reboot call into a panic() instead
of a hard hang.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/powerpc/powerpc/openfirm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/openfirm.c
diff -u src/sys/arch/powerpc/powerpc/openfirm.c:1.22 src/sys/arch/powerpc/powerpc/openfirm.c:1.23
--- src/sys/arch/powerpc/powerpc/openfirm.c:1.22	Sun May 12 13:50:11 2013
+++ src/sys/arch/powerpc/powerpc/openfirm.c	Fri Jan 17 09:09:40 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: openfirm.c,v 1.22 2013/05/12 13:50:11 macallan Exp $	*/
+/*	$NetBSD: openfirm.c,v 1.23 2014/01/17 09:09:40 mrg Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -34,7 +34,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.22 2013/05/12 13:50:11 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.23 2014/01/17 09:09:40 mrg Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -615,8 +615,8 @@ OF_boot(const char *bootspec)
 	ofw_stack();
 	ofbcopy(bootspec, OF_buf, l + 1);
 	args.bootspec = OF_buf;
-	openfirmware(args);
-	while (1);			/* just in case */
+	if (openfirmware(args) == -1)
+		panic(OF_boot didn't);
 }
 
 void



CVS commit: src/sys/arch/powerpc/powerpc

2013-11-07 Thread Tohru Nishimura
Module Name:src
Committed By:   nisimura
Date:   Thu Nov  7 15:26:36 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: fixup.c

Log Message:
move DIAGNOSTIC only variable inside #ifdef


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/powerpc/powerpc/fixup.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fixup.c
diff -u src/sys/arch/powerpc/powerpc/fixup.c:1.5 src/sys/arch/powerpc/powerpc/fixup.c:1.6
--- src/sys/arch/powerpc/powerpc/fixup.c:1.5	Fri Jul  1 23:47:09 2011
+++ src/sys/arch/powerpc/powerpc/fixup.c	Thu Nov  7 15:26:36 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: fixup.c,v 1.5 2011/07/01 23:47:09 matt Exp $	*/
+/*	$NetBSD: fixup.c,v 1.6 2013/11/07 15:26:36 nisimura Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.5 2011/07/01 23:47:09 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.6 2013/11/07 15:26:36 nisimura Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -104,7 +104,9 @@ powerpc_fixup_stubs(uint32_t *start, uin
 		register_t fixreg[32];
 		register_t ctr = 0;
 		uint32_t valid_mask = (1  1);
+#ifdef DIAGNOSTIC
 		int r_lr = -1;
+#endif
 		for (; stub  stub_end  fixup.jfi_real == 0; stub++) {
 			const union instr i = { .i_int = *stub };
 
@@ -120,9 +122,9 @@ powerpc_fixup_stubs(uint32_t *start, uin
 #ifdef DIAGNOSTIC
 	const u_int spr = (rb  5) | ra;
 	KASSERT(spr == SPR_LR);
+	r_lr = rs;
 #endif
 	valid_mask |= (1  rs);
-	r_lr = rs;
 	break;
 }
 case OPC31_MTSPR: {



CVS commit: src/sys/arch/powerpc/powerpc

2013-11-07 Thread Tohru Nishimura
Module Name:src
Committed By:   nisimura
Date:   Fri Nov  8 04:32:58 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
use __diagused for KASSERT only variable.


To generate a diff of this commit:
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.65 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.66
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.65	Fri Jul 19 06:43:20 2013
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Fri Nov  8 04:32:58 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.65 2013/07/19 06:43:20 matt Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.66 2013/11/08 04:32:58 nisimura Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.65 2013/07/19 06:43:20 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.66 2013/11/08 04:32:58 nisimura Exp $);
 
 #include opt_altivec.h
 #include opt_modular.h
@@ -319,7 +319,7 @@ startlwp(void *arg)
 	ucontext_t * const uc = arg;
 	lwp_t * const l = curlwp;
 	struct trapframe * const tf = l-l_md.md_utf;
-	int error;
+	int error __diagused;
 
 	error = cpu_setmcontext(l, uc-uc_mcontext, uc-uc_flags);
 	KASSERT(error == 0);



CVS commit: src/sys/arch/powerpc/powerpc

2013-08-30 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 30 21:29:29 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: genassym.cf

Log Message:
Add CACHE_INFO_DCACHE_LINE_SIZE to assym.h


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/powerpc/powerpc/genassym.cf

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/genassym.cf
diff -u src/sys/arch/powerpc/powerpc/genassym.cf:1.9 src/sys/arch/powerpc/powerpc/genassym.cf:1.10
--- src/sys/arch/powerpc/powerpc/genassym.cf:1.9	Wed Aug  1 20:35:52 2012
+++ src/sys/arch/powerpc/powerpc/genassym.cf	Fri Aug 30 21:29:29 2013
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.9 2012/08/01 20:35:52 matt Exp $
+#	$NetBSD: genassym.cf,v 1.10 2013/08/30 21:29:29 matt Exp $
 
 #-
 # Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
@@ -171,6 +171,7 @@ define	CI_IDLELWP	offsetof(struct cpu_in
 define	CI_MTX_COUNT	offsetof(struct cpu_info, ci_mtx_count)
 define	CI_MTX_OLDSPL	offsetof(struct cpu_info, ci_mtx_oldspl)
 define	CPU_CI		offsetof(struct cpu_info, ci_ci)
+define CACHE_INFO_DCACHE_LINE_SIZE offsetof(struct cache_info, dcache_line_size)
 
 define	FB_PC		offsetof(struct faultbuf, fb_pc)
 define	FB_MSR		offsetof(struct faultbuf, fb_msr)



CVS commit: src/sys/arch/powerpc/powerpc

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 06:22:32 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: locore_subr.S

Log Message:
Simplify since we know curlwp is in %r13


To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.49 src/sys/arch/powerpc/powerpc/locore_subr.S:1.50
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.49	Wed Aug  1 20:35:52 2012
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Fri Aug 23 06:22:32 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.49 2012/08/01 20:35:52 matt Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.50 2013/08/23 06:22:32 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -360,11 +360,7 @@ _ENTRY(softint_fast_dispatch)
 	streg	%r31, CFRAME_R31(%sp)
 
 	GET_CPUINFO(%r7)
-#ifdef PPC_BOOKE
-	mfsprg2	%r30
-#else
-	ldptr	%r30, CI_CURLWP(%r7)
-#endif /* PPC_BOOKE */
+	mr	%r30, %r13		/* curlwp is now in r13 */
 
 #if defined (PPC_OEA) || defined (PPC_OEA64_BRIDGE)
 	mfsr	%r10,USER_SR		/* save USER_SR for copyin/copyout */



CVS commit: src/sys/arch/powerpc/powerpc

2013-08-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Aug 23 06:24:21 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: trap_subr.S

Log Message:
Avoid a few instructions since we know CURLWP is in %r13


To generate a diff of this commit:
cvs rdiff -u -r1.76 -r1.77 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap_subr.S
diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.76 src/sys/arch/powerpc/powerpc/trap_subr.S:1.77
--- src/sys/arch/powerpc/powerpc/trap_subr.S:1.76	Thu Apr 11 17:13:15 2013
+++ src/sys/arch/powerpc/powerpc/trap_subr.S	Fri Aug 23 06:24:21 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.76 2013/04/11 17:13:15 macallan Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.77 2013/08/23 06:24:21 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -1068,13 +1068,7 @@ s_sctrap:
 	isync
 	addi	%r3,%r1,FRAME_TF
 /* Call the appropriate syscall handler: */
-#if 0
-	GET_CPUINFO(%r4)
-	ldptr	%r4,CI_CURLWP(%r4)
-	ldptr	%r4,L_PROC(%r4)
-#else
 	ldptr	%r4,L_PROC(%r13)
-#endif
 	ldptr	%r4,P_MD_SYSCALL(%r4)
 	mtctr	%r4
 	bctrl



CVS commit: src/sys/arch/powerpc/powerpc

2013-07-19 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Jul 19 06:43:21 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
cpuset_info is no longer volatile


To generate a diff of this commit:
cvs rdiff -u -r1.64 -r1.65 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.64 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.65
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.64	Fri Mar 16 07:41:55 2012
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Fri Jul 19 06:43:20 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.64 2012/03/16 07:41:55 matt Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.65 2013/07/19 06:43:20 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.64 2012/03/16 07:41:55 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.65 2013/07/19 06:43:20 matt Exp $);
 
 #include opt_altivec.h
 #include opt_modular.h
@@ -90,7 +90,7 @@ const pcu_ops_t * const pcu_ops_md_defs[
 };
 
 #ifdef MULTIPROCESSOR
-volatile struct cpuset_info cpuset_info;
+struct cpuset_info cpuset_info;
 #endif
 
 /*



CVS commit: src/sys/arch/powerpc/powerpc

2013-07-09 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Jul  9 20:33:03 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: bus_space.c

Log Message:
Fix typo (pa instead of va).


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/powerpc/powerpc/bus_space.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/bus_space.c
diff -u src/sys/arch/powerpc/powerpc/bus_space.c:1.35 src/sys/arch/powerpc/powerpc/bus_space.c:1.36
--- src/sys/arch/powerpc/powerpc/bus_space.c:1.35	Thu Apr 11 18:20:33 2013
+++ src/sys/arch/powerpc/powerpc/bus_space.c	Tue Jul  9 20:33:03 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space.c,v 1.35 2013/04/11 18:20:33 macallan Exp $	*/
+/*	$NetBSD: bus_space.c,v 1.36 2013/07/09 20:33:03 matt Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.35 2013/04/11 18:20:33 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.36 2013/07/09 20:33:03 matt Exp $);
 
 #define _POWERPC_BUS_SPACE_PRIVATE
 
@@ -639,8 +639,8 @@ memio_unmap(bus_space_tag_t t, bus_space
 #ifdef PPC_OEA601
 	if ((mfpvr()  16) == MPC601) {
 		register_t sr = iosrtable[va  ADDR_SR_SHFT];
-		if (SR601_VALID_P(sr)  ((pa  ADDR_SR_SHFT) ==
-		((pa + size - 1)  ADDR_SR_SHFT))) {
+		if (SR601_VALID_P(sr)  ((va  ADDR_SR_SHFT) ==
+		((va + size - 1)  ADDR_SR_SHFT))) {
 			pa = va;
 			va = 0;
 		} else {



CVS commit: src/sys/arch/powerpc/powerpc

2013-07-04 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Thu Jul  4 22:59:58 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: db_interface.c

Log Message:
One const is good enough.


To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/powerpc/powerpc/db_interface.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/db_interface.c
diff -u src/sys/arch/powerpc/powerpc/db_interface.c:1.51 src/sys/arch/powerpc/powerpc/db_interface.c:1.52
--- src/sys/arch/powerpc/powerpc/db_interface.c:1.51	Wed Aug  1 21:30:24 2012
+++ src/sys/arch/powerpc/powerpc/db_interface.c	Thu Jul  4 22:59:58 2013
@@ -1,8 +1,8 @@
-/*	$NetBSD: db_interface.c,v 1.51 2012/08/01 21:30:24 matt Exp $ */
+/*	$NetBSD: db_interface.c,v 1.52 2013/07/04 22:59:58 joerg Exp $ */
 /*	$OpenBSD: db_interface.c,v 1.2 1996/12/28 06:21:50 rahnds Exp $	*/
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: db_interface.c,v 1.51 2012/08/01 21:30:24 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: db_interface.c,v 1.52 2013/07/04 22:59:58 joerg Exp $);
 
 #define USERACC
 
@@ -254,7 +254,7 @@ kdb_trap(int type, void *v)
 static void
 print_battranslation(struct bat *bat, unsigned int blidx)
 {
-	static const char const batsizes[][6] = {
+	static const char batsizes[][6] = {
 		128KB,
 		256KB,
 		512KB,



CVS commit: src/sys/arch/powerpc/powerpc

2013-07-04 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Thu Jul  4 23:00:23 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: db_disasm.c

Log Message:
Don't use non-literal strings as format string.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/powerpc/powerpc/db_disasm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/db_disasm.c
diff -u src/sys/arch/powerpc/powerpc/db_disasm.c:1.27 src/sys/arch/powerpc/powerpc/db_disasm.c:1.28
--- src/sys/arch/powerpc/powerpc/db_disasm.c:1.27	Fri Mar 23 15:46:44 2012
+++ src/sys/arch/powerpc/powerpc/db_disasm.c	Thu Jul  4 23:00:23 2013
@@ -1,8 +1,8 @@
-/*	$NetBSD: db_disasm.c,v 1.27 2012/03/23 15:46:44 matt Exp $	*/
+/*	$NetBSD: db_disasm.c,v 1.28 2013/07/04 23:00:23 joerg Exp $	*/
 /*	$OpenBSD: db_disasm.c,v 1.2 1996/12/28 06:21:48 rahnds Exp $	*/
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: db_disasm.c,v 1.27 2012/03/23 15:46:44 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: db_disasm.c,v 1.28 2013/07/04 23:00:23 joerg Exp $);
 
 #include sys/param.h
 #include sys/proc.h
@@ -628,7 +628,7 @@ disasm_fields(const struct opcode *popco
 		pstr += len; \
 	} while(0)
 #define APP_PSTR(fmt, arg)	ADD_LEN(snprintf(pstr, slen, (fmt), (arg)))
-#define APP_PSTRS(fmt)		ADD_LEN(snprintf(pstr, slen, (fmt)))
+#define APP_PSTRS(fmt)		ADD_LEN(snprintf(pstr, slen, %s, (fmt)))
 
 	pstr = disasm_str;
 



CVS commit: src/sys/arch/powerpc/powerpc

2013-06-12 Thread KIYOHARA Takashi
Module Name:src
Committed By:   kiyohara
Date:   Wed Jun 12 15:11:08 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
Fix lost avail memory over 256M.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.23 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.24
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.23	Sun May 12 13:42:39 2013
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Wed Jun 12 15:11:08 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.23 2013/05/12 13:42:39 macallan Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.24 2013/06/12 15:11:08 kiyohara Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.23 2013/05/12 13:42:39 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.24 2013/06/12 15:11:08 kiyohara Exp $);
 
 #include sys/param.h
 #include sys/buf.h
@@ -70,7 +70,7 @@ void
 mem_regions(struct mem_region **memp, struct mem_region **availp)
 {
 	const char *macrisc[] = {MacRISC, MacRISC2, MacRISC4, NULL};
-	int hroot, hmem, i, cnt, regcnt, acells, scells;
+	int hroot, hmem, i, cnt, memcnt, regcnt, acells, scells;
 	int numregs;
 	uint32_t regs[OFMEM_REGIONS * 4]; /* 2 values + 2 for 64bit */
 
@@ -103,7 +103,7 @@ mem_regions(struct mem_region **memp, st
 
 	/* move the data into OFmem */
 	memset(OFmem, 0, sizeof(OFmem));
-	for (i = 0, cnt = 0; i  numregs; i++) {
+	for (i = 0, memcnt = 0; i  numregs; i++) {
 		uint64_t addr, size;
 
 		if (acells  1)
@@ -129,11 +129,11 @@ mem_regions(struct mem_region **memp, st
 			continue;
 		}
 #endif
-		OFmem[cnt].start = addr;
-		OFmem[cnt].size = size;
+		OFmem[memcnt].start = addr;
+		OFmem[memcnt].size = size;
 		aprint_normal(mem region %d start=%llx size=%llx\n,
-		cnt, addr, size);
-		cnt++;
+		memcnt, addr, size);
+		memcnt++;
 	}
 
 	DPRINTF(available\n);
@@ -208,13 +208,13 @@ mem_regions(struct mem_region **memp, st
 #define AVAIL_THRESH (0x1000-1)
 		if (((OFavail[cnt-1].start + OFavail[cnt-1].size +
 		AVAIL_THRESH)  ~AVAIL_THRESH) 
-		(OFmem[regcnt-1].start + OFmem[regcnt-1].size)) {
+		(OFmem[memcnt-1].start + OFmem[memcnt-1].size)) {
 
 			OFavail[cnt].start =
 			(OFavail[cnt-1].start + OFavail[cnt-1].size +
 			AVAIL_THRESH)  ~AVAIL_THRESH;
 			OFavail[cnt].size =
-			OFmem[regcnt-1].size - OFavail[cnt].start;
+			OFmem[memcnt-1].size - OFavail[cnt].start;
 			aprint_normal(WARNING: add memory segment %lx - %lx,
 			\nWARNING: which was not recognized by 
 			the Firmware.\n,



CVS commit: src/sys/arch/powerpc/powerpc

2013-05-12 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Sun May 12 13:50:11 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: openfirm.c

Log Message:
add OF_quiesce() to shut down OF background tasks, needed on G5
from Phileas Fogg


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/powerpc/powerpc/openfirm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/openfirm.c
diff -u src/sys/arch/powerpc/powerpc/openfirm.c:1.21 src/sys/arch/powerpc/powerpc/openfirm.c:1.22
--- src/sys/arch/powerpc/powerpc/openfirm.c:1.21	Sun Jul 17 20:54:46 2011
+++ src/sys/arch/powerpc/powerpc/openfirm.c	Sun May 12 13:50:11 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: openfirm.c,v 1.21 2011/07/17 20:54:46 joerg Exp $	*/
+/*	$NetBSD: openfirm.c,v 1.22 2013/05/12 13:50:11 macallan Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -34,7 +34,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.21 2011/07/17 20:54:46 joerg Exp $);
+__KERNEL_RCSID(0, $NetBSD: openfirm.c,v 1.22 2013/05/12 13:50:11 macallan Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -722,6 +722,23 @@ OF_interpret(const char *cmd, int nargs,
 	return status;
 }
 
+void
+OF_quiesce(void)
+{
+	static struct {
+		const char *name;
+		int nargs;
+		int nreturns;
+	} args = {
+		quiesce,
+		0,
+		0,
+	};
+
+	ofw_stack();
+	openfirmware(args);
+}
+
 /*
  * This version of bcopy doesn't work for overlapping regions!
  */



CVS commit: src/sys/arch/powerpc/powerpc

2013-05-12 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Sun May 12 13:42:39 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
cleanup mem_regions:
- use different variables for / and /memory nodes
- remove redundant OF_finddevice(/)
- assume 32bit addresses/sizes in available on Apple hardware


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.22 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.23
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.22	Thu Apr 11 19:55:10 2013
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Sun May 12 13:42:39 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.22 2013/04/11 19:55:10 macallan Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.23 2013/05/12 13:42:39 macallan Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.22 2013/04/11 19:55:10 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.23 2013/05/12 13:42:39 macallan Exp $);
 
 #include sys/param.h
 #include sys/buf.h
@@ -69,31 +69,29 @@ static struct mem_region OFmem[OFMEM_REG
 void
 mem_regions(struct mem_region **memp, struct mem_region **availp)
 {
-	int phandle, i, cnt, regcnt, acells, scells;
+	const char *macrisc[] = {MacRISC, MacRISC2, MacRISC4, NULL};
+	int hroot, hmem, i, cnt, regcnt, acells, scells;
 	int numregs;
 	uint32_t regs[OFMEM_REGIONS * 4]; /* 2 values + 2 for 64bit */
 
 	DPRINTF(calling mem_regions\n);
 	/* determine acell size */
-	if ((phandle = OF_finddevice(/)) == -1)
+	if ((hroot = OF_finddevice(/)) == -1)
 		goto error;
-	cnt = OF_getprop(phandle, #address-cells, acells, sizeof(int));
+	cnt = OF_getprop(hroot, #address-cells, acells, sizeof(int));
 	if (cnt = 0)
 		acells = 1;
 
 	/* determine scell size */
-	if ((phandle = OF_finddevice(/)) == -1)
-		goto error;
-	cnt = OF_getprop(phandle, #size-cells, scells, sizeof(int));
+	cnt = OF_getprop(hroot, #size-cells, scells, sizeof(int));
 	if (cnt = 0)
 		scells = 1;
 
 	/* Get memory */
-	if ((phandle = OF_finddevice(/memory)) == -1)
-		goto error;
-
 	memset(regs, 0, sizeof(regs));
-	regcnt = OF_getprop(phandle, reg, regs,
+	if ((hmem = OF_finddevice(/memory)) == -1)
+		goto error;
+	regcnt = OF_getprop(hmem, reg, regs,
 	sizeof(regs[0]) * OFMEM_REGIONS * 4);
 	if (regcnt = 0)
 		goto error;
@@ -142,7 +140,7 @@ mem_regions(struct mem_region **memp, st
 
 	/* now do the same thing again, for the available counts */
 	memset(regs, 0, sizeof(regs));
-	regcnt = OF_getprop(phandle, available, regs,
+	regcnt = OF_getprop(hmem, available, regs,
 	sizeof(regs[0]) * OFMEM_REGIONS * 4);
 	if (regcnt = 0)
 		goto error;
@@ -150,15 +148,15 @@ mem_regions(struct mem_region **memp, st
 	DPRINTF(%08x %08x %08x %08x\n, regs[0], regs[1], regs[2], regs[3]);
 
 	/*
-	 * some(?) G5s have messed up 'available' properties which don't obey
-	 * #address-cells. Try to detect this here.
-	 * XXX this needs a better test
+	 * according to comments in FreeBSD all Apple OF has 32bit values in
+	 * available, no matter what the cell sizes are
 	 */
-	if (((regcnt  2) % (acells + scells)) != 0) {
-		aprint_normal(messed up 'available' property detected\n);
+	if (of_compatible(hroot, macrisc) != -1) {
+		DPRINTF(this appears to be a mac...\n);
 		acells = 1;
+		scells = 1;
 	}
-	
+		
 	/* how many mem regions did we get? */
 	numregs = regcnt / (sizeof(uint32_t) * (acells + scells));
 	DPRINTF(regcnt=%d num=%d acell=%d scell=%d\n,
@@ -189,7 +187,7 @@ mem_regions(struct mem_region **memp, st
 #ifndef _LP64
 		if (addr  0x || size  0x ||
 			(addr + size)  0x) {
-			aprint_error(Base addr of %llx or size of %llx too
+			aprint_verbose(Base addr of %llx or size of %llx too
 			 large for 32 bit OS. Skipping., addr, size);
 			continue;
 		}



CVS commit: src/sys/arch/powerpc/powerpc

2013-04-24 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Thu Apr 25 00:11:35 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: clock.c

Log Message:
make delay() work with _ARCH_PPC64


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/powerpc/powerpc/clock.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/clock.c
diff -u src/sys/arch/powerpc/powerpc/clock.c:1.12 src/sys/arch/powerpc/powerpc/clock.c:1.13
--- src/sys/arch/powerpc/powerpc/clock.c:1.12	Mon Jun 20 05:50:39 2011
+++ src/sys/arch/powerpc/powerpc/clock.c	Thu Apr 25 00:11:35 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.12 2011/06/20 05:50:39 matt Exp $	*/
+/*	$NetBSD: clock.c,v 1.13 2013/04/25 00:11:35 macallan Exp $	*/
 /*  $OpenBSD: clock.c,v 1.3 1997/10/13 13:42:53 pefo Exp $	*/
 
 /*
@@ -33,7 +33,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: clock.c,v 1.12 2011/06/20 05:50:39 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: clock.c,v 1.13 2013/04/25 00:11:35 macallan Exp $);
 
 #include sys/param.h
 #include sys/kernel.h
@@ -185,8 +185,11 @@ decr_intr(struct clockframe *cfp)
 void
 delay(unsigned int n)
 {
-	u_quad_t tb;
-	u_long tbh, tbl, scratch;
+#ifdef _ARCH_PPC64
+	uint64_t tb, scratch;
+#else
+	uint64_t tb;
+	uint32_t tbh, tbl, scratch;
 
 #ifdef PPC_OEA601
 	if ((mfpvr()  16) == MPC601) {
@@ -208,16 +211,23 @@ delay(unsigned int n)
 		: r(rtc[0]), r(rtc[1]), n(SPR_RTCU_R), n(SPR_RTCL_R)
 		: cr0);
 	} else
-#endif
+#endif /* PPC_OEA601 */
+#endif /* !_ARCH_PPC64 */
 	{
 		tb = mftb();
 		tb += (n * 1000 + ns_per_tick - 1) / ns_per_tick;
+#ifdef _ARCH_PPC64
+		__asm volatile (1: mftb %0; cmpld %0,%1; blt 1b;
+			  : =r(scratch) : r(tb)
+			  : cr0);
+#else
 		tbh = tb  32;
 		tbl = tb;
 		__asm volatile (1: mftbu %0; cmplw %0,%1; blt 1b; bgt 2f;
 			  mftb %0; cmplw %0,%2; blt 1b; 2:
 			  : =r(scratch) : r(tbh), r(tbl)
 			  : cr0);
+#endif
 	}
 }
 



CVS commit: src/sys/arch/powerpc/powerpc

2013-04-11 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Thu Apr 11 18:20:33 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: bus_space.c

Log Message:
in memio_map() don't fail without trying to mapiodev() if we don't find a BAT
mapping or don't have BATs
now this works on G5


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/powerpc/powerpc/bus_space.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/bus_space.c
diff -u src/sys/arch/powerpc/powerpc/bus_space.c:1.34 src/sys/arch/powerpc/powerpc/bus_space.c:1.35
--- src/sys/arch/powerpc/powerpc/bus_space.c:1.34	Wed Jul 18 17:41:59 2012
+++ src/sys/arch/powerpc/powerpc/bus_space.c	Thu Apr 11 18:20:33 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space.c,v 1.34 2012/07/18 17:41:59 matt Exp $	*/
+/*	$NetBSD: bus_space.c,v 1.35 2013/04/11 18:20:33 macallan Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.34 2012/07/18 17:41:59 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.35 2013/04/11 18:20:33 macallan Exp $);
 
 #define _POWERPC_BUS_SPACE_PRIVATE
 
@@ -598,20 +598,6 @@ memio_map(bus_space_tag_t t, bus_addr_t 
 	}
 #endif /* defined (PPC_OEA) || defined(PPC_OEA601) */
 
-	if (t-pbs_extent != NULL) {
-#if !defined(PPC_IBM4XX)
-		if (extent_flags == 0) {
-			extent_free(t-pbs_extent, bpa, size, EX_NOWAIT);
-#ifdef DEBUG
-			printf(bus_space_map(%p[%x:%x], %#x, %#x)
-			 failed: ENOMEM\n,
-			t, t-pbs_base, t-pbs_limit, bpa, size);
-#endif
-			return (ENOMEM);
-		}
-#endif
-	}
-
 	/*
 	 * Map this into the kernel pmap.
 	 */



CVS commit: src/sys/arch/powerpc/powerpc

2013-04-11 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Thu Apr 11 19:53:51 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
KNF nits


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.20 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.21
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.20	Mon Apr  1 20:14:42 2013
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Thu Apr 11 19:53:51 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.20 2013/04/01 20:14:42 macallan Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.21 2013/04/11 19:53:51 macallan Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.20 2013/04/01 20:14:42 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.21 2013/04/11 19:53:51 macallan Exp $);
 
 #include sys/param.h
 #include sys/buf.h
@@ -99,13 +99,13 @@ mem_regions(struct mem_region **memp, st
 		goto error;
 
 	/* how many mem regions did we get? */
-	numregs = regcnt / (sizeof(uint32_t)*(acells+scells));
+	numregs = regcnt / (sizeof(uint32_t) * (acells + scells));
 	DPRINTF(regcnt=%d num=%d acell=%d scell=%d\n,
 	regcnt, numregs, acells, scells);
 
 	/* move the data into OFmem */
 	memset(OFmem, 0, sizeof(OFmem));
-	for (i=0, cnt=0; i = numregs; i++) {
+	for (i = 0, cnt = 0; i = numregs; i++) {
 		uint64_t addr, size;
 
 		if (acells  1)
@@ -168,7 +168,7 @@ mem_regions(struct mem_region **memp, st
 
 	/* move the data into OFavail */
 	memset(OFavail, 0, sizeof(OFavail));
-	for (i=0, cnt=0; i = numregs; i++) {
+	for (i = 0, cnt = 0; i = numregs; i++) {
 		uint64_t addr, size;
 
 		DPRINTF(%d\n, i);
@@ -188,7 +188,7 @@ mem_regions(struct mem_region **memp, st
 			continue;
 #ifndef _LP64
 		if (addr  0x || size  0x ||
-			(addr+size)  0x) {
+			(addr + size)  0x) {
 			aprint_error(Base addr of %llx or size of %llx too
 			 large for 32 bit OS. Skipping., addr, size);
 			continue;



CVS commit: src/sys/arch/powerpc/powerpc

2013-04-11 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Thu Apr 11 19:55:10 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
fix off-by-one
noticed by Phileas Fogg


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.21 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.22
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.21	Thu Apr 11 19:53:51 2013
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Thu Apr 11 19:55:10 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.21 2013/04/11 19:53:51 macallan Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.22 2013/04/11 19:55:10 macallan Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.21 2013/04/11 19:53:51 macallan Exp $);
+__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.22 2013/04/11 19:55:10 macallan Exp $);
 
 #include sys/param.h
 #include sys/buf.h
@@ -105,7 +105,7 @@ mem_regions(struct mem_region **memp, st
 
 	/* move the data into OFmem */
 	memset(OFmem, 0, sizeof(OFmem));
-	for (i = 0, cnt = 0; i = numregs; i++) {
+	for (i = 0, cnt = 0; i  numregs; i++) {
 		uint64_t addr, size;
 
 		if (acells  1)
@@ -168,7 +168,7 @@ mem_regions(struct mem_region **memp, st
 
 	/* move the data into OFavail */
 	memset(OFavail, 0, sizeof(OFavail));
-	for (i = 0, cnt = 0; i = numregs; i++) {
+	for (i = 0, cnt = 0; i  numregs; i++) {
 		uint64_t addr, size;
 
 		DPRINTF(%d\n, i);



CVS commit: src/sys/arch/powerpc/powerpc

2013-04-01 Thread Michael Lorenz
Module Name:src
Committed By:   macallan
Date:   Mon Apr  1 20:14:43 UTC 2013

Modified Files:
src/sys/arch/powerpc/powerpc: ofw_machdep.c

Log Message:
deal with /memory reg property which may contain 64bit addresses on G5


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/powerpc/powerpc/ofw_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/ofw_machdep.c
diff -u src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.19 src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.20
--- src/sys/arch/powerpc/powerpc/ofw_machdep.c:1.19	Wed Feb  1 09:54:03 2012
+++ src/sys/arch/powerpc/powerpc/ofw_machdep.c	Mon Apr  1 20:14:42 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofw_machdep.c,v 1.19 2012/02/01 09:54:03 matt Exp $	*/
+/*	$NetBSD: ofw_machdep.c,v 1.20 2013/04/01 20:14:42 macallan Exp $	*/
 
 /*
  * Copyright (C) 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.19 2012/02/01 09:54:03 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: ofw_machdep.c,v 1.20 2013/04/01 20:14:42 macallan Exp $);
 
 #include sys/param.h
 #include sys/buf.h
@@ -50,6 +50,12 @@ __KERNEL_RCSID(0, $NetBSD: ofw_machdep.
 #include machine/powerpc.h
 #include machine/autoconf.h
 
+#ifdef DEBUG
+#define DPRINTF aprint_error
+#else
+#define DPRINTF while(0) printf
+#endif
+
 #define	OFMEM_REGIONS	32
 static struct mem_region OFmem[OFMEM_REGIONS + 1], OFavail[OFMEM_REGIONS + 3];
 
@@ -63,74 +69,136 @@ static struct mem_region OFmem[OFMEM_REG
 void
 mem_regions(struct mem_region **memp, struct mem_region **availp)
 {
-	int phandle, i, cnt, regcnt;
-	struct mem_region_avail {
-		paddr_t start;
-		paddr_t size;
-	} OFavail_G5[OFMEM_REGIONS + 3] __attribute((unused));
+	int phandle, i, cnt, regcnt, acells, scells;
+	int numregs;
+	uint32_t regs[OFMEM_REGIONS * 4]; /* 2 values + 2 for 64bit */
+
+	DPRINTF(calling mem_regions\n);
+	/* determine acell size */
+	if ((phandle = OF_finddevice(/)) == -1)
+		goto error;
+	cnt = OF_getprop(phandle, #address-cells, acells, sizeof(int));
+	if (cnt = 0)
+		acells = 1;
 
-	/*
-	 * Get memory.
-	 */
+	/* determine scell size */
+	if ((phandle = OF_finddevice(/)) == -1)
+		goto error;
+	cnt = OF_getprop(phandle, #size-cells, scells, sizeof(int));
+	if (cnt = 0)
+		scells = 1;
+
+	/* Get memory */
 	if ((phandle = OF_finddevice(/memory)) == -1)
 		goto error;
 
-	memset(OFmem, 0, sizeof OFmem);
-	regcnt = OF_getprop(phandle, reg,
-		OFmem, sizeof OFmem[0] * OFMEM_REGIONS);
+	memset(regs, 0, sizeof(regs));
+	regcnt = OF_getprop(phandle, reg, regs,
+	sizeof(regs[0]) * OFMEM_REGIONS * 4);
 	if (regcnt = 0)
 		goto error;
 
-	/* Remove zero sized entry in the returned data. */
-	regcnt /= sizeof OFmem[0];
-	for (i = 0; i  regcnt; )
-		if (OFmem[i].size == 0) {
-			memmove(OFmem[i], OFmem[i + 1],
-(regcnt - i) * sizeof OFmem[0]);
-			regcnt--;
-		} else
-			i++;
-
-#if defined (PMAC_G5)
-	/* XXXSL: the G5 implementation of OFW is defines the /memory reg/available
-	 * properties differently. Try to fix it up here with minimal damage to the
-	 * rest of the code
- 	 */
-	{
-		int count;
-		memset(OFavail_G5, 0, sizeof OFavail_G5);
-		count = OF_getprop(phandle, available,
-			OFavail_G5, sizeof OFavail_G5[0] * OFMEM_REGIONS);
-
-		if (count = 0)
-			goto error;
-
-		count /= sizeof OFavail_G5[0];
-		cnt = count * sizeof(OFavail[0]);
-
-		for (i = 0; i  count; i++ )
-		{
-			OFavail[i].start_hi = 0;
-			OFavail[i].start = OFavail_G5[i].start;
-			OFavail[i].size = OFavail_G5[i].size;
+	/* how many mem regions did we get? */
+	numregs = regcnt / (sizeof(uint32_t)*(acells+scells));
+	DPRINTF(regcnt=%d num=%d acell=%d scell=%d\n,
+	regcnt, numregs, acells, scells);
+
+	/* move the data into OFmem */
+	memset(OFmem, 0, sizeof(OFmem));
+	for (i=0, cnt=0; i = numregs; i++) {
+		uint64_t addr, size;
+
+		if (acells  1)
+			memcpy(addr, regs[i * (acells + scells)],
+			sizeof(int32_t) * acells);
+		else
+			addr = regs[i * (acells + scells)];
+
+		if (scells  1)
+			memcpy(size, regs[i * (acells + scells) + acells],
+			sizeof(int32_t) * scells);
+		else
+			size = regs[i * (acells + scells) + acells];
+
+		/* skip entry of 0 size */
+		if (size == 0)
+			continue;
+#ifndef _LP64
+		if (addr  0x || size  0x ||
+			(addr + size)  0x) {
+			aprint_error(Base addr of %llx or size of %llx too
+			 large for 32 bit OS. Skipping., addr, size);
+			continue;
 		}
-	}
-#else
-	memset(OFavail, 0, sizeof OFavail);
-	cnt = OF_getprop(phandle, available,
-		OFavail, sizeof OFavail[0] * OFMEM_REGIONS);
 #endif
-	if (cnt = 0)
+		OFmem[cnt].start = addr;
+		OFmem[cnt].size = size;
+		aprint_normal(mem region %d start=%llx size=%llx\n,
+		cnt, addr, size);
+		cnt++;
+	}
+
+	DPRINTF(available\n);
+
+	/* now do the same thing again, for the available counts */
+	memset(regs, 0, sizeof(regs));
+	

CVS commit: src/sys/arch/powerpc/powerpc

2012-09-23 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Sun Sep 23 06:05:32 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: lock_stubs.S

Log Message:
correct some comments on #endif to match their #if.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/powerpc/powerpc/lock_stubs.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/lock_stubs.S
diff -u src/sys/arch/powerpc/powerpc/lock_stubs.S:1.8 src/sys/arch/powerpc/powerpc/lock_stubs.S:1.9
--- src/sys/arch/powerpc/powerpc/lock_stubs.S:1.8	Sun Jun  5 16:52:26 2011
+++ src/sys/arch/powerpc/powerpc/lock_stubs.S	Sun Sep 23 06:05:32 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: lock_stubs.S,v 1.8 2011/06/05 16:52:26 matt Exp $	*/
+/*	$NetBSD: lock_stubs.S,v 1.9 2012/09/23 06:05:32 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@ ENTRY(mutex_exit)
 2:
 	b	_C_LABEL(mutex_vector_exit)
 
-#endif	/* __HAVE_MUTEX_STUBS */
+#endif	/* !LOCKDEBUG */
 
 /*
  * void rw_enter(krwlock_t *krw, krw_t op);
@@ -190,4 +190,4 @@ ENTRY(rw_exit)
 
 #endif	/* __HAVE_RW_STUBS */
 
-#endif	/* !LOCKDEBUG */
+#endif	/* __HAVE_MUTEX_STUBS */



CVS commit: src/sys/arch/powerpc/powerpc

2012-08-02 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Aug  2 14:06:34 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: trap.c

Log Message:
Also supprese printing fatal traps is the process is being debugged.


To generate a diff of this commit:
cvs rdiff -u -r1.147 -r1.148 src/sys/arch/powerpc/powerpc/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.147 src/sys/arch/powerpc/powerpc/trap.c:1.148
--- src/sys/arch/powerpc/powerpc/trap.c:1.147	Thu Aug  2 13:50:14 2012
+++ src/sys/arch/powerpc/powerpc/trap.c	Thu Aug  2 14:06:34 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.147 2012/08/02 13:50:14 matt Exp $	*/
+/*	$NetBSD: trap.c,v 1.148 2012/08/02 14:06:34 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: trap.c,v 1.147 2012/08/02 13:50:14 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: trap.c,v 1.148 2012/08/02 14:06:34 matt Exp $);
 
 #include opt_altivec.h
 #include opt_ddb.h
@@ -246,6 +246,7 @@ trap(struct trapframe *tf)
 		}
 		ci-ci_ev_udsi_fatal.ev_count++;
 		if (cpu_printfataltraps
+		 (p-p_slflag  PSL_TRACED) == 0
 		 !sigismember(p-p_sigctx.ps_sigcatch, SIGSEGV)) {
 			printf(trap: pid %d.%d (%s): user %s DSI trap @ %#lx 
 			by %#lx (DSISR %#x, err=%d)\n,
@@ -308,6 +309,7 @@ trap(struct trapframe *tf)
 		}
 		ci-ci_ev_isi_fatal.ev_count++;
 		if (cpu_printfataltraps
+		 (p-p_slflag  PSL_TRACED) == 0
 		 !sigismember(p-p_sigctx.ps_sigcatch, SIGSEGV)) {
 			printf(trap: pid %d.%d (%s): user ISI trap @ %#lx 
 			(SRR1=%#lx)\n, p-p_pid, l-l_lid, p-p_comm,
@@ -335,6 +337,7 @@ trap(struct trapframe *tf)
 		if (fix_unaligned(l, tf) != 0) {
 			ci-ci_ev_ali_fatal.ev_count++;
 			if (cpu_printfataltraps
+			 (p-p_slflag  PSL_TRACED) == 0
 			 !sigismember(p-p_sigctx.ps_sigcatch, SIGBUS)) {
 printf(trap: pid %d.%d (%s): user ALI trap @ 
 %#lx by %#lx (DSISR %#x)\n,
@@ -360,6 +363,7 @@ trap(struct trapframe *tf)
 		break;
 #else
 		if (cpu_printfataltraps
+		 (p-p_slflag  PSL_TRACED) == 0
 		 !sigismember(p-p_sigctx.ps_sigcatch, SIGILL)) {
 			printf(trap: pid %d.%d (%s): user VEC trap @ %#lx 
 			(SRR1=%#lx)\n,
@@ -377,6 +381,7 @@ trap(struct trapframe *tf)
 	case EXC_MCHK|EXC_USER:
 		ci-ci_ev_umchk.ev_count++;
 		if (cpu_printfataltraps
+		 (p-p_slflag  PSL_TRACED) == 0
 		 !sigismember(p-p_sigctx.ps_sigcatch, SIGBUS)) {
 			printf(trap: pid %d (%s): user MCHK trap @ %#lx 
 			(SRR1=%#lx)\n,
@@ -422,6 +427,7 @@ trap(struct trapframe *tf)
 			} else
 ksi.ksi_code = ILL_ILLOPC;
 			if (cpu_printfataltraps
+			 (p-p_slflag  PSL_TRACED) == 0
 			 !sigismember(p-p_sigctx.ps_sigcatch,
 ksi.ksi_signo)) {
 printf(trap: pid %d.%d (%s): user PGM trap @



CVS commit: src/sys/arch/powerpc/powerpc

2012-08-01 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Aug  1 20:35:53 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: genassym.cf locore_subr.S

Log Message:
Add diagnostic code emptyidlespin verifying that the current IPL
is IPL_NONE and EE is set in the MSR.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/powerpc/powerpc/genassym.cf
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/genassym.cf
diff -u src/sys/arch/powerpc/powerpc/genassym.cf:1.8 src/sys/arch/powerpc/powerpc/genassym.cf:1.9
--- src/sys/arch/powerpc/powerpc/genassym.cf:1.8	Mon Jun 20 08:18:28 2011
+++ src/sys/arch/powerpc/powerpc/genassym.cf	Wed Aug  1 20:35:52 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.8 2011/06/20 08:18:28 matt Exp $
+#	$NetBSD: genassym.cf,v 1.9 2012/08/01 20:35:52 matt Exp $
 
 #-
 # Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
@@ -65,6 +65,7 @@ include powerpc/psl.h
 define	IPL_HIGH		IPL_HIGH
 define	IPL_SCHED		IPL_SCHED
 define	IPL_VM			IPL_VM
+define	IPL_NONE		IPL_NONE
 
 define	CPU_MAXNUM		CPU_MAXNUM
 

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.48 src/sys/arch/powerpc/powerpc/locore_subr.S:1.49
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.48	Sun Feb 19 21:06:23 2012
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Wed Aug  1 20:35:52 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.48 2012/02/19 21:06:23 rmind Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.49 2012/08/01 20:35:52 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -295,7 +295,17 @@ switchto_restore:
 #endif
 	ldreg	%r0,CFRAME_LR(%r1)
 	mtlr	%r0
+	blr/* CPUINIT needs a raw blr */
+
 ENTRY_NOPROFILE(emptyidlespin)
+#ifdef DIAGNOSTIC
+	GET_CPUINFO(%r3)
+	lbz	%r4,CI_CPL(%r3)
+	twnei	%r4,IPL_NONE
+	mfmsr	%r5
+	andi.	%r5,%r5,PSL_EE@l
+	tweqi	%r5,PSL_EE@l
+#endif
 	blr/* CPUINIT needs a raw blr */
 
 #ifdef __HAVE_FAST_SOFTINTS



CVS commit: src/sys/arch/powerpc/powerpc

2012-07-26 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Jul 27 04:17:07 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: trap_subr.S

Log Message:
Use %r6 for setting PSL_RI, not %r30 since r30 needs to be preserved.


To generate a diff of this commit:
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap_subr.S
diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.74 src/sys/arch/powerpc/powerpc/trap_subr.S:1.75
--- src/sys/arch/powerpc/powerpc/trap_subr.S:1.74	Wed Jul 18 16:56:51 2012
+++ src/sys/arch/powerpc/powerpc/trap_subr.S	Fri Jul 27 04:17:07 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.74 2012/07/18 16:56:51 matt Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.75 2012/07/27 04:17:07 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -1124,9 +1124,9 @@ _C_LABEL(sctrapexit):
 	streg	%r4,FRAME_CTR(%r1);	\
 	streg	%r11,FRAME_SRR0(%r1);	\
 	streg	%r12,FRAME_SRR1(%r1);	\
-	mfmsr	%r30;			\
-	ori	%r30,%r30,PSL_RI;	/* turn on recovery interrupt */\
-	mtmsr	%r30;			\
+	mfmsr	%r6;			\
+	ori	%r6,%r6,PSL_RI;		/* turn on recovery interrupt */\
+	mtmsr	%r6;			\
 	SAVE_VRSAVE(%r1,%r6);		\
 	SAVE_MQ(%r1,%r7)
 



CVS commit: src/sys/arch/powerpc/powerpc

2012-07-20 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Jul 20 14:21:20 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: syscall.c

Log Message:
Use the new syscall approach by collapsing fancy/plain variants into just
a single routine.


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/powerpc/powerpc/syscall.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/syscall.c
diff -u src/sys/arch/powerpc/powerpc/syscall.c:1.50 src/sys/arch/powerpc/powerpc/syscall.c:1.51
--- src/sys/arch/powerpc/powerpc/syscall.c:1.50	Sun Feb 19 21:06:24 2012
+++ src/sys/arch/powerpc/powerpc/syscall.c	Fri Jul 20 14:21:20 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: syscall.c,v 1.50 2012/02/19 21:06:24 rmind Exp $	*/
+/*	$NetBSD: syscall.c,v 1.51 2012/07/20 14:21:20 matt Exp $	*/
 
 /*
  * Copyright (C) 2002 Matt Thomas
@@ -61,7 +61,7 @@
 #define EMULNAME(x)	(x)
 #define EMULNAMEU(x)	(x)
 
-__KERNEL_RCSID(0, $NetBSD: syscall.c,v 1.50 2012/02/19 21:06:24 rmind Exp $);
+__KERNEL_RCSID(0, $NetBSD: syscall.c,v 1.51 2012/07/20 14:21:20 matt Exp $);
 
 void
 child_return(void *arg)
@@ -79,107 +79,15 @@ child_return(void *arg)
 }
 #endif
 
-static void EMULNAME(syscall_plain)(struct trapframe *);
-
 #include powerpc/spr.h
 
-void
-EMULNAME(syscall_plain)(struct trapframe *tf)
-{
-	struct lwp *l = curlwp;
-	struct proc *p = l-l_proc;
-	const struct sysent *callp;
-	size_t argsize;
-	register_t code;
-	register_t *params, rval[2];
-	register_t args[10];
-	int error;
-	int n;
-
-	LWP_CACHE_CREDS(l, p);
-	curcpu()-ci_ev_scalls.ev_count++;
-	curcpu()-ci_data.cpu_nsyscall++;
-
-	code = tf-tf_fixreg[0];
-	params = tf-tf_fixreg + FIRSTARG;
-	n = NARGREG;
-
-	{
-		switch (code) {
-		case EMULNAMEU(SYS_syscall):
-			/*
-			 * code is first argument,
-			 * followed by actual args.
-			 */
-			code = *params++;
-			n -= 1;
-			break;
-#if !defined(COMPAT_LINUX)
-		case EMULNAMEU(SYS___syscall):
-			params++;
-			code = *params++;
-			n -= 2;
-			break;
-#endif
-		default:
-			break;
-		}
-
-		callp = p-p_emul-e_sysent +
-		(code  (EMULNAMEU(SYS_NSYSENT)-1));
-	}
-
-	argsize = callp-sy_argsize;
-
-	if (argsize  n * sizeof(register_t)) {
-		memcpy(args, params, n * sizeof(register_t));
-		error = copyin(MOREARGS(tf-tf_fixreg[1]),
-		args + n,
-		argsize - n * sizeof(register_t));
-		if (error)
-			goto bad;
-		params = args;
-	}
-
-	rval[0] = 0;
-	rval[1] = 0;
-
-	error = sy_call(callp, l, params, rval);
-
-	switch (error) {
-	case 0:
-		tf-tf_fixreg[FIRSTARG] = rval[0];
-		tf-tf_fixreg[FIRSTARG + 1] = rval[1];
-		tf-tf_cr = ~0x1000;
-		break;
-	case ERESTART:
-		/*
-		 * Set user's pc back to redo the system call.
-		 */
-		tf-tf_srr0 -= 4;
-		break;
-	case EJUSTRETURN:
-		/* nothing to do */
-		break;
-	default:
-	bad:
-		if (p-p_emul-e_errno)
-			error = p-p_emul-e_errno[error];
-		tf-tf_fixreg[FIRSTARG] = error;
-		tf-tf_cr |= 0x1000;
-		break;
-	}
-
-	userret(l, tf);
-}
-
-static void EMULNAME(syscall_fancy)(struct trapframe *);
+static void EMULNAME(syscall)(struct trapframe *);
 
 void
-EMULNAME(syscall_fancy)(struct trapframe *tf)
+EMULNAME(syscall)(struct trapframe *tf)
 {
-	struct lwp *l = curlwp;
-	struct proc *p = l-l_proc;
+	struct lwp * const l = curlwp;
+	struct proc * const p = l-l_proc;
 	const struct sysent *callp;
 	size_t argsize;
 	register_t code;
@@ -236,38 +144,43 @@ EMULNAME(syscall_fancy)(struct trapframe
 		params = args;
 	}
 
-	if ((error = trace_enter(realcode, params, callp-sy_narg)) != 0)
-		goto out;
+	if (!__predict_false(p-p_trace_enabled)
+	|| __predict_false(callp-sy_flags  SYCALL_INDIRECT)
+	|| (error = trace_enter(realcode, params, callp-sy_narg)) == 0) {
+		rval[0] = 0;
+		rval[1] = 0;
+		error = sy_call(callp, l, params, rval);
+	}
 
-	rval[0] = 0;
-	rval[1] = 0;
+	if (__predict_false(p-p_trace_enabled)
+	 !__predict_false(callp-sy_flags  SYCALL_INDIRECT)) {
+		trace_exit(code, rval, error);
+	}
 
-	error = sy_call(callp, l, params, rval);
-out:
-	switch (error) {
-	case 0:
+	if (__predict_true(error == 0)) {
 		tf-tf_fixreg[FIRSTARG] = rval[0];
 		tf-tf_fixreg[FIRSTARG + 1] = rval[1];
 		tf-tf_cr = ~0x1000;
-		break;
-	case ERESTART:
-		/*
-		 * Set user's pc back to redo the system call.
-		 */
-		tf-tf_srr0 -= 4;
-		break;
-	case EJUSTRETURN:
-		/* nothing to do */
-		break;
-	default:
-	bad:
-		if (p-p_emul-e_errno)
-			error = p-p_emul-e_errno[error];
-		tf-tf_fixreg[FIRSTARG] = error;
-		tf-tf_cr |= 0x1000;
-		break;
+	} else {
+		switch (error) {
+		case ERESTART:
+			/*
+			 * Set user's pc back to redo the system call.
+			 */
+			tf-tf_srr0 -= 4;
+			break;
+		case EJUSTRETURN:
+			/* nothing to do */
+			break;
+		default:
+		bad:
+			if (p-p_emul-e_errno)
+error = p-p_emul-e_errno[error];
+			tf-tf_fixreg[FIRSTARG] = error;
+			tf-tf_cr |= 0x1000;
+			break;
+		}
 	}
-	trace_exit(realcode, rval, 

CVS commit: src/sys/arch/powerpc/powerpc

2012-07-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Jul 18 16:56:51 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: trap_subr.S

Log Message:
Add conditionals so this should work for the MPC8XX SoCs.
Turn on PSL_RI in interrupts.


To generate a diff of this commit:
cvs rdiff -u -r1.73 -r1.74 src/sys/arch/powerpc/powerpc/trap_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/trap_subr.S
diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.73 src/sys/arch/powerpc/powerpc/trap_subr.S:1.74
--- src/sys/arch/powerpc/powerpc/trap_subr.S:1.73	Wed Feb  1 05:25:58 2012
+++ src/sys/arch/powerpc/powerpc/trap_subr.S	Wed Jul 18 16:56:51 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap_subr.S,v 1.73 2012/02/01 05:25:58 matt Exp $	*/
+/*	$NetBSD: trap_subr.S,v 1.74 2012/07/18 16:56:51 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -79,6 +79,14 @@
 	ldreg	t0,_C_LABEL(kernel_pmap_)+PM_STEG@l(t0);		\
 	mtasr	t0
 
+#elif defined(PPC_MPC8XX)
+
+/*
+ * PPC_MPC8XX don't have SRs to load
+ */
+#define RESTORE_USER_SRS(t0,t1)
+#define RESTORE_KERN_SRS(t0,t1)
+
 #else /* not OEA64 */
 
 /*
@@ -216,6 +224,7 @@ _C_LABEL(alitrap):
 #endif
 _C_LABEL(alisize) = .-_C_LABEL(alitrap)
 
+#if !defined(PPC_MPC8XX)
 /*
  * Similar to the above for DSI
  * Has to handle BAT spills
@@ -232,10 +241,11 @@ _C_LABEL(dsitrap):
 	streg	%r31,(CI_DISISAVE+CPUSAVE_R31)(%r1)	/* save r31 */
 	mfsprg1	%r1
 	mfcr	%r29			/* save CR */
-	mfxer	%r30			/* save XER */
-	mtsprg2	%r30			/* in SPRG2 */
 	mfsrr1	%r31			/* test kernel mode */
 	mtcr	%r31
+#if !defined(PPC_MPC8XX)
+	mfxer	%r30			/* save XER */
+	mtsprg2	%r30			/* in SPRG2 */
 	bt	MSR_PR,1f		/* branch if PSL_PR is set */
 	mfdar	%r31			/* get fault address */
 	rlwinm	%r31,%r31,3+(32-BAT_ADDR_SHIFT),BAT_ADDR_SHIFT-3,28
@@ -296,6 +306,7 @@ dsitrap_fix_dbat7:
 	mfsprg1	%r1
 	RFI/* return to trapped code */
 1:
+#endif	/* !PPC_MPC8XX */
 	mflr	%r28			/* save LR */
 	mtsprg1	%r1			/* save SP */
 #if defined(DISTANT_KERNEL)
@@ -307,6 +318,7 @@ dsitrap_fix_dbat7:
 	bla	disitrap
 #endif
 _C_LABEL(dsisize) = .-_C_LABEL(dsitrap)
+#endif /* !PPC_MPC8XX */
 
 #if defined(PPC_OEA601)
 /*
@@ -444,7 +456,7 @@ _C_LABEL(decrint):
 #endif
 _C_LABEL(decrsize) = .-_C_LABEL(decrint)
 
-#if !defined(PPC_OEA64)
+#if !defined(PPC_OEA64)  !defined(PPC_MPC8XX)
 /*
  * Now the tlb software load for 603 processors:
  * (Code essentially from the 603e User Manual, Chapter 5, but
@@ -648,7 +660,7 @@ _C_LABEL(tlbdsmiss):
 	ba	EXC_DSI
 #endif
 _C_LABEL(tlbdsmsize) = .-_C_LABEL(tlbdsmiss)
-#endif /* !defined(PPC_OEA64) */
+#endif /* !PPC_OEA64  !PPC_MPC8XX */
 
 #if defined(DDB) || defined(KGDB)
 /*
@@ -1112,6 +1124,9 @@ _C_LABEL(sctrapexit):
 	streg	%r4,FRAME_CTR(%r1);	\
 	streg	%r11,FRAME_SRR0(%r1);	\
 	streg	%r12,FRAME_SRR1(%r1);	\
+	mfmsr	%r30;			\
+	ori	%r30,%r30,PSL_RI;	/* turn on recovery interrupt */\
+	mtmsr	%r30;			\
 	SAVE_VRSAVE(%r1,%r6);		\
 	SAVE_MQ(%r1,%r7)
 
@@ -1337,5 +1352,7 @@ _C_LABEL(trapend):
  * All OEA have FPUs so include this too.  Some OEA have AltiVec so include
  * that too.
  */
+#if !defined(PPC_MPC8XX)
 #include powerpc/powerpc/fpu_subr.S
 #include powerpc/oea/altivec_subr.S
+#endif



CVS commit: src/sys/arch/powerpc/powerpc

2012-07-18 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Jul 18 17:41:59 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: bus_space.c

Log Message:
Fix some boundary conditions (fence post errors).


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/powerpc/powerpc/bus_space.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/bus_space.c
diff -u src/sys/arch/powerpc/powerpc/bus_space.c:1.33 src/sys/arch/powerpc/powerpc/bus_space.c:1.34
--- src/sys/arch/powerpc/powerpc/bus_space.c:1.33	Thu Jul  5 03:02:53 2012
+++ src/sys/arch/powerpc/powerpc/bus_space.c	Wed Jul 18 17:41:59 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space.c,v 1.33 2012/07/05 03:02:53 kiyohara Exp $	*/
+/*	$NetBSD: bus_space.c,v 1.34 2012/07/18 17:41:59 matt Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.33 2012/07/05 03:02:53 kiyohara Exp $);
+__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.34 2012/07/18 17:41:59 matt Exp $);
 
 #define _POWERPC_BUS_SPACE_PRIVATE
 
@@ -400,7 +400,7 @@ bus_space_init(struct powerpc_bus_space 
 {
 	if (t-pbs_extent == NULL  extent_name != NULL) {
 		t-pbs_extent = extent_create(extent_name, t-pbs_base,
-		t-pbs_limit-1, storage, storage_size,
+		t-pbs_limit, storage, storage_size,
 		EX_NOCOALESCE|EX_NOWAIT);
 		if (t-pbs_extent == NULL)
 			return ENOMEM;
@@ -525,7 +525,7 @@ memio_map(bus_space_tag_t t, bus_addr_t 
 	size = _BUS_SPACE_STRIDE(t, size);
 	bpa = _BUS_SPACE_STRIDE(t, bpa);
 
-	if (t-pbs_limit != 0  bpa + size  t-pbs_limit) {
+	if (t-pbs_limit != 0  bpa + size - 1  t-pbs_limit) {
 #ifdef DEBUG
 		printf(bus_space_map(%p[%x:%x], %#x, %#x) failed: EINVAL\n,
 		t, t-pbs_base, t-pbs_limit, bpa, size);
@@ -709,7 +709,7 @@ memio_alloc(bus_space_tag_t t, bus_addr_
 	if (t-pbs_extent == NULL)
 		return ENOMEM;
 
-	if (t-pbs_limit != 0  rstart + size  t-pbs_limit) {
+	if (t-pbs_limit != 0  rstart + size - 1  t-pbs_limit) {
 #ifdef DEBUG
 		printf(%s(%p[%x:%x], %#x, %#x) failed: EINVAL\n,
 		   __func__, t, t-pbs_base, t-pbs_limit, rstart, size);



CVS commit: src/sys/arch/powerpc/powerpc

2012-07-04 Thread KIYOHARA Takashi
Module Name:src
Committed By:   kiyohara
Date:   Thu Jul  5 03:02:53 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: bus_space.c

Log Message:
Don't call extent_free() in memio_unmap(), if not call extent_alloc() with
defined PPC_IBM4XX and extent_flags.


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/powerpc/powerpc/bus_space.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/bus_space.c
diff -u src/sys/arch/powerpc/powerpc/bus_space.c:1.32 src/sys/arch/powerpc/powerpc/bus_space.c:1.33
--- src/sys/arch/powerpc/powerpc/bus_space.c:1.32	Wed Feb  1 09:54:03 2012
+++ src/sys/arch/powerpc/powerpc/bus_space.c	Thu Jul  5 03:02:53 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space.c,v 1.32 2012/02/01 09:54:03 matt Exp $	*/
+/*	$NetBSD: bus_space.c,v 1.33 2012/07/05 03:02:53 kiyohara Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.32 2012/02/01 09:54:03 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.33 2012/07/05 03:02:53 kiyohara Exp $);
 
 #define _POWERPC_BUS_SPACE_PRIVATE
 
@@ -679,6 +679,9 @@ memio_unmap(bus_space_tag_t t, bus_space
 	bpa = pa - t-pbs_offset;
 
 	if (t-pbs_extent != NULL
+#ifdef PPC_IBM4XX
+	 extent_flags
+#endif
 	 extent_free(t-pbs_extent, bpa, size,
 			   EX_NOWAIT | extent_flags)) {
 		printf(memio_unmap: %s 0x%lx, size 0x%lx\n,



CVS commit: src/sys/arch/powerpc/powerpc

2012-06-28 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Jun 28 15:28:45 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
Don't panic if you can't allocate a contiguous stack for system threads.
Just use a mapped a stack.


To generate a diff of this commit:
cvs rdiff -u -r1.96 -r1.97 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.96 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.97
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.96	Sat Mar 24 17:52:35 2012
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Thu Jun 28 15:28:44 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.96 2012/03/24 17:52:35 matt Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.97 2012/06/28 15:28:44 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.96 2012/03/24 17:52:35 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.97 2012/06/28 15:28:44 matt Exp $);
 
 #include opt_altivec.h
 #include opt_multiprocessor.h
@@ -292,9 +292,7 @@ cpu_uarea_alloc(bool system)
 	 */
 	error = uvm_pglistalloc(USPACE, 0, ~0UL, 0, 0, pglist, 1, 1);
 	if (error) {
-		if (!system)
-			return NULL;
-		panic(%s: uvm_pglistalloc failed: %d, __func__, error);
+		return NULL;
 	}
 
 	/*



CVS commit: src/sys/arch/powerpc/powerpc

2012-03-24 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Mar 24 17:52:35 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
When a stack is specified, make sure the stack has enough for a previous
callframe in which the LR can be stored.  (atf test t_clone:clone_basic
now passes).


To generate a diff of this commit:
cvs rdiff -u -r1.95 -r1.96 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.95 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.96
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.95	Sun Feb 19 21:06:25 2012
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Sat Mar 24 17:52:35 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.95 2012/02/19 21:06:25 rmind Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.96 2012/03/24 17:52:35 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.95 2012/02/19 21:06:25 rmind Exp $);
+__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.96 2012/03/24 17:52:35 matt Exp $);
 
 #include opt_altivec.h
 #include opt_multiprocessor.h
@@ -108,10 +108,13 @@ cpu_lwp_fork(struct lwp *l1, struct lwp 
 	*l2-l_md.md_utf = *l1-l_md.md_utf;
 
 	/*
-	 * If specified, give the child a different stack.
+	 * If specified, give the child a different stack.  Make sure to
+	 * reserve enough at the top to store the previous LR.
 	 */
 	if (stack != NULL) {
-		l2-l_md.md_utf-tf_fixreg[1] = (register_t)stack + stacksize;
+		l2-l_md.md_utf-tf_fixreg[1] =	
+		((register_t)stack + stacksize - STACK_ALIGNBYTES)
+			 ~STACK_ALIGNBYTES;
 	}
 
 	/*



CVS commit: src/sys/arch/powerpc/powerpc

2012-03-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Mar 23 15:46:44 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: db_disasm.c

Log Message:
Decode isel{lt,gt,eq}


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/powerpc/powerpc/db_disasm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/db_disasm.c
diff -u src/sys/arch/powerpc/powerpc/db_disasm.c:1.26 src/sys/arch/powerpc/powerpc/db_disasm.c:1.27
--- src/sys/arch/powerpc/powerpc/db_disasm.c:1.26	Thu Jan 28 19:01:32 2010
+++ src/sys/arch/powerpc/powerpc/db_disasm.c	Fri Mar 23 15:46:44 2012
@@ -1,8 +1,8 @@
-/*	$NetBSD: db_disasm.c,v 1.26 2010/01/28 19:01:32 phx Exp $	*/
+/*	$NetBSD: db_disasm.c,v 1.27 2012/03/23 15:46:44 matt Exp $	*/
 /*	$OpenBSD: db_disasm.c,v 1.2 1996/12/28 06:21:48 rahnds Exp $	*/
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: db_disasm.c,v 1.26 2010/01/28 19:01:32 phx Exp $);
+__KERNEL_RCSID(0, $NetBSD: db_disasm.c,v 1.27 2012/03/23 15:46:44 matt Exp $);
 
 #include sys/param.h
 #include sys/proc.h
@@ -215,6 +215,9 @@ const struct opcode opcodes_1f[] = {
 	{ mulhdu,	0xfc0007fe, 0x7c12, Op_D | Op_A | Op_B | Op_Rc },
 	{ addc,	0xfc0003fe, 0x7c14, Op_D | Op_A | Op_B | Op_OE | Op_Rc },
 	{ mulhwu,	0xfc0007fe, 0x7c16, Op_D | Op_A | Op_B | Op_Rc },
+	{ isellt,	0xfc0007ff, 0x7c1e, Op_D | Op_A | Op_B },
+	{ iselgt,	0xfc0007ff, 0x7c5e, Op_D | Op_A | Op_B },
+	{ iseleq,	0xfc0007ff, 0x7c9e, Op_D | Op_A | Op_B },
 
 	{ mfcr,	0xfc0007fe, 0x7c26, Op_D },
 	{ lwarx,	0xfc0007fe, 0x7c28, Op_D | Op_A | Op_B },



CVS commit: src/sys/arch/powerpc/powerpc

2012-02-13 Thread Frank Wille
Module Name:src
Committed By:   phx
Date:   Mon Feb 13 13:44:14 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
Allow all physical addresses from 0 to 0x in cpu_uarea_alloc().
This fixes a panic with amigappc, which has RAM starting at 0x0800.
Ok by releng@.


To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.93 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.94
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.93	Sat Jan 28 16:30:23 2012
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Mon Feb 13 13:44:14 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.93 2012/01/28 16:30:23 skrll Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.94 2012/02/13 13:44:14 phx Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.93 2012/01/28 16:30:23 skrll Exp $);
+__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.94 2012/02/13 13:44:14 phx Exp $);
 
 #include opt_altivec.h
 #include opt_multiprocessor.h
@@ -295,7 +295,7 @@ cpu_uarea_alloc(bool system)
 	 * Allocate a new physically contiguous uarea which can be
 	 * direct-mapped.
 	 */
-	error = uvm_pglistalloc(USPACE, 0, ptoa(physmem), 0, 0, pglist, 1, 1);
+	error = uvm_pglistalloc(USPACE, 0, ~0UL, 0, 0, pglist, 1, 1);
 	if (error) {
 		if (!system)
 			return NULL;



CVS commit: src/sys/arch/powerpc/powerpc

2012-02-01 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Feb  1 09:51:01 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: db_interface.c

Log Message:
Need runtime checks for mach mmu command.


To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/sys/arch/powerpc/powerpc/db_interface.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/db_interface.c
diff -u src/sys/arch/powerpc/powerpc/db_interface.c:1.49 src/sys/arch/powerpc/powerpc/db_interface.c:1.50
--- src/sys/arch/powerpc/powerpc/db_interface.c:1.49	Wed Feb  1 05:25:58 2012
+++ src/sys/arch/powerpc/powerpc/db_interface.c	Wed Feb  1 09:51:00 2012
@@ -1,8 +1,8 @@
-/*	$NetBSD: db_interface.c,v 1.49 2012/02/01 05:25:58 matt Exp $ */
+/*	$NetBSD: db_interface.c,v 1.50 2012/02/01 09:51:00 matt Exp $ */
 /*	$OpenBSD: db_interface.c,v 1.2 1996/12/28 06:21:50 rahnds Exp $	*/
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: db_interface.c,v 1.49 2012/02/01 05:25:58 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: db_interface.c,v 1.50 2012/02/01 09:51:00 matt Exp $);
 
 #define USERACC
 
@@ -343,6 +343,9 @@ db_show_bat(db_expr_t addr, bool have_ad
 	u_int i;
 	u_int maxbat = (oeacpufeat  OEACPU_HIGHBAT) ? 8 : 4;
 
+	if (oeacpufeat  OEACPU_NOBAT)
+		return;
+
 	cpuvers = mfpvr()  16;
 
 	ibat[0].batu = mfspr(SPR_IBAT0U);
@@ -406,26 +409,27 @@ static void
 db_show_mmu(db_expr_t addr, bool have_addr, db_expr_t count, const char *modif)
 {
 	paddr_t sdr1;
-#if !defined(PPC_OEA64)  !defined(PPC_OEA64_BRIDGE)
-	register_t sr;
-	vaddr_t saddr;
-	int i;
-#endif
 
 	__asm volatile (mfsdr1 %0 : =r(sdr1));
 	db_printf(sdr1\t\t0x%08lx\n, sdr1);
 
 #if defined(PPC_OEA64) || defined(PPC_OEA64_BRIDGE)
-	__asm volatile (mfasr %0 : =r(sdr1));
-	db_printf(asr\t\t0x%08lx\n, sdr1);
-#else
-	saddr = 0;
-	for (i = 0; i= 0xf; i++) {
-		if ((i  3) == 0)
-			db_printf(sr%d-%d\t\t, i, i+3);
-		__asm volatile (mfsrin %0,%1 : =r(sr) : r(saddr));
-		db_printf(0x%08lx   %c, sr, (i3) == 3 ? '\n' : ' ');
-		saddr += 1  ADDR_SR_SHFT;
+	if (oeacpufeat  (OEACPU_64|OEACPU_64_BRIDGE)) {
+		__asm volatile (mfasr %0 : =r(sdr1));
+		db_printf(asr\t\t0x%08lx\n, sdr1);
+	}
+#endif
+#if defined(PPC_OEA) || defined(PPC_OEA64_BRIDGE)
+	if ((oeacpufeat  OEACPU_64) == 0) {
+		vaddr_t saddr = 0;
+		for (u_int i = 0; i = 0xf; i++) {
+			register_t sr;
+			if ((i  3) == 0)
+db_printf(sr%d-%d\t\t, i, i+3);
+			__asm volatile (mfsrin %0,%1 : =r(sr) : r(saddr));
+			db_printf(0x%08lx   %c, sr, (i3) == 3 ? '\n' : ' ');
+			saddr += 1  ADDR_SR_SHFT;
+		}
 	}
 #endif
 }



CVS commit: src/sys/arch/powerpc/powerpc

2012-01-30 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jan 30 23:34:15 UTC 2012

Modified Files:
src/sys/arch/powerpc/powerpc: bus_dma.c

Log Message:
Use ANSI prototype for _bus_dmamem_alloc_range.
Caught when compiling with -Wold-style-definition


To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/powerpc/powerpc/bus_dma.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/bus_dma.c
diff -u src/sys/arch/powerpc/powerpc/bus_dma.c:1.44 src/sys/arch/powerpc/powerpc/bus_dma.c:1.45
--- src/sys/arch/powerpc/powerpc/bus_dma.c:1.44	Tue Jul 19 19:55:23 2011
+++ src/sys/arch/powerpc/powerpc/bus_dma.c	Mon Jan 30 23:34:15 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_dma.c,v 1.44 2011/07/19 19:55:23 matt Exp $	*/
+/*	$NetBSD: bus_dma.c,v 1.45 2012/01/30 23:34:15 matt Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 
 #define _POWERPC_BUS_DMA_PRIVATE
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bus_dma.c,v 1.44 2011/07/19 19:55:23 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: bus_dma.c,v 1.45 2012/01/30 23:34:15 matt Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -701,16 +701,17 @@ _bus_dmamem_mmap(bus_dma_tag_t t, bus_dm
  * Called by DMA-safe memory allocation methods.
  */
 int
-_bus_dmamem_alloc_range(t, size, alignment, boundary, segs, nsegs, rsegs,
-flags, low, high)
-	bus_dma_tag_t t;
-	bus_size_t size, alignment, boundary;
-	bus_dma_segment_t *segs;
-	int nsegs;
-	int *rsegs;
-	int flags;
-	paddr_t low;
-	paddr_t high;
+_bus_dmamem_alloc_range(
+	bus_dma_tag_t t,
+	bus_size_t size,
+	bus_size_t alignment,
+	bus_size_t boundary,
+	bus_dma_segment_t *segs,
+	int nsegs,
+	int *rsegs,
+	int flags,
+	paddr_t low,
+	paddr_t high)
 {
 	paddr_t curaddr, lastaddr;
 	struct vm_page *m;



CVS commit: src/sys/arch/powerpc/powerpc

2011-12-17 Thread Frank Wille
Module Name:src
Committed By:   phx
Date:   Sat Dec 17 19:34:07 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: bus_space.c

Log Message:
Allow defining a bus space with pbs_limit=0, which will have the effect to
create a space which ends with 0x.
This is needed, because pbs_limit=0x ends the space with 0xfffe.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/powerpc/powerpc/bus_space.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/bus_space.c
diff -u src/sys/arch/powerpc/powerpc/bus_space.c:1.28 src/sys/arch/powerpc/powerpc/bus_space.c:1.29
--- src/sys/arch/powerpc/powerpc/bus_space.c:1.28	Thu Jun 30 00:53:00 2011
+++ src/sys/arch/powerpc/powerpc/bus_space.c	Sat Dec 17 19:34:07 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space.c,v 1.28 2011/06/30 00:53:00 matt Exp $	*/
+/*	$NetBSD: bus_space.c,v 1.29 2011/12/17 19:34:07 phx Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.28 2011/06/30 00:53:00 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: bus_space.c,v 1.29 2011/12/17 19:34:07 phx Exp $);
 
 #define _POWERPC_BUS_SPACE_PRIVATE
 
@@ -526,7 +526,7 @@ memio_map(bus_space_tag_t t, bus_addr_t 
 	size = _BUS_SPACE_STRIDE(t, size);
 	bpa = _BUS_SPACE_STRIDE(t, bpa);
 
-	if (bpa + size  t-pbs_limit) {
+	if (t-pbs_limit != 0  bpa + size  t-pbs_limit) {
 #ifdef DEBUG
 		printf(bus_space_map(%p[%x:%x], %#x, %#x) failed: EINVAL\n,
 		t, t-pbs_base, t-pbs_limit, bpa, size);
@@ -702,7 +702,7 @@ memio_alloc(bus_space_tag_t t, bus_addr_
 	if (t-pbs_extent == NULL)
 		return ENOMEM;
 
-	if (rstart + size  t-pbs_limit) {
+	if (t-pbs_limit != 0  rstart + size  t-pbs_limit) {
 #ifdef DEBUG
 		printf(%s(%p[%x:%x], %#x, %#x) failed: EINVAL\n,
 		   __func__, t, t-pbs_base, t-pbs_limit, rstart, size);



CVS commit: src/sys/arch/powerpc/powerpc

2011-07-31 Thread KIYOHARA Takashi
Module Name:src
Committed By:   kiyohara
Date:   Sun Jul 31 10:00:52 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
s/MULTIPROCESOR/MULTIPROCESSOR/.


To generate a diff of this commit:
cvs rdiff -u -r1.59 -r1.60 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.59 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.60
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.59	Wed Jun 29 06:00:17 2011
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Sun Jul 31 10:00:52 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.59 2011/06/29 06:00:17 matt Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.60 2011/07/31 10:00:52 kiyohara Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.59 2011/06/29 06:00:17 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.60 2011/07/31 10:00:52 kiyohara Exp $);
 
 #include opt_altivec.h
 #include opt_modular.h
@@ -69,7 +69,7 @@
 #include powerpc/altivec.h
 #endif
 
-#ifdef MULTIPROCESOR
+#ifdef MULTIPROCESSOR
 #include powerpc/pic/ipivar.h
 #endif
 



CVS commit: src/sys/arch/powerpc/powerpc

2011-07-19 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Jul 19 19:55:23 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: bus_dma.c

Log Message:
Fix missed change of BUS_DMA_NOCACHE to BUS_DMA_DONTCACHE.


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/sys/arch/powerpc/powerpc/bus_dma.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/bus_dma.c
diff -u src/sys/arch/powerpc/powerpc/bus_dma.c:1.43 src/sys/arch/powerpc/powerpc/bus_dma.c:1.44
--- src/sys/arch/powerpc/powerpc/bus_dma.c:1.43	Sun Jul 17 23:23:54 2011
+++ src/sys/arch/powerpc/powerpc/bus_dma.c	Tue Jul 19 19:55:23 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_dma.c,v 1.43 2011/07/17 23:23:54 dyoung Exp $	*/
+/*	$NetBSD: bus_dma.c,v 1.44 2011/07/19 19:55:23 matt Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 
 #define _POWERPC_BUS_DMA_PRIVATE
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bus_dma.c,v 1.43 2011/07/17 23:23:54 dyoung Exp $);
+__KERNEL_RCSID(0, $NetBSD: bus_dma.c,v 1.44 2011/07/19 19:55:23 matt Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -605,7 +605,7 @@
 	 * If we are mapping a cacheable physically contiguous segment, treat
 	 * it as if we are mapping a poolpage and avoid consuming any KVAs.
 	 */
-	if (nsegs == 1  (flags  BUS_DMA_NOCACHE) == 0) {
+	if (nsegs == 1  (flags  BUS_DMA_DONTCACHE) == 0) {
 		KASSERT(size == segs-ds_len);
 		addr = BUS_MEM_TO_PHYS(t, segs-ds_addr);
 		*kvap = (void *)PMAP_MAP_POOLPAGE(addr);



CVS commit: src/sys/arch/powerpc/powerpc

2011-07-01 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Jul  1 23:47:10 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: fixup.c

Log Message:
Change assert to panic.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/powerpc/powerpc/fixup.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/fixup.c
diff -u src/sys/arch/powerpc/powerpc/fixup.c:1.4 src/sys/arch/powerpc/powerpc/fixup.c:1.5
--- src/sys/arch/powerpc/powerpc/fixup.c:1.4	Wed Jun 15 15:18:20 2011
+++ src/sys/arch/powerpc/powerpc/fixup.c	Fri Jul  1 23:47:09 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: fixup.c,v 1.4 2011/06/15 15:18:20 matt Exp $	*/
+/*	$NetBSD: fixup.c,v 1.5 2011/07/01 23:47:09 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.4 2011/06/15 15:18:20 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: fixup.c,v 1.5 2011/07/01 23:47:09 matt Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -177,7 +177,11 @@
 			case OPC_branch_19: {
 KASSERT(r_lr == -1 || i.i_int == 0x4e800421);
 KASSERT(r_lr != -1 || i.i_int == 0x4e800420);
-KASSERT(ctr != 0);
+if (ctr == 0) {
+	panic(%s: jump at %p to %p would 
+	branch to 0, __func__, insnp,
+	insnp + instr.i_i.i_li);
+}
 fixup.jfi_real = fixup_addr2offset(ctr);
 break;
 			}



CVS commit: src/sys/arch/powerpc/powerpc

2011-07-01 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sat Jul  2 00:38:30 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c

Log Message:
Default to normal uvm_uarea_alloc if we can't allocate one ourselves.


To generate a diff of this commit:
cvs rdiff -u -r1.90 -r1.91 src/sys/arch/powerpc/powerpc/vm_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.90 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.91
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.90	Mon Jun 20 05:50:39 2011
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c	Sat Jul  2 00:38:29 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm_machdep.c,v 1.90 2011/06/20 05:50:39 matt Exp $	*/
+/*	$NetBSD: vm_machdep.c,v 1.91 2011/07/02 00:38:29 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.90 2011/06/20 05:50:39 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: vm_machdep.c,v 1.91 2011/07/02 00:38:29 matt Exp $);
 
 #include opt_altivec.h
 #include opt_multiprocessor.h
@@ -298,7 +298,7 @@
 	error = uvm_pglistalloc(USPACE, 0, ptoa(physmem), 0, 0, pglist, 1, 1);
 	if (error) {
 		if (!system)
-			return NULL;
+			return (void *)uvm_uarea_alloc();
 		panic(%s: uvm_pglistalloc failed: %d, __func__, error);
 	}
 
@@ -315,7 +315,7 @@
 
 	return (void *)(uintptr_t)PMAP_MAP_POOLPAGE(pa);
 #else
-	return NULL;
+	return (void *)uvm_uarea_alloc();
 #endif
 }
 



CVS commit: src/sys/arch/powerpc/powerpc

2011-06-28 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Jun 29 05:57:30 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: intr_stubs.c

Log Message:
Add cpu_send_ipi stub


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/powerpc/powerpc/intr_stubs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/intr_stubs.c
diff -u src/sys/arch/powerpc/powerpc/intr_stubs.c:1.2 src/sys/arch/powerpc/powerpc/intr_stubs.c:1.3
--- src/sys/arch/powerpc/powerpc/intr_stubs.c:1.2	Wed Jun 15 17:47:45 2011
+++ src/sys/arch/powerpc/powerpc/intr_stubs.c	Wed Jun 29 05:57:30 2011
@@ -38,7 +38,7 @@
 
 #include sys/cdefs.h
 
-__KERNEL_RCSID(0, $NetBSD: intr_stubs.c,v 1.2 2011/06/15 17:47:45 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: intr_stubs.c,v 1.3 2011/06/29 05:57:30 matt Exp $);
 
 #include sys/param.h
 #include sys/cpu.h
@@ -207,5 +207,12 @@
 intr_wdogintr(struct trapframe *tf)
 {
 	(*powerpc_intrsw-intrsw_wdogintr)(tf);
-	
+}
+
+void cpu_send_ipi(cpuid_t, uint32_t) __stub;
+
+void
+cpu_send_ipi(cpuid_t id, uint32_t mask)
+{
+	(*powerpc_intrsw-intrsw_cpu_send_ipi)(id, mask);
 }



CVS commit: src/sys/arch/powerpc/powerpc

2011-06-24 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri Jun 24 22:19:45 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
Fix code that's been broken for over seven years...


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/powerpc/powerpc/powerpc_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.57 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.58
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.57	Tue Jun 21 06:32:36 2011
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Fri Jun 24 22:19:45 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.57 2011/06/21 06:32:36 matt Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.58 2011/06/24 22:19:45 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.57 2011/06/21 06:32:36 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: powerpc_machdep.c,v 1.58 2011/06/24 22:19:45 matt Exp $);
 
 #include opt_altivec.h
 #include opt_modular.h
@@ -159,7 +159,7 @@
 	struct sysctlnode node = *rnode;
 
 	if (powersave  0)
-		node.sysctl_flags |= ~CTLFLAG_READWRITE;
+		node.sysctl_flags = ~CTLFLAG_READWRITE;
 	return (sysctl_lookup(SYSCTLFN_CALL(node)));
 }
 #endif



CVS commit: src/sys/arch/powerpc/powerpc

2011-06-20 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Mon Jun 20 08:18:28 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: genassym.cf locore_subr.S

Log Message:
If this is a MODULAR kernel, export USRSTACK and CPU_MAXNUM as linker symbols
so modules can access them.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/powerpc/powerpc/genassym.cf
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/powerpc/powerpc/locore_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/genassym.cf
diff -u src/sys/arch/powerpc/powerpc/genassym.cf:1.7 src/sys/arch/powerpc/powerpc/genassym.cf:1.8
--- src/sys/arch/powerpc/powerpc/genassym.cf:1.7	Sat Jun 18 21:17:29 2011
+++ src/sys/arch/powerpc/powerpc/genassym.cf	Mon Jun 20 08:18:28 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.7 2011/06/18 21:17:29 matt Exp $
+#	$NetBSD: genassym.cf,v 1.8 2011/06/20 08:18:28 matt Exp $
 
 #-
 # Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
@@ -48,23 +48,26 @@
 quote #define __INTR_PRIVATE
 
 include sys/param.h
-include sys/intr.h
+include sys/bitops.h
 include sys/cpu.h
-include sys/mutex.h
-include sys/rwlock.h
+include sys/intr.h
 include sys/lwp.h
+include sys/mutex.h
 include sys/proc.h
-include sys/bitops.h
+include sys/rwlock.h
 
 include uvm/uvm_extern.h
 
-include machine/pcb.h
-include machine/frame.h
+include powerpc/frame.h
+include powerpc/pcb.h
+include powerpc/psl.h
 
 define	IPL_HIGH		IPL_HIGH
 define	IPL_SCHED		IPL_SCHED
 define	IPL_VM			IPL_VM
 
+define	CPU_MAXNUM		CPU_MAXNUM
+
 define	FRAMELEN	FRAMELEN
 define	FRAME_TF	offsetof(struct ktrapframe, ktf_tf)
 define	FRAME_R0	offsetof(struct ktrapframe, ktf_tf.tf_fixreg[0])
@@ -198,6 +201,7 @@
 define	PAGE_SIZE	PAGE_SIZE
 define	PAGE_MASK	PAGE_MASK
 define	PAGE_SHIFT	PAGE_SHIFT
+define	USRSTACK	USRSTACK
 
 ifdef	__HAVE_FAST_SOFTINTS
 define	__HAVE_FAST_SOFTINTS	__HAVE_FAST_SOFTINTS

Index: src/sys/arch/powerpc/powerpc/locore_subr.S
diff -u src/sys/arch/powerpc/powerpc/locore_subr.S:1.44 src/sys/arch/powerpc/powerpc/locore_subr.S:1.45
--- src/sys/arch/powerpc/powerpc/locore_subr.S:1.44	Fri Jun 17 23:14:40 2011
+++ src/sys/arch/powerpc/powerpc/locore_subr.S	Mon Jun 20 08:18:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_subr.S,v 1.44 2011/06/17 23:14:40 matt Exp $	*/
+/*	$NetBSD: locore_subr.S,v 1.45 2011/06/20 08:18:28 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -77,6 +77,7 @@
 #include opt_lockdebug.h
 #include opt_multiprocessor.h
 #include opt_ddb.h
+#include opt_modular.h
 
 #ifdef DDB
 #define	CFRAME_LRSAVE(t0)	\
@@ -142,6 +143,13 @@
 GLOBAL(powersave)
 	.long	-1
 
+#ifdef MODULAR
+	.global	__USRSTACK
+	.equ	__USRSTACK, USRSTACK
+	.global	__CPU_MAXNUM
+	.equ	__CPU_MAXNUM, CPU_MAXNUM
+#endif
+
 	.text
 	.align 2
 /*



CVS commit: src/sys/arch/powerpc/powerpc

2011-06-20 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Jun 21 04:22:25 UTC 2011

Modified Files:
src/sys/arch/powerpc/powerpc: softint_machdep.c

Log Message:
Add an extra assert to verify we aren't trying to process softints while
interrupts are being serviced.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/powerpc/powerpc/softint_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/softint_machdep.c
diff -u src/sys/arch/powerpc/powerpc/softint_machdep.c:1.1 src/sys/arch/powerpc/powerpc/softint_machdep.c:1.2
--- src/sys/arch/powerpc/powerpc/softint_machdep.c:1.1	Tue Jun 14 22:36:13 2011
+++ src/sys/arch/powerpc/powerpc/softint_machdep.c	Tue Jun 21 04:22:25 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: softint_machdep.c,v 1.1 2011/06/14 22:36:13 matt Exp $	*/
+/*	$NetBSD: softint_machdep.c,v 1.2 2011/06/21 04:22:25 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -69,6 +69,9 @@
 	const u_int softint_mask = (IPL_SOFTMASK  old_ipl)  IPL_SOFTMASK;
 	u_int softints;
 
+	KASSERTMSG(ci-ci_idepth == -1,
+	(%s: cpu%u: idepth (%d) != -1, __func__,
+	 cpu_index(ci), ci-ci_idepth));
 	KASSERT(ci-ci_mtx_count == 0);
 	KASSERT(ci-ci_cpl == IPL_HIGH);
 	while ((softints = (ci-ci_data.cpu_softints  softint_mask)) != 0) {



  1   2   >