--- - branch: MAIN date: Wed Jun 26 12:30:13 UTC 2019 files: - new: '1.75' old: '1.74' path: src/lib/libc/sys/ptrace.2 pathrev: src/lib/libc/sys/ptrace.2@1.75 type: modified - new: '1.124' old: '1.123' path: src/sys/arch/amd64/amd64/netbsd32_machdep.c pathrev: src/sys/arch/amd64/amd64/netbsd32_machdep.c@1.124 type: modified - new: '1.40' old: '1.39' path: src/sys/arch/amd64/amd64/process_machdep.c pathrev: src/sys/arch/amd64/amd64/process_machdep.c@1.40 type: modified - new: '1.24' old: '1.23' path: src/sys/arch/amd64/include/netbsd32_machdep.h pathrev: src/sys/arch/amd64/include/netbsd32_machdep.h@1.24 type: modified - new: '1.16' old: '1.15' path: src/sys/arch/amd64/include/ptrace.h pathrev: src/sys/arch/amd64/include/ptrace.h@1.16 type: modified - new: '1.93' old: '1.92' path: src/sys/arch/i386/i386/process_machdep.c pathrev: src/sys/arch/i386/i386/process_machdep.c@1.93 type: modified - new: '1.23' old: '1.22' path: src/sys/arch/i386/include/ptrace.h pathrev: src/sys/arch/i386/include/ptrace.h@1.23 type: modified - new: '1.17' old: '1.16' path: src/sys/arch/x86/include/cpu_extended_state.h pathrev: src/sys/arch/x86/include/cpu_extended_state.h@1.17 type: modified - new: '1.17' old: '1.16' path: src/sys/arch/x86/include/fpu.h pathrev: src/sys/arch/x86/include/fpu.h@1.17 type: modified - new: '1.54' old: '1.53' path: src/sys/arch/x86/x86/fpu.c pathrev: src/sys/arch/x86/x86/fpu.c@1.54 type: modified - new: '1.129' old: '1.128' path: src/tests/lib/libc/sys/t_ptrace_wait.c pathrev: src/tests/lib/libc/sys/t_ptrace_wait.c@1.129 type: modified - new: '1.16' old: '1.15' path: src/tests/lib/libc/sys/t_ptrace_x86_wait.h pathrev: src/tests/lib/libc/sys/t_ptrace_x86_wait.h@1.16 type: modified id: 20190626T123013Z.b942f2811cc380c23d882e800df4336c549e3cc9 log: | Implement PT_GETXSTATE and PT_SETXSTATE Introduce two new ptrace() requests: PT_GETXSTATE and PT_SETXSTATE, that provide access to the extended (and extensible) set of FPU registers on amd64 and i386. At the moment, this covers AVX (YMM) and AVX-512 (ZMM, opmask) registers. It can be easily extended to cover further register types without breaking backwards compatibility. PT_GETXSTATE issues the XSAVE instruction with all kernel-supported extended components enabled. The data is copied into 'struct xstate' (which -- unlike the XSAVE area itself -- has stable format and offsets). PT_SETXSTATE issues the XRSTOR instruction to restore the register values from user-provided 'struct xstate'. The function replaces only the specific XSAVE components that are listed in 'xs_rfbm' field, making it possible to issue partial updates. Both syscalls take a 'struct iovec' pointer rather than a direct argument. This requires the caller to explicitly specify the buffer size. As a result, existing code will continue to work correctly when the structure is extended (performing partial reads/updates). module: src subject: 'CVS commit: src' unixtime: '1561552213' user: mgorny