]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- this version seems work... (merged Petr's and Alan's changes)
authorJakub Bogusz <qboosh@pld-linux.org>
Thu, 14 Nov 2002 14:08:42 +0000 (14:08 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    kernel-2.4-NTfix.patch -> 1.2

kernel-2.4-NTfix.patch

index 5003cb7b60bbd9e6e2a67c76a1c4de8a5039b12f..4aa67236d7571c8fe478afcb98aa1b7d7bd73fd6 100644 (file)
@@ -1,23 +1,63 @@
---- linux-2.4.19/arch/i386/kernel/traps.c~     Wed Nov 13 22:55:47 2002
-+++ linux-2.4.19/arch/i386/kernel/traps.c      Wed Nov 13 22:55:47 2002
-@@ -640,7 +640,7 @@
-       return;
+--- linux-2.4.19/arch/i386/kernel/entry.S.orig Sat Aug  3 02:39:42 2002
++++ linux-2.4.19/arch/i386/kernel/entry.S      Thu Nov 14 13:52:24 2002
+@@ -63,7 +63,9 @@
+ OLDSS         = 0x38
  
- clear_TF:
--      regs->eflags &= ~TF_MASK;
-+      regs->eflags &= ~(TF_MASK|NT_MASK);
-       return;
- }
+ CF_MASK               = 0x00000001
++TF_MASK               = 0x00000100
+ IF_MASK               = 0x00000200
++DF_MASK               = 0x00000400
+ NT_MASK               = 0x00004000
+ VM_MASK               = 0x00020000
  
---- linux-2.4.19/arch/i386/kernel/entry.S~     Wed Nov 13 22:55:23 2002
-+++ linux-2.4.19/arch/i386/kernel/entry.S      Wed Nov 13 22:55:23 2002
-@@ -140,6 +140,9 @@
+@@ -139,7 +141,10 @@
+       movl EIP(%esp),%eax     # due to call gates, this is eflags, not eip..
+       movl CS(%esp),%edx      # this is eip..
+       movl EFLAGS(%esp),%ecx  # and this is cs..
++      andl $~(NT_MASK|TF_MASK|DF_MASK), %eax  # Clear NT since we are doing an iret
+       movl %eax,EFLAGS(%esp)  #
++      pushl %eax
++      popfl
+       movl %edx,EIP(%esp)     # Now we move them to their "normal" places
+       movl %ecx,CS(%esp)      #
+       movl %esp,%ebx
+@@ -160,7 +165,10 @@
        movl EIP(%esp),%eax     # due to call gates, this is eflags, not eip..
        movl CS(%esp),%edx      # this is eip..
        movl EFLAGS(%esp),%ecx  # and this is cs..
-+       andl $~NT_MASK, %eax
-+       pushl %eax
-+       popfl
++      andl $~(NT_MASK|TF_MASK|DF_MASK), %eax  # Clear NT since we are doing an iret
        movl %eax,EFLAGS(%esp)  #
++      pushl %eax
++      popfl
        movl %edx,EIP(%esp)     # Now we move them to their "normal" places
        movl %ecx,CS(%esp)      #
+       movl %esp,%ebx
+@@ -264,6 +272,9 @@
+       pushl $ SYMBOL_NAME(do_divide_error)
+       ALIGN
+ error_code:
++      pushfl
++      andl $~(NT_MASK|TF_MASK|DF_MASK), (%esp)        # NT must be clear, do a cld for free
++      popfl
+       pushl %ds
+       pushl %eax
+       xorl %eax,%eax
+@@ -274,7 +285,6 @@
+       decl %eax                       # eax = -1
+       pushl %ecx
+       pushl %ebx
+-      cld
+       movl %es,%ecx
+       movl ORIG_EAX(%esp), %esi       # get the error code
+       movl ES(%esp), %edi             # get the function address
+--- linux-2.4.19/arch/i386/kernel/traps.c.orig Sat Aug  3 02:39:42 2002
++++ linux-2.4.19/arch/i386/kernel/traps.c      Thu Nov 14 13:53:14 2002
+@@ -575,7 +575,7 @@
+       return;
+ clear_TF:
+-      regs->eflags &= ~TF_MASK;
++      regs->eflags &= ~(TF_MASK|NT_MASK);
+       return;
+ }
This page took 0.077346 seconds and 4 git commands to generate.