From 99a865be841618d7a3dae987d344a2196496dd26 Mon Sep 17 00:00:00 2001 From: Philip Guenthe Date: Sat, 6 Jun 2009 22:37:35 +0000 Subject: ipi_reloadcr3 uses CPUVAR, so it needs to set up %fs in order to work if it interrupts userspace ok kettenis@ "you haven't committed that yet?" art@ --- sys/arch/i386/i386/apicvec.s | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'sys/arch') diff --git a/sys/arch/i386/i386/apicvec.s b/sys/arch/i386/i386/apicvec.s index bef1d855c14..feaaf66d4aa 100644 --- a/sys/arch/i386/i386/apicvec.s +++ b/sys/arch/i386/i386/apicvec.s @@ -1,4 +1,4 @@ -/* $OpenBSD: apicvec.s,v 1.17 2009/06/03 00:49:12 art Exp $ */ +/* $OpenBSD: apicvec.s,v 1.18 2009/06/06 22:37:34 guenther Exp $ */ /* $NetBSD: apicvec.s,v 1.1.2.2 2000/02/21 21:54:01 sommerfeld Exp $ */ /*- @@ -133,6 +133,9 @@ XINTR(ipi_reloadcr3): pushl %ds movl $GSEL(GDATA_SEL, SEL_KPL), %eax movl %eax, %ds + pushl %fs + movl $GSEL(GCPU_SEL, SEL_KPL),%eax + movw %ax,%fs ioapic_asm_ack() @@ -145,6 +148,7 @@ XINTR(ipi_reloadcr3): lock decl tlb_shoot_wait + popl %fs popl %ds popl %eax iret -- cgit v1.2.3