mb/google/brya: Create rull variant
[coreboot2.git] / src / lib / primitive_memtest.c
blobfa8a5ec9899ceaf178ba46847a34716eaaea335b
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <stdint.h>
4 #include <lib.h>
5 #include <console/console.h>
7 int primitive_memtest(uintptr_t base, uintptr_t size)
9 uintptr_t *p;
10 uintptr_t i;
11 int bad = 0;
13 printk(BIOS_SPEW, "Performing primitive memory test.\n");
14 printk(BIOS_SPEW, "DRAM start: 0x%08x, DRAM size: 0x%08x", base, size);
15 for (i = base; i < base + (size - 1) - sizeof(p); i += sizeof(p)) {
16 if (i % 0x100000 == 0) {
17 if ((i % 0x800000) == 0)
18 printk(BIOS_SPEW, "\n");
19 else if (i != 0)
20 printk(BIOS_SPEW, " ");
21 printk(BIOS_SPEW, "0x%08x", i);
23 p = (uintptr_t *)i;
24 *p = i;
27 printk(BIOS_SPEW, "\n\nReading back DRAM content");
28 for (i = base; i < base + (size - 1) - sizeof(p); i += sizeof(p)) {
29 if (i % 0x100000 == 0) {
30 if ((i % 0x800000) == 0)
31 printk(BIOS_SPEW, "\n");
32 else if (i != 0)
33 printk(BIOS_SPEW, " ");
34 printk(BIOS_SPEW, "0x%08x", i);
37 p = (uintptr_t *)i;
38 if (*p != i) {
39 printk(BIOS_SPEW, "\n0x%08zx: got 0x%zx\n", i, *p);
40 bad++;
44 printk(BIOS_SPEW, "\n");
45 printk(BIOS_SPEW, "%d errors\n", bad);
47 return bad;