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

« back to all changes in this revision

Viewing changes to roms/ipxe/src/arch/x86/include/bzimage.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
#ifndef _BZIMAGE_H
 
2
#define _BZIMAGE_H
 
3
 
 
4
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 
5
 
 
6
#include <stdint.h>
 
7
 
 
8
/**
 
9
 * A bzImage header
 
10
 *
 
11
 * As documented in Documentation/i386/boot.txt
 
12
 */
 
13
struct bzimage_header {
 
14
        /** The size of the setup in sectors
 
15
         *
 
16
         * If this field contains 0, assume it contains 4.
 
17
         */
 
18
        uint8_t setup_sects;
 
19
        /** If set, the root is mounted readonly */
 
20
        uint16_t root_flags;
 
21
        /** DO NOT USE - for bootsect.S use only */
 
22
        uint16_t syssize;
 
23
        /** DO NOT USE - obsolete */
 
24
        uint16_t swap_dev;
 
25
        /** DO NOT USE - for bootsect.S use only */
 
26
        uint16_t ram_size;
 
27
        /** Video mode control */
 
28
        uint16_t vid_mode;
 
29
        /** Default root device number */
 
30
        uint16_t root_dev;
 
31
        /** 0xAA55 magic number */
 
32
        uint16_t boot_flag;
 
33
        /** Jump instruction */
 
34
        uint16_t jump;
 
35
        /** Magic signature "HdrS" */
 
36
        uint32_t header;
 
37
        /** Boot protocol version supported */
 
38
        uint16_t version;
 
39
        /** Boot loader hook (see below) */
 
40
        uint32_t realmode_swtch;
 
41
        /** The load-low segment (0x1000) (obsolete) */
 
42
        uint16_t start_sys;
 
43
        /** Pointer to kernel version string */
 
44
        uint16_t kernel_version;
 
45
        /** Boot loader identifier */
 
46
        uint8_t type_of_loader;
 
47
        /** Boot protocol option flags */
 
48
        uint8_t loadflags;
 
49
        /** Move to high memory size (used with hooks) */
 
50
        uint16_t setup_move_size;
 
51
        /** Boot loader hook (see below) */
 
52
        uint32_t code32_start;
 
53
        /** initrd load address (set by boot loader) */
 
54
        uint32_t ramdisk_image;
 
55
        /** initrd size (set by boot loader) */
 
56
        uint32_t ramdisk_size;
 
57
        /** DO NOT USE - for bootsect.S use only */
 
58
        uint32_t bootsect_kludge;
 
59
        /** Free memory after setup end */
 
60
        uint16_t heap_end_ptr;
 
61
        /** Unused */
 
62
        uint16_t pad1;
 
63
        /** 32-bit pointer to the kernel command line */
 
64
        uint32_t cmd_line_ptr;
 
65
        /** Highest legal initrd address */
 
66
        uint32_t initrd_addr_max;
 
67
        /** Physical addr alignment required for kernel */
 
68
        uint32_t kernel_alignment;
 
69
        /** Whether kernel is relocatable or not */
 
70
        uint8_t relocatable_kernel;
 
71
        /** Unused */
 
72
        uint8_t pad2[3];
 
73
        /** Maximum size of the kernel command line */
 
74
        uint32_t cmdline_size;
 
75
} __attribute__ (( packed ));
 
76
 
 
77
/** Offset of bzImage header within kernel image */
 
78
#define BZI_HDR_OFFSET 0x1f1
 
79
 
 
80
/** bzImage boot flag value */
 
81
#define BZI_BOOT_FLAG 0xaa55
 
82
 
 
83
/** bzImage magic signature value */
 
84
#define BZI_SIGNATURE 0x53726448
 
85
 
 
86
/** bzImage boot loader identifier for Etherboot */
 
87
#define BZI_LOADER_TYPE_ETHERBOOT 0x40
 
88
 
 
89
/** bzImage boot loader identifier for iPXE
 
90
 *
 
91
 * We advertise ourselves as Etherboot version 6.
 
92
 */
 
93
#define BZI_LOADER_TYPE_IPXE ( BZI_LOADER_TYPE_ETHERBOOT | 0x06 )
 
94
 
 
95
/** bzImage "load high" flag */
 
96
#define BZI_LOAD_HIGH 0x01
 
97
 
 
98
/** Load address for high-loaded kernels */
 
99
#define BZI_LOAD_HIGH_ADDR 0x100000
 
100
 
 
101
/** Load address for low-loaded kernels */
 
102
#define BZI_LOAD_LOW_ADDR 0x10000
 
103
 
 
104
/** bzImage "kernel can use heap" flag */
 
105
#define BZI_CAN_USE_HEAP 0x80
 
106
 
 
107
/** bzImage special video mode "normal" */
 
108
#define BZI_VID_MODE_NORMAL 0xffff
 
109
 
 
110
/** bzImage special video mode "ext" */
 
111
#define BZI_VID_MODE_EXT 0xfffe
 
112
 
 
113
/** bzImage special video mode "ask" */
 
114
#define BZI_VID_MODE_ASK 0xfffd
 
115
 
 
116
/** bzImage maximum initrd address for versions < 2.03 */
 
117
#define BZI_INITRD_MAX 0x37ffffff
 
118
 
 
119
/** bzImage command-line structure used by older kernels */
 
120
struct bzimage_cmdline {
 
121
        /** Magic signature */
 
122
        uint16_t magic;
 
123
        /** Offset to command line */
 
124
        uint16_t offset;
 
125
} __attribute__ (( packed ));
 
126
 
 
127
/** Offset of bzImage command-line structure within kernel image */
 
128
#define BZI_CMDLINE_OFFSET 0x20
 
129
 
 
130
/** bzImage command line present magic marker value */
 
131
#define BZI_CMDLINE_MAGIC 0xa33f
 
132
 
 
133
/** Assumed size of real-mode portion (including .bss) */
 
134
#define BZI_ASSUMED_RM_SIZE 0x8000
 
135
 
 
136
/** Amount of stack space to provide */
 
137
#define BZI_STACK_SIZE 0x1000
 
138
 
 
139
/** Maximum size of command line */
 
140
#define BZI_CMDLINE_SIZE 0x7ff
 
141
 
 
142
#endif /* _BZIMAGE_H */