Module Name:    src
Committed By:   thorpej
Date:           Sat Feb 27 01:22:18 UTC 2021

Modified Files:
        src/sys/arch/powerpc/oea: ofwoea_machdep.c

Log Message:
In ofwoea_initppc(), call oea_init() after getting the bootpath, etc.
Also, add a comment explaining why it's actually necessary to clear
PSL_IP after installing the kernel's exception vectors.


To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/powerpc/oea/ofwoea_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/oea/ofwoea_machdep.c
diff -u src/sys/arch/powerpc/oea/ofwoea_machdep.c:1.54 src/sys/arch/powerpc/oea/ofwoea_machdep.c:1.55
--- src/sys/arch/powerpc/oea/ofwoea_machdep.c:1.54	Wed Feb 24 16:53:00 2021
+++ src/sys/arch/powerpc/oea/ofwoea_machdep.c	Sat Feb 27 01:22:18 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ofwoea_machdep.c,v 1.54 2021/02/24 16:53:00 thorpej Exp $ */
+/* $NetBSD: ofwoea_machdep.c,v 1.55 2021/02/27 01:22:18 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ofwoea_machdep.c,v 1.54 2021/02/24 16:53:00 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofwoea_machdep.c,v 1.55 2021/02/27 01:22:18 thorpej Exp $");
 
 #include "ksyms.h"
 #include "wsdisplay.h"
@@ -215,15 +215,6 @@ ofwoea_initppc(u_int startkernel, u_int 
 	}
 #endif
 
-	oea_init(pic_ext_intr);
-
-/*
- * XXX
- * we need to do this here instead of earlier on in ofwinit() for some reason
- * At least some versions of Apple OF 2.0.1 hang if we do this earlier
- */ 
-	ofwmsr &= ~PSL_IP;
-
 	/* Parse the args string */
 	if (args) {
 		strcpy(bootpath, args);
@@ -243,6 +234,15 @@ ofwoea_initppc(u_int startkernel, u_int 
 			bootpath[len] = 0;
 	}
 
+	oea_init(pic_ext_intr);
+
+	/*
+	 * Now that we've installed our own exception vectors,
+	 * ensure that exceptions that happen while running
+	 * firmware code fall into ours.
+	 */
+	ofwmsr &= ~PSL_IP;
+
 	uvm_md_init();
 
 	pmap_bootstrap(startkernel, endkernel);

Reply via email to