Lines Matching +full:s390x +full:- +full:linux +full:- +full:user

6  * Copyright (c) 2012 SUSE LINUX Products GmbH
26 #include "s390x-internal.h"
31 #include "qapi/qapi-types-machine.h"
33 #include "hw/qdev-properties.h"
34 #include "hw/qdev-properties-system.h"
36 #include "fpu/softfloat-helpers.h"
42 #include "hw/s390x/cpu-topology.h"
70 uint64_t old_mask = env->psw.mask; in s390_cpu_set_psw()
73 env->psw.addr = addr; in s390_cpu_set_psw()
74 env->psw.mask = mask; in s390_cpu_set_psw()
80 env->cc_op = (mask >> 44) & 3; in s390_cpu_set_psw()
84 env->int_pgm_ilen = 0; in s390_cpu_set_psw()
101 uint64_t r = env->psw.mask; in s390_cpu_get_psw_mask()
104 uint64_t cc = calc_cc(env, env->cc_op, env->cc_src, in s390_cpu_get_psw_mask()
105 env->cc_dst, env->cc_vr); in s390_cpu_get_psw_mask()
119 cpu->env.psw.addr = value; in s390_cpu_set_pc()
126 return cpu->env.psw.addr; in s390_cpu_get_pc()
133 value->u.s390x.cpu_state = s390_cpu->env.cpu_state; in s390_query_cpu_fast()
136 value->u.s390x.has_dedicated = true; in s390_query_cpu_fast()
137 value->u.s390x.dedicated = s390_cpu->env.dedicated; in s390_query_cpu_fast()
138 value->u.s390x.has_entitlement = true; in s390_query_cpu_fast()
139 value->u.s390x.entitlement = s390_cpu->env.entitlement; in s390_query_cpu_fast()
149 CPUS390XState *env = &cpu->env; in s390_cpu_reset_hold()
151 if (scc->parent_phases.hold) { in s390_cpu_reset_hold()
152 scc->parent_phases.hold(obj, type); in s390_cpu_reset_hold()
154 cpu->env.sigp_order = 0; in s390_cpu_reset_hold()
164 memset(&env->start_initial_reset_fields, 0, in s390_cpu_reset_hold()
165 offsetof(CPUS390XState, start_normal_reset_fields) - in s390_cpu_reset_hold()
168 /* architectured initial value for Breaking-Event-Address register */ in s390_cpu_reset_hold()
169 env->gbea = 1; in s390_cpu_reset_hold()
172 env->cregs[0] = CR0_RESET; in s390_cpu_reset_hold()
173 env->cregs[14] = CR14_RESET; in s390_cpu_reset_hold()
176 /* user mode should always be allowed to use the full FPU */ in s390_cpu_reset_hold()
177 env->cregs[0] |= CR0_AFP; in s390_cpu_reset_hold()
179 env->cregs[0] |= CR0_VECTOR; in s390_cpu_reset_hold()
185 &env->fpu_status); in s390_cpu_reset_hold()
186 set_float_2nan_prop_rule(float_2nan_prop_s_ab, &env->fpu_status); in s390_cpu_reset_hold()
187 set_float_3nan_prop_rule(float_3nan_prop_s_abc, &env->fpu_status); in s390_cpu_reset_hold()
189 &env->fpu_status); in s390_cpu_reset_hold()
191 set_float_default_nan_pattern(0b01000000, &env->fpu_status); in s390_cpu_reset_hold()
194 env->psw.mask &= ~PSW_MASK_RI; in s390_cpu_reset_hold()
195 memset(&env->start_normal_reset_fields, 0, in s390_cpu_reset_hold()
196 offsetof(CPUS390XState, end_reset_fields) - in s390_cpu_reset_hold()
199 env->pfault_token = -1UL; in s390_cpu_reset_hold()
200 env->bpbc = false; in s390_cpu_reset_hold()
222 info->mach = bfd_mach_s390_64; in s390_cpu_disas_set_info()
223 info->cap_arch = CS_ARCH_SYSZ; in s390_cpu_disas_set_info()
224 info->endian = BFD_ENDIAN_BIG; in s390_cpu_disas_set_info()
225 info->cap_insn_unit = 2; in s390_cpu_disas_set_info()
226 info->cap_insn_split = 6; in s390_cpu_disas_set_info()
260 * CPU thread. CPU hotplug under single-threaded TCG will not work with in s390_cpu_realizefn()
270 scc->parent_realize(dev, &err); in s390_cpu_realizefn()
279 cs->exception_index = EXCP_HLT; in s390_cpu_initfn()
288 return "s390:64-bit"; in s390_gdb_arch_name()
293 DEFINE_PROP_UINT32("core-id", S390CPU, env.core_id, 0),
294 DEFINE_PROP_INT32("socket-id", S390CPU, env.socket_id, -1),
295 DEFINE_PROP_INT32("book-id", S390CPU, env.book_id, -1),
296 DEFINE_PROP_INT32("drawer-id", S390CPU, env.drawer_id, -1),
304 #include "accel/tcg/cpu-ops.h"
317 if (env->psw.addr & 1) { in s390x_get_tb_cpu_state()
322 env->int_pgm_ilen = 2; /* see s390_cpu_tlb_fill() */ in s390x_get_tb_cpu_state()
326 flags = (env->psw.mask >> FLAG_MASK_PSW_SHIFT) & FLAG_MASK_PSW; in s390x_get_tb_cpu_state()
327 if (env->psw.mask & PSW_MASK_PER) { in s390x_get_tb_cpu_state()
328 flags |= env->cregs[9] & (FLAG_MASK_PER_BRANCH | in s390x_get_tb_cpu_state()
331 if ((env->cregs[9] & PER_CR9_EVENT_STORE) && in s390x_get_tb_cpu_state()
332 (env->cregs[9] & PER_CR9_EVENT_STORE_REAL)) { in s390x_get_tb_cpu_state()
336 if (env->cregs[0] & CR0_AFP) { in s390x_get_tb_cpu_state()
339 if (env->cregs[0] & CR0_VECTOR) { in s390x_get_tb_cpu_state()
344 .pc = env->psw.addr, in s390x_get_tb_cpu_state()
346 .cs_base = env->ex_value, in s390x_get_tb_cpu_state()
363 * store-after-load re-ordering.
397 &scc->parent_realize); in s390_cpu_class_init()
398 dc->user_creatable = true; in s390_cpu_class_init()
401 &scc->parent_phases); in s390_cpu_class_init()
403 cc->class_by_name = s390_cpu_class_by_name; in s390_cpu_class_init()
404 cc->list_cpus = s390_cpu_list; in s390_cpu_class_init()
405 cc->dump_state = s390_cpu_dump_state; in s390_cpu_class_init()
406 cc->query_cpu_fast = s390_query_cpu_fast; in s390_cpu_class_init()
407 cc->set_pc = s390_cpu_set_pc; in s390_cpu_class_init()
408 cc->get_pc = s390_cpu_get_pc; in s390_cpu_class_init()
409 cc->gdb_read_register = s390_cpu_gdb_read_register; in s390_cpu_class_init()
410 cc->gdb_write_register = s390_cpu_gdb_write_register; in s390_cpu_class_init()
415 cc->disas_set_info = s390_cpu_disas_set_info; in s390_cpu_class_init()
416 cc->gdb_core_xml_file = "s390x-core64.xml"; in s390_cpu_class_init()
417 cc->gdb_arch_name = s390_gdb_arch_name; in s390_cpu_class_init()
422 cc->tcg_ops = &s390_tcg_ops; in s390_cpu_class_init()