~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/openbios/arch/amd64/multiboot.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* multiboot.h
 
2
 * tag: header for multiboot
 
3
 *
 
4
 * Copyright (C) 2003-2004 Stefan Reinauer
 
5
 *
 
6
 * See the file "COPYING" for further information about
 
7
 * the copyright and warranty status of this work.
 
8
 */
 
9
 
 
10
/* magic number for multiboot header */
 
11
#define MULTIBOOT_HEADER_MAGIC          0x1BADB002
 
12
 
 
13
/* flags for multiboot header */
 
14
#define MULTIBOOT_HEADER_FLAGS          0x00010003
 
15
 
 
16
/* magic number passed by multiboot-compliant boot loader.  */
 
17
#define MULTIBOOT_BOOTLOADER_MAGIC      0x2BADB002
 
18
 
 
19
/* The size of our stack (8KB).  */
 
20
#define STACK_SIZE                      0x2000
 
21
 
 
22
/* C symbol format. HAVE_ASM_USCORE is defined by configure.  */
 
23
#ifdef HAVE_ASM_USCORE
 
24
# define EXT_C(sym)                     _ ## sym
 
25
#else
 
26
# define EXT_C(sym)                     sym
 
27
#endif
 
28
 
 
29
#ifndef ASM
 
30
/* We don't want these declarations in boot.S  */
 
31
 
 
32
/* multiboot header */
 
33
typedef struct multiboot_header {
 
34
        unsigned long magic;
 
35
        unsigned long flags;
 
36
        unsigned long checksum;
 
37
        unsigned long header_addr;
 
38
        unsigned long load_addr;
 
39
        unsigned long load_end_addr;
 
40
        unsigned long bss_end_addr;
 
41
        unsigned long entry_addr;
 
42
} multiboot_header_t;
 
43
 
 
44
/* symbol table for a.out */
 
45
typedef struct aout_symbol_table {
 
46
        unsigned long tabsize;
 
47
        unsigned long strsize;
 
48
        unsigned long addr;
 
49
        unsigned long reserved;
 
50
} aout_symbol_table_t;
 
51
 
 
52
/* section header table for ELF */
 
53
typedef struct elf_section_header_table {
 
54
        unsigned long num;
 
55
        unsigned long size;
 
56
        unsigned long addr;
 
57
        unsigned long shndx;
 
58
} elf_section_header_table_t;
 
59
 
 
60
/* multiboot information */
 
61
typedef struct multiboot_info {
 
62
        unsigned long flags;
 
63
        unsigned long mem_lower;
 
64
        unsigned long mem_upper;
 
65
        unsigned long boot_device;
 
66
        unsigned long cmdline;
 
67
        unsigned long mods_count;
 
68
        unsigned long mods_addr;
 
69
        union {
 
70
                aout_symbol_table_t aout_sym;
 
71
                elf_section_header_table_t elf_sec;
 
72
        } u;
 
73
        unsigned long mmap_length;
 
74
        unsigned long mmap_addr;
 
75
} multiboot_info_t;
 
76
 
 
77
/* module structure */
 
78
typedef struct module {
 
79
        unsigned long mod_start;
 
80
        unsigned long mod_end;
 
81
        unsigned long string;
 
82
        unsigned long reserved;
 
83
} module_t;
 
84
 
 
85
/* memory map. Be careful that the offset 0 is base_addr_low
 
86
   but no size.  */
 
87
typedef struct memory_map {
 
88
        unsigned long size;
 
89
        unsigned long base_addr_low;
 
90
        unsigned long base_addr_high;
 
91
        unsigned long length_low;
 
92
        unsigned long length_high;
 
93
        unsigned long type;
 
94
} memory_map_t;
 
95
 
 
96
#endif                          /* ! ASM */