On Fri, Feb 6, 2015 at 10:48 AM, Daniel Cederman <ceder...@gaisler.com> 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. > > Any suggestion on what to change it to? > bsp_isr_handler() is fine with me.
> /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