/* * Set all bits in a predicate register, force a save/restore via a * SIGILL (which handle_sigill() will recover from), then report * whether the value has changed.
*/ asmvolatile( " .arch_extension sve\n" " ptrue p0.B\n" " cntp %[before], p0, p0.B\n" " udf #0\n" " cntp %[after], p0, p0.B\n"
: [before] "=r" (before),
[after] "=r" (after)
:
: "p0"
);
switch (get_ucall(vcpu, &uc)) { case UCALL_NONE:
do_sve_roundtrip();
do_sve_roundtrip(); break; case UCALL_DONE:
guest_done = true; break; case UCALL_ABORT:
REPORT_GUEST_ASSERT(uc); break; default:
TEST_FAIL("Unexpected guest exit");
}
}
kvm_vm_free(vm);
}
int main(void)
{ /* * This is testing the host environment, we don't care about * guest SVE support.
*/ if (!(getauxval(AT_HWCAP) & HWCAP_SVE)) {
printf("SVE not supported\n"); return KSFT_SKIP;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.