• Mark Brown's avatar
    arm64/sme: Implement ptrace support for streaming mode SVE registers · e12310a0
    Mark Brown authored
    The streaming mode SVE registers are represented using the same data
    structures as for SVE but since the vector lengths supported and in use
    may not be the same as SVE we represent them with a new type NT_ARM_SSVE.
    Unfortunately we only have a single 16 bit reserved field available in
    the header so there is no space to fit the current and maximum vector
    length for both standard and streaming SVE mode without redefining the
    structure in a way the creates a complicatd and fragile ABI. Since FFR
    is not present in streaming mode it is read and written as zero.
    
    Setting NT_ARM_SSVE registers will put the task into streaming mode,
    similarly setting NT_ARM_SVE registers will exit it. Reads that do not
    correspond to the current mode of the task will return the header with
    no register data. For compatibility reasons on write setting no flag for
    the register type will be interpreted as setting SVE registers, though
    users can provide no register data as an alternative mechanism for doing
    so.
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Link: https://lore.kernel.org/r/20220419112247.711548-21-broonie@kernel.orgSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    e12310a0
ptrace.c 49.3 KB