#define efi_call_runtime(f, ...) efi_system_table()->runtime->f(__VA_ARGS__)
#define efi_is_native() (true)
-#define efi_table_attr(table, attr, instance) \
- instance->attr
+#define efi_table_attr(inst, attr) (inst->attr)
#define efi_call_proto(inst, func, ...) inst->func(inst, ##__VA_ARGS__)
#define efi_call_runtime(f, ...) efi_system_table()->runtime->f(__VA_ARGS__)
#define efi_is_native() (true)
-#define efi_table_attr(table, attr, instance) \
- instance->attr
+#define efi_table_attr(inst, attr) (inst->attr)
#define efi_call_proto(inst, func, ...) inst->func(inst, ##__VA_ARGS__)
* large romsize. The UEFI spec limits the size of option ROMs to 16
* MiB so we reject any ROMs over 16 MiB in size to catch this.
*/
- romimage = efi_table_attr(efi_pci_io_protocol, romimage, pci);
- romsize = efi_table_attr(efi_pci_io_protocol, romsize, pci);
+ romimage = efi_table_attr(pci, romimage);
+ romsize = efi_table_attr(pci, romsize);
if (!romimage || !romsize || romsize > SZ_16M)
return EFI_INVALID_PARAMETER;
if (status != EFI_SUCCESS)
return;
- if (efi_table_attr(apple_properties_protocol, version, p) != 0x10000) {
+ if (efi_table_attr(p, version) != 0x10000) {
efi_printk("Unsupported properties proto version\n");
return;
}
static void setup_quirks(struct boot_params *boot_params)
{
efi_char16_t *fw_vendor = (efi_char16_t *)(unsigned long)
- efi_table_attr(efi_system_table, fw_vendor, sys_table);
+ efi_table_attr(efi_system_table(), fw_vendor);
if (!memcmp(fw_vendor, apple, sizeof(apple))) {
if (IS_ENABLED(CONFIG_APPLE_PROPERTIES))
__builtin_types_compatible_p(u32, __typeof__(attr)), \
(unsigned long)(attr), (attr))
-#define efi_table_attr(table, attr, instance) ({ \
- __typeof__(instance->attr) __ret; \
- if (efi_is_native()) { \
- __ret = instance->attr; \
- } else { \
- __ret = (__typeof__(__ret)) \
- efi_mixed_mode_cast(instance->mixed_mode.attr); \
- } \
- __ret; \
-})
+#define efi_table_attr(inst, attr) \
+ (efi_is_native() \
+ ? inst->attr \
+ : (__typeof__(inst->attr)) \
+ efi_mixed_mode_cast(inst->mixed_mode.attr))
#define efi_call_proto(inst, func, ...) \
(efi_is_native() \
#define efi_call_early(f, ...) \
(efi_is_native() \
? efi_system_table()->boottime->f(__VA_ARGS__) \
- : efi64_thunk(efi_table_attr(efi_boot_services, \
- boottime, efi_system_table())->mixed_mode.f, \
- __VA_ARGS__))
+ : efi64_thunk(efi_table_attr(efi_system_table(), \
+ boottime)->mixed_mode.f, __VA_ARGS__))
#define efi_call_runtime(f, ...) \
(efi_is_native() \
? efi_system_table()->runtime->f(__VA_ARGS__) \
- : efi64_thunk(efi_table_attr(efi_runtime_services, \
- runtime, efi_system_table())->mixed_mode.f, \
- __VA_ARGS__))
+ : efi64_thunk(efi_table_attr(efi_system_table(), \
+ runtime)->mixed_mode.f, __VA_ARGS__))
extern bool efi_reboot_required(void);
extern bool efi_is_table_address(unsigned long phys_addr);
void *get_efi_config_table(efi_guid_t guid)
{
- unsigned long tables = efi_table_attr(efi_system_table, tables,
- efi_system_table());
- int nr_tables = efi_table_attr(efi_system_table, nr_tables,
- efi_system_table());
+ unsigned long tables = efi_table_attr(efi_system_table(), tables);
+ int nr_tables = efi_table_attr(efi_system_table(), nr_tables);
int i;
for (i = 0; i < nr_tables; i++) {
efi_config_table_t *t = (void *)tables;
if (efi_guidcmp(t->guid, guid) == 0)
- return efi_table_attr(efi_config_table, table, t);
+ return efi_table_attr(t, table);
tables += efi_is_native() ? sizeof(efi_config_table_t)
: sizeof(efi_config_table_32_t);
void efi_char16_printk(efi_char16_t *str)
{
- efi_call_proto(efi_table_attr(efi_system_table, con_out,
- efi_system_table()),
+ efi_call_proto(efi_table_attr(efi_system_table(), con_out),
output_string, str);
}
}
}
-#define efi_gop_attr(table, attr, instance) \
- (efi_table_attr(efi_graphics_output_protocol##table, attr, instance))
-
static efi_status_t setup_gop(struct screen_info *si, efi_guid_t *proto,
unsigned long size, void **handles)
{
if (status == EFI_SUCCESS)
conout_found = true;
- mode = (void *)(unsigned long)efi_gop_attr(, mode, gop);
- info = (void *)(unsigned long)efi_gop_attr(_mode, info, mode);
- current_fb_base = efi_gop_attr(_mode, frame_buffer_base, mode);
+ mode = efi_table_attr(gop, mode);
+ info = efi_table_attr(mode, info);
+ current_fb_base = efi_table_attr(mode, frame_buffer_base);
if ((!first_gop || conout_found) &&
info->pixel_format != PIXEL_BLT_ONLY) {