summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/drivers/net/undiisr.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/i386/drivers/net/undiisr.S')
-rw-r--r--src/arch/i386/drivers/net/undiisr.S11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/arch/i386/drivers/net/undiisr.S b/src/arch/i386/drivers/net/undiisr.S
index 24630148..15e1a63a 100644
--- a/src/arch/i386/drivers/net/undiisr.S
+++ b/src/arch/i386/drivers/net/undiisr.S
@@ -21,7 +21,9 @@ undiisr:
/* Preserve registers */
pushw %ds
pushw %es
- pusha
+ pushw %fs
+ pushw %gs
+ pushal
/* Set up our segment registers */
movw %cs:rm_ds, %ax
@@ -32,8 +34,7 @@ undiisr:
je chain
/* Issue UNDI API call */
- pushw %ds
- popw %es
+ movw %ax, %es
movw $undinet_params, %di
movw $PXENV_UNDI_ISR, %bx
movw $PXENV_UNDI_ISR_IN_START, funcflag
@@ -62,7 +63,9 @@ chain: /* Chain to next handler */
lcall *undiisr_next_handler
exit: /* Restore registers and return */
- popa
+ popal
+ popw %gs
+ popw %fs
popw %es
popw %ds
iret