1cf58773fSAlex Bennéefrom __future__ import print_function 2cf58773fSAlex Bennée# 3673d8215SMichael Tokarev# Test the SVE registers are visible and changeable via gdbstub 4cf58773fSAlex Bennée# 5cf58773fSAlex Bennée# This is launched via tests/guest-debug/run-test.py 6cf58773fSAlex Bennée# 7cf58773fSAlex Bennée 8cf58773fSAlex Bennéeimport gdb 9*4d48c1bcSIlya Leoshkevichfrom test_gdbstub import main, report 10cf58773fSAlex Bennée 11cf58773fSAlex BennéeMAGIC = 0xDEADBEEF 12cf58773fSAlex Bennée 13cf58773fSAlex Bennée 14cf58773fSAlex Bennéedef run_test(): 15cf58773fSAlex Bennée "Run through the tests one by one" 16cf58773fSAlex Bennée 17cf58773fSAlex Bennée gdb.execute("info registers") 18cf58773fSAlex Bennée report(True, "info registers") 19cf58773fSAlex Bennée 20cf58773fSAlex Bennée gdb.execute("info registers vector") 21cf58773fSAlex Bennée report(True, "info registers vector") 22cf58773fSAlex Bennée 23cf58773fSAlex Bennée # Now all the zregs 24cf58773fSAlex Bennée frame = gdb.selected_frame() 25cf58773fSAlex Bennée for i in range(0, 32): 26cf58773fSAlex Bennée rname = "z%d" % (i) 27cf58773fSAlex Bennée zreg = frame.read_register(rname) 28cf58773fSAlex Bennée report(True, "Reading %s" % rname) 29cf58773fSAlex Bennée for j in range(0, 4): 30cf58773fSAlex Bennée cmd = "set $%s.q.u[%d] = 0x%x" % (rname, j, MAGIC) 31cf58773fSAlex Bennée gdb.execute(cmd) 32cf58773fSAlex Bennée report(True, "%s" % cmd) 33cf58773fSAlex Bennée for j in range(0, 4): 34cf58773fSAlex Bennée reg = "$%s.q.u[%d]" % (rname, j) 35cf58773fSAlex Bennée v = gdb.parse_and_eval(reg) 36cf58773fSAlex Bennée report(str(v.type) == "uint128_t", "size of %s" % (reg)) 37cf58773fSAlex Bennée for j in range(0, 8): 38cf58773fSAlex Bennée cmd = "set $%s.d.u[%d] = 0x%x" % (rname, j, MAGIC) 39cf58773fSAlex Bennée gdb.execute(cmd) 40cf58773fSAlex Bennée report(True, "%s" % cmd) 41cf58773fSAlex Bennée for j in range(0, 8): 42cf58773fSAlex Bennée reg = "$%s.d.u[%d]" % (rname, j) 43cf58773fSAlex Bennée v = gdb.parse_and_eval(reg) 44cf58773fSAlex Bennée report(str(v.type) == "uint64_t", "size of %s" % (reg)) 45cf58773fSAlex Bennée report(int(v) == MAGIC, "%s is 0x%x" % (reg, MAGIC)) 46cf58773fSAlex Bennée 47cf58773fSAlex Bennée 48*4d48c1bcSIlya Leoshkevichmain(run_test, expected_arch="aarch64") 49