diff options
Diffstat (limited to 'sysdeps/s390/multiarch')
-rw-r--r-- | sysdeps/s390/multiarch/ifunc-impl-list.c | 5 | ||||
-rw-r--r-- | sysdeps/s390/multiarch/ifunc-resolve.h | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c index b54c52af36..d742d66a6a 100644 --- a/sysdeps/s390/multiarch/ifunc-impl-list.c +++ b/sysdeps/s390/multiarch/ifunc-impl-list.c @@ -169,6 +169,11 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, #if HAVE_MEMMOVE_IFUNC IFUNC_IMPL (i, name, memmove, +# if HAVE_MEMMOVE_ARCH13 + IFUNC_IMPL_ADD (array, i, memmove, + S390_IS_ARCH13_MIE3 (stfle_bits), + MEMMOVE_ARCH13) +# endif # if HAVE_MEMMOVE_Z13 IFUNC_IMPL_ADD (array, i, memmove, dl_hwcap & HWCAP_S390_VX, MEMMOVE_Z13) diff --git a/sysdeps/s390/multiarch/ifunc-resolve.h b/sysdeps/s390/multiarch/ifunc-resolve.h index b833dfef28..743de9e591 100644 --- a/sysdeps/s390/multiarch/ifunc-resolve.h +++ b/sysdeps/s390/multiarch/ifunc-resolve.h @@ -22,6 +22,11 @@ #define S390_STFLE_BITS_Z10 34 /* General instructions extension */ #define S390_STFLE_BITS_Z196 45 /* Distinct operands, pop ... */ +#define S390_STFLE_BITS_ARCH13_MIE3 61 /* Miscellaneous-Instruction-Extensions + Facility 3, e.g. mvcrl. */ + +#define S390_IS_ARCH13_MIE3(STFLE_BITS) \ + ((STFLE_BITS & (1ULL << (63 - S390_STFLE_BITS_ARCH13_MIE3))) != 0) #define S390_IS_Z196(STFLE_BITS) \ ((STFLE_BITS & (1ULL << (63 - S390_STFLE_BITS_Z196))) != 0) |