--- - branch: MAIN date: Sat Oct 24 07:14:30 UTC 2020 files: - new: '1.42' old: '1.41' path: src/sys/arch/x86/include/cpufunc.h pathrev: src/sys/arch/x86/include/cpufunc.h@1.42 type: modified - new: '1.23' old: '1.22' path: src/sys/arch/x86/include/fpu.h pathrev: src/sys/arch/x86/include/fpu.h@1.23 type: modified - new: '1.76' old: '1.75' path: src/sys/arch/x86/x86/fpu.c pathrev: src/sys/arch/x86/x86/fpu.c@1.76 type: modified - new: '1.82' old: '1.81' path: src/sys/dev/nvmm/x86/nvmm_x86_svm.c pathrev: src/sys/dev/nvmm/x86/nvmm_x86_svm.c@1.82 type: modified - new: '1.81' old: '1.80' path: src/sys/dev/nvmm/x86/nvmm_x86_vmx.c pathrev: src/sys/dev/nvmm/x86/nvmm_x86_vmx.c@1.81 type: modified - new: '1.30' old: '1.29' path: src/tests/lib/libc/sys/t_ptrace_x86_wait.h pathrev: src/tests/lib/libc/sys/t_ptrace_x86_wait.h@1.30 type: modified id: 20201024T071430Z.b41257964584dcc9e129d9852bd067483b9e886d log: | Issue 64-bit versions of *XSAVE* for 64-bit amd64 programs When calling FXSAVE, XSAVE, FXRSTOR, ... for 64-bit programs on amd64 use the 64-suffixed variant in order to include the complete FIP/FDP registers in the x87 area. The difference between the two variants is that the FXSAVE64 (new) variant represents FIP/FDP as 64-bit fields (union fp_addr.fa_64), while the legacy FXSAVE variant uses split fields: 32-bit offset, 16-bit segment and 16-bit reserved field (union fp_addr.fa_32). The latter implies that the actual addresses are truncated to 32 bits which is insufficient in modern programs. The change is applied only to 64-bit programs on amd64. Plain i386 and compat32 continue using plain FXSAVE. Similarly, NVMM is not changed as I am not familiar with that code. This is a potentially breaking change. However, I don't think it likely to actually break anything because the data provided by the old variant were not meaningful (because of the truncated pointer). module: src subject: 'CVS commit: src' unixtime: '1603523670' user: mgorny