summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2019-03-20 19:53:44 +0200
committerPatrick Georgi <pgeorgi@google.com>2019-03-22 12:19:47 +0000
commit321bce4a3f472cfcd1f9af12e0204f6648ce499e (patch)
tree748ec4ac9ae5484fb006e87fd95c68e170fc1e6d /src/lib
parenta9506dbaf410d9b2d297661f51f0e0b9842170e1 (diff)
lib/ramtest.c: Make it a bit more arch-agnostic
Change-Id: I05734515c0bbd043d489c76cf9cf8b2dbe0ff515 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/31994 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Makefile.inc2
-rw-r--r--src/lib/ramtest.c49
2 files changed, 20 insertions, 31 deletions
diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index 70bbece49d..1350152a40 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -83,7 +83,7 @@ romstage-y += libgcc.c
romstage-y += memrange.c
romstage-$(CONFIG_PRIMITIVE_MEMTEST) += primitive_memtest.c
ramstage-$(CONFIG_PRIMITIVE_MEMTEST) += primitive_memtest.c
-romstage-$(CONFIG_CACHE_AS_RAM) += ramtest.c
+romstage-y += ramtest.c
romstage-$(CONFIG_GENERIC_GPIO_LIB) += gpio.c
ramstage-y += region_file.c
romstage-y += region_file.c
diff --git a/src/lib/ramtest.c b/src/lib/ramtest.c
index f0f5c556a6..eb58c30fe5 100644
--- a/src/lib/ramtest.c
+++ b/src/lib/ramtest.c
@@ -1,50 +1,39 @@
#include <stdint.h>
#include <lib.h> /* Prototypes */
#include <console/console.h>
+#include <device/mmio.h>
-static void write_phys(unsigned long addr, u32 value)
+#if CONFIG(ARCH_X86) && CONFIG(SSE2)
+/* Assembler in lib/ is ugly. */
+static void write_phys(uintptr_t addr, u32 value)
{
- // Assembler in lib/ is very ugly. But we properly guarded
- // it so let's obey this one for now
-#if CONFIG(SSE2)
- asm volatile(
+ asm volatile (
"movnti %1, (%0)"
: /* outputs */
: "r" (addr), "r" (value) /* inputs */
-#ifndef __GNUC__ /* GCC does not like empty clobbers? */
- : /* clobbers */
-#endif
- );
-#else
- volatile unsigned long *ptr;
- ptr = (void *)addr;
- *ptr = value;
-#endif
+ );
}
-static u32 read_phys(unsigned long addr)
+static void phys_memory_barrier(void)
+{
+ // Needed for movnti
+ asm volatile ("sfence" ::: "memory");
+}
+#else
+static void write_phys(uintptr_t addr, u32 value)
{
- volatile unsigned long *ptr;
- ptr = (void *)addr;
- return *ptr;
+ write32((void *)addr, value);
}
static void phys_memory_barrier(void)
{
-#if CONFIG(SSE2)
- // Needed for movnti
- asm volatile (
- "sfence"
- ::
-#ifdef __GNUC__ /* ROMCC does not like memory clobbers */
- : "memory"
-#endif
- );
-#else
-#ifdef __GNUC__ /* ROMCC does not like empty asm statements */
asm volatile ("" ::: "memory");
+}
#endif
-#endif
+
+static u32 read_phys(uintptr_t addr)
+{
+ return read32((void *)addr);
}
/**