[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/fpu: Create a typedef for the x87/SSE area inside "struct xsave_struct"
commit 4fe446a42910cb6bf53ca3a8b7c2c6a64e2f192c Author: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx> AuthorDate: Thu Aug 1 09:39:11 2024 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Aug 1 09:39:11 2024 +0200 x86/fpu: Create a typedef for the x87/SSE area inside "struct xsave_struct" Making the union non-anonymous would cause a lot of headaches, because a lot of code relies on it being so, but it's possible to make a typedef of the anonymous union so all callsites currently relying on typeof() can stop doing so directly. This commit creates a `fpusse_t` typedef to the anonymous union at the head of the XSAVE area and uses it instead of typeof(). No functional change. Signed-off-by: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/hvm/emulate.c | 5 ++--- xen/arch/x86/i387.c | 8 ++++---- xen/arch/x86/include/asm/xstate.h | 2 ++ xen/arch/x86/xstate.c | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index b6ca5cb9d1..feb4792cc5 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -2363,8 +2363,7 @@ static int cf_check hvmemul_get_fpu( alternative_vcall(hvm_funcs.fpu_dirty_intercept); else if ( type == X86EMUL_FPU_fpu ) { - const typeof(curr->arch.xsave_area->fpu_sse) *fpu_ctxt = - curr->arch.fpu_ctxt; + const fpusse_t *fpu_ctxt = curr->arch.fpu_ctxt; /* * Latch current register state so that we can back out changes @@ -2404,7 +2403,7 @@ static void cf_check hvmemul_put_fpu( if ( aux ) { - typeof(curr->arch.xsave_area->fpu_sse) *fpu_ctxt = curr->arch.fpu_ctxt; + fpusse_t *fpu_ctxt = curr->arch.fpu_ctxt; bool dval = aux->dval; int mode = hvm_guest_x86_mode(curr); diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c index 400c70114a..134e0bece5 100644 --- a/xen/arch/x86/i387.c +++ b/xen/arch/x86/i387.c @@ -39,7 +39,7 @@ static inline void fpu_xrstor(struct vcpu *v, uint64_t mask) /* Restore x87 FPU, MMX, SSE and SSE2 state */ static inline void fpu_fxrstor(struct vcpu *v) { - const typeof(v->arch.xsave_area->fpu_sse) *fpu_ctxt = v->arch.fpu_ctxt; + const fpusse_t *fpu_ctxt = v->arch.fpu_ctxt; /* * Some CPUs don't save/restore FDP/FIP/FOP unless an exception @@ -151,7 +151,7 @@ static inline void fpu_xsave(struct vcpu *v) /* Save x87 FPU, MMX, SSE and SSE2 state */ static inline void fpu_fxsave(struct vcpu *v) { - typeof(v->arch.xsave_area->fpu_sse) *fpu_ctxt = v->arch.fpu_ctxt; + fpusse_t *fpu_ctxt = v->arch.fpu_ctxt; unsigned int fip_width = v->domain->arch.x87_fip_width; if ( fip_width != 4 ) @@ -315,7 +315,7 @@ int vcpu_init_fpu(struct vcpu *v) __alignof(v->arch.xsave_area->fpu_sse)); if ( v->arch.fpu_ctxt ) { - typeof(v->arch.xsave_area->fpu_sse) *fpu_sse = v->arch.fpu_ctxt; + fpusse_t *fpu_sse = v->arch.fpu_ctxt; fpu_sse->fcw = FCW_DEFAULT; fpu_sse->mxcsr = MXCSR_DEFAULT; @@ -336,7 +336,7 @@ void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area, * accesses through both pointers alias one another, and the shorter form * is used here. */ - typeof(xsave_area->fpu_sse) *fpu_sse = v->arch.fpu_ctxt; + fpusse_t *fpu_sse = v->arch.fpu_ctxt; ASSERT(!xsave_area || xsave_area == v->arch.xsave_area); diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h index f0eeb13b87..ebeb2a3dca 100644 --- a/xen/arch/x86/include/asm/xstate.h +++ b/xen/arch/x86/include/asm/xstate.h @@ -82,6 +82,8 @@ struct __attribute__((aligned (64))) xsave_struct char data[]; /* Variable layout states */ }; +typedef typeof(((struct xsave_struct){}).fpu_sse) fpusse_t; + struct xstate_bndcsr { uint64_t bndcfgu; uint64_t bndstatus; diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c index 68cdd8fcf0..5c4144d55e 100644 --- a/xen/arch/x86/xstate.c +++ b/xen/arch/x86/xstate.c @@ -846,7 +846,7 @@ void xstate_init(struct cpuinfo_x86 *c) if ( bsp ) { - static typeof(current->arch.xsave_area->fpu_sse) __initdata ctxt; + static fpusse_t __initdata ctxt; asm ( "fxsave %0" : "=m" (ctxt) ); if ( ctxt.mxcsr_mask ) -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |