]>
Commit | Line | Data |
---|---|---|
310629d2 KT |
1 | diff -urN linux.orig/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S |
2 | --- linux.orig/arch/i386/kernel/entry.S Tue May 21 01:32:34 2002 | |
3 | +++ linux/arch/i386/kernel/entry.S Thu Nov 14 21:39:36 2002 | |
4 | @@ -63,7 +63,9 @@ | |
5 | OLDSS = 0x38 | |
6 | ||
7 | CF_MASK = 0x00000001 | |
8 | +TF_MASK = 0x00000100 | |
9 | IF_MASK = 0x00000200 | |
10 | +DF_MASK = 0x00000400 | |
11 | NT_MASK = 0x00004000 | |
12 | VM_MASK = 0x00020000 | |
13 | ||
14 | @@ -139,6 +141,9 @@ | |
15 | movl CS(%esp),%edx # this is eip.. | |
16 | movl EFLAGS(%esp),%ecx # and this is cs.. | |
17 | movl %eax,EFLAGS(%esp) # | |
18 | + andl $~(NT_MASK|TF_MASK|DF_MASK), %eax | |
19 | + pushl %eax | |
20 | + popfl | |
21 | movl %edx,EIP(%esp) # Now we move them to their "normal" places | |
22 | movl %ecx,CS(%esp) # | |
23 | movl %esp,%ebx | |
24 | @@ -256,6 +261,9 @@ | |
25 | pushl $ SYMBOL_NAME(do_divide_error) | |
26 | ALIGN | |
27 | error_code: | |
28 | + pushfl | |
29 | + andl $~(NT_MASK|TF_MASK|DF_MASK), (%esp) | |
30 | + popfl | |
31 | pushl %ds | |
32 | pushl %eax | |
33 | xorl %eax,%eax | |
34 | @@ -266,7 +274,6 @@ | |
35 | decl %eax # eax = -1 | |
36 | pushl %ecx | |
37 | pushl %ebx | |
38 | - cld | |
39 | movl %es,%cx | |
40 | movl ORIG_EAX(%esp), %esi # get the error code | |
41 | movl ES(%esp), %edi # get the function address | |
42 | diff -urN linux.orig/arch/i386/kernel/traps.c linux/arch/i386/kernel/traps.c | |
43 | --- linux.orig/arch/i386/kernel/traps.c Thu Nov 14 21:19:40 2002 | |
44 | +++ linux/arch/i386/kernel/traps.c Thu Nov 14 21:40:01 2002 | |
45 | @@ -601,7 +601,7 @@ | |
46 | return; | |
47 | ||
48 | clear_TF: | |
49 | - regs->eflags &= ~TF_MASK; | |
50 | + regs->eflags &= ~(TF_MASK|NT_MASK); | |
51 | return; | |
52 | } | |
53 |