Revision 925fd0f2

b/target-mips/helper.c
41 41
static int map_address (CPUState *env, target_ulong *physical, int *prot,
42 42
                        target_ulong address, int rw, int access_type)
43 43
{
44
    uint8_t ASID = env->CP0_EntryHi & 0xFF;
44 45
    int i;
45 46

  
46 47
    for (i = 0; i < env->tlb_in_use; i++) {
47 48
        tlb_t *tlb = &env->tlb[i];
48 49
        /* 1k pages are not supported. */
49
        uint8_t ASID = env->CP0_EntryHi & 0xFF;
50 50
        target_ulong mask = tlb->PageMask | 0x1FFF;
51 51
        target_ulong tag = address & ~mask;
52 52
        int n;
b/target-mips/op.c
1340 1340

  
1341 1341
    /* 1k pages not implemented */
1342 1342
    /* Ignore MIPS64 TLB for now */
1343
    val = (int32_t)T0 & 0xFFFFE0FF;
1343
    val = (target_ulong)(int32_t)T0 & ~(target_ulong)0x1F00;
1344 1344
    old = env->CP0_EntryHi;
1345 1345
    env->CP0_EntryHi = val;
1346 1346
    /* If the ASID changes, flush qemu's TLB.  */
b/target-mips/op_helper.c
395 395

  
396 396
    /* XXX: detect conflicting TLBs and raise a MCHECK exception when needed */
397 397
    tlb = &env->tlb[idx];
398
    tlb->VPN = env->CP0_EntryHi & (int32_t)0xFFFFE000;
398
    tlb->VPN = env->CP0_EntryHi & ~(target_ulong)0x1FFF;
399 399
    tlb->ASID = env->CP0_EntryHi & 0xFF;
400 400
    tlb->PageMask = env->CP0_PageMask;
401 401
    tlb->G = env->CP0_EntryLo0 & env->CP0_EntryLo1 & 1;

Also available in: Unified diff