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