Sebastian Huber ff6d3df84a bsps/mips: Add the exception handler registration
The exception codes occupied the interrupt vectors below
MIPS_INTERRUPT_BASE.  A handler reached them through
rtems_interrupt_handler_install(), which passes a vector number and no
frame.  mips_vector_exceptions() therefore stored the frame in the
global mips_exception_frame around the dispatch, and
bsp_interrupt_handler_default() read it back.  That global is a hidden
argument of the dispatch.  Two processors which take an exception at
the same time overwrite it, so the port cannot support SMP in that
form.

Give the port its own registration.  mips_exc_set_handler() installs
the handler of one exception code and the handler takes a
CPU_Exception_frame pointer.  ppc_exc_set_handler() of the PowerPC
port is the model.  The default handler calls rtems_fatal() with
RTEMS_FATAL_SOURCE_EXCEPTION and the frame.
bsp_interrupt_is_valid_vector() rejects every vector below
MIPS_INTERRUPT_BASE, so the interrupt manager owns none of them.

An application which installed a handler on an exception vector with
rtems_interrupt_handler_install() moves to the new call.

MIPS_INTERRUPT_BASE keeps its value.  No BSP renumbers its interrupt
vectors.

Update #5752.

Assisted-by: Claude:claude-opus-5 claude-code
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2026-09-21 20:02:55 -05:00
2026-09-21 20:02:55 -05:00
…
2026-02-01 19:24:33 -06:00
…
…

Real-Time Executive for Multiprocessing Systems

RTEMS is a real-time executive (kernel) which provides a high performance environment for embedded applications with the following features:

  • Standards based user interfaces.
  • Multitasking capabilities.
  • Homogeneous and heterogeneous multiprocessor systems.
  • Symmetric Multiprocessing (SMP):
    • Cluster scheduling: Job-level fixed prority scheduler (EDF) with support for one-to-one and one-to-all thread to processor affinities.
    • Locking protocols with transitive priority inheritance, priority ceiling, MRsP and OMIP.
  • Event-driven, priority-based, preemptive scheduling.
  • Scalable timer and timeout support.
  • Optional rate monotonic scheduling.
  • Intertask communication and synchronisation.
  • Priority inheritance.
  • Responsive interrupt management.
  • Dynamic memory allocation.
  • Dynamic code loading using run-time link editing.
  • File systems, IMFS, FAT, RFS, JFFS, NSFv4 (with LibBSD)
  • High level of user configurability.
  • Link-time configurable schedulers.
  • Linker-set based initialization (similar to global C++ constructors).
  • Drivers for I2C, SPI and LibBSD has NIC, USB, SD/MMC and Framebuffer.
  • Open source with a friendly user license.

RTEMS Project:

Project git repositories are located at:

Online documentation is available at:

RTEMS Doxygen for CPUKit:

RTEMS POSIX 1003.1 Compliance Guide:

RTEMS Discourse User forum for questions, answers and examples:

RTEMS Discord for support:

RTEMS Mailing Lists for general purpose use the users list and for developers use the devel list.

The version number for this software in releases is located in the VERSION file if present.

S
Description
RTEMS is a ​real-time executive in use by embedded systems applications around the world and beyond
Readme
150 MiB
Languages
C 93.9%
Assembly 3.4%
Ada 1.4%
Python 0.3%
HTML 0.3%
Other 0.4%