use crate::svd::{create_bit_range, create_field, create_register, create_register_properties};
use crate::Result;
pub fn create(interrupts: usize) -> Result<svd::RegisterCluster> {
let num_elem = interrupts.saturating_div(32) as u32 + (interrupts % 32 != 0) as u32;
Ok(svd::RegisterCluster::Register(create_register(
"pending",
"RISC-V PLIC Pending: 32-bit register indicating if there is a pending interrupt. The bit index indicates the interrupt source, e.g. pending[0][31] is interrupt 31, pending[1][0] is interrupt 32",
0x1000,
create_register_properties(32, 0)?,
Some(&[create_field(
"pending",
"",
create_bit_range("[31:0]")?,
svd::Access::ReadWrite,
None,
)?,
]),
Some(svd::DimElement::builder()
.dim(num_elem)
.dim_increment(4)
.build(svd::ValidateLevel::Strict)?),
)?))
}