xref: /qemu/tests/tcg/aarch64/gdbstub/test-sve.py (revision 1c8e621f097362d0a28c65fa2f31054b47a5282b)
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