• Maciej W. Rozycki's avatar
    MIPS: Add DSP ASE regset support · 44109c60
    Maciej W. Rozycki authored
    Define an NT_MIPS_DSP core file note type and implement a corresponding
    regset holding the DSP ASE register context, following the layout of the
    `mips_dsp_state' structure, except for the DSPControl register stored as
    a 64-bit rather than 32-bit quantity in a 64-bit note.
    
    The lack of DSP ASE register saving to core files can be considered a
    design flaw with commit e50c0a8f ("Support the MIPS32 / MIPS64 DSP
    ASE."), leading to an incomplete state being saved.  Consequently no DSP
    ASE regset has been created with commit 7aeb753b ("MIPS: Implement
    task_user_regset_view."), when regset support was added to the MIPS
    port.
    
    Additionally there is no way for ptrace(2) to correctly access the DSP
    accumulator registers in n32 processes with the existing interfaces.
    This is due to 32-bit truncation of data passed with PTRACE_PEEKUSR and
    PTRACE_POKEUSR requests, which cannot be avoided owing to how the data
    types for ptrace(3) have been defined.  This new NT_MIPS_DSP regset
    fills the missing interface gap.
    
    [paul.burton@mips.com:
      - Change NT_MIPS_DSP to 0x800 to avoid conflict with NT_VMCOREDD
        introduced by commit 2724273e ("vmcore: add API to collect
        hardware dump in second kernel").
      - Drop stable tag. Whilst I agree the lack of this functionality can
        be considered a flaw in earlier DSP ASE support, it's still new
        functionality which doesn't meet up to the requirements set out in
        Documentation/process/stable-kernel-rules.rst.]
    Signed-off-by: default avatarMaciej W. Rozycki <macro@mips.com>
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    References: 7aeb753b ("MIPS: Implement task_user_regset_view.")
    Patchwork: https://patchwork.linux-mips.org/patch/19330/
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    44109c60
ptrace.c 30.3 KB