summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/cpu_switch.S10
-rw-r--r--sys/amd64/amd64/swtch.s10
-rw-r--r--sys/amd64/include/apicreg.h8
3 files changed, 24 insertions, 4 deletions
diff --git a/sys/amd64/amd64/cpu_switch.S b/sys/amd64/amd64/cpu_switch.S
index 0a3bf40..14d0a8a 100644
--- a/sys/amd64/amd64/cpu_switch.S
+++ b/sys/amd64/amd64/cpu_switch.S
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: swtch.s,v 1.4 1997/07/30 22:51:11 smp Exp smp $
+ * $Id: swtch.s,v 1.5 1997/08/04 17:17:29 smp Exp smp $
*/
#include "npx.h"
@@ -46,6 +46,7 @@
#ifdef SMP
#include <machine/pmap.h>
#include <machine/apic.h>
+#include <machine/smptests.h> /** GRAB_LOPRIO */
#endif /* SMP */
#include "assym.s"
@@ -509,6 +510,13 @@ swtch_com:
movl %eax,(%esp)
#ifdef SMP
+#ifdef GRAB_LOPRIO /* hold LOPRIO for INTs */
+#ifdef CHEAP_TPR
+ movl $0, lapic_tpr
+#else
+ andl $~APIC_TPR_PRIO, lapic_tpr
+#endif /** CHEAP_TPR */
+#endif /** GRAB_LOPRIO */
movl _cpuid,%eax
movb %al, P_ONCPU(%ecx)
#endif /* SMP */
diff --git a/sys/amd64/amd64/swtch.s b/sys/amd64/amd64/swtch.s
index 0a3bf40..14d0a8a 100644
--- a/sys/amd64/amd64/swtch.s
+++ b/sys/amd64/amd64/swtch.s
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: swtch.s,v 1.4 1997/07/30 22:51:11 smp Exp smp $
+ * $Id: swtch.s,v 1.5 1997/08/04 17:17:29 smp Exp smp $
*/
#include "npx.h"
@@ -46,6 +46,7 @@
#ifdef SMP
#include <machine/pmap.h>
#include <machine/apic.h>
+#include <machine/smptests.h> /** GRAB_LOPRIO */
#endif /* SMP */
#include "assym.s"
@@ -509,6 +510,13 @@ swtch_com:
movl %eax,(%esp)
#ifdef SMP
+#ifdef GRAB_LOPRIO /* hold LOPRIO for INTs */
+#ifdef CHEAP_TPR
+ movl $0, lapic_tpr
+#else
+ andl $~APIC_TPR_PRIO, lapic_tpr
+#endif /** CHEAP_TPR */
+#endif /** GRAB_LOPRIO */
movl _cpuid,%eax
movb %al, P_ONCPU(%ecx)
#endif /* SMP */
diff --git a/sys/amd64/include/apicreg.h b/sys/amd64/include/apicreg.h
index 8df09cd..50f8416 100644
--- a/sys/amd64/include/apicreg.h
+++ b/sys/amd64/include/apicreg.h
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: apic.h,v 1.6 1997/07/30 22:44:20 smp Exp smp $
+ * $Id: apic.h,v 1.7 1997/08/04 17:20:39 smp Exp smp $
*/
#ifndef _MACHINE_APIC_H_
@@ -221,7 +221,11 @@ typedef struct IOAPIC ioapic_t;
*/
/* default level for TPR */
-#define LOPRIO_LEVEL 0x00000010 /* TPR of CPUs accepting INT */
+#define LOPRIO_LEVEL 0x00000010 /* TPR of CPU accepting INTs */
+
+#ifdef GRAB_LOPRIO
+#define ALLHWI_LEVEL 0x00000000 /* TPR of CPU grabbing INTs */
+#endif /** GRAB_LOPRIO */
/* XXX these 2 don't really belong here... */
#define COUNT_FIELD 0x00ffffff /* count portion of the lock */
OpenPOWER on IntegriCloud