
From: "Randy.Dunlap" <rddunlap@osdl.org>

Use x86 EFLAGS defines in place of hardwired constants.


---

 25-akpm/arch/i386/kernel/doublefault.c |    3 ++-
 25-akpm/arch/i386/kernel/process.c     |    2 +-
 25-akpm/arch/i386/kernel/signal.c      |    7 ++++++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff -puN arch/i386/kernel/doublefault.c~use-EFLAGS_defines arch/i386/kernel/doublefault.c
--- 25/arch/i386/kernel/doublefault.c~use-EFLAGS_defines	Mon Apr  5 16:31:48 2004
+++ 25-akpm/arch/i386/kernel/doublefault.c	Mon Apr  5 16:31:48 2004
@@ -6,6 +6,7 @@
 
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
+#include <asm/processor.h>
 #include <asm/desc.h>
 
 #define DOUBLEFAULT_STACKSIZE (1024)
@@ -53,7 +54,7 @@ struct tss_struct doublefault_tss __cach
 	.io_bitmap_base	= INVALID_IO_BITMAP_OFFSET,
 
 	.eip		= (unsigned long) doublefault_fn,
-	.eflags		= 0x00000082,
+	.eflags		= X86_EFLAGS_SF | 0x2,	/* 0x2 bit is always set */
 	.esp		= STACK_START,
 	.es		= __USER_DS,
 	.cs		= __KERNEL_CS,
diff -puN arch/i386/kernel/process.c~use-EFLAGS_defines arch/i386/kernel/process.c
--- 25/arch/i386/kernel/process.c~use-EFLAGS_defines	Mon Apr  5 16:31:48 2004
+++ 25-akpm/arch/i386/kernel/process.c	Mon Apr  5 16:31:48 2004
@@ -278,7 +278,7 @@ int kernel_thread(int (*fn)(void *), voi
 	regs.orig_eax = -1;
 	regs.eip = (unsigned long) kernel_thread_helper;
 	regs.xcs = __KERNEL_CS;
-	regs.eflags = 0x286;
+	regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;
 
 	/* Ok, create the new process.. */
 	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
diff -puN arch/i386/kernel/signal.c~use-EFLAGS_defines arch/i386/kernel/signal.c
--- 25/arch/i386/kernel/signal.c~use-EFLAGS_defines	Mon Apr  5 16:31:48 2004
+++ 25-akpm/arch/i386/kernel/signal.c	Mon Apr  5 16:31:48 2004
@@ -20,6 +20,7 @@
 #include <linux/personality.h>
 #include <linux/suspend.h>
 #include <linux/elf.h>
+#include <asm/processor.h>
 #include <asm/ucontext.h>
 #include <asm/uaccess.h>
 #include <asm/i387.h>
@@ -152,6 +153,10 @@ restore_sigcontext(struct pt_regs *regs,
 	  err |= __get_user(tmp, &sc->seg);				\
 	  loadsegment(seg,tmp); }
 
+#define	FIX_EFLAGS	(X86_EFLAGS_AC | X86_EFLAGS_OF | X86_EFLAGS_DF | \
+			 X86_EFLAGS_TF | X86_EFLAGS_SF | X86_EFLAGS_ZF | \
+			 X86_EFLAGS_AF | X86_EFLAGS_PF | X86_EFLAGS_CF)
+
 	GET_SEG(gs);
 	GET_SEG(fs);
 	COPY_SEG(es);
@@ -170,7 +175,7 @@ restore_sigcontext(struct pt_regs *regs,
 	{
 		unsigned int tmpflags;
 		err |= __get_user(tmpflags, &sc->eflags);
-		regs->eflags = (regs->eflags & ~0x40DD5) | (tmpflags & 0x40DD5);
+		regs->eflags = (regs->eflags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS);
 		regs->orig_eax = -1;		/* disable syscall checks */
 	}
 

_
