Module Name: src
Committed By: jmcneill
Date: Fri Jan 17 20:28:59 UTC 2020
Modified Files:
src/sys/external/bsd/drm2/include/asm: io.h
Log Message:
Don't use memset as memset_io on aarch64. With c=0 it uses the "dc zva"
cache maintenance instruction as an optimization which does not work on
device memory.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/include/asm/io.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/include/asm/io.h
diff -u src/sys/external/bsd/drm2/include/asm/io.h:1.4 src/sys/external/bsd/drm2/include/asm/io.h:1.5
--- src/sys/external/bsd/drm2/include/asm/io.h:1.4 Wed Feb 25 14:56:17 2015
+++ src/sys/external/bsd/drm2/include/asm/io.h Fri Jan 17 20:28:59 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: io.h,v 1.4 2015/02/25 14:56:17 riastradh Exp $ */
+/* $NetBSD: io.h,v 1.5 2020/01/17 20:28:59 jmcneill Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -46,7 +46,22 @@
#define memcpy_fromio memcpy
#define memcpy_toio memcpy
+
+#if defined(__NetBSD__) && defined(__aarch64__)
+static inline void *
+memset_io(void *b, int c, size_t len)
+{
+ uint32_t *ptr = b;
+ while (len >= 4) {
+ *ptr++ = c;
+ len -= 4;
+ }
+ KASSERT(len == 0);
+ return b;
+}
+#else
#define memset_io memset
+#endif
/* XXX wrong place */
#define __force