summaryrefslogtreecommitdiff
path: root/target/s390x/cpu_features.c
diff options
context:
space:
mode:
authorDavid Hildenbrand <david@redhat.com>2017-07-20 14:37:19 +0200
committerCornelia Huck <cohuck@redhat.com>2017-07-25 09:17:42 +0200
commit3d1cfc3c682ffe937526a31a4161735338558985 (patch)
tree7942a3a362d5dc267932f554824f55b7aed4c796 /target/s390x/cpu_features.c
parentcc18f90762412c657a37a17809be9613ac7f0b00 (diff)
downloadqemu-3d1cfc3c682ffe937526a31a4161735338558985.tar.gz
target/s390x: introduce (test|set)_be_bit
Using ordinary bitmap operations to set/test bits does not work properly on architectures !s390x. Let's drop (test|set)_bit_inv and introduce (test|set)_be_bit instead. These functions work on uint8_t array, not on unsigned longs arrays and are for now only used in the context of CPU features. Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20170720123721.12366-4-david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'target/s390x/cpu_features.c')
-rw-r--r--target/s390x/cpu_features.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
index 8b1491734f..1d3a036393 100644
--- a/target/s390x/cpu_features.c
+++ b/target/s390x/cpu_features.c
@@ -340,8 +340,8 @@ void s390_fill_feat_block(const S390FeatBitmap features, S390FeatType type,
case S390_FEAT_TYPE_STFL:
if (test_bit(S390_FEAT_ZARCH, features)) {
/* Features that are always active */
- data[0] |= 0x20; /* z/Architecture */
- data[17] |= 0x20; /* Configuration-z-architectural-mode */
+ set_be_bit(2, data); /* z/Architecture */
+ set_be_bit(138, data); /* Configuration-z-architectural-mode */
}
break;
case S390_FEAT_TYPE_PTFF:
@@ -357,7 +357,7 @@ void s390_fill_feat_block(const S390FeatBitmap features, S390FeatType type,
case S390_FEAT_TYPE_PCC:
case S390_FEAT_TYPE_PPNO:
case S390_FEAT_TYPE_KMA:
- data[0] |= 0x80; /* query is always available */
+ set_be_bit(0, data); /* query is always available */
break;
default:
break;
@@ -368,7 +368,7 @@ void s390_fill_feat_block(const S390FeatBitmap features, S390FeatType type,
if (s390_features[feat].type == type) {
bit_nr = s390_features[feat].bit;
/* big endian on uint8_t array */
- data[bit_nr / 8] |= 0x80 >> (bit_nr % 8);
+ set_be_bit(bit_nr, data);
}
feat = find_next_bit(features, S390_FEAT_MAX, feat + 1);
}