summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2024-11-06 12:26:55 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2024-11-06 12:26:55 +0000
commitd65154d30ee575c1eac9cabd22cc2a97b80b2ed1 (patch)
tree2df8bfd3c8bdc672a81b3680a558bab548330804 /sys/arch
parent3bd0718f54edc7d1dce19e03318d55c201298202 (diff)
Address more outdated comments.
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/sparc64/sparc64/locore.s34
1 files changed, 8 insertions, 26 deletions
diff --git a/sys/arch/sparc64/sparc64/locore.s b/sys/arch/sparc64/sparc64/locore.s
index b23f3538206..2bc2fcda65f 100644
--- a/sys/arch/sparc64/sparc64/locore.s
+++ b/sys/arch/sparc64/sparc64/locore.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.226 2024/11/06 12:06:15 miod Exp $ */
+/* $OpenBSD: locore.s,v 1.227 2024/11/06 12:26:54 miod Exp $ */
/* $NetBSD: locore.s,v 1.137 2001/08/13 06:10:10 jdolecek Exp $ */
/*
@@ -2895,8 +2895,6 @@ syscall_setup:
call syscall ! syscall(&tf, code, pc)
wrpr %g0, PSTATE_INTR, %pstate ! turn on interrupts
- /* see `proc_trampoline' for the reason for this label */
-return_from_syscall:
wrpr %g0, PSTATE_KERN, %pstate ! Disable interrupts
wrpr %g0, 0, %tl ! Return to tl==0
ba,a,pt %icc, return_from_trap
@@ -3252,23 +3250,11 @@ END(ipi_db)
* are set, handle those interrupts, then clear them by setting the
* appropriate bits in ASR_CLEAR_SOFTINT(0x15).
*
- * We have an array of 8 interrupt vector slots for each of 15 interrupt
- * levels. If a vectored interrupt can be dispatched, the dispatch
- * routine will place a pointer to an intrhand structure in one of
- * the slots. The interrupt handler will go through the list to look
- * for an interrupt to dispatch. If it finds one it will pull it off
- * the list, free the entry, and call the handler. The code is like
- * this:
- *
- * for (i=0; i<8; i++)
- * if (ih = intrpending[intlev][i]) {
- * intrpending[intlev][i] = NULL;
- * if ((*ih->ih_fun)(ih->ih_arg ? ih->ih_arg : &frame))
- * return;
- * return;
- * }
- *
- * Otherwise we go back to the old style of polled interrupts.
+ * We have a list of interrupt handlers for each of 15 interrupt levels.
+ * If a vectored interrupt can be dispatched, the dispatch routine will put
+ * the intrhand at the head of the appropriate list. The interrupt handler
+ * will go through the list to look for an interrupt to dispatch. If it
+ * finds one it will pull it off the list, and call the handler.
*
* After preliminary setup work, the interrupt is passed to each
* registered handler in turn. These are expected to return nonzero if
@@ -3277,10 +3263,6 @@ END(ipi_db)
* just take another interrupt in the unlikely event of simultaneous
* interrupts from two different devices at the same level).
*
- * for (ih = intrhand[intlev]; ih; ih = ih->ih_next)
- * if ((*ih->ih_fun)(ih->ih_arg ? ih->ih_arg : &frame))
- * return;
- *
* Inputs:
* %l0 = %tstate
* %l1 = return pc
@@ -3385,7 +3367,7 @@ sparc_intr_retry:
1:
membar #StoreLoad ! Make sure any failed casxa instructions complete
- ldx [%l4], %l2 ! Check a slot
+ ldx [%l4], %l2 ! Check the head of the list
brz,pn %l2, intrcmplt ! Empty list?
clr %l7
@@ -3407,7 +3389,7 @@ sparc_intr_retry:
ldx [%l2 + IH_ACK], %l1 ! ih->ih_ack
! At this point, the current ih could already be added
- ! back to the pending table.
+ ! back to the pending list.
call intr_handler
mov %l2, %o1