Linux s390 Architecture development
 help / color / mirror / Atom feed
* [PATCH v2 0/8]
@ 2026-06-08  5:37 Heiko Carstens
  2026-06-08  5:37 ` [PATCH v2 1/8] s390/purgatory: Enforce z10 minimum architecture level Heiko Carstens
                   ` (8 more replies)
  0 siblings, 9 replies; 15+ messages in thread
From: Heiko Carstens @ 2026-06-08  5:37 UTC (permalink / raw)
  To: Alexander Gordeev, Sven Schnelle, Vasily Gorbik,
	Christian Borntraeger, Juergen Christ
  Cc: linux-s390

v2:
Address various Shashiko findings [2]:

- Off by one comparison bug, which leads to slow path for memmove()
- Incorrect ifdef around __memset()
- Incorrect commit description for memmove() conversion
- Missing noinstr for tishift functions
- Missing header guard for tishift header file

v1:
While working on something else I stumbled again across the various mem*()
helper functions, which were implemented in assembler to avoid recursive
calls [1], when using the compiler's builtin functions.

Convert the functions back to C using inline assemblies, which makes them
hopefully a bit more readable and maintainable. Also improve the memmove()
implementation by using the mvcrl instruction for the backward copy case.

Thanks,
Heiko

[1] commit 535c611ddd3e ("s390/string: provide asm lib functions for memcpy and memcmp")
[2] https://sashiko.dev/#/patchset/20260607162937.2927356-1-hca%40linux.ibm.com

Heiko Carstens (8):
  s390/purgatory: Enforce z10 minimum architecture level
  s390: Add .noinstr.text to boot and purgatory linker scripts
  s390/string: Convert memmove() to C
  s390/string: Convert memset() to C
  s390/string: Convert memcpy() to C
  s390/string: Convert memset(16|32|64)() to C
  s390/memmove: Optimize backward copy case
  s390/tishift: Convert __ashlti3(), __ashrti3(), __lshrti3() to C

 arch/s390/boot/Makefile                |   2 +-
 arch/s390/boot/mem.S                   |   2 -
 arch/s390/boot/string.c                |   6 +-
 arch/s390/boot/vmlinux.lds.S           |   1 +
 arch/s390/include/asm/asm-prototypes.h |   4 -
 arch/s390/lib/Makefile                 |   1 -
 arch/s390/lib/mem.S                    | 192 ----------------------
 arch/s390/lib/string.c                 | 210 +++++++++++++++++++++++++
 arch/s390/lib/tishift.S                |  63 --------
 arch/s390/lib/tishift.c                |  64 ++++++++
 arch/s390/lib/tishift.h                |   9 ++
 arch/s390/purgatory/Makefile           |   9 +-
 arch/s390/purgatory/purgatory.lds.S    |   1 +
 13 files changed, 291 insertions(+), 273 deletions(-)
 delete mode 100644 arch/s390/boot/mem.S
 delete mode 100644 arch/s390/lib/mem.S
 delete mode 100644 arch/s390/lib/tishift.S
 create mode 100644 arch/s390/lib/tishift.c
 create mode 100644 arch/s390/lib/tishift.h

-- 
2.53.0


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2026-06-08  9:24 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-08  5:37 [PATCH v2 0/8] Heiko Carstens
2026-06-08  5:37 ` [PATCH v2 1/8] s390/purgatory: Enforce z10 minimum architecture level Heiko Carstens
2026-06-08  5:37 ` [PATCH v2 2/8] s390: Add .noinstr.text to boot and purgatory linker scripts Heiko Carstens
2026-06-08  5:37 ` [PATCH v2 3/8] s390/string: Convert memmove() to C Heiko Carstens
2026-06-08  8:01   ` Juergen Christ
2026-06-08  9:14     ` Heiko Carstens
2026-06-08  9:20       ` Juergen Christ
2026-06-08  5:37 ` [PATCH v2 4/8] s390/string: Convert memset() " Heiko Carstens
2026-06-08  5:37 ` [PATCH v2 5/8] s390/string: Convert memcpy() " Heiko Carstens
2026-06-08  5:37 ` [PATCH v2 6/8] s390/string: Convert memset(16|32|64)() " Heiko Carstens
2026-06-08  5:37 ` [PATCH v2 7/8] s390/memmove: Optimize backward copy case Heiko Carstens
2026-06-08  5:37 ` [PATCH v2 8/8] s390/tishift: Convert __ashlti3(), __ashrti3(), __lshrti3() to C Heiko Carstens
2026-06-08  8:19   ` Juergen Christ
2026-06-08  8:55     ` Heiko Carstens
2026-06-08  9:24 ` [PATCH v2 0/8] Juergen Christ

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox