@@ -31,6 +31,8 @@ const int PerfRegisterInfo::s_numRegisters[PerfRegisterInfo::ARCH_INVALID][PerfR
3131 { 0 , 0 },
3232 { 0 , 0 },
3333 { 9 , 17 },
34+ { 0 , 0 },
35+ {32 , 32 },
3436};
3537
3638const int PerfRegisterInfo::s_wordWidth[PerfRegisterInfo::ARCH_INVALID][PerfRegisterInfo::s_numAbis] = {
@@ -41,6 +43,8 @@ const int PerfRegisterInfo::s_wordWidth[PerfRegisterInfo::ARCH_INVALID][PerfRegi
4143 {0 , 0 },
4244 {0 , 0 },
4345 {4 , 8 },
46+ {0 , 0 },
47+ {4 , 8 },
4448};
4549
4650// Perf and Dwarf register layouts are the same for ARM and ARM64
@@ -59,6 +63,9 @@ static int x86_64[] = {0, 3, 2, 1, 4, 5, 6, 7, 16, 17, 18, 19, 20, 21, 22, 23, 8
5963static int mips[] = { 32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 ,
6064 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 28 , 29 , 30 , 31 };
6165
66+ static int riscv[] = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 ,
67+ 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 };
68+
6269static int none[] = {0 };
6370
6471const int *PerfRegisterInfo::s_perfToDwarf[PerfRegisterInfo::ARCH_INVALID][PerfRegisterInfo::s_numAbis] = {
@@ -70,14 +77,15 @@ const int *PerfRegisterInfo::s_perfToDwarf[PerfRegisterInfo::ARCH_INVALID][PerfR
7077 {none, none },
7178 {x86, x86_64 },
7279 {mips, mips },
80+ {riscv, riscv },
7381};
7482
7583const int PerfRegisterInfo::s_perfIp[ARCH_INVALID] = {
76- 15 , 32 , 0xffff , 0xffff , 0xffff , 0xffff , 8
84+ 15 , 32 , 0xffff , 0xffff , 0xffff , 0xffff , 8 , 0xffff , 0
7785};
7886
7987const int PerfRegisterInfo::s_perfSp[ARCH_INVALID] = {
80- 13 , 31 , 0xffff , 0xffff , 0xffff , 0xffff , 7
88+ 13 , 31 , 0xffff , 0xffff , 0xffff , 0xffff , 7 , 0xffff , 2
8189};
8290
8391const int PerfRegisterInfo::s_dwarfLr[ARCH_INVALID][s_numAbis] = {
@@ -87,7 +95,9 @@ const int PerfRegisterInfo::s_dwarfLr[ARCH_INVALID][s_numAbis] = {
8795 {0xffff , 0xffff },
8896 {0xffff , 0xffff },
8997 {0xffff , 0xffff },
90- {0xffff , 0xffff }
98+ {0xffff , 0xffff },
99+ {0xffff , 0xffff },
100+ {1 , 1 }
91101};
92102
93103const int PerfRegisterInfo::s_dwarfIp[ARCH_INVALID][s_numAbis] = {
@@ -97,7 +107,9 @@ const int PerfRegisterInfo::s_dwarfIp[ARCH_INVALID][s_numAbis] = {
97107 {0xffff , 0xffff },
98108 {0xffff , 0xffff },
99109 {0xffff , 0xffff },
100- {8 , 16 }
110+ {8 , 16 },
111+ {0xffff , 0xffff },
112+ {0 , 0 }
101113};
102114
103115const int PerfRegisterInfo::s_dummyRegisters[ARCH_INVALID][2 ] = {
@@ -158,5 +170,8 @@ PerfRegisterInfo::Architecture PerfRegisterInfo::archByName(const QByteArray &na
158170 if (name.startsWith (" mips" ))
159171 return ARCH_MIPS;
160172
173+ if (name.startsWith (" risc" ))
174+ return ARCH_RISCV;
175+
161176 return ARCH_INVALID;
162177}
0 commit comments