Esempio n. 1
0
// On entry here we are now running with the proper virtual address
// mappings, except that the selfmapping installed above needs to be
// reverted.
void boot_after_mmu(int selfmap_index, uint32_t old_pde)
{
  // Restore mapping overwritten by self-mapping
  uint32_t *pgd = (uint32_t *)&__page_dir_virt__;
  pgd[selfmap_index] = old_pde;
  mmu_invalidate_tlb();

  // Run the main CRT startup code
  _mainCRTStartup();
}
Esempio n. 2
0
void HELPER(wcsr_tlbvaddr)(CPULM32State *env, uint32_t tlbvaddr)
{
    env->tlbvaddr = tlbvaddr;

    switch (tlbvaddr & TLB_CMD_MASK) {
    case ITLB_NOP:
    case DTLB_NOP:
        break;
    case ITLB_INVALIDATE:
        mmu_invalidate_tlb(env, env->mmu.itlb);
        break;
    case DTLB_INVALIDATE:
        mmu_invalidate_tlb(env, env->mmu.dtlb);
        break;
    case ITLB_FLUSH:
        mmu_flush_tlb(env, env->mmu.itlb);
        break;
    case DTLB_FLUSH:
        mmu_flush_tlb(env, env->mmu.dtlb);
        break;
    }
}