<div dir="ltr"><span style="font-size:12.8px">If that is the 2-paragraph BSD, then it is the newly preferred license.</span><div dir="auto" style="font-size:12.8px"><br></div><div dir="auto" style="font-size:12.8px">The RTEMS GPLv2 has an exception which allows linking and eliminates the viral characteristic. In practice and intent, the two licenses are the same but the 2-paragraph BSD is simpler and better recognized for our intent.</div><div dir="auto" style="font-size:12.8px"><br></div><div dir="auto" style="font-size:12.8px">Thank you for trying to use the BSD style license.</div><div dir="auto" style="font-size:12.8px"><br></div><div style="font-size:12.8px">Depending on the author(s) of the original code, it might be easy to get</div><div style="font-size:12.8px">their permission for this one file on the list.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">--joel</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 22, 2017 at 7:41 PM, Hesham Almatary <span dir="ltr"><<a href="mailto:heshamelmatary@gmail.com" target="_blank">heshamelmatary@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Tue, Aug 22, 2017 at 9:56 AM, Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>> wrote:<br>
> ---<br>
>  c/src/lib/libbsp/riscv32/<wbr>hifive1/include/irq.h     | 12 +++<br>
>  c/src/lib/libbsp/riscv32/<wbr>hifive1/irq/irq.c         | 86 ++++++++++++++++++++++<br>
>  c/src/lib/libbsp/riscv32/<wbr>hifive1/start/start.S     |  3 +-<br>
>  .../score/cpu/riscv32/rtems/<wbr>score/riscv-utility.h  | 26 +++++++<br>
>  4 files changed, 126 insertions(+), 1 deletion(-)<br>
>  create mode 100644 c/src/lib/libbsp/riscv32/<wbr>hifive1/irq/irq.c<br>
><br>
> diff --git a/c/src/lib/libbsp/riscv32/<wbr>hifive1/include/irq.h b/c/src/lib/libbsp/riscv32/<wbr>hifive1/include/irq.h<br>
> index 67a781f..46d29c7 100644<br>
> --- a/c/src/lib/libbsp/riscv32/<wbr>hifive1/include/irq.h<br>
> +++ b/c/src/lib/libbsp/riscv32/<wbr>hifive1/include/irq.h<br>
> @@ -11,6 +11,8 @@<br>
>   * Copyright (c) 2015 University of York.<br>
>   * Hesham ALMatary <<a href="mailto:hmka501@york.ac.uk">hmka501@york.ac.uk</a>><br>
>   *<br>
> + * Copyright (c) 2017 Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>><br>
> + *<br>
>   * Redistribution and use in source and binary forms, with or without<br>
>   * modification, are permitted provided that the following conditions<br>
>   * are met:<br>
> @@ -52,6 +54,16 @@<br>
>  #define MCAUSE_MTIME 0x7<br>
>  #define MCAUSE_MEXT 0xB<br>
><br>
> +#define MIE_MSWI (1 << MCAUSE_MSWI)<br>
> +#define MIE_MTIME (1 << MCAUSE_MTIME)<br>
> +#define MIE_MEXT (1 << MCAUSE_MEXT)<br>
> +<br>
> +/*<br>
> + * Memory mapped timer, timer comparator and software interrupt registers.<br>
> + */<br>
> +#define MTIMECMP  ((volatile uint64_t *)0x02004000)<br>
> +#define MTIME     ((volatile uint64_t *)0x0200bff8)<br>
> +#define MSIP_REG ((volatile uint32_t *) 0x02000000)<br>
><br>
>  #endif /* ASM */<br>
>  #endif /* LIBBSP_GENERIC_RISCV_IRQ_H */<br>
> diff --git a/c/src/lib/libbsp/riscv32/<wbr>hifive1/irq/irq.c b/c/src/lib/libbsp/riscv32/<wbr>hifive1/irq/irq.c<br>
> new file mode 100644<br>
> index 0000000..fadfdb7<br>
> --- /dev/null<br>
> +++ b/c/src/lib/libbsp/riscv32/<wbr>hifive1/irq/irq.c<br>
> @@ -0,0 +1,86 @@<br>
> +/**<br>
> + * @file<br>
> + *<br>
> + * @ingroup riscv_interrupt<br>
> + *<br>
> + * @brief Interrupt support.<br>
> + */<br>
> +<br>
> +/*<br>
> + * RISCV CPU Dependent Source<br>
> + *<br>
> + * Copyright (c) 2015 University of York.<br>
> + * Hesham ALMatary <<a href="mailto:hmka501@york.ac.uk">hmka501@york.ac.uk</a>><br>
> + *<br>
> + * Redistribution and use in source and binary forms, with or without<br>
> + * modification, are permitted provided that the following conditions<br>
> + * are met:<br>
> + * 1. Redistributions of source code must retain the above copyright<br>
> + *    notice, this list of conditions and the following disclaimer.<br>
> + * 2. Redistributions in binary form must reproduce the above copyright<br>
> + *    notice, this list of conditions and the following disclaimer in the<br>
> + *    documentation and/or other materials provided with the distribution.<br>
> + *<br>
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND<br>
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br>
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE<br>
> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE<br>
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL<br>
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS<br>
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)<br>
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br>
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY<br>
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br>
> + * SUCH DAMAGE.<br>
> + */<br>
> +<br>
> +#include <bsp/fe310.h><br>
> +#include <bsp/irq.h><br>
> +#include <bsp/irq-generic.h><br>
> +<br>
> +/* Almost all of the jobs that the following functions should<br>
> + * do are implemented in cpukit<br>
> + */<br>
> +<br>
> +void bsp_interrupt_handler_default(<wbr>rtems_vector_number vector)<br>
> +{<br>
> +    printk("spurious interrupt: %u\n", vector);<br>
> +}<br>
> +<br>
> +rtems_status_code bsp_interrupt_facility_<wbr>initialize()<br>
> +{<br>
> +  return 0;<br>
> +}<br>
> +<br>
> +rtems_status_code bsp_interrupt_vector_enable(<wbr>rtems_vector_number vector)<br>
> +{<br>
> +  return 0;<br>
> +}<br>
> +<br>
> +rtems_status_code bsp_interrupt_vector_disable(<wbr>rtems_vector_number vector)<br>
> +{<br>
> +  return 0;<br>
> +}<br>
> +<br>
> +/*<br>
> + * FIXME: only timer intrrupt is handled<br>
> + */<br>
> +void handle_trap (uint32_t cause)<br>
> +{<br>
> +    if (cause & MCAUSE_INT) {<br>
> +      /* an interrupt occurred */<br>
> +      if ((cause & MCAUSE_MTIME) == MCAUSE_MTIME) {<br>
> +       /* Timer interrupt */<br>
> +        (*MTIMECMP) = (*MTIME) + FE310_CLOCK_PERIOD;<br>
> +        bsp_interrupt_handler_table[1]<wbr>.handler(bsp_interrupt_<wbr>handler_table[1].arg);<br>
> +      } else if ((cause & MCAUSE_MEXT) == MCAUSE_MEXT) {<br>
> +             /*External interrupt */<br>
> +      } else if ((cause & MCAUSE_MSWI) == MCAUSE_MSWI) {<br>
> +             /* Software interrupt */<br>
> +             *MSIP_REG = 0;<br>
> +      }<br>
> +    } else {<br>
> +      /* an exception occurred */<br>
> +    }<br>
> +<br>
> +}<br>
> diff --git a/c/src/lib/libbsp/riscv32/<wbr>hifive1/start/start.S b/c/src/lib/libbsp/riscv32/<wbr>hifive1/start/start.S<br>
> index 5d0899c..b3fb3f3 100644<br>
> --- a/c/src/lib/libbsp/riscv32/<wbr>hifive1/start/start.S<br>
> +++ b/c/src/lib/libbsp/riscv32/<wbr>hifive1/start/start.S<br>
> @@ -209,7 +209,8 @@ trap_entry:<br>
>    csrr t0, mcause<br>
>    SREG t0, 33*REGBYTES(sp)<br>
><br>
> -  call handle_trap_new<br>
> +  mv   a0, t0<br>
> +  call handle_trap<br>
><br>
>    LREG t0, 32*REGBYTES(sp)<br>
>    csrw mepc, t0<br>
> diff --git a/cpukit/score/cpu/riscv32/<wbr>rtems/score/riscv-utility.h b/cpukit/score/cpu/riscv32/<wbr>rtems/score/riscv-utility.h<br>
> index c45b05f..8abc0bd 100644<br>
> --- a/cpukit/score/cpu/riscv32/<wbr>rtems/score/riscv-utility.h<br>
> +++ b/cpukit/score/cpu/riscv32/<wbr>rtems/score/riscv-utility.h<br>
> @@ -14,4 +14,30 @@<br>
>  #ifndef _RTEMS_SCORE_RISCV_UTILITY_H<br>
>  #define _RTEMS_SCORE_RISCV_UTILITY_H<br>
><br>
> +#define read_csr(reg) ({ unsigned long __tmp; \<br>
> +          asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \<br>
> +          __tmp; })<br>
> +<br>
> +#define write_csr(reg, val) \<br>
> +      asm volatile ("csrw " #reg ", %0" :: "r"(val))<br>
> +<br>
> +#define swap_csr(reg, val) ({ long __tmp; \<br>
> +          asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "r"(val)); \<br>
> +          __tmp; })<br>
> +<br>
> +#define set_csr(reg, bit) ({ unsigned long __tmp; \<br>
> +          if (__builtin_constant_p(bit) && (bit) < 32) \<br>
> +            asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \<br>
> +          else \<br>
> +            asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \<br>
> +          __tmp; })<br>
> +<br>
> +#define clear_csr(reg, bit) ({ unsigned long __tmp; \<br>
> +          if (__builtin_constant_p(bit) && (bit) < 32) \<br>
> +            asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \<br>
> +          else \<br>
> +            asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \<br>
> +          __tmp; })<br>
> +<br>
> +<br>
</div></div>Would you add the license/comment for the file/code this is originally<br>
copied from? Similarally for all of the other patches. In RTEMS, GPLv2<br>
is used, it might conflict with other types of licenses.<br>
<span class="im HOEnZb"><br>
>  #endif /* _RTEMS_SCORE_RISCV_UTILITY_H */<br>
> --<br>
> 2.1.4<br>
><br>
> ______________________________<wbr>_________________<br>
> devel mailing list<br>
> <a href="mailto:devel@rtems.org">devel@rtems.org</a><br>
> <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/<wbr>mailman/listinfo/devel</a><br>
<br>
<br>
<br>
</span><span class="HOEnZb"><font color="#888888">--<br>
Hesham<br>
</font></span><div class="HOEnZb"><div class="h5">______________________________<wbr>_________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/<wbr>mailman/listinfo/devel</a><br>
</div></div></blockquote></div><br></div>