* Alex Thorlton <athorl...@sgi.com> wrote:

> +#define efi_call_virt(f, args...)                                    \
> +({                                                                   \
> +     efi_status_t __s;                                               \
> +     unsigned long flags;                                            \
> +     arch_efi_call_virt_setup();                                     \
> +     local_save_flags(flags);                                        \
> +     __s = arch_efi_call_virt(f, args);                              \
> +     efi_call_virt_check_flags(flags, __stringify(f));               \
> +     arch_efi_call_virt_teardown();                                  \
> +     __s;                                                            \
> +})
> +
> +#define __efi_call_virt(f, args...)                                  \
> +({                                                                   \
> +     unsigned long flags;                                            \
> +     arch_efi_call_virt_setup();                                     \
> +     local_save_flags(flags);                                        \
> +     arch_efi_call_virt(f, args);                                    \
> +     efi_call_virt_check_flags(flags, __stringify(f));               \
> +     arch_efi_call_virt_teardown();                                  \
> +})
> +
> +#define uv_call_virt(f, args...)                                     \
> +({                                                                   \
> +     efi_status_t __s;                                               \
> +     unsigned long flags;                                            \
> +     arch_efi_call_virt_setup();                                     \
> +     local_save_flags(flags);                                        \
> +     __s = uv_efi_call_virt(f, args);                                \
> +     efi_call_virt_check_flags(flags, __stringify(f));               \
> +     arch_efi_call_virt_teardown();                                  \
> +     __s;                                                            \
> +})

Btw., a very (very!) small stylistic nit that caught my eyes, and I realize 
that 
you just moved code, but could you please improve these macros a bit and make 
it 
look like regular kernel code? I.e. something like:

#define efi_call_virt(f, args...)                                       \
({                                                                      \
        efi_status_t __s;                                               \
        unsigned long flags;                                            \
                                                                        \
        arch_efi_call_virt_setup();                                     \
                                                                        \
        local_save_flags(flags);                                        \
        __s = arch_efi_call_virt(f, args);                              \
        efi_call_virt_check_flags(flags, __stringify(f));               \
        arch_efi_call_virt_teardown();                                  \
                                                                        \
        __s;                                                            \
})

This delineates the various blocks of code: variables, setup, the 
saving/calling 
block plus the return code.

(Assuming the EFI folks like the whole approach.)

Thanks,

        Ingo

Reply via email to