Issue created by Sebastian Huber: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5758



`_ISR_Handler` is the low level entry of every vector of the
architecture. `EXCEPTION_SETUP()` of `start.S` sends the bus error, the
page faults, the alignment, the illegal instruction, the range, the
system call and the trap there, and it sends the tick timer and the
external interrupt to the same place.

So a synchronous exception raises the interrupt nest level and the
thread dispatch disable level. It also runs `_Thread_Dispatch()` on its
way out. None of that belongs to an exception, which is a property of
the thread which caused it and not of the processor.

A handler which resumes the trapped context leaves through `l.rfe`. It
never reaches the exit of the entry, so both levels stay raised for the
rest of the run. Every other port with an exception resume separates
the two paths. `_SPARC_Bad_trap()` and the synchronous branch of
`_RISCV_Exception_handler` raise no level.

Found while an exception resume was added to the port. This description
was created with Claude Code assistance.

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5758
You're receiving this email because of your account on gitlab.rtems.org. 
Unsubscribe from this thread: 
https://gitlab.rtems.org/-/sent_notifications/5-3z0ssmyvyl0ob6waf6x3c0qwk-1d/unsubscribe
 | Manage all notifications: https://gitlab.rtems.org/-/profile/notifications | 
Help: https://gitlab.rtems.org/help


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to