use super::{DecodeError, FieldInfo};
pub fn decode_common_service(smccc: u64, conv: u64) -> Result<FieldInfo, DecodeError> {
if conv == 0 {
FieldInfo::get(smccc, "Function Number", None, 0, 16).describe(describe_general32_queries)
} else {
FieldInfo::get(smccc, "Function Number", None, 0, 16).describe(describe_general64_queries)
}
}
pub fn reserved_fids(service: u64) -> &'static str {
match service {
0xFF00..=0xFFFF => "Reserved for future expansion",
_ => "",
}
}
pub fn smccc_general32_queries(service: u64) -> &'static str {
match service {
0xFF00 => "Call Count Query, deprecated from SMCCCv1.2",
0xFF01 => "Call UUID Query",
0xFF03 => "Revision Query",
_ => reserved_fids(service),
}
}
pub fn describe_general32_queries(service: u64) -> Result<&'static str, DecodeError> {
Ok(smccc_general32_queries(service))
}
pub fn describe_general64_queries(service: u64) -> Result<&'static str, DecodeError> {
Ok(reserved_fids(service))
}