Lines Matching +full:big +full:- +full:endian +full:- +full:regs
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2015-2021 ARM Limited.
68 #define VL_TESTS (((TEST_VQ_MAX - SVE_VQ_MIN) + 1) * 4)
84 if (ptrace(PTRACE_TRACEME, -1, NULL, NULL)) in do_child()
135 if (ptrace(PTRACE_GETREGSET, pid, type->regset, &iov)) in get_sve()
139 if (sve->size <= sz) in get_sve()
142 sz = sve->size; in get_sve()
157 iov.iov_len = sve->size; in set_sve()
158 return ptrace(PTRACE_SETREGSET, pid, type->regset, &iov); in set_sve()
177 type->name); in ptrace_set_get_inherit()
187 type->name); in ptrace_set_get_inherit()
191 ksft_test_result(new_sve->flags & SVE_PT_VL_INHERIT, in ptrace_set_get_inherit()
192 "%s SVE_PT_VL_INHERIT set\n", type->name); in ptrace_set_get_inherit()
199 type->name); in ptrace_set_get_inherit()
205 type->name); in ptrace_set_get_inherit()
209 ksft_test_result(!(new_sve->flags & SVE_PT_VL_INHERIT), in ptrace_set_get_inherit()
210 "%s SVE_PT_VL_INHERIT cleared\n", type->name); in ptrace_set_get_inherit()
227 prctl_vl = prctl(type->prctl_set, vl); in ptrace_set_get_vl()
228 if (prctl_vl == -1) in ptrace_set_get_vl()
230 type->name, strerror(errno), errno); in ptrace_set_get_vl()
243 type->name, vl); in ptrace_set_get_vl()
253 type->name, vl); in ptrace_set_get_vl()
257 ksft_test_result(new_sve->vl == prctl_vl, "Set %s VL %u\n", in ptrace_set_get_vl()
258 type->name, vl); in ptrace_set_get_vl()
291 sve->flags = SVE_PT_REGS_FPSIMD; in ptrace_sve_fpsimd()
292 sve->size = SVE_PT_SIZE(0, SVE_PT_REGS_FPSIMD); in ptrace_sve_fpsimd()
293 sve->vl = 16; /* We don't care what the VL is */ in ptrace_sve_fpsimd()
299 p = (unsigned char *)&fpsimd->vregs[i]; in ptrace_sve_fpsimd()
301 for (j = 0; j < sizeof(fpsimd->vregs[i]); ++j) in ptrace_sve_fpsimd()
307 ksft_test_result((type->regset == NT_ARM_SVE) == (ret == 0), in ptrace_sve_fpsimd()
309 type->name, ret); in ptrace_sve_fpsimd()
321 type->name); in ptrace_sve_fpsimd()
324 type->name); in ptrace_sve_fpsimd()
349 data_size, type->name, vl); in ptrace_set_sve_get_sve_data()
356 write_sve->size = data_size; in ptrace_set_sve_get_sve_data()
357 write_sve->vl = vl; in ptrace_set_sve_get_sve_data()
358 write_sve->flags = SVE_PT_REGS_SVE; in ptrace_set_sve_get_sve_data()
376 type->name, vl); in ptrace_set_sve_get_sve_data()
383 type->name, vl); in ptrace_set_sve_get_sve_data()
389 if (read_sve->size < write_sve->size) { in ptrace_set_sve_get_sve_data()
391 type->name, write_sve->size, in ptrace_set_sve_get_sve_data()
392 read_sve->size); in ptrace_set_sve_get_sve_data()
420 type->name, vl); in ptrace_set_sve_get_sve_data()
442 ksft_test_result_skip("Big endian not supported\n"); in ptrace_set_sve_get_fpsimd_data()
450 data_size, type->name, vl); in ptrace_set_sve_get_fpsimd_data()
457 write_sve->size = data_size; in ptrace_set_sve_get_fpsimd_data()
458 write_sve->vl = vl; in ptrace_set_sve_get_fpsimd_data()
459 write_sve->flags = SVE_PT_REGS_SVE; in ptrace_set_sve_get_fpsimd_data()
471 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
478 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
486 * Z regs are stored endianness invariant, this won't in ptrace_set_sve_get_fpsimd_data()
487 * work for big endian in ptrace_set_sve_get_fpsimd_data()
494 type->name, vl, i); in ptrace_set_sve_get_fpsimd_data()
505 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
527 ksft_test_result_skip("Big endian not supported\n"); in ptrace_set_fpsimd_get_sve_data()
547 type->name, vl); in ptrace_set_fpsimd_get_sve_data()
552 if (read_sve->vl != vl) { in ptrace_set_fpsimd_get_sve_data()
554 read_sve->vl, vl); in ptrace_set_fpsimd_get_sve_data()
559 switch (read_sve->flags & SVE_PT_REGS_MASK) { in ptrace_set_fpsimd_get_sve_data()
588 * Z regs are stored endianness invariant, this won't in ptrace_set_fpsimd_get_sve_data()
589 * work for big endian in ptrace_set_fpsimd_get_sve_data()
596 type->name, vl, i, i); in ptrace_set_fpsimd_get_sve_data()
607 ksft_print_msg("Unexpected regs type %d\n", in ptrace_set_fpsimd_get_sve_data()
608 read_sve->flags & SVE_PT_REGS_MASK); in ptrace_set_fpsimd_get_sve_data()
614 type->name, vl); in ptrace_set_fpsimd_get_sve_data()
636 if (pid == -1) { in do_parent()
661 sig = 0; /* bust group-stop */ in do_parent()