On Wed, Aug 16, 2017 at 11:13 AM, Denis Obrezkov <denisobrez...@gmail.com> wrote: > --- > c/src/lib/libbsp/riscv32/hifive1/clock/clock.c | 67 > ++++++++++++++++++++++++++ > 1 file changed, 67 insertions(+) > create mode 100644 c/src/lib/libbsp/riscv32/hifive1/clock/clock.c > > diff --git a/c/src/lib/libbsp/riscv32/hifive1/clock/clock.c > b/c/src/lib/libbsp/riscv32/hifive1/clock/clock.c > new file mode 100644 > index 0000000..74132ed > --- /dev/null > +++ b/c/src/lib/libbsp/riscv32/hifive1/clock/clock.c > @@ -0,0 +1,67 @@ > +/* > + * Copyright (c) 2017 Denis Obrezkov <denisobrez...@gmail.com> > + * > + * 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 <bsp/irq.h> > +#include <bsp/fatal.h> > +#include <bsp/fe310.h> > + > + > +static void FE310_clock_driver_support_install_isr( > + rtems_isr_entry Clock_isr > +) > +{ > + rtems_status_code sc = RTEMS_SUCCESSFUL; > + > + sc = rtems_interrupt_handler_install( > + 1, > + "Clock", > + RTEMS_INTERRUPT_UNIQUE, > + (rtems_interrupt_handler) Clock_isr, > + NULL > + ); > + if ( sc != RTEMS_SUCCESSFUL ) { > + rtems_fatal_error_occurred(0xdeadbeef); > + } > +} > + > +static void FE310_clock_driver_support_at_tick ( void ) > +{ Does the timer automatically re-load?
> +} > + > +static void FE310_clock_init ( void ) > +{ > + volatile uint64_t * mtime = (volatile uint64_t *)0x0200bff8; > + volatile uint64_t * mtimecmp = (volatile uint64_t *)0x02004000; > + (*mtimecmp) = (*mtime) + FE310_CLOCK_PERIOD + 0x3000; > + asm volatile ("csrci mstatus, 0x8"); > + asm volatile ("li t0, 0x80\n\t" > + "csrs mie, t0"); > + asm volatile ("csrsi mstatus, 0x8"); It would be good to have inline functions for reading/writing all of these special purpose registers. > +} > + > +static void FE310_clock_driver_support_shutdown_hardware( void ) > +{ > +} > + > +#define Clock_driver_support_initialize_hardware() \ > + FE310_clock_init() > + > +#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER > + > +#define Clock_driver_support_install_isr(isr,old) \ > + FE310_clock_driver_support_install_isr ( isr ) > + > +#define Clock_driver_support_at_tick() \ > + FE310_clock_driver_support_at_tick() > + > +#define Clock_driver_support_shutdown_hardware() \ > + FE310_clock_driver_support_shutdown_hardware() > + > +#include "../../../shared/clockdrv_shell.h" > + > -- > 2.1.4 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel