summaryrefslogtreecommitdiff
path: root/system/alpha/h/romhead.h
diff options
context:
space:
mode:
Diffstat (limited to 'system/alpha/h/romhead.h')
-rw-r--r--system/alpha/h/romhead.h354
1 files changed, 0 insertions, 354 deletions
diff --git a/system/alpha/h/romhead.h b/system/alpha/h/romhead.h
deleted file mode 100644
index 5be8dd7d9..000000000
--- a/system/alpha/h/romhead.h
+++ /dev/null
@@ -1,354 +0,0 @@
-#ifndef __ROMHEAD_H_LOADED
-#define __ROMHEAD_H_LOADED
-/*****************************************************************************
-
- Copyright © 1993, 1994 Digital Equipment Corporation,
- Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided
-that the copyright notice and this permission notice appear in all copies
-of software and supporting documentation, and that the name of Digital not
-be used in advertising or publicity pertaining to distribution of the software
-without specific, written prior permission. Digital grants this permission
-provided that you prominently mark, as not part of the original, any
-modifications made to this software or documentation.
-
-Digital Equipment Corporation disclaims all warranties and/or guarantees
-with regard to this software, including all implied warranties of fitness for
-a particular purpose and merchantability, and makes no representations
-regarding the use of, or the results of the use of, the software and
-documentation in terms of correctness, accuracy, reliability, currentness or
-otherwise; and you rely on the software, documentation and results solely at
-your own risk.
-
-******************************************************************************/
-
-/*
- * $Id: romhead.h,v 1.1.1.1 1997/10/30 23:27:17 verghese Exp $;
- */
-
-/*
- * $Log: romhead.h,v $
- * Revision 1.1.1.1 1997/10/30 23:27:17 verghese
- * current 10/29/97
- *
- * Revision 1.16 1995/03/05 00:51:01 fdh
- * Fixed up a couple of MACROS.
- *
- * Revision 1.15 1995/03/04 05:55:57 fdh
- * Bracket COMPUTE_CHECKSUM Macro.
- *
- * Revision 1.14 1995/02/27 15:36:21 fdh
- * Removed ul definitions. Replaced with structs of ui's.
- *
- * Revision 1.13 1995/02/16 22:06:06 fdh
- * Changed Open VMS to OpenVMS because of some trademark junk.
- *
- * Revision 1.12 1995/02/14 21:19:33 cruz
- * Fixed up header picture to match implementation.
- *
- * Revision 1.11 1995/02/10 02:19:03 fdh
- * Created COMPUTE_CHECKSUM Macro.
- * Corrected prototypes.
- *
- * Revision 1.10 1995/02/08 00:34:44 fdh
- * Added ROMH_VERSION and ROTATE_RIGHT macros.
- *
- * Revision 1.9 1995/02/07 22:28:09 fdh
- * Changed Windows NT alias from "WNT" to "NT".
- *
- * Revision 1.8 1995/02/07 04:54:33 fdh
- * Added ostype definitions.
- * Modified ROM_HEADER_CHECKSUM Macro.
- *
- * Revision 1.7 1995/02/06 02:47:40 fdh
- * Added prototypes for romhead.c routines.
- *
- * Revision 1.6 1995/02/05 01:53:05 fdh
- * Modified the definition for the ROM header.
- * Added a MACRO that can be used to access the
- * ROM header checksum which can be in different location
- * for different versions of the header.
- *
- * Revision 1.5 1995/02/02 20:05:31 fdh
- * Moved fwid_array[] initialization to header file.
- *
- * Revision 1.4 1995/01/31 23:44:00 fdh
- * Added field for "OPTIONAL FW ID, continued" to make
- * the optional field really 7 bytes.
- *
- * Revision 1.3 1995/01/31 23:21:25 fdh
- * Updated...
- *
- * Revision 1.2 1995/01/23 22:34:32 fdh
- * Extended the ROM header spec. This is now version one
- * which is a super-set of the version 0 header.
- *
- * Revision 1.1 1994/11/19 03:47:29 fdh
- * Initial revision
- *
- *
- *
- * Special ROM header
- * ==================
- * The System ROM can contain multiple ROM images, each with
- * its own header. That header tells the SROM where to load
- * the image and also if it has been compressed with the
- * "makerom" tool. For System ROMs which contain a single
- * image, the header is optional. If the header does not
- * exist the complete System ROM is loaded and executed at
- * physical address zero.
- *
- * 31 0
- * +---------------------------------------------+
- * | VALIDATION PATTERN 0x5A5AC3C3 | 0x00
- * +---------------------------------------------+
- * | INVERSE VALIDATION PATTERN 0xA5A53C3C | 0x04
- * +---------------------------------------------+
- * | HEADER SIZE (Bytes) | 0x08
- * +---------------------------------------------+
- * | IMAGE CHECKSUM | 0x0C
- * +---------------------------------------------+
- * | IMAGE SIZE (Memory Footprint) | 0x10
- * +---------------------------------------------+
- * | DECOMPRESSION FLAG | 0x14
- * +---------------------------------------------+
- * | DESTINATION ADDRESS LOWER LONGWORD | 0x18
- * +---------------------------------------------+
- * | DESTINATION ADDRESS UPPER LONGWORD | 0x1C
- * +---------------------------------------------+
- * | RSVD<31:16>| ID <15:8>| HEADER REV <7:0> | 0x20 \
- * +---------------------------------------------+ \
- * | ROM IMAGE SIZE | 0x24 |
- * +---------------------------------------------+ | New for
- * | OPTIONAL FIRMWARE ID <31:0> | 0x28 +- Rev 1
- * +---------------------------------------------+ | headers.
- * | OPTIONAL FIRMWARE ID <63:32> | 0x2C |
- * +---------------------------------------------+ /
- * | HEADER CHECKSUM (excluding this field) | 0x30 /
- * +---------------------------------------------+
- *
- * VALIDATION PATTERN
- * ------------------
- * The first quadword contains a special signature pattern
- * that is used to verify that this "special" ROM header
- * has been located. The pattern is 0x5A5AC3C3A5A53C3C.
- *
- * HEADER SIZE (Bytes)
- * -------------------
- * The header size is the next longword. This is provided
- * to allow for some backward compatibility in the event that
- * the header is extended in the future. When the header
- * is located, current versions of SROM code determine where
- * the image begins based on the header size. Additional data
- * added to the header in the future will simply be ignored
- * by current SROM code. Additionally, the header size = 0x20
- * implies version 0 of this header spec. For any other size
- * see HEADER REVISION to determine header version.
- *
- *
- * IMAGE CHECKSUM
- * --------------
- * The next longword contains the image checksum. This is
- * used to verify the integrity of the ROM. Checksum is computed
- * in the same fashion as the header checksum.
- *
- * IMAGE SIZE (Memory Footprint)
- * -----------------------------
- * The image size reflects the size of the image after it has
- * been loaded into memory from the ROM. See ROM IMAGE SIZE.
- *
- * DECOMPRESSION FLAG
- * ------------------
- * The decompression flag tells the SROM code if the makerom
- * tool was used to compress the ROM image with a "trivial
- * repeating byte algorithm". The SROM code contains routines
- * which perform this decompression algorithm. Other
- * compression/decompression schemes may be employed which work
- * independently from this one.
- *
- * DESTINATION ADDRESS
- * -------------------
- * This quadword contains the destination address for the
- * image. The SROM code will begin loading the image at this
- * address and subsequently begin its execution there.
- *
- * HEADER REV
- * ----------
- * The revision of the header specifications used in this
- * header. This is necessary to provide compatibility to
- * future changes to this header spec. Version 0 headers
- * are identified by the size of the header. See HEADER
- * SIZE.
- *
- * FIRMWARE ID
- * -----------
- * The firmware ID is a byte that specifies the firmware type.
- * This facilitates image boot options necessary to boot
- * different operating systems.
- *
- * firmware
- * firmware type
- * -------- --------
- * DBM 0 Alpha Evaluation Boards Debug Monitor
- * WNT 1 Windows NT Firmware
- * SRM 2 Alpha System Reference Manual Console
- *
- * ROM IMAGE SIZE
- * --------------
- * The ROM image size reflects the size of the image as it is
- * contained in the ROM. See IMAGE SIZE.
- *
- * OPTIONAL FW ID
- * --------------
- * This is an optional field that can be used to provide
- * additional firmware information such as firmware revision
- * or a character descriptive string up to 8 characters.
- *
- * HEADER CHECKSUM
- * ---------------
- * The checksum of the header. This is used to validate
- * the presence of a header beyond the validation provided
- * by the validation pattern. See VALIDATION PATTERN.
- * The header checksum is computed from the beginning of
- * the header up to but excluding the header checksum
- * field itself. If there are future versions of this
- * header the header checksum should always be the last
- * field defined in the header. The checksum algorithm used
- * is compatible with the standard BSD4.3 algorithm provided
- * on most implementations of Unix. Algorithm: The checksum
- * is rotated right by one bit around a 16 bit field before
- * adding in the value of each byte.
- *
- */
-
-#include "local.h" /* Include environment specific definitions */
-
-#define ROM_H_SIGNATURE 0x5A5AC3C3
-#define ROM_H_REVISION 1
-
-
-typedef union {
- struct {
- /*
- * Version 0 definition of the ROM header.
- */
- struct {
- ui signature; /* validation signature */
- ui csignature; /* inverse validation signature */
- ui hsize; /* header size */
- ui checksum; /* checksum */
- ui size; /* image size (Memory Footprint) */
- ui decomp; /* decompression algorithm */
- struct {
- ui low;
- ui high;
- } destination; /* destination address */
- } V0;
-
- /*
- * Version 1 extensions to the ROM header.
- */
- struct {
- char hversion; /* ROM header version (Byte 0) */
- char fw_id; /* Firmware ID (Byte 1) */
- char reserved[2]; /* Reserved (Bytes 3:2) */
- ui rimage_size; /* ROM image size */
- union {
- char id[8]; /* Optional Firmware ID (character array) */
- struct {
- ui low;
- ui high;
- } id_S;
- } fwoptid;
- } V1;
-
- /*
- * Future extensions to the header should be included before
- * this header checksum. (See HEADER CHECKSUM description)
- */
- ui hchecksum; /* Header checksum, (Always last entry) */
- } romh;
- ui romh_array[1]; /* To allow longword access to the data */
-} romheader_t;
-
-/*
- * Registered Firmware types.
- */
-#define FW_DBM 0
-#define FW_WNT 1
-#define FW_SRM 2
-
-#define FW_DBM_STRINGS "Alpha Evaluation Board Debug Monitor", "DBM", "Debug Monitor", "Monitor", NULL
-#define FW_WNT_STRINGS "Windows NT Firmware", "WNT", "NTFW", "ARC", "NT", NULL
-#define FW_SRM_STRINGS "Alpha SRM Console", "SRM", "VMS", "OSF", NULL
-
-typedef struct fw_id {
- int firmware_id;
- char **id_string;
-} fw_id_t;
-
-extern fw_id_t fwid_array[];
-
-#define FW_OSTYPE_DBM 0
-#define FW_OSTYPE_WNT 1
-#define FW_OSTYPE_VMS 2
-#define FW_OSTYPE_OSF 3
-
-#define OS_DBM_STRINGS "Alpha Evaluation Board Debug Monitor", "DBM"
-#define OS_WNT_STRINGS "The Windows NT Operating System", "NT"
-#define OS_VMS_STRINGS "OpenVMS", "VMS"
-#define OS_OSF_STRINGS "DEC OSF/1", "OSF"
-
-typedef struct os_types {
- int ostype;
- int firmware_id;
- char **id_string;
-} ostype_t;
-
-extern ostype_t ostype_array[];
-
-/*
- * The ROM header checksum should always be assigned to the last
- * field in the header. Therefore, when reading headers created
- * by various versions of makerom the ROM header checksum can be
- * in different locations. This macro can be used to access the
- * ROM header checksum in the proper location.
- */
-#define ROM_HEADER_CHECKSUM(x) \
- ((x)->romh_array[((x)->romh.V0.hsize - sizeof((x)->romh.hchecksum))/sizeof(ui)])
-
-/*
- * Macro to provide the header version number
- */
-#define ROMH_VERSION(x) ((x)->romh.V0.hsize == 0x20 ? 0 : (x)->romh.V1.hversion)
-
-/*
- * Macro to assist in computing the BSD4.3 style checksum.
- */
-#define ROTATE_RIGHT(x) if ((x) & 1) (x) = ((x) >>1) + 0x8000; else (x) = (x) >>1;
-
-/*
- * Macro used to increment the checksum
- * by a new byte while keeping the total
- * checksum within the 16 bit range.
- */
-#define COMPUTE_CHECKSUM(c,k) \
- {ROTATE_RIGHT(k); k += (ub) c; k &= 0xffff;}
-
-/*
- * romheader.c prototypes
- */
-extern fw_id_t * fwid_match(char * arg);
-extern fw_id_t * fwid_match_i(int fwid);
-extern void fwid_dump(char * pre);
-extern ostype_t * ostype_match(char * arg);
-extern ostype_t * ostype_match_i(int ostype);
-extern void ostype_dump(char * pre);
-extern ui compute_romh_chksum(romheader_t * header);
-extern int dumpHeader(romheader_t * header);
-
-#endif /* __ROMHEAD_H_LOADED */