diff options
Diffstat (limited to 'picorv32/firmware/stats.c')
-rw-r--r-- | picorv32/firmware/stats.c | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/picorv32/firmware/stats.c b/picorv32/firmware/stats.c deleted file mode 100644 index 80e22dd..0000000 --- a/picorv32/firmware/stats.c +++ /dev/null @@ -1,42 +0,0 @@ -// This is free and unencumbered software released into the public domain. -// -// Anyone is free to copy, modify, publish, use, compile, sell, or -// distribute this software, either in source code form or as a compiled -// binary, for any purpose, commercial or non-commercial, and by any -// means. - -#include "firmware.h" - -static void stats_print_dec(unsigned int val, int digits, bool zero_pad) -{ - char buffer[32]; - char *p = buffer; - while (val || digits > 0) { - if (val) - *(p++) = '0' + val % 10; - else - *(p++) = zero_pad ? '0' : ' '; - val = val / 10; - digits--; - } - while (p != buffer) { - if (p[-1] == ' ' && p[-2] == ' ') p[-1] = '.'; - print_chr(*(--p)); - } -} - -void stats(void) -{ - unsigned int num_cycles, num_instr; - __asm__ volatile ("rdcycle %0; rdinstret %1;" : "=r"(num_cycles), "=r"(num_instr)); - print_str("Cycle counter ........"); - stats_print_dec(num_cycles, 8, false); - print_str("\nInstruction counter .."); - stats_print_dec(num_instr, 8, false); - print_str("\nCPI: "); - stats_print_dec((num_cycles / num_instr), 0, false); - print_str("."); - stats_print_dec(((100 * num_cycles) / num_instr) % 100, 2, true); - print_str("\n"); -} - |