xref: /freebsd/stand/efi/loader/loader_efi.h (revision b3e76948)
1ca987d46SWarner Losh /*-
2ca987d46SWarner Losh  * Copyright (c) 2013 The FreeBSD Foundation
3ca987d46SWarner Losh  *
4ca987d46SWarner Losh  * This software was developed by Benno Rice under sponsorship from
5ca987d46SWarner Losh  * the FreeBSD Foundation.
6ca987d46SWarner Losh  * Redistribution and use in source and binary forms, with or without
7ca987d46SWarner Losh  * modification, are permitted provided that the following conditions
8ca987d46SWarner Losh  * are met:
9ca987d46SWarner Losh  * 1. Redistributions of source code must retain the above copyright
10ca987d46SWarner Losh  *    notice, this list of conditions and the following disclaimer.
11ca987d46SWarner Losh  * 2. Redistributions in binary form must reproduce the above copyright
12ca987d46SWarner Losh  *    notice, this list of conditions and the following disclaimer in the
13ca987d46SWarner Losh  *    documentation and/or other materials provided with the distribution.
14ca987d46SWarner Losh  *
15ca987d46SWarner Losh  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16ca987d46SWarner Losh  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17ca987d46SWarner Losh  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ca987d46SWarner Losh  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19ca987d46SWarner Losh  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20ca987d46SWarner Losh  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21ca987d46SWarner Losh  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22ca987d46SWarner Losh  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23ca987d46SWarner Losh  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24ca987d46SWarner Losh  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25ca987d46SWarner Losh  * SUCH DAMAGE.
26ca987d46SWarner Losh  */
27ca987d46SWarner Losh 
28ca987d46SWarner Losh #ifndef	_LOADER_EFI_COPY_H_
29ca987d46SWarner Losh #define	_LOADER_EFI_COPY_H_
30ca987d46SWarner Losh 
31ca987d46SWarner Losh #include <stand.h>
32afc571b1SSimon J. Gerraty #include <readin.h>
33f4ca0fdbSToomas Soome #include <efi.h>
34ca987d46SWarner Losh 
35f75caed6SKonstantin Belousov #ifdef __amd64__
36f75caed6SKonstantin Belousov enum {
37f75caed6SKonstantin Belousov 	COPY_STAGING_ENABLE,
38f75caed6SKonstantin Belousov 	COPY_STAGING_DISABLE,
39f75caed6SKonstantin Belousov 	COPY_STAGING_AUTO,
40f75caed6SKonstantin Belousov };
41f75caed6SKonstantin Belousov extern int copy_staging;
42f75caed6SKonstantin Belousov #endif
43f75caed6SKonstantin Belousov 
44f4ca0fdbSToomas Soome extern EFI_LOADED_IMAGE *boot_img;
45f4ca0fdbSToomas Soome 
46ca987d46SWarner Losh int	efi_autoload(void);
47ca987d46SWarner Losh 
48ca987d46SWarner Losh int	efi_copy_init(void);
49ca987d46SWarner Losh 
50ca987d46SWarner Losh ssize_t	efi_copyin(const void *src, vm_offset_t dest, const size_t len);
51ca987d46SWarner Losh ssize_t	efi_copyout(const vm_offset_t src, void *dest, const size_t len);
52afc571b1SSimon J. Gerraty ssize_t	efi_readin(readin_handle_t fd, vm_offset_t dest, const size_t len);
53ca987d46SWarner Losh void * efi_translate(vm_offset_t ptr);
54ca987d46SWarner Losh 
55ca987d46SWarner Losh void	efi_copy_finish(void);
56f75caed6SKonstantin Belousov void	efi_copy_finish_nop(void);
57ca987d46SWarner Losh 
58ca987d46SWarner Losh #endif	/* _LOADER_EFI_COPY_H_ */
59