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