|
@@ -23,14 +23,17 @@ undiisr:
|
23
|
23
|
pushw %es
|
24
|
24
|
pusha
|
25
|
25
|
|
|
26
|
+ /* Set up our segment registers */
|
|
27
|
+ movw %cs:rm_ds, %ax
|
|
28
|
+ movw %ax, %ds
|
|
29
|
+
|
26
|
30
|
/* Check that we have an UNDI entry point */
|
27
|
31
|
cmpw $0, undinet_entry_point
|
28
|
32
|
je chain
|
29
|
33
|
|
30
|
34
|
/* Issue UNDI API call */
|
31
|
|
- movw %cs:rm_ds, %ax
|
32
|
|
- movw %ax, %ds
|
33
|
|
- movw %ax, %es
|
|
35
|
+ pushw %ds
|
|
36
|
+ popw %es
|
34
|
37
|
movw $undinet_params, %di
|
35
|
38
|
movw $PXENV_UNDI_ISR, %bx
|
36
|
39
|
movw $PXENV_UNDI_ISR_IN_START, funcflag
|
|
@@ -38,13 +41,15 @@ undiisr:
|
38
|
41
|
pushw %di
|
39
|
42
|
pushw %bx
|
40
|
43
|
lcall *undinet_entry_point
|
|
44
|
+ cli /* Just in case */
|
41
|
45
|
addw $6, %sp
|
42
|
46
|
cmpw $PXENV_UNDI_ISR_OUT_OURS, funcflag
|
43
|
|
- jne chain
|
|
47
|
+ jne eoi
|
44
|
48
|
|
45
|
|
-ack: /* Record interrupt occurence */
|
|
49
|
+trig: /* Record interrupt occurence */
|
46
|
50
|
incb undiisr_trigger_count
|
47
|
|
- /* Send EOI */
|
|
51
|
+
|
|
52
|
+eoi: /* Send EOI */
|
48
|
53
|
movb $ICR_EOI_NON_SPECIFIC, %al
|
49
|
54
|
cmpb $IRQ_PIC_CUTOFF, undiisr_irq
|
50
|
55
|
jb 1f
|