Module Name:    src
Committed By:   rin
Date:           Mon May 30 15:06:55 UTC 2022

Modified Files:
        src/distrib/sets/lists/base: md.evbppc
        src/distrib/sets/lists/comp: md.evbppc
        src/distrib/sets/lists/debug: md.evbppc
        src/etc: Makefile
        src/lib: Makefile
Added Files:
        src/distrib/sets/lists/etc: md.evbppc
        src/etc/etc.evbppc: ld.so.conf
        src/lib/libc_aligned: Makefile shlib_version
        src/lib/libc_aligned/arch/powerpc: Makefile.inc

Log Message:
Introduce libc_aligned.so for evbppc-powerpc32, which provides
strictly-aligned versions of memcmp(3), bcopy(3), memcpy(3), and
memmove(3).

This is used for 403 by ld.so.conf with machdep.no_unaligned variable.

With this library, unaligned memory accesses are significantly reduced
for 403 (from several hundreds to few tens per sec under heavy load);
only ld.elf_so (typically few times per fork) and statically-linked
binaries do such access.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/distrib/sets/lists/base/md.evbppc
cvs rdiff -u -r1.17 -r1.18 src/distrib/sets/lists/comp/md.evbppc
cvs rdiff -u -r1.1 -r1.2 src/distrib/sets/lists/debug/md.evbppc
cvs rdiff -u -r0 -r1.1 src/distrib/sets/lists/etc/md.evbppc
cvs rdiff -u -r1.463 -r1.464 src/etc/Makefile
cvs rdiff -u -r0 -r1.1 src/etc/etc.evbppc/ld.so.conf
cvs rdiff -u -r1.293 -r1.294 src/lib/Makefile
cvs rdiff -u -r0 -r1.1 src/lib/libc_aligned/Makefile \
    src/lib/libc_aligned/shlib_version
cvs rdiff -u -r0 -r1.1 src/lib/libc_aligned/arch/powerpc/Makefile.inc

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/base/md.evbppc
diff -u src/distrib/sets/lists/base/md.evbppc:1.1 src/distrib/sets/lists/base/md.evbppc:1.2
--- src/distrib/sets/lists/base/md.evbppc:1.1	Wed Jan 12 15:35:51 2022
+++ src/distrib/sets/lists/base/md.evbppc	Mon May 30 15:06:54 2022
@@ -1,4 +1,10 @@
-# $NetBSD: md.evbppc,v 1.1 2022/01/12 15:35:51 martin Exp $
+# $NetBSD: md.evbppc,v 1.2 2022/05/30 15:06:54 rin Exp $
+./lib/libc_aligned.so		base-sys-shlib	dynamicroot,!machine_arch=powerpc64
+./lib/libc_aligned.so.0		base-sys-shlib	dynamicroot,!machine_arch=powerpc64
+./lib/libc_aligned.so.0.0	base-sys-shlib	dynamicroot,!machine_arch=powerpc64
+./usr/lib/libc_aligned.so	base-sys-shlib	pic,!machine_arch=powerpc64
+./usr/lib/libc_aligned.so.0	base-sys-shlib	pic,!machine_arch=powerpc64
+./usr/lib/libc_aligned.so.0.0	base-sys-shlib	pic,!machine_arch=powerpc64
 ./usr/share/sysinst/catalog/sysinstmsgs.de	base-util-share
 ./usr/share/sysinst/catalog/sysinstmsgs.es	base-util-share
 ./usr/share/sysinst/catalog/sysinstmsgs.fr	base-util-share

Index: src/distrib/sets/lists/comp/md.evbppc
diff -u src/distrib/sets/lists/comp/md.evbppc:1.17 src/distrib/sets/lists/comp/md.evbppc:1.18
--- src/distrib/sets/lists/comp/md.evbppc:1.17	Thu Jul 12 10:46:40 2018
+++ src/distrib/sets/lists/comp/md.evbppc	Mon May 30 15:06:54 2022
@@ -1,4 +1,4 @@
-# $NetBSD: md.evbppc,v 1.17 2018/07/12 10:46:40 maxv Exp $
+# $NetBSD: md.evbppc,v 1.18 2022/05/30 15:06:54 rin Exp $
 ./usr/include/evbppc				comp-c-include
 ./usr/include/evbppc/_G_config.h		comp-obsolete		obsolete
 ./usr/include/evbppc/ansi.h			comp-c-include
@@ -59,3 +59,5 @@
 ./usr/include/evbppc/vmparam.h			comp-c-include
 ./usr/include/evbppc/wchar_limits.h		comp-c-include
 ./usr/include/ieeefp.h				comp-c-include
+./usr/lib/libc_aligned.a	comp-c-lib	!machine_arch=powerpc64
+./usr/lib/libc_aligned_p.a	comp-c-lib	!machine_arch=powerpc64

Index: src/distrib/sets/lists/debug/md.evbppc
diff -u src/distrib/sets/lists/debug/md.evbppc:1.1 src/distrib/sets/lists/debug/md.evbppc:1.2
--- src/distrib/sets/lists/debug/md.evbppc:1.1	Fri Dec 31 16:15:58 2021
+++ src/distrib/sets/lists/debug/md.evbppc	Mon May 30 15:06:54 2022
@@ -1,4 +1,5 @@
-# $NetBSD: md.evbppc,v 1.1 2021/12/31 16:15:58 christos Exp $
+# $NetBSD: md.evbppc,v 1.2 2022/05/30 15:06:54 rin Exp $
+./usr/lib/libc_aligned_g.a			comp-c-debuglib		debuglib,!machine_arch=powerpc64
 ./usr/libdata/debug/netbsd-esata-P2020DS.debug	comp-sysutil-debug	debug
 ./usr/libdata/debug/netbsd-ld0a-INSTALL_TWRP1025.debug	comp-sysutil-debug	debug
 ./usr/libdata/debug/netbsd-ld0a-TWRP1025.debug	comp-sysutil-debug	debug
@@ -11,3 +12,5 @@
 ./usr/libdata/debug/nfsnetbsd-P2020RDB.debug	comp-sysutil-debug	debug
 ./usr/libdata/debug/nfsnetbsd-RB800.debug	comp-sysutil-debug	debug
 ./usr/libdata/debug/nfsnetbsd-TWRP1025.debug	comp-sysutil-debug	debug
+./usr/libdata/debug/lib/libc_aligned.so.0.0.debug	comp-sys-debug	debug,pic,!machine_arch=powerpc64
+./usr/libdata/debug/usr/lib/libc_aligned.so.0.0.debug	comp-sys-debug	debug,pic,!machine_arch=powerpc64

Index: src/etc/Makefile
diff -u src/etc/Makefile:1.463 src/etc/Makefile:1.464
--- src/etc/Makefile:1.463	Sat May 28 14:31:11 2022
+++ src/etc/Makefile	Mon May 30 15:06:55 2022
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.463 2022/05/28 14:31:11 nia Exp $
+#	$NetBSD: Makefile,v 1.464 2022/05/30 15:06:55 rin Exp $
 #	from: @(#)Makefile	8.7 (Berkeley) 5/25/95
 
 # Environment variables without default values:
@@ -127,7 +127,8 @@ BIN1+=	disktab
 .endif
 
 .if exists(etc.${MACHINE}/ld.so.conf) && \
-    empty(MACHINE_ARCH:M*arm*hf*) && empty(MACHINE_ARCH:Maarch64*)
+    empty(MACHINE_ARCH:M*arm*hf*) && empty(MACHINE_ARCH:Maarch64*) && \
+    ${MACHINE_ARCH} != "powerpc64"
 BIN1+=	etc.${MACHINE}/ld.so.conf
 .endif
 

Index: src/lib/Makefile
diff -u src/lib/Makefile:1.293 src/lib/Makefile:1.294
--- src/lib/Makefile:1.293	Mon Nov 22 14:34:35 2021
+++ src/lib/Makefile	Mon May 30 15:06:55 2022
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.293 2021/11/22 14:34:35 nia Exp $
+#	$NetBSD: Makefile,v 1.294 2022/05/30 15:06:55 rin Exp $
 #	from: @(#)Makefile	5.25.1.1 (Berkeley) 5/7/91
 
 .include <bsd.own.mk>
@@ -33,6 +33,9 @@ SUBDIR+=	libarch \
 SUBDIR+=	libkern
 .endif
 
+.if (${MACHINE} == "evbppc" && ${MACHINE_ARCH} == "powerpc")
+SUBDIR+=	libc_aligned
+.endif
 .if (${MACHINE_CPU} == "arm" || ${MACHINE_CPU} == "aarch64")
 LIBC_MACHINE_ARCH?=${MACHINE_ARCH}
 LIBC_MACHINE_CPU?=${MACHINE_CPU}

Added files:

Index: src/distrib/sets/lists/etc/md.evbppc
diff -u /dev/null src/distrib/sets/lists/etc/md.evbppc:1.1
--- /dev/null	Mon May 30 15:06:55 2022
+++ src/distrib/sets/lists/etc/md.evbppc	Mon May 30 15:06:55 2022
@@ -0,0 +1,2 @@
+# $NetBSD: md.evbppc,v 1.1 2022/05/30 15:06:55 rin Exp $
+./etc/ld.so.conf	etc-sys-etc	!machine_arch=powerpc64

Index: src/etc/etc.evbppc/ld.so.conf
diff -u /dev/null src/etc/etc.evbppc/ld.so.conf:1.1
--- /dev/null	Mon May 30 15:06:55 2022
+++ src/etc/etc.evbppc/ld.so.conf	Mon May 30 15:06:55 2022
@@ -0,0 +1 @@
+libc.so.12	machdep.no_unaligned	1:libc_aligned.so.0,libc.so.12

Index: src/lib/libc_aligned/Makefile
diff -u /dev/null src/lib/libc_aligned/Makefile:1.1
--- /dev/null	Mon May 30 15:06:55 2022
+++ src/lib/libc_aligned/Makefile	Mon May 30 15:06:55 2022
@@ -0,0 +1,28 @@
+#	$NetBSD: Makefile,v 1.1 2022/05/30 15:06:55 rin Exp $
+#
+
+# libc routines with strictly aligned memory access
+
+USE_SHLIBDIR=	yes
+
+.include <bsd.own.mk>
+
+LIBC_MACHINE_CPU?= ${MACHINE_CPU}
+
+.if exists(arch/${LIBC_MACHINE_CPU})
+.include "arch/${LIBC_MACHINE_CPU}/Makefile.inc"
+.PATH: ${.CURDIR}/arch/${LIBC_MACHINE_CPU}
+.elif exists(arch/${MACHINE_ARCH})
+.include "arch/${MACHINE_ARCH}/Makefile.inc"
+.PATH: ${.CURDIR}/arch/${MACHINE_ARCH}
+.elif exists(arch/${MACHINE}
+.include "arch/${MACHINE}/Makefile.inc"
+.PATH: ${.CURDIR}/arch/${MACHINE}
+.endif
+
+.if !empty(SRCS)
+
+LIB?=		c_aligned
+
+.include <bsd.lib.mk>
+.endif
Index: src/lib/libc_aligned/shlib_version
diff -u /dev/null src/lib/libc_aligned/shlib_version:1.1
--- /dev/null	Mon May 30 15:06:55 2022
+++ src/lib/libc_aligned/shlib_version	Mon May 30 15:06:55 2022
@@ -0,0 +1,5 @@
+#	$NetBSD: shlib_version,v 1.1 2022/05/30 15:06:55 rin Exp $
+#	Remember to update distrib/sets/lists/base/shl.* when changing
+#
+major=0
+minor=0

Index: src/lib/libc_aligned/arch/powerpc/Makefile.inc
diff -u /dev/null src/lib/libc_aligned/arch/powerpc/Makefile.inc:1.1
--- /dev/null	Mon May 30 15:06:55 2022
+++ src/lib/libc_aligned/arch/powerpc/Makefile.inc	Mon May 30 15:06:55 2022
@@ -0,0 +1,15 @@
+#	$NetBSD: Makefile.inc,v 1.1 2022/05/30 15:06:55 rin Exp $
+
+# Disable asm versions that use unaligned memory access.
+
+.PATH:	${NETBSDSRCDIR}/common/lib/libc/string
+
+SRCS+=	memcmp.c bcopy.c memcpy.c memmove.c
+
+.if 0
+.  for name in bcopy memcmp memcpy memmove
+.    for suffix in o po pico go d
+${name}.${suffix}: ${name}.c
+.    endfor
+.  endfor
+.endif

Reply via email to