1<#
2//
3// Copyright (c) 2010-2021 Antmicro
4//
5// This file is licensed under the MIT License.
6// Full license text is available in 'licenses/MIT.txt'.
7//
8#>
9<#@ template language="C#" #>
10<#@ include file="../Common/RegisterTemplateDefinitions.tt" #>
11<#
12    CLASS_NAME = "RiscV64";
13    HEADER_FILE = "Emulator/Cores/tlib/arch/riscv/cpu_registers.h";
14    FALLBACK_SET_REGISTER = "TrySetNonMappedRegister";
15    FALLBACK_GET_REGISTER = "TryGetNonMappedRegister";
16    FALLBACK_REGISTERS = "GetNonMappedRegisters";
17
18    DEFINES.Add("TARGET_RISCV64");
19
20    BEFORE_WRITE_HOOKS.Add("PC", "BeforePCWrite");
21    BEFORE_WRITE_HOOKS.Add("MTVEC", "BeforeMTVECWrite");
22    BEFORE_WRITE_HOOKS.Add("STVEC", "BeforeSTVECWrite");
23    BEFORE_WRITE_HOOKS.Add("VSTART", "BeforeVectorExtensionRegisterWrite");
24    BEFORE_WRITE_HOOKS.Add("VXSAT", "BeforeVectorExtensionRegisterWrite");
25    BEFORE_WRITE_HOOKS.Add("VXRM", "BeforeVectorExtensionRegisterWrite");
26    BEFORE_WRITE_HOOKS.Add("VCSR", "BeforeVectorExtensionRegisterWrite");
27    BEFORE_WRITE_HOOKS.Add("VL", "BeforeVectorExtensionRegisterWrite");
28    BEFORE_WRITE_HOOKS.Add("VTYPE", "BeforeVectorExtensionRegisterWrite");
29    BEFORE_WRITE_HOOKS.Add("VLENB", "BeforeVectorExtensionRegisterWrite");
30    BEFORE_READ_HOOKS.Add("VSTART", "BeforeVectorExtensionRegisterRead");
31    BEFORE_READ_HOOKS.Add("VXSAT", "BeforeVectorExtensionRegisterRead");
32    BEFORE_READ_HOOKS.Add("VXRM", "BeforeVectorExtensionRegisterRead");
33    BEFORE_READ_HOOKS.Add("VCSR", "BeforeVectorExtensionRegisterRead");
34    BEFORE_READ_HOOKS.Add("VL", "BeforeVectorExtensionRegisterRead");
35    BEFORE_READ_HOOKS.Add("VTYPE", "BeforeVectorExtensionRegisterRead");
36    BEFORE_READ_HOOKS.Add("VLENB", "BeforeVectorExtensionRegisterRead");
37
38    GENERAL_REGISTERS.AddRange(new[] { "X0", "X1", "X2", "X3", "X4", "X5" , "X6" , "X7" , "X8" , "X9",
39                                       "X10", "X11", "X12", "X13", "X14", "X15", "X16", "X17", "X18", "X19",
40                                       "X20", "X21", "X22", "X23", "X24", "X25", "X26", "X27", "X28", "X29",
41                                       "X30", "X31", "PC" });
42
43    UNSETTABLE_REGISTERS.AddRange(new[] {"X0", "VLENB"});
44
45#>
46<#@ include file="../Common/RegisterTemplate.tt" #>
47