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

📄 openprom.h

📁 操作系统SunOS 4.1.3版本的源码
💻 H
字号:
/* * @(#)openprom.h 1.1 7/30/92 * Copyright (c) 1989-1990 Sun Microsystems, Inc. * * * This file defines the interface between the Open Boot Prom Monitor  * and the programs that may request its services. * This interface, defined as a vector of pointers to useful things, * has been traditionally referred to as `the romvec'. *  * The address of the romvec is passed as the first argument to the standalone * program, obviating the need for the address to be at a known fixed  * location. * Typically, the stand-alone's srt0.s file (which contains the _start entry) * would take care of all of `this'. * In SPARC assembler, `this' would be: * *	.data *	.global _romp * _romp:  *	.word 0 *	.text * _start: *	set	_romp,%o1	! any register other than %o0 will probably do *	st	%o0,[%o1]	! save it away *	.......			! set up your stack, etc...... */#ifndef _mon_openprom_h#define	_mon_openprom_h#ifndef _TYPES_#include <sys/types.h>#endif _TYPES_#ifndef OPENPROMS#  define OPENPROMS			/* for inquisitive minds */#endif  !OPENPROMS#define ROMVEC_MAGIC	0x10010407	/* hmmm */#define ROMVEC_VERSION 	1#define PLUGIN_VERSION	2#define ROMVEC_BLKSIZE	512typedef u_int ihandle_t;typedef u_int phandle_t;extern struct sunromvec *romp;		/* as per the above discussion *//* * Memory layout stuff */struct memlist {    struct memlist	*next;		/* link to next list element */    u_int		address;	/* starting address of memory segment */    u_int		size;		/* size of same */};struct sunromvec {    u_int		v_magic;	  /* magic mushroom */    u_int      		v_romvec_version; /* Version number of "romvec" */    u_int		v_plugin_version; /* Plugin Architecture version */    u_int		v_mon_id;	  /* version # of monitor firmware */    struct memlist	**v_physmemory;	  /* total physical memory list */    struct memlist	**v_virtmemory;	  /* taken virtual memory list */    struct memlist	**v_availmemory;  /* available physical memory */    struct config_ops	*v_config_ops;	  /* dev_info configuration access */    /*     * storage device access facilities     */    char		**v_bootcommand;  /* expanded with PROM defaults */    u_int		(*v_open)(/* char *name */);    u_int		(*v_close)(/* ihandle_t fileid */);     /*     * block-oriented device access     */    u_int		(*v_read_blocks)();    u_int		(*v_write_blocks)();    /*     * network device access     */    u_int		(*v_xmit_packet)();    u_int		(*v_poll_packet)();    /*     * byte-oriented device access     */    u_int		(*v_read_bytes)();    u_int		(*v_write_bytes)();    /*     * 'File' access - i.e.,  Tapes for byte devices.       * TFTP for network devices     */    u_int 		(*v_seek)();    /*     * single character I/O     */    u_char		*v_insource;    /* Current source of input */    u_char		*v_outsink;     /* Currrent output sink */    u_char		(*v_getchar)(); /* Get a character from input */     void		(*v_putchar)(); /* Put a character to output sink. */    int			(*v_mayget)();  /* Maybe get a character, or "-1". */    int			(*v_mayput)();  /* Maybe put a character, or "-1". */    /*      * Frame buffer     */    void		(*v_fwritestr)();  /* write a string to framebuffer */    /*     * Miscellaneous Goodies     */    void		(*v_boot_me)();	   /* reboot machine */    int			(*v_printf)();	   /* handles format string plus 					      5 args */    void		(*v_abortent)();   /* Entry for keyboard abort. */    int 		*v_nmiclock;	   /* Counts in milliseconds. */    void		(*v_exit_to_mon)();/* Exit from user program. */    void		(**v_vector_cmd)();/* Handler for the vector */    void		(*v_interpret)();  /* interpret forth string */#ifdef SAIO_COMPAT    struct bootparam	**v_bootparam;	/* boot parameters and `old' style device access */#else     int			v_fill0;#endif SAIO_COMPAT    u_int		(*v_mac_address)(/* int fd; caddr_t buf */);					    /* Copyout ether address */    char	**bootpath;		/* Full path name of boot device */    char	**bootargs;		/* Boot command line after dev spec */    ihandle_t	*op_stdin;		/* Console input device */    ihandle_t	*op_stdout;		/* Console output device */    phandle_t	(*op_phandle)(/* ihandle_t ihandle */);					/* Convert ihandle to phandle */    caddr_t	(*op_alloc)(/* caddr_t virthint, u_int size */);					/* Allocate physical memory */    void	(*op_free)(/* caddr_t virt, u_int size */);					/* Deallocate physical memory */    caddr_t	(*op_map)(/* caddr_t virthint, u_int space, u_int phys,				    u_int size */);					/* Create device mapping */    void	(*op_unmap)(/* caddr_t virt, u_int size */);					/* Destroy device mapping */    ihandle_t	(*op_open) (/* char *name */);    u_int	(*op_close)(/* ihandle_t fileid */);     int		(*op_read) (/* ihandle_t fileid, caddr_t buf, u_int len */);    int		(*op_write)(/* ihandle_t fileid, caddr_t buf, u_int len */);    int		(*op_seek) (/* ihandle_t fileid, u_int offsh, u_int offsl */);        void	(*op_chain)(/* caddr_t virt, u_int size, caddr_t entry */);    int			*v_reserved[16];    /*     * Beginning of machine-dependent portion     *//* #include <machine/romvec.h> */};/* XXX - do this right! */#ifdef NOT#define MONSTART	(*(romp->v_virtmemory))->address#define MONEND		(MONSTART+(*(romp->v_virtmemory))->size)#else#define MONSTART	(0xffd00000)#define MONEND		(0xfff00000)#endif#endif _mon_openprom_h

⌨️ 快捷键说明

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