--- 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 ) +{ +} + +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"); +} + +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