File tree Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -1917,6 +1917,33 @@ def test(self):
19171917 except CouldNotReadRegisters :
19181918 pass
19191919
1920+ class UnavailableCycleTest (ProgramTest ):
1921+ """Test that harts can be debugged after becoming temporarily
1922+ unavailable."""
1923+ def early_applicable (self ):
1924+ return self .target .support_unavailable_control
1925+
1926+ def test (self ):
1927+ self .gdb .b ("main" )
1928+ output = self .gdb .c ()
1929+ assertIn ("Breakpoint" , output )
1930+ assertIn ("main" , output )
1931+
1932+ self .gdb .p ("$pc=loop_forever" )
1933+ self .gdb .c (wait = False )
1934+ self .server .wait_until_running ([self .hart ])
1935+ self .server .command (
1936+ f"riscv dmi_write 0x1f 0x{ (~ (1 << self .hart .id ))& 0x3 :x} " )
1937+ self .gdb .expect (r"\S+ became unavailable." )
1938+
1939+ # Now send a DMI command through OpenOCD to make the hart available
1940+ # again.
1941+
1942+ self .server .command ("riscv dmi_write 0x1f 0x3" )
1943+ self .gdb .expect (r"\S+ became available" )
1944+ self .gdb .interrupt ()
1945+ self .gdb .p ("$pc" )
1946+
19201947class FreeRtosTest (GdbTest ):
19211948 def early_applicable (self ):
19221949 return self .target .freertos_binary
You can’t perform that action at this time.
0 commit comments