unsigned long prefix  = kvm_s390_get_prefix(vcpu);
 
        start = vcpu->run->s.regs.gprs[(vcpu->arch.sie_block->ipa & 0xf0) >> 4];
-       end = vcpu->run->s.regs.gprs[vcpu->arch.sie_block->ipa & 0xf] + 4096;
+       end = vcpu->run->s.regs.gprs[vcpu->arch.sie_block->ipa & 0xf] + PAGE_SIZE;
        vcpu->stat.diagnose_10++;
 
        if (start & ~PAGE_MASK || end & ~PAGE_MASK || start >= end
                 */
                gmap_discard(vcpu->arch.gmap, start, prefix);
                if (start <= prefix)
-                       gmap_discard(vcpu->arch.gmap, 0, 4096);
-               if (end > prefix + 4096)
-                       gmap_discard(vcpu->arch.gmap, 4096, 8192);
+                       gmap_discard(vcpu->arch.gmap, 0, PAGE_SIZE);
+               if (end > prefix + PAGE_SIZE)
+                       gmap_discard(vcpu->arch.gmap, PAGE_SIZE, 2 * PAGE_SIZE);
                gmap_discard(vcpu->arch.gmap, prefix + 2 * PAGE_SIZE, end);
        }
        return 0;
 
        iep = ctlreg0.iep && test_kvm_facility(vcpu->kvm, 130);
        if (asce.r)
                goto real_address;
-       ptr = asce.origin * 4096;
+       ptr = asce.origin * PAGE_SIZE;
        switch (asce.dt) {
        case ASCE_TYPE_REGION1:
                if (vaddr.rfx01 > asce.tl)
                        return PGM_REGION_SECOND_TRANS;
                if (edat1)
                        dat_protection |= rfte.p;
-               ptr = rfte.rto * 4096 + vaddr.rsx * 8;
+               ptr = rfte.rto * PAGE_SIZE + vaddr.rsx * 8;
        }
                /* fallthrough */
        case ASCE_TYPE_REGION2: {
                        return PGM_REGION_THIRD_TRANS;
                if (edat1)
                        dat_protection |= rste.p;
-               ptr = rste.rto * 4096 + vaddr.rtx * 8;
+               ptr = rste.rto * PAGE_SIZE + vaddr.rtx * 8;
        }
                /* fallthrough */
        case ASCE_TYPE_REGION3: {
                        return PGM_SEGMENT_TRANSLATION;
                if (edat1)
                        dat_protection |= rtte.fc0.p;
-               ptr = rtte.fc0.sto * 4096 + vaddr.sx * 8;
+               ptr = rtte.fc0.sto * PAGE_SIZE + vaddr.sx * 8;
        }
                /* fallthrough */
        case ASCE_TYPE_SEGMENT: {
                        goto absolute_address;
                }
                dat_protection |= ste.fc0.p;
-               ptr = ste.fc0.pto * 2048 + vaddr.px * 8;
+               ptr = ste.fc0.pto * (PAGE_SIZE / 2) + vaddr.px * 8;
        }
        }
        if (kvm_is_error_gpa(vcpu->kvm, ptr))
        parent = sg->parent;
        vaddr.addr = saddr;
        asce.val = sg->orig_asce;
-       ptr = asce.origin * 4096;
+       ptr = asce.origin * PAGE_SIZE;
        if (asce.r) {
                *fake = 1;
                ptr = 0;
                union region1_table_entry rfte;
 
                if (*fake) {
-                       ptr += (unsigned long) vaddr.rfx << 53;
+                       ptr += vaddr.rfx * _REGION1_SIZE;
                        rfte.val = ptr;
                        goto shadow_r2t;
                }
                        return PGM_REGION_SECOND_TRANS;
                if (sg->edat_level >= 1)
                        *dat_protection |= rfte.p;
-               ptr = rfte.rto << 12UL;
+               ptr = rfte.rto * PAGE_SIZE;
 shadow_r2t:
                rc = gmap_shadow_r2t(sg, saddr, rfte.val, *fake);
                if (rc)
                union region2_table_entry rste;
 
                if (*fake) {
-                       ptr += (unsigned long) vaddr.rsx << 42;
+                       ptr += vaddr.rsx * _REGION2_SIZE;
                        rste.val = ptr;
                        goto shadow_r3t;
                }
                        return PGM_REGION_THIRD_TRANS;
                if (sg->edat_level >= 1)
                        *dat_protection |= rste.p;
-               ptr = rste.rto << 12UL;
+               ptr = rste.rto * PAGE_SIZE;
 shadow_r3t:
                rste.p |= *dat_protection;
                rc = gmap_shadow_r3t(sg, saddr, rste.val, *fake);
                union region3_table_entry rtte;
 
                if (*fake) {
-                       ptr += (unsigned long) vaddr.rtx << 31;
+                       ptr += vaddr.rtx * _REGION3_SIZE;
                        rtte.val = ptr;
                        goto shadow_sgt;
                }
                if (rtte.fc && sg->edat_level >= 2) {
                        *dat_protection |= rtte.fc0.p;
                        *fake = 1;
-                       ptr = rtte.fc1.rfaa << 31UL;
+                       ptr = rtte.fc1.rfaa * _REGION3_SIZE;
                        rtte.val = ptr;
                        goto shadow_sgt;
                }
                        return PGM_SEGMENT_TRANSLATION;
                if (sg->edat_level >= 1)
                        *dat_protection |= rtte.fc0.p;
-               ptr = rtte.fc0.sto << 12UL;
+               ptr = rtte.fc0.sto * PAGE_SIZE;
 shadow_sgt:
                rtte.fc0.p |= *dat_protection;
                rc = gmap_shadow_sgt(sg, saddr, rtte.val, *fake);
                union segment_table_entry ste;
 
                if (*fake) {
-                       ptr += (unsigned long) vaddr.sx << 20;
+                       ptr += vaddr.sx * _SEGMENT_SIZE;
                        ste.val = ptr;
                        goto shadow_pgt;
                }
                *dat_protection |= ste.fc0.p;
                if (ste.fc && sg->edat_level >= 1) {
                        *fake = 1;
-                       ptr = ste.fc1.sfaa << 20UL;
+                       ptr = ste.fc1.sfaa * _SEGMENT_SIZE;
                        ste.val = ptr;
                        goto shadow_pgt;
                }
-               ptr = ste.fc0.pto << 11UL;
+               ptr = ste.fc0.pto * (PAGE_SIZE / 2);
 shadow_pgt:
                ste.fc0.p |= *dat_protection;
                rc = gmap_shadow_pgt(sg, saddr, ste.val, *fake);
 
        vaddr.addr = saddr;
        if (fake) {
-               /* offset in 1MB guest memory block */
-               pte.val = pgt + ((unsigned long) vaddr.px << 12UL);
+               pte.val = pgt + vaddr.px * PAGE_SIZE;
                goto shadow_page;
        }
        if (!rc)
 
        start = kvm_s390_logical_to_effective(vcpu, start);
        if (m3 & SSKE_MB) {
                /* start already designates an absolute address */
-               end = (start + (1UL << 20)) & ~((1UL << 20) - 1);
+               end = (start + _SEGMENT_SIZE) & ~(_SEGMENT_SIZE - 1);
        } else {
                start = kvm_s390_real_to_abs(vcpu, start);
                end = start + PAGE_SIZE;
        case 0x00000000:
                /* only 4k frames specify a real address */
                start = kvm_s390_real_to_abs(vcpu, start);
-               end = (start + (1UL << 12)) & ~((1UL << 12) - 1);
+               end = (start + PAGE_SIZE) & ~(PAGE_SIZE - 1);
                break;
        case 0x00001000:
-               end = (start + (1UL << 20)) & ~((1UL << 20) - 1);
+               end = (start + _SEGMENT_SIZE) & ~(_SEGMENT_SIZE - 1);
                break;
        case 0x00002000:
                /* only support 2G frame size if EDAT2 is available and we are
                if (!test_kvm_facility(vcpu->kvm, 78) ||
                    psw_bits(vcpu->arch.sie_block->gpsw).eaba == PSW_BITS_AMODE_24BIT)
                        return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
-               end = (start + (1UL << 31)) & ~((1UL << 31) - 1);
+               end = (start + _REGION3_SIZE) & ~(_REGION3_SIZE - 1);
                break;
        default:
                return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);