17c478bd9Sstevel@tonic-gate/* @r{multiboot.h - the header for Multiboot} */ 27c478bd9Sstevel@tonic-gate/* @r{Copyright (C) 1999, 2001 Free Software Foundation, Inc. 37c478bd9Sstevel@tonic-gate 47c478bd9Sstevel@tonic-gate This program is free software; you can redistribute it and/or modify 57c478bd9Sstevel@tonic-gate it under the terms of the GNU General Public License as published by 67c478bd9Sstevel@tonic-gate the Free Software Foundation; either version 2 of the License, or 77c478bd9Sstevel@tonic-gate (at your option) any later version. 87c478bd9Sstevel@tonic-gate 97c478bd9Sstevel@tonic-gate This program is distributed in the hope that it will be useful, 107c478bd9Sstevel@tonic-gate but WITHOUT ANY WARRANTY; without even the implied warranty of 117c478bd9Sstevel@tonic-gate MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 127c478bd9Sstevel@tonic-gate GNU General Public License for more details. 137c478bd9Sstevel@tonic-gate 147c478bd9Sstevel@tonic-gate You should have received a copy of the GNU General Public License 157c478bd9Sstevel@tonic-gate along with this program; if not, write to the Free Software 167c478bd9Sstevel@tonic-gate Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.} */ 177c478bd9Sstevel@tonic-gate 187c478bd9Sstevel@tonic-gate/* @r{Macros.} */ 197c478bd9Sstevel@tonic-gate 207c478bd9Sstevel@tonic-gate/* @r{The magic number for the Multiboot header.} */ 217c478bd9Sstevel@tonic-gate#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 227c478bd9Sstevel@tonic-gate 237c478bd9Sstevel@tonic-gate/* @r{The flags for the Multiboot header.} */ 247c478bd9Sstevel@tonic-gate#ifdef __ELF__ 257c478bd9Sstevel@tonic-gate# define MULTIBOOT_HEADER_FLAGS 0x00000003 267c478bd9Sstevel@tonic-gate#else 277c478bd9Sstevel@tonic-gate# define MULTIBOOT_HEADER_FLAGS 0x00010003 287c478bd9Sstevel@tonic-gate#endif 297c478bd9Sstevel@tonic-gate 307c478bd9Sstevel@tonic-gate/* @r{The magic number passed by a Multiboot-compliant boot loader.} */ 317c478bd9Sstevel@tonic-gate#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 327c478bd9Sstevel@tonic-gate 337c478bd9Sstevel@tonic-gate/* @r{The size of our stack (16KB).} */ 347c478bd9Sstevel@tonic-gate#define STACK_SIZE 0x4000 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate/* @r{C symbol format. HAVE_ASM_USCORE is defined by configure.} */ 377c478bd9Sstevel@tonic-gate#ifdef HAVE_ASM_USCORE 387c478bd9Sstevel@tonic-gate# define EXT_C(sym) _ ## sym 397c478bd9Sstevel@tonic-gate#else 407c478bd9Sstevel@tonic-gate# define EXT_C(sym) sym 417c478bd9Sstevel@tonic-gate#endif 427c478bd9Sstevel@tonic-gate 437c478bd9Sstevel@tonic-gate#ifndef ASM 447c478bd9Sstevel@tonic-gate/* @r{Do not include here in boot.S.} */ 457c478bd9Sstevel@tonic-gate 467c478bd9Sstevel@tonic-gate/* @r{Types.} */ 477c478bd9Sstevel@tonic-gate 487c478bd9Sstevel@tonic-gate/* @r{The Multiboot header.} */ 497c478bd9Sstevel@tonic-gatetypedef struct multiboot_header 507c478bd9Sstevel@tonic-gate@{ 517c478bd9Sstevel@tonic-gate unsigned long magic; 527c478bd9Sstevel@tonic-gate unsigned long flags; 537c478bd9Sstevel@tonic-gate unsigned long checksum; 547c478bd9Sstevel@tonic-gate unsigned long header_addr; 557c478bd9Sstevel@tonic-gate unsigned long load_addr; 567c478bd9Sstevel@tonic-gate unsigned long load_end_addr; 577c478bd9Sstevel@tonic-gate unsigned long bss_end_addr; 587c478bd9Sstevel@tonic-gate unsigned long entry_addr; 597c478bd9Sstevel@tonic-gate@} multiboot_header_t; 607c478bd9Sstevel@tonic-gate 617c478bd9Sstevel@tonic-gate/* @r{The symbol table for a.out.} */ 627c478bd9Sstevel@tonic-gatetypedef struct aout_symbol_table 637c478bd9Sstevel@tonic-gate@{ 647c478bd9Sstevel@tonic-gate unsigned long tabsize; 657c478bd9Sstevel@tonic-gate unsigned long strsize; 667c478bd9Sstevel@tonic-gate unsigned long addr; 677c478bd9Sstevel@tonic-gate unsigned long reserved; 687c478bd9Sstevel@tonic-gate@} aout_symbol_table_t; 697c478bd9Sstevel@tonic-gate 707c478bd9Sstevel@tonic-gate/* @r{The section header table for ELF.} */ 717c478bd9Sstevel@tonic-gatetypedef struct elf_section_header_table 727c478bd9Sstevel@tonic-gate@{ 737c478bd9Sstevel@tonic-gate unsigned long num; 747c478bd9Sstevel@tonic-gate unsigned long size; 757c478bd9Sstevel@tonic-gate unsigned long addr; 767c478bd9Sstevel@tonic-gate unsigned long shndx; 777c478bd9Sstevel@tonic-gate@} elf_section_header_table_t; 787c478bd9Sstevel@tonic-gate 797c478bd9Sstevel@tonic-gate/* @r{The Multiboot information.} */ 807c478bd9Sstevel@tonic-gatetypedef struct multiboot_info 817c478bd9Sstevel@tonic-gate@{ 827c478bd9Sstevel@tonic-gate unsigned long flags; 837c478bd9Sstevel@tonic-gate unsigned long mem_lower; 847c478bd9Sstevel@tonic-gate unsigned long mem_upper; 857c478bd9Sstevel@tonic-gate unsigned long boot_device; 867c478bd9Sstevel@tonic-gate unsigned long cmdline; 877c478bd9Sstevel@tonic-gate unsigned long mods_count; 887c478bd9Sstevel@tonic-gate unsigned long mods_addr; 897c478bd9Sstevel@tonic-gate union 907c478bd9Sstevel@tonic-gate @{ 917c478bd9Sstevel@tonic-gate aout_symbol_table_t aout_sym; 927c478bd9Sstevel@tonic-gate elf_section_header_table_t elf_sec; 937c478bd9Sstevel@tonic-gate @} u; 947c478bd9Sstevel@tonic-gate unsigned long mmap_length; 957c478bd9Sstevel@tonic-gate unsigned long mmap_addr; 967c478bd9Sstevel@tonic-gate@} multiboot_info_t; 977c478bd9Sstevel@tonic-gate 987c478bd9Sstevel@tonic-gate/* @r{The module structure.} */ 997c478bd9Sstevel@tonic-gatetypedef struct module 1007c478bd9Sstevel@tonic-gate@{ 1017c478bd9Sstevel@tonic-gate unsigned long mod_start; 1027c478bd9Sstevel@tonic-gate unsigned long mod_end; 1037c478bd9Sstevel@tonic-gate unsigned long string; 1047c478bd9Sstevel@tonic-gate unsigned long reserved; 1057c478bd9Sstevel@tonic-gate@} module_t; 1067c478bd9Sstevel@tonic-gate 1077c478bd9Sstevel@tonic-gate/* @r{The memory map. Be careful that the offset 0 is base_addr_low 1087c478bd9Sstevel@tonic-gate but no size.} */ 1097c478bd9Sstevel@tonic-gatetypedef struct memory_map 1107c478bd9Sstevel@tonic-gate@{ 1117c478bd9Sstevel@tonic-gate unsigned long size; 1127c478bd9Sstevel@tonic-gate unsigned long base_addr_low; 1137c478bd9Sstevel@tonic-gate unsigned long base_addr_high; 1147c478bd9Sstevel@tonic-gate unsigned long length_low; 1157c478bd9Sstevel@tonic-gate unsigned long length_high; 1167c478bd9Sstevel@tonic-gate unsigned long type; 1177c478bd9Sstevel@tonic-gate@} memory_map_t; 1187c478bd9Sstevel@tonic-gate 1197c478bd9Sstevel@tonic-gate#endif /* @r{! ASM} */ 120