1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright 2016 Toomas Soome <tsoome@me.com>
14  */
15 
16 #ifndef _SYS_MULTIBOOT2_IMPL_H
17 #define	_SYS_MULTIBOOT2_IMPL_H
18 
19 /*
20  * Multiboot 2 protocol implementation for dboot.
21  */
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include <sys/multiboot2.h>
28 
29 extern void *dboot_multiboot2_find_tag(multiboot2_info_header_t *, uint32_t);
30 extern char *dboot_multiboot2_cmdline(multiboot2_info_header_t *);
31 extern int dboot_multiboot2_modcount(multiboot2_info_header_t *);
32 extern uint32_t dboot_multiboot2_modstart(multiboot2_info_header_t *, int);
33 extern uint32_t dboot_multiboot2_modend(multiboot2_info_header_t *, int);
34 extern char *dboot_multiboot2_modcmdline(multiboot2_info_header_t *, int);
35 extern multiboot_tag_mmap_t *
36     dboot_multiboot2_get_mmap_tagp(multiboot2_info_header_t *);
37 extern boolean_t dboot_multiboot2_basicmeminfo(multiboot2_info_header_t *,
38     uint32_t *, uint32_t *);
39 extern uint64_t dboot_multiboot2_mmap_get_length(multiboot2_info_header_t *,
40     multiboot_tag_mmap_t *, int);
41 extern uint64_t dboot_multiboot2_mmap_get_base(multiboot2_info_header_t *,
42     multiboot_tag_mmap_t *, int);
43 extern uint32_t dboot_multiboot2_mmap_get_type(multiboot2_info_header_t *,
44     multiboot_tag_mmap_t *, int);
45 extern int dboot_multiboot2_mmap_nentries(multiboot2_info_header_t *,
46     multiboot_tag_mmap_t *);
47 extern paddr_t dboot_multiboot2_highest_addr(multiboot2_info_header_t *);
48 
49 #ifdef __cplusplus
50 }
51 #endif
52 
53 #endif /* _SYS_MULTIBOOT2_IMPL_H */
54