diff options
author | Alex Solomatnikov <sols@sifive.com> | 2018-04-05 10:12:18 -0700 |
---|---|---|
committer | Alex Solomatnikov <sols@sifive.com> | 2018-04-05 10:37:07 -0700 |
commit | dd9a83b2a7a2e8b7100f7f5d915c1e81dc2486c9 (patch) | |
tree | ef5fc79eb7926049c75a22fa2664c919fef7e886 /machine/mtrap.c | |
parent | 08239bad26f06013971526447a0c50d2014244c0 (diff) | |
download | riscv-pk-sbi_for_perf.zip riscv-pk-sbi_for_perf.tar.gz riscv-pk-sbi_for_perf.tar.bz2 |
Added SBI_WRITE_PERF_CNTsbi_for_perf
Diffstat (limited to 'machine/mtrap.c')
-rw-r--r-- | machine/mtrap.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/machine/mtrap.c b/machine/mtrap.c index 3c10e66..b2a3011 100644 --- a/machine/mtrap.c +++ b/machine/mtrap.c @@ -108,6 +108,26 @@ static uintptr_t mcall_read_perf_cnt(uintptr_t id) return -ENOSYS; } +static uintptr_t mcall_write_perf_cnt(uintptr_t id, uintptr_t val) +{ + switch (id) + { + case 0: + write_csr(mcycle, val); + return 0; + case 1: + write_csr(minstret, val); + return 0; + case 2: + write_csr(mhpmcounter3, val); + return 0; + case 3: + write_csr(mhpmcounter4, val); + return 0; + } + return -ENOSYS; +} + static uintptr_t mcall_write_perf_cfg(uintptr_t id, uintptr_t val) { switch (id) @@ -198,6 +218,9 @@ send_ipi: case SBI_READ_PERF_CNT: retval = mcall_read_perf_cnt(arg0); break; + case SBI_WRITE_PERF_CNT: + retval = mcall_write_perf_cnt(arg0, arg1); + break; case SBI_WRITE_PERF_CFG: retval = mcall_write_perf_cfg(arg0, arg1); break; |