diff options
author | jhb <jhb@FreeBSD.org> | 2000-10-25 05:19:40 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2000-10-25 05:19:40 +0000 |
commit | ff18363a3e5e60f38c8f7a52c7e7f4ea1c8b797f (patch) | |
tree | d0f426694e386a2b666529e1e1ad06938c3d7e83 /sys/i386/isa/ipl.s | |
parent | 08451a100d3bc5d4373e28f7acd976df25f3f785 (diff) | |
download | FreeBSD-src-ff18363a3e5e60f38c8f7a52c7e7f4ea1c8b797f.zip FreeBSD-src-ff18363a3e5e60f38c8f7a52c7e7f4ea1c8b797f.tar.gz |
- Overhaul the software interrupt code to use interrupt threads for each
type of software interrupt. Roughly, what used to be a bit in spending
now maps to a swi thread. Each thread can have multiple handlers, just
like a hardware interrupt thread.
- Instead of using a bitmask of pending interrupts, we schedule the specific
software interrupt thread to run, so spending, NSWI, and the shandlers
array are no longer needed. We can now have an arbitrary number of
software interrupt threads. When you register a software interrupt
thread via sinthand_add(), you get back a struct intrhand that you pass
to sched_swi() when you wish to schedule your swi thread to run.
- Convert the name of 'struct intrec' to 'struct intrhand' as it is a bit
more intuitive. Also, prefix all the members of struct intrhand with
'ih_'.
- Make swi_net() a MI function since there is now no point in it being
MD.
Submitted by: cp
Diffstat (limited to 'sys/i386/isa/ipl.s')
-rw-r--r-- | sys/i386/isa/ipl.s | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/sys/i386/isa/ipl.s b/sys/i386/isa/ipl.s index 9bd36cf..8b2380b 100644 --- a/sys/i386/isa/ipl.s +++ b/sys/i386/isa/ipl.s @@ -173,43 +173,11 @@ doreti_ast: jmp doreti_next ALIGN_TEXT - .globl _swi_net - .type _swi_net,@function -_swi_net: - MCOUNT - bsfl _netisr,%eax - je swi_net_done -swi_net_more: - btrl %eax,_netisr - jnc swi_net_next - call *_netisrs(,%eax,4) -swi_net_next: - bsfl _netisr,%eax - jne swi_net_more -swi_net_done: - ret - - ALIGN_TEXT dummynetisr: MCOUNT ret -/* - * The arg is in a nonstandard place, so swi_dispatcher() can't be called - * directly and swi_generic() can't use ENTRY() or MCOUNT. - */ - ALIGN_TEXT - .globl _swi_generic - .type _swi_generic,@function -_swi_generic: - pushl %ecx - FAKE_MCOUNT(4(%esp)) - call _swi_dispatcher - popl %ecx - ret - -ENTRY(swi_null) - ret + #ifdef APIC_IO #include "i386/isa/apic_ipl.s" |