summaryrefslogtreecommitdiff
path: root/code/ecp/fe310/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'code/ecp/fe310/time.c')
-rw-r--r--code/ecp/fe310/time.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/code/ecp/fe310/time.c b/code/ecp/fe310/time.c
new file mode 100644
index 0000000..2ff98cb
--- /dev/null
+++ b/code/ecp/fe310/time.c
@@ -0,0 +1,18 @@
+#include <core.h>
+
+#include "encoding.h"
+#include "platform.h"
+
+static ecp_cts_t t_abstime_ms(ecp_cts_t msec) {
+ volatile uint64_t *mtime = (uint64_t *) (CLINT_CTRL_ADDR + CLINT_MTIME);
+
+ uint64_t now_ms = *mtime * 1000 / RTC_FREQ;
+ return now_ms + msec;
+}
+
+int ecp_time_init(ECPTimeIface *t) {
+ t->init = 1;
+ t->abstime_ms = t_abstime_ms;
+ t->sleep_ms = NULL;
+ return 0;
+}