<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-08-17 17:13 GMT+02:00 Gedare Bloom <span dir="ltr"><<a href="mailto:gedare@rtems.org" target="_blank">gedare@rtems.org</a>></span>:<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 Wed, Aug 16, 2017 at 11:13 AM, Denis Obrezkov<br>
<<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>> wrote:<br>
> ---<br>
>  c/src/lib/libbsp/riscv32/<wbr>hifive1/clock/clock.c | 67 ++++++++++++++++++++++++++<br>
>  1 file changed, 67 insertions(+)<br>
>  create mode 100644 c/src/lib/libbsp/riscv32/<wbr>hifive1/clock/clock.c<br>
><br>
> diff --git a/c/src/lib/libbsp/riscv32/<wbr>hifive1/clock/clock.c b/c/src/lib/libbsp/riscv32/<wbr>hifive1/clock/clock.c<br>
> new file mode 100644<br>
> index 0000000..74132ed<br>
> --- /dev/null<br>
> +++ b/c/src/lib/libbsp/riscv32/<wbr>hifive1/clock/clock.c<br>
> @@ -0,0 +1,67 @@<br>
> +/*<br>
> + * Copyright (c) 2017 Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>><br>
> + *<br>
> + * The license and distribution terms for this file may be<br>
> + * found in the file LICENSE in this distribution or at<br>
> + * <a href="http://www.rtems.org/license/LICENSE" rel="noreferrer" target="_blank">http://www.rtems.org/license/<wbr>LICENSE</a>.<br>
> + */<br>
> +<br>
> +<br>
> +#include <bsp/irq.h><br>
> +#include <bsp/fatal.h><br>
> +#include <bsp/fe310.h><br>
> +<br>
> +<br>
> +static void FE310_clock_driver_support_<wbr>install_isr(<br>
> +  rtems_isr_entry Clock_isr<br>
> +)<br>
> +{<br>
> +  rtems_status_code sc = RTEMS_SUCCESSFUL;<br>
> +<br>
> +  sc = rtems_interrupt_handler_<wbr>install(<br>
> +    1,<br>
> +    "Clock",<br>
> +    RTEMS_INTERRUPT_UNIQUE,<br>
> +    (rtems_interrupt_handler) Clock_isr,<br>
> +    NULL<br>
> +  );<br>
> +  if ( sc != RTEMS_SUCCESSFUL ) {<br>
> +    rtems_fatal_error_occurred(<wbr>0xdeadbeef);<br>
> +  }<br>
> +}<br>
> +<br>
> +static void FE310_clock_driver_support_at_<wbr>tick ( void )<br>
> +{<br>
</div></div>Does the timer automatically re-load?<br></blockquote><div> No, we reload it in interrupt_dispatch routine. </div><div> I think now that it is not right. Should we place it here?</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> +}<br>
> +<br>
> +static void FE310_clock_init ( void )<br>
> +{<br>
> +  volatile uint64_t * mtime = (volatile uint64_t *)0x0200bff8;<br>
> +  volatile uint64_t * mtimecmp = (volatile uint64_t *)0x02004000;<br>
> +  (*mtimecmp) = (*mtime) + FE310_CLOCK_PERIOD + 0x3000;<br>
> +  asm volatile ("csrci mstatus, 0x8");<br>
> +  asm volatile ("li t0, 0x80\n\t"<br>
> +                "csrs mie, t0");<br>
> +  asm volatile ("csrsi mstatus, 0x8");<br>
</span>It would be good to have inline functions for reading/writing all of<br>
these special purpose registers.<br>
<span class=""><br>
> +}<br>
> +<br>
> +static void FE310_clock_driver_support_<wbr>shutdown_hardware( void )<br>
> +{<br>
> +}<br>
> +<br>
> +#define Clock_driver_support_<wbr>initialize_hardware() \<br>
> +  FE310_clock_init()<br>
> +<br>
> +#define CLOCK_DRIVER_USE_DUMMY_<wbr>TIMECOUNTER<br>
> +<br>
> +#define Clock_driver_support_install_<wbr>isr(isr,old) \<br>
> +  FE310_clock_driver_support_<wbr>install_isr ( isr )<br>
> +<br>
> +#define Clock_driver_support_at_tick() \<br>
> +  FE310_clock_driver_support_at_<wbr>tick()<br>
> +<br>
> +#define Clock_driver_support_shutdown_<wbr>hardware() \<br>
> +  FE310_clock_driver_support_<wbr>shutdown_hardware()<br>
> +<br>
> +#include "../../../shared/clockdrv_<wbr>shell.h"<br>
> +<br>
> --<br>
> 2.1.4<br>
><br>
</span>> ______________________________<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>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Regards, Denis Obrezkov</div>
</div></div>