mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
efi_loader: Add an EFI_CALL() macro
Rather than open-coding EFI_EXIT() + callback + EFI_ENTRY(), introduce an EFI_CALL() macro. This makes callbacks into UEFI world (of which there will be more in the future) more concise and easier to locate in the code. Signed-off-by: Rob Clark <robdclark@gmail.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
3f1aa97577
commit
a095aadffa
2 changed files with 18 additions and 3 deletions
|
@ -15,17 +15,34 @@
|
|||
|
||||
#include <linux/list.h>
|
||||
|
||||
/*
|
||||
* Enter the u-boot world from UEFI:
|
||||
*/
|
||||
#define EFI_ENTRY(format, ...) do { \
|
||||
efi_restore_gd(); \
|
||||
debug("EFI: Entry %s(" format ")\n", __func__, ##__VA_ARGS__); \
|
||||
} while(0)
|
||||
|
||||
/*
|
||||
* Exit the u-boot world back to UEFI:
|
||||
*/
|
||||
#define EFI_EXIT(ret) ({ \
|
||||
efi_status_t _r = ret; \
|
||||
debug("EFI: Exit: %s: %u\n", __func__, (u32)(_r & ~EFI_ERROR_MASK)); \
|
||||
efi_exit_func(_r); \
|
||||
})
|
||||
|
||||
/*
|
||||
* Callback into UEFI world from u-boot:
|
||||
*/
|
||||
#define EFI_CALL(exp) do { \
|
||||
debug("EFI: Call: %s\n", #exp); \
|
||||
efi_exit_func(EFI_SUCCESS); \
|
||||
exp; \
|
||||
efi_restore_gd(); \
|
||||
debug("EFI: Return From: %s\n", #exp); \
|
||||
} while(0)
|
||||
|
||||
extern struct efi_runtime_services efi_runtime_services;
|
||||
extern struct efi_system_table systab;
|
||||
|
||||
|
|
|
@ -120,9 +120,7 @@ void efi_signal_event(struct efi_event *event)
|
|||
return;
|
||||
event->signaled = 1;
|
||||
if (event->type & EVT_NOTIFY_SIGNAL) {
|
||||
EFI_EXIT(EFI_SUCCESS);
|
||||
event->notify_function(event, event->notify_context);
|
||||
EFI_ENTRY("returning from notification function");
|
||||
EFI_CALL(event->notify_function(event, event->notify_context));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue