Skip to content

Commit 3bdc42b

Browse files
committed
[debug] Add hypervisor support for PrivRw
Signed-off-by: 梁镇 <[email protected]> Change-Id: I635a8f86b407f104ea74f00f4aefa1ce8170cb2d
1 parent e637451 commit 3bdc42b

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

debug/gdbserver.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1649,14 +1649,16 @@ def setup(self):
16491649
# pylint: disable=attribute-defined-outside-init
16501650
self.gdb.load()
16511651

1652-
misa = self.hart.misa
1652+
# It may be affected by reset halt
1653+
misa = self.gdb.p(f"$misa=0x{self.hart.misa:x}")
16531654
self.supported = set()
16541655
if misa & (1<<20):
16551656
self.supported.add(0)
16561657
if misa & (1<<18):
16571658
self.supported.add(1)
16581659
if misa & (1<<7):
1659-
self.supported.add(2)
1660+
self.supported.add(4)
1661+
self.supported.add(5)
16601662
self.supported.add(3)
16611663

16621664
self.disable_pmp()
@@ -1672,14 +1674,17 @@ def setup(self):
16721674
class PrivRw(PrivTest):
16731675
"""Test reading/writing priv."""
16741676
def test(self):
1675-
self.write_nop_program(4)
1676-
for privilege in range(4):
1677+
privilege_limit=len(self.supported)+1
1678+
self.write_nop_program(privilege_limit)
1679+
for privilege in range(privilege_limit):
16771680
self.gdb.p(f"$priv={privilege}")
16781681
self.gdb.stepi()
16791682
actual = self.gdb.p("$priv")
16801683
assertIn(actual, self.supported)
16811684
if privilege in self.supported:
16821685
assertEqual(actual, privilege)
1686+
# Restore to machine mode
1687+
self.gdb.p("$priv=3")
16831688

16841689
class PrivChange(PrivTest):
16851690
"""Test that the core's privilege level actually changes when the debugger

0 commit comments

Comments
 (0)