loongArch64 0.2.6

loongArch64 support for Rust
Documentation
use bit_field::BitField;

impl_define_csr!(Prcfg3, "Privileged Resource Configuration 1");

impl_read_csr!(0x23, Prcfg3);

impl Prcfg3 {
    /// 指示 TLB 组织方式:
    /// # Return Values:
    /// * 0:No TLB
    /// * 1:一个全相联的多重页大小 TLB(MTLB)
    /// * 2:一个全相联的多重页大小 TLB(MTLB)+一个组相联的单个页大小 TLB(STLB);
    /// * Others: Reserved.
    pub fn tlb_type(&self) -> usize {
        self.bits.get_bits(0..=3)
    }
    /// 当 TLBType=1 或 2 时,该域的值是全相联多重页大小 TLB 的项数减 1
    pub fn mtlb_entries(&self) -> usize {
        self.bits.get_bits(4..=11)
    }

    /// STLBWays
    pub fn stlb_ways(&self) -> usize {
        self.bits.get_bits(12..=19) + 1
    }

    /// 当 TLBType=2 时,该域的值是组相联单个页大小 TLB 的每一路项数的幂指数,即每一
    /// 路有 2 ^ STLBSets项。
    pub fn sltb_sets(&self) -> usize {
        self.bits.get_bits(20..=25)
    }
}