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?re... ============================================================================== --- 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=25938... ============================================================================== --- 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/i... ============================================================================== --- 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