1 //
2 // Copyright (c) 2010-2020 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 using Antmicro.Renode.Core.Structure.Registers;
8 
9 namespace Antmicro.Renode.Peripherals.PCI.BAR
10 {
11     public class IOBaseAddressRegister : BaseAddressRegister
12     {
IOBaseAddressRegister(uint requestedSize, BarType barType = BarType.IO)13         public IOBaseAddressRegister(uint requestedSize, BarType barType = BarType.IO) : base(requestedSize)
14         {
15             this.barType = barType;
16         }
17 
18         public override uint Value
19         {
20             get
21             {
22                 return (barType == BarType.IO) ? baseAddress | 1u : baseAddress;
23             }
24             set
25             {
26                 BaseAddress = value;
27             }
28         }
29 
30         protected override uint addressMask => ~0x3u;
31         protected BarType barType;
32     }
33 
34     public enum BarType
35     {
36         Memory = 0,
37         IO = 1,
38     }
39 }
40