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

📄 sizemem.c

📁 MIPS处理器的bootloader,龙芯就是用的修改过的PMON2
💻 C
字号:
/*	$Id: sizemem.c,v 1.3 2002/08/09 20:56:58 pefo Exp $ */#ifdef NEED_SIZEMEM#define MAXMEM	(128*1024*1024)		/* max memory 128 Mb */#define INCR	(256*1024)		/* 256 Kb increments */#define MAXSEGS (MAXMEM / INCR)#define MARKER	((unsigned char)0x55)#define NMARKER	((unsigned char)0xaa)#define START	((unsigned char)0x12)#define NSTART	((unsigned char)0x34)#ifdef PMCCmain (){    printf ("This board has %d Kbytes of RAM\n", sizemem (0xa0020000) / 1024);}#endif#ifdef R4000# define BW		16	/* 64-bit bus, bank interleaved */#else# define BW		8	/* 32-bit bus, bank interleaved */#endifsizemem (base, maxsize)    volatile unsigned char  *base;    int maxsize;{    unsigned char   old[MAXSEGS][2];    volatile unsigned char  *p;    int             i, max, berr;    /* round base up to INCR boundary */    base = (unsigned char *) (((int)base + INCR - 1) & ~(INCR - 1));    max = (maxsize - (int)base) / INCR;    if (max > MAXSEGS)      max = MAXSEGS;        /* disable bus errors */    berr = sbdberrenb (0);/* save contents */    for (i = 0, p = base; i < max; i++, p += INCR) {	old[i][0] = p[0];	old[i][1] = p[BW];    }/* set boundaries */    for (i = 0, p = base; i < max; i++, p += INCR) {	p[0]	= MARKER;	p[BW]	= NMARKER;    }/* clear first location (in case addresses wrap) */    base[0] 	= START;    base[BW]	= NSTART;    wbflush ();/* search for wrap or garbage */    (void) sbdberrenb (0); 	/* reset error counter */    for (i = 1, p = base + INCR;	 i < max && p[0] == MARKER && p[BW] == NMARKER && sbdberrcnt () == 0;	 i++, p += INCR)	continue;    if (i < max && p[0] == START && p[BW] == NSTART)      /* wraparound: work out distance from base */      max = p - base;    else      /* garbage: dropped off end of memory */      max = (int)p;/* restore contents */    for (; i >= 0; i--, p -= INCR) {	p[0]	= old[i][0];	p[BW]	= old[i][1];    }    (void) sbdberrenb (berr);    return (max);}#endif

⌨️ 快捷键说明

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