[PATCH] bsp/sparc: Move BSP_ISR_handler to a separate file

Gedare Bloom gedare at rtems.org
Sat Feb 7 13:06:02 UTC 2015


On Fri, Feb 6, 2015 at 10:48 AM, Daniel Cederman <cederman at 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 <cederman at 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 at rtems.org
>>> http://lists.rtems.org/mailman/listinfo/devel
>
>
> --
> Daniel Cederman
> Software Engineer
> Cobham Gaisler
> daniel.cederman at 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.


More information about the devel mailing list