[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86emul: correct DECLARE_ALIGNED()



On 16/03/17 13:05, Jan Beulich wrote:
> Stop creating an excessively large array on the stack, by properly
> taking into account the array element size when establishing its
> element count (and of course also when calculating the pointer to
> be actually used to access the memory).

What in practice does this do?  It looks like it reduces the size of the
array by 4 or 8 times?

~Andrew

>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
> @@ -553,10 +553,10 @@ typedef union {
>   * the compiler for automatic variables. Use this helper to instantiate a
>   * suitably aligned variable, producing a pointer to access it.
>   */
> -#define DECLARE_ALIGNED(type, var)                                   \
> -    long __##var[sizeof(type) + __alignof(type) - __alignof(long)];  \
> -    type *const var##p =                                             \
> -        (void *)((long)(__##var + __alignof(type) - __alignof(long)) \
> +#define DECLARE_ALIGNED(type, var)                                        \
> +    long __##var[(sizeof(type) + __alignof(type)) / __alignof(long) - 1]; \
> +    type *const var##p =                                                  \
> +        (void *)(((long)__##var + __alignof(type) - __alignof(__##var))   \
>                   & -__alignof(type))
>  
>  #ifdef __GCC_ASM_FLAG_OUTPUTS__
>
>
>


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.