Mark Wielaard 0c3edc8
commit 467c7c4c9665c0f8b41a4416722a027ebc05df2b
Mark Wielaard 0c3edc8
Author: Andreas Arnez <arnez@linux.ibm.com>
Mark Wielaard 0c3edc8
Date:   Mon Jan 21 14:10:00 2019 +0100
Mark Wielaard 0c3edc8
Mark Wielaard 0c3edc8
    Bug 403552 s390x: Fix vector facility bit number
Mark Wielaard 0c3edc8
    
Mark Wielaard 0c3edc8
    The wrong bit number was used when checking for the vector facility.  This
Mark Wielaard 0c3edc8
    can result in a fatal emulation error: "Encountered an instruction that
Mark Wielaard 0c3edc8
    requires the vector facility.  That facility is not available on this
Mark Wielaard 0c3edc8
    host."
Mark Wielaard 0c3edc8
    
Mark Wielaard 0c3edc8
    In many cases the wrong facility bit was usually set as well, hence
Mark Wielaard 0c3edc8
    nothing bad happened.  But when running Valgrind within a Qemu/KVM guest,
Mark Wielaard 0c3edc8
    the wrong bit was not (always?) set and the emulation error occurred.
Mark Wielaard 0c3edc8
    
Mark Wielaard 0c3edc8
    This fix simply corrects the vector facility bit number, changing it from
Mark Wielaard 0c3edc8
    128 to 129.
Mark Wielaard 0c3edc8
Mark Wielaard 0c3edc8
 
Mark Wielaard 0c3edc8
diff --git a/VEX/pub/libvex_s390x_common.h b/VEX/pub/libvex_s390x_common.h
Mark Wielaard 0c3edc8
index a8a66b96b..8723ee21d 100644
Mark Wielaard 0c3edc8
--- a/VEX/pub/libvex_s390x_common.h
Mark Wielaard 0c3edc8
+++ b/VEX/pub/libvex_s390x_common.h
Mark Wielaard 0c3edc8
@@ -103,7 +103,7 @@
Mark Wielaard 0c3edc8
 #define S390_FAC_MSA5    57  // message-security-assist 5
Mark Wielaard 0c3edc8
 #define S390_FAC_TREXE   73  // transactional execution
Mark Wielaard 0c3edc8
 #define S390_FAC_MSA4    77  // message-security-assist 4
Mark Wielaard 0c3edc8
-#define S390_FAC_VX      128 // vector facility
Mark Wielaard 0c3edc8
+#define S390_FAC_VX      129 // vector facility
Mark Wielaard 0c3edc8
 
Mark Wielaard 0c3edc8
 
Mark Wielaard 0c3edc8
 /*--------------------------------------------------------------*/