From: "Randy.Dunlap" 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 #include +#include #include #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, ®s, 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 #include #include +#include #include #include #include @@ -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 */ } _