target-i386/cpu.c:ext_save_area uses magic numbers for the xsave area offets and sizes, and target-i386/kvm.c:kvm_{put,get}_xsave() uses offset macros and bit manipulation to access the xsave area. This series changes both to use C structs for those operations. I still need to figure out a way to write unit tests for the new code. Maybe I will just copy and paste the new and old functions, and test them locally (checking if they give the same results when translating blobs of random bytes). Changes v1 -> v2: * Use uint8_t[8*n] instead of uint64_t[n] for register data * Keep the QEMU_BUILD_BUG_ON lines Changes v2 -> v3: * XMM_Q helper is now ZMM_Q * Added PKRU state Eduardo Habkost (3): target-i386: Define structs for layout of xsave area target-i386: Use xsave structs for ext_save_area target-i386: kvm: Use X86XSaveArea struct for xsave save/load target-i386/cpu.c | 21 ++++++++---- target-i386/cpu.h | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++ target-i386/kvm.c | 101 +++++++++++++++++++++++++++++++++--------------------- 3 files changed, 170 insertions(+), 47 deletions(-) -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html