1*41080Swilliam /*- 2*41080Swilliam * Copyright (c) 1990 The Regents of the University of California. 3*41080Swilliam * All rights reserved. 4*41080Swilliam * 5*41080Swilliam * This code is derived from software contributed to Berkeley by 6*41080Swilliam * William Jolitz. 7*41080Swilliam * 8*41080Swilliam * %sccs.include.noredist.c% 9*41080Swilliam * 10*41080Swilliam * @(#)mem.c 7.1 (Berkeley) 04/24/90 11*41080Swilliam */ 12*41080Swilliam 13*41080Swilliam /* 14*41080Swilliam * Scan physical memory and talley, bypassing AT devices/roms 15*41080Swilliam */ 16*41080Swilliam #define CHK 4096 main()17*41080Swilliammain() { 18*41080Swilliam long base; 19*41080Swilliam register long val; 20*41080Swilliam 21*41080Swilliam base = 0; 22*41080Swilliam do { 23*41080Swilliam printf("0x%X - ", base); 24*41080Swilliam for ( ;; base+= CHK) { 25*41080Swilliam if (base >= 0xa0000 && base <= 0xe0000) break; 26*41080Swilliam if (base >= 0xfffff000) break; 27*41080Swilliam val = *((long *) base); 28*41080Swilliam *((long *) base) = base*4 + 0x55555555; 29*41080Swilliam if (*((long *) base) != base*4 + 0x55555555) { 30*41080Swilliam *((long *) base) = val ; 31*41080Swilliam break; 32*41080Swilliam } 33*41080Swilliam *((long *) base) = val ; 34*41080Swilliam } 35*41080Swilliam printf("0x%X\n", base-CHK) ; 36*41080Swilliam for ( ;; base+= CHK) { 37*41080Swilliam if (base >= 0xa0000 && base <= 0xe0000) continue ; 38*41080Swilliam if (base >= 0xfffff000) break; 39*41080Swilliam val = *((long *) base); 40*41080Swilliam *((long *) base) = base*4 + 0x55555555; 41*41080Swilliam if (*((long *) base) == base*4 + 0x55555555) { 42*41080Swilliam *((long *) base) = val ; 43*41080Swilliam break; 44*41080Swilliam } 45*41080Swilliam } 46*41080Swilliam } while (base < 0xfffff000); 47*41080Swilliam printf("finished\n"); 48*41080Swilliam getchar(); 49*41080Swilliam } 50