use crate::core::ArmVersion;
pub struct Config {
pub(crate) version: ArmVersion,
pub(crate) external_exceptions: usize,
pub(crate) exclusives_reservation_granule: u32,
}
impl Config {
pub fn v6m() -> Self {
Self {
version: ArmVersion::V6M,
external_exceptions: 0,
exclusives_reservation_granule: 4,
}
}
pub fn v7m() -> Self {
Self {
version: ArmVersion::V7M,
..Self::v6m()
}
}
pub fn v7em() -> Self {
Self {
version: ArmVersion::V7EM,
..Self::v6m()
}
}
pub fn v8m() -> Self {
Self {
version: ArmVersion::V8M,
..Self::v6m()
}
}
pub fn external_exceptions(mut self, count: usize) -> Self {
self.external_exceptions = count;
self
}
pub fn exclusives_reservation_granule(mut self, granule: u32) -> Self {
self.exclusives_reservation_granule = granule;
self
}
}