Derive useful traits for enums

This commit is contained in:
Vadim Kaushan 2019-06-25 23:02:45 +03:00
parent 5a1ab837b4
commit ac2ac6756b
No known key found for this signature in database
GPG Key ID: A501C5DF67C05C4E
9 changed files with 18 additions and 8 deletions

View File

@ -64,6 +64,7 @@ impl Flags {
} }
/// Rounding Mode /// Rounding Mode
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum RoundingMode { pub enum RoundingMode {
RoundToNearestEven = 0b000, RoundToNearestEven = 0b000,
RoundTowardsZero = 0b001, RoundTowardsZero = 0b001,

View File

@ -7,14 +7,14 @@ pub struct Mcause {
} }
/// Trap Cause /// Trap Cause
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Trap { pub enum Trap {
Interrupt(Interrupt), Interrupt(Interrupt),
Exception(Exception), Exception(Exception),
} }
/// Interrupt /// Interrupt
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Interrupt { pub enum Interrupt {
UserSoft, UserSoft,
SupervisorSoft, SupervisorSoft,
@ -29,7 +29,7 @@ pub enum Interrupt {
} }
/// Exception /// Exception
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Exception { pub enum Exception {
InstructionMisaligned, InstructionMisaligned,
InstructionFault, InstructionFault,

View File

@ -9,6 +9,7 @@ pub struct Misa {
} }
/// Machine XLEN /// Machine XLEN
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum MXL { pub enum MXL {
XLEN32, XLEN32,
XLEN64, XLEN64,

View File

@ -10,6 +10,7 @@ pub struct Mstatus {
} }
/// Additional extension state /// Additional extension state
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum XS { pub enum XS {
/// All off /// All off
AllOff = 0, AllOff = 0,
@ -25,6 +26,7 @@ pub enum XS {
} }
/// Floating-point extension state /// Floating-point extension state
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum FS { pub enum FS {
Off = 0, Off = 0,
Initial = 1, Initial = 1,
@ -33,6 +35,7 @@ pub enum FS {
} }
/// Machine Previous Privilege Mode /// Machine Previous Privilege Mode
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum MPP { pub enum MPP {
Machine = 3, Machine = 3,
Supervisor = 1, Supervisor = 1,
@ -40,6 +43,7 @@ pub enum MPP {
} }
/// Supervisor Previous Privilege Mode /// Supervisor Previous Privilege Mode
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum SPP { pub enum SPP {
Supervisor = 1, Supervisor = 1,
User = 0, User = 0,

View File

@ -7,6 +7,7 @@ pub struct Mtvec {
} }
/// Trap mode /// Trap mode
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum TrapMode { pub enum TrapMode {
Direct = 0, Direct = 0,
Vectored = 1, Vectored = 1,

View File

@ -70,12 +70,14 @@ impl Satp {
} }
#[cfg(riscv32)] #[cfg(riscv32)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Mode { pub enum Mode {
Bare = 0, Bare = 0,
Sv32 = 1, Sv32 = 1,
} }
#[cfg(riscv64)] #[cfg(riscv64)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Mode { pub enum Mode {
Bare = 0, Bare = 0,
Sv39 = 8, Sv39 = 8,

View File

@ -10,14 +10,14 @@ pub struct Scause {
} }
/// Trap Cause /// Trap Cause
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum Trap { pub enum Trap {
Interrupt(Interrupt), Interrupt(Interrupt),
Exception(Exception), Exception(Exception),
} }
/// Interrupt /// Interrupt
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum Interrupt { pub enum Interrupt {
UserSoft, UserSoft,
SupervisorSoft, SupervisorSoft,
@ -29,7 +29,7 @@ pub enum Interrupt {
} }
/// Exception /// Exception
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum Exception { pub enum Exception {
InstructionMisaligned, InstructionMisaligned,
InstructionFault, InstructionFault,

View File

@ -10,14 +10,14 @@ pub struct Sstatus {
} }
/// Supervisor Previous Privilege Mode /// Supervisor Previous Privilege Mode
#[derive(Eq, PartialEq)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum SPP { pub enum SPP {
Supervisor = 1, Supervisor = 1,
User = 0, User = 0,
} }
/// Floating-point unit Status /// Floating-point unit Status
#[derive(Eq, PartialEq)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum FS { pub enum FS {
Off = 0, Off = 0,
Initial = 1, Initial = 1,

View File

@ -7,6 +7,7 @@ pub struct Stvec {
} }
/// Trap mode /// Trap mode
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum TrapMode { pub enum TrapMode {
Direct = 0, Direct = 0,
Vectored = 1, Vectored = 1,