usr/src/grub/grub-0.97/stage2/shared.h
author William Kucharski <William.Kucharski@Sun.COM>
Fri, 07 Nov 2008 21:36:41 -0700
changeset 8044 b3af80bbf173
parent 7563 usr/src/grub/grub-0.95/stage2/shared.h@84ec90ffc3f7
child 8242 e46e4b2f0a03
permissions -rw-r--r--
6731552 GRUB should have the ability to overlay a logo on the graphical splash screen 6762035 GRUB needs to understand new ext3 256 Byte inodes 6762243 GRUB should be updated to version 0.97
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/* shared.h - definitions used in all GRUB-specific code */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *  GRUB  --  GRand Unified Bootloader
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
 *  This program is free software; you can redistribute it and/or modify
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *  it under the terms of the GNU General Public License as published by
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 *  the Free Software Foundation; either version 2 of the License, or
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 *  (at your option) any later version.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 *  This program is distributed in the hope that it will be useful,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 *  GNU General Public License for more details.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 *  You should have received a copy of the GNU General Public License
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 *  along with this program; if not, write to the Free Software
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 */
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    20
/*
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    21
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    22
 * Use is subject to license terms.
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    23
 */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
 *  Generic defines to use anywhere
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#ifndef GRUB_SHARED_HEADER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#define GRUB_SHARED_HEADER	1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#include <config.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
/* Add an underscore to a C symbol in assembler code if needed. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
#ifdef HAVE_ASM_USCORE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
# define EXT_C(sym) _ ## sym
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
# define EXT_C(sym) sym
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
/* Maybe redirect memory requests through grub_scratch_mem. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
#ifdef GRUB_UTIL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
extern char *grub_scratch_mem;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
# define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
# define RAW_ADDR(x) (x)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
# define RAW_SEG(x) (x)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3912
diff changeset
    51
/* ZFS will use the top 4 Meg of physical memory (below 4Gig) for sratch */
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3912
diff changeset
    52
#define ZFS_SCRATCH_SIZE 0x400000
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3912
diff changeset
    53
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
    54
#define	MAXNAMELEN	256
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
    55
#define MIN(x, y) ((x) < (y) ? (x) : (y))
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
    56
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    57
/* Boot signature related defines for the findroot command */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    58
#define	BOOTSIGN_DIR	"/boot/grub/bootsign"
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    59
#define	BOOTSIGN_ARGLEN	(MAXNAMELEN + 10)	/* (<sign>,0,d) */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    60
#define	BOOTSIGN_LEN	(sizeof (BOOTSIGN_DIR) + 1 + BOOTSIGN_ARGLEN)
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    61
#define	BOOTSIGN_BACKUP	"/etc/bootsign"
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    62
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
 *  Integer sizes
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
#define MAXINT     0x7FFFFFFF
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
/* Maximum command line size. Before you blindly increase this value,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
   see the comment in char_io.c (get_cmdline).  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
#define MAX_CMDLINE 1600
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
#define NEW_HEAPSIZE 1500
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
/* 512-byte scratch area */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#define SCRATCHADDR  RAW_ADDR (0x77e00)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
#define SCRATCHSEG   RAW_SEG (0x77e0)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
 *  This is the location of the raw device buffer.  It is 31.5K
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
 *  in size.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
#define BUFFERLEN   0x7e00
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
#define BUFFERADDR  RAW_ADDR (0x70000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
#define BUFFERSEG   RAW_SEG (0x7000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
#define BOOT_PART_TABLE	RAW_ADDR (0x07be)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
 *  BIOS disk defines
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
#define BIOSDISK_READ			0x0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
#define BIOSDISK_WRITE			0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
#define BIOSDISK_ERROR_GEOMETRY		0x100
2215
59eeb39bebe2 6298213 Failure to check for errors causes stage2 to output improper error message when booting off of USB
szhou
parents: 1569
diff changeset
    95
#define BIOSDISK_ERROR_SHORT_IO		0x101
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
#define BIOSDISK_FLAG_LBA_EXTENSION	0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
#define BIOSDISK_FLAG_CDROM		0x2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
 *  This is the filesystem (not raw device) buffer.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
 *  It is 32K in size, do not overrun!
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
#define FSYS_BUFLEN  0x8000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
#define FSYS_BUF RAW_ADDR (0x68000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
/* Command-line buffer for Multiboot kernels and modules. This area
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
   includes the area into which Stage 1.5 and Stage 1 are loaded, but
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
   that's no problem.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
#define MB_CMDLINE_BUF		RAW_ADDR (0x2000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
#define MB_CMDLINE_BUFLEN	0x6000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
/* The buffer for the password.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
#define PASSWORD_BUF		RAW_ADDR (0x78000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
#define PASSWORD_BUFLEN		0x200
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
/* THe buffer for the filename of "/boot/grub/default".  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
#define DEFAULT_FILE_BUF	(PASSWORD_BUF + PASSWORD_BUFLEN)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
#define DEFAULT_FILE_BUFLEN	0x60
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
/* The buffer for the command-line.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
#define CMDLINE_BUF		(DEFAULT_FILE_BUF + DEFAULT_FILE_BUFLEN)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
#define CMDLINE_BUFLEN		MAX_CMDLINE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
/* The kill buffer for the command-line.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
#define KILL_BUF		(CMDLINE_BUF + CMDLINE_BUFLEN)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
#define KILL_BUFLEN		MAX_CMDLINE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
/* The history buffer for the command-line.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
#define HISTORY_BUF		(KILL_BUF + KILL_BUFLEN)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
#define HISTORY_SIZE		5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
#define HISTORY_BUFLEN		(MAX_CMDLINE * HISTORY_SIZE)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
/* The buffer for the completion.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
#define COMPLETION_BUF		(HISTORY_BUF + HISTORY_BUFLEN)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
#define COMPLETION_BUFLEN	MAX_CMDLINE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
/* The buffer for the unique string.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
#define UNIQUE_BUF		(COMPLETION_BUF + COMPLETION_BUFLEN)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
#define UNIQUE_BUFLEN		MAX_CMDLINE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
/* The buffer for the menu entries.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
#define MENU_BUF		(UNIQUE_BUF + UNIQUE_BUFLEN)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
#define MENU_BUFLEN		(0x8000 + PASSWORD_BUF - MENU_BUF)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
/* The size of the drive map.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
#define DRIVE_MAP_SIZE		8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
/* The size of the key map.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
#define KEY_MAP_SIZE		128
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
/* The size of the io map.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
#define IO_MAP_SIZE		128
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
 *  Linux setup parameters
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
#define LINUX_MAGIC_SIGNATURE		0x53726448	/* "HdrS" */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
#define LINUX_DEFAULT_SETUP_SECTS	4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
#define LINUX_FLAG_CAN_USE_HEAP		0x80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
#define LINUX_INITRD_MAX_ADDRESS	0x38000000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
#define LINUX_MAX_SETUP_SECTS		64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
#define LINUX_BOOT_LOADER_TYPE		0x71
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
#define LINUX_HEAP_END_OFFSET		(0x9000 - 0x200)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
#define LINUX_BZIMAGE_ADDR		RAW_ADDR (0x100000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
#define LINUX_ZIMAGE_ADDR		RAW_ADDR (0x10000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
#define LINUX_OLD_REAL_MODE_ADDR	RAW_ADDR (0x90000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
#define LINUX_SETUP_STACK		0x9000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
#define LINUX_FLAG_BIG_KERNEL		0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
/* Linux's video mode selection support. Actually I hate it!  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
#define LINUX_VID_MODE_NORMAL		0xFFFF
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
#define LINUX_VID_MODE_EXTENDED		0xFFFE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
#define LINUX_VID_MODE_ASK		0xFFFD
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
#define LINUX_CL_OFFSET			0x9000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
#define LINUX_CL_END_OFFSET		0x90FF
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
#define LINUX_SETUP_MOVE_SIZE		0x9100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
#define LINUX_CL_MAGIC			0xA33F
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
 *  General disk stuff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
#define SECTOR_SIZE		0x200
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
#define SECTOR_BITS		9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
#define BIOS_FLAG_FIXED_DISK	0x80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
#define BOOTSEC_LOCATION		RAW_ADDR (0x7C00)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
#define BOOTSEC_SIGNATURE		0xAA55
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
#define BOOTSEC_BPB_OFFSET		0x3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
#define BOOTSEC_BPB_LENGTH		0x3B
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
#define BOOTSEC_BPB_SYSTEM_ID		0x3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
#define BOOTSEC_BPB_HIDDEN_SECTORS	0x1C
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
#define BOOTSEC_PART_OFFSET		0x1BE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
#define BOOTSEC_PART_LENGTH		0x40
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
#define BOOTSEC_SIG_OFFSET		0x1FE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
#define BOOTSEC_LISTSIZE		8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
/* Not bad, perhaps.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
#define NETWORK_DRIVE	0x20
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
 *  GRUB specific information
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
 *    (in LSB order)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
#include <stage1.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
#define STAGE2_VER_MAJ_OFFS	0x6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
#define STAGE2_INSTALLPART	0x8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
#define STAGE2_SAVED_ENTRYNO	0xc
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
#define STAGE2_STAGE2_ID	0x10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
#define STAGE2_FORCE_LBA	0x11
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
#define STAGE2_VER_STR_OFFS	0x12
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
/* Stage 2 identifiers */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
#define STAGE2_ID_STAGE2		0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
#define STAGE2_ID_FFS_STAGE1_5		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
#define STAGE2_ID_E2FS_STAGE1_5		2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
#define STAGE2_ID_FAT_STAGE1_5		3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
#define STAGE2_ID_MINIX_STAGE1_5	4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
#define STAGE2_ID_REISERFS_STAGE1_5	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
#define STAGE2_ID_VSTAFS_STAGE1_5	6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
#define STAGE2_ID_JFS_STAGE1_5		7
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
#define STAGE2_ID_XFS_STAGE1_5		8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
#define STAGE2_ID_ISO9660_STAGE1_5	9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
#define STAGE2_ID_UFS2_STAGE1_5		10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
#define STAGE2_ID_UFS_STAGE1_5		11
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   233
#define STAGE2_ID_ZFS_STAGE1_5		12
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
#ifndef STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
# define STAGE2_ID	STAGE2_ID_STAGE2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
# if defined(FSYS_FFS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
#  define STAGE2_ID	STAGE2_ID_FFS_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
# elif defined(FSYS_EXT2FS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
#  define STAGE2_ID	STAGE2_ID_E2FS_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
# elif defined(FSYS_FAT)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
#  define STAGE2_ID	STAGE2_ID_FAT_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
# elif defined(FSYS_MINIX)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
#  define STAGE2_ID	STAGE2_ID_MINIX_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
# elif defined(FSYS_REISERFS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
#  define STAGE2_ID	STAGE2_ID_REISERFS_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
# elif defined(FSYS_VSTAFS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
#  define STAGE2_ID	STAGE2_ID_VSTAFS_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
# elif defined(FSYS_JFS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
#  define STAGE2_ID	STAGE2_ID_JFS_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
# elif defined(FSYS_XFS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
#  define STAGE2_ID	STAGE2_ID_XFS_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
# elif defined(FSYS_ISO9660)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
#  define STAGE2_ID	STAGE2_ID_ISO9660_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
# elif defined(FSYS_UFS2)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
#  define STAGE2_ID	STAGE2_ID_UFS2_STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
# elif defined(FSYS_UFS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
#  define STAGE2_ID	STAGE2_ID_UFS_STAGE1_5
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   260
# elif defined(FSYS_ZFS)
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   261
#  define STAGE2_ID	STAGE2_ID_ZFS_STAGE1_5
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
# else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
#  error "unknown Stage 2"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
# endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
 *  defines for use when switching between real and protected mode
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
#define CR0_PE_ON	0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
#define CR0_PE_OFF	0xfffffffe
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
#define PROT_MODE_CSEG	0x8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
#define PROT_MODE_DSEG  0x10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
#define PSEUDO_RM_CSEG	0x18
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
#define PSEUDO_RM_DSEG	0x20
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
#define STACKOFF	(0x2000 - 0x10)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
#define PROTSTACKINIT   (FSYS_BUF - 0x10)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
 * Assembly code defines
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
 * "EXT_C" is assumed to be defined in the Makefile by the configure
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
 *   command.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
#define ENTRY(x) .globl EXT_C(x) ; EXT_C(x):
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
#define VARIABLE(x) ENTRY(x)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
#define K_RDWR  	0x60	/* keyboard data & cmds (read/write) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
#define K_STATUS	0x64	/* keyboard status */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
#define K_CMD		0x64	/* keybd ctlr command (write-only) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
#define K_OBUF_FUL 	0x01	/* output buffer full */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
#define K_IBUF_FUL 	0x02	/* input buffer full */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
#define KC_CMD_WIN	0xd0	/* read  output port */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
#define KC_CMD_WOUT	0xd1	/* write output port */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
#define KB_OUTPUT_MASK  0xdd	/* enable output buffer full interrupt
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
				   enable data line
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
				   enable clock line */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
#define KB_A20_ENABLE   0x02
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
/* Codes for getchar. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
#define ASCII_CHAR(x)   ((x) & 0xFF)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
#if !defined(GRUB_UTIL) || !defined(HAVE_LIBCURSES)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
# define KEY_LEFT        0x4B00
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
# define KEY_RIGHT       0x4D00
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
# define KEY_UP          0x4800
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
# define KEY_DOWN        0x5000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
# define KEY_IC          0x5200	/* insert char */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
# define KEY_DC          0x5300	/* delete char */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
# define KEY_BACKSPACE   0x0008
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
# define KEY_HOME        0x4700
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
# define KEY_END         0x4F00
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
# define KEY_NPAGE       0x5100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
# define KEY_PPAGE       0x4900
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
# define A_NORMAL        0x7
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
# define A_REVERSE       0x70
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
#elif defined(HAVE_NCURSES_CURSES_H)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
# include <ncurses/curses.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
#elif defined(HAVE_NCURSES_H)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
# include <ncurses.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
#elif defined(HAVE_CURSES_H)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
# include <curses.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
/* In old BSD curses, A_NORMAL and A_REVERSE are not defined, so we
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
   define them here if they are undefined.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
#ifndef A_NORMAL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
# define A_NORMAL	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
#endif /* ! A_NORMAL */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
#ifndef A_REVERSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
# ifdef A_STANDOUT
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
#  define A_REVERSE	A_STANDOUT
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
# else /* ! A_STANDOUT */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
#  define A_REVERSE	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
# endif /* ! A_STANDOUT */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
#endif /* ! A_REVERSE */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
/* Define ACS_* ourselves, since the definitions are not consistent among
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
   various curses implementations.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
#undef ACS_ULCORNER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
#undef ACS_URCORNER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
#undef ACS_LLCORNER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
#undef ACS_LRCORNER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
#undef ACS_HLINE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
#undef ACS_VLINE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
#undef ACS_LARROW
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
#undef ACS_RARROW
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
#undef ACS_UARROW
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
#undef ACS_DARROW
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
#define ACS_ULCORNER	'+'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
#define ACS_URCORNER	'+'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
#define ACS_LLCORNER	'+'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
#define ACS_LRCORNER	'+'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
#define ACS_HLINE	'-'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
#define ACS_VLINE	'|'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
#define ACS_LARROW	'<'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
#define ACS_RARROW	'>'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
#define ACS_UARROW	'^'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
#define ACS_DARROW	'v'
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   367
/* Special graphics characters for IBM displays. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   368
#define DISP_UL		218
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   369
#define DISP_UR		191
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   370
#define DISP_LL		192
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   371
#define DISP_LR		217
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   372
#define DISP_HORIZ	196
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   373
#define DISP_VERT	179
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   374
#define DISP_LEFT	0x1b
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   375
#define DISP_RIGHT	0x1a
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   376
#define DISP_UP		0x18
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   377
#define DISP_DOWN	0x19
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   378
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   379
/* Remap some libc-API-compatible function names so that we prevent
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   380
   circularararity. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   381
#ifndef WITHOUT_LIBC_STUBS
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   382
#define memmove grub_memmove
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   383
#define memcpy grub_memmove	/* we don't need a separate memcpy */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   384
#define memset grub_memset
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   385
#undef isspace
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   386
#define isspace grub_isspace
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   387
#define printf grub_printf
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   388
#define sprintf grub_sprintf
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   389
#undef putchar
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   390
#define putchar grub_putchar
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   391
#define strncat grub_strncat
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   392
#define strstr grub_strstr
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   393
#define memcmp grub_memcmp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   394
#define strcmp grub_strcmp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   395
#define tolower grub_tolower
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   396
#define strlen grub_strlen
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   397
#define strcpy grub_strcpy
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   398
#endif /* WITHOUT_LIBC_STUBS */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   399
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   400
#define UNDI_STACK (512 + 64) << 10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   401
#define UNDI_STACK_SEG (UNDI_STACK >> 4) /*  PXE load GRUB here */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   402
#define UNDI_STACK_OFF (0x10000 - 0x10)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   403
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   404
#ifndef ASM_FILE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   405
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   406
 *  Below this should be ONLY defines and other constructs for C code.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   407
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   408
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   409
/* multiboot stuff */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   410
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   411
#include "mb_header.h"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   412
#include "mb_info.h"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   413
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   414
/* For the Linux/i386 boot protocol version 2.03.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   415
struct linux_kernel_header
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   416
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   417
  char code1[0x0020];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   418
  unsigned short cl_magic;		/* Magic number 0xA33F */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   419
  unsigned short cl_offset;		/* The offset of command line */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   420
  char code2[0x01F1 - 0x0020 - 2 - 2];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   421
  unsigned char setup_sects;		/* The size of the setup in sectors */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   422
  unsigned short root_flags;		/* If the root is mounted readonly */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   423
  unsigned short syssize;		/* obsolete */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   424
  unsigned short swap_dev;		/* obsolete */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   425
  unsigned short ram_size;		/* obsolete */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   426
  unsigned short vid_mode;		/* Video mode control */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   427
  unsigned short root_dev;		/* Default root device number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   428
  unsigned short boot_flag;		/* 0xAA55 magic number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   429
  unsigned short jump;			/* Jump instruction */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   430
  unsigned long header;			/* Magic signature "HdrS" */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   431
  unsigned short version;		/* Boot protocol version supported */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   432
  unsigned long realmode_swtch;		/* Boot loader hook */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   433
  unsigned long start_sys;		/* Points to kernel version string */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   434
  unsigned char type_of_loader;		/* Boot loader identifier */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   435
  unsigned char loadflags;		/* Boot protocol option flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   436
  unsigned short setup_move_size;	/* Move to high memory size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   437
  unsigned long code32_start;		/* Boot loader hook */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   438
  unsigned long ramdisk_image;		/* initrd load address */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   439
  unsigned long ramdisk_size;		/* initrd size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   440
  unsigned long bootsect_kludge;	/* obsolete */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   441
  unsigned short heap_end_ptr;		/* Free memory after setup end */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   442
  unsigned short pad1;			/* Unused */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   443
  char *cmd_line_ptr;			/* Points to the kernel command line */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   444
  unsigned long initrd_addr_max;	/* The highest address of initrd */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   445
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   446
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   447
/* Memory map address range descriptor used by GET_MMAP_ENTRY. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   448
struct mmar_desc
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   449
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   450
  unsigned long desc_len;	/* Size of this descriptor. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   451
  unsigned long long addr;	/* Base address. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   452
  unsigned long long length;	/* Length in bytes. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   453
  unsigned long type;		/* Type of address range. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   454
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   455
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   456
/* VBE controller information.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   457
struct vbe_controller
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   458
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   459
  unsigned char signature[4];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   460
  unsigned short version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   461
  unsigned long oem_string;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   462
  unsigned long capabilities;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   463
  unsigned long video_mode;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   464
  unsigned short total_memory;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   465
  unsigned short oem_software_rev;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   466
  unsigned long oem_vendor_name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   467
  unsigned long oem_product_name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   468
  unsigned long oem_product_rev;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   469
  unsigned char reserved[222];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   470
  unsigned char oem_data[256];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   471
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   472
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   473
/* VBE mode information.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   474
struct vbe_mode
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   475
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   476
  unsigned short mode_attributes;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   477
  unsigned char win_a_attributes;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   478
  unsigned char win_b_attributes;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   479
  unsigned short win_granularity;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   480
  unsigned short win_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   481
  unsigned short win_a_segment;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   482
  unsigned short win_b_segment;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   483
  unsigned long win_func;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   484
  unsigned short bytes_per_scanline;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   485
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   486
  /* >=1.2 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   487
  unsigned short x_resolution;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   488
  unsigned short y_resolution;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   489
  unsigned char x_char_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   490
  unsigned char y_char_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   491
  unsigned char number_of_planes;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   492
  unsigned char bits_per_pixel;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   493
  unsigned char number_of_banks;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   494
  unsigned char memory_model;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   495
  unsigned char bank_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   496
  unsigned char number_of_image_pages;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   497
  unsigned char reserved0;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   498
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   499
  /* direct color */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   500
  unsigned char red_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   501
  unsigned char red_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   502
  unsigned char green_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   503
  unsigned char green_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   504
  unsigned char blue_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   505
  unsigned char blue_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   506
  unsigned char reserved_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   507
  unsigned char reserved_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   508
  unsigned char direct_color_mode_info;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   509
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   510
  /* >=2.0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   511
  unsigned long phys_base;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   512
  unsigned long reserved1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   513
  unsigned short reversed2;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   514
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   515
  /* >=3.0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   516
  unsigned short linear_bytes_per_scanline;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   517
  unsigned char banked_number_of_image_pages;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   518
  unsigned char linear_number_of_image_pages;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   519
  unsigned char linear_red_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   520
  unsigned char linear_red_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   521
  unsigned char linear_green_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   522
  unsigned char linear_green_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   523
  unsigned char linear_blue_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   524
  unsigned char linear_blue_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   525
  unsigned char linear_reserved_mask_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   526
  unsigned char linear_reserved_field_position;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   527
  unsigned long max_pixel_clock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   528
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   529
  unsigned char reserved3[189];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   530
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   531
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   532
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   533
#undef NULL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   534
#define NULL         ((void *) 0)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   535
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   536
/* Error codes (descriptions are in common.c) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   537
typedef enum
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   538
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   539
  ERR_NONE = 0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   540
  ERR_BAD_FILENAME,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   541
  ERR_BAD_FILETYPE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   542
  ERR_BAD_GZIP_DATA,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   543
  ERR_BAD_GZIP_HEADER,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   544
  ERR_BAD_PART_TABLE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   545
  ERR_BAD_VERSION,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   546
  ERR_BELOW_1MB,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   547
  ERR_BOOT_COMMAND,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   548
  ERR_BOOT_FAILURE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   549
  ERR_BOOT_FEATURES,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   550
  ERR_DEV_FORMAT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   551
  ERR_DEV_VALUES,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   552
  ERR_EXEC_FORMAT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   553
  ERR_FILELENGTH,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   554
  ERR_FILE_NOT_FOUND,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   555
  ERR_FSYS_CORRUPT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   556
  ERR_FSYS_MOUNT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   557
  ERR_GEOM,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   558
  ERR_NEED_LX_KERNEL,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   559
  ERR_NEED_MB_KERNEL,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   560
  ERR_NO_DISK,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   561
  ERR_NO_PART,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   562
  ERR_NUMBER_PARSING,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   563
  ERR_OUTSIDE_PART,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   564
  ERR_READ,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   565
  ERR_SYMLINK_LOOP,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   566
  ERR_UNRECOGNIZED,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   567
  ERR_WONT_FIT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   568
  ERR_WRITE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   569
  ERR_BAD_ARGUMENT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   570
  ERR_UNALIGNED,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   571
  ERR_PRIVILEGED,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   572
  ERR_DEV_NEED_INIT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   573
  ERR_NO_DISK_SPACE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   574
  ERR_NUMBER_OVERFLOW,
2215
59eeb39bebe2 6298213 Failure to check for errors causes stage2 to output improper error message when booting off of USB
szhou
parents: 1569
diff changeset
   575
  ERR_BAD_GZIP_CRC,
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   576
  ERR_FILESYSTEM_NOT_FOUND,
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5084
diff changeset
   577
  ERR_NO_BOOTPATH,
7300
3f0c3af330d3 6667976 support booting up a snapshot root dataset
Eric Taylor <Eric.Taylor@Sun.COM>
parents: 7147
diff changeset
   578
  ERR_NEWER_VERSION,
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   579
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   580
  MAX_ERR_NUM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   581
} grub_error_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   582
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   583
extern unsigned long install_partition;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   584
extern unsigned long boot_drive;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   585
extern unsigned long install_second_sector;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   586
extern struct apm_info apm_bios_info;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   587
extern unsigned long boot_part_addr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   588
extern int saved_entryno;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   589
extern unsigned char force_lba;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   590
extern char version_string[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   591
extern char config_file[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   592
extern unsigned long linux_text_len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   593
extern char *linux_data_tmp_addr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   594
extern char *linux_data_real_addr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   595
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   596
#ifdef GRUB_UTIL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   597
/* If not using config file, this variable is set to zero,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   598
   otherwise non-zero.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   599
extern int use_config_file;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   600
/* If using the preset menu, this variable is set to non-zero,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   601
   otherwise zero.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   602
extern int use_preset_menu;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   603
/* If not using curses, this variable is set to zero, otherwise non-zero.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   604
extern int use_curses;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   605
/* The flag for verbose messages.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   606
extern int verbose;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   607
/* The flag for read-only.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   608
extern int read_only;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   609
/* The number of floppies to be probed.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   610
extern int floppy_disks;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   611
/* The map between BIOS drives and UNIX device file names.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   612
extern char **device_map;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   613
/* The filename which stores the information about a device map.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   614
extern char *device_map_file;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   615
/* The array of geometries.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   616
extern struct geometry *disks;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   617
/* Assign DRIVE to a device name DEVICE.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   618
extern void assign_device_name (int drive, const char *device);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   619
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   620
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   621
#ifndef STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   622
/* GUI interface variables. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   623
# define MAX_FALLBACK_ENTRIES	8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   624
extern int fallback_entries[MAX_FALLBACK_ENTRIES];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   625
extern int fallback_entryno;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   626
extern int default_entry;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   627
extern int current_entryno;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   628
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   629
/* The constants for password types.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   630
typedef enum
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   631
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   632
  PASSWORD_PLAIN,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   633
  PASSWORD_MD5,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   634
  PASSWORD_UNSUPPORTED
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   635
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   636
password_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   637
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   638
extern char *password;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   639
extern password_t password_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   640
extern int auth;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   641
extern char commands[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   642
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   643
/* For `more'-like feature.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   644
extern int max_lines;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   645
extern int count_lines;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   646
extern int use_pager;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   647
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   648
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   649
#ifndef NO_DECOMPRESSION
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   650
extern int no_decompression;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   651
extern int compressed_file;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   652
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   653
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   654
/* instrumentation variables */
7563
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   655
extern void (*disk_read_hook) (unsigned int, int, int);
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   656
extern void (*disk_read_func) (unsigned int, int, int);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   657
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   658
#ifndef STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   659
/* The flag for debug mode.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   660
extern int debug;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   661
#endif /* STAGE1_5 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   662
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   663
extern unsigned long current_drive;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   664
extern unsigned long current_partition;
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   665
extern char current_rootpool[MAXNAMELEN];
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   666
extern char current_bootfs[MAXNAMELEN];
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5084
diff changeset
   667
extern char current_bootpath[MAXNAMELEN];
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   668
extern unsigned long long current_bootfs_obj;
7147
1e1d75c88283 6704717 ZFS mirrored root doesn't live up to expectations
taylor
parents: 6448
diff changeset
   669
extern char current_devid[MAXNAMELEN];
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents: 2215
diff changeset
   670
extern int is_zfs_mount;
7147
1e1d75c88283 6704717 ZFS mirrored root doesn't live up to expectations
taylor
parents: 6448
diff changeset
   671
extern unsigned long best_drive;
1e1d75c88283 6704717 ZFS mirrored root doesn't live up to expectations
taylor
parents: 6448
diff changeset
   672
extern unsigned long best_part;
1e1d75c88283 6704717 ZFS mirrored root doesn't live up to expectations
taylor
parents: 6448
diff changeset
   673
extern int find_best_root;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   674
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   675
extern int fsys_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   676
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   677
/* The information for a disk geometry. The CHS information is only for
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   678
   DOS/Partition table compatibility, and the real number of sectors is
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   679
   stored in TOTAL_SECTORS.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   680
struct geometry
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   681
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   682
  /* The number of cylinders */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   683
  unsigned long cylinders;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   684
  /* The number of heads */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   685
  unsigned long heads;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   686
  /* The number of sectors */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   687
  unsigned long sectors;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   688
  /* The total number of sectors */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   689
  unsigned long total_sectors;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   690
  /* Device sector size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   691
  unsigned long sector_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   692
  /* Flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   693
  unsigned long flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   694
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   695
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   696
extern unsigned long part_start;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   697
extern unsigned long part_length;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   698
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   699
extern int current_slice;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   700
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   701
extern int buf_drive;
7563
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   702
#define BUF_CACHE_INVALID 0xffffffff
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   703
extern unsigned int buf_track;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   704
extern struct geometry buf_geom;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   705
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   706
/* these are the current file position and maximum file position */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   707
extern int filepos;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   708
extern int filemax;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   709
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   710
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   711
 *  Common BIOS/boot data.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   712
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   713
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   714
extern struct multiboot_info mbi;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   715
extern unsigned long saved_drive;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   716
extern unsigned long saved_partition;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   717
extern unsigned long cdrom_drive;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   718
#ifndef STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   719
#ifdef SOLARIS_NETBOOT
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   720
extern unsigned long dhcpack_length;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   721
extern unsigned long dhcpack_buf;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   722
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   723
extern unsigned long saved_mem_upper;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   724
extern unsigned long extended_memory;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   725
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   726
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   727
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   728
 *  Error variables.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   729
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   730
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   731
extern grub_error_t errnum;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   732
extern char *err_list[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   733
1372
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   734
/* don't print geeky noise */
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   735
typedef enum
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   736
{
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   737
  SILENT,
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   738
  VERBOSE,
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   739
  DEFER_SILENT,
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   740
  DEFER_VERBOSE
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   741
} silent_status;
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   742
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   743
/* one screen worth of messages 80x24 = 1920 chars -- more with newlines */
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   744
#define	SCREENBUF 2000
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   745
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   746
struct silentbuf {
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   747
	silent_status status;
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   748
	int looped;
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   749
	char buffer[SCREENBUF];
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   750
	char *buffer_start;
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   751
};
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   752
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   753
extern struct silentbuf silent;
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   754
extern int reset_term;
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   755
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   756
/* Simplify declaration of entry_addr. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   757
typedef void (*entry_func) (int, int, int, int, int, int)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   758
     __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   759
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   760
extern entry_func entry_addr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   761
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   762
/* Enter the stage1.5/stage2 C code after the stack is set up. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   763
void cmain (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   764
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   765
/* Halt the processor (called after an unrecoverable error). */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   766
void stop (void) __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   767
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   768
/* Reboot the system.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   769
void grub_reboot (void) __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   770
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   771
/* Halt the system, using APM if possible. If NO_APM is true, don't use
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   772
   APM even if it is available.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   773
void grub_halt (int no_apm) __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   774
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   775
/* Copy MAP to the drive map and set up int13_handler.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   776
void set_int13_handler (unsigned short *map);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   777
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   778
/* Set up int15_handler.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   779
void set_int15_handler (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   780
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   781
/* Restore the original int15 handler.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   782
void unset_int15_handler (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   783
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   784
/* Track the int13 handler to probe I/O address space.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   785
void track_int13 (int drive);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   786
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   787
/* The key map.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   788
extern unsigned short bios_key_map[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   789
extern unsigned short ascii_key_map[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   790
extern unsigned short io_map[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   791
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   792
/* calls for direct boot-loader chaining */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   793
void chain_stage1 (unsigned long segment, unsigned long offset,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   794
		   unsigned long part_table_addr)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   795
     __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   796
void chain_stage2 (unsigned long segment, unsigned long offset,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   797
		   int second_sector)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   798
     __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   799
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   800
/* do some funky stuff, then boot linux */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   801
void linux_boot (void) __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   802
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   803
/* do some funky stuff, then boot bzImage linux */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   804
void big_linux_boot (void) __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   805
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   806
/* booting a multiboot executable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   807
void multi_boot (int start, int mb_info) __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   808
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   809
/* If LINEAR is nonzero, then set the Intel processor to linear mode.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   810
   Otherwise, bit 20 of all memory accesses is always forced to zero,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   811
   causing a wraparound effect for bugwards compatibility with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   812
   8086 CPU. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   813
void gateA20 (int linear);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   814
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   815
/* memory probe routines */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   816
int get_memsize (int type);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   817
int get_eisamemsize (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   818
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   819
/* Fetch the next entry in the memory map and return the continuation
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   820
   value.  DESC is a pointer to the descriptor buffer, and CONT is the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   821
   previous continuation value (0 to get the first entry in the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   822
   map). */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   823
int get_mmap_entry (struct mmar_desc *desc, int cont);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   824
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   825
/* Get the linear address of a ROM configuration table. Return zero,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   826
   if fails.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   827
unsigned long get_rom_config_table (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   828
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   829
/* Get APM BIOS information.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   830
void get_apm_info (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   831
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   832
/* Get VBE controller information.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   833
int get_vbe_controller_info (struct vbe_controller *controller);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   834
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   835
/* Get VBE mode information.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   836
int get_vbe_mode_info (int mode_number, struct vbe_mode *mode);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   837
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   838
/* Set VBE mode.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   839
int set_vbe_mode (int mode_number);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   840
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   841
/* Return the data area immediately following our code. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   842
int get_code_end (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   843
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   844
/* low-level timing info */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   845
int getrtsecs (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   846
int currticks (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   847
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   848
/* Clear the screen. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   849
void cls (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   850
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   851
/* Turn on/off cursor. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   852
int setcursor (int on);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   853
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   854
/* Get the current cursor position (where 0,0 is the top left hand
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   855
   corner of the screen).  Returns packed values, (RET >> 8) is x,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   856
   (RET & 0xff) is y. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   857
int getxy (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   858
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   859
/* Set the cursor position. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   860
void gotoxy (int x, int y);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   861
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   862
/* Displays an ASCII character.  IBM displays will translate some
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   863
   characters to special graphical ones (see the DISP_* constants). */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   864
void grub_putchar (int c);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   865
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   866
/* Wait for a keypress, and return its packed BIOS/ASCII key code.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   867
   Use ASCII_CHAR(ret) to extract the ASCII code. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   868
int getkey (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   869
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   870
/* Like GETKEY, but doesn't block, and returns -1 if no keystroke is
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   871
   available. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   872
int checkkey (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   873
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   874
/* Low-level disk I/O */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   875
int get_diskinfo (int drive, struct geometry *geometry);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   876
int biosdisk (int subfunc, int drive, struct geometry *geometry,
7563
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   877
    unsigned int sector, int nsec, int segment);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   878
void stop_floppy (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   879
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   880
/* Command-line interface functions. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   881
#ifndef STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   882
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   883
/* The flags for the builtins.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   884
#define BUILTIN_CMDLINE		0x1	/* Run in the command-line.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   885
#define BUILTIN_MENU		0x2	/* Run in the menu.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   886
#define BUILTIN_TITLE		0x4	/* Only for the command title.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   887
#define BUILTIN_SCRIPT		0x8	/* Run in the script.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   888
#define BUILTIN_NO_ECHO		0x10	/* Don't print command on booting. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   889
#define BUILTIN_HELP_LIST	0x20	/* Show help in listing.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   890
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   891
/* The table for a builtin.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   892
struct builtin
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   893
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   894
  /* The command name.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   895
  char *name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   896
  /* The callback function.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   897
  int (*func) (char *, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   898
  /* The combination of the flags defined above.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   899
  int flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   900
  /* The short version of the documentation.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   901
  char *short_doc;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   902
  /* The long version of the documentation.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   903
  char *long_doc;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   904
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   905
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   906
/* All the builtins are registered in this.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   907
extern struct builtin *builtin_table[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   908
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   909
/* The constants for kernel types.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   910
typedef enum
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   911
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   912
  KERNEL_TYPE_NONE,		/* None is loaded.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   913
  KERNEL_TYPE_MULTIBOOT,	/* Multiboot.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   914
  KERNEL_TYPE_LINUX,		/* Linux.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   915
  KERNEL_TYPE_BIG_LINUX,	/* Big Linux.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   916
  KERNEL_TYPE_FREEBSD,		/* FreeBSD.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   917
  KERNEL_TYPE_NETBSD,		/* NetBSD.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   918
  KERNEL_TYPE_CHAINLOADER	/* Chainloader.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   919
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   920
kernel_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   921
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   922
extern kernel_t kernel_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   923
extern int show_menu;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   924
extern int grub_timeout;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   925
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   926
void init_builtins (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   927
void init_config (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   928
char *skip_to (int after_equal, char *cmdline);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   929
struct builtin *find_command (char *command);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   930
void print_cmdline_message (int forever);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   931
void enter_cmdline (char *heap, int forever);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   932
int run_script (char *script, char *heap);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   933
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   934
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   935
/* C library replacement functions with identical semantics. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   936
void grub_printf (const char *format,...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   937
int grub_sprintf (char *buffer, const char *format, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   938
int grub_tolower (int c);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   939
int grub_isspace (int c);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   940
int grub_strncat (char *s1, const char *s2, int n);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   941
void grub_memcpy(void *dest, const void *src, int len);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   942
void *grub_memmove (void *to, const void *from, int len);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   943
void *grub_memset (void *start, int c, int len);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   944
int grub_strncat (char *s1, const char *s2, int n);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   945
char *grub_strstr (const char *s1, const char *s2);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   946
int grub_memcmp (const char *s1, const char *s2, int n);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   947
int grub_strcmp (const char *s1, const char *s2);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   948
int grub_strlen (const char *str);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   949
char *grub_strcpy (char *dest, const char *src);
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   950
char *grub_strchr (char *str, char c);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   951
1372
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   952
void noisy_printf (const char *format,...);
19fa0899b5f5 6362643 GRUB graphics still not in line with unified "coolstart" branding
setje
parents: 0
diff changeset
   953
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   954
#ifndef GRUB_UTIL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   955
typedef unsigned long grub_jmp_buf[6];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   956
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   957
/* In the grub shell, use the libc jmp_buf instead.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   958
# include <setjmp.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   959
# define grub_jmp_buf jmp_buf
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   960
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   961
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   962
#ifdef GRUB_UTIL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   963
# define grub_setjmp	setjmp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   964
# define grub_longjmp	longjmp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   965
#else /* ! GRUB_UTIL */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   966
int grub_setjmp (grub_jmp_buf env);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   967
void grub_longjmp (grub_jmp_buf env, int val);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   968
#endif /* ! GRUB_UTIL */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   969
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   970
/* The environment for restarting Stage 2.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   971
extern grub_jmp_buf restart_env;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   972
/* The environment for restarting the command-line interface.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   973
extern grub_jmp_buf restart_cmdline_env;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   974
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   975
/* misc */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   976
void init_page (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   977
void print_error (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   978
char *convert_to_ascii (char *buf, int c, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   979
int get_cmdline (char *prompt, char *cmdline, int maxlen,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   980
		 int echo_char, int history);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   981
int substring (const char *s1, const char *s2);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   982
int nul_terminate (char *str);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   983
int get_based_digit (int c, int base);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   984
int safe_parse_maxint (char **str_ptr, int *myint_ptr);
1569
943ef50a8f63 6256398 53C1010 (symhisl) doesn't boot from CDROM
setje
parents: 1372
diff changeset
   985
int memcheck (unsigned long start, unsigned long len);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   986
void grub_putstr (const char *str);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   987
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   988
#ifndef NO_DECOMPRESSION
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   989
/* Compression support. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   990
int gunzip_test_header (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   991
int gunzip_read (char *buf, int len);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   992
#endif /* NO_DECOMPRESSION */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   993
7563
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   994
int rawread (int drive, unsigned int sector, int byte_offset, int byte_len,
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   995
	char *buf);
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   996
int devread (unsigned int sector, int byte_offset, int byte_len, char *buf);
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   997
int rawwrite (int drive, unsigned int sector, char *buf);
84ec90ffc3f7 PSARC/2008/336 Extended VTOC
Prasad Singamsetty <Prasad.Singamsetty@Sun.COM>
parents: 7300
diff changeset
   998
int devwrite (unsigned int sector, int sector_len, char *buf);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   999
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1000
/* Parse a device string and initialize the global parameters. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1001
char *set_device (char *device);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1002
int open_device (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1003
int real_open_partition (int flags);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1004
int open_partition (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1005
int next_partition (unsigned long drive, unsigned long dest,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1006
		    unsigned long *partition, int *type,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1007
		    unsigned long *start, unsigned long *len,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1008
		    unsigned long *offset, int *entry,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1009
		    unsigned long *ext_offset, char *buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1010
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1011
/* Sets device to the one represented by the SAVED_* parameters. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1012
int make_saved_active (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1013
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1014
/* Set or clear the current root partition's hidden flag.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1015
int set_partition_hidden_flag (int hidden);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1016
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1017
/* Open a file or directory on the active device, using GRUB's
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1018
   internal filesystem support. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1019
int grub_open (char *filename);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1020
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1021
/* Read LEN bytes into BUF from the file that was opened with
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1022
   GRUB_OPEN.  If LEN is -1, read all the remaining data in the file.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1023
int grub_read (char *buf, int len);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1024
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1025
/* Reposition a file offset.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1026
int grub_seek (int offset);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1027
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1028
/* Close a file.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1029
void grub_close (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1030
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1031
/* List the contents of the directory that was opened with GRUB_OPEN,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1032
   printing all completions. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1033
int dir (char *dirname);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1034
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1035
int set_bootdev (int hdbias);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1036
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1037
/* Display statistics on the current active device. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1038
void print_fsys_type (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1039
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1040
/* Display device and filename completions. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1041
void print_a_completion (char *filename);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1042
int print_completions (int is_filename, int is_completion);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1043
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1044
/* Copies the current partition data to the desired address. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1045
void copy_current_part_entry (char *buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1046
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1047
#ifndef STAGE1_5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1048
void bsd_boot (kernel_t type, int bootdev, char *arg)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1049
     __attribute__ ((noreturn));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1050
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1051
/* Define flags for load_image here.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1052
/* Don't pass a Linux's mem option automatically.  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1053
#define KERNEL_LOAD_NO_MEM_OPTION	(1 << 0)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1054
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1055
kernel_t load_image (char *kernel, char *arg, kernel_t suggested_type,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1056
		     unsigned long load_flags);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1057
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1058
int load_module (char *module, char *arg);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1059
int load_initrd (char *initrd);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1060
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1061
int check_password(char *entered, char* expected, password_t type);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1062
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1063
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1064
void init_bios_info (void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1065
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1066
#endif /* ASM_FILE */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1067
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
  1068
#endif /* ! GRUB_SHARED_HEADER */