RISC-V: Moved syscalls to separate files to fix aliasing problems.

This commit is contained in:
Jim Wilson
2017-12-26 12:27:52 -08:00
parent 347b083911
commit 28d5b98038
37 changed files with 513 additions and 450 deletions

View File

@@ -0,0 +1,37 @@
#include <machine/syscall.h>
#include <sys/types.h>
#include <sys/times.h>
#include <sys/time.h>
#include "internal_syscall.h"
extern int _gettimeofday(struct timeval *, void *);
/* Timing information for current process. From
newlib/libc/include/sys/times.h the tms struct fields are as follows:
- clock_t tms_utime : user clock ticks
- clock_t tms_stime : system clock ticks
- clock_t tms_cutime : children's user clock ticks
- clock_t tms_cstime : children's system clock ticks
Since maven does not currently support processes we set both of the
children's times to zero. Eventually we might want to separately
account for user vs system time, but for now we just return the total
number of cycles since starting the program. */
clock_t
_times(struct tms *buf)
{
// when called for the first time, initialize t0
static struct timeval t0;
if (t0.tv_sec == 0)
_gettimeofday (&t0, 0);
struct timeval t;
_gettimeofday (&t, 0);
long long utime = (t.tv_sec - t0.tv_sec) * 1000000 + (t.tv_usec - t0.tv_usec);
buf->tms_utime = utime * CLOCKS_PER_SEC / 1000000;
buf->tms_stime = buf->tms_cstime = buf->tms_cutime = 0;
return -1;
}