From owner-p4-projects@FreeBSD.ORG Mon Oct 25 16:11:43 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 940091065791; Mon, 25 Oct 2010 16:11:43 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56A4B1065673 for ; Mon, 25 Oct 2010 16:11:43 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 432DD8FC27 for ; Mon, 25 Oct 2010 16:11:43 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id o9PGBhGC052321 for ; Mon, 25 Oct 2010 16:11:43 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id o9PGBhtI052318 for perforce@freebsd.org; Mon, 25 Oct 2010 16:11:43 GMT (envelope-from jhb@freebsd.org) Date: Mon, 25 Oct 2010 16:11:43 GMT Message-Id: <201010251611.o9PGBhtI052318@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 185088 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Oct 2010 16:11:43 -0000 http://p4web.freebsd.org/@@185088?ac=10 Change 185088 by jhb@jhb_jhbbsd on 2010/10/25 16:11:20 Just conditionally re-enable interrupts in intr_restore() on x86. Always writing all of flags clobbers PSL_T during single stepping. Reported by: bde Affected files ... .. //depot/projects/smpng/sys/amd64/include/cpufunc.h#21 edit .. //depot/projects/smpng/sys/i386/include/cpufunc.h#46 edit Differences ... ==== //depot/projects/smpng/sys/amd64/include/cpufunc.h#21 (text+ko) ==== @@ -43,6 +43,8 @@ #error this file needs sys/cdefs.h as a prerequisite #endif +#include + struct region_descriptor; #define readb(va) (*(volatile u_int8_t *) (va)) @@ -655,7 +657,8 @@ static __inline void intr_restore(register_t rflags) { - write_rflags(rflags); + if (rflags & PSL_I) + enable_intr(); } #else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */ ==== //depot/projects/smpng/sys/i386/include/cpufunc.h#46 (text+ko) ==== @@ -42,6 +42,8 @@ #error this file needs sys/cdefs.h as a prerequisite #endif +#include + #ifdef XEN extern void xen_cli(void); extern void xen_sti(void); @@ -669,7 +671,8 @@ static __inline void intr_restore(register_t eflags) { - write_eflags(eflags); + if (eflags & PSL_I) + enable_intr(); } #else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */