Author: ion
Date: Thu Mar 1 23:27:33 2007
New Revision: 25938
URL: http://svn.reactos.org/svn/reactos?rev=25938&view=rev
Log:
- Fix a bug in HalEnableSystemInterrupt which was causing us to read invalid port data instead of the PCI edge/level registers.
- Fix an offset bug which was causing us to read/write to DR7 in a completely random location (somewhere in side the _CONTEXT record).
- Fix a bug in DR save/restore which was making us save dr0,1,2 isntead of dr3,6,7.
- All bugs reported by Aleksey Bragin.
Modified:
trunk/reactos/hal/halx86/generic/irq.S
trunk/reactos/include/ndk/asm.h
trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
Modified: trunk/reactos/hal/halx86/generic/irq.S
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irq.S?r…
==============================================================================
--- trunk/reactos/hal/halx86/generic/irq.S (original)
+++ trunk/reactos/hal/halx86/generic/irq.S Thu Mar 1 23:27:33 2007
@@ -247,7 +247,7 @@
mov edx, 0x4D1
in al, dx
shl ax, 8
- mov eax, 0x4D0
+ mov edx, 0x4D0
in al, dx
mov dx, 1
shl dx, cl
Modified: trunk/reactos/include/ndk/asm.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/asm.h?rev=2593…
==============================================================================
--- trunk/reactos/include/ndk/asm.h (original)
+++ trunk/reactos/include/ndk/asm.h Thu Mar 1 23:27:33 2007
@@ -157,7 +157,7 @@
#define KPRCB_DR2 0x300
#define KPRCB_DR3 0x304
#define KPRCB_DR6 0x308
-#define KPRCB_DR7 0x20C
+#define KPRCB_DR7 0x30C
#define KPRCB_TIMER_HAND 0x964
#define KPRCB_TIMER_REQUEST 0x968
Modified: trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S (original)
+++ trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S Thu Mar 1 23:27:33 2007
@@ -265,9 +265,9 @@
mov [ebp+KTRAP_FRAME_DR2], edi
/* Get DR3, 6, 7 */
- mov ebx, dr0
- mov ecx, dr1
- mov edi, dr2
+ mov ebx, dr3
+ mov ecx, dr6
+ mov edi, dr7
/* Save them */
mov [ebp+KTRAP_FRAME_DR3], ebx