Lines Matching +full:asi +full:- +full:format

4  *  Copyright (c) 2003-2005 Fabrice Bellard
24 #include "qemu/qemu-print.h"
25 #include "exec/exec-all.h"
26 #include "hw/qdev-properties.h"
39 if (scc->parent_phases.hold) { in sparc_cpu_reset_hold()
40 scc->parent_phases.hold(obj, type); in sparc_cpu_reset_hold()
44 env->cwp = 0; in sparc_cpu_reset_hold()
46 env->wim = 1; in sparc_cpu_reset_hold()
48 env->regwptr = env->regbase + (env->cwp * 16); in sparc_cpu_reset_hold()
51 env->cleanwin = env->nwindows - 2; in sparc_cpu_reset_hold()
52 env->cansave = env->nwindows - 2; in sparc_cpu_reset_hold()
53 env->pstate = PS_RMO | PS_PEF | PS_IE; in sparc_cpu_reset_hold()
54 env->asi = 0x82; /* Primary no-fault */ in sparc_cpu_reset_hold()
58 env->psret = 0; in sparc_cpu_reset_hold()
59 env->psrs = 1; in sparc_cpu_reset_hold()
60 env->psrps = 1; in sparc_cpu_reset_hold()
63 env->pstate = PS_PRIV | PS_RED | PS_PEF; in sparc_cpu_reset_hold()
65 env->pstate |= PS_AG; in sparc_cpu_reset_hold()
67 env->hpstate = cpu_has_hypervisor(env) ? HS_PRIV : 0; in sparc_cpu_reset_hold()
68 env->tl = env->maxtl; in sparc_cpu_reset_hold()
69 env->gl = 2; in sparc_cpu_reset_hold()
70 cpu_tsptr(env)->tt = TT_POWER_ON_RESET; in sparc_cpu_reset_hold()
71 env->lsu = 0; in sparc_cpu_reset_hold()
73 env->mmuregs[0] &= ~(MMU_E | MMU_NF); in sparc_cpu_reset_hold()
74 env->mmuregs[0] |= env->def.mmu_bm; in sparc_cpu_reset_hold()
76 env->pc = 0; in sparc_cpu_reset_hold()
77 env->npc = env->pc + 4; in sparc_cpu_reset_hold()
79 env->cache_control = 0; in sparc_cpu_reset_hold()
89 if (cpu_interrupts_enabled(env) && env->interrupt_index > 0) { in sparc_cpu_exec_interrupt()
90 int pil = env->interrupt_index & 0xf; in sparc_cpu_exec_interrupt()
91 int type = env->interrupt_index & 0xf0; in sparc_cpu_exec_interrupt()
94 cs->exception_index = env->interrupt_index; in sparc_cpu_exec_interrupt()
106 info->print_insn = print_insn_sparc; in cpu_sparc_disas_set_info()
108 info->mach = bfd_mach_sparc_v9b; in cpu_sparc_disas_set_info()
116 prop->driver = typename; in cpu_add_feat_as_prop()
117 prop->property = g_strdup(name); in cpu_add_feat_as_prop()
118 prop->value = g_strdup(val); in cpu_add_feat_as_prop()
122 /* Parse "+feature,-feature,feature=foo" CPU feature string */
151 } else if (featurestr[0] == '-') { in sparc_cpu_parse_features()
164 * Temporarily, only +feat/-feat will be supported in sparc_cpu_parse_features()
166 * minus-overrides-plus semantics and just follow in sparc_cpu_parse_features()
167 * the order options appear on the command-line. in sparc_cpu_parse_features()
169 * TODO: warn if user is relying on minus-override-plus semantics in sparc_cpu_parse_features()
170 * TODO: remove minus-override-plus semantics after in sparc_cpu_parse_features()
177 error_setg(errp, "Boolean properties in format %s=%s" in sparc_cpu_parse_features()
182 error_setg(errp, "Unsupported property format: %s", name); in sparc_cpu_parse_features()
188 for (l = plus_features; l; l = l->next) { in sparc_cpu_parse_features()
189 const char *name = l->data; in sparc_cpu_parse_features()
194 for (l = minus_features; l; l = l->next) { in sparc_cpu_parse_features()
195 const char *name = l->data; in sparc_cpu_parse_features()
204 env->mxccregs[7] = ((cpu + 8) & 0xf) << 24; in cpu_sparc_set_id()
211 .name = "Fujitsu-Sparc64",
220 .name = "Fujitsu-Sparc64-III",
229 .name = "Fujitsu-Sparc64-IV",
238 .name = "Fujitsu-Sparc64-V",
247 .name = "TI-UltraSparc-I",
256 .name = "TI-UltraSparc-II",
265 .name = "TI-UltraSparc-IIi",
274 .name = "TI-UltraSparc-IIe",
283 .name = "Sun-UltraSparc-III",
292 .name = "Sun-UltraSparc-III-Cu",
301 .name = "Sun-UltraSparc-IIIi",
310 .name = "Sun-UltraSparc-IV",
319 .name = "Sun-UltraSparc-IV-plus",
328 .name = "Sun-UltraSparc-IIIi-plus",
337 .name = "Sun-UltraSparc-T1",
348 .name = "Sun-UltraSparc-T2",
359 .name = "NEC-UltraSparc-I",
369 .name = "Fujitsu-MB86904",
382 .name = "Fujitsu-MB86907",
395 .name = "TI-MicroSparc-I",
408 .name = "TI-MicroSparc-II",
421 .name = "TI-MicroSparc-IIep",
434 .name = "TI-SuperSparc-40", /* STP1020NPGA */
447 .name = "TI-SuperSparc-50", /* STP1020PGA */
460 .name = "TI-SuperSparc-51",
474 .name = "TI-SuperSparc-60", /* STP1020APGA */
487 .name = "TI-SuperSparc-61",
501 .name = "TI-SuperSparc-II",
585 qemu_printf(" %-20s (IU " TARGET_FMT_lx in sparc_cpu_list()
592 print_features(CPU_DEFAULT_FEATURES & ~sparc_defs[i].features, "-"); in sparc_cpu_list()
596 qemu_printf("Default CPU feature flags (use '-' to remove): "); in sparc_cpu_list()
608 qemu_fprintf(f, "%c%c%c%c", cc & PSR_NEG ? 'N' : '-', in cpu_print_cc()
609 cc & PSR_ZERO ? 'Z' : '-', cc & PSR_OVF ? 'V' : '-', in cpu_print_cc()
610 cc & PSR_CARRY ? 'C' : '-'); in cpu_print_cc()
624 qemu_fprintf(f, "pc: " TARGET_FMT_lx " npc: " TARGET_FMT_lx "\n", env->pc, in sparc_cpu_dump_state()
625 env->npc); in sparc_cpu_dump_state()
629 qemu_fprintf(f, "%%g%d-%d:", i, i + REGS_PER_LINE - 1); in sparc_cpu_dump_state()
631 qemu_fprintf(f, " " TARGET_FMT_lx, env->gregs[i]); in sparc_cpu_dump_state()
632 if (i % REGS_PER_LINE == REGS_PER_LINE - 1) { in sparc_cpu_dump_state()
639 qemu_fprintf(f, "%%%c%d-%d: ", in sparc_cpu_dump_state()
641 i, i + REGS_PER_LINE - 1); in sparc_cpu_dump_state()
643 qemu_fprintf(f, TARGET_FMT_lx " ", env->regwptr[i + x * 8]); in sparc_cpu_dump_state()
644 if (i % REGS_PER_LINE == REGS_PER_LINE - 1) { in sparc_cpu_dump_state()
655 qemu_fprintf(f, " %016" PRIx64, env->fpr[i].ll); in sparc_cpu_dump_state()
663 qemu_fprintf(f, "pstate: %08x ccr: %02x (icc: ", env->pstate, in sparc_cpu_dump_state()
667 cpu_print_cc(f, cpu_get_ccr(env) << (PSR_CARRY_SHIFT - 4)); in sparc_cpu_dump_state()
668 qemu_fprintf(f, ") asi: %02x tl: %d pil: %x gl: %d\n", env->asi, env->tl, in sparc_cpu_dump_state()
669 env->psrpil, env->gl); in sparc_cpu_dump_state()
671 TARGET_FMT_lx "\n", env->tbr, env->hpstate, env->htba); in sparc_cpu_dump_state()
674 env->cansave, env->canrestore, env->otherwin, env->wstate, in sparc_cpu_dump_state()
675 env->cleanwin, env->nwindows - 1 - env->cwp); in sparc_cpu_dump_state()
677 cpu_get_fsr(env), env->y, env->fprs); in sparc_cpu_dump_state()
682 qemu_fprintf(f, " SPE: %c%c%c) wim: %08x\n", env->psrs ? 'S' : '-', in sparc_cpu_dump_state()
683 env->psrps ? 'P' : '-', env->psret ? 'E' : '-', in sparc_cpu_dump_state()
684 env->wim); in sparc_cpu_dump_state()
686 cpu_get_fsr(env), env->y); in sparc_cpu_dump_state()
695 cpu->env.pc = value; in sparc_cpu_set_pc()
696 cpu->env.npc = value + 4; in sparc_cpu_set_pc()
703 return cpu->env.pc; in sparc_cpu_get_pc()
712 cpu->env.pc = tb->pc; in sparc_cpu_synchronize_from_tb()
713 cpu->env.npc = tb->cs_base; in sparc_cpu_synchronize_from_tb()
718 return (cs->interrupt_request & CPU_INTERRUPT_HARD) && in sparc_cpu_has_work()
727 if ((env->mmuregs[0] & MMU_E) == 0) { /* MMU disabled */ in sparc_cpu_mmu_index()
730 return env->psrs; in sparc_cpu_mmu_index()
735 ? (env->lsu & IMMU_E) == 0 || (env->pstate & PS_RED) != 0 in sparc_cpu_mmu_index()
736 : (env->lsu & DMMU_E) == 0) { in sparc_cpu_mmu_index()
740 } else if (env->tl > 0) { in sparc_cpu_mmu_index()
756 * as type names shouldn't have spaces replace them with '-' in sparc_cpu_type_name()
759 *s = '-'; in sparc_cpu_type_name()
773 if (g_str_equal(typename, SPARC_CPU_TYPE_NAME("Sun-UltraSparc-IV+"))) { in sparc_cpu_class_by_name()
775 typename = g_strdup(SPARC_CPU_TYPE_NAME("Sun-UltraSparc-IV-plus")); in sparc_cpu_class_by_name()
776 } else if (g_str_equal(typename, SPARC_CPU_TYPE_NAME("Sun-UltraSparc-IIIi+"))) { in sparc_cpu_class_by_name()
778 typename = g_strdup(SPARC_CPU_TYPE_NAME("Sun-UltraSparc-IIIi-plus")); in sparc_cpu_class_by_name()
795 env->def.features |= CPU_FEATURE_FLOAT128; in sparc_cpu_realizefn()
798 env->version = env->def.iu_version; in sparc_cpu_realizefn()
799 env->nwindows = env->def.nwindows; in sparc_cpu_realizefn()
801 env->mmuregs[0] |= env->def.mmu_version; in sparc_cpu_realizefn()
803 env->mxccregs[7] |= env->def.mxcc_version; in sparc_cpu_realizefn()
805 env->mmu_version = env->def.mmu_version; in sparc_cpu_realizefn()
806 env->maxtl = env->def.maxtl; in sparc_cpu_realizefn()
807 env->version |= env->def.maxtl << 8; in sparc_cpu_realizefn()
808 env->version |= env->def.nwindows - 1; in sparc_cpu_realizefn()
816 set_float_2nan_prop_rule(float_2nan_prop_s_ba, &env->fp_status); in sparc_cpu_realizefn()
826 scc->parent_realize(dev, errp); in sparc_cpu_realizefn()
833 CPUSPARCState *env = &cpu->env; in sparc_cpu_initfn()
835 if (scc->cpu_def) { in sparc_cpu_initfn()
836 env->def = *scc->cpu_def; in sparc_cpu_initfn()
844 int64_t value = cpu->env.def.nwindows; in sparc_get_nwindows()
868 cpu->env.def.nwindows = value; in sparc_set_nwindows()
908 DEFINE_PROP_UNSIGNED("iu-version", SPARCCPU, env.def.iu_version, 0,
910 DEFINE_PROP_UINT32("fpu-version", SPARCCPU, env.def.fpu_version, 0),
911 DEFINE_PROP_UINT32("mmu-version", SPARCCPU, env.def.mmu_version, 0),
918 #include "hw/core/sysemu-cpu-ops.h"
927 #include "hw/core/tcg-cpu-ops.h"
953 &scc->parent_realize); in sparc_cpu_class_init()
957 &scc->parent_phases); in sparc_cpu_class_init()
959 cc->class_by_name = sparc_cpu_class_by_name; in sparc_cpu_class_init()
960 cc->parse_features = sparc_cpu_parse_features; in sparc_cpu_class_init()
961 cc->has_work = sparc_cpu_has_work; in sparc_cpu_class_init()
962 cc->mmu_index = sparc_cpu_mmu_index; in sparc_cpu_class_init()
963 cc->dump_state = sparc_cpu_dump_state; in sparc_cpu_class_init()
965 cc->memory_rw_debug = sparc_cpu_memory_rw_debug; in sparc_cpu_class_init()
967 cc->set_pc = sparc_cpu_set_pc; in sparc_cpu_class_init()
968 cc->get_pc = sparc_cpu_get_pc; in sparc_cpu_class_init()
969 cc->gdb_read_register = sparc_cpu_gdb_read_register; in sparc_cpu_class_init()
970 cc->gdb_write_register = sparc_cpu_gdb_write_register; in sparc_cpu_class_init()
972 cc->sysemu_ops = &sparc_sysemu_ops; in sparc_cpu_class_init()
974 cc->disas_set_info = cpu_sparc_disas_set_info; in sparc_cpu_class_init()
977 cc->gdb_num_core_regs = 86; in sparc_cpu_class_init()
979 cc->gdb_num_core_regs = 72; in sparc_cpu_class_init()
981 cc->tcg_ops = &sparc_tcg_ops; in sparc_cpu_class_init()
998 scc->cpu_def = data; in sparc_cpu_cpudef_class_init()
1003 char *typename = sparc_cpu_type_name(def->name); in sparc_register_cpudef_type()