1 /* SPDX-License-Identifier: GPL-2.0-only or License-Ref-kk-custom */
2 /*
3  * Copyright (C) 2021 Kernkonzept GmbH.
4  * Author(s): Adam Lackorzynski <adam@l4re.org>
5  */
6 #pragma once
7 
8 #include <l4/sys/l4int.h>
9 
10 /** Flags for \c l4util_l4mod_mod.flags */
11 enum l4util_l4mod_mod_info_flag // aka bootstraps: Mod_info_flags
12 {
13   L4util_l4mod_mod_flag_unspec    = 0,
14   L4util_l4mod_mod_flag_kernel    = 1,
15   L4util_l4mod_mod_flag_sigma0    = 2,
16   L4util_l4mod_mod_flag_roottask  = 3,
17   L4util_l4mod_mod_flag_mask      = 7 << 0,
18 };
19 
20 /** A single module. */
21 typedef struct
22 {
23   l4_uint64_t flags;       /**< Module flags (\c l4util_l4mod_mod_info_flag) */
24   l4_uint64_t mod_start;   /**< Starting address of module in memory. */
25   l4_uint64_t mod_end;     /**< End address of module in memory. */
26   l4_uint64_t cmdline;     /**< Module command line */
27 } l4util_l4mod_mod;
28 
29 /** Base module structure. */
30 typedef struct
31 {
32   l4_uint64_t flags;          /**< Flags */
33   l4_uint64_t cmdline;        /**< Pointer to kernel command line */
34   l4_uint64_t mods_addr;      /**< Module list */
35   l4_uint32_t mods_count;     /**< Number of modules */
36   l4_uint32_t _pad;
37 
38   /**
39    * VESA video info, valid if one of vbe_ctrl_info
40    * or vbe_mode_info is not zero.
41    */
42   l4_uint64_t vbe_ctrl_info;  /**< VESA video controller info */
43   l4_uint64_t vbe_mode_info;  /**< VESA video mode info */
44 } l4util_l4mod_info;
45