| 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,77 – 1997/0331/sys/src/9/pc/memory.c:67,77 (short | long | prev | next) | ||
| 1997/0327 | &mapumb[63], }; | |
| 1997/0329 |
| |
| 1997/0331 | static Map mapumbrw[8]; static RMap rmapumbrw = { | |
| 1997/0329 | "UMB device memory", | |
| 1997/0331 | mapumbrw, &mapumbrw[7], | |
| 1997/0329 | }; #define notdef | |
| 1997/0329/sys/src/9/pc/memory.c:85,91 – 1997/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); | |
| 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,98 – 1997/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); | |
| 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,218 – 1997/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 |
| |
| 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,229 – 1997/0331/sys/src/9/pc/memory.c:223,229 | ||
| 1997/0327 | mapfree(&rmapumb, PADDR(p), 2*KB); | |
| 1997/0329 | } else | |
| 1997/0331 | mapfree(&rmapumbrw, PADDR(p), 2*KB); | |
| 1997/0327 | p += 2*KB; } | |
| 1997/0329/sys/src/9/pc/memory.c:481,494 – 1997/0331/sys/src/9/pc/memory.c:481,514 | ||
| 1997/0329 | } ulong | |
| 1997/0331 | umbrwmalloc(ulong addr, int size, int align) | |
| 1997/0329 | { ulong a; | |
| 1997/0331 | uchar *p; | |
| 1997/0329 |
| |
| 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 | |