diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-09-01 02:06:40 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-09-01 02:06:40 +0200 |
commit | a1d66c30fc146b7a4eb013fbe6aacc1e5153d843 (patch) | |
tree | a247598e478defae24d0eeda9e37d7bfb7d0a66e /i386 | |
parent | a877419704dc3adc5b136fa6fb9a8d7a6d0d4df9 (diff) |
Fix PC sampling
interrupt.S now saves the IRQ on the stack to acknowledge it later.
* i386/i386/hardclock.c (hardclock): Add irq parameter.
* i386/i386at/kd.c (kdintr, kdcheckmagic): Remove regs parameter.
* i386/i386at/kd.h (kdintr): Likewise.
Diffstat (limited to 'i386')
-rw-r--r-- | i386/i386/hardclock.c | 3 | ||||
-rw-r--r-- | i386/i386at/kd.c | 8 | ||||
-rw-r--r-- | i386/i386at/kd.h | 2 |
3 files changed, 6 insertions, 7 deletions
diff --git a/i386/i386/hardclock.c b/i386/i386/hardclock.c index aecd3a3..6615033 100644 --- a/i386/i386/hardclock.c +++ b/i386/i386/hardclock.c @@ -46,9 +46,10 @@ extern char return_to_iret[]; void -hardclock(iunit, old_ipl, ret_addr, regs) +hardclock(iunit, old_ipl, irq, ret_addr, regs) int iunit; /* 'unit' number */ int old_ipl; /* old interrupt level */ + int irq; /* irq number */ char * ret_addr; /* return address in interrupt handler */ struct i386_interrupt_state *regs; /* saved registers */ diff --git a/i386/i386at/kd.c b/i386/i386at/kd.c index bd10b5f..4b70c5f 100644 --- a/i386/i386at/kd.c +++ b/i386/i386at/kd.c @@ -732,9 +732,8 @@ int flags; /* flags set for console */ */ /*ARGSUSED*/ void -kdintr(vec, regs) +kdintr(vec) int vec; -int regs; { struct tty *tp; unsigned char c; @@ -799,7 +798,7 @@ int regs; goto done; } else if (kd_kbd_mouse && kd_kbd_magic(scancode)) { goto done; - } else if (kdcheckmagic(scancode, ®s)) { + } else if (kdcheckmagic(scancode)) { goto done; } else if (kb_mode == KB_EVENT) { kd_enqsc(scancode); @@ -985,9 +984,8 @@ boolean_t up; * are still held down. */ boolean_t -kdcheckmagic(scancode, regs) +kdcheckmagic(scancode) Scancode scancode; -int *regs; { static int magic_state = KS_NORMAL; /* like kd_state */ boolean_t up = FALSE; diff --git a/i386/i386at/kd.h b/i386/i386at/kd.h index 3f0dfe1..1d53538 100644 --- a/i386/i386at/kd.h +++ b/i386/i386at/kd.h @@ -740,6 +740,6 @@ extern void kd_slmwd (void *start, int count, int value); extern void kd_slmscu (void *from, void *to, int count); extern void kd_slmscd (void *from, void *to, int count); -extern void kdintr(int vec, int regs); +extern void kdintr(int vec); #endif /* _KD_H_ */ |