~jakub/helenos/ia64-revival

« back to all changes in this revision

Viewing changes to kernel/arch/mips32/src/mm/tlb.c

  • Committer: Jakub Jermar
  • Date: 2011-04-13 14:45:41 UTC
  • mfrom: (527.1.397 main-clone)
  • Revision ID: jakub@jermar.eu-20110413144541-x0j3r1zxqhsljx1o
MergeĀ mainlineĀ changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
322
322
{
323
323
        uintptr_t va = cp0_badvaddr_read();
324
324
        
325
 
        fault_if_from_uspace(istate, "TLB Refill Exception on %p.", va);
326
 
        panic_memtrap(istate, PF_ACCESS_READ, va, "TLB Refill Exception.");
 
325
        fault_if_from_uspace(istate, "TLB Refill Exception on %p.",
 
326
            (void *) va);
 
327
        panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, "TLB Refill Exception.");
327
328
}
328
329
 
329
330
 
331
332
{
332
333
        uintptr_t va = cp0_badvaddr_read();
333
334
        
334
 
        fault_if_from_uspace(istate, "TLB Invalid Exception on %p.", va);
335
 
        panic_memtrap(istate, PF_ACCESS_READ, va, "TLB Invalid Exception.");
 
335
        fault_if_from_uspace(istate, "TLB Invalid Exception on %p.",
 
336
            (void *) va);
 
337
        panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, "TLB Invalid Exception.");
336
338
}
337
339
 
338
340
void tlb_modified_fail(istate_t *istate)
339
341
{
340
342
        uintptr_t va = cp0_badvaddr_read();
341
343
        
342
 
        fault_if_from_uspace(istate, "TLB Modified Exception on %p.", va);
 
344
        fault_if_from_uspace(istate, "TLB Modified Exception on %p.",
 
345
            (void *) va);
343
346
        panic_memtrap(istate, PF_ACCESS_WRITE, va, "TLB Modified Exception.");
344
347
}
345
348
 
553
556
        entry_lo_t lo0, lo1;
554
557
        entry_hi_t hi, hi_save;
555
558
        tlb_index_t index;
556
 
 
557
 
        ASSERT(asid != ASID_INVALID);
 
559
        
 
560
        if (asid == ASID_INVALID)
 
561
                return;
558
562
 
559
563
        hi_save.value = cp0_entry_hi_read();
560
564
        ipl = interrupts_disable();