diff options
author | fsmp <fsmp@FreeBSD.org> | 1997-08-29 18:45:23 +0000 |
---|---|---|
committer | fsmp <fsmp@FreeBSD.org> | 1997-08-29 18:45:23 +0000 |
commit | 13fe237edc09b0964851ff000267e07797dff742 (patch) | |
tree | 720c917319b77866f197246120cfb757f4af2d6e /sys/i386/isa/apic_ipl.s | |
parent | cf2671c51e058f96fb3318fe2053f587bc6eeebe (diff) | |
download | FreeBSD-src-13fe237edc09b0964851ff000267e07797dff742.zip FreeBSD-src-13fe237edc09b0964851ff000267e07797dff742.tar.gz |
Support for the new FAST_HI algorithm, enabled.
Preliminary support for the INTR_SIMPLELOCK algorithm, disabled.
Note that this code is NOT ready.
Diffstat (limited to 'sys/i386/isa/apic_ipl.s')
-rw-r--r-- | sys/i386/isa/apic_ipl.s | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/sys/i386/isa/apic_ipl.s b/sys/i386/isa/apic_ipl.s index ec9b94f..6df74c3 100644 --- a/sys/i386/isa/apic_ipl.s +++ b/sys/i386/isa/apic_ipl.s @@ -22,21 +22,21 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: apic_ipl.s,v 1.28 1997/08/23 05:15:12 smp Exp smp $ + * $Id: apic_ipl.s,v 1.32 1997/08/29 18:39:36 smp Exp smp $ */ -#if defined(SMP) && defined(REAL_AICPL) +#ifdef REAL_AICPL #define AICPL_LOCK SCPL_LOCK #define AICPL_UNLOCK SCPL_UNLOCK -#else /* SMP */ +#else /* REAL_AICPL */ #define AICPL_LOCK #define AICPL_UNLOCK -#endif /* SMP */ +#endif /* REAL_AICPL */ .data ALIGN_DATA @@ -45,6 +45,10 @@ .globl _cil _cil: .long 0 +/* current INTerrupt level mask */ + .globl _cml +_cml: .long 0 + /* this allows us to change the 8254 APIC pin# assignment */ .globl _Xintr8254 _Xintr8254: @@ -107,6 +111,9 @@ ENTRY(splz) */ AICPL_LOCK movl _cpl,%eax +#ifdef INTR_SIMPLELOCK + orl _cml, %eax /* add cml to cpl */ +#endif splz_next: /* * We don't need any locking here. (ipending & ~cpl) cannot grow @@ -137,6 +144,9 @@ splz_unpend: * frame. Also, there's a problem determining the unit number. * We should change the interface so that the unit number is not * determined at config time. + * + * The vec[] routines build the proper frame on the stack, + * then call one of _Xintr0 thru _Xintr23 */ jmp *_vec(,%ecx,4) |