diff options
author | nox <nox@FreeBSD.org> | 2008-06-06 02:49:12 +0800 |
---|---|---|
committer | nox <nox@FreeBSD.org> | 2008-06-06 02:49:12 +0800 |
commit | 5e16338278a7831f63ec53a7416c845a4e02c20f (patch) | |
tree | 1e167d09e033d078e98dcf7ac63de6ee690d23d8 /emulators/kqemu-kmod-devel | |
parent | 55b641d417243bbc69c35720307756883f554649 (diff) | |
download | freebsd-ports-gnome-5e16338278a7831f63ec53a7416c845a4e02c20f.tar.gz freebsd-ports-gnome-5e16338278a7831f63ec53a7416c845a4e02c20f.tar.zst freebsd-ports-gnome-5e16338278a7831f63ec53a7416c845a4e02c20f.zip |
- Call the tss fixup code before entering the monitor instead of after.
(This fixes the problems that one user saw which I couldn't reproduce.)
- Bump PORTREVISION
Diffstat (limited to 'emulators/kqemu-kmod-devel')
-rw-r--r-- | emulators/kqemu-kmod-devel/Makefile | 2 | ||||
-rw-r--r-- | emulators/kqemu-kmod-devel/files/patch-tssworkaround | 13 |
2 files changed, 8 insertions, 7 deletions
diff --git a/emulators/kqemu-kmod-devel/Makefile b/emulators/kqemu-kmod-devel/Makefile index 36d363b3140b..f2ce4c030afd 100644 --- a/emulators/kqemu-kmod-devel/Makefile +++ b/emulators/kqemu-kmod-devel/Makefile @@ -7,7 +7,7 @@ PORTNAME= kqemu PORTVERSION= 1.3.0.p11 -PORTREVISION= 7 +PORTREVISION= 8 CATEGORIES= emulators kld MASTER_SITES= http://fabrice.bellard.free.fr/qemu/ \ http://qemu.org/ \ diff --git a/emulators/kqemu-kmod-devel/files/patch-tssworkaround b/emulators/kqemu-kmod-devel/files/patch-tssworkaround index e735deb5f1de..922342bb7781 100644 --- a/emulators/kqemu-kmod-devel/files/patch-tssworkaround +++ b/emulators/kqemu-kmod-devel/files/patch-tssworkaround @@ -83,20 +83,21 @@ Index: common/kernel.c #endif #ifdef PROFILE -@@ -1188,6 +1191,13 @@ - apic_restore_nmi(s, apic_nmi_mask); +@@ -1096,6 +1099,14 @@ + apic_nmi_mask = apic_save_and_disable_nmi(s); } - profile_record(s); + +#ifdef __FreeBSD__ +#ifdef __x86_64__ + spin_lock(&g->lock); ++ asm volatile ("sgdt %0" : : "m" (s->kernel_gdt)); + kqemu_tss_fixup(s->kernel_gdt.base); + spin_unlock(&g->lock); +#endif +#endif - - if (s->mon_req == MON_REQ_IRQ) { - struct kqemu_exception_regs *r; + /* load breakpoint registers and avoid setting them if in the + monitor address space. We suppose that no breakpoints are + set by the host OS for this process */ Index: kqemu-kernel.h @@ -48,4 +48,10 @@ |