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

📄 i_rp_shared_ram.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic  char sccsid[] = "@(#)i_rp_shared_ram.c 1.1 92/07/30 Copyr 1990 Sun Micro";#endif/* * Copyright (c) 1990 by Sun Microsystems, Inc. */#include <fe_includes.h>#define REG(i)	i#define SU_SHARED_RAM_START	0xFF084000#define SU_SHARED_RAM_END	0xFF087FFF#define SU_SHARED_RAM_SIZE (SU_SHARED_RAM_END-SU_SHARED_RAM_START+1)/**********************************************************************/voidi_rp_shared_ram(ctxp, umcbp, kmcbp, fputs) /**********************************************************************/register Hk_context	*ctxp;		/* r16 = context      pointer */register Hkvc_umcb	*umcbp;		/* r17 = user mcb     pointer */register Hkvc_kmcb	*kmcbp;		/* r18 = kernel mcb   pointer */register void		(*fputs)();	/* r19 = vcom_fputs() pointer */{	void hexasc();	register unsigned * volatile addr;	register unsigned int wone;	register unsigned int tmp;	register unsigned int start = (unsigned int) SU_SHARED_RAM_START;        register int i;	unsigned int errdat;	char string[14];	char nl[2];	char comma[3];	nl[0] = '\n';	nl[1] = '\0';	comma[0] = ',';	comma[1] = ' ';	comma[2] = '\0';	char txtdat[12];	char addrtxt[5];	char expect[4];	char actual[4];	txtdat[0] = 'S';txtdat[1] = 'U';txtdat[2] = 'r';txtdat[3] = 'a';	txtdat[4] = 'm';txtdat[5] = '-';txtdat[6] = 'E';txtdat[7] = 'r';	txtdat[8] = 'r';txtdat[9] = ':';txtdat[10] = ' ';txtdat[11] = '\0';	addrtxt[0] = 'A';addrtxt[1] = 'd';addrtxt[2] = 'd';addrtxt[3] = 'r';	addrtxt[4] = '\0';	expect[0] = 'E';expect[1] = 'x';expect[2] = 'p';expect[3] = '\0';	actual[0] = 'A';actual[1] = 'c';actual[2] = 't';actual[3] = '\0';	for (wone = 1 ; wone != 0 ; wone <<= 1) {	    for (addr = (unsigned int *)start, i=SU_SHARED_RAM_SIZE/sizeof(int); i ; addr++, i--){		tmp = *addr;		*addr = wone;		if (*addr != wone) {		    errdat = *addr;		    *addr = tmp;		    goto error;		}		*addr = tmp;	    }	}	/* clear error flag */	umcbp->errorcode = 0;	return;    error:	(void) (*fputs) (txtdat);	(void) (*fputs) (addrtxt);	hexasc((unsigned int)(addr), string);	(void) (*fputs) (string);	(void) (*fputs) (comma);	(void) (*fputs) (expect);	hexasc(wone, string);	(void) (*fputs) (string);	(void) (*fputs) (comma);	(void) (*fputs) (actual);	hexasc(errdat, string);	(void) (*fputs) (string);	(void) (*fputs) (nl);	/* set error flag */	umcbp->errorcode = -1;	return;}/**********************************************************************/voidhexasc(hex, str)/**********************************************************************/unsigned int hex;char *str;{    unsigned char c;    int i;    str[0] = ' ';    str[1] = '=';    str[2] = ' ';    str[3] = '0';    str[4] = 'x';    for (i=0 ; i < 8 ; i++) {	c = (char)(hex & 0xf);	str[12-i] = (c < 0xa)? c + '0' : (c-0xa) + 'A';	hex >>= 4;    }    str[i+5] = '\0';    return;}

⌨️ 快捷键说明

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