~ubuntu-branches/debian/sid/grub2/sid-200907171837

« back to all changes in this revision

Viewing changes to include/grub/i386/linux.h

  • Committer: Bazaar Package Importer
  • Author(s): Otavio Salvador
  • Date: 2006-06-10 19:57:01 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20060610195701-2khcfacexb229tq4
Tags: 1.94-3
Fix FTBFS in amd64. Closes: 372548

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  GRUB  --  GRand Unified Bootloader
 
3
 *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
 
4
 *
 
5
 *  This program is free software; you can redistribute it and/or modify
 
6
 *  it under the terms of the GNU General Public License as published by
 
7
 *  the Free Software Foundation; either version 2 of the License, or
 
8
 *  (at your option) any later version.
 
9
 *
 
10
 *  This program is distributed in the hope that it will be useful,
 
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with this program; if not, write to the Free Software
 
17
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
18
 */
 
19
 
 
20
#ifndef GRUB_LINUX_MACHINE_HEADER
 
21
#define GRUB_LINUX_MACHINE_HEADER       1
 
22
 
 
23
#define GRUB_LINUX_MAGIC_SIGNATURE      0x53726448      /* "HdrS" */
 
24
#define GRUB_LINUX_DEFAULT_SETUP_SECTS  4
 
25
#define GRUB_LINUX_FLAG_CAN_USE_HEAP    0x80
 
26
#define GRUB_LINUX_INITRD_MAX_ADDRESS   0x37FFFFFF
 
27
#define GRUB_LINUX_MAX_SETUP_SECTS      64
 
28
#define GRUB_LINUX_BOOT_LOADER_TYPE     0x72
 
29
#define GRUB_LINUX_HEAP_END_OFFSET      (0x9000 - 0x200)
 
30
 
 
31
#define GRUB_LINUX_BZIMAGE_ADDR         0x100000
 
32
#define GRUB_LINUX_ZIMAGE_ADDR          0x10000
 
33
#define GRUB_LINUX_OLD_REAL_MODE_ADDR   0x90000
 
34
#define GRUB_LINUX_SETUP_STACK          0x9000
 
35
 
 
36
#define GRUB_LINUX_FLAG_BIG_KERNEL      0x1
 
37
 
 
38
/* Linux's video mode selection support. Actually I hate it!  */
 
39
#define GRUB_LINUX_VID_MODE_NORMAL      0xFFFF
 
40
#define GRUB_LINUX_VID_MODE_EXTENDED    0xFFFE
 
41
#define GRUB_LINUX_VID_MODE_ASK         0xFFFD
 
42
 
 
43
#define GRUB_LINUX_CL_OFFSET            0x9000
 
44
#define GRUB_LINUX_CL_END_OFFSET        0x90FF
 
45
#define GRUB_LINUX_SETUP_MOVE_SIZE      0x9100
 
46
#define GRUB_LINUX_CL_MAGIC             0xA33F
 
47
 
 
48
#define GRUB_LINUX_EFI_SIGNATURE        \
 
49
  ('E' << 24 | 'F' << 16 | 'I' << 8 | 'L')
 
50
 
 
51
#ifndef ASM_FILE
 
52
 
 
53
/* For the Linux/i386 boot protocol version 2.03.  */
 
54
struct linux_kernel_header
 
55
 
56
  grub_uint8_t code1[0x0020];
 
57
  grub_uint16_t cl_magic;               /* Magic number 0xA33F */
 
58
  grub_uint16_t cl_offset;              /* The offset of command line */
 
59
  grub_uint8_t code2[0x01F1 - 0x0020 - 2 - 2];
 
60
  grub_uint8_t setup_sects;             /* The size of the setup in sectors */
 
61
  grub_uint16_t root_flags;             /* If the root is mounted readonly */
 
62
  grub_uint16_t syssize;                /* obsolete */
 
63
  grub_uint16_t swap_dev;               /* obsolete */
 
64
  grub_uint16_t ram_size;               /* obsolete */
 
65
  grub_uint16_t vid_mode;               /* Video mode control */
 
66
  grub_uint16_t root_dev;               /* Default root device number */
 
67
  grub_uint16_t boot_flag;              /* 0xAA55 magic number */
 
68
  grub_uint16_t jump;                   /* Jump instruction */
 
69
  grub_uint32_t header;                 /* Magic signature "HdrS" */
 
70
  grub_uint16_t version;                /* Boot protocol version supported */
 
71
  grub_uint32_t realmode_swtch;         /* Boot loader hook */
 
72
  grub_uint16_t start_sys;              /* The load-low segment (obsolete) */
 
73
  grub_uint16_t kernel_version;         /* Points to kernel version string */
 
74
  grub_uint8_t type_of_loader;          /* Boot loader identifier */
 
75
  grub_uint8_t loadflags;               /* Boot protocol option flags */
 
76
  grub_uint16_t setup_move_size;        /* Move to high memory size */
 
77
  grub_uint32_t code32_start;           /* Boot loader hook */
 
78
  grub_uint32_t ramdisk_image;          /* initrd load address */
 
79
  grub_uint32_t ramdisk_size;           /* initrd size */
 
80
  grub_uint32_t bootsect_kludge;        /* obsolete */
 
81
  grub_uint16_t heap_end_ptr;           /* Free memory after setup end */
 
82
  grub_uint16_t pad1;                   /* Unused */
 
83
  char *cmd_line_ptr;                   /* Points to the kernel command line */
 
84
  grub_uint32_t initrd_addr_max;        /* Highest address for initrd */
 
85
} __attribute__ ((packed));
 
86
 
 
87
/* Boot parameters for Linux based on 2.6.12. This is used by the setup
 
88
   sectors of Linux, and must be simulated by GRUB on EFI, because
 
89
   the setup sectors depend on BIOS.  */
 
90
struct linux_kernel_params
 
91
{
 
92
  grub_uint8_t video_cursor_x;          /* 0 */
 
93
  grub_uint8_t video_cursor_y;
 
94
 
 
95
  grub_uint16_t ext_mem;                /* 2 */
 
96
  
 
97
  grub_uint16_t video_page;             /* 4 */
 
98
  grub_uint8_t video_mode;              /* 6 */
 
99
  grub_uint8_t video_width;             /* 7 */
 
100
  
 
101
  grub_uint8_t padding1[0xa - 0x8];
 
102
  
 
103
  grub_uint16_t video_ega_bx;           /* a */
 
104
  
 
105
  grub_uint8_t padding2[0xe - 0xc];
 
106
  
 
107
  grub_uint8_t video_height;            /* e */
 
108
  grub_uint8_t have_vga;                /* f */
 
109
  grub_uint16_t font_size;              /* 10 */
 
110
  
 
111
  grub_uint16_t lfb_width;              /* 12 */
 
112
  grub_uint16_t lfb_height;             /* 14 */
 
113
  grub_uint16_t lfb_depth;              /* 16 */
 
114
  grub_uint32_t lfb_base;               /* 18 */
 
115
  grub_uint32_t lfb_size;               /* 1c */
 
116
 
 
117
  grub_uint16_t cl_magic;               /* 20 */
 
118
  grub_uint16_t cl_offset;
 
119
 
 
120
  grub_uint16_t lfb_line_len;           /* 24 */
 
121
  grub_uint8_t red_mask_size;           /* 26 */
 
122
  grub_uint8_t red_field_pos;
 
123
  grub_uint8_t green_mask_size;
 
124
  grub_uint8_t green_field_pos;
 
125
  grub_uint8_t blue_mask_size;
 
126
  grub_uint8_t blue_field_pos;
 
127
  grub_uint8_t reserved_mask_size;
 
128
  grub_uint8_t reserved_field_pos;
 
129
  grub_uint16_t vesapm_segment;         /* 2e */
 
130
  grub_uint16_t vesapm_offset;          /* 30 */
 
131
  grub_uint16_t lfb_pages;              /* 32 */
 
132
  grub_uint16_t vesa_attrib;            /* 34 */
 
133
 
 
134
  grub_uint8_t padding3[0x40 - 0x36];
 
135
 
 
136
  grub_uint16_t apm_version;            /* 40 */
 
137
  grub_uint16_t apm_code_segment;       /* 42 */
 
138
  grub_uint32_t apm_entry;              /* 44 */
 
139
  grub_uint16_t apm_16bit_code_segment; /* 48 */
 
140
  grub_uint16_t apm_data_segment;       /* 4a */
 
141
  grub_uint16_t apm_flags;              /* 4c */
 
142
  grub_uint32_t apm_code_len;           /* 4e */
 
143
  grub_uint16_t apm_data_len;           /* 52 */
 
144
  
 
145
  grub_uint8_t padding4[0x60 - 0x54];
 
146
  
 
147
  grub_uint32_t ist_signature;          /* 60 */
 
148
  grub_uint32_t ist_command;            /* 64 */
 
149
  grub_uint32_t ist_event;              /* 68 */
 
150
  grub_uint32_t ist_perf_level;         /* 6c */
 
151
 
 
152
  grub_uint8_t padding5[0x80 - 0x70];
 
153
  
 
154
  grub_uint8_t hd0_drive_info[0x10];    /* 80 */
 
155
  grub_uint8_t hd1_drive_info[0x10];    /* 90 */
 
156
  grub_uint16_t rom_config_len;         /* a0 */
 
157
 
 
158
  grub_uint8_t padding6[0x1c0 - 0xa2];
 
159
  
 
160
  grub_uint32_t efi_signature;          /* 1c0 */
 
161
  grub_uint32_t efi_system_table;       /* 1c4 */
 
162
  grub_uint32_t efi_mem_desc_size;      /* 1c8 */
 
163
  grub_uint32_t efi_mem_desc_version;   /* 1cc */
 
164
  grub_uint32_t efi_mmap;               /* 1d0 */
 
165
  grub_uint32_t efi_mmap_size;          /* 1d4 */
 
166
  
 
167
  grub_uint8_t padding7[0x1e0 - 0x1d8];
 
168
  
 
169
  grub_uint32_t alt_mem;                /* 1e0 */
 
170
  
 
171
  grub_uint8_t padding8[0x1e8 - 0x1e4];
 
172
  
 
173
  grub_uint32_t mmap_size;              /* 1e8 */
 
174
 
 
175
  grub_uint8_t padding9[0x1ff - 0x1ec];
 
176
  
 
177
  grub_uint8_t ps_mouse;                /* 1ff */
 
178
} __attribute__ ((packed));
 
179
#endif /* ! ASM_FILE */
 
180
 
 
181
#endif /* ! GRUB_LINUX_MACHINE_HEADER */