summaryrefslogtreecommitdiffstats
path: root/bsp_howto/ada95_interrupt.rst
diff options
context:
space:
mode:
Diffstat (limited to 'bsp_howto/ada95_interrupt.rst')
-rw-r--r--bsp_howto/ada95_interrupt.rst94
1 files changed, 44 insertions, 50 deletions
diff --git a/bsp_howto/ada95_interrupt.rst b/bsp_howto/ada95_interrupt.rst
index 4bf61d3..f6fc0fc 100644
--- a/bsp_howto/ada95_interrupt.rst
+++ b/bsp_howto/ada95_interrupt.rst
@@ -1,81 +1,75 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
+.. COMMENT: COPYRIGHT (c) 1988-2008.
+.. COMMENT: On-Line Applications Research Corporation (OAR).
+.. COMMENT: All rights reserved.
+
Ada95 Interrupt Support
#######################
Introduction
============
-This chapter describes what is required to enable Ada interrupt
-and error exception handling when using GNAT over RTEMS.
+This chapter describes what is required to enable Ada interrupt and error
+exception handling when using GNAT over RTEMS.
-The GNAT Ada95 interrupt support RTEMS was developed by
-Jiri Gaisler <jgais@ws.estec.esa.nl> who also wrote this
-chapter.
+The GNAT Ada95 interrupt support RTEMS was developed by Jiri Gaisler
+<jgais@ws.estec.esa.nl> who also wrote this chapter.
Mapping Interrupts to POSIX Signals
===================================
-In Ada95, interrupts can be attached with the interrupt_attach pragma.
-For most systems, the gnat run-time will use POSIX signal to implement
-the interrupt handling, mapping one signal per interrupt. For interrupts
-to be propagated to the attached Ada handler, the corresponding signal
-must be raised when the interrupt occurs.
+In Ada95, interrupts can be attached with the interrupt_attach pragma. For
+most systems, the gnat run-time will use POSIX signal to implement the
+interrupt handling, mapping one signal per interrupt. For interrupts to be
+propagated to the attached Ada handler, the corresponding signal must be raised
+when the interrupt occurs.
-The same mechanism is used to generate Ada error exceptions.
-Three error exceptions are defined: program, constraint and storage
-error. These are generated by raising the predefined signals: SIGILL,
-SIGFPE and SIGSEGV. These signals should be raised when a spurious
-or erroneous trap occurs.
+The same mechanism is used to generate Ada error exceptions. Three error
+exceptions are defined: program, constraint and storage error. These are
+generated by raising the predefined signals: SIGILL, SIGFPE and SIGSEGV. These
+signals should be raised when a spurious or erroneous trap occurs.
-To enable gnat interrupt and error exception support for a particular
-BSP, the following has to be done:
+To enable gnat interrupt and error exception support for a particular BSP, the
+following has to be done:
-# Write an interrupt/trap handler that will raise the corresponding
- signal depending on the interrupt/trap number.
+- Write an interrupt/trap handler that will raise the corresponding signal
+ depending on the interrupt/trap number.
-# Install the interrupt handler for all interrupts/traps that will be
- handled by gnat (including spurious).
+- Install the interrupt handler for all interrupts/traps that will be handled
+ by gnat (including spurious).
-# At startup, gnat calls ``__gnat_install_handler()``. The BSP
- must provide this function which installs the interrupt/trap handlers.
+- At startup, gnat calls ``__gnat_install_handler()``. The BSP must provide
+ this function which installs the interrupt/trap handlers.
-Which CPU-interrupt will generate which signal is implementation
-defined. There are 32 POSIX signals (1 - 32), and all except the
-three error signals (SIGILL, SIGFPE and SIGSEGV) can be used. I
-would suggest to use the upper 16 (17 - 32) which do not
-have an assigned POSIX name.
+Which CPU-interrupt will generate which signal is implementation defined. There
+are 32 POSIX signals (1 - 32), and all except the three error signals (SIGILL,
+SIGFPE and SIGSEGV) can be used. I would suggest to use the upper 16 (17 - 32)
+which do not have an assigned POSIX name.
-Note that the pragma interrupt_attach will only bind a signal
-to a particular Ada handler - it will not unmask the
-interrupt or do any other things to enable it. This have to be
-done separately, typically by writing various device register.
+Note that the pragma interrupt_attach will only bind a signal to a particular
+Ada handler - it will not unmask the interrupt or do any other things to enable
+it. This have to be done separately, typically by writing various device
+register.
Example Ada95 Interrupt Program
===============================
-An example program (``irq_test``) is included in the
-Ada examples package to show how interrupts can be handled
-in Ada95. Note that generation of the test interrupt
-(``irqforce.c``) is BSP specific and must be edited.
+An example program (``irq_test``) is included in the Ada examples package to
+show how interrupts can be handled in Ada95. Note that generation of the test
+interrupt (``irqforce.c``) is BSP specific and must be edited.
+
+.. note::
-NOTE: The ``irq_test`` example was written for the SPARC/ERC32
-BSP.
+ The ``irq_test`` example was written for the SPARC/ERC32 BSP.
Version Requirements
====================
-With RTEMS 4.0, a patch was required to psignal.c in RTEMS
-sources (to correct a bug associated to the default action of
-signals 15-32). The SPARC/ERC32 RTEMS BSP includes the``gnatsupp`` subdirectory that can be used as an example
+With RTEMS 4.0, a patch was required to psignal.c in RTEMS sources (to correct
+a bug associated to the default action of signals 15-32). The SPARC/ERC32
+RTEMS BSP includes the``gnatsupp`` subdirectory that can be used as an example
for other BSPs.
-With GNAT 3.11p, a patch is required for ``a-init.c`` to invoke
-the BSP specific routine that installs the exception handlers.
-
-.. COMMENT: COPYRIGHT (c) 1988-2008.
-
-.. COMMENT: On-Line Applications Research Corporation (OAR).
-
-.. COMMENT: All rights reserved.
-
+With GNAT 3.11p, a patch is required for ``a-init.c`` to invoke the BSP
+specific routine that installs the exception handlers.