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 }