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