On 27/10/2021 23:44, Kinsey Moore wrote:
+/*
+ * Exception handler. Map the exception class to SIGFPE, SIGSEGV
+ * or SIGILL for Ada or other runtimes.
+ */
+void _Exception_Raise_signal(
+ Internal_errors_Source source,
+ bool always_set_to_false,
+ Internal_errors_t code
+)
+{
+ CPU_Exception_frame *ef;
+ int raise_signal;
+
+ if ( source != RTEMS_FATAL_SOURCE_EXCEPTION ) {
+ return;
+ }
+
+ ef = (rtems_exception_frame *) code;
+ raise_signal = _CPU_Exception_frame_get_signal( ef );
+ if ( raise_signal < 0 ) {
+ return;
+ }
+
+ /* Disable thread dispatch */
+ _CPU_Exception_disable_thread_dispatch();
+
+ /*
+ * While it would be preferable, the call to raise() cannot be deferred to a
+ * post-switch action because it attempts to lock the post-switch action list
+ * to add another item and the list is already locked for iteration. This
+ * causes a deadlock.
+ */
+ raise( raise_signal );
When you get an early exception (before RTEMS is initialized), then you
get a double exception here or some sort of undefined behaviour.
+
+ /* Perform dispatch and resume execution */
+ _CPU_Exception_dispatch_and_resume( ef );
+}
--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: [email protected]
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/devel