Skip to content

Commit ac2ac67

Browse files
committed
Derive useful traits for enums
1 parent 5a1ab83 commit ac2ac67

File tree

9 files changed

+18
-8
lines changed

9 files changed

+18
-8
lines changed

src/register/fcsr.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ impl Flags {
6464
}
6565

6666
/// Rounding Mode
67+
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
6768
pub enum RoundingMode {
6869
RoundToNearestEven = 0b000,
6970
RoundTowardsZero = 0b001,

src/register/mcause.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ pub struct Mcause {
77
}
88

99
/// Trap Cause
10-
#[derive(Copy, Clone, Debug)]
10+
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
1111
pub enum Trap {
1212
Interrupt(Interrupt),
1313
Exception(Exception),
1414
}
1515

1616
/// Interrupt
17-
#[derive(Copy, Clone, Debug)]
17+
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
1818
pub enum Interrupt {
1919
UserSoft,
2020
SupervisorSoft,
@@ -29,7 +29,7 @@ pub enum Interrupt {
2929
}
3030

3131
/// Exception
32-
#[derive(Copy, Clone, Debug)]
32+
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
3333
pub enum Exception {
3434
InstructionMisaligned,
3535
InstructionFault,

src/register/misa.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ pub struct Misa {
99
}
1010

1111
/// Machine XLEN
12+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
1213
pub enum MXL {
1314
XLEN32,
1415
XLEN64,

src/register/mstatus.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pub struct Mstatus {
1010
}
1111

1212
/// Additional extension state
13+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
1314
pub enum XS {
1415
/// All off
1516
AllOff = 0,
@@ -25,6 +26,7 @@ pub enum XS {
2526
}
2627

2728
/// Floating-point extension state
29+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
2830
pub enum FS {
2931
Off = 0,
3032
Initial = 1,
@@ -33,13 +35,15 @@ pub enum FS {
3335
}
3436

3537
/// Machine Previous Privilege Mode
38+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
3639
pub enum MPP {
3740
Machine = 3,
3841
Supervisor = 1,
3942
User = 0,
4043
}
4144

4245
/// Supervisor Previous Privilege Mode
46+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
4347
pub enum SPP {
4448
Supervisor = 1,
4549
User = 0,

src/register/mtvec.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ pub struct Mtvec {
77
}
88

99
/// Trap mode
10+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
1011
pub enum TrapMode {
1112
Direct = 0,
1213
Vectored = 1,

src/register/satp.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,14 @@ impl Satp {
7070
}
7171

7272
#[cfg(riscv32)]
73+
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
7374
pub enum Mode {
7475
Bare = 0,
7576
Sv32 = 1,
7677
}
7778

7879
#[cfg(riscv64)]
80+
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
7981
pub enum Mode {
8082
Bare = 0,
8183
Sv39 = 8,

src/register/scause.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ pub struct Scause {
1010
}
1111

1212
/// Trap Cause
13-
#[derive(Copy, Clone, Debug)]
13+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
1414
pub enum Trap {
1515
Interrupt(Interrupt),
1616
Exception(Exception),
1717
}
1818

1919
/// Interrupt
20-
#[derive(Copy, Clone, Debug)]
20+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
2121
pub enum Interrupt {
2222
UserSoft,
2323
SupervisorSoft,
@@ -29,7 +29,7 @@ pub enum Interrupt {
2929
}
3030

3131
/// Exception
32-
#[derive(Copy, Clone, Debug)]
32+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
3333
pub enum Exception {
3434
InstructionMisaligned,
3535
InstructionFault,

src/register/sstatus.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ pub struct Sstatus {
1010
}
1111

1212
/// Supervisor Previous Privilege Mode
13-
#[derive(Eq, PartialEq)]
13+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
1414
pub enum SPP {
1515
Supervisor = 1,
1616
User = 0,
1717
}
1818

1919
/// Floating-point unit Status
20-
#[derive(Eq, PartialEq)]
20+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
2121
pub enum FS {
2222
Off = 0,
2323
Initial = 1,

src/register/stvec.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ pub struct Stvec {
77
}
88

99
/// Trap mode
10+
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
1011
pub enum TrapMode {
1112
Direct = 0,
1213
Vectored = 1,

0 commit comments

Comments
 (0)