Apparently I'm not the only one who forgets which way the outb and
[coreboot.git] / src / ram / ramtest.c
index 3b2d741a36e95018f0d94ee8224565a4b8307569..9f329ef51b39718f58112f6a509f5d260f44ab6b 100644 (file)
@@ -1,6 +1,6 @@
 static void write_phys(unsigned long addr, unsigned long value)
 {
-#if HAVE_MOVNTI
+#if CONFIG_HAVE_MOVNTI
        asm volatile(
                "movnti %1, (%0)"
                : /* outputs */
@@ -29,22 +29,34 @@ static void ram_fill(unsigned long start, unsigned long stop)
        /* 
         * Fill.
         */
+#if CONFIG_USE_PRINTK_IN_CAR
+       printk_debug("DRAM fill: 0x%08x-0x%08x\r\n", start, stop);
+#else
        print_debug("DRAM fill: ");
        print_debug_hex32(start);
        print_debug("-");
        print_debug_hex32(stop);
        print_debug("\r\n");
+#endif
        for(addr = start; addr < stop ; addr += 4) {
                /* Display address being filled */
-               if (!(addr & 0xffff)) {
+               if (!(addr & 0xfffff)) {
+#if CONFIG_USE_PRINTK_IN_CAR
+                       printk_debug("%08x \r", addr);
+#else
                        print_debug_hex32(addr);
                        print_debug(" \r");
+#endif
                }
                write_phys(addr, addr);
        };
        /* Display final address */
+#if CONFIG_USE_PRINTK_IN_CAR
+       printk_debug("%08x\r\nDRAM filled\r\n", addr);
+#else
        print_debug_hex32(addr);
        print_debug("\r\nDRAM filled\r\n");
+#endif
 }
 
 static void ram_verify(unsigned long start, unsigned long stop)
@@ -54,40 +66,70 @@ static void ram_verify(unsigned long start, unsigned long stop)
        /* 
         * Verify.
         */
+#if CONFIG_USE_PRINTK_IN_CAR
+       printk_debug("DRAM verify: 0x%08x-0x%08x\r\n", start, stop);
+#else
        print_debug("DRAM verify: ");
        print_debug_hex32(start);
        print_debug_char('-');
        print_debug_hex32(stop);
        print_debug("\r\n");
+#endif
        for(addr = start; addr < stop ; addr += 4) {
                unsigned long value;
                /* Display address being tested */
-               if (!(addr & 0xffff)) {
+               if (!(addr & 0xfffff)) {
+#if CONFIG_USE_PRINTK_IN_CAR
+                       printk_debug("%08x \r", addr);
+#else
                        print_debug_hex32(addr);
                        print_debug(" \r");
+#endif
                }
                value = read_phys(addr);
                if (value != addr) {
                        /* Display address with error */
+#if CONFIG_USE_PRINTK_IN_CAR
+                       printk_err("Fail: @0x%08x Read value=0x%08x\r\n", addr, value);
+#else
                        print_err("Fail: @0x");
                        print_err_hex32(addr);
                        print_err(" Read value=0x");
                        print_err_hex32(value);
                        print_err("\r\n");
+#endif
                        i++;
                        if(i>256) {
+#if CONFIG_USE_PRINTK_IN_CAR
+                               printk_debug("Aborting.\n\r");
+#else
                                print_debug("Aborting.\n\r");
+#endif
                                break;
                        }
                }
        }
        /* Display final address */
+#if CONFIG_USE_PRINTK_IN_CAR
+       printk_debug("%08x", addr);
+#else
        print_debug_hex32(addr);
+#endif
+
        if (i) {
+#if CONFIG_USE_PRINTK_IN_CAR
+               printk_debug("\r\nDRAM did _NOT_ verify!\r\n");
+#else
                print_debug("\r\nDRAM did _NOT_ verify!\r\n");
+#endif
+               die("DRAM ERROR");
        }
        else {
+#if CONFIG_USE_PRINTK_IN_CAR
+               printk_debug("\r\nDRAM range verified.\r\n");
+#else
                print_debug("\r\nDRAM range verified.\r\n");
+#endif
        }
 }
 
@@ -99,13 +141,21 @@ void ram_check(unsigned long start, unsigned long stop)
         * test than a "Is my DRAM faulty?" test.  Not all bits
         * are tested.   -Tyson
         */
+#if CONFIG_USE_PRINTK_IN_CAR
+       printk_debug("Testing DRAM : %08x - %08x\r\n", start, stop);
+#else
        print_debug("Testing DRAM : ");
        print_debug_hex32(start);
        print_debug("-");       
        print_debug_hex32(stop);
        print_debug("\r\n");
+#endif
        ram_fill(start, stop);
        ram_verify(start, stop);
+#if CONFIG_USE_PRINTK_IN_CAR
+       printk_debug("Done.\r\n");
+#else
        print_debug("Done.\r\n");
+#endif
 }