s390x/mmu: Fix exception types when checking the ASCEs
If an ASCE has illegal bits set, an ASCE-type exception should be generated instead of a translation specification exception. Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
parent
bab58bf092
commit
d267571be4
@ -252,7 +252,7 @@ static int mmu_translate_asc(CPUS390XState *env, target_ulong vaddr,
|
||||
if (vaddr & 0xffe0000000000000ULL) {
|
||||
DPRINTF("%s: vaddr doesn't fit 0x%16" PRIx64
|
||||
" 0xffe0000000000000ULL\n", __func__, vaddr);
|
||||
trigger_page_fault(env, vaddr, PGM_TRANS_SPEC, asc, rw, exc);
|
||||
trigger_page_fault(env, vaddr, PGM_ASCE_TYPE, asc, rw, exc);
|
||||
return -1;
|
||||
}
|
||||
if ((vaddr >> 51 & 3) > (asce & _ASCE_TABLE_LENGTH)) {
|
||||
@ -264,7 +264,7 @@ static int mmu_translate_asc(CPUS390XState *env, target_ulong vaddr,
|
||||
if (vaddr & 0xfffffc0000000000ULL) {
|
||||
DPRINTF("%s: vaddr doesn't fit 0x%16" PRIx64
|
||||
" 0xfffffc0000000000ULL\n", __func__, vaddr);
|
||||
trigger_page_fault(env, vaddr, PGM_TRANS_SPEC, asc, rw, exc);
|
||||
trigger_page_fault(env, vaddr, PGM_ASCE_TYPE, asc, rw, exc);
|
||||
return -1;
|
||||
}
|
||||
if ((vaddr >> 40 & 3) > (asce & _ASCE_TABLE_LENGTH)) {
|
||||
@ -276,7 +276,7 @@ static int mmu_translate_asc(CPUS390XState *env, target_ulong vaddr,
|
||||
if (vaddr & 0xffffffff80000000ULL) {
|
||||
DPRINTF("%s: vaddr doesn't fit 0x%16" PRIx64
|
||||
" 0xffffffff80000000ULL\n", __func__, vaddr);
|
||||
trigger_page_fault(env, vaddr, PGM_TRANS_SPEC, asc, rw, exc);
|
||||
trigger_page_fault(env, vaddr, PGM_ASCE_TYPE, asc, rw, exc);
|
||||
return -1;
|
||||
}
|
||||
if ((vaddr >> 29 & 3) > (asce & _ASCE_TABLE_LENGTH)) {
|
||||
|
Loading…
Reference in New Issue
Block a user