> I'd like to entertain a new name for this "BSP_ISR_handler" function
> now that it becomes an exported symbol. We should put it into a proper
> namespace.

Any suggestion on what to change it to?

/Daniel C

On 2015-02-04 16:12, Gedare Bloom wrote:
I'd like to entertain a new name for this "BSP_ISR_handler" function
now that it becomes an exported symbol. We should put it into a proper
namespace.

Also, I'm not sure on the legality of putting a copyright for Cobham
Gaisler that predates Cobham's acquisition of Aeroflex. But I am not a
lawyer.

-Gedare

On Wed, Feb 4, 2015 at 4:52 AM, Daniel Cederman <ceder...@gaisler.com> wrote:
This allows it to be wrapped by another function at link-time
and can be used to trace interrupts. If not placed in a separate
file, the function pointer address used in BSP_shared_interrupt_init
will be resolved at compile-time, and the function will not be wrappable.
---
  c/src/lib/libbsp/sparc/Makefile.am                 |  1 +
  c/src/lib/libbsp/sparc/erc32/Makefile.am           |  1 +
  c/src/lib/libbsp/sparc/erc32/include/bsp.h         |  3 ++
  c/src/lib/libbsp/sparc/leon2/Makefile.am           |  1 +
  c/src/lib/libbsp/sparc/leon2/include/bsp.h         |  3 ++
  c/src/lib/libbsp/sparc/leon3/Makefile.am           |  1 +
  c/src/lib/libbsp/sparc/leon3/include/bsp.h         |  3 ++
  .../lib/libbsp/sparc/shared/irq/bsp_isr_handler.c  | 35 ++++++++++++++++++++++
  c/src/lib/libbsp/sparc/shared/irq/irq-shared.c     | 32 +++++++-------------
  9 files changed, 58 insertions(+), 22 deletions(-)
  create mode 100644 c/src/lib/libbsp/sparc/shared/irq/bsp_isr_handler.c

diff --git a/c/src/lib/libbsp/sparc/Makefile.am 
b/c/src/lib/libbsp/sparc/Makefile.am
index 3d433fb..615aea7 100644
--- a/c/src/lib/libbsp/sparc/Makefile.am
+++ b/c/src/lib/libbsp/sparc/Makefile.am
@@ -11,6 +11,7 @@ EXTRA_DIST += shared/start/start.S

  # Interrupt
  EXTRA_DIST += shared/irq/irq-shared.c
+EXTRA_DIST += shared/irq/bsp_isr_handler.c

  # AMBA Plug&Play bus
  EXTRA_DIST += shared/include/ambapp.h
diff --git a/c/src/lib/libbsp/sparc/erc32/Makefile.am 
b/c/src/lib/libbsp/sparc/erc32/Makefile.am
index c99d2fb..8dcdd32 100644
--- a/c/src/lib/libbsp/sparc/erc32/Makefile.am
+++ b/c/src/lib/libbsp/sparc/erc32/Makefile.am
@@ -71,6 +71,7 @@ include_bsp_HEADERS += \
      include/bsp/irq.h
  libbsp_a_SOURCES += \
      ../../sparc/shared/irq/irq-shared.c \
+    ../../sparc/shared/irq/bsp_isr_handler.c \
      ../../shared/src/irq-default-handler.c \
      ../../shared/src/irq-generic.c \
      ../../shared/src/irq-info.c \
diff --git a/c/src/lib/libbsp/sparc/erc32/include/bsp.h 
b/c/src/lib/libbsp/sparc/erc32/include/bsp.h
index 3393910..2e531ec 100644
--- a/c/src/lib/libbsp/sparc/erc32/include/bsp.h
+++ b/c/src/lib/libbsp/sparc/erc32/include/bsp.h
@@ -106,6 +106,9 @@ typedef void (*bsp_shared_isr)(void *arg);
  /* Initializes the Shared System Interrupt service */
  extern void BSP_shared_interrupt_init(void);

+/* Called directly from IRQ trap handler TRAP[0x10..0x1F] = IRQ[0..15] */
+void BSP_ISR_handler(rtems_vector_number vector);
+
  /* Registers a shared IRQ handler, and enable it at IRQ controller. Multiple
   * interrupt handlers may use the same IRQ number, all ISRs will be called
   * when an interrupt on that line is fired.
diff --git a/c/src/lib/libbsp/sparc/leon2/Makefile.am 
b/c/src/lib/libbsp/sparc/leon2/Makefile.am
index d1e3817..efcb286 100644
--- a/c/src/lib/libbsp/sparc/leon2/Makefile.am
+++ b/c/src/lib/libbsp/sparc/leon2/Makefile.am
@@ -80,6 +80,7 @@ include_bsp_HEADERS += \
      include/bsp/irq.h
  libbsp_a_SOURCES += \
      ../../sparc/shared/irq/irq-shared.c \
+    ../../sparc/shared/irq/bsp_isr_handler.c \
      ../../shared/src/irq-default-handler.c \
      ../../shared/src/irq-generic.c \
      ../../shared/src/irq-info.c \
diff --git a/c/src/lib/libbsp/sparc/leon2/include/bsp.h 
b/c/src/lib/libbsp/sparc/leon2/include/bsp.h
index 41a1e43..807f8d9 100644
--- a/c/src/lib/libbsp/sparc/leon2/include/bsp.h
+++ b/c/src/lib/libbsp/sparc/leon2/include/bsp.h
@@ -130,6 +130,9 @@ typedef void (*bsp_shared_isr)(void *arg);
  /* Initializes the Shared System Interrupt service */
  extern void BSP_shared_interrupt_init(void);

+/* Called directly from IRQ trap handler TRAP[0x10..0x1F] = IRQ[0..15] */
+void BSP_ISR_handler(rtems_vector_number vector);
+
  /* Registers a shared IRQ handler, and enable it at IRQ controller. Multiple
   * interrupt handlers may use the same IRQ number, all ISRs will be called
   * when an interrupt on that line is fired.
diff --git a/c/src/lib/libbsp/sparc/leon3/Makefile.am 
b/c/src/lib/libbsp/sparc/leon3/Makefile.am
index c894095..cec0b34 100644
--- a/c/src/lib/libbsp/sparc/leon3/Makefile.am
+++ b/c/src/lib/libbsp/sparc/leon3/Makefile.am
@@ -82,6 +82,7 @@ include_bsp_HEADERS += \
  libbsp_a_SOURCES += \
      startup/eirq.c \
      ../../sparc/shared/irq/irq-shared.c \
+    ../../sparc/shared/irq/bsp_isr_handler.c \
      ../../shared/src/irq-default-handler.c \
      ../../shared/src/irq-generic.c \
      ../../shared/src/irq-info.c \
diff --git a/c/src/lib/libbsp/sparc/leon3/include/bsp.h 
b/c/src/lib/libbsp/sparc/leon3/include/bsp.h
index 2514190..f4e1121 100644
--- a/c/src/lib/libbsp/sparc/leon3/include/bsp.h
+++ b/c/src/lib/libbsp/sparc/leon3/include/bsp.h
@@ -153,6 +153,9 @@ typedef void (*bsp_shared_isr)(void *arg);
  /* Initializes the Shared System Interrupt service */
  extern void BSP_shared_interrupt_init(void);

+/* Called directly from IRQ trap handler TRAP[0x10..0x1F] = IRQ[0..15] */
+void BSP_ISR_handler(rtems_vector_number vector);
+
  /* Registers a shared IRQ handler, and enable it at IRQ controller. Multiple
   * interrupt handlers may use the same IRQ number, all ISRs will be called
   * when an interrupt on that line is fired.
diff --git a/c/src/lib/libbsp/sparc/shared/irq/bsp_isr_handler.c 
b/c/src/lib/libbsp/sparc/shared/irq/bsp_isr_handler.c
new file mode 100644
index 0000000..cc55a15
--- /dev/null
+++ b/c/src/lib/libbsp/sparc/shared/irq/bsp_isr_handler.c
@@ -0,0 +1,35 @@
+/*
+*  COPYRIGHT (c) 2015
+*  Cobham Gaisler
+*
+*  The license and distribution terms for this file may be
+*  found in the file LICENSE in this distribution or at
+*  http://www.rtems.org/license/LICENSE.
+*
+*/
+
+#include <rtems.h>
+#include <bsp.h>
+#include <bsp/irq-generic.h>
+
+static inline void bsp_dispatch_irq(int irq)
+{
+  bsp_interrupt_handler_entry *e =
+    &bsp_interrupt_handler_table[bsp_interrupt_handler_index(irq)];
+
+  while (e != NULL) {
+    (*e->handler)(e->arg);
+    e = e->next;
+  }
+}
+
+/* Called directly from IRQ trap handler TRAP[0x10..0x1F] = IRQ[0..15] */
+void BSP_ISR_handler(rtems_vector_number vector)
+{
+  int irq = vector - 0x10;
+
+  /* Let BSP fixup and/or handle incomming IRQ */
+  irq = bsp_irq_fixup(irq);
+
+  bsp_dispatch_irq(irq);
+}
diff --git a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c 
b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
index 79dbe55..d75dee0 100644
--- a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
+++ b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
@@ -1,3 +1,13 @@
+/*
+*  COPYRIGHT (c) 2012-2015
+*  Cobham Gaisler
+*
+*  The license and distribution terms for this file may be
+*  found in the file LICENSE in this distribution or at
+*  http://www.rtems.org/license/LICENSE.
+*
+*/
+
  #include <rtems.h>
  #include <bsp.h>
  #include <bsp/irq-generic.h>
@@ -27,28 +37,6 @@ static inline int bsp_irq_cpu(int irq)
  }
  #endif

-static inline void bsp_dispatch_irq(int irq)
-{
-  bsp_interrupt_handler_entry *e =
-    &bsp_interrupt_handler_table[bsp_interrupt_handler_index(irq)];
-
-  while (e != NULL) {
-    (*e->handler)(e->arg);
-    e = e->next;
-  }
-}
-
-/* Called directly from IRQ trap handler TRAP[0x10..0x1F] = IRQ[0..15] */
-static void BSP_ISR_handler(rtems_vector_number vector)
-{
-  int irq = vector - 0x10;
-
-  /* Let BSP fixup and/or handle incomming IRQ */
-  irq = bsp_irq_fixup(irq);
-
-  bsp_dispatch_irq(irq);
-}
-
  /* Initialize interrupts */
  void BSP_shared_interrupt_init(void)
  {
--
2.2.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

--
Daniel Cederman
Software Engineer
Cobham Gaisler
daniel.ceder...@gaisler.com

Cobham Gaisler AB, Kungsgatan 12, SE-411 19, GĂ–TEBORG, Sweden.
+46 (0) 31 775 8650, www.cobham.com/gaisler

Please consider the environment before printing this email

This e-mail and any files transmitted with it ("E-mail") is intended solely for the addressee(s) and may contain confidential and/or legally privileged information. If you are not the addressee(s), any disclosure, reproduction, copying, distribution or other use of the E-mail is prohibited. If you have received this E-mail in error, please delete it and notify the sender immediately via our switchboard or return e-mail.

Neither the company nor any subsidiary or affiliate or associated company nor any individual sending this Email accepts any liability in respect of the content (including errors and omissions) nor shall this e-mail be deemed to enter the company or any subsidiary or affiliate or associated company into a contract or to create any legally binding obligations unless expressly agreed to in writing under separate cover and timeliness of the E-mail which arise as a result of transmission. If verification is required, please request a hard copy version from the sender.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to