15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* shared.h - definitions used in all GRUB-specific code */ 25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * GRUB -- GRand Unified Bootloader 45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. 55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This program is free software; you can redistribute it and/or modify 75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * it under the terms of the GNU General Public License as published by 85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * the Free Software Foundation; either version 2 of the License, or 95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * (at your option) any later version. 105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This program is distributed in the hope that it will be useful, 125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * GNU General Public License for more details. 155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * You should have received a copy of the GNU General Public License 175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * along with this program; if not, write to the Free Software 185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Generic defines to use anywhere 235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef GRUB_SHARED_HEADER 265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define GRUB_SHARED_HEADER 1 275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#include <config.h> 295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Add an underscore to a C symbol in assembler code if needed. */ 315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifdef HAVE_ASM_USCORE 325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define EXT_C(sym) _ ## sym 335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#else 345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define EXT_C(sym) sym 355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Maybe redirect memory requests through grub_scratch_mem. */ 385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifdef GRUB_UTIL 395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char *grub_scratch_mem; 405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem) 415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4) 425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#else 435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define RAW_ADDR(x) (x) 445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define RAW_SEG(x) (x) 455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Integer sizes 495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MAXINT 0x7FFFFFFF 525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Maximum command line size. Before you blindly increase this value, 545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project see the comment in char_io.c (get_cmdline). */ 555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MAX_CMDLINE 1600 565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define NEW_HEAPSIZE 1500 575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 512-byte scratch area */ 595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SCRATCHADDR RAW_ADDR (0x77e00) 605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SCRATCHSEG RAW_SEG (0x77e0) 615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This is the location of the raw device buffer. It is 31.5K 645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * in size. 655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUFFERLEN 0x7e00 685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUFFERADDR RAW_ADDR (0x70000) 695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUFFERSEG RAW_SEG (0x7000) 705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOT_PART_TABLE RAW_ADDR (0x07be) 725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * BIOS disk defines 755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BIOSDISK_READ 0x0 775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BIOSDISK_WRITE 0x1 785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BIOSDISK_ERROR_GEOMETRY 0x100 795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BIOSDISK_FLAG_LBA_EXTENSION 0x1 805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BIOSDISK_FLAG_CDROM 0x2 815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This is the filesystem (not raw device) buffer. 845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * It is 32K in size, do not overrun! 855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FSYS_BUFLEN 0x8000 885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define FSYS_BUF RAW_ADDR (0x68000) 895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Command-line buffer for Multiboot kernels and modules. This area 915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project includes the area into which Stage 1.5 and Stage 1 are loaded, but 925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project that's no problem. */ 935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MB_CMDLINE_BUF RAW_ADDR (0x2000) 945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MB_CMDLINE_BUFLEN 0x6000 955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The buffer for the password. */ 975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PASSWORD_BUF RAW_ADDR (0x78000) 985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PASSWORD_BUFLEN 0x200 995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* THe buffer for the filename of "/boot/grub/default". */ 1015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DEFAULT_FILE_BUF (PASSWORD_BUF + PASSWORD_BUFLEN) 1025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DEFAULT_FILE_BUFLEN 0x60 1035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The buffer for the command-line. */ 1055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CMDLINE_BUF (DEFAULT_FILE_BUF + DEFAULT_FILE_BUFLEN) 1065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CMDLINE_BUFLEN MAX_CMDLINE 1075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The kill buffer for the command-line. */ 1095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KILL_BUF (CMDLINE_BUF + CMDLINE_BUFLEN) 1105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KILL_BUFLEN MAX_CMDLINE 1115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The history buffer for the command-line. */ 1135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HISTORY_BUF (KILL_BUF + KILL_BUFLEN) 1145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HISTORY_SIZE 5 1155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define HISTORY_BUFLEN (MAX_CMDLINE * HISTORY_SIZE) 1165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The buffer for the completion. */ 1185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define COMPLETION_BUF (HISTORY_BUF + HISTORY_BUFLEN) 1195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define COMPLETION_BUFLEN MAX_CMDLINE 1205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The buffer for the unique string. */ 1225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UNIQUE_BUF (COMPLETION_BUF + COMPLETION_BUFLEN) 1235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UNIQUE_BUFLEN MAX_CMDLINE 1245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The buffer for the menu entries. */ 1265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MENU_BUF (UNIQUE_BUF + UNIQUE_BUFLEN) 1275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MENU_BUFLEN (0x8000 + PASSWORD_BUF - MENU_BUF) 1285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The size of the drive map. */ 1305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DRIVE_MAP_SIZE 8 1315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The size of the key map. */ 1335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KEY_MAP_SIZE 128 1345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The size of the io map. */ 1365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IO_MAP_SIZE 128 1375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Linux setup parameters 1405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */ 1435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_DEFAULT_SETUP_SECTS 4 1445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_FLAG_CAN_USE_HEAP 0x80 1455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_INITRD_MAX_ADDRESS 0x38000000 1465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_MAX_SETUP_SECTS 64 1475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_BOOT_LOADER_TYPE 0x71 1485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_HEAP_END_OFFSET (0x9000 - 0x200) 1495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_BZIMAGE_ADDR RAW_ADDR (0x100000) 1515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_ZIMAGE_ADDR RAW_ADDR (0x10000) 1525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_OLD_REAL_MODE_ADDR RAW_ADDR (0x90000) 1535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_SETUP_STACK 0x9000 1545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_FLAG_BIG_KERNEL 0x1 1565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Linux's video mode selection support. Actually I hate it! */ 1585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_VID_MODE_NORMAL 0xFFFF 1595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_VID_MODE_EXTENDED 0xFFFE 1605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_VID_MODE_ASK 0xFFFD 1615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_CL_OFFSET 0x9000 1635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_CL_END_OFFSET 0x90FF 1645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_SETUP_MOVE_SIZE 0x9100 1655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define LINUX_CL_MAGIC 0xA33F 1665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * General disk stuff 1695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SECTOR_SIZE 0x200 1725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SECTOR_BITS 9 1735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BIOS_FLAG_FIXED_DISK 0x80 1745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_LOCATION RAW_ADDR (0x7C00) 1765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_SIGNATURE 0xAA55 1775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_BPB_OFFSET 0x3 1785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_BPB_LENGTH 0x3B 1795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_BPB_SYSTEM_ID 0x3 1805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_BPB_HIDDEN_SECTORS 0x1C 1815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_PART_OFFSET 0x1BE 1825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_PART_LENGTH 0x40 1835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_SIG_OFFSET 0x1FE 1845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BOOTSEC_LISTSIZE 8 1855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Not bad, perhaps. */ 1875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define NETWORK_DRIVE 0x20 1885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * GRUB specific information 1915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * (in LSB order) 1925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#include <stage1.h> 1955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_VER_MAJ_OFFS 0x6 1975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_INSTALLPART 0x8 1985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_SAVED_ENTRYNO 0xc 1995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_STAGE2_ID 0x10 2005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_FORCE_LBA 0x11 2015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_VER_STR_OFFS 0x12 2025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Stage 2 identifiers */ 2045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_STAGE2 0 2055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_FFS_STAGE1_5 1 2065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_E2FS_STAGE1_5 2 2075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_FAT_STAGE1_5 3 2085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_MINIX_STAGE1_5 4 2095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_REISERFS_STAGE1_5 5 2105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_VSTAFS_STAGE1_5 6 2115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_JFS_STAGE1_5 7 2125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_XFS_STAGE1_5 8 2135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_ISO9660_STAGE1_5 9 2145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STAGE2_ID_UFS2_STAGE1_5 10 2155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef STAGE1_5 2175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_STAGE2 2185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#else 2195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# if defined(FSYS_FFS) 2205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_FFS_STAGE1_5 2215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_EXT2FS) 2225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_E2FS_STAGE1_5 2235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_FAT) 2245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_FAT_STAGE1_5 2255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_MINIX) 2265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_MINIX_STAGE1_5 2275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_REISERFS) 2285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_REISERFS_STAGE1_5 2295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_VSTAFS) 2305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_VSTAFS_STAGE1_5 2315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_JFS) 2325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_JFS_STAGE1_5 2335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_XFS) 2345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_XFS_STAGE1_5 2355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_ISO9660) 2365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_ISO9660_STAGE1_5 2375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# elif defined(FSYS_UFS2) 2385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define STAGE2_ID STAGE2_ID_UFS2_STAGE1_5 2395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# else 2405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# error "unknown Stage 2" 2415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# endif 2425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 2435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 2455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * defines for use when switching between real and protected mode 2465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 2475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CR0_PE_ON 0x1 2495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CR0_PE_OFF 0xfffffffe 2505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PROT_MODE_CSEG 0x8 2515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PROT_MODE_DSEG 0x10 2525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PSEUDO_RM_CSEG 0x18 2535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PSEUDO_RM_DSEG 0x20 2545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define STACKOFF (0x2000 - 0x10) 2555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PROTSTACKINIT (FSYS_BUF - 0x10) 2565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 2595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Assembly code defines 2605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 2615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * "EXT_C" is assumed to be defined in the Makefile by the configure 2625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * command. 2635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 2645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ENTRY(x) .globl EXT_C(x) ; EXT_C(x): 2665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define VARIABLE(x) ENTRY(x) 2675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define K_RDWR 0x60 /* keyboard data & cmds (read/write) */ 2705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define K_STATUS 0x64 /* keyboard status */ 2715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define K_CMD 0x64 /* keybd ctlr command (write-only) */ 2725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define K_OBUF_FUL 0x01 /* output buffer full */ 2745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define K_IBUF_FUL 0x02 /* input buffer full */ 2755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KC_CMD_WIN 0xd0 /* read output port */ 2775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KC_CMD_WOUT 0xd1 /* write output port */ 2785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KB_OUTPUT_MASK 0xdd /* enable output buffer full interrupt 2795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project enable data line 2805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project enable clock line */ 2815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KB_A20_ENABLE 0x02 2825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 2835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Codes for getchar. */ 2845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ASCII_CHAR(x) ((x) & 0xFF) 2855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#if !defined(GRUB_UTIL) || !defined(HAVE_LIBCURSES) 2865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_LEFT 0x4B00 2875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_RIGHT 0x4D00 2885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_UP 0x4800 2895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_DOWN 0x5000 2905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_IC 0x5200 /* insert char */ 2915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_DC 0x5300 /* delete char */ 2925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_BACKSPACE 0x0008 2935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_HOME 0x4700 2945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_END 0x4F00 2955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_NPAGE 0x5100 2965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define KEY_PPAGE 0x4900 2975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define A_NORMAL 0x7 2985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define A_REVERSE 0x70 2995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#elif defined(HAVE_NCURSES_CURSES_H) 3005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# include <ncurses/curses.h> 3015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#elif defined(HAVE_NCURSES_H) 3025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# include <ncurses.h> 3035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#elif defined(HAVE_CURSES_H) 3045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# include <curses.h> 3055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 3065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* In old BSD curses, A_NORMAL and A_REVERSE are not defined, so we 3085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project define them here if they are undefined. */ 3095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef A_NORMAL 3105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define A_NORMAL 0 3115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* ! A_NORMAL */ 3125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef A_REVERSE 3135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# ifdef A_STANDOUT 3145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define A_REVERSE A_STANDOUT 3155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# else /* ! A_STANDOUT */ 3165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define A_REVERSE 0 3175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# endif /* ! A_STANDOUT */ 3185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* ! A_REVERSE */ 3195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Define ACS_* ourselves, since the definitions are not consistent among 3215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project various curses implementations. */ 3225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_ULCORNER 3235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_URCORNER 3245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_LLCORNER 3255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_LRCORNER 3265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_HLINE 3275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_VLINE 3285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_LARROW 3295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_RARROW 3305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_UARROW 3315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef ACS_DARROW 3325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_ULCORNER '+' 3345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_URCORNER '+' 3355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_LLCORNER '+' 3365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_LRCORNER '+' 3375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_HLINE '-' 3385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_VLINE '|' 3395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_LARROW '<' 3405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_RARROW '>' 3415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_UARROW '^' 3425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define ACS_DARROW 'v' 3435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Special graphics characters for IBM displays. */ 3455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_UL 218 3465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_UR 191 3475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_LL 192 3485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_LR 217 3495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_HORIZ 196 3505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_VERT 179 3515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_LEFT 0x1b 3525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_RIGHT 0x1a 3535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_UP 0x18 3545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DISP_DOWN 0x19 3555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Remap some libc-API-compatible function names so that we prevent 3575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project circularararity. */ 3585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef WITHOUT_LIBC_STUBS 3595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define memmove grub_memmove 3605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define memcpy grub_memmove /* we don't need a separate memcpy */ 3615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define memset grub_memset 3625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define isspace grub_isspace 3635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define printf grub_printf 3645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define sprintf grub_sprintf 3655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef putchar 3665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define putchar grub_putchar 3675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define strncat grub_strncat 3685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define strstr grub_strstr 3695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define memcmp grub_memcmp 3705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define strcmp grub_strcmp 3715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define tolower grub_tolower 3725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define strlen grub_strlen 3735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define strcpy grub_strcpy 3745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* WITHOUT_LIBC_STUBS */ 3755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef ASM_FILE 3785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 3795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Below this should be ONLY defines and other constructs for C code. 3805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 3815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* multiboot stuff */ 3835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#include "mb_header.h" 3855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#include "mb_info.h" 3865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 3875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* For the Linux/i386 boot protocol version 2.03. */ 3885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct linux_kernel_header 3895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 3905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char code1[0x0020]; 3915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short cl_magic; /* Magic number 0xA33F */ 3925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short cl_offset; /* The offset of command line */ 3935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char code2[0x01F1 - 0x0020 - 2 - 2]; 3945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char setup_sects; /* The size of the setup in sectors */ 3955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short root_flags; /* If the root is mounted readonly */ 3965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short syssize; /* obsolete */ 3975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short swap_dev; /* obsolete */ 3985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short ram_size; /* obsolete */ 3995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short vid_mode; /* Video mode control */ 4005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short root_dev; /* Default root device number */ 4015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short boot_flag; /* 0xAA55 magic number */ 4025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short jump; /* Jump instruction */ 4035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long header; /* Magic signature "HdrS" */ 4045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short version; /* Boot protocol version supported */ 4055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long realmode_swtch; /* Boot loader hook */ 4065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long start_sys; /* Points to kernel version string */ 4075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char type_of_loader; /* Boot loader identifier */ 4085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char loadflags; /* Boot protocol option flags */ 4095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short setup_move_size; /* Move to high memory size */ 4105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long code32_start; /* Boot loader hook */ 4115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long ramdisk_image; /* initrd load address */ 4125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long ramdisk_size; /* initrd size */ 4135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long bootsect_kludge; /* obsolete */ 4145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short heap_end_ptr; /* Free memory after setup end */ 4155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short pad1; /* Unused */ 4165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char *cmd_line_ptr; /* Points to the kernel command line */ 4175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long initrd_addr_max; /* The highest address of initrd */ 4185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} __attribute__ ((packed)); 4195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Memory map address range descriptor used by GET_MMAP_ENTRY. */ 4215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct mmar_desc 4225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 4235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long desc_len; /* Size of this descriptor. */ 4245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long long addr; /* Base address. */ 4255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long long length; /* Length in bytes. */ 4265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long type; /* Type of address range. */ 4275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} __attribute__ ((packed)); 4285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* VBE controller information. */ 4305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct vbe_controller 4315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 4325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char signature[4]; 4335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short version; 4345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long oem_string; 4355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long capabilities; 4365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long video_mode; 4375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short total_memory; 4385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short oem_software_rev; 4395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long oem_vendor_name; 4405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long oem_product_name; 4415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long oem_product_rev; 4425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char reserved[222]; 4435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char oem_data[256]; 4445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} __attribute__ ((packed)); 4455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* VBE mode information. */ 4475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct vbe_mode 4485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 4495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short mode_attributes; 4505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char win_a_attributes; 4515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char win_b_attributes; 4525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short win_granularity; 4535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short win_size; 4545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short win_a_segment; 4555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short win_b_segment; 4565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long win_func; 4575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short bytes_per_scanline; 4585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* >=1.2 */ 4605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short x_resolution; 4615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short y_resolution; 4625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char x_char_size; 4635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char y_char_size; 4645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char number_of_planes; 4655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char bits_per_pixel; 4665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char number_of_banks; 4675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char memory_model; 4685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char bank_size; 4695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char number_of_image_pages; 4705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char reserved0; 4715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* direct color */ 4735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char red_mask_size; 4745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char red_field_position; 4755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char green_mask_size; 4765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char green_field_position; 4775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char blue_mask_size; 4785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char blue_field_position; 4795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char reserved_mask_size; 4805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char reserved_field_position; 4815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char direct_color_mode_info; 4825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* >=2.0 */ 4845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long phys_base; 4855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long reserved1; 4865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short reversed2; 4875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 4885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* >=3.0 */ 4895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short linear_bytes_per_scanline; 4905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char banked_number_of_image_pages; 4915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_number_of_image_pages; 4925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_red_mask_size; 4935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_red_field_position; 4945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_green_mask_size; 4955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_green_field_position; 4965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_blue_mask_size; 4975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_blue_field_position; 4985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_reserved_mask_size; 4995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char linear_reserved_field_position; 5005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long max_pixel_clock; 5015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char reserved3[189]; 5035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} __attribute__ ((packed)); 5045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#undef NULL 5075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define NULL ((void *) 0) 5085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Error codes (descriptions are in common.c) */ 5105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef enum 5115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 5125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NONE = 0, 5135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BAD_FILENAME, 5145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BAD_FILETYPE, 5155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BAD_GZIP_DATA, 5165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BAD_GZIP_HEADER, 5175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BAD_PART_TABLE, 5185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BAD_VERSION, 5195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BELOW_1MB, 5205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BOOT_COMMAND, 5215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BOOT_FAILURE, 5225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BOOT_FEATURES, 5235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_DEV_FORMAT, 5245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_DEV_VALUES, 5255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_EXEC_FORMAT, 5265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_FILELENGTH, 5275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_FILE_NOT_FOUND, 5285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_FSYS_CORRUPT, 5295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_FSYS_MOUNT, 5305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_GEOM, 5315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NEED_LX_KERNEL, 5325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NEED_MB_KERNEL, 5335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NO_DISK, 5345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NO_PART, 5355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NUMBER_PARSING, 5365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_OUTSIDE_PART, 5375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_READ, 5385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_SYMLINK_LOOP, 5395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_UNRECOGNIZED, 5405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_WONT_FIT, 5415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_WRITE, 5425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_BAD_ARGUMENT, 5435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_UNALIGNED, 5445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_PRIVILEGED, 5455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_DEV_NEED_INIT, 5465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NO_DISK_SPACE, 5475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project ERR_NUMBER_OVERFLOW, 5485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project MAX_ERR_NUM 5505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} grub_error_t; 5515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long install_partition; 5535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long boot_drive; 5545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long install_second_sector; 5555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern struct apm_info apm_bios_info; 5565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long boot_part_addr; 5575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int saved_entryno; 5585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned char force_lba; 5595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char version_string[]; 5605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char config_file[]; 5615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long linux_text_len; 5625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char *linux_data_tmp_addr; 5635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char *linux_data_real_addr; 5645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifdef GRUB_UTIL 5665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* If not using config file, this variable is set to zero, 5675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project otherwise non-zero. */ 5685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int use_config_file; 5695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* If using the preset menu, this variable is set to non-zero, 5705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project otherwise zero. */ 5715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int use_preset_menu; 5725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* If not using curses, this variable is set to zero, otherwise non-zero. */ 5735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int use_curses; 5745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The flag for verbose messages. */ 5755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int verbose; 5765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The flag for read-only. */ 5775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int read_only; 5785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The number of floppies to be probed. */ 5795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int floppy_disks; 5805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The map between BIOS drives and UNIX device file names. */ 5815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char **device_map; 5825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The filename which stores the information about a device map. */ 5835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char *device_map_file; 5845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The array of geometries. */ 5855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern struct geometry *disks; 5865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Assign DRIVE to a device name DEVICE. */ 5875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern void assign_device_name (int drive, const char *device); 5885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 5895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef STAGE1_5 5915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* GUI interface variables. */ 5925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define MAX_FALLBACK_ENTRIES 8 5935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int fallback_entries[MAX_FALLBACK_ENTRIES]; 5945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int fallback_entryno; 5955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int default_entry; 5965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int current_entryno; 5975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 5985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The constants for password types. */ 5995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef enum 6005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 6015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project PASSWORD_PLAIN, 6025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project PASSWORD_MD5, 6035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project PASSWORD_UNSUPPORTED 6045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} 6055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectpassword_t; 6065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char *password; 6085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern password_t password_type; 6095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int auth; 6105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char commands[]; 6115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* For `more'-like feature. */ 6135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int max_lines; 6145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int count_lines; 6155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int use_pager; 6165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 6175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef NO_DECOMPRESSION 6195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int no_decompression; 6205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int compressed_file; 6215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 6225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* instrumentation variables */ 6245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern void (*disk_read_hook) (int, int, int); 6255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern void (*disk_read_func) (int, int, int); 6265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef STAGE1_5 6285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The flag for debug mode. */ 6295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int debug; 6305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* STAGE1_5 */ 6315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long current_drive; 6335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long current_partition; 6345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int fsys_type; 6365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The information for a disk geometry. The CHS information is only for 6385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project DOS/Partition table compatibility, and the real number of sectors is 6395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project stored in TOTAL_SECTORS. */ 6405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct geometry 6415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 6425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The number of cylinders */ 6435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long cylinders; 6445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The number of heads */ 6455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long heads; 6465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The number of sectors */ 6475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long sectors; 6485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The total number of sectors */ 6495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long total_sectors; 6505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* Device sector size */ 6515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long sector_size; 6525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* Flags */ 6535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long flags; 6545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 6555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long part_start; 6575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long part_length; 6585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int current_slice; 6605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int buf_drive; 6625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int buf_track; 6635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern struct geometry buf_geom; 6645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* these are the current file position and maximum file position */ 6665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int filepos; 6675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int filemax; 6685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 6705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Common BIOS/boot data. 6715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 6725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern struct multiboot_info mbi; 6745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long saved_drive; 6755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long saved_partition; 6765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long cdrom_drive; 6775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef STAGE1_5 6785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long saved_mem_upper; 6795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned long extended_memory; 6805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 6815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 6835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Error variables. 6845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 6855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern grub_error_t errnum; 6875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern char *err_list[]; 6885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Simplify declaration of entry_addr. */ 6905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef void (*entry_func) (int, int, int, int, int, int) 6915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project __attribute__ ((noreturn)); 6925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern entry_func entry_addr; 6945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Enter the stage1.5/stage2 C code after the stack is set up. */ 6965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid cmain (void); 6975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 6985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Halt the processor (called after an unrecoverable error). */ 6995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid stop (void) __attribute__ ((noreturn)); 7005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Reboot the system. */ 7025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid grub_reboot (void) __attribute__ ((noreturn)); 7035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Halt the system, using APM if possible. If NO_APM is true, don't use 7055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project APM even if it is available. */ 7065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid grub_halt (int no_apm) __attribute__ ((noreturn)); 7075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Copy MAP to the drive map and set up int13_handler. */ 7095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid set_int13_handler (unsigned short *map); 7105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Set up int15_handler. */ 7125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid set_int15_handler (void); 7135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Restore the original int15 handler. */ 7155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid unset_int15_handler (void); 7165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Track the int13 handler to probe I/O address space. */ 7185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid track_int13 (int drive); 7195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The key map. */ 7215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned short bios_key_map[]; 7225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned short ascii_key_map[]; 7235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern unsigned short io_map[]; 7245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* calls for direct boot-loader chaining */ 7265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid chain_stage1 (unsigned long segment, unsigned long offset, 7275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long part_table_addr) 7285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project __attribute__ ((noreturn)); 7295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid chain_stage2 (unsigned long segment, unsigned long offset, 7305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project int second_sector) 7315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project __attribute__ ((noreturn)); 7325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* do some funky stuff, then boot linux */ 7345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid linux_boot (void) __attribute__ ((noreturn)); 7355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* do some funky stuff, then boot bzImage linux */ 7375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid big_linux_boot (void) __attribute__ ((noreturn)); 7385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* booting a multiboot executable */ 7405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid multi_boot (int start, int mb_info) __attribute__ ((noreturn)); 7415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* If LINEAR is nonzero, then set the Intel processor to linear mode. 7435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project Otherwise, bit 20 of all memory accesses is always forced to zero, 7445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project causing a wraparound effect for bugwards compatibility with the 7455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8086 CPU. */ 7465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid gateA20 (int linear); 7475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* memory probe routines */ 7495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_memsize (int type); 7505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_eisamemsize (void); 7515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Fetch the next entry in the memory map and return the continuation 7535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project value. DESC is a pointer to the descriptor buffer, and CONT is the 7545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project previous continuation value (0 to get the first entry in the 7555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project map). */ 7565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_mmap_entry (struct mmar_desc *desc, int cont); 7575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Get the linear address of a ROM configuration table. Return zero, 7595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project if fails. */ 7605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectunsigned long get_rom_config_table (void); 7615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Get APM BIOS information. */ 7635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid get_apm_info (void); 7645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Get VBE controller information. */ 7665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_vbe_controller_info (struct vbe_controller *controller); 7675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Get VBE mode information. */ 7695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_vbe_mode_info (int mode_number, struct vbe_mode *mode); 7705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Set VBE mode. */ 7725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint set_vbe_mode (int mode_number); 7735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Return the data area immediately following our code. */ 7755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_code_end (void); 7765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* low-level timing info */ 7785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint getrtsecs (void); 7795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint currticks (void); 7805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Clear the screen. */ 7825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid cls (void); 7835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Turn on/off cursor. */ 7855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint setcursor (int on); 7865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Get the current cursor position (where 0,0 is the top left hand 7885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project corner of the screen). Returns packed values, (RET >> 8) is x, 7895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project (RET & 0xff) is y. */ 7905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint getxy (void); 7915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Set the cursor position. */ 7935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid gotoxy (int x, int y); 7945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Displays an ASCII character. IBM displays will translate some 7965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project characters to special graphical ones (see the DISP_* constants). */ 7975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid grub_putchar (int c); 7985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 7995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Wait for a keypress, and return its packed BIOS/ASCII key code. 8005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project Use ASCII_CHAR(ret) to extract the ASCII code. */ 8015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint getkey (void); 8025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Like GETKEY, but doesn't block, and returns -1 if no keystroke is 8045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project available. */ 8055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint checkkey (void); 8065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Low-level disk I/O */ 8085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_diskinfo (int drive, struct geometry *geometry); 8095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint biosdisk (int subfunc, int drive, struct geometry *geometry, 8105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project int sector, int nsec, int segment); 8115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid stop_floppy (void); 8125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Command-line interface functions. */ 8145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef STAGE1_5 8155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The flags for the builtins. */ 8175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUILTIN_CMDLINE 0x1 /* Run in the command-line. */ 8185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUILTIN_MENU 0x2 /* Run in the menu. */ 8195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUILTIN_TITLE 0x4 /* Only for the command title. */ 8205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUILTIN_SCRIPT 0x8 /* Run in the script. */ 8215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUILTIN_NO_ECHO 0x10 /* Don't print command on booting. */ 8225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BUILTIN_HELP_LIST 0x20 /* Show help in listing. */ 8235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The table for a builtin. */ 8255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct builtin 8265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 8275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The command name. */ 8285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char *name; 8295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The callback function. */ 8305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project int (*func) (char *, int); 8315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The combination of the flags defined above. */ 8325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project int flags; 8335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The short version of the documentation. */ 8345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char *short_doc; 8355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project /* The long version of the documentation. */ 8365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project char *long_doc; 8375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 8385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* All the builtins are registered in this. */ 8405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern struct builtin *builtin_table[]; 8415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The constants for kernel types. */ 8435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef enum 8445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 8455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project KERNEL_TYPE_NONE, /* None is loaded. */ 8465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project KERNEL_TYPE_MULTIBOOT, /* Multiboot. */ 8475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project KERNEL_TYPE_LINUX, /* Linux. */ 8485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project KERNEL_TYPE_BIG_LINUX, /* Big Linux. */ 8495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project KERNEL_TYPE_FREEBSD, /* FreeBSD. */ 8505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project KERNEL_TYPE_NETBSD, /* NetBSD. */ 8515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project KERNEL_TYPE_CHAINLOADER /* Chainloader. */ 8525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project} 8535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectkernel_t; 8545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern kernel_t kernel_type; 8565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int show_menu; 8575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern int grub_timeout; 8585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid init_builtins (void); 8605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid init_config (void); 8615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectchar *skip_to (int after_equal, char *cmdline); 8625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct builtin *find_command (char *command); 8635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid print_cmdline_message (int forever); 8645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid enter_cmdline (char *heap, int forever); 8655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint run_script (char *script, char *heap); 8665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 8675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* C library replacement functions with identical semantics. */ 8695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid grub_printf (const char *format,...); 8705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_sprintf (char *buffer, const char *format, ...); 8715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_tolower (int c); 8725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_isspace (int c); 8735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_strncat (char *s1, const char *s2, int n); 8745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid *grub_memmove (void *to, const void *from, int len); 8755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid *grub_memset (void *start, int c, int len); 8765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_strncat (char *s1, const char *s2, int n); 8775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectchar *grub_strstr (const char *s1, const char *s2); 8785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_memcmp (const char *s1, const char *s2, int n); 8795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_strcmp (const char *s1, const char *s2); 8805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_strlen (const char *str); 8815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectchar *grub_strcpy (char *dest, const char *src); 8825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef GRUB_UTIL 8845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttypedef unsigned long grub_jmp_buf[6]; 8855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#else 8865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* In the grub shell, use the libc jmp_buf instead. */ 8875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# include <setjmp.h> 8885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define grub_jmp_buf jmp_buf 8895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 8905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifdef GRUB_UTIL 8925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define grub_setjmp setjmp 8935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# define grub_longjmp longjmp 8945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#else /* ! GRUB_UTIL */ 8955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_setjmp (grub_jmp_buf env); 8965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid grub_longjmp (grub_jmp_buf env, int val); 8975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* ! GRUB_UTIL */ 8985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 8995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The environment for restarting Stage 2. */ 9005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern grub_jmp_buf restart_env; 9015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The environment for restarting the command-line interface. */ 9025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectextern grub_jmp_buf restart_cmdline_env; 9035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* misc */ 9055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid init_page (void); 9065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid print_error (void); 9075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectchar *convert_to_ascii (char *buf, int c, ...); 9085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_cmdline (char *prompt, char *cmdline, int maxlen, 9095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project int echo_char, int history); 9105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint substring (const char *s1, const char *s2); 9115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint nul_terminate (char *str); 9125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint get_based_digit (int c, int base); 9135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint safe_parse_maxint (char **str_ptr, int *myint_ptr); 9145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint memcheck (int start, int len); 9155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid grub_putstr (const char *str); 9165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef NO_DECOMPRESSION 9185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Compression support. */ 9195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint gunzip_test_header (void); 9205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint gunzip_read (char *buf, int len); 9215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* NO_DECOMPRESSION */ 9225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint rawread (int drive, int sector, int byte_offset, int byte_len, char *buf); 9245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint devread (int sector, int byte_offset, int byte_len, char *buf); 9255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint rawwrite (int drive, int sector, char *buf); 9265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint devwrite (int sector, int sector_len, char *buf); 9275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Parse a device string and initialize the global parameters. */ 9295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectchar *set_device (char *device); 9305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint open_device (void); 9315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint real_open_partition (int flags); 9325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint open_partition (void); 9335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint next_partition (unsigned long drive, unsigned long dest, 9345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long *partition, int *type, 9355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long *start, unsigned long *len, 9365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long *offset, int *entry, 9375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long *ext_offset, char *buf); 9385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Sets device to the one represented by the SAVED_* parameters. */ 9405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint make_saved_active (void); 9415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Set or clear the current root partition's hidden flag. */ 9435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint set_partition_hidden_flag (int hidden); 9445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Open a file or directory on the active device, using GRUB's 9465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project internal filesystem support. */ 9475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_open (char *filename); 9485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Read LEN bytes into BUF from the file that was opened with 9505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project GRUB_OPEN. If LEN is -1, read all the remaining data in the file. */ 9515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_read (char *buf, int len); 9525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Reposition a file offset. */ 9545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint grub_seek (int offset); 9555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Close a file. */ 9575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid grub_close (void); 9585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* List the contents of the directory that was opened with GRUB_OPEN, 9605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project printing all completions. */ 9615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint dir (char *dirname); 9625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint set_bootdev (int hdbias); 9645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Display statistics on the current active device. */ 9665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid print_fsys_type (void); 9675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Display device and filename completions. */ 9695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid print_a_completion (char *filename); 9705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint print_completions (int is_filename, int is_completion); 9715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Copies the current partition data to the desired address. */ 9735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid copy_current_part_entry (char *buf); 9745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef STAGE1_5 9765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid bsd_boot (kernel_t type, int bootdev, char *arg) 9775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project __attribute__ ((noreturn)); 9785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Define flags for load_image here. */ 9805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Don't pass a Linux's mem option automatically. */ 9815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define KERNEL_LOAD_NO_MEM_OPTION (1 << 0) 9825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectkernel_t load_image (char *kernel, char *arg, kernel_t suggested_type, 9845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long load_flags); 9855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint load_module (char *module, char *arg); 9875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint load_initrd (char *initrd); 9885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint check_password(char *entered, char* expected, password_t type); 9905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif 9915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid init_bios_info (void); 9935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* ASM_FILE */ 9955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 9965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* ! GRUB_SHARED_HEADER */ 997