S390: Use s390-64 specific ionv-modules on s390-32, too

System Internals / glibc - Stefan Liebler [linux.vnet.ibm.com] - 25 May 2016 10:18 UTC

This patch reworks the existing s390 64bit specific iconv modules in order to use them on s390 31bit, too.

Thus the parts for subdirectory iconvdata in sysdeps/s390/s390-64/Makefile were moved to sysdeps/s390/Makefile so that they apply on 31bit, too. All those modules are moved from sysdeps/s390/s390-64 directory to sysdeps/s390.

The iso-8859-1 to/from cp037 module was adjusted, to use brct (branch relative on count) instruction on 31bit s390 instead of brctg, because the brctg is a zarch instruction and is not available on a 31bit kernel.

The utf modules are using zarch instructions, thus the directive machinemode zarch_nohighgprs was added to the inline assemblies to omit the high-gprs flag in the shared libraries. Otherwise they can't be loaded on a 31bit kernel. The ifunc resolvers were adjusted in order to call the etf3eh or vector variants only if zarch instructions are available (64bit kernel in 31bit compat-mode). Furthermore some variable types were changed. E.g. unsigned long long would be a register pair on s390 31bit, but we want only one single register. For variables of type size_t the register contents have to be enlarged from a 32bit to a 64bit value on 31bit, because the inline assemblies uses 64bit values in such cases.

ChangeLog:

- sysdeps/s390/s390-64/Makefile (iconvdata-subdirectory): Move to ...
- sysdeps/s390/Makefile: ... here.
- sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c: Move to ...
- sysdeps/s390/iso-8859-1_cp037_z900.c: ... here. (BRANCH_ON_COUNT): New define. (TR_LOOP): Use BRANCH_ON_COUNT instead of brctg.
- sysdeps/s390/s390-64/utf16-utf32-z9.c: Move to ...
- sysdeps/s390/utf16-utf32-z9.c: ... here and adjust to run on s390-32, too.
- sysdeps/s390/s390-64/utf8-utf16-z9.c: Move to ...
- sysdeps/s390/utf8-utf16-z9.c: ... here and adjust to run on s390-32, too.
- sysdeps/s390/s390-64/utf8-utf32-z9.c: Move to ...
- sysdeps/s390/utf8-utf32-z9.c: ... here and adjust to run on s390-32, too.

ee518b7 S390: Use s390-64 specific ionv-modules on s390-32, too.
ChangeLog | 19 +
sysdeps/s390/Makefile | 31 +
sysdeps/s390/iso-8859-1_cp037_z900.c | 262 ++++++++
sysdeps/s390/s390-64/Makefile | 32 -
sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c | 256 --------
sysdeps/s390/s390-64/utf16-utf32-z9.c | 624 --------------------
sysdeps/s390/s390-64/utf8-utf16-z9.c | 806 -------------------------
sysdeps/s390/s390-64/utf8-utf32-z9.c | 807 -------------------------
sysdeps/s390/utf16-utf32-z9.c | 636 ++++++++++++++++++++
sysdeps/s390/utf8-utf16-z9.c | 818 +++++++++++++++++++++++++
sysdeps/s390/utf8-utf32-z9.c | 820 ++++++++++++++++++++++++++
11 files changed, 2586 insertions(+), 2525 deletions(-)

Upstream: sourceware.org


  • Share