On Sep 21, 2016, at 1:46 AM, Mark Millard wrote:
The following from
https://lists.freebsd.org/pipermail/svn-src-head/2016-September/091934.html
seems in include a patch that Nathan made for testing on PowerMac/
iMac/Xserve G5's that failed the PowerMac7,3 test that was tried by
Jukka A. Ukkonen.
Modified: head/sys/powerpc/ofw/ofw_machdep.c
=
=
=
=
=
=
=
=
=
=====================================================================
--- head/sys/powerpc/ofw/ofw_machdep.c Wed Sep 21 02:27:23 2016
(r306064)
+++ head/sys/powerpc/ofw/ofw_machdep.c Wed Sep 21 02:28:39 2016
(r306065)
@@ -99,6 +99,7 @@ ofw_restore_trap_vec(char *restore_trap_
/*
* Saved SPRG0-3 from OpenFirmware. Will be restored prior to the
callback.
*/
+#ifndef __powerpc64__
register_t ofw_sprg0_save;
static __inline void
@@ -140,6 +141,8 @@ ofw_sprg_restore(void)
}
#endif
+#endif
+
static int
parse_ofw_memory(phandle_t node, const char *prop, struct
mem_region *output)
{
@@ -344,11 +347,12 @@ OF_initial_setup(void *fdt_ptr, void *ju
ofmsr[0] = mfmsr();
#ifdef __powerpc64__
ofmsr[0] &= ~PSL_SF;
- #endif
+ #else
__asm __volatile("mfsprg0 %0" : "=&r"(ofmsr[1]));
__asm __volatile("mfsprg1 %0" : "=&r"(ofmsr[2]));
__asm __volatile("mfsprg2 %0" : "=&r"(ofmsr[3]));
__asm __volatile("mfsprg3 %0" : "=&r"(ofmsr[4]));
+ #endif
openfirmware_entry = openfirm;
if (ofmsr[0] & PSL_DR)
@@ -440,7 +444,9 @@ openfirmware_core(void *args)
*/
oldmsr = intr_disable();
+#ifndef __powerpc64__
ofw_sprg_prepare();
+#endif
/* Save trap vectors */
ofw_save_trap_vec(save_trap_of);
@@ -463,7 +469,9 @@ openfirmware_core(void *args)
/* Restore trap vecotrs */
ofw_restore_trap_vec(save_trap_of);
+#ifndef __powerpc64__
ofw_sprg_restore();
+#endif
intr_restore(oldmsr);
Part of the ofw_sprg_prepare() and ofw_sprg_restore() activity is
required for PowerMac G5's to boot: the save of the FreeBSD sprg0
value and its later restore back to sprg0. (Established by other
testing after Nathan's patch was tried.)
My guess is that this code was accidentally included in -r306065,
not intentionally included.
[There is the separate issue that avoiding restoring the Open
Firmware sprg0 value before calling into Open Firmware (leaving the
FreeBSD value in place) helps PowerMac G5's boot more reliably by
allowing correct handling some SLB faults that sometimes occur.]
===
Mark Millard
markmi at dsl-only.net
Crap, I got extra stuff in my diff. Going to revert this part
tonight, until everything is known good.
- Justin
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"