mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-25 00:29:23 +00:00
merge multiboot2 into mbtag-spec
This commit is contained in:
commit
98b3579549
7 files changed
+72
-225
No files matched your search
@@ -1,3 +1,38 @@
|
|||||||
|
2010-01-07 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
|
Kick out Multiboot 2 draft as a branch. Initially it is
|
||||||
|
identical to Multiboot 1, except for the magic numbers.
|
||||||
|
|
||||||
|
* doc/multiboot.h: Rename to ...
|
||||||
|
* doc/multiboot2.h: ... this. Update all users.
|
||||||
|
(MULTIBOOT_HEADER_MAGIC): Replace with ...
|
||||||
|
(MULTIBOOT2_HEADER_MAGIC): ... this. Update all users.
|
||||||
|
(MULTIBOOT_BOOTLOADER_MAGIC): Replace with ...
|
||||||
|
(MULTIBOOT2_BOOTLOADER_MAGIC): ... this. Update all users.
|
||||||
|
|
||||||
|
2010-01-07 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
|
* doc/multiboot.h (MULTIBOOT_UNSUPPORTED): Remove macro (moved to
|
||||||
|
GRUB).
|
||||||
|
|
||||||
|
2010-01-03 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
|
Install multiboot.h system-wide.
|
||||||
|
|
||||||
|
* doc/Makefile.am (pkginclude_HEADERS): New variable.
|
||||||
|
|
||||||
|
2010-01-03 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
|
* doc/boot.S (MULTIBOOT_HEADER_FLAGS): Redefine using macros.
|
||||||
|
|
||||||
|
2010-01-03 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
|
* Makefile.am (web-manual): Add `all' as dependency.
|
||||||
|
|
||||||
|
2010-01-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* doc/kernel.c (cmain): Add missing cast.
|
||||||
|
|
||||||
2010-01-01 Robert Millan <rmh.grub@aybabtu.com>
|
2010-01-01 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
* autogen.sh: Use `gnulib-tool' to install gendocs.sh.
|
* autogen.sh: Use `gnulib-tool' to install gendocs.sh.
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = 1.7 gnu
|
|||||||
SUBDIRS = doc
|
SUBDIRS = doc
|
||||||
|
|
||||||
.PHONY: web-manual
|
.PHONY: web-manual
|
||||||
web-manual:
|
web-manual: all
|
||||||
@cd '$(srcdir)/doc' ; \
|
@cd '$(srcdir)/doc' ; \
|
||||||
$(SHELL) ../gendocs.sh -o '$(abs_builddir)/doc/manual' \
|
$(SHELL) ../gendocs.sh -o '$(abs_builddir)/doc/manual' \
|
||||||
--email $(PACKAGE_BUGREPORT) $(PACKAGE) \
|
--email $(PACKAGE_BUGREPORT) $(PACKAGE) \
|
||||||
|
|||||||
+4
-3
@@ -1,9 +1,10 @@
|
|||||||
info_TEXINFOS = multiboot.texi
|
info_TEXINFOS = multiboot.texi
|
||||||
EXAMPLES = boot.S kernel.c multiboot.h
|
EXAMPLES = boot.S kernel.c multiboot2.h
|
||||||
multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi
|
multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot2.h.texi
|
||||||
SRC2TEXI = src2texi
|
SRC2TEXI = src2texi
|
||||||
noinst_SCRIPTS = $(SRC2TEXI)
|
noinst_SCRIPTS = $(SRC2TEXI)
|
||||||
EXTRA_PROGRAMS = kernel
|
EXTRA_PROGRAMS = kernel
|
||||||
|
pkginclude_HEADERS = multiboot2.h
|
||||||
|
|
||||||
# The example kernel is built if you specify --enable-example-kernel.
|
# The example kernel is built if you specify --enable-example-kernel.
|
||||||
if BUILD_EXAMPLE_KERNEL
|
if BUILD_EXAMPLE_KERNEL
|
||||||
@@ -13,7 +14,7 @@ kernel_CFLAGS = -fno-builtin -nostdinc -O -g -Wall \
|
|||||||
-imacros $(top_builddir)/config.h
|
-imacros $(top_builddir)/config.h
|
||||||
kernel_LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,100000 -Wl,--build-id=none
|
kernel_LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,100000 -Wl,--build-id=none
|
||||||
|
|
||||||
boot.o: multiboot.h
|
boot.o: multiboot2.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXTRA_DIST = $(man_MANS) $(noinst_SCRIPTS) \
|
EXTRA_DIST = $(man_MANS) $(noinst_SCRIPTS) \
|
||||||
|
|||||||
+6
-5
@@ -16,7 +16,7 @@
|
|||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#define ASM_FILE 1
|
#define ASM_FILE 1
|
||||||
#include <multiboot.h>
|
#include <multiboot2.h>
|
||||||
|
|
||||||
/* C symbol format. HAVE_ASM_USCORE is defined by configure. */
|
/* C symbol format. HAVE_ASM_USCORE is defined by configure. */
|
||||||
#ifdef HAVE_ASM_USCORE
|
#ifdef HAVE_ASM_USCORE
|
||||||
@@ -30,10 +30,11 @@
|
|||||||
|
|
||||||
/* The flags for the Multiboot header. */
|
/* The flags for the Multiboot header. */
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
# define MULTIBOOT_HEADER_FLAGS 0x0000000f
|
# define AOUT_KLUDGE 0
|
||||||
#else
|
#else
|
||||||
# define MULTIBOOT_HEADER_FLAGS 0x0001000f
|
# define AOUT_KLUDGE MULTIBOOT_AOUT_KLUDGE
|
||||||
#endif
|
#endif
|
||||||
|
#define MULTIBOOT_HEADER_FLAGS MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | AOUT_KLUDGE
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@@ -48,11 +49,11 @@ _start:
|
|||||||
/* Multiboot header. */
|
/* Multiboot header. */
|
||||||
multiboot_header:
|
multiboot_header:
|
||||||
/* magic */
|
/* magic */
|
||||||
.long MULTIBOOT_HEADER_MAGIC
|
.long MULTIBOOT2_HEADER_MAGIC
|
||||||
/* flags */
|
/* flags */
|
||||||
.long MULTIBOOT_HEADER_FLAGS
|
.long MULTIBOOT_HEADER_FLAGS
|
||||||
/* checksum */
|
/* checksum */
|
||||||
.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
|
.long -(MULTIBOOT2_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
|
||||||
#ifndef __ELF__
|
#ifndef __ELF__
|
||||||
/* header_addr */
|
/* header_addr */
|
||||||
.long multiboot_header
|
.long multiboot_header
|
||||||
|
|||||||
+15
-199
@@ -15,13 +15,10 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include <multiboot.h>
|
#include <multiboot2.h>
|
||||||
|
|
||||||
/* Macros. */
|
/* Macros. */
|
||||||
|
|
||||||
/* Check if the bit BIT in FLAGS is set. */
|
|
||||||
#define CHECK_FLAG(flags,bit) ((flags) & (1 << (bit)))
|
|
||||||
|
|
||||||
/* Some screen stuff. */
|
/* Some screen stuff. */
|
||||||
/* The number of columns. */
|
/* The number of columns. */
|
||||||
#define COLUMNS 80
|
#define COLUMNS 80
|
||||||
@@ -47,11 +44,23 @@ static void itoa (char *buf, int base, int d);
|
|||||||
static void putchar (int c);
|
static void putchar (int c);
|
||||||
void printf (const char *format, ...);
|
void printf (const char *format, ...);
|
||||||
|
|
||||||
static void
|
/* Check if MAGIC is valid and print the Multiboot information structure
|
||||||
tagged (unsigned long addr)
|
pointed by ADDR. */
|
||||||
|
void
|
||||||
|
cmain (unsigned long magic, unsigned long addr)
|
||||||
{
|
{
|
||||||
struct multiboot_tag *tag;
|
struct multiboot_tag *tag;
|
||||||
|
|
||||||
|
/* Clear the screen. */
|
||||||
|
cls ();
|
||||||
|
|
||||||
|
/* Am I booted by a Multiboot-compliant boot loader? */
|
||||||
|
if (magic != MULTIBOOT2_BOOTLOADER_MAGIC)
|
||||||
|
{
|
||||||
|
printf ("Invalid magic number: 0x%x\n", (unsigned) magic);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (tag = (struct multiboot_tag *) addr; tag->type != MULTIBOOT_TAG_TYPE_END;
|
for (tag = (struct multiboot_tag *) addr; tag->type != MULTIBOOT_TAG_TYPE_END;
|
||||||
tag = (struct multiboot_tag *) ((multiboot_uint8_t *) tag + tag->size))
|
tag = (struct multiboot_tag *) ((multiboot_uint8_t *) tag + tag->size))
|
||||||
{
|
{
|
||||||
@@ -193,199 +202,6 @@ tagged (unsigned long addr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Check if MAGIC is valid and print the Multiboot information structure
|
|
||||||
pointed by ADDR. */
|
|
||||||
void
|
|
||||||
cmain (unsigned long magic, unsigned long addr)
|
|
||||||
{
|
|
||||||
multiboot_info_t *mbi;
|
|
||||||
|
|
||||||
/* Clear the screen. */
|
|
||||||
cls ();
|
|
||||||
|
|
||||||
if (magic == MULTIBOOT_BOOTLOADER_MAGIC_TAGGED)
|
|
||||||
{
|
|
||||||
tagged (addr);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Am I booted by a Multiboot-compliant boot loader? */
|
|
||||||
if (magic != MULTIBOOT_BOOTLOADER_MAGIC)
|
|
||||||
{
|
|
||||||
printf ("Invalid magic number: 0x%x\n", (unsigned) magic);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set MBI to the address of the Multiboot information structure. */
|
|
||||||
mbi = (multiboot_info_t *) addr;
|
|
||||||
|
|
||||||
/* Print out the flags. */
|
|
||||||
printf ("flags = 0x%x\n", (unsigned) mbi->flags);
|
|
||||||
|
|
||||||
/* Are mem_* valid? */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 0))
|
|
||||||
printf ("mem_lower = %uKB, mem_upper = %uKB\n",
|
|
||||||
(unsigned) mbi->mem_lower, (unsigned) mbi->mem_upper);
|
|
||||||
|
|
||||||
/* Is boot_device valid? */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 1))
|
|
||||||
printf ("boot_device = 0x%x\n", (unsigned) mbi->boot_device);
|
|
||||||
|
|
||||||
/* Is the command line passed? */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 2))
|
|
||||||
printf ("cmdline = %s\n", (char *) mbi->cmdline);
|
|
||||||
|
|
||||||
/* Are mods_* valid? */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 3))
|
|
||||||
{
|
|
||||||
multiboot_module_t *mod;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
printf ("mods_count = %d, mods_addr = 0x%x\n",
|
|
||||||
(int) mbi->mods_count, (int) mbi->mods_addr);
|
|
||||||
for (i = 0, mod = (multiboot_module_t *) mbi->mods_addr;
|
|
||||||
i < mbi->mods_count;
|
|
||||||
i++, mod++)
|
|
||||||
printf (" mod_start = 0x%x, mod_end = 0x%x, cmdline = %s\n",
|
|
||||||
(unsigned) mod->mod_start,
|
|
||||||
(unsigned) mod->mod_end,
|
|
||||||
(char *) mod->cmdline);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Bits 4 and 5 are mutually exclusive! */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 4) && CHECK_FLAG (mbi->flags, 5))
|
|
||||||
{
|
|
||||||
printf ("Both bits 4 and 5 are set.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Is the symbol table of a.out valid? */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 4))
|
|
||||||
{
|
|
||||||
multiboot_aout_symbol_table_t *multiboot_aout_sym = &(mbi->u.aout_sym);
|
|
||||||
|
|
||||||
printf ("multiboot_aout_symbol_table: tabsize = 0x%0x, "
|
|
||||||
"strsize = 0x%x, addr = 0x%x\n",
|
|
||||||
(unsigned) multiboot_aout_sym->tabsize,
|
|
||||||
(unsigned) multiboot_aout_sym->strsize,
|
|
||||||
(unsigned) multiboot_aout_sym->addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Is the section header table of ELF valid? */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 5))
|
|
||||||
{
|
|
||||||
multiboot_elf_section_header_table_t *multiboot_elf_sec = &(mbi->u.elf_sec);
|
|
||||||
|
|
||||||
printf ("multiboot_elf_sec: num = %u, size = 0x%x,"
|
|
||||||
" addr = 0x%x, shndx = 0x%x\n",
|
|
||||||
(unsigned) multiboot_elf_sec->num, (unsigned) multiboot_elf_sec->size,
|
|
||||||
(unsigned) multiboot_elf_sec->addr, (unsigned) multiboot_elf_sec->shndx);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Are mmap_* valid? */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 6))
|
|
||||||
{
|
|
||||||
multiboot_memory_map_t *mmap;
|
|
||||||
|
|
||||||
printf ("mmap_addr = 0x%x, mmap_length = 0x%x\n",
|
|
||||||
(unsigned) mbi->mmap_addr, (unsigned) mbi->mmap_length);
|
|
||||||
for (mmap = (multiboot_memory_map_t *) mbi->mmap_addr;
|
|
||||||
(unsigned long) mmap < mbi->mmap_addr + mbi->mmap_length;
|
|
||||||
mmap = (multiboot_memory_map_t *) ((unsigned long) mmap
|
|
||||||
+ mmap->size + sizeof (mmap->size)))
|
|
||||||
printf (" size = 0x%x, base_addr = 0x%x%x,"
|
|
||||||
" length = 0x%x%x, type = 0x%x\n",
|
|
||||||
(unsigned) mmap->size,
|
|
||||||
mmap->addr >> 32,
|
|
||||||
mmap->addr & 0xffffffff,
|
|
||||||
mmap->len >> 32,
|
|
||||||
mmap->len & 0xffffffff,
|
|
||||||
(unsigned) mmap->type);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Draw diagonal blue line. */
|
|
||||||
if (CHECK_FLAG (mbi->flags, 12))
|
|
||||||
{
|
|
||||||
multiboot_uint32_t color;
|
|
||||||
unsigned i;
|
|
||||||
void *fb = (void *) (unsigned long) mbi->framebuffer_addr;
|
|
||||||
|
|
||||||
switch (mbi->framebuffer_type)
|
|
||||||
{
|
|
||||||
case MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED:
|
|
||||||
{
|
|
||||||
unsigned best_distance, distance;
|
|
||||||
struct multiboot_color *palette;
|
|
||||||
|
|
||||||
palette = (struct multiboot_color *) mbi->framebuffer_palette_addr;
|
|
||||||
|
|
||||||
color = 0;
|
|
||||||
best_distance = 4*256*256;
|
|
||||||
|
|
||||||
for (i = 0; i < mbi->framebuffer_palette_num_colors; i++)
|
|
||||||
{
|
|
||||||
distance = (0xff - palette[i].blue) * (0xff - palette[i].blue)
|
|
||||||
+ palette[i].red * palette[i].red
|
|
||||||
+ palette[i].green * palette[i].green;
|
|
||||||
if (distance < best_distance)
|
|
||||||
{
|
|
||||||
color = i;
|
|
||||||
best_distance = distance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MULTIBOOT_FRAMEBUFFER_TYPE_RGB:
|
|
||||||
color = ((1 << mbi->framebuffer_blue_mask_size) - 1)
|
|
||||||
<< mbi->framebuffer_blue_field_position;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
color = 0xffffffff;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
for (i = 0; i < mbi->framebuffer_width
|
|
||||||
&& i < mbi->framebuffer_height; i++)
|
|
||||||
{
|
|
||||||
switch (mbi->framebuffer_bpp)
|
|
||||||
{
|
|
||||||
case 8:
|
|
||||||
{
|
|
||||||
multiboot_uint8_t *pixel = fb + mbi->framebuffer_pitch * i + i;
|
|
||||||
*pixel = color;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
case 16:
|
|
||||||
{
|
|
||||||
multiboot_uint16_t *pixel
|
|
||||||
= fb + mbi->framebuffer_pitch * i + 2 * i;
|
|
||||||
*pixel = color;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
{
|
|
||||||
multiboot_uint32_t *pixel
|
|
||||||
= fb + mbi->framebuffer_pitch * i + 3 * i;
|
|
||||||
*pixel = (color & 0xffffff) | (*pixel & 0xff000000);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 32:
|
|
||||||
{
|
|
||||||
multiboot_uint32_t *pixel
|
|
||||||
= fb + mbi->framebuffer_pitch * i + 4 * i;
|
|
||||||
*pixel = color;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Clear the screen and initialize VIDEO, XPOS and YPOS. */
|
/* Clear the screen and initialize VIDEO, XPOS and YPOS. */
|
||||||
static void
|
static void
|
||||||
cls (void)
|
cls (void)
|
||||||
|
|||||||
+7
-7
@@ -1289,7 +1289,7 @@ Multiboot kernel. The source files can be found under the directory
|
|||||||
@file{doc} in the Multiboot source distribution.
|
@file{doc} in the Multiboot source distribution.
|
||||||
|
|
||||||
The kernel @file{kernel} consists of only three files: @file{boot.S},
|
The kernel @file{kernel} consists of only three files: @file{boot.S},
|
||||||
@file{kernel.c} and @file{multiboot.h}. The assembly source
|
@file{kernel.c} and @file{multiboot2.h}. The assembly source
|
||||||
@file{boot.S} is written in GAS (@pxref{Top, , GNU assembler, as.info,
|
@file{boot.S} is written in GAS (@pxref{Top, , GNU assembler, as.info,
|
||||||
The GNU assembler}), and contains the Multiboot information structure to
|
The GNU assembler}), and contains the Multiboot information structure to
|
||||||
comply with the specification. When a Multiboot-compliant boot loader
|
comply with the specification. When a Multiboot-compliant boot loader
|
||||||
@@ -1300,25 +1300,25 @@ the user of the halt state and stops forever until you push the reset
|
|||||||
key. The file @file{kernel.c} contains the function @code{cmain},
|
key. The file @file{kernel.c} contains the function @code{cmain},
|
||||||
which checks if the magic number passed by the boot loader is valid and
|
which checks if the magic number passed by the boot loader is valid and
|
||||||
so on, and some functions to print messages on the screen. The file
|
so on, and some functions to print messages on the screen. The file
|
||||||
@file{multiboot.h} defines some macros, such as the magic number for the
|
@file{multiboot2.h} defines some macros, such as the magic number for the
|
||||||
Multiboot header, the Multiboot header structure and the Multiboot
|
Multiboot header, the Multiboot header structure and the Multiboot
|
||||||
information structure.
|
information structure.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* multiboot.h::
|
* multiboot2.h::
|
||||||
* boot.S::
|
* boot.S::
|
||||||
* kernel.c::
|
* kernel.c::
|
||||||
* Other Multiboot kernels::
|
* Other Multiboot kernels::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
@node multiboot.h
|
@node multiboot2.h
|
||||||
@subsection multiboot.h
|
@subsection multiboot2.h
|
||||||
|
|
||||||
This is the source code in the file @file{multiboot.h}:
|
This is the source code in the file @file{multiboot2.h}:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@include multiboot.h.texi
|
@include multiboot2.h.texi
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* multiboot.h - Multiboot header file. */
|
/* multiboot2.h - Multiboot 2 header file. */
|
||||||
/* Copyright (C) 1999,2003,2007,2008,2009 Free Software Foundation, Inc.
|
/* Copyright (C) 1999,2003,2007,2008,2009,2010 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to
|
* of this software and associated documentation files (the "Software"), to
|
||||||
@@ -26,16 +26,10 @@
|
|||||||
#define MULTIBOOT_SEARCH 8192
|
#define MULTIBOOT_SEARCH 8192
|
||||||
|
|
||||||
/* The magic field should contain this. */
|
/* The magic field should contain this. */
|
||||||
#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
|
#define MULTIBOOT2_HEADER_MAGIC 0xe85250d6
|
||||||
|
|
||||||
/* This should be in %eax. */
|
/* This should be in %eax. */
|
||||||
#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002
|
#define MULTIBOOT2_BOOTLOADER_MAGIC 0x36d76289
|
||||||
|
|
||||||
/* This should be in %eax. */
|
|
||||||
#define MULTIBOOT_BOOTLOADER_MAGIC_TAGGED 0x3BADB002
|
|
||||||
|
|
||||||
/* The bits in the required part of flags field we don't support. */
|
|
||||||
#define MULTIBOOT_UNSUPPORTED 0x0000fff0
|
|
||||||
|
|
||||||
/* Alignment of multiboot modules. */
|
/* Alignment of multiboot modules. */
|
||||||
#define MULTIBOOT_MOD_ALIGN 0x00001000
|
#define MULTIBOOT_MOD_ALIGN 0x00001000
|
||||||
Reference in new issue
Block a user