summaryrefslogtreecommitdiff
path: root/i386
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2011-09-01 02:06:40 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2011-09-01 02:06:40 +0200
commita1d66c30fc146b7a4eb013fbe6aacc1e5153d843 (patch)
treea247598e478defae24d0eeda9e37d7bfb7d0a66e /i386
parenta877419704dc3adc5b136fa6fb9a8d7a6d0d4df9 (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.c3
-rw-r--r--i386/i386at/kd.c8
-rw-r--r--i386/i386at/kd.h2
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, &regs)) {
+ } 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_ */