您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ tlb_flush函数代码示例

51自学网 2021-06-03 08:52:20
  C++
这篇教程C++ tlb_flush函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中tlb_flush函数的典型用法代码示例。如果您正苦于以下问题:C++ tlb_flush函数的具体用法?C++ tlb_flush怎么用?C++ tlb_flush使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了tlb_flush函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: moxie_cpu_reset

static void moxie_cpu_reset(CPUState *s){    MoxieCPU *cpu = MOXIE_CPU(s);    MoxieCPUClass *mcc = MOXIE_CPU_GET_CLASS(cpu);    CPUMoxieState *env = &cpu->env;    mcc->parent_reset(s);    memset(env, 0, sizeof(CPUMoxieState));    env->pc = 0x1000;    tlb_flush(s, 1);}
开发者ID:jidongxiao,项目名称:twinkvm,代码行数:13,


示例2: as_activate

voidas_activate(struct addrspace *as){#if OPT_ASID    tlb_activate_asid(at_assign(curcpu->c_asids, as));#else    // unused    (void)as;        // invalidate the entire tlb on a context switch    tlb_flush();#endif}
开发者ID:dpalmer93,项目名称:porcupine-kernel,代码行数:13,


示例3: s390_cpu_reset

/* S390CPUClass::cpu_reset() */static void s390_cpu_reset(CPUState *s){    S390CPU *cpu = S390_CPU(s);    S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);    CPUS390XState *env = &cpu->env;    env->pfault_token = -1UL;    s390_del_running_cpu(cpu);    scc->parent_reset(s);#if !defined(CONFIG_USER_ONLY)    s->halted = 1;#endif    tlb_flush(s, 1);}
开发者ID:AlexHai,项目名称:qemu,代码行数:15,


示例4: cpu_write_c_reg

static int cpu_write_c_reg(CPUS390XState *env, uint8_t *mem_buf, int n){    switch (n) {    case S390_C0_REGNUM ... S390_C15_REGNUM:        env->cregs[n] = ldtul_p(mem_buf);        if (tcg_enabled()) {            tlb_flush(ENV_GET_CPU(env), 1);        }        cpu_synchronize_post_init(ENV_GET_CPU(env));        return 8;    default:        return 0;    }}
开发者ID:01org,项目名称:qemu-lite,代码行数:14,


示例5: helper_wrpkru

void helper_wrpkru(CPUX86State *env, uint32_t ecx, uint64_t val){    CPUState *cs = CPU(x86_env_get_cpu(env));    if ((env->cr[4] & CR4_PKE_MASK) == 0) {        raise_exception_err_ra(env, EXCP06_ILLOP, 0, GETPC());    }    if (ecx != 0 || (val & 0xFFFFFFFF00000000ull)) {        raise_exception_err_ra(env, EXCP0D_GPF, 0, GETPC());    }    env->pkru = val;    tlb_flush(cs);}
开发者ID:m000,项目名称:panda,代码行数:14,


示例6: mapRemote

Address X86Memory::mapVirtual(X86Process *p, Address paddr,			      Address vaddr, ulong prot){    /* Map remote pages. */    mapRemote(p, vaddr);    /* Virtual address specified? */    if (vaddr == ZERO)    {	vaddr = findFree(PAGETABFROM_REMOTE, remPageDir);    }    /* Repoint to the correct (remote) page table. */    remPageTab = PAGETABADDR_FROM(vaddr, PAGETABFROM_REMOTE);        /* Does the remote process have the page table in memory? */    if (!(remPageDir[DIRENTRY(vaddr)] & PAGE_PRESENT))    {	/* Nope, allocate a page table first. */	Address newPageTab  = memory->allocatePhysical(PAGESIZE);	newPageTab |= PAGE_PRESENT | PAGE_RW | prot;		/* Map the new page table into remote memory. */	remPageDir[DIRENTRY(vaddr)] = newPageTab;		/* Update caches. */	tlb_flush(remPageTab);		/* Zero the new page. */	memset(remPageTab, 0, PAGESIZE);    }    /* Map physical address to remote virtual address. */    remPageTab[TABENTRY(vaddr)] = (paddr & PAGEMASK) | prot;    tlb_flush(vaddr);    /* Success. */    return (Address) vaddr;}
开发者ID:Esaud17,项目名称:AmayaOS,代码行数:37,


示例7: openrisc_cpu_do_interrupt

void openrisc_cpu_do_interrupt(CPUState *cs){    OpenRISCCPU *cpu = OPENRISC_CPU(cs);    CPUOpenRISCState *env = &cpu->env;#ifndef CONFIG_USER_ONLY    if (env->flags & D_FLAG) { /* Delay Slot insn */        env->flags &= ~D_FLAG;        env->sr |= SR_DSX;        if (env->exception_index == EXCP_TICK    ||            env->exception_index == EXCP_INT     ||            env->exception_index == EXCP_SYSCALL ||            env->exception_index == EXCP_FPE) {            env->epcr = env->jmp_pc;        } else {            env->epcr = env->pc - 4;        }    } else {        if (env->exception_index == EXCP_TICK    ||            env->exception_index == EXCP_INT     ||            env->exception_index == EXCP_SYSCALL ||            env->exception_index == EXCP_FPE) {            env->epcr = env->npc;        } else {            env->epcr = env->pc;        }    }    /* For machine-state changed between user-mode and supervisor mode,       we need flush TLB when we enter&exit EXCP.  */    tlb_flush(env, 1);    env->esr = env->sr;    env->sr &= ~SR_DME;    env->sr &= ~SR_IME;    env->sr |= SR_SM;    env->sr &= ~SR_IEE;    env->sr &= ~SR_TEE;    env->tlb->cpu_openrisc_map_address_data = &cpu_openrisc_get_phys_nommu;    env->tlb->cpu_openrisc_map_address_code = &cpu_openrisc_get_phys_nommu;    if (env->exception_index > 0 && env->exception_index < EXCP_NR) {        env->pc = (env->exception_index << 8);    } else {        cpu_abort(env, "Unhandled exception 0x%x/n", env->exception_index);    }#endif    env->exception_index = -1;}
开发者ID:01org,项目名称:KVMGT-qemu,代码行数:49,


示例8: sparc_cpu_reset

/* CPUClass::reset() */static void sparc_cpu_reset(CPUState *s){    SPARCCPU *cpu = SPARC_CPU(s);    SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(cpu);    CPUSPARCState *env = &cpu->env;    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", s->cpu_index);        log_cpu_state(env, 0);    }    scc->parent_reset(s);    memset(env, 0, offsetof(CPUSPARCState, breakpoints));    tlb_flush(env, 1);    env->cwp = 0;#ifndef TARGET_SPARC64    env->wim = 1;#endif    env->regwptr = env->regbase + (env->cwp * 16);    CC_OP = CC_OP_FLAGS;#if defined(CONFIG_USER_ONLY)#ifdef TARGET_SPARC64    env->cleanwin = env->nwindows - 2;    env->cansave = env->nwindows - 2;    env->pstate = PS_RMO | PS_PEF | PS_IE;    env->asi = 0x82; /* Primary no-fault */#endif#else#if !defined(TARGET_SPARC64)    env->psret = 0;    env->psrs = 1;    env->psrps = 1;#endif#ifdef TARGET_SPARC64    env->pstate = PS_PRIV|PS_RED|PS_PEF|PS_AG;    env->hpstate = cpu_has_hypervisor(env) ? HS_PRIV : 0;    env->tl = env->maxtl;    cpu_tsptr(env)->tt = TT_POWER_ON_RESET;    env->lsu = 0;#else    env->mmuregs[0] &= ~(MMU_E | MMU_NF);    env->mmuregs[0] |= env->def->mmu_bm;#endif    env->pc = 0;    env->npc = env->pc + 4;#endif    env->cache_control = 0;}
开发者ID:AjayMashi,项目名称:x-tier,代码行数:50,


示例9: uc32_cpu_initfn

static void uc32_cpu_initfn(Object *obj){    UniCore32CPU *cpu = UNICORE32_CPU(obj);    CPUUniCore32State *env = &cpu->env;    cpu_exec_init(env);#ifdef CONFIG_USER_ONLY    env->uncached_asr = ASR_MODE_USER;    env->regs[31] = 0;#else    env->uncached_asr = ASR_MODE_PRIV;    env->regs[31] = 0x03000000;#endif    tlb_flush(env, 1);}
开发者ID:JehandadKhan,项目名称:dpdk-ovs,代码行数:17,


示例10: do_munmap

/* * This function implements the munmap(2) syscall. * * As with do_mmap() it should perform the required error checking, * before calling upon vmmap_remove() to do most of the work. * Remember to clear the TLB. */intdo_munmap(void *addr, size_t len){	/*NOT_YET_IMPLEMENTED("VM: do_munmap");*/	int temp_addr = (uintptr_t) addr;	tlb_flush(temp_addr);	KASSERT(NULL != curproc->p_pagedir);	dbg(DBG_PRINT, "(GRADING3A 2.b)curproc->p_pagedir; first ten bits of the virtual address is NOT NULL/n ");	vmmap_remove(curproc->p_vmmap, 0, 0);	return 0;}
开发者ID:rrohit25,项目名称:Avengers,代码行数:24,


示例11: alpha_cpu_initfn

static void alpha_cpu_initfn(Object *obj){    AlphaCPU *cpu = ALPHA_CPU(obj);    CPUAlphaState *env = &cpu->env;    cpu_exec_init(env);    tlb_flush(env, 1);#if defined(CONFIG_USER_ONLY)    env->ps = PS_USER_MODE;    cpu_alpha_store_fpcr(env, (FPCR_INVD | FPCR_DZED | FPCR_OVFD                               | FPCR_UNFD | FPCR_INED | FPCR_DNOD                               | FPCR_DYN_NORMAL));#endif    env->lock_addr = -1;    env->fen = 1;}
开发者ID:AlexWWW,项目名称:qemu-linaro-clone,代码行数:17,


示例12: do_mmap

/* * This function implements the mmap(2) syscall, but only * supports the MAP_SHARED, MAP_PRIVATE, MAP_FIXED, and * MAP_ANON flags. * * Add a mapping to the current process's address space. * You need to do some error checking; see the ERRORS section * of the manpage for the problems you should anticipate. * After error checking most of the work of this function is * done by vmmap_map(), but remember to clear the TLB. */intdo_mmap(void *addr, size_t len, int prot, int flags,int fd, off_t off, void **ret){	/*NOT_YET_IMPLEMENTED("VM: do_mmap");*/	int address = (uintptr_t) addr;	tlb_flush(address);	KASSERT(NULL != curproc->p_pagedir);	dbg(DBG_PRINT, "(GRADING3A 2.a)curproc->p_pagedir; first ten bits of the virtual address is NOT NULL/n ");	vmmap_map(curproc->p_vmmap, curproc->p_files[fd]->f_vnode, 0, 0, prot, flags, off, NULL, (vmarea_t**) ret);	return 0;}
开发者ID:rrohit25,项目名称:Avengers,代码行数:28,


示例13: s390_cpu_reset

/* CPUClass::reset() */static void s390_cpu_reset(CPUState *s){    S390CPU *cpu = S390_CPU(s);    S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);    CPUS390XState *env = &cpu->env;    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", env->cpu_index);        log_cpu_state(env, 0);    }    scc->parent_reset(s);    memset(env, 0, offsetof(CPUS390XState, breakpoints));    /* FIXME: reset vector? */    tlb_flush(env, 1);    s390_add_running_cpu(env);}
开发者ID:AlexWWW,项目名称:qemu-linaro-clone,代码行数:19,


示例14: cpu_reset

void cpu_reset(CPUM68KState *env){    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", env->cpu_index);        log_cpu_state(env, 0);    }    memset(env, 0, offsetof(CPUM68KState, breakpoints));#if !defined (CONFIG_USER_ONLY)    env->sr = 0x2700;#endif    m68k_switch_sp(env);    /* ??? FP regs should be initialized to NaN.  */    env->cc_op = CC_OP_FLAGS;    /* TODO: We should set PC from the interrupt vector.  */    env->pc = 0;    tlb_flush(env, 1);}
开发者ID:dsqmoore,项目名称:qemu-1,代码行数:18,


示例15: mips_cpu_reset

/* CPUClass::reset() */static void mips_cpu_reset(CPUState *s){    MIPSCPU *cpu = MIPS_CPU(s);    MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(cpu);    CPUMIPSState *env = &cpu->env;    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", s->cpu_index);        log_cpu_state(env, 0);    }    mcc->parent_reset(s);    memset(env, 0, offsetof(CPUMIPSState, breakpoints));    tlb_flush(env, 1);    cpu_state_reset(env);}
开发者ID:CarterTsai,项目名称:qemu-semihost,代码行数:19,


示例16: cpu_reset

void cpu_reset(CPUAVR32State *env){   if (qemu_loglevel_mask(CPU_LOG_RESET)) {      qemu_log("CPU Reset/n");      log_cpu_state(env, 0);   }   memset(env, 0, offsetof(CPUAVR32State, breakpoints));#if defined (CONFIG_USER_ONLY)   env->sreg.sr = AVR32_SR_M_MASK & (AVR32_SR_M_APP << AVR32_SR_M_OFFSET);   /* SN: TBD - Should we enable interrupts??  */#else   /* Supervisor mode with interrupts disabled.  */   env->sreg.sr = (AVR32_SR_M_MASK & (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET)) | AVR32_SR_GM_MASK | AVR32_SR_EM_MASK;#endif   tlb_flush(env, 1);}
开发者ID:turbosree,项目名称:QEMU-AVR32,代码行数:18,


示例17: lm32_cpu_reset

/* CPUClass::reset() */static void lm32_cpu_reset(CPUState *s){    LM32CPU *cpu = LM32_CPU(s);    LM32CPUClass *lcc = LM32_CPU_GET_CLASS(cpu);    CPULM32State *env = &cpu->env;    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", s->cpu_index);        log_cpu_state(env, 0);    }    lcc->parent_reset(s);    tlb_flush(env, 1);    /* reset cpu state */    memset(env, 0, offsetof(CPULM32State, breakpoints));}
开发者ID:JehandadKhan,项目名称:dpdk-ovs,代码行数:19,


示例18: m68k_cpu_reset

/* CPUClass::reset() */static void m68k_cpu_reset(CPUState *s){    M68kCPU *cpu = M68K_CPU(s);    M68kCPUClass *mcc = M68K_CPU_GET_CLASS(cpu);    CPUM68KState *env = &cpu->env;    mcc->parent_reset(s);    memset(env, 0, offsetof(CPUM68KState, features));#if !defined(CONFIG_USER_ONLY)    env->sr = 0x2700;#endif    m68k_switch_sp(env);    /* ??? FP regs should be initialized to NaN.  */    env->cc_op = CC_OP_FLAGS;    /* TODO: We should set PC from the interrupt vector.  */    env->pc = 0;    tlb_flush(s, 1);}
开发者ID:AdrianHuang,项目名称:qemu,代码行数:20,


示例19: openrisc_cpu_do_interrupt

void openrisc_cpu_do_interrupt(CPUState *cs){#ifndef CONFIG_USER_ONLY    OpenRISCCPU *cpu = OPENRISC_CPU(cs);    CPUOpenRISCState *env = &cpu->env;    env->epcr = env->pc;    if (env->flags & D_FLAG) {        env->flags &= ~D_FLAG;        env->sr |= SR_DSX;        env->epcr -= 4;    }    if (cs->exception_index == EXCP_SYSCALL) {        env->epcr += 4;    }    /* For machine-state changed between user-mode and supervisor mode,       we need flush TLB when we enter&exit EXCP.  */    tlb_flush(cs, 1);    env->esr = env->sr;    env->sr &= ~SR_DME;    env->sr &= ~SR_IME;    env->sr |= SR_SM;    env->sr &= ~SR_IEE;    env->sr &= ~SR_TEE;    env->tlb->cpu_openrisc_map_address_data = &cpu_openrisc_get_phys_nommu;    env->tlb->cpu_openrisc_map_address_code = &cpu_openrisc_get_phys_nommu;    if (cs->exception_index > 0 && cs->exception_index < EXCP_NR) {#ifdef OR32_ARCH_DEFAULT        env->pc = (cs->exception_index << 8);#else        env->pc = 0x100000 + (cs->exception_index << 8);#endif        //printf("pc = 0x%x/n", env->pc);    } else {        cpu_abort(cs, "Unhandled exception 0x%x/n", cs->exception_index);    }#endif    cs->exception_index = -1;}
开发者ID:curtiszimmerman,项目名称:orp,代码行数:43,


示例20: mips_cpu_reset

/* CPUClass::reset() */static void mips_cpu_reset(CPUState *s){    MIPSCPU *cpu = MIPS_CPU(s);    MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(cpu);    CPUMIPSState *env = &cpu->env;    mcc->parent_reset(s);    memset(env, 0, offsetof(CPUMIPSState, mvp));    tlb_flush(s, 1);    cpu_state_reset(env);#ifndef CONFIG_USER_ONLY    if (kvm_enabled()) {        kvm_mips_reset_vcpu(cpu);    }#endif}
开发者ID:BinaryAnalysisPlatform,项目名称:qemu,代码行数:20,


示例21: cpu_reset

void cpu_reset(CPUSPARCState *env){    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", env->cpu_index);        log_cpu_state(env, 0);    }    tlb_flush(env, 1);    env->cwp = 0;#ifndef TARGET_SPARC64    env->wim = 1;#endif    env->regwptr = env->regbase + (env->cwp * 16);    CC_OP = CC_OP_FLAGS;#if defined(CONFIG_USER_ONLY)#ifdef TARGET_SPARC64    env->cleanwin = env->nwindows - 2;    env->cansave = env->nwindows - 2;    env->pstate = PS_RMO | PS_PEF | PS_IE;    env->asi = 0x82; /* Primary no-fault */#endif#else#if !defined(TARGET_SPARC64)    env->psret = 0;    env->psrs = 1;    env->psrps = 1;#endif#ifdef TARGET_SPARC64    env->pstate = PS_PRIV|PS_RED|PS_PEF|PS_AG;    env->hpstate = cpu_has_hypervisor(env) ? HS_PRIV : 0;    env->tl = env->maxtl;    cpu_tsptr(env)->tt = TT_POWER_ON_RESET;    env->lsu = 0;#else    env->mmuregs[0] &= ~(MMU_E | MMU_NF);    env->mmuregs[0] |= env->def->mmu_bm;#endif    env->pc = 0;    env->npc = env->pc + 4;#endif    env->cache_control = 0;}
开发者ID:3a9LL,项目名称:panda,代码行数:42,


示例22: page_replacement_init

int page_replacement_init( FILE *fp, int mech ){  int i;  int err;  int pid;  unsigned int vaddr;  fseek( fp, 0, SEEK_SET );  /* start at beginning */  /* initialize process table, frame table, and TLB */  memset( processes, 0, sizeof(task_t) * MAX_PROCESSES );  memset( physical_mem, 0, sizeof(frame_t) * PHYSICAL_FRAMES );  tlb_flush( );  current_pt = 0;  /* initialize frames with numbers */  for ( i = 0; i < PHYSICAL_FRAMES ; i++ ) {    physical_mem[i].number = i;  }  /* create processes, including initial page table */  while ( fscanf( fp, "%d %x/n", &pid, &vaddr ) == 2 ) {    if ( processes[pid].pagetable == NULL ) {      err = process_create( pid );      if ( err )	return -1;    }  }  fseek( fp, 0, SEEK_SET );  /* reset at beginning */  /* init replacement specific data */  pt_replace_init[mech]( fp );  return 0;}
开发者ID:cykustcc,项目名称:CMPS473_OS_proj1,代码行数:38,


示例23: s390_cpu_reset

/* CPUClass::reset() */static void s390_cpu_reset(CPUState *s){    S390CPU *cpu = S390_CPU(s);    S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);    CPUS390XState *env = &cpu->env;    s390_del_running_cpu(cpu);    scc->parent_reset(s);    memset(env, 0, offsetof(CPUS390XState, breakpoints));    /* architectured initial values for CR 0 and 14 */    env->cregs[0] = CR0_RESET;    env->cregs[14] = CR14_RESET;    /* set halted to 1 to make sure we can add the cpu in     * s390_ipl_cpu code, where CPUState::halted is set back to 0     * after incrementing the cpu counter */#if !defined(CONFIG_USER_ONLY)    s->halted = 1;#endif    tlb_flush(env, 1);}
开发者ID:cns3xx,项目名称:qemu-cns3xxx,代码行数:24,


示例24: superh_cpu_reset

/* CPUClass::reset() */static void superh_cpu_reset(CPUState *s){    SuperHCPU *cpu = SUPERH_CPU(s);    SuperHCPUClass *scc = SUPERH_CPU_GET_CLASS(cpu);    CPUSH4State *env = &cpu->env;    scc->parent_reset(s);    memset(env, 0, offsetof(CPUSH4State, breakpoints));    tlb_flush(env, 1);    env->pc = 0xA0000000;#if defined(CONFIG_USER_ONLY)    env->fpscr = FPSCR_PR; /* value for userspace according to the kernel */    set_float_rounding_mode(float_round_nearest_even, &env->fp_status); /* ?! */#else    env->sr = SR_MD | SR_RB | SR_BL | SR_I3 | SR_I2 | SR_I1 | SR_I0;    env->fpscr = FPSCR_DN | FPSCR_RM_ZERO; /* CPU reset value according to SH4 manual */    set_float_rounding_mode(float_round_to_zero, &env->fp_status);    set_flush_to_zero(1, &env->fp_status);#endif    set_default_nan_mode(1, &env->fp_status);}
开发者ID:cardoe,项目名称:qemu,代码行数:24,


示例25: m68k_cpu_reset

/* CPUClass::reset() */static void m68k_cpu_reset(CPUState *s){    M68kCPU *cpu = M68K_CPU(s);    M68kCPUClass *mcc = M68K_CPU_GET_CLASS(cpu);    CPUM68KState *env = &cpu->env;    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", s->cpu_index);        log_cpu_state(env, 0);    }    mcc->parent_reset(s);    memset(env, 0, offsetof(CPUM68KState, breakpoints));#if !defined(CONFIG_USER_ONLY)    env->sr = 0x2700;#endif    m68k_switch_sp(env);    /* ??? FP regs should be initialized to NaN.  */    env->cc_op = CC_OP_FLAGS;    /* TODO: We should set PC from the interrupt vector.  */    env->pc = 0;    tlb_flush(env, 1);}
开发者ID:AjayMashi,项目名称:x-tier,代码行数:25,


示例26: s390_cpu_full_reset

/* CPUClass:reset() */static void s390_cpu_full_reset(CPUState *s){    S390CPU *cpu = S390_CPU(s);    S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);    CPUS390XState *env = &cpu->env;    int i;    scc->parent_reset(s);    cpu->env.sigp_order = 0;    s390_cpu_set_state(CPU_STATE_STOPPED, cpu);    memset(env, 0, offsetof(CPUS390XState, cpu_num));    /* architectured initial values for CR 0 and 14 */    env->cregs[0] = CR0_RESET;    env->cregs[14] = CR14_RESET;    /* architectured initial value for Breaking-Event-Address register */    env->gbea = 1;    env->pfault_token = -1UL;    env->ext_index = -1;    for (i = 0; i < ARRAY_SIZE(env->io_index); i++) {        env->io_index[i] = -1;    }    /* tininess for underflow is detected before rounding */    set_float_detect_tininess(float_tininess_before_rounding,                              &env->fpu_status);    /* Reset state inside the kernel that we cannot access yet from QEMU. */    if (kvm_enabled()) {        kvm_s390_reset_vcpu(cpu);    }    tlb_flush(s, 1);}
开发者ID:Pating,项目名称:qemu-colo,代码行数:37,


示例27: cpu_load

//.........这里部分代码省略.........    qemu_get_sbe32s(f, &env->mvp->CP0_MVPConf1);    /* Load TLB */    qemu_get_be32s(f, &env->tlb->nb_tlb);    for(i = 0; i < MIPS_TLB_MAX; i++) {        uint16_t flags;        uint8_t asid;        qemu_get_betls(f, &env->tlb->mmu.r4k.tlb[i].VPN);        qemu_get_be32s(f, &env->tlb->mmu.r4k.tlb[i].PageMask);        qemu_get_8s(f, &asid);        env->tlb->mmu.r4k.tlb[i].ASID = asid;        qemu_get_be16s(f, &flags);        env->tlb->mmu.r4k.tlb[i].G = (flags >> 10) & 1;        env->tlb->mmu.r4k.tlb[i].C0 = (flags >> 7) & 3;        env->tlb->mmu.r4k.tlb[i].C1 = (flags >> 4) & 3;        env->tlb->mmu.r4k.tlb[i].V0 = (flags >> 3) & 1;        env->tlb->mmu.r4k.tlb[i].V1 = (flags >> 2) & 1;        env->tlb->mmu.r4k.tlb[i].D0 = (flags >> 1) & 1;        env->tlb->mmu.r4k.tlb[i].D1 = (flags >> 0) & 1;        qemu_get_betls(f, &env->tlb->mmu.r4k.tlb[i].PFN[0]);        qemu_get_betls(f, &env->tlb->mmu.r4k.tlb[i].PFN[1]);    }    /* Load CPU metastate */    qemu_get_be32s(f, &env->current_tc);    qemu_get_be32s(f, &env->current_fpu);    qemu_get_sbe32s(f, &env->error_code);    qemu_get_be32s(f, &env->hflags);    qemu_get_betls(f, &env->btarget);    qemu_get_sbe32s(f, &i);    env->bcond = i;    /* Load remaining CP1 registers */    qemu_get_sbe32s(f, &env->CP0_Index);    qemu_get_sbe32s(f, &env->CP0_Random);    qemu_get_sbe32s(f, &env->CP0_VPEControl);    qemu_get_sbe32s(f, &env->CP0_VPEConf0);    qemu_get_sbe32s(f, &env->CP0_VPEConf1);    qemu_get_betls(f, &env->CP0_YQMask);    qemu_get_betls(f, &env->CP0_VPESchedule);    qemu_get_betls(f, &env->CP0_VPEScheFBack);    qemu_get_sbe32s(f, &env->CP0_VPEOpt);    qemu_get_betls(f, &env->CP0_EntryLo0);    qemu_get_betls(f, &env->CP0_EntryLo1);    qemu_get_betls(f, &env->CP0_Context);    qemu_get_sbe32s(f, &env->CP0_PageMask);    qemu_get_sbe32s(f, &env->CP0_PageGrain);    qemu_get_sbe32s(f, &env->CP0_Wired);    qemu_get_sbe32s(f, &env->CP0_SRSConf0);    qemu_get_sbe32s(f, &env->CP0_SRSConf1);    qemu_get_sbe32s(f, &env->CP0_SRSConf2);    qemu_get_sbe32s(f, &env->CP0_SRSConf3);    qemu_get_sbe32s(f, &env->CP0_SRSConf4);    qemu_get_sbe32s(f, &env->CP0_HWREna);    qemu_get_betls(f, &env->CP0_BadVAddr);    qemu_get_sbe32s(f, &env->CP0_Count);    qemu_get_betls(f, &env->CP0_EntryHi);    qemu_get_sbe32s(f, &env->CP0_Compare);    qemu_get_sbe32s(f, &env->CP0_Status);    qemu_get_sbe32s(f, &env->CP0_IntCtl);    qemu_get_sbe32s(f, &env->CP0_SRSCtl);    qemu_get_sbe32s(f, &env->CP0_SRSMap);    qemu_get_sbe32s(f, &env->CP0_Cause);    qemu_get_betls(f, &env->CP0_EPC);    qemu_get_sbe32s(f, &env->CP0_PRid);    qemu_get_sbe32s(f, &env->CP0_EBase);    qemu_get_sbe32s(f, &env->CP0_Config0);    qemu_get_sbe32s(f, &env->CP0_Config1);    qemu_get_sbe32s(f, &env->CP0_Config2);    qemu_get_sbe32s(f, &env->CP0_Config3);    qemu_get_sbe32s(f, &env->CP0_Config6);    qemu_get_sbe32s(f, &env->CP0_Config7);    qemu_get_betls(f, &env->lladdr);    for(i = 0; i < 8; i++)        qemu_get_betls(f, &env->CP0_WatchLo[i]);    for(i = 0; i < 8; i++)        qemu_get_sbe32s(f, &env->CP0_WatchHi[i]);    qemu_get_betls(f, &env->CP0_XContext);    qemu_get_sbe32s(f, &env->CP0_Framemask);    qemu_get_sbe32s(f, &env->CP0_Debug);    qemu_get_betls(f, &env->CP0_DEPC);    qemu_get_sbe32s(f, &env->CP0_Performance0);    qemu_get_sbe32s(f, &env->CP0_TagLo);    qemu_get_sbe32s(f, &env->CP0_DataLo);    qemu_get_sbe32s(f, &env->CP0_TagHi);    qemu_get_sbe32s(f, &env->CP0_DataHi);    qemu_get_betls(f, &env->CP0_ErrorEPC);    qemu_get_sbe32s(f, &env->CP0_DESAVE);    /* Load inactive TC state */    for (i = 0; i < MIPS_SHADOW_SET_MAX; i++)        load_tc(f, &env->tcs[i]);    for (i = 0; i < MIPS_FPU_MAX; i++)        load_fpu(f, &env->fpus[i]);    /* XXX: ensure compatiblity for halted bit ? */    tlb_flush(env, 1);    return 0;}
开发者ID:CriGio,项目名称:platform_external_qemu,代码行数:101,


示例28: sh7750_mem_writel

static void sh7750_mem_writel(void *opaque, target_phys_addr_t addr,			      uint32_t mem_value){    SH7750State *s = opaque;    uint16_t temp;    switch (addr) {	/* SDRAM controller */    case SH7750_BCR1_A7:        s->bcr1 = mem_value;        return;    case SH7750_BCR4_A7:	if(!has_bcr3_and_bcr4(s))	    error_access("long write", addr);	s->bcr4 = mem_value;	return;    case SH7750_WCR1_A7:    case SH7750_WCR2_A7:    case SH7750_WCR3_A7:    case SH7750_MCR_A7:	ignore_access("long write", addr);	return;	/* IO ports */    case SH7750_PCTRA_A7:	temp = porta_lines(s);	s->pctra = mem_value;	s->portdira = portdir(mem_value);	s->portpullupa = portpullup(mem_value);	porta_changed(s, temp);	return;    case SH7750_PCTRB_A7:	temp = portb_lines(s);	s->pctrb = mem_value;	s->portdirb = portdir(mem_value);	s->portpullupb = portpullup(mem_value);	portb_changed(s, temp);	return;    case SH7750_MMUCR_A7:        if (mem_value & MMUCR_TI) {            cpu_sh4_invalidate_tlb(s->cpu);        }        s->cpu->mmucr = mem_value & ~MMUCR_TI;        return;    case SH7750_PTEH_A7:        /* If asid changes, clear all registered tlb entries. */	if ((s->cpu->pteh & 0xff) != (mem_value & 0xff))	    tlb_flush(s->cpu, 1);	s->cpu->pteh = mem_value;	return;    case SH7750_PTEL_A7:	s->cpu->ptel = mem_value;	return;    case SH7750_PTEA_A7:	s->cpu->ptea = mem_value & 0x0000000f;	return;    case SH7750_TTB_A7:	s->cpu->ttb = mem_value;	return;    case SH7750_TEA_A7:	s->cpu->tea = mem_value;	return;    case SH7750_TRA_A7:	s->cpu->tra = mem_value & 0x000007ff;	return;    case SH7750_EXPEVT_A7:	s->cpu->expevt = mem_value & 0x000007ff;	return;    case SH7750_INTEVT_A7:	s->cpu->intevt = mem_value & 0x000007ff;	return;    case SH7750_CCR_A7:	s->ccr = mem_value;	return;    default:	error_access("long write", addr);        abort();    }}
开发者ID:0bliv10n,项目名称:s2e,代码行数:78,


示例29: cpu_reset

/* NOTE: must be called outside the CPU execute loop */void cpu_reset(CPUX86State *env){    int i;    if (qemu_loglevel_mask(CPU_LOG_RESET)) {        qemu_log("CPU Reset (CPU %d)/n", env->cpu_index);        log_cpu_state(env, X86_DUMP_FPU | X86_DUMP_CCOP);    }    memset(env, 0, offsetof(CPUX86State, breakpoints));    tlb_flush(env, 1);    env->old_exception = -1;    /* init to reset state */#ifdef CONFIG_SOFTMMU    env->hflags |= HF_SOFTMMU_MASK;#endif    env->hflags2 |= HF2_GIF_MASK;    cpu_x86_update_cr0(env, 0x60000010);    env->a20_mask = ~0x0;    env->smbase = 0x30000;    env->idt.limit = 0xffff;    env->gdt.limit = 0xffff;    env->ldt.limit = 0xffff;    env->ldt.flags = DESC_P_MASK | (2 << DESC_TYPE_SHIFT);    env->tr.limit = 0xffff;    env->tr.flags = DESC_P_MASK | (11 << DESC_TYPE_SHIFT);    cpu_x86_load_seg_cache(env, R_CS, 0xf000, 0xffff0000, 0xffff,                           DESC_P_MASK | DESC_S_MASK | DESC_CS_MASK |                           DESC_R_MASK | DESC_A_MASK);    cpu_x86_load_seg_cache(env, R_DS, 0, 0, 0xffff,                           DESC_P_MASK | DESC_S_MASK | DESC_W_MASK |                           DESC_A_MASK);    cpu_x86_load_seg_cache(env, R_ES, 0, 0, 0xffff,                           DESC_P_MASK | DESC_S_MASK | DESC_W_MASK |                           DESC_A_MASK);    cpu_x86_load_seg_cache(env, R_SS, 0, 0, 0xffff,                           DESC_P_MASK | DESC_S_MASK | DESC_W_MASK |                           DESC_A_MASK);    cpu_x86_load_seg_cache(env, R_FS, 0, 0, 0xffff,                           DESC_P_MASK | DESC_S_MASK | DESC_W_MASK |                           DESC_A_MASK);    cpu_x86_load_seg_cache(env, R_GS, 0, 0, 0xffff,                           DESC_P_MASK | DESC_S_MASK | DESC_W_MASK |                           DESC_A_MASK);    env->eip = 0xfff0;    env->regs[R_EDX] = env->cpuid_version;    env->eflags = 0x2;    /* FPU init */    for(i = 0;i < 8; i++)        env->fptags[i] = 1;    env->fpuc = 0x37f;    env->mxcsr = 0x1f80;    memset(env->dr, 0, sizeof(env->dr));    env->dr[6] = DR6_FIXED_1;    env->dr[7] = DR7_FIXED_1;    cpu_breakpoint_remove_all(env, BP_CPU);    cpu_watchpoint_remove_all(env, BP_CPU);    env->mcg_status = 0;}
开发者ID:AjayMashi,项目名称:nitro-kvm,代码行数:73,


示例30: cpu_riscv_tlb_flush

inline void cpu_riscv_tlb_flush (CPURISCVState *env, int flush_global){    RISCVCPU *cpu = riscv_env_get_cpu(env);    // Flush QEMU's TLB    tlb_flush(CPU(cpu), flush_global);}
开发者ID:jameyhicks,项目名称:riscv-qemu,代码行数:6,



注:本文中的tlb_flush函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ tlb_invalidate函数代码示例
C++ tl函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。