Ejemplo n.º 1
0
Archivo: tlb.c Proyecto: Darge/mimiker
void tlb_print() {
  int context = mips32_get_c0(C0_CONTEXT);

  kprintf("[tlb] C0_CONTEXT     : %p\n", (void *)context);
  kprintf("[tlb] C0_CONTEXT >> 1: %p\n", (void *)(context >> 1));
  kprintf("[tlb] ASID           : %d\n", get_asid());

  unsigned n = mips_tlb_size();
  for (unsigned i = 0; i < n; i++) {
    tlbhi_t entryhi;
    tlblo_t entrylo0;
    tlblo_t entrylo1;
    tlb_read_index(&entryhi, &entrylo0, &entrylo1, i);
    kprintf("[tlb: %d]: hi: %p lo0:%p lo1: %p \n",
            i, (void *)entryhi, (void *)entrylo0, (void *)entrylo1);
  }
}
Ejemplo n.º 2
0
void tlb_print() {
  uint32_t n = tlb_size();
  for (uint32_t i = 0; i < n; i++) {
    tlbhi_t hi;
    tlblo_t lo0, lo1;
    tlb_read_index(&hi, &lo0, &lo1, i);
    if ((lo0 & PTE_VALID) || (lo1 & PTE_VALID)) {
      kprintf("[tlb] %ld => ASID: %02x", i, hi & PTE_ASID_MASK);
      if (lo0 & PTE_VALID)
        kprintf(" PFN0: {%08x => %08x %c%c}", hi & PTE_VPN2_MASK,
                PTE_PFN_OF(lo0), (lo0 & PTE_DIRTY) ? 'D' : '-',
                (lo0 & PTE_GLOBAL) ? 'G' : '-');
      if (lo1 & PTE_VALID)
        kprintf(" PFN1: {%08x => %08x %c%c}", (hi & PTE_VPN2_MASK) + PAGESIZE,
                PTE_PFN_OF(lo1), (lo1 & PTE_DIRTY) ? 'D' : '-',
                (lo1 & PTE_GLOBAL) ? 'G' : '-');
      kprintf("\n");
    }
  }
}
Ejemplo n.º 3
0
/* Fills _dgb_tlb_entry structure with TLB entry. Used by debugger. */
void _gdb_tlb_read_index(unsigned idx) {
  tlb_read_index(&_gdb_tlb_entry.hi, &_gdb_tlb_entry.lo0, &_gdb_tlb_entry.lo1, idx);
}