mirror of https://github.com/xemu-project/xemu.git
s390x/mmu_helper: avoid setting the storage key if nothing changed
Avoid setting the key if nothing changed. Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20210903155514.44772-9-david@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
390191c6f6
commit
380ac2bcce
|
@ -301,7 +301,7 @@ static void mmu_handle_skey(target_ulong addr, int rw, int *flags)
|
||||||
{
|
{
|
||||||
static S390SKeysClass *skeyclass;
|
static S390SKeysClass *skeyclass;
|
||||||
static S390SKeysState *ss;
|
static S390SKeysState *ss;
|
||||||
uint8_t key;
|
uint8_t key, old_key;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -337,6 +337,7 @@ static void mmu_handle_skey(target_ulong addr, int rw, int *flags)
|
||||||
trace_get_skeys_nonzero(rc);
|
trace_get_skeys_nonzero(rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
old_key = key;
|
||||||
|
|
||||||
switch (rw) {
|
switch (rw) {
|
||||||
case MMU_DATA_LOAD:
|
case MMU_DATA_LOAD:
|
||||||
|
@ -360,10 +361,12 @@ static void mmu_handle_skey(target_ulong addr, int rw, int *flags)
|
||||||
/* Any store/fetch sets the reference bit */
|
/* Any store/fetch sets the reference bit */
|
||||||
key |= SK_R;
|
key |= SK_R;
|
||||||
|
|
||||||
|
if (key != old_key) {
|
||||||
rc = skeyclass->set_skeys(ss, addr / TARGET_PAGE_SIZE, 1, &key);
|
rc = skeyclass->set_skeys(ss, addr / TARGET_PAGE_SIZE, 1, &key);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
trace_set_skeys_nonzero(rc);
|
trace_set_skeys_nonzero(rc);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue