# ustatus.rs - source
Source of the Rust file `/home/runner/.cargo/git/checkouts/riscv-ab2abd16c438337b/11d43cf/src/register/ustatus.rs`.
Keywords: rust, rustlang, rust-lang

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37

    //! ustatus register
    // TODO: Virtualization, Memory Privilege and Extension Context Fields

    use bit_field::BitField;

    /// ustatus register
    #[derive(Clone, Copy, Debug)]
    pub struct Ustatus {
        bits: usize,
    }

    impl Ustatus {
        /// User Interrupt Enable
        #[inline]
        pub fn uie(&self) -> bool {
            self.bits.get_bit(0)
        }

        /// User Previous Interrupt Enable
        #[inline]
        pub fn upie(&self) -> bool {
            self.bits.get_bit(4)
        }
    }

    read_csr_as!(Ustatus, 0x000, __read_ustatus);
    write_csr!(0x000, __write_ustatus);
    set!(0x000, __set_ustatus);
    clear!(0x000, __clear_ustatus);

    set_clear_csr!(
        /// User Interrupt Enable
        , set_uie, clear_uie, 1 << 0);

    set_csr!(
        /// User Previous Interrupt Enable
        , set_upie, 1 << 4);