diff options
author | Philip Guenthe <guenther@cvs.openbsd.org> | 2009-06-06 22:37:35 +0000 |
---|---|---|
committer | Philip Guenthe <guenther@cvs.openbsd.org> | 2009-06-06 22:37:35 +0000 |
commit | 99a865be841618d7a3dae987d344a2196496dd26 (patch) | |
tree | 66816c7a29e078fa6045f2d2b2141f0837f88c93 /sys | |
parent | 50f68aa760ea3f85fa66135f8d541d1a594cc2af (diff) |
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@
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/i386/i386/apicvec.s | 6 |
1 files changed, 5 insertions, 1 deletions
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 |