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

Reply via email to