plan 9 kernel history: overview | file list | diff list

1997/0331/pc/memory.c (diff list | history)

1997/0329/sys/src/9/pc/memory.c:67,771997/0331/sys/src/9/pc/memory.c:67,77 (short | long | prev | next)
1997/0327    
	&mapumb[63], 
}; 
 
1997/0329    
static Map mapumbr[8]; 
static RMap rmapumbr = { 
1997/0331    
static Map mapumbrw[8]; 
static RMap rmapumbrw = { 
1997/0329    
	"UMB device memory", 
	mapumbr, 
	&mapumbr[7], 
1997/0331    
	mapumbrw, 
	&mapumbrw[7], 
1997/0329    
}; 
 
#define notdef 
1997/0329/sys/src/9/pc/memory.c:85,911997/0331/sys/src/9/pc/memory.c:85,91
1997/0329    
	maxpa = (nvramread(0x18)<<8)|nvramread(0x17); 
	maxpa1 = (nvramread(0x31)<<8)|nvramread(0x30); 
	maxpa2 = (nvramread(0x16)<<8)|nvramread(0x15); 
	print("maxpa = %uX -> %uX, maxpa1 = %uXm maxpa2 = %uX\n", 
1997/0331    
	print("maxpa = %uX -> %uX, maxpa1 = %uX maxpa2 = %uX\n", 
1997/0329    
		maxpa, MB+maxpa*KB, maxpa1, maxpa2); 
 
	for(mp = rmapram.map; mp->size; mp++) 
1997/0329/sys/src/9/pc/memory.c:92,981997/0331/sys/src/9/pc/memory.c:92,98
1997/0329    
		print("%8.8uX %8.8uX %8.8uX\n", mp->addr, mp->size, mp->addr+mp->size); 
	for(mp = rmapumb.map; mp->size; mp++) 
		print("%8.8uX %8.8uX %8.8uX\n", mp->addr, mp->size, mp->addr+mp->size); 
	for(mp = rmapumbr.map; mp->size; mp++) 
1997/0331    
	for(mp = rmapumbrw.map; mp->size; mp++) 
1997/0329    
		print("%8.8uX %8.8uX %8.8uX\n", mp->addr, mp->size, mp->addr+mp->size); 
	for(mp = rmapupa.map; mp->size; mp++) 
		print("%8.8uX %8.8uX %8.8uX\n", mp->addr, mp->size, mp->addr+mp->size); 
1997/0329/sys/src/9/pc/memory.c:212,2181997/0331/sys/src/9/pc/memory.c:212,218
1997/0327    
	while(p < (uchar*)KADDR(0xE0000)){ 
		p[0] = 0xCC; 
		p[2*KB-1] = 0xCC; 
1997/0329    
		if(p[0] != 0xCC && p[2*KB-1] != 0xCC){ 
1997/0331    
		if(p[0] != 0xCC || p[2*KB-1] != 0xCC){ 
1997/0329    
			p[0] = 0x55; 
			p[1] = 0xAA; 
			p[2] = 4; 
1997/0329/sys/src/9/pc/memory.c:223,2291997/0331/sys/src/9/pc/memory.c:223,229
1997/0327    
			mapfree(&rmapumb, PADDR(p), 2*KB); 
1997/0329    
		} 
		else 
			mapfree(&rmapumbr, PADDR(p), 2*KB); 
1997/0331    
			mapfree(&rmapumbrw, PADDR(p), 2*KB); 
1997/0327    
		p += 2*KB; 
	} 
 
1997/0329/sys/src/9/pc/memory.c:481,4941997/0331/sys/src/9/pc/memory.c:481,514
1997/0329    
} 
 
ulong 
umbrmalloc(ulong addr, int size, int align) 
1997/0331    
umbrwmalloc(ulong addr, int size, int align) 
1997/0329    
{ 
	ulong a; 
1997/0331    
	uchar *p; 
1997/0329    
 
	if(a = mapalloc(&rmapumbr, addr, size, align)) 
1997/0331    
	if(a = mapalloc(&rmapumbrw, addr, size, align)) 
1997/0329    
		return KZERO|a; 
 
1997/0331    
	/* 
	 * Perhaps the memory wasn't visible before 
	 * the interface is initialised, so try again. 
	 */ 
	if((a = umbmalloc(addr, size, align)) == 0) 
		return 0; 
	p = (uchar*)a; 
	p[0] = 0xCC; 
	p[size-1] = 0xCC; 
	if(p[0] == 0xCC && p[size-1] == 0xCC) 
		return a; 
	umbfree(a, size); 
 
1997/0329    
	return 0; 
1997/0331    
} 
 
void 
umbrwfree(ulong addr, int size) 
{ 
	mapfree(&rmapumbrw, addr & ~KZERO, size); 
1997/0327    
} 
 
ulong 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)