From c2629ccc6a4bbbaed9d11500a08e2a10676e5521 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 1 Feb 2010 08:55:44 +0000 Subject: [PATCH] Patch by "Grey": Small optimization of arch_int_disable_interrupts_inline() and arch_int_restore_interrupts_inline(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35377 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/arch/x86/arch_int.h | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/headers/private/kernel/arch/x86/arch_int.h b/headers/private/kernel/arch/x86/arch_int.h index c14ad6ac53..c745551c81 100644 --- a/headers/private/kernel/arch/x86/arch_int.h +++ b/headers/private/kernel/arch/x86/arch_int.h @@ -25,22 +25,15 @@ arch_int_disable_interrupts_inline(void) asm volatile("pushfl;\n" "popl %0;\n" "cli" : "=g" (flags)); - return (flags & 0x200) != 0; + return flags ; } static inline void arch_int_restore_interrupts_inline(int oldState) { - int flags = oldState ? 0x200 : 0; - - asm volatile("pushfl;\n" - "popl %0;\n" - "andl $0xfffffdff,%0;\n" - "orl %1,%0;\n" - "pushl %0;\n" - "popfl\n" - : "=&r"(flags) : "r"(flags)); + if (oldState & 0x200) + asm("sti"); }