Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Apr 2003 22:35:06 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 29931 for review
Message-ID:  <200304280535.h3S5Z6uc081449@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29931

Change 29931 by marcel@marcel_nfs on 2003/04/27 22:34:48

	We have an annoying race when using EPC syscalls which results
	in a general exception in cpu_switch(). We obviously get an
	interrupt when setting up the trapframe, but why and how this
	result in cloberring is not know yet. So, apply the equivalent
	of a 9-inch nail and disable interrupts. I need to understand
	what is happening exactly so that I can create a real fix (or
	acknowledge that this is in fact the fix). For now it simply
	makes EPC syscalls reliable enough to make the switch.

Affected files ...

.. //depot/projects/ia64_epc/sys/ia64/ia64/syscall.s#13 edit

Differences ...

==== //depot/projects/ia64_epc/sys/ia64/ia64/syscall.s#13 (text+ko) ====

@@ -224,6 +224,8 @@
 	.section	.text.syscall, "ax"
 
 ENTRY(epc_syscall, 8)
+	rsm		psr.i
+	;;
 {	.mmi
 	mov		r16=ar.rsc
 	mov		ar.rsc=0
@@ -359,7 +361,7 @@
 	;;
 }
 {	.mlx
-	ssm		psr.dfh|psr.ac
+	ssm		psr.dfh|psr.ac|psr.i
 	movl		gp=__gp
 	;;
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304280535.h3S5Z6uc081449>