Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
4bce1a1
TCP BBR: remove code which is not needed
tuexen Jan 4, 2025
84e894c
TCP RACK: remove variable with is only initialized and not changed
tuexen Jan 4, 2025
0f7d8b7
Makefile.inc1: Set DISTDIR in stagekernel target
emaste Jan 2, 2025
48b9d78
hda: Add patch for Framework Laptop Intel 13th gen
JohnAZoidberg Jan 4, 2025
93411b3
rtwn: calculate control rate for VHT rate frames
Dec 16, 2024
50c1e17
umtx: handle allocation failire in umtx_pi_alloc()
kprovost Jan 5, 2025
d830cac
recoverdisk: Fix comparison between stripesize and sectorsize
bsdphk Jan 5, 2025
a0f06df
loader: Add a list of firmware name mapping
evadot Jan 6, 2025
48db612
arm64: Add a new SOC_ROCKCHIP option
evadot Jan 2, 2025
ad1bf74
arm64: rockchip: Add a new rk8xx device
evadot Jan 2, 2025
a071c76
UPDATING: Document recent Rockchip options and device
evadot Jan 6, 2025
73ad5af
arm64: Unbreak LINT build
evadot Jan 6, 2025
7f39f03
libc/xdr: remove bogus lseek(2) for xdr streams
glebius Jan 6, 2025
b5c1f7d
xdr: use C99 initializers for xdr_ops
glebius Jan 6, 2025
c2153a5
fusefs: minor cleanup in the tests
asomers Dec 27, 2024
58610d1
build: Sort distributekernel METALOG when using -DNO_ROOT
patmaddox Dec 13, 2024
f415b2e
fusefs: Coverity cleanup in the lseek tests
asomers Jan 6, 2025
bb9525f
TCP RACK: fix TCP fast open
tuexen Jan 6, 2025
c28fefe
TCP BBR: remove dead code
tuexen Jan 6, 2025
061727e
TCP BBR: remove dead code
tuexen Jan 6, 2025
e8ec280
TCP RACK: fix TCP_RACK_PACING_BETA socket option
tuexen Jan 6, 2025
9743e9e
SO_SPLICE tests: Fix a comment typo
markjdb Jan 6, 2025
8c75c15
jail: Avoid a potential use-after-free when destroying jails
markjdb Jan 6, 2025
1c933f4
unix: Be consistent about error handling for unconnected sockets
markjdb Jan 6, 2025
5bf3ac7
bsdinstall: Fix a typo in a comment
markjdb Jan 6, 2025
872686b
rc: Document rtadvd_flags
markjdb Jan 6, 2025
378a2b1
netipsec: Pass the right mbuf up
markjdb Jan 6, 2025
02ebbc7
swab: Fix implementation to support overlapping copies
bsdimp Jan 6, 2025
6fc164c
cdefs.9: Note only one programming environment at a time
bsdimp Jan 6, 2025
cfd8866
cdefs.h: Add warning about defining __BSD_VISIBLE and friends
bsdimp Jan 6, 2025
080f68d
mlx5_core: Add steering support for IPsec with IPv6
arieleren Dec 4, 2024
215c8b7
riscv/vmm: Make vcpu sleep periods consistent with other platforms
markjdb Jan 7, 2025
19cb383
vmm.4: Update to mention non-amd64 platforms
markjdb Jan 7, 2025
b09fe08
amd64/vmm: Remove vmm_mem_init()
markjdb Jan 7, 2025
c945c9d
amd64/vmm: Rename vm_get_vmspace() to vm_vmspace()
markjdb Jan 7, 2025
fd94571
rawip: Take the inpcb lock when appropriate in rip_ctloutput()
markjdb Jan 7, 2025
cc0d806
open(2): allow O_PATH | O_CREAT
kostikbel Jan 6, 2025
749b3b2
path_test: adjust test for open(O_PATH | O_CREAT)
kostikbel Jan 6, 2025
2372f8c
LinuxKPI 802.11 / rtw88: make packets flow again
Dec 20, 2024
91a4107
ifconfig: remove debug printfs from set80211vhtconf()
Dec 28, 2024
2be86b6
makefs: Remove dead code in inode_type()
markjdb Jan 7, 2025
ce87828
makefs: Handle special file types when creating a zpool
markjdb Jan 7, 2025
596ee23
ktrace: Make -t t trace struct arrays as well as structs
markjdb Jan 7, 2025
d3bdfa5
bhyve: Use a non-blocking read in slirp_recv()
markjdb Jan 7, 2025
20a51e6
bhyve: Implement the libslirp notify callback
markjdb Jan 7, 2025
f1aeb5d
LinuxKPI: 802.11: add a print mask for ieee80211_rx_status_flags bits
Jan 7, 2025
cf71349
ifconfig: 802.11: fix indentation of a line
Jan 4, 2025
e6d40f9
net80211: correct typo s/Insure/Ensure/
Jan 7, 2025
6ba2c03
pci_find_cap_method(): limit number of iterations for finding a capab…
kostikbel Jan 6, 2025
f73c9b5
mi_switch.9: Remove cpu_switch, cpu_throw
emaste Jan 7, 2025
07f6575
LinuxKPI: 802.11: turn on debugfs for iwlwifi and rtw88
Dec 28, 2024
42410c6
ifconfig: make -vht work
Jan 4, 2025
1832eb1
net80211: add missing 80Mhz and 160Mhz channel ranges
Jan 4, 2025
254a2b7
x86: Short-circuit ipi_all_but_self() on UP systems
markjdb Jan 7, 2025
a3a308f
lib80211: regdomain: add the two other 160MHz bands
Jan 4, 2025
5fdc482
net80211: (v)ht: use macros at hand
Jan 4, 2025
2c8b0d6
net80211 / LinuxKPI 802.11: correct enum ieee80211_sta_rx_bw
Dec 29, 2024
a4cdb78
LinuxKPI: 802.11: improve the IMPROVE_HT() macro
Dec 28, 2024
fd27f86
LinuxKPI: switch jiffies and timer->expire to unsigned long
Dec 28, 2024
d82bfe7
rtwn: don't set the RTS/CTS primary channel field for RTL8812AU/RTL88…
Dec 16, 2024
dd58d03
rtwn: set the maximum A-MPDU size correctly for RTL8812AU/RTL8821AU
Dec 17, 2024
7f8f120
libmagic: Unbreak for older FreeBSD releases.
delphij Jan 8, 2025
2bb0efb
Revert: LinuxKPI: switch jiffies and timer->expire to unsigned long
Jan 8, 2025
cad1d13
dts: Bump the freebsd branding version to 6.12
evadot Jan 8, 2025
1f7c379
isp: Fix abort issue introduced by previous commit
amotin Jan 8, 2025
e6c96c7
Revert "isp: Fix abort issue introduced by previous commit"
amotin Jan 8, 2025
2c48a8f
isp: Fix abort issue introduced by previous commit
amotin Jan 8, 2025
4c89d59
TCP RACK: don't log an uninitialized value
tuexen Jan 8, 2025
912a056
net80211: add helper functions for VHT transmit
Dec 16, 2024
8218258
rtwn: add VHT20/VHT40/VHT80 bandwidth configuration for transmit.
Dec 16, 2024
ec07af2
rtwn: announce VHT support for RTL8812AU/RTL8821AU.
Dec 16, 2024
5aac61c
rpc: delete disabled code from rpcb_clnt.c
glebius Jan 9, 2025
2834fd2
kgssapi: remove the debug module
glebius Jan 9, 2025
3a0cdb2
rpc: clean kernel RPC internal headers of non-kernel declarations
glebius Jan 9, 2025
ebb36fc
rpc: remove svc_create(), it is not used
glebius Jan 9, 2025
8e8f8d8
rpcbind: remove extraneous check for nconf not being unix(4)
glebius Jan 9, 2025
e7fbf52
TCP BBR: remove dead code
tuexen Jan 9, 2025
1b4e117
loader: Fix orb position
evadot Jan 7, 2025
ee23374
loader: Rework kernel menu section
evadot Jan 7, 2025
a8d9bd3
bintrans(1): qp switch to getopt_long
bapt Jan 8, 2025
beab8b1
bintrans(1): RFC2047 variant of quoted print
bapt Jan 8, 2025
4413d9f
usb_vendors: update to 2024.12.04
bapt Jan 9, 2025
2f82bf3
pci_vendors: update to 2024.11.25
bapt Jan 9, 2025
19a6bc9
fwget: Silence log() when -q is used
rbgarga Jan 9, 2025
7c94d51
aio_kqueue_test: Fix CID 1558429
dabright Jan 5, 2025
4a46ece
vmm: Fix error handling in vmm_handler()
markjdb Jan 9, 2025
fe1165d
vm_pageout: Make vmd_oom a bool
markjdb Jan 9, 2025
55b343f
vm_pageout: Add a chicken switch for multithreaded PQ_INACTIVE scanning
markjdb Jan 9, 2025
fb98fc4
fwget: Simplify logic
rbgarga Jan 9, 2025
0acab8b
enic(4): fix down/up, MTU changes and more
Jan 9, 2025
2cadbe4
tcp_wrappers: Use default C standard version
mchoo7 Apr 6, 2024
d0d7fcb
dumpon: Move the _Noreturn keyword before the return type
bsdjhb Jan 9, 2025
c6eb7f3
zstd: Add a stub <assert.h> for the kernel
mchoo7 Jan 9, 2025
6af088c
BUS_CHILD_DETACHED.9: This is also called if DEVICE_ATTACH fails
bsdjhb Jan 9, 2025
ccabc7c
DEVICE_IDENTIFY.9: Modernize description and use cases
bsdjhb Jan 9, 2025
ed49d3b
twe.4: Remove manpage for previously-removed driver
bsdjhb Jan 10, 2025
f9f0a1d
nfscl: Fix a crash when a readdir entry has nul in it
Jan 10, 2025
16f0d01
arm64: apple: fix aic for !SMP configurations
kevans91 Jan 10, 2025
9d1de25
Update the Arm Optimized Routines
zxombie Jan 10, 2025
f3087be
Update the Arm Optimized Routine library to v25.01
zxombie Jan 10, 2025
bc77aa7
release: install etc files from the source tree, not the host
Dec 23, 2024
84de8c5
nfsd: Add vfs.nfsd.testing_disable_grace sysctl
Jan 10, 2025
5e7d93a
lib/libc/aarch64/string: add strcmp SIMD implementation
soppelmann Aug 26, 2024
b91003a
lib/libc/aarch64/string: add strspn optimized implementation
soppelmann Aug 26, 2024
f2bd390
lib/libc/aarch64/string: add strcspn optimized implementation
soppelmann Aug 26, 2024
89b3872
lib/libc/aarch64/string: add optimized strpbrk & strsep implementations
soppelmann Aug 26, 2024
79287d7
lib/libc/aarch64/string: strcat enable use of SIMD
soppelmann Aug 26, 2024
756b7fc
lib/libc/aarch64/string: add strlcpy SIMD implementation
soppelmann Aug 26, 2024
25c485e
lib/libc/aarch64/string: add strncmp SIMD implementation
soppelmann Aug 26, 2024
bad1799
lib/libc/aarch64/string: add memccpy SIMD implementation
soppelmann Aug 26, 2024
3dc5429
lib/libc/aarch64/string: add strncat SIMD implementation
soppelmann Aug 26, 2024
bea89d0
lib/libc/aarch64/string: add strlcat SIMD implementation
soppelmann Aug 26, 2024
5ebd4d0
lib/libc/aarch64/string: add memcpy SIMD implementation
soppelmann Aug 26, 2024
3863fec
lib/libc/aarch64/string: add strlen SIMD implementation
soppelmann Aug 26, 2024
79e01e7
lib/libc/aarch64/string: add bcopy & bzero wrapper
soppelmann Aug 28, 2024
ce6af7a
share/man/man7/simd.7: document SIMD-enhanced aarch64 functions
soppelmann Aug 28, 2024
f2c9866
lib/libc/aarch64/string: add ASIMD-enhanced timingsafe_bcmp implement…
clausecker Dec 9, 2024
3f22433
lib/libc/aarch64/string: add timingsafe_memcmp() assembly implementation
clausecker Dec 9, 2024
c15b847
share/man/man7/simd.7: document SIMD-enhanced timingsafe_{b,mem}cmp
clausecker Nov 18, 2024
6b82130
clock: Add a long ticks variable, ticksl
markjdb Jan 10, 2025
9eb30ef
riscv: enable Allwinner D1 USB drivers
mhorne Jan 10, 2025
aa766e2
ofw_cpu: fix __riscv preprocessor check
mhorne Jan 10, 2025
4ea0c3f
ofw_cpu: collapse some #ifdef code
mhorne Jan 10, 2025
ac9de18
ofw_cpu: check for "disabled" status during probe
mhorne Jan 10, 2025
def7999
riscv: enable cpufreq_dt driver
mhorne Oct 8, 2024
9234a50
ng_ksocket: add IPv6 support for address parsing and unparsing
spmzt Jan 10, 2025
f021e35
bsnmpwalk: Fix crash on invalid data
shteryana Jan 10, 2025
b2b974f
clock: Simplify subr_ticks and rename
markjdb Jan 10, 2025
550137e
universe: Permit requesting a specific version of GCC
bsdjhb Jan 11, 2025
84a62d9
mlx.4: Remove stale diagnostic message
bsdjhb Jan 11, 2025
4378bd3
stand/kshim: Replace bus_generic_attach with bus_attach_children
bsdjhb Jan 11, 2025
ee15875
stand/kshim: Update for devclass being removed from DRIVER_MODULE
bsdjhb Jan 11, 2025
8e4535e
stand/kshim: Implement bus_detach_children
bsdjhb Jan 11, 2025
f6f5aa8
stand/usb: Quiet warnings so this builds again
bsdjhb Jan 11, 2025
40d7ba0
stand/kshim: Replace devclass_equal with calls to strcmp
bsdjhb Jan 11, 2025
0fda4ff
netlink: augment group writer with priv(9) argument
glebius Jan 11, 2025
8a8d095
netlink: add snl(3) primitive to obtain group ID
glebius Jan 11, 2025
bbe6559
netlink: fix size comparison
glebius Jan 11, 2025
26d1ad5
netlink: snl_create_genl_msg_request() may fail due to ENOMEM
glebius Jan 11, 2025
926d2ea
netlink: some refactoring of NETLINK_GENERIC layer
glebius Jan 11, 2025
4dc1820
libbsnmp: avoid division by zero with empty password
glebius Jan 11, 2025
3999a86
libbsnmptools: avoid uninitialized snmptoolctx->passwd with empty pas…
glebius Jan 11, 2025
76658cd
install-boot.sh: Expose configuration variables
VexedUXR Jan 11, 2025
da3e113
release/amd64: Check config variables instead of checking files
VexedUXR Jan 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 9 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -531,13 +531,15 @@ TARGET_ARCHES_${target}= ${MACHINE_ARCH_LIST_${target}}
.endfor

.if defined(USE_GCC_TOOLCHAINS)
TOOLCHAINS_amd64= amd64-gcc12
TOOLCHAINS_arm= armv7-gcc12
TOOLCHAINS_arm64= aarch64-gcc12
TOOLCHAINS_i386= i386-gcc12
TOOLCHAINS_powerpc= powerpc-gcc12 powerpc64-gcc12
TOOLCHAIN_powerpc64= powerpc64-gcc12
TOOLCHAINS_riscv= riscv64-gcc12
_DEFAULT_GCC_VERSION= gcc12
_GCC_VERSION= ${"${USE_GCC_TOOLCHAINS:Mgcc*}" != "":?${USE_GCC_TOOLCHAINS}:${_DEFAULT_GCC_VERSION}}
TOOLCHAINS_amd64= amd64-${_GCC_VERSION}
TOOLCHAINS_arm= armv7-${_GCC_VERSION}
TOOLCHAINS_arm64= aarch64-${_GCC_VERSION}
TOOLCHAINS_i386= i386-${_GCC_VERSION}
TOOLCHAINS_powerpc= powerpc-${_GCC_VERSION} powerpc64-${_GCC_VERSION}
TOOLCHAIN_powerpc64= powerpc64-${_GCC_VERSION}
TOOLCHAINS_riscv= riscv64-${_GCC_VERSION}
.endif

# If a target is using an external toolchain, set MAKE_PARAMS to enable use
Expand Down
22 changes: 10 additions & 12 deletions Makefile.inc1
Original file line number Diff line number Diff line change
Expand Up @@ -1903,25 +1903,22 @@ distributekernel distributekernel.debug: .PHONY
false
.endif
mkdir -p ${DESTDIR}/${DISTDIR}
.if defined(NO_ROOT)
@echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.premeta
.endif
rm -f ${DESTDIR}/${DISTDIR}/kernel.premeta
${_+_}cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.premeta/} \
${IMAKE_MTREE} PATH=${TMPPATH:Q} ${MAKE} KERNEL=${INSTKERNNAME} \
DISTBASE=/kernel DESTDIR=${INSTALL_DDIR}/kernel \
METALOG=${METALOG:S/METALOG/kernel.premeta/} \
${.TARGET:S/distributekernel/install/}
.if defined(NO_ROOT)
@sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \
${DESTDIR}/${DISTDIR}/kernel.meta
echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.meta
sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta | \
${METALOG_SORT_CMD} >> ${DESTDIR}/${DISTDIR}/kernel.meta
.endif
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
.if defined(NO_ROOT)
@echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta
.endif
rm -f ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta
${_+_}cd ${KRNLOBJDIR}/${_kernel}; \
${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.${_kernel}.premeta/} \
${IMAKE_MTREE} PATH=${TMPPATH:Q} ${MAKE} \
Expand All @@ -1930,9 +1927,10 @@ distributekernel distributekernel.debug: .PHONY
METALOG=${METALOG:S/METALOG/kernel.${_kernel}.premeta/} \
${.TARGET:S/distributekernel/install/}
.if defined(NO_ROOT)
@sed -e "s|^./kernel.${_kernel}|.|" \
${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta > \
${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta
echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta
sed -e "s|^./kernel.${_kernel}|.|" \
${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta | \
${METALOG_SORT_CMD} >> ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta
.endif
.endfor
.endif
Expand Down Expand Up @@ -1991,7 +1989,7 @@ packagekernel: .PHONY
.endif

stagekernel: .PHONY
${_+_}${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} distributekernel
${_+_}${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} DISTDIR=. distributekernel

PORTSDIR?= /usr/ports
WSTAGEDIR?= ${OBJTOP}/worldstage
Expand Down
3 changes: 3 additions & 0 deletions ObsoleteFiles.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2236,6 +2236,9 @@ OLD_FILES+=usr/share/certs/trusted/TrustCor_ECA-1.pem
OLD_FILES+=usr/share/certs/trusted/TrustCor_RootCert_CA-1.pem
OLD_FILES+=usr/share/certs/trusted/TrustCor_RootCert_CA-2.pem

# 20230510: twe(4) driver removed
OLD_FILES+=usr/share/man/man4/twe.4.gz

# 20230505: md5 tests are now self-contained
OLD_FILES+=usr/tests/sbin/md5/1.inp
OLD_FILES+=usr/tests/sbin/md5/1.sha512-p.chk
Expand Down
6 changes: 6 additions & 0 deletions UPDATING
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW:
world, or to merely disable the most expensive debugging functionality
at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".)

20240106:
A new SOC_ROCKCHIP options appeared, so if you have a custom kernel configuration
targetting Rockchip SoC you need to add it so shared and mandatory drivers for
this SoC familly will be selected.
Also a new rk8xx device was added, this select the base driver for Rockchip PMIC.

20241216:
The iwm(4) firmwares are no longer compiled as kernel modules but instead
shipped as raw files. For pkgbase users if you use iwm(4) you will need
Expand Down
9 changes: 3 additions & 6 deletions contrib/arm-optimized-routines/MAINTAINERS
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
/
Szabolcs Nagy <szabolcs.nagy@arm.com>
Tamar Christina <tamar.christina@arm.com>
math/
Szabolcs Nagy <szabolcs.nagy@arm.com>
networking/
Szabolcs Nagy <szabolcs.nagy@arm.com>
pl/
Pierre Blanchard <pierre.blanchard@arm.com>
Joe Ramsay <joe.ramsay@arm.com>
networking/
Ola Liljedahl <ola.liljedahl@arm.com>
string/
Szabolcs Nagy <szabolcs.nagy@arm.com>
Wilco Dijkstra <wilco.dijkstra@arm.com>
16 changes: 12 additions & 4 deletions contrib/arm-optimized-routines/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Makefile - requires GNU make
#
# Copyright (c) 2018-2022, Arm Limited.
# Copyright (c) 2018-2024, Arm Limited.
# SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception

srcdir = .
Expand All @@ -11,7 +11,6 @@ includedir = $(prefix)/include

# Configure these in config.mk, do not make changes in this file.
SUBS = math string networking
PLSUBS = math
HOST_CC = cc
HOST_CFLAGS = -std=c99 -O2
HOST_LDFLAGS =
Expand All @@ -21,12 +20,22 @@ CPPFLAGS =
CFLAGS = -std=c99 -O2
CFLAGS_SHARED = -fPIC
CFLAGS_ALL = -Ibuild/include $(CPPFLAGS) $(CFLAGS)
CFLAGS_PL = -Ibuild/pl/include $(CPPFLAGS) $(CFLAGS) -DPL
LDFLAGS =
LDLIBS =
AR = $(CROSS_COMPILE)ar
RANLIB = $(CROSS_COMPILE)ranlib
INSTALL = install
# Detect OS.
# Assume Unix environment: Linux, Darwin, or Msys.
OS := $(shell uname -s)
OS := $(patsubst MSYS%,Msys,$(OS))
# Following math dependencies can be adjusted in config file
# if necessary, e.g. for Msys.
libm-libs = -lm
libc-libs = -lc
mpfr-libs = -lmpfr
gmp-libs = -lgmp
mpc-libs = -lmpc

all:

Expand All @@ -53,7 +62,6 @@ $(DIRS):
mkdir -p $@

$(filter %.os,$(ALL_FILES)): CFLAGS_ALL += $(CFLAGS_SHARED)
$(filter %.os,$(ALL_FILES)): CFLAGS_PL += $(CFLAGS_SHARED)

build/%.o: $(srcdir)/%.S
$(CC) $(CFLAGS_ALL) -c -o $@ $<
Expand Down
33 changes: 30 additions & 3 deletions contrib/arm-optimized-routines/README
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,42 @@ contribution requirements are documented in README.contributors of
the appropriate subdirectory.

Regular quarterly releases are tagged as vYY.MM, the latest
release is v24.01.
release is v25.01.

Source code layout:

build/ - build directory (created by make).
math/ - math subproject sources.
math/ - math subproject sources for generic scalar
subroutines and sources shared with
subdirectories of math/.
All math routines should meet the quality
requirements stated in math/README.contributors,
routines that fail to do so are located in an
experimental/ directory.
math/aarch64/ - math subproject AArch64-specific sources
and sources shared with subdirectories.
math/aarch64/advsimd - AdvSIMD-specific math sources.
math/aarch64/experimental - Experimental math sources do not
meet quality requirements stated in
math/README.contributors.
math/aarch64/sve - SVE-specific math sources.
math/include/ - math library public headers.
math/test/ - math test and benchmark related sources.
math/tools/ - tools used for designing the algorithms.
networking/ - networking subproject sources.
networking/include/ - networking library public headers.
networking/test/ - networking test and benchmark related sources.
string/ - string routines subproject sources.
All string routines should meet the quality
requirements stated in string/README.contributors,
routines that fail to do so are located in an
experimental/ directory.
string/<arch> - <arch>-specific string routines sources for
<arch>=aarch64, and arm.
string/aarch64/experimental - Experimental string routines which
may not be fully optimized yet.
string/include/ - string library public headers.
string/test/ - string test and benchmark related sources.
pl/... - separately maintained performance library code.

The steps to build the target libraries and run the tests:

Expand All @@ -50,6 +70,13 @@ Or building and testing the math subproject only:
make all-math
make check-math

Note on compiler compability/requirement:

SVE routines are always built by default - this means that on AArch64
GCC >= 10 or LLVM >= 5 are always required for SVE ACLE compatibility.
There is no explicit check for compatible compiler, therefore the SVE
routines will fail to build if CC is too old.

The test system requires libmpfr and libmpc.
For example on debian linux they can be installed as:

Expand Down
99 changes: 77 additions & 22 deletions contrib/arm-optimized-routines/config.mk.dist
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
# Example config.mk
#
# Copyright (c) 2018-2023, Arm Limited.
# Copyright (c) 2018-2024, Arm Limited.
# SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception

# Subprojects to build
SUBS = math string networking

# Subsubprojects to build if subproject pl is built
PLSUBS = math

# Target architecture: aarch64, arm or x86_64
ARCH = aarch64

Expand All @@ -30,6 +27,27 @@ HOST_CFLAGS += -Wall -Wno-unused-function
HOST_CFLAGS += -g
CFLAGS += -g

ifeq ($(OS),Msys)
# llvm is the only available/valid native compiler
CC = clang
AR = llvm-ar
RANLIB = llvm-ranlib
HOST_CC = clang
SYSROOT = /c/wenv/msys2/msys64/clangarm64
# Common windows flags
COMMON_WIN_CFLAGS = -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE
COMMON_WIN_CFLAGS += -Wno-deprecated-declarations -Wno-unused-variable
# For mathtest
HOST_CFLAGS += -I$(SYSROOT)/include
HOST_CFLAGS += $(COMMON_WIN_CFLAGS) -Wno-ignored-attributes
# Clear the default flag -fPIC, as not supported on Windows
CFLAGS_SHARED =
# For ulp.h with MPFR
CFLAGS += -I$(SYSROOT)/include
# For clang on Windows
CFLAGS += $(COMMON_WIN_CFLAGS)
endif

# Optimize the shared libraries on aarch64 assuming they fit in 1M.
#CFLAGS_SHARED = -fPIC -mcmodel=tiny

Expand All @@ -45,12 +63,33 @@ math-cflags =
math-ldlibs =
math-ulpflags =
math-testflags =
string-cflags =
string-cflags = -falign-functions=64
networking-cflags =

# Use if mpfr is available on the target for ulp error checking.
#math-ldlibs += -lmpfr -lgmp
#math-cflags += -DUSE_MPFR
ifeq ($(OS),Msys)
# Libraries can be installed with pacman
libm-libs = -lmsvcrt -lvcruntime -lucrt
libc-libs =
# Linker will look for .lib but some systems only have .dll.a,
# therefore we have to give absolute path to libraries.
# This is system dependent and might need adjusting.
mpfr-libs = $(SYSROOT)/lib/libmpfr.dll.a
gmp-libs = $(SYSROOT)/lib/libgmp.dll.a
mpc-libs = $(SYSROOT)/lib/libmpc.dll.a
endif

# Use if mpfr is available on the target for ulp error checking. If
# enabling this, it is advised to disable fenv checks by uncommenting
# the two lines at the bottom of this block.
USE_MPFR=0
math-cflags += -DUSE_MPFR=$(USE_MPFR)
ifeq ($(USE_MPFR), 1)
math-ldlibs += $(mpfr-libs) $(gmp-libs)
math-ulpflags += -m
endif
# Disable fenv checks
#math-ulpflags = -q -f
#math-testflags = -nostatus

# Use with gcc.
math-cflags += -frounding-math -fexcess-precision=standard -fno-stack-protector
Expand All @@ -59,30 +98,36 @@ math-cflags += -ffp-contract=fast -fno-math-errno
# Use with clang.
#math-cflags += -ffp-contract=fast

# Disable/enable SVE vector math code and tests.
# If WANT_SVE_MATH is enabled, math-sve-cflags is added for SVE
# routines only so that SVE code does not leak into scalar
# routines. It is also necessary to add it for tools (e.g. ulp,
# mathbench)
WANT_SVE_MATH = 0
ifeq ($(WANT_SVE_MATH), 1)
math-sve-cflags = -march=armv8-a+sve
endif
math-cflags += -DWANT_SVE_MATH=$(WANT_SVE_MATH)

# If defined to 1, set errno in math functions according to ISO C. Many math
# libraries do not set errno, so this is 0 by default. It may need to be
# set to 1 if math.h has (math_errhandling & MATH_ERRNO) != 0.
WANT_ERRNO = 0
math-cflags += -DWANT_ERRNO=$(WANT_ERRNO)

# Disable/enable SVE vector math tests/tools.
ifeq ($(ARCH),aarch64)
WANT_SVE_TESTS = 1
else
WANT_SVE_TESTS = 0
endif
math-cflags += -DWANT_SVE_TESTS=$(WANT_SVE_TESTS)

# If set to 1, set fenv in vector math routines.
WANT_SIMD_EXCEPT = 0
math-cflags += -DWANT_SIMD_EXCEPT=$(WANT_SIMD_EXCEPT)

# Disable fenv checks
#math-ulpflags = -q -f
#math-testflags = -nostatus
# If set to 1, enable tests for exp10.
WANT_EXP10_TESTS = 1
math-cflags += -DWANT_EXP10_TESTS=$(WANT_EXP10_TESTS)

# If set to 1, enable tests for sinpi and cospi. These functions are
# only supported on aarch64
ifeq ($(ARCH),aarch64)
WANT_TRIGPI_TESTS = 1
else
WANT_TRIGPI_TESTS = 0
endif
math-cflags += -DWANT_TRIGPI_TESTS=$(WANT_TRIGPI_TESTS)

# Remove GNU Property Notes from asm files.
#string-cflags += -DWANT_GNU_PROPERTY=0
Expand All @@ -92,3 +137,13 @@ math-cflags += -DWANT_SIMD_EXCEPT=$(WANT_SIMD_EXCEPT)

# Avoid auto-vectorization of scalar code and unroll loops
networking-cflags += -O2 -fno-tree-vectorize -funroll-loops

# Provide *_finite symbols and some of the glibc hidden symbols
# so libmathlib can be used with binaries compiled against glibc
# to interpose math functions with both static and dynamic linking
USE_GLIBC_ABI = 1
math-cflags += -DUSE_GLIBC_ABI=$(USE_GLIBC_ABI)

# Enable experimental math routines - non-C23 vector math and low-accuracy scalar
WANT_EXPERIMENTAL_MATH = 0
math-cflags += -DWANT_EXPERIMENTAL_MATH=$(WANT_EXPERIMENTAL_MATH)
Loading
Loading