mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
- Save/initialize/restore the gs register on interrupt begin/return.
svn path=/trunk/; revision=11499
This commit is contained in:
parent
d81bcce9de
commit
67b8ce4f3b
3 changed files with 70 additions and 2 deletions
|
@ -138,6 +138,7 @@ typedef struct _KTRAP_FRAME
|
|||
typedef struct _KIRQ_TRAPFRAME
|
||||
{
|
||||
ULONG Magic;
|
||||
ULONG Gs;
|
||||
ULONG Fs;
|
||||
ULONG Es;
|
||||
ULONG Ds;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: irq.c,v 1.49 2004/10/30 23:48:56 navaraf Exp $
|
||||
/* $Id: irq.c,v 1.50 2004/10/31 12:49:37 hbirr Exp $
|
||||
*
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/i386/irq.c
|
||||
|
@ -82,6 +82,7 @@ __asm__( \
|
|||
"movl $" STR(KERNEL_DS) ",%eax\n\t" \
|
||||
"movl %eax,%ds\n\t" \
|
||||
"movl %eax,%es\n\t" \
|
||||
"movl %eax,%gs\n\t" \
|
||||
"movl $" STR(PCR_SELECTOR) ",%eax\n\t" \
|
||||
"movl %eax,%fs\n\t" \
|
||||
"pushl %esp\n\t" \
|
||||
|
@ -250,6 +251,7 @@ VOID
|
|||
KeIRQTrapFrameToTrapFrame(PKIRQ_TRAPFRAME IrqTrapFrame,
|
||||
PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
TrapFrame->Gs = (USHORT)IrqTrapFrame->Gs;
|
||||
TrapFrame->Fs = (USHORT)IrqTrapFrame->Fs;
|
||||
TrapFrame->Es = (USHORT)IrqTrapFrame->Es;
|
||||
TrapFrame->Ds = (USHORT)IrqTrapFrame->Ds;
|
||||
|
@ -270,6 +272,7 @@ VOID
|
|||
KeTrapFrameToIRQTrapFrame(PKTRAP_FRAME TrapFrame,
|
||||
PKIRQ_TRAPFRAME IrqTrapFrame)
|
||||
{
|
||||
IrqTrapFrame->Gs = TrapFrame->Gs;
|
||||
IrqTrapFrame->Fs = TrapFrame->Fs;
|
||||
IrqTrapFrame->Es = TrapFrame->Es;
|
||||
IrqTrapFrame->Ds = TrapFrame->Ds;
|
||||
|
|
|
@ -3,15 +3,18 @@
|
|||
|
||||
.global _irq_handler_0
|
||||
_irq_handler_0:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -20,6 +23,7 @@ _irq_handler_0:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -28,15 +32,18 @@ _irq_handler_0:
|
|||
|
||||
.global _irq_handler_1
|
||||
_irq_handler_1:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -45,6 +52,7 @@ _irq_handler_1:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -53,15 +61,18 @@ _irq_handler_1:
|
|||
|
||||
.global _irq_handler_2
|
||||
_irq_handler_2:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -70,6 +81,7 @@ _irq_handler_2:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -78,15 +90,18 @@ _irq_handler_2:
|
|||
|
||||
.global _irq_handler_3
|
||||
_irq_handler_3:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -95,6 +110,7 @@ _irq_handler_3:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -103,15 +119,18 @@ _irq_handler_3:
|
|||
|
||||
.global _irq_handler_4
|
||||
_irq_handler_4:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -120,6 +139,7 @@ _irq_handler_4:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -128,15 +148,18 @@ _irq_handler_4:
|
|||
|
||||
.global _irq_handler_5
|
||||
_irq_handler_5:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -145,6 +168,7 @@ _irq_handler_5:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -153,15 +177,18 @@ _irq_handler_5:
|
|||
|
||||
.global _irq_handler_6
|
||||
_irq_handler_6:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -170,6 +197,7 @@ _irq_handler_6:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -178,15 +206,18 @@ _irq_handler_6:
|
|||
|
||||
.global _irq_handler_7
|
||||
_irq_handler_7:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -195,6 +226,7 @@ _irq_handler_7:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -203,15 +235,18 @@ _irq_handler_7:
|
|||
|
||||
.global _irq_handler_8
|
||||
_irq_handler_8:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -220,6 +255,7 @@ _irq_handler_8:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -228,15 +264,18 @@ _irq_handler_8:
|
|||
|
||||
.global _irq_handler_9
|
||||
_irq_handler_9:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -245,6 +284,7 @@ _irq_handler_9:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -253,15 +293,18 @@ _irq_handler_9:
|
|||
|
||||
.global _irq_handler_10
|
||||
_irq_handler_10:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -270,6 +313,7 @@ _irq_handler_10:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -278,15 +322,18 @@ _irq_handler_10:
|
|||
|
||||
.global _irq_handler_11
|
||||
_irq_handler_11:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -295,6 +342,7 @@ _irq_handler_11:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -303,15 +351,18 @@ _irq_handler_11:
|
|||
|
||||
.global _irq_handler_12
|
||||
_irq_handler_12:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -320,6 +371,7 @@ _irq_handler_12:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -328,15 +380,18 @@ _irq_handler_12:
|
|||
|
||||
.global _irq_handler_13
|
||||
_irq_handler_13:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -345,6 +400,7 @@ _irq_handler_13:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -353,15 +409,18 @@ _irq_handler_13:
|
|||
|
||||
.global _irq_handler_14
|
||||
_irq_handler_14:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -370,6 +429,7 @@ _irq_handler_14:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
@ -378,15 +438,18 @@ _irq_handler_14:
|
|||
|
||||
.global _irq_handler_15
|
||||
_irq_handler_15:
|
||||
cld
|
||||
pusha
|
||||
pushl %ds
|
||||
pushl %es
|
||||
pushl %fs
|
||||
pushl %gs
|
||||
movl $0xceafbeef,%eax
|
||||
pushl %eax
|
||||
movw $KERNEL_DS,%ax
|
||||
movw %ax,%ds
|
||||
movw %ax,%es
|
||||
movw %ax,%gs
|
||||
movl $PCR_SELECTOR, %eax
|
||||
movl %eax, %fs
|
||||
pushl %esp
|
||||
|
@ -395,6 +458,7 @@ _irq_handler_15:
|
|||
popl %eax
|
||||
popl %eax
|
||||
popl %eax
|
||||
popl %gs
|
||||
popl %fs
|
||||
popl %es
|
||||
popl %ds
|
||||
|
|
Loading…
Reference in a new issue