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 | |
parent | 08239bad26f06013971526447a0c50d2014244c0 (diff) | |
download | pk-dd9a83b2a7a2e8b7100f7f5d915c1e81dc2486c9.zip pk-dd9a83b2a7a2e8b7100f7f5d915c1e81dc2486c9.tar.gz pk-dd9a83b2a7a2e8b7100f7f5d915c1e81dc2486c9.tar.bz2 |
Added SBI_WRITE_PERF_CNTsbi_for_perf
Diffstat (limited to 'machine')
-rw-r--r-- | machine/mcall.h | 3 | ||||
-rw-r--r-- | machine/mtrap.c | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/machine/mcall.h b/machine/mcall.h index 874086e..b71a080 100644 --- a/machine/mcall.h +++ b/machine/mcall.h @@ -11,6 +11,7 @@ #define SBI_REMOTE_SFENCE_VMA_ASID 7 #define SBI_SHUTDOWN 8 #define SBI_READ_PERF_CNT 9 -#define SBI_WRITE_PERF_CFG 10 +#define SBI_WRITE_PERF_CNT 10 +#define SBI_WRITE_PERF_CFG 11 #endif 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; |