1 //
2 // Copyright (c) 2010-2023 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 using System;
8 using Antmicro.Renode.Utilities;
9 
10 namespace Antmicro.Renode.Peripherals.CPU
11 {
12     public struct SimpleCSR : IEquatable<SimpleCSR>
13     {
SimpleCSRAntmicro.Renode.Peripherals.CPU.SimpleCSR14         public SimpleCSR(string name, uint number, PrivilegeLevel mode)
15         {
16             Name = name;
17             Number = number;
18             Mode = mode;
19         }
20 
EqualsAntmicro.Renode.Peripherals.CPU.SimpleCSR21         public override bool Equals(object obj)
22         {
23             if(obj is SimpleCSR csr)
24             {
25                 return Equals(csr);
26             }
27             return false;
28         }
29 
EqualsAntmicro.Renode.Peripherals.CPU.SimpleCSR30         public bool Equals(SimpleCSR csr)
31         {
32             return Name == csr.Name && Number == csr.Number && Mode == csr.Mode;
33         }
34 
GetHashCodeAntmicro.Renode.Peripherals.CPU.SimpleCSR35         public override int GetHashCode()
36         {
37             return (int)Mode ^ ((int)Number << 3) ^ Name.GetHashCode();
38         }
39 
40         public uint Number { get; }
41         public PrivilegeLevel Mode { get; }
42         public string Name { get; }
43     }
44 }