123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- use sbi_spec::binary::SbiRet;
- #[cfg(target_pointer_width = "64")]
- #[inline]
- pub fn handle_ecall(
- function: usize,
- param0: usize,
- param1: usize,
- param2: usize,
- param3: usize,
- param4: usize,
- ) -> SbiRet {
- use crate::pmu::*;
- use sbi_spec::pmu::*;
- match function {
- PMU_NUM_COUNTERS => num_counters(),
- PMU_COUNTER_GET_INFO => counter_get_info(param0),
- PMU_COUNTER_CONFIG_MATCHING => {
- counter_config_matching(param0, param1, param2, param3, param4 as _)
- }
- PMU_COUNTER_START => counter_start(param0, param1, param2, param3 as _),
- PMU_COUNTER_STOP => counter_stop(param0, param1, param2),
- PMU_COUNTER_FW_READ => counter_fw_read(param0),
- #[cfg(feature = "sbi_2_0")]
- PMU_COUNTER_FW_READ_HI => counter_fw_read_hi(param0),
- _ => SbiRet::not_supported(),
- }
- }
- #[cfg(target_pointer_width = "32")]
- #[inline]
- pub fn handle_ecall(
- function: usize,
- param0: usize,
- param1: usize,
- param2: usize,
- param3: usize,
- param4: usize,
- param5: usize,
- ) -> SbiRet {
- use super::concat_u32;
- use crate::pmu::*;
- use sbi_spec::pmu::*;
- match function {
- PMU_NUM_COUNTERS => num_counters(),
- PMU_COUNTER_GET_INFO => counter_get_info(param0),
- PMU_COUNTER_CONFIG_MATCHING => {
- counter_config_matching(param0, param1, param2, param3, concat_u32(param5, param4))
- }
- PMU_COUNTER_START => counter_start(param0, param1, param2, concat_u32(param4, param3)),
- PMU_COUNTER_STOP => counter_stop(param0, param1, param2),
- PMU_COUNTER_FW_READ => counter_fw_read(param0),
- #[cfg(feature = "sbi_2_0")]
- PMU_COUNTER_FW_READ_HI => counter_fw_read_hi(param0),
- _ => SbiRet::not_supported(),
- }
- }
|