summaryrefslogtreecommitdiff
path: root/software/dhrystone/dhry_stubs.c
blob: d384bf1c3009b0ae003e4fc7cc3a3dc534048209 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "platform.h"

/* The functions in this file are only meant to support Dhrystone on an
 * embedded RV32 system and are obviously incorrect in general. */

// return the cycle counter as though it were the current time
long time(void)
{
  long t;
  asm volatile ("csrr %0, mcycle" : "=r" (t));
  return t / (get_cpu_freq() / 1000);
}

// set the number of dhrystone iterations
void scanf(const char* fmt, int* n)
{
  *n = 1500000;
}

// simple memory allocator
void* malloc(unsigned long sz)
{
  extern void* sbrk(long);
  void* res = sbrk(sz);
  if ((long)res == -1)
    return 0;
  return res;
}

// simple memory deallocator
void free(void* ptr) {}