Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Aug 2010 15:22:48 +0000 (UTC)
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r211148 - head/sys/compat/x86bios
Message-ID:  <201008101522.o7AFMmJE057679@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jkim
Date: Tue Aug 10 15:22:48 2010
New Revision: 211148
URL: http://svn.freebsd.org/changeset/base/211148

Log:
  Place spinlock_enter() and spinlock_exit() just around X86EMU calls.

Modified:
  head/sys/compat/x86bios/x86bios.c

Modified: head/sys/compat/x86bios/x86bios.c
==============================================================================
--- head/sys/compat/x86bios/x86bios.c	Tue Aug 10 14:44:20 2010	(r211147)
+++ head/sys/compat/x86bios/x86bios.c	Tue Aug 10 15:22:48 2010	(r211148)
@@ -599,12 +599,12 @@ x86bios_call(struct x86regs *regs, uint1
 		X86BIOS_TRACE(Calling 0x%06x, (seg << 4) + off, regs);
 
 	mtx_lock(&x86bios_lock);
-	spinlock_enter();
 	memcpy(&x86bios_emu.x86, regs, sizeof(*regs));
 	x86bios_fault = 0;
+	spinlock_enter();
 	x86emu_exec_call(&x86bios_emu, seg, off);
-	memcpy(regs, &x86bios_emu.x86, sizeof(*regs));
 	spinlock_exit();
+	memcpy(regs, &x86bios_emu.x86, sizeof(*regs));
 	mtx_unlock(&x86bios_lock);
 
 	if (x86bios_trace_call) {
@@ -637,12 +637,12 @@ x86bios_intr(struct x86regs *regs, int i
 		X86BIOS_TRACE(Calling INT 0x%02x, intno, regs);
 
 	mtx_lock(&x86bios_lock);
-	spinlock_enter();
 	memcpy(&x86bios_emu.x86, regs, sizeof(*regs));
 	x86bios_fault = 0;
+	spinlock_enter();
 	x86emu_exec_intr(&x86bios_emu, intno);
-	memcpy(regs, &x86bios_emu.x86, sizeof(*regs));
 	spinlock_exit();
+	memcpy(regs, &x86bios_emu.x86, sizeof(*regs));
 	mtx_unlock(&x86bios_lock);
 
 	if (x86bios_trace_int) {



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