freebsd-dev/sys/ia64
Marcel Moolenaar 5192a6fc07 Fix handling of external interrupts: we weren't calling ast() when
interrupting user mode. The net effect of this bug is that a clock
interrupt does not cause rescheduling and processes are not
preempted. It only takes a "while (1);" to render the machine
useless.

This bug was introduced by the context changes and EPC syscall code.
Handling of ASTs was moved to C for clarity and ease of maintenance,
but was not added for the external interrupt case.

This needs to be revisited. We now have calls to do_ast() in trap(),
break_syscall() and ivt_External_Interrupt(). A single call in
exception_restore covers these 3 places without duplication. This
is where we handled ASTs prior to the overhaul, except that the
meat has been moved to do_ast(), a C function. This was the goal
to begin with.

Pointy hat: marcel
2003-08-04 00:08:39 +00:00
..
acpica Don't hardcode the address of the local (S)APIC (aka processor 2003-01-05 22:14:30 +00:00
compile Don't need the .keep_me files. Obrien and I committed past each other. 2001-07-01 23:35:44 +00:00
conf Remove INVARIANT* and WITNESS. This makes the simulator much more 2003-07-25 07:52:20 +00:00
ia32 Revamp of the syscall path, exception and context handling. The 2003-05-16 21:26:42 +00:00
ia64 Fix handling of external interrupts: we weren't calling ast() when 2003-08-04 00:08:39 +00:00
include Style sync. 2003-08-03 07:50:19 +00:00
isa Mega busdma API commit. 2003-07-01 15:52:06 +00:00
pci Delete legacy pcib code - we can't possibly work without acpi on ia64. 2001-10-06 10:09:57 +00:00