1 //
2 // Copyright (c) 2010-2022 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 
8 using System;
9 using Antmicro.Renode.Peripherals.Miscellaneous;
10 
11 namespace Antmicro.Renode.Peripherals.CPU
12 {
13     public interface ICPUWithExternalMmu: ICPU
14     {
EnableExternalWindowMmu(bool value)15         void EnableExternalWindowMmu(bool value);
AcquireExternalMmuWindow(uint type)16         int AcquireExternalMmuWindow(uint type);
ResetMmuWindow(uint index)17         void ResetMmuWindow(uint index);
SetMmuWindowStart(uint index, ulong startAddress)18         void SetMmuWindowStart(uint index, ulong startAddress);
SetMmuWindowEnd(uint index, ulong endAddress)19         void SetMmuWindowEnd(uint index, ulong endAddress);
SetMmuWindowAddend(uint index, ulong addend)20         void SetMmuWindowAddend(uint index, ulong addend);
SetMmuWindowPrivileges(uint index, uint privileges)21         void SetMmuWindowPrivileges(uint index, uint privileges);
AddHookOnMmuFault(Action<ulong, AccessType, int> hook)22         void AddHookOnMmuFault(Action<ulong, AccessType, int> hook);
23 
GetMmuWindowStart(uint index)24         ulong GetMmuWindowStart(uint index);
GetMmuWindowEnd(uint index)25         ulong GetMmuWindowEnd(uint index);
GetMmuWindowAddend(uint index)26         ulong GetMmuWindowAddend(uint index);
GetMmuWindowPrivileges(uint index)27         uint GetMmuWindowPrivileges(uint index);
28 
29         uint ExternalMmuWindowsCount { get; }
30     }
31 
32     public enum AccessType
33     {
34         Read = 0,
35         Write = 1,
36         Execute = 2,
37     }
38 }
39