Author: jhibbits
Date: Fri Mar 21 04:45:57 2014
New Revision: 263464
URL: http://svnweb.freebsd.org/changeset/base/263464

Log:
  Mask out SRR1 bits that aren't exported to the MSR.
  
  This appears to fix a strange condition with X on 32-bit PowerBooks I 
observed,
  caused by one of these bits getting set in the mcontext, but not set in the
  thread, which may be a symptom of another problem, more difficult to diagnose.
  Since these bits aren't exported anyway, this change makes it more explicit 
that
  the bits aren't MSR-related in SRR1.
  
  MFC after:    3 weeks

Modified:
  head/sys/powerpc/include/psl.h

Modified: head/sys/powerpc/include/psl.h
==============================================================================
--- head/sys/powerpc/include/psl.h      Fri Mar 21 04:33:38 2014        
(r263463)
+++ head/sys/powerpc/include/psl.h      Fri Mar 21 04:45:57 2014        
(r263464)
@@ -88,15 +88,17 @@
 #define PSL_KERNSET            (PSL_CE | PSL_ME | PSL_EE)
 #elif defined(BOOKE_PPC4XX)
 #define PSL_KERNSET    (PSL_CE | PSL_ME | PSL_EE | PSL_FP)
+#define PSL_SRR1_MASK  0x00000000UL    /* No mask on Book-E */
 #elif defined(AIM)
 #ifdef __powerpc64__
 #define        PSL_KERNSET     (PSL_SF | PSL_EE | PSL_ME | PSL_IR | PSL_DR | 
PSL_RI)
 #else
 #define        PSL_KERNSET     (PSL_EE | PSL_ME | PSL_IR | PSL_DR | PSL_RI)
 #endif
+#define PSL_SRR1_MASK  0x78300000UL    /* Bits 1-4, 10-15 (ppc32), 33-36, 
42-47 (ppc64) */
 #endif
 
 #define        PSL_USERSET     (PSL_KERNSET | PSL_PR)
-#define        PSL_USERSTATIC  ~(PSL_VEC | PSL_FP | PSL_FE0 | PSL_FE1)
+#define        PSL_USERSTATIC  (~(PSL_VEC | PSL_FP | PSL_FE0 | PSL_FE1) & 
~PSL_SRR1_MASK)
 
 #endif /* _MACHINE_PSL_H_ */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to