Charles.Forsyth20060303644188019 years agoHistory
103 lines · 1.7 KB · C
RawDownload
#include	"u.h"#include	"../port/lib.h"#include	"mem.h"#include	"dat.h"#include	"fns.h"#include	"io.h" typedef struct Rom Rom; struct Rom{	uint	magic;	uint	version;	uint	plugin_version;	uint	monitor_id; 	void	**physmemlist;	void	**virtmemlist;	void	**availphysmemlist;	void	*config_info; 	char	**bootcmd; 	uint	(*open)();	uint	(*close)(); 	uint	(*read_blocks)();	uint	(*write_blocks)(); 	uint	(*transmit_pkt)();	uint	(*poll_pkt)(); 	uint	(*read_bytes)();	uint	(*write_bytes)();	uint	(*seek)(); 	uchar	*input;	uchar	*output; 	uchar	(*getchar)();	uchar	(*putchar)();	uchar	(*noblock_getchar)();	uchar	(*noblock_putchar)(); 	uchar	(*fb_writestr)(char*); 	void	(*boot)(char*); 	void	(*printf)(char*,...); 	void	(*some_kbd_thing)();	int	*ms_count;	void	(*exit)();	void	(**vector)();	void	(**interpret)(char*,...);	void	*bootparam;		uint	(*mac_addr)();	char	**v2_bootpath;	char	** v2_bootargs;	int	*v2_stdin;	int	*v2_stdout;	void*	(*v2_phandle)();	char*	(*v2_allocphys)();	char*	(*v2_freephys)();	char*	(*v2_map_dev)();	char*	(*v2_unmap_dev)();	ulong	(*v2_open)();	uint	(*v2_close)();	uint	(*v2_read)();	uint	(*v2_write)();	uint	(*v2_seek)();	void	(*v2_chain)();	void	(*v2_release)();	char	*(*v3_alloc)();	int	*reserved[14];	void	(*setctxsegmap)();	int	(*v3_startcpu)();	int	(*v3_stopcpu)();	int	(*v3_idlecpu)();	int	(*v3_resumecpu)();}; Rom	*rom;		/* open boot rom vector -- assigned by l.s */ voidprom_printf(char *format, ...){	char buf[512];	int l;	va_list ap; 	va_start(ap, format);	l = vseprint(buf,buf+sizeof(buf),format,ap) - buf;	va_end(ap); 	call_openboot(rom->v2_write,*rom->v2_stdout,buf,l);} voidprom_halt(void){	call_openboot(rom->exit,0xfeedface);}