Blame view
include/efi_loader.h
14.1 KB
cb149c663 efi_loader: Add P... |
1 2 3 4 5 6 7 |
/* * EFI application loader * * Copyright (c) 2016 Alexander Graf * * SPDX-License-Identifier: GPL-2.0+ */ |
cd9e18dee efi_loader: guard... |
8 9 |
#ifndef _EFI_LOADER_H #define _EFI_LOADER_H 1 |
bee91169f efi_loader: Add b... |
10 |
#include <common.h> |
cb149c663 efi_loader: Add P... |
11 12 |
#include <part_efi.h> #include <efi_api.h> |
bee91169f efi_loader: Add b... |
13 14 15 |
/* No need for efi loader support in SPL */ #if defined(CONFIG_EFI_LOADER) && !defined(CONFIG_SPL_BUILD) |
cb149c663 efi_loader: Add P... |
16 |
#include <linux/list.h> |
c160d2f5e efi_loader: add c... |
17 18 |
int __efi_entry_check(void); int __efi_exit_check(void); |
ae0bd3a98 efi_loader: write... |
19 |
const char *__efi_nesting(void); |
af65db85b efi_loader: inden... |
20 21 |
const char *__efi_nesting_inc(void); const char *__efi_nesting_dec(void); |
c160d2f5e efi_loader: add c... |
22 |
|
a095aadff efi_loader: Add a... |
23 24 25 |
/* * Enter the u-boot world from UEFI: */ |
bee91169f efi_loader: Add b... |
26 |
#define EFI_ENTRY(format, ...) do { \ |
c160d2f5e efi_loader: add c... |
27 |
assert(__efi_entry_check()); \ |
af65db85b efi_loader: inden... |
28 29 30 |
debug("%sEFI: Entry %s(" format ") ", __efi_nesting_inc(), \ __func__, ##__VA_ARGS__); \ |
bee91169f efi_loader: Add b... |
31 |
} while(0) |
bee91169f efi_loader: Add b... |
32 |
|
a095aadff efi_loader: Add a... |
33 34 35 |
/* * Exit the u-boot world back to UEFI: */ |
804b1d737 efi_loader: log E... |
36 |
#define EFI_EXIT(ret) ({ \ |
c81883dfc efi_loader: do no... |
37 |
typeof(ret) _r = ret; \ |
af65db85b efi_loader: inden... |
38 39 |
debug("%sEFI: Exit: %s: %u ", __efi_nesting_dec(), \ |
c81883dfc efi_loader: do no... |
40 |
__func__, (u32)((uintptr_t) _r & ~EFI_ERROR_MASK)); \ |
c160d2f5e efi_loader: add c... |
41 42 |
assert(__efi_exit_check()); \ _r; \ |
804b1d737 efi_loader: log E... |
43 |
}) |
bee91169f efi_loader: Add b... |
44 |
|
a095aadff efi_loader: Add a... |
45 |
/* |
ea630ce9e efi_loader: allow... |
46 |
* Call non-void UEFI function from u-boot and retrieve return value: |
a095aadff efi_loader: Add a... |
47 |
*/ |
ea630ce9e efi_loader: allow... |
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#define EFI_CALL(exp) ({ \ debug("%sEFI: Call: %s ", __efi_nesting_inc(), #exp); \ assert(__efi_exit_check()); \ typeof(exp) _r = exp; \ assert(__efi_entry_check()); \ debug("%sEFI: %lu returned by %s ", __efi_nesting_dec(), \ (unsigned long)((uintptr_t)_r & ~EFI_ERROR_MASK), #exp); \ _r; \ }) /* * Call void UEFI function from u-boot: */ #define EFI_CALL_VOID(exp) do { \ |
af65db85b efi_loader: inden... |
64 65 |
debug("%sEFI: Call: %s ", __efi_nesting_inc(), #exp); \ |
c160d2f5e efi_loader: add c... |
66 |
assert(__efi_exit_check()); \ |
a095aadff efi_loader: Add a... |
67 |
exp; \ |
c160d2f5e efi_loader: add c... |
68 |
assert(__efi_entry_check()); \ |
af65db85b efi_loader: inden... |
69 70 |
debug("%sEFI: Return From: %s ", __efi_nesting_dec(), #exp); \ |
a095aadff efi_loader: Add a... |
71 |
} while(0) |
ae0bd3a98 efi_loader: write... |
72 |
/* |
d55041443 efi_loader: debug... |
73 |
* Write an indented message with EFI prefix |
ae0bd3a98 efi_loader: write... |
74 |
*/ |
d55041443 efi_loader: debug... |
75 76 77 |
#define EFI_PRINT(format, ...) ({ \ debug("%sEFI: " format, __efi_nesting(), \ ##__VA_ARGS__); \ |
ae0bd3a98 efi_loader: write... |
78 |
}) |
50149ea37 efi_loader: Add r... |
79 |
extern struct efi_runtime_services efi_runtime_services; |
bee91169f efi_loader: Add b... |
80 |
extern struct efi_system_table systab; |
ebb4dd5bc efi_loader: efi_c... |
81 |
extern struct efi_simple_text_output_protocol efi_con_out; |
91be9a77b efi_console: set ... |
82 |
extern struct efi_simple_input_interface efi_con_in; |
ebb4dd5bc efi_loader: efi_c... |
83 |
extern struct efi_console_control_protocol efi_console_control; |
cc5b70812 efi_loader: imple... |
84 |
extern const struct efi_device_path_to_text_protocol efi_device_path_to_text; |
c1311ad4e efi_loader: Add c... |
85 |
|
adae4313c efi_loader: flesh... |
86 |
uint16_t *efi_dp_str(struct efi_device_path *dp); |
b3dd14b6b efi_loader: make ... |
87 88 |
/* GUID of the EFI_BLOCK_IO_PROTOCOL */ extern const efi_guid_t efi_block_io_guid; |
9975fe96b efi_loader: add b... |
89 |
extern const efi_guid_t efi_global_variable_guid; |
c1311ad4e efi_loader: Add c... |
90 |
extern const efi_guid_t efi_guid_console_control; |
cb149c663 efi_loader: Add P... |
91 |
extern const efi_guid_t efi_guid_device_path; |
f0959dbee efi_loader: imple... |
92 93 |
/* GUID of the EFI_DRIVER_BINDING_PROTOCOL */ extern const efi_guid_t efi_guid_driver_binding_protocol; |
cb149c663 efi_loader: Add P... |
94 |
extern const efi_guid_t efi_guid_loaded_image; |
cc5b70812 efi_loader: imple... |
95 |
extern const efi_guid_t efi_guid_device_path_to_text_protocol; |
2a92080d8 efi_loader: add f... |
96 97 |
extern const efi_guid_t efi_simple_file_system_protocol_guid; extern const efi_guid_t efi_file_info_guid; |
cb149c663 efi_loader: Add P... |
98 |
|
50149ea37 efi_loader: Add r... |
99 100 |
extern unsigned int __efi_runtime_start, __efi_runtime_stop; extern unsigned int __efi_runtime_rel_start, __efi_runtime_rel_stop; |
bee91169f efi_loader: Add b... |
101 |
/* |
fe1599daf efi_loader: list ... |
102 103 104 105 106 107 108 109 110 111 |
* When a protocol is opened a open protocol info entry is created. * These are maintained in a list. */ struct efi_open_protocol_info_item { /* Link to the list of open protocol info entries of a protocol */ struct list_head link; struct efi_open_protocol_info_entry info; }; /* |
bee91169f efi_loader: Add b... |
112 113 |
* When the UEFI payload wants to open a protocol on an object to get its * interface (usually a struct with callback functions), this struct maps the |
fe1599daf efi_loader: list ... |
114 115 |
* protocol GUID to the respective protocol interface */ |
bee91169f efi_loader: Add b... |
116 |
struct efi_handler { |
69fb6b1af efi_loader: manag... |
117 118 |
/* Link to the list of protocols of a handle */ struct list_head link; |
bee91169f efi_loader: Add b... |
119 |
const efi_guid_t *guid; |
b5349f742 efi_loader: refac... |
120 |
void *protocol_interface; |
fe1599daf efi_loader: list ... |
121 122 |
/* Link to the list of open protocol info items */ struct list_head open_infos; |
bee91169f efi_loader: Add b... |
123 124 125 126 127 128 129 130 131 132 133 134 |
}; /* * UEFI has a poor man's OO model where one "object" can be polymorphic and have * multiple different protocols (classes) attached to it. * * This struct is the parent struct for all of our actual implementation objects * that can include it to make themselves an EFI object */ struct efi_object { /* Every UEFI object is part of a global object list */ struct list_head link; |
69fb6b1af efi_loader: manag... |
135 136 |
/* The list of protocols */ struct list_head protocols; |
bee91169f efi_loader: Add b... |
137 138 139 |
/* The object spawner can either use this for data or as identifier */ void *handle; }; |
c68415922 efi_loader: imple... |
140 141 142 143 144 145 146 147 148 149 |
/** * struct efi_event * * @type: Type of event, see efi_create_event * @notify_tpl: Task priority level of notifications * @trigger_time: Period of the timer * @trigger_next: Next time to trigger the timer * @nofify_function: Function to call when the event is triggered * @notify_context: Data to be passed to the notify function * @trigger_type: Type of timer, see efi_set_timer |
e190e8972 efi_loader: use t... |
150 151 |
* @queued: The notification function is queued * @signaled: The event occurred. The event is in the signaled state. |
c68415922 efi_loader: imple... |
152 153 |
*/ struct efi_event { |
b521d29eb efi_loader: param... |
154 |
uint32_t type; |
152cade32 efi_loader: repla... |
155 |
efi_uintn_t notify_tpl; |
c68415922 efi_loader: imple... |
156 157 158 159 |
void (EFIAPI *notify_function)(struct efi_event *event, void *context); void *notify_context; u64 trigger_next; u64 trigger_time; |
b521d29eb efi_loader: param... |
160 |
enum efi_timer_delay trigger_type; |
e190e8972 efi_loader: use t... |
161 162 |
bool is_queued; bool is_signaled; |
c68415922 efi_loader: imple... |
163 |
}; |
bee91169f efi_loader: Add b... |
164 165 |
/* This list contains all UEFI objects we know of */ extern struct list_head efi_obj_list; |
91be9a77b efi_console: set ... |
166 167 |
/* Called by bootefi to make console interface available */ int efi_console_register(void); |
2a22d05d3 efi_loader: Add d... |
168 |
/* Called by bootefi to make all disk storage accessible as EFI objects */ |
df9cf561b efi_loader: corre... |
169 |
efi_status_t efi_disk_register(void); |
64e4db0f1 efi_loader: make ... |
170 171 172 173 |
/* Create handles and protocols for the partitions of a block device */ int efi_disk_create_partitions(efi_handle_t parent, struct blk_desc *desc, const char *if_typename, int diskid, const char *pdevname); |
be8d32419 efi_loader: Add G... |
174 175 |
/* Called by bootefi to make GOP (graphical) interface available */ int efi_gop_register(void); |
0efe1bcf5 efi_loader: Add n... |
176 |
/* Called by bootefi to make the network interface available */ |
95c5553ea efi_loader: refac... |
177 |
int efi_net_register(void); |
b3d609004 efi_loader: imple... |
178 179 |
/* Called by bootefi to make the watchdog available */ int efi_watchdog_register(void); |
e663b350f smbios: Expose in... |
180 181 |
/* Called by bootefi to make SMBIOS tables available */ void efi_smbios_register(void); |
0efe1bcf5 efi_loader: Add n... |
182 |
|
2a92080d8 efi_loader: add f... |
183 184 |
struct efi_simple_file_system_protocol * efi_fs_from_path(struct efi_device_path *fp); |
0efe1bcf5 efi_loader: Add n... |
185 186 |
/* Called by networking code to memorize the dhcp ack package */ void efi_net_set_dhcp_ack(void *pkt, int len); |
b3d609004 efi_loader: imple... |
187 188 |
/* Called by efi_set_watchdog_timer to reset the timer */ efi_status_t efi_set_watchdog(unsigned long timeout); |
0efe1bcf5 efi_loader: Add n... |
189 |
|
bee91169f efi_loader: Add b... |
190 191 192 |
/* Called from places to check whether a timer expired */ void efi_timer_check(void); /* PE loader implementation */ |
cb149c663 efi_loader: Add P... |
193 |
void *efi_load_pe(void *efi, struct efi_loaded_image *loaded_image_info); |
bee91169f efi_loader: Add b... |
194 195 |
/* Called once to store the pristine gd pointer */ void efi_save_gd(void); |
c160d2f5e efi_loader: add c... |
196 197 |
/* Special case handler for error/abort that just tries to dtrt to get * back to u-boot world */ |
bee91169f efi_loader: Add b... |
198 |
void efi_restore_gd(void); |
50149ea37 efi_loader: Add r... |
199 200 |
/* Call this to relocate the runtime section to an address space */ void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map); |
0f4060ebc efi_loader: Pass ... |
201 |
/* Call this to set the current device name */ |
c07ad7c03 efi_loader: Pass ... |
202 |
void efi_set_bootdev(const char *dev, const char *devnr, const char *path); |
44549d62c efi_loader: helpe... |
203 204 |
/* Add a new object to the object list. */ void efi_add_handle(struct efi_object *obj); |
2edab5e2e efi_loader: make ... |
205 |
/* Create handle */ |
2074f7006 efi_loader: consi... |
206 |
efi_status_t efi_create_handle(efi_handle_t *handle); |
678e03a00 efi_loader: new f... |
207 208 |
/* Delete handle */ void efi_delete_handle(struct efi_object *obj); |
1b68153af efi_loader: rewor... |
209 |
/* Call this to validate a handle and find the EFI object for it */ |
2074f7006 efi_loader: consi... |
210 |
struct efi_object *efi_search_obj(const efi_handle_t handle); |
3f79a2b53 efi_loader: helpe... |
211 |
/* Find a protocol on a handle */ |
2074f7006 efi_loader: consi... |
212 |
efi_status_t efi_search_protocol(const efi_handle_t handle, |
3f79a2b53 efi_loader: helpe... |
213 214 215 |
const efi_guid_t *protocol_guid, struct efi_handler **handler); /* Install new protocol on a handle */ |
2074f7006 efi_loader: consi... |
216 217 |
efi_status_t efi_add_protocol(const efi_handle_t handle, const efi_guid_t *protocol, |
3f79a2b53 efi_loader: helpe... |
218 219 |
void *protocol_interface); /* Delete protocol from a handle */ |
2074f7006 efi_loader: consi... |
220 221 |
efi_status_t efi_remove_protocol(const efi_handle_t handle, const efi_guid_t *protocol, |
3f79a2b53 efi_loader: helpe... |
222 223 |
void *protocol_interface); /* Delete all protocols from a handle */ |
2074f7006 efi_loader: consi... |
224 |
efi_status_t efi_remove_all_protocols(const efi_handle_t handle); |
49deb455e efi_loader: refac... |
225 |
/* Call this to create an event */ |
152cade32 efi_loader: repla... |
226 |
efi_status_t efi_create_event(uint32_t type, efi_uintn_t notify_tpl, |
49deb455e efi_loader: refac... |
227 228 229 230 |
void (EFIAPI *notify_function) ( struct efi_event *event, void *context), void *notify_context, struct efi_event **event); |
bfc724625 efi_loader: refac... |
231 |
/* Call this to set a timer */ |
b521d29eb efi_loader: param... |
232 |
efi_status_t efi_set_timer(struct efi_event *event, enum efi_timer_delay type, |
bfc724625 efi_loader: refac... |
233 |
uint64_t trigger_time); |
91be9a77b efi_console: set ... |
234 |
/* Call this to signal an event */ |
9bc9664d5 efi_loader: add c... |
235 |
void efi_signal_event(struct efi_event *event, bool check_tpl); |
50149ea37 efi_loader: Add r... |
236 |
|
2a92080d8 efi_loader: add f... |
237 238 239 240 241 242 |
/* open file system: */ struct efi_simple_file_system_protocol *efi_simple_file_system( struct blk_desc *desc, int part, struct efi_device_path *dp); /* open file from device-path: */ struct efi_file_handle *efi_file_from_path(struct efi_device_path *fp); |
5d00995c3 efi_loader: Imple... |
243 244 245 |
/* Generic EFI memory allocator, call this to get memory */ void *efi_alloc(uint64_t len, int memory_type); /* More specific EFI memory allocator, called by EFI payloads */ |
f5a2a9389 efi_loader: consi... |
246 |
efi_status_t efi_allocate_pages(int type, int memory_type, efi_uintn_t pages, |
5d00995c3 efi_loader: Imple... |
247 |
uint64_t *memory); |
b61d857b2 efi_loader: Readd... |
248 |
/* EFI memory free function. */ |
f5a2a9389 efi_loader: consi... |
249 |
efi_status_t efi_free_pages(uint64_t memory, efi_uintn_t pages); |
ead1274b7 efi_loader: Move ... |
250 |
/* EFI memory allocator for small allocations */ |
f5a2a9389 efi_loader: consi... |
251 |
efi_status_t efi_allocate_pool(int pool_type, efi_uintn_t size, |
ead1274b7 efi_loader: Move ... |
252 |
void **buffer); |
42417bc84 efi_loader: Track... |
253 254 |
/* EFI pool memory free function. */ efi_status_t efi_free_pool(void *buffer); |
5d00995c3 efi_loader: Imple... |
255 |
/* Returns the EFI memory map */ |
f5a2a9389 efi_loader: consi... |
256 |
efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, |
5d00995c3 efi_loader: Imple... |
257 |
struct efi_mem_desc *memory_map, |
f5a2a9389 efi_loader: consi... |
258 259 |
efi_uintn_t *map_key, efi_uintn_t *descriptor_size, |
5d00995c3 efi_loader: Imple... |
260 261 262 263 |
uint32_t *descriptor_version); /* Adds a range into the EFI memory map */ uint64_t efi_add_memory_map(uint64_t start, uint64_t pages, int memory_type, bool overlap_only_ram); |
05ef48a24 efi_driver: EFI b... |
264 |
/* Called by board init to initialize the EFI drivers */ |
038782a27 efi_driver: retur... |
265 |
efi_status_t efi_driver_init(void); |
5d00995c3 efi_loader: Imple... |
266 267 |
/* Called by board init to initialize the EFI memory map */ int efi_memory_init(void); |
488bf12d8 efi_loader: Expos... |
268 269 |
/* Adds new or overrides configuration table entry to the system table */ efi_status_t efi_install_configuration_table(const efi_guid_t *guid, void *table); |
56d928885 efi_loader: retur... |
270 271 272 273 274 |
/* Sets up a loaded image */ efi_status_t efi_setup_loaded_image( struct efi_loaded_image *info, struct efi_object *obj, struct efi_device_path *device_path, struct efi_device_path *file_path); |
9975fe96b efi_loader: add b... |
275 276 |
efi_status_t efi_load_image_from_path(struct efi_device_path *file_path, void **buffer); |
5d00995c3 efi_loader: Imple... |
277 |
|
51735ae0e efi_loader: Add b... |
278 279 280 281 |
#ifdef CONFIG_EFI_LOADER_BOUNCE_BUFFER extern void *efi_bounce_buffer; #define EFI_LOADER_BOUNCE_BUFFER_SIZE (64 * 1024 * 1024) #endif |
b66c60dde efi_loader: add d... |
282 283 |
struct efi_device_path *efi_dp_next(const struct efi_device_path *dp); |
ff401d3f8 efi_loader: efi_d... |
284 285 |
int efi_dp_match(const struct efi_device_path *a, const struct efi_device_path *b); |
b66c60dde efi_loader: add d... |
286 287 288 289 290 291 292 293 294 295 296 297 |
struct efi_object *efi_dp_find_obj(struct efi_device_path *dp, struct efi_device_path **rem); unsigned efi_dp_size(const struct efi_device_path *dp); struct efi_device_path *efi_dp_dup(const struct efi_device_path *dp); struct efi_device_path *efi_dp_append(const struct efi_device_path *dp1, const struct efi_device_path *dp2); struct efi_device_path *efi_dp_append_node(const struct efi_device_path *dp, const struct efi_device_path *node); struct efi_device_path *efi_dp_from_dev(struct udevice *dev); struct efi_device_path *efi_dp_from_part(struct blk_desc *desc, int part); |
98d48bdf4 efi_loader: provi... |
298 299 |
/* Create a device node for a block device partition. */ struct efi_device_path *efi_dp_part_node(struct blk_desc *desc, int part); |
b66c60dde efi_loader: add d... |
300 301 302 |
struct efi_device_path *efi_dp_from_file(struct blk_desc *desc, int part, const char *path); struct efi_device_path *efi_dp_from_eth(void); |
bf19273e8 efi_loader: Add m... |
303 304 305 |
struct efi_device_path *efi_dp_from_mem(uint32_t mem_type, uint64_t start_address, uint64_t end_address); |
65436f91c efi_loader: provi... |
306 307 308 |
/* Determine the last device path node that is not the end node. */ const struct efi_device_path *efi_dp_last_node( const struct efi_device_path *dp); |
04298686a efi_loader: retur... |
309 310 311 |
efi_status_t efi_dp_split_file_path(struct efi_device_path *full_path, struct efi_device_path **device_path, struct efi_device_path **file_path); |
b66c60dde efi_loader: add d... |
312 313 314 315 |
#define EFI_DP_TYPE(_dp, _type, _subtype) \ (((_dp)->type == DEVICE_PATH_TYPE_##_type) && \ ((_dp)->sub_type == DEVICE_PATH_SUB_TYPE_##_subtype)) |
0f4060ebc efi_loader: Pass ... |
316 |
/* Convert strings from normal C strings to uEFI strings */ |
487d756f7 dm: efi: Update f... |
317 |
static inline void ascii2unicode(u16 *unicode, const char *ascii) |
0f4060ebc efi_loader: Pass ... |
318 319 320 321 |
{ while (*ascii) *(unicode++) = *(ascii++); } |
3e094c592 efi_loader: move ... |
322 323 324 325 |
static inline int guidcmp(const efi_guid_t *g1, const efi_guid_t *g2) { return memcmp(g1, g2, sizeof(efi_guid_t)); } |
50149ea37 efi_loader: Add r... |
326 327 328 329 |
/* * Use these to indicate that your code / data should go into the EFI runtime * section and thus still be available when the OS is running */ |
3c63db9ca efi_loader: Renam... |
330 331 |
#define __efi_runtime_data __attribute__ ((section ("efi_runtime_data"))) #define __efi_runtime __attribute__ ((section ("efi_runtime_text"))) |
bee91169f efi_loader: Add b... |
332 |
|
80a4800ee efi_loader: Allow... |
333 334 335 336 337 |
/* Call this with mmio_ptr as the _pointer_ to a pointer to an MMIO region * to make it available at runtime */ void efi_add_runtime_mmio(void *mmio_ptr, u64 len); /* Boards may provide the functions below to implement RTS functionality */ |
3c63db9ca efi_loader: Renam... |
338 |
void __efi_runtime EFIAPI efi_reset_system( |
80a4800ee efi_loader: Allow... |
339 340 341 342 |
enum efi_reset_type reset_type, efi_status_t reset_status, unsigned long data_size, void *reset_data); void efi_reset_system_init(void); |
3c63db9ca efi_loader: Renam... |
343 |
efi_status_t __efi_runtime EFIAPI efi_get_time( |
80a4800ee efi_loader: Allow... |
344 345 346 |
struct efi_time *time, struct efi_time_cap *capabilities); void efi_get_time_init(void); |
623b3a579 efi_selftest: pro... |
347 348 349 350 351 352 353 354 |
#ifdef CONFIG_CMD_BOOTEFI_SELFTEST /* * Entry point for the tests of the EFI API. * It is called by 'bootefi selftest' */ efi_status_t EFIAPI efi_selftest(efi_handle_t image_handle, struct efi_system_table *systab); #endif |
ad644e7c1 efi_loader: efi v... |
355 356 357 358 359 360 361 362 363 |
efi_status_t EFIAPI efi_get_variable(s16 *variable_name, efi_guid_t *vendor, u32 *attributes, unsigned long *data_size, void *data); efi_status_t EFIAPI efi_get_next_variable( unsigned long *variable_name_size, s16 *variable_name, efi_guid_t *vendor); efi_status_t EFIAPI efi_set_variable(s16 *variable_name, efi_guid_t *vendor, u32 attributes, unsigned long data_size, void *data); |
9975fe96b efi_loader: add b... |
364 365 |
void *efi_bootmgr_load(struct efi_device_path **device_path, struct efi_device_path **file_path); |
bee91169f efi_loader: Add b... |
366 |
#else /* defined(EFI_LOADER) && !defined(CONFIG_SPL_BUILD) */ |
50149ea37 efi_loader: Add r... |
367 |
/* Without CONFIG_EFI_LOADER we don't have a runtime section, stub it out */ |
3c63db9ca efi_loader: Renam... |
368 369 |
#define __efi_runtime_data #define __efi_runtime |
97d014446 efi_loader: Fix e... |
370 |
static inline void efi_add_runtime_mmio(void *mmio_ptr, u64 len) { } |
50149ea37 efi_loader: Add r... |
371 |
|
bee91169f efi_loader: Add b... |
372 373 |
/* No loader configured, stub out EFI_ENTRY */ static inline void efi_restore_gd(void) { } |
c07ad7c03 efi_loader: Pass ... |
374 375 |
static inline void efi_set_bootdev(const char *dev, const char *devnr, const char *path) { } |
0efe1bcf5 efi_loader: Add n... |
376 |
static inline void efi_net_set_dhcp_ack(void *pkt, int len) { } |
bee91169f efi_loader: Add b... |
377 |
|
cd9e18dee efi_loader: guard... |
378 379 380 |
#endif /* CONFIG_EFI_LOADER && !CONFIG_SPL_BUILD */ #endif /* _EFI_LOADER_H */ |