Lines Matching +full:psci +full:- +full:1

2  * Copyright (C) 2014 - Linaro
21 #include "exec/helper-proto.h"
22 #include "kvm-consts.h"
23 #include "qemu/main-loop.h"
26 #include "arm-powerctl.h"
32 * Return true if the exception type matches the configured PSCI conduit. in arm_is_psci_call()
34 * whether we should treat it as a PSCI call or with the architecturally in arm_is_psci_call()
41 if (cpu->psci_conduit != QEMU_PSCI_CONDUIT_HVC) { in arm_is_psci_call()
46 if (cpu->psci_conduit != QEMU_PSCI_CONDUIT_SMC) { in arm_is_psci_call()
61 * Coordination Interface (PSCI) calls (as described in ARM DEN 0022D.b), in arm_handle_psci_call()
67 CPUARMState *env = &cpu->env; in arm_handle_psci_call()
76 * All PSCI functions take explicit 32-bit or native int sized in arm_handle_psci_call()
77 * arguments so we can simply zero-extend all arguments regardless in arm_handle_psci_call()
80 param[i] = is_a64(env) ? env->xregs[i] : env->regs[i]; in arm_handle_psci_call()
100 mpidr = param[1]; in arm_handle_psci_call()
112 ret = target_cpu->power_state; in arm_handle_psci_call()
121 /* QEMU reset and shutdown are async requests, but PSCI in arm_handle_psci_call()
134 /* The PSCI spec mandates that newly brought up CPUs start in arm_handle_psci_call()
136 * on the calling CPU. Since the QEMU PSCI implementation is in arm_handle_psci_call()
145 int target_el = arm_feature(env, ARM_FEATURE_EL2) ? 2 : 1; in arm_handle_psci_call()
148 mpidr = param[1]; in arm_handle_psci_call()
162 if (param[1] & 0xfffe0000) { in arm_handle_psci_call()
168 env->xregs[0] = 0; in arm_handle_psci_call()
170 env->regs[0] = 0; in arm_handle_psci_call()
175 switch (param[1]) { in arm_handle_psci_call()
191 if (!(param[1] & QEMU_PSCI_0_2_64BIT) || is_a64(env)) { in arm_handle_psci_call()
212 env->xregs[0] = ret; in arm_handle_psci_call()
214 env->regs[0] = ret; in arm_handle_psci_call()