# sie.rs - source
Source of the Rust file `/home/runner/.cargo/git/checkouts/riscv-ab2abd16c438337b/11d43cf/src/register/sie.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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76

    //! sie register

    use bit_field::BitField;

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

    impl Sie {
        /// Returns the contents of the register as raw bits
        #[inline]
        pub fn bits(&self) -> usize {
            self.bits
        }

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

        /// Supervisor Software Interrupt Enable
        #[inline]
        pub fn ssoft(&self) -> bool {
            self.bits.get_bit(1)
        }

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

        /// Supervisor Timer Interrupt Enable
        #[inline]
        pub fn stimer(&self) -> bool {
            self.bits.get_bit(5)
        }

        /// User External Interrupt Enable
        #[inline]
        pub fn uext(&self) -> bool {
            self.bits.get_bit(8)
        }

        /// Supervisor External Interrupt Enable
        #[inline]
        pub fn sext(&self) -> bool {
            self.bits.get_bit(9)
        }
    }

    read_csr_as!(Sie, 0x104, __read_sie);
    set!(0x104, __set_sie);
    clear!(0x104, __clear_sie);

    set_clear_csr!(
        /// User Software Interrupt Enable
        , set_usoft, clear_usoft, 1 << 0);
    set_clear_csr!(
        /// Supervisor Software Interrupt Enable
        , set_ssoft, clear_ssoft, 1 << 1);
    set_clear_csr!(
        /// User Timer Interrupt Enable
        , set_utimer, clear_utimer, 1 << 4);
    set_clear_csr!(
        /// Supervisor Timer Interrupt Enable
        , set_stimer, clear_stimer, 1 << 5);
    set_clear_csr!(
        /// User External Interrupt Enable
        , set_uext, clear_uext, 1 << 8);
    set_clear_csr!(
        /// Supervisor External Interrupt Enable
        , set_sext, clear_sext, 1 << 9);