diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2010-08-17 20:05:09 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2010-08-17 20:05:09 +0000 |
commit | c025e04f827666d3d2d579ceaacd0fbe443e7575 (patch) | |
tree | f2bd939e4e625cb9dc6d9e3b6719ebf4d7de7793 /sys/arch/sparc/dev | |
parent | 9e07d7675fc18fe87d568aed72e35af91dba0231 (diff) |
Make sure fast trap handlers correctly invoke soft interrupts by marking
them explicitely pending before triggering the softintr; I am ashamed I did
not notice this when changing the soft interrupt code 18 months ago.
Noticed by claudio@ and beck@
Diffstat (limited to 'sys/arch/sparc/dev')
-rw-r--r-- | sys/arch/sparc/dev/fd.c | 4 | ||||
-rw-r--r-- | sys/arch/sparc/dev/fdvar.h | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/sys/arch/sparc/dev/fd.c b/sys/arch/sparc/dev/fd.c index ed0e33b6252..e92e7732f5f 100644 --- a/sys/arch/sparc/dev/fd.c +++ b/sys/arch/sparc/dev/fd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fd.c,v 1.72 2010/07/10 19:32:24 miod Exp $ */ +/* $OpenBSD: fd.c,v 1.73 2010/08/17 20:05:06 miod Exp $ */ /* $NetBSD: fd.c,v 1.51 1997/05/24 20:16:19 pk Exp $ */ /*- @@ -139,7 +139,6 @@ enum fdc_state { /* software state, per controller */ struct fdc_softc { struct device sc_dev; /* boilerplate */ - void *sc_sih; /* softintr cookie */ caddr_t sc_reg; struct fd_softc *sc_fd[4]; /* pointers to children */ TAILQ_HEAD(drivehead, fd_softc) sc_drives; @@ -164,6 +163,7 @@ struct fdc_softc { #define sc_nstat sc_io.fdcio_nstat #define sc_status sc_io.fdcio_status #define sc_hih sc_io.fdcio_ih +#define sc_sih sc_io.fdcio_sih struct timeout fdctimeout_to; struct timeout fdcpseudointr_to; }; diff --git a/sys/arch/sparc/dev/fdvar.h b/sys/arch/sparc/dev/fdvar.h index 533078ac72e..50e6d2f7492 100644 --- a/sys/arch/sparc/dev/fdvar.h +++ b/sys/arch/sparc/dev/fdvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: fdvar.h,v 1.8 2006/08/17 01:37:41 krw Exp $ */ +/* $OpenBSD: fdvar.h,v 1.9 2010/08/17 20:05:06 miod Exp $ */ /* * $NetBSD: fdvar.h,v 1.5 1996/12/08 23:40:34 pk Exp $ * @@ -62,6 +62,7 @@ struct fdcio { int fdcio_nstat; /* # of valid status bytes */ struct intrhand fdcio_ih; + void *fdcio_sih; /* softintr cookie */ }; #endif /* _LOCORE */ |