Subversion Repositories HelenOS-historic

Rev

Rev 1733 | Rev 1743 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1733 Rev 1736
Line 373... Line 373...
373
    // TODO
373
    // TODO
374
    tlb_invalidate_all();
374
    tlb_invalidate_all();
375
}
375
}
376
 
376
 
377
 
377
 
-
 
378
#define PRINT_BAT(name, ureg, lreg) \
-
 
379
    asm volatile ( \
-
 
380
        "mfspr %0," #ureg "\n" \
-
 
381
        "mfspr %1," #lreg "\n" \
-
 
382
        : "=r" (upper), "=r" (lower) \
-
 
383
    ); \
-
 
384
    mask = (upper & 0x1ffc) >> 2; \
-
 
385
    if (upper & 3) { \
-
 
386
        __u32 tmp = mask; \
-
 
387
        length = 128; \
-
 
388
        while (tmp) { \
-
 
389
            if ((tmp & 1) == 0) { \
-
 
390
                printf("ibat[0]: error in mask\n"); \
-
 
391
                break; \
-
 
392
            } \
-
 
393
            length <<= 1; \
-
 
394
            tmp >>= 1; \
-
 
395
        } \
-
 
396
    } else \
-
 
397
        length = 0; \
-
 
398
    printf(name ": page=%.*p frame=%.*p length=%d KB (mask=%#x)%s%s\n", sizeof(upper) * 2, upper & 0xffff0000, sizeof(lower) * 2, lower & 0xffff0000, length, mask, ((upper >> 1) & 1) ? " supervisor" : "", (upper & 1) ? " user" : "");
-
 
399
 
-
 
400
 
378
void tlb_print(void)
401
void tlb_print(void)
379
{
402
{
380
    __u32 sr;
403
    __u32 sr;
381
   
404
   
382
    for (sr = 0; sr < 16; sr++) {
405
    for (sr = 0; sr < 16; sr++) {
Line 384... Line 407...
384
        asm volatile (
407
        asm volatile (
385
            "mfsrin %0, %1\n"
408
            "mfsrin %0, %1\n"
386
            : "=r" (vsid)
409
            : "=r" (vsid)
387
            : "r" (sr << 28)
410
            : "r" (sr << 28)
388
        );
411
        );
389
        printf("vsid[%#x]=%#x\n", sr << 28, vsid);
412
        printf("vsid[%d]: VSID=%.*p (ASID=%d)%s%s\n", sr, sizeof(vsid) * 2, vsid & 0xffffff, (vsid & 0xffffff) >> 4, ((vsid >> 30) & 1) ? " supervisor" : "", ((vsid >> 29) & 1) ? " user" : "");
390
    }
413
    }
-
 
414
   
-
 
415
    __u32 upper;
-
 
416
    __u32 lower;
-
 
417
    __u32 mask;
-
 
418
    __u32 length;
-
 
419
   
-
 
420
    PRINT_BAT("ibat[0]", 528, 529);
-
 
421
    PRINT_BAT("ibat[1]", 530, 531);
-
 
422
    PRINT_BAT("ibat[2]", 532, 533);
-
 
423
    PRINT_BAT("ibat[3]", 534, 535);
-
 
424
   
-
 
425
    PRINT_BAT("dbat[0]", 536, 537);
-
 
426
    PRINT_BAT("dbat[1]", 538, 539);
-
 
427
    PRINT_BAT("dbat[2]", 540, 541);
-
 
428
    PRINT_BAT("dbat[3]", 542, 543);
391
}
429
}
392
 
430
 
393
/** @}
431
/** @}
394
 */
432
 */