⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entrypt.h

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 H
字号:
/* *	@(#)entrypt.h	4.3	(ULTRIX)	10/9/90 * *//* ------------------------------------------------------------------ *//* | Copyright Unpublished, MIPS Computer Systems, Inc.  All Rights | *//* | Reserved.  This software contains proprietary and confidential | *//* | information of MIPS and its suppliers.  Use, disclosure or     | *//* | reproduction is prohibited without the prior express written   | *//* | consent of MIPS.                                               | *//* ------------------------------------------------------------------ *//* * Copyright 1985 by MIPS Computer Systems, Inc. *//* * entrypt.h -- misc. defines of interest to standalones and kernels * * Modification History: entrypt.h * * 01-Jun-89 -- Kong *	Added a field in the "save_state" struct to store the value *	of "cpu".  This is to allow the ULTRIX installation program *	"finder" to determine the type of machine it is running on *	without doing a name list on the kernel.   * * 04-May-89 -- Kong *	Added symbol PROM_HALT  * * 27-Apr-89 -- afd *	Change location of save_state area (consistent with 3.1) *	Change location of temporary Ultrix startup stack to allow for *	console space expansion. * * 17-Apr-89 -- afd *	Created "save_state" struct and defines for its magic number and *	its address at the bottom of the ULTRIX startup stack. *	This struct contains a magic number and the address of "doadump". *	This allows people to force a memory dump from console mode when *	a system is hung. */#ifdef KERNEL#include "../h/ansi_compat.h"#else#include <ansi_compat.h>#endif/* * memory map assumed by prom and standalone system * * physical	kseg1			use * * 0x1fc20000	0xbfc20000 * to					prom text and read-only data * 0x1fc00000	0xbfc00000		(in cpu board "prom space") * * (Top of RAM - 8K) downward		sash and standalone program stack *		|			( - 8K to preserve kernel message bufs) *		V			(standalone programs grow their stack *					 immediately below sash's stack) * *		^ *		| * 0x00100000	0xa0100000 upward	sash program text, data, and bss * *		^ *		| * 0x00030000	0xa0030000 upward	standalone program text, data, and bss *					(kernel is loaded here, also) *					Nothing "magic" about this location; *					  this address can be moved up if *					  future consoles need more space. * 0x0002ffff	0xa002ffff downward *		| *		V * *		^ *		| * 0x00020000	0xa0020000 upward	Additional PROM space (64K) * 0x0001ffff	0xa001ffff *		^ *		|			1K * 0x0001fc00	0xa001fc00 upward	Netblock (host/client info for net boot) *		^ *		|			1K * 0x0001f800	0xa001f800 upward	Ultrix Save STate area (addr of doadump) * * 0x0001f7ff	0xa001f7ff downward	1K Ultrix temporary startup stack *		| *		V * 0x0001f400	0xa001f400 * 0x0001f3ff	0xa001f3ff downward	dbgmon stack *		| *		V * *		^ *		| * 0x00010000	0xa0010000 upward	dbgmon text, data, and bss * * 0x0000ffff	0xa000ffff downward	prom monitor stack *		| *		V * *		^ *		| * 0x00000500	0xa0000500 upward	prom monitor bss * * 0x000004ff	0xa00004ff * to					restart block * 0x00000400	0xa0000400 * * 0x000003ff	0xa00003ff * to					general exception code * 0x00000080	0xa0000080		(note cpu addresses as 0x80000080!) * * 0x0000007f	0xa000007f * to					utlbmiss exception code * 0x00000000	0xa0000000		(note cpu addresses as 0x80000000!) */#define	PROM_STACK	0x80010000#define STARTUP_STACK	0x8001F800/* * Prom entry points *//* * Return control to prom entry points * * RESET	transferred to on hardware reset, configures MIPS boards, *		runs diags, check for appropriate auto boot action in *		"bootmode" environment variable and performs that action. * * EXEC		called to utilize prom to boot new image.  After the booted *		program returns control can either be returned to the *		original caller of the exec routine or to the prom monitor. *		(to return to the original caller, the new program must *		not destroy any text, data, or stack of the parent.  the *		new programs stack continues on the parents stack. * * RESTART	re-enter the prom command parser, do not reset prom state * * REINIT	reinitialize prom state and re-enter the prom command parser * * REBOOT	check for appropriate bootmode and perform, no configuration *		or diags run * * AUTOBOOT	perform an autoboot sequence, no configuration or diags run * */#define	PROM_ENTRY(x)	(R_VEC+((x)*8))#define	PROM_RESET	PROM_ENTRY(0)	/* run diags, check bootmode, reinit */#define	PROM_EXEC	PROM_ENTRY(1)	/* load new program image */#define	PROM_RESTART	PROM_ENTRY(2)	/* re-enter monitor command loop */#define	PROM_REINIT	PROM_ENTRY(3)	/* re-init monitor, then cmd loop */#define	PROM_REBOOT	PROM_ENTRY(4)	/* check bootmode, no config */#define	PROM_AUTOBOOT	PROM_ENTRY(5)	/* autoboot the system *//* * these routines access prom "saio" routines, and may be used * by standalone programs that would like to use prom io */#define	PROM_OPEN	PROM_ENTRY(6)#define	PROM_READ	PROM_ENTRY(7)#define	PROM_WRITE	PROM_ENTRY(8)#define	PROM_IOCTL	PROM_ENTRY(9)#define	PROM_CLOSE	PROM_ENTRY(10)#define PROM_LSEEK      PROM_ENTRY(11)#define	PROM_GETCHAR	PROM_ENTRY(12)	/* getchar from console */#define	PROM_PUTCHAR	PROM_ENTRY(13)	/* putchar to console */#define	PROM_SHOWCHAR	PROM_ENTRY(14)	/* show a char visibly */#define	PROM_GETS	PROM_ENTRY(15)	/* gets with editing */#define	PROM_PUTS	PROM_ENTRY(16)	/* puts to console */#define	PROM_PRINTF	PROM_ENTRY(17)	/* kernel style printf to console *//* * prom protocol entry points */#define	PROM_INITPROTO	PROM_ENTRY(18)	/* initialize protocol */#define	PROM_PROTOENABLE PROM_ENTRY(19)	/* enable protocol mode */#define	PROM_PROTODISABLE PROM_ENTRY(20)/* disable protocol mode */#define	PROM_GETPKT	PROM_ENTRY(21)	/* get protocol packet */#define	PROM_PUTPKT	PROM_ENTRY(22)	/* put protocol packet *//* * cache control entry points * flushcache is called without arguments and invalidates entire contents *	of both i and d caches * clearcache is called with a base address and length (where address is * 	either K0, K1, or physical) and clears both i and d cache for entries * 	that alias to specified address range. */#define	PROM_FLUSHCACHE	PROM_ENTRY(28)	/* flush entire cache */#define	PROM_CLEARCACHE	PROM_ENTRY(29)	/* clear_cache(addr, len) *//* * The following entry points are sole to reduce the size of the debug * monitor and could be removed by including the appropriate code in the * debugger * * Libc-ish entry points */#define	PROM_SETJMP	PROM_ENTRY(30)	/* save stack state */#define	PROM_LONGJMP	PROM_ENTRY(31)	/* restore stack state */#define	PROM_BEVUTLB	PROM_ENTRY(32)	/* utlbmiss boot exception vector */#define	PROM_GETENV	PROM_ENTRY(33)	/* get environment variable */#define	PROM_SETENV	PROM_ENTRY(34)	/* set environment variable */#define	PROM_ATOB	PROM_ENTRY(35)	/* convert ascii to binary */#define	PROM_STRCMP	PROM_ENTRY(36)	/* string compare */#define	PROM_STRLEN	PROM_ENTRY(37)	/* string length */#define	PROM_STRCPY	PROM_ENTRY(38)	/* string copy */#define	PROM_STRCAT	PROM_ENTRY(39)	/* string concat *//* * command parser entry points */#define	PROM_PARSER	PROM_ENTRY(40)	/* command parser */#define	PROM_RANGE	PROM_ENTRY(41)	/* range parser */#define	PROM_ARGVIZE	PROM_ENTRY(42)	/* tokenizer */#define	PROM_HELP	PROM_ENTRY(43)	/* prints help from command table *//* * prom commands */#define	PROM_DUMPCMD	PROM_ENTRY(44)	/* dump memory command */#define	PROM_SETENVCMD	PROM_ENTRY(45)	/* setenv command */#define	PROM_UNSETENVCMD PROM_ENTRY(46)	/* unsetenv command */#define	PROM_PRINTENVCMD PROM_ENTRY(47)	/* printenv command */#define	PROM_BEVEXCEPT	PROM_ENTRY(48)	/* general boot exception vector */#define	PROM_ENABLECMD	PROM_ENTRY(49)	/* enable console command */#define	PROM_DISABLECMD	PROM_ENTRY(50)	/* disable console command */#define	PROM_HALT	PROM_ENTRY(54)	/* Handler for halt interrupt *//* * The following entry is added in support of VAX Diagnostic Supervisors * DECsystem 58xx. */#define	PROM_STARTCVAX	PROM_ENTRY(97)	/* start the onboard CVAX *//* * Restart block -- monitor support for "warm" starts * * prom will perform "warm start" if restart_blk is properly set-up: *	rb_magic == RESTART_MAGIC *	rb_occurred == 0 *	rb_checksum == 2's complement, 32-bit sum of first 32, 32-bit words  */#define	RESTART_MAGIC	0xfeedface#define	RESTART_CSUMCNT	32		/* chksum 32 words of restart routine */#define	RESTART_ADDR	0xa0000400	/* prom looks for restart block here */#define	RB_BPADDR	(RESTART_ADDR+24)/* address of rb_bpaddr */#ifdef __LANGUAGE_Cstruct restart_blk {	int	rb_magic;		/* magic pattern */	int	(*rb_restart)();	/* restart routine */	int	rb_occurred;		/* to avoid loops on restart failure */	int	rb_checksum;		/* checksum of 1st 32 wrds of restrt */	char	*rb_fbss;		/* start of prom bss and stack area */	char	*rb_ebss;		/* end of prom bss and stack area */	/*	 * These entries are for communication between the debug monitor	 * and the client process being debugged	 * NOTE: a return value of -1 from (*rb_vtop)() is distinguished	 * to indicate that a translation could not be made.	 */	int	(*rb_bpaddr)();		/* breakpoint handler */	int	(*rb_vtop)();		/* virtual to physical conversion rtn */	/*	 * config table goes here	 */};/* * args to promexec -- monitor support for loading new programs * * bootfiles should be specified as DEV(UNIT)FILE * (e.g. bfs(0)bootmips_le) */struct promexec_args {	char	*pa_bootfile;		/* file to boot (only some devices) */	int	pa_argc;		/* arg count */	char	**pa_argv;		/* arg vector */	char	**pa_environ;		/* environment vector */	int	pa_flags;		/* flags, (see below) */};/* * Save STate ADDRess: at the bottom end of the startup stack. * We stuff the address of doadump here to get manual dumps from console mode. */#define SST_ADDR 0x8001f800		/* Save STate Addr (just below netblk)*/#define SST_MAGIC 0x15551212		/* Magic Number (get info) */struct save_state {	int sst_magic;			/* magic number to recognize this */	int (*sst_dump)();		/* address of the dump routine */	int cpu;			/* The value of "cpu".	*/};#endif /* __LANGUAGE_C *//* * promexec flags */#define	EXEC_NOGO	1	/* just load, don't transfer control *//* * prom non-volatile ram conventions */#define	NVSTATE_ADDR	48	/* byte in nv ram that indicates if nv valid */#define	NVTOD_VALID	1	/* flag bit that indicates clock ok if set *//* * ROM Executive Program (REX) callback offsets.  These are initially used * only by 3MAX and 3MIN (TURBOchannel systems). */#define REX_MEMCPY		0x00	/* Copy memory			      */#define REX_MEMSET		0x04#define REX_STRCAT		0x08	#define REX_STRCMP		0x0c#define REX_STRCPY		0x10#define REX_STRLEN		0x14#define REX_STRNCAT		0x18#define REX_STRNCPY		0x1c#define REX_STRNCMY		0x20#define REX_GETCHAR		0x24#define REX_GETS		0x28#define REX_PUTS		0x2c#define REX_PRINTF		0x30#define REX_SPRINTF		0x34#define REX_IO_POLL		0x38#define REX_STRTOL		0x3c#define REX_SIGNAL		0x40#define REX_RAISE		0x44#define REX_TIME		0x48#define REX_SETJUMP		0x4c#define REX_LONGJUMP		0x50#define REX_BOOTINIT		0x54#define REX_BOOTREAD		0x58#define REX_BOOTWRITE		0x5c#define REX_SETENV		0x60#define REX_GETENV		0x64#define REX_UNSETENV		0x68#define REX_SLOT_ADDRESS	0x6c#define REX_WBFLUSH		0x70#define REX_MSDELAY		0x74#define REX_LEDS		0x78#define REX_CLEAR_CACHE		0x7c#define REX_GETSYSTYPE		0x80#define REX_GETBITMAP		0x84#define REX_DISABLEINTR		0x88#define REX_ENABLEINTR		0x8c#define REX_TESTINTR		0x90#define REX_PRIVATE		0x94	/* Private for consle -Not for OS use */#define REX_CONSOLE_INIT	0x98#define REX_HALT		0x9c#define REX_SHOWFAULT		0xa0#define REX_GETTCINFO		0xa4#define REX_EXECUTE_CMD		0xa8#define REX_REX			0xac#define REX_RESERVED1		0xb0#define REX_RESERVED2		0xb4#define REX_RESERVED3		0xb8#define REX_RESERVED4		0xbc#define REX_RESERVED5		0xc0#define REX_RESERVED6		0xc4#define REX_RESERVED7		0xc8#define REX_RESERVED8		0xcc#define REX_RESERVED9		0xd0#define REX_RESERVED10		0xd4/* * REX constants */#define REX_MAGIC	0x30464354	/* REX Magic number *//* * REX bitmap structure */#ifdef LANGUAGE_Cstruct mem_bitmap {	int	mbmap_pagesize;	/* pagesize the bitmap represents */	int	mbmap_bitmap[15360];	/* pointer to the memory bitmap */};#endif LANGUAGE_C

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -