Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/xen/multiboot.h
Line
Count
Source (jump to first uncovered line)
1
/* multiboot.h - the header for Multiboot */
2
/* Copyright (C) 1999, 2001  Free Software Foundation, Inc.
3
   
4
   This program is free software; you can redistribute it and/or modify
5
   it under the terms of the GNU General Public License as published by
6
   the Free Software Foundation; either version 2 of the License, or
7
   (at your option) any later version.
8
   
9
   This program is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
   GNU General Public License for more details.
13
   
14
   You should have received a copy of the GNU General Public License
15
   along with this program; If not, see <http://www.gnu.org/licenses/>.  */
16
17
#ifndef __MULTIBOOT_H__
18
#define __MULTIBOOT_H__
19
20
#include "const.h"
21
22
/*
23
 * Multiboot header structure.
24
 */
25
#define MULTIBOOT_HEADER_MAGIC         0x1BADB002
26
#define MULTIBOOT_HEADER_MODS_ALIGNED  0x00000001
27
#define MULTIBOOT_HEADER_WANT_MEMORY   0x00000002
28
#define MULTIBOOT_HEADER_HAS_VBE       0x00000004
29
#define MULTIBOOT_HEADER_HAS_ADDR      0x00010000
30
31
/* The magic number passed by a Multiboot-compliant boot loader. */
32
#define MULTIBOOT_BOOTLOADER_MAGIC     0x2BADB002
33
34
0
#define MBI_MEMLIMITS  (_AC(1,u) << 0)
35
#define MBI_BOOTDEV    (_AC(1,u) << 1)
36
1
#define MBI_CMDLINE    (_AC(1,u) << 2)
37
1
#define MBI_MODULES    (_AC(1,u) << 3)
38
#define MBI_AOUT_SYMS  (_AC(1,u) << 4)
39
#define MBI_ELF_SYMS   (_AC(1,u) << 5)
40
0
#define MBI_MEMMAP     (_AC(1,u) << 6)
41
#define MBI_DRIVES     (_AC(1,u) << 7)
42
#define MBI_BIOSCONFIG (_AC(1,u) << 8)
43
1
#define MBI_LOADERNAME (_AC(1,u) << 9)
44
#define MBI_APM        (_AC(1,u) << 10)
45
46
#ifndef __ASSEMBLY__
47
48
/* The symbol table for a.out.  */
49
typedef struct {
50
    u32 tabsize;
51
    u32 strsize;
52
    u32 addr;
53
    u32 reserved;
54
} aout_symbol_table_t;
55
56
/* The section header table for ELF.  */
57
typedef struct {
58
    u32 num;
59
    u32 size;
60
    u32 addr;
61
    u32 shndx;
62
} elf_section_header_table_t;
63
64
/* The Multiboot information.  */
65
typedef struct {
66
    u32 flags;
67
68
    /* Valid if flags sets MBI_MEMLIMITS */
69
    u32 mem_lower;
70
    u32 mem_upper;
71
72
    /* Valid if flags sets MBI_BOOTDEV */
73
    u32 boot_device;
74
75
    /* Valid if flags sets MBI_CMDLINE */
76
    u32 cmdline;
77
78
    /* Valid if flags sets MBI_MODULES */
79
    u32 mods_count;
80
    u32 mods_addr;
81
82
    /* Valid if flags sets ... */
83
    union {
84
        aout_symbol_table_t aout_sym;        /* ... MBI_AOUT_SYMS */
85
        elf_section_header_table_t elf_sec;  /* ... MBI_ELF_SYMS */
86
    } u;
87
88
    /* Valid if flags sets MBI_MEMMAP */
89
    u32 mmap_length;
90
    u32 mmap_addr;
91
92
    /* Valid if flags sets MBI_DRIVES */
93
    u32 drives_length;
94
    u32 drives_addr;
95
96
    /* Valid if flags sets MBI_BIOSCONFIG */
97
    u32 config_table;
98
99
    /* Valid if flags sets MBI_LOADERNAME */
100
    u32 boot_loader_name;
101
102
    /* Valid if flags sets MBI_APM */
103
    u32 apm_table;
104
} multiboot_info_t;
105
106
/* The module structure.  */
107
typedef struct {
108
    u32 mod_start;
109
    u32 mod_end;
110
    u32 string;
111
    u32 reserved;
112
} module_t;
113
114
/* The memory map. Be careful that the offset 0 is base_addr_low
115
   but no size.  */
116
typedef struct {
117
    u32 size;
118
    u32 base_addr_low;
119
    u32 base_addr_high;
120
    u32 length_low;
121
    u32 length_high;
122
    u32 type;
123
} memory_map_t;
124
125
126
#endif /* __ASSEMBLY__ */
127
128
#endif /* __MULTIBOOT_H__ */