Files
learnFPGA/FIRMWARE/DHRYSTONE/stubs.c
2025-08-02 06:09:31 +03:00

57 lines
1.2 KiB
C

#include <stdint.h>
#include <perf.h>
uint64_t time() {
return rdcycle();
}
uint64_t insn() {
return rdinstret();
}
char *strcpy(char *dest, const char *src) {
char* result = dest;
while(*dest++=*src++);
return result;
}
int strcmp (const char *p1, const char *p2) {
const unsigned char *s1 = (const unsigned char *) p1;
const unsigned char *s2 = (const unsigned char *) p2;
unsigned char c1, c2;
do {
c1 = (unsigned char) *s1++;
c2 = (unsigned char) *s2++;
if (c1 == '\0') {
return c1 - c2;
}
}
while (c1 == c2);
return c1 - c2;
}
/*************************************************************/
// Print "fixed point" number (integer/1000)
void printk(uint64_t kx) {
int intpart = (int)(kx / 1000);
int fracpart = (int)(kx % 1000);
printf("%d.",intpart);
if(fracpart<100) {
printf("0");
}
if(fracpart<10) {
printf("0");
}
printf("%d",fracpart);
}
void show_CPI_2() {
uint64_t instret = rdinstret();
uint64_t cycles = rdcycle();
uint64_t kCPI = cycles*1000/instret;
printf(">>> CPI ="); printk(kCPI); printf("\n");
printf(">>> instret = %d\n", (int)(instret));
printf(">>> cycles = %d\n", (int)(cycles));
}