| // Copyright 2018 The Fuchsia Authors |
| // |
| // Use of this source code is governed by a MIT-style |
| // license that can be found in the LICENSE file or at |
| // https://opensource.org/licenses/MIT |
| |
| #include "ddk_priv.h" |
| |
| #include <arch/arm64/smccc.h> |
| |
| zx_status_t arch_smc_call(const zx_smc_parameters_t* params, zx_smc_result_t* result) { |
| auto arm_result = arm_smccc_smc(params->func_id, |
| params->arg1, params->arg2, params->arg3, |
| params->arg4, params->arg5, params->arg6, |
| static_cast<uint32_t>(params->secure_os_id) << 16 | |
| static_cast<uint32_t>(params->client_id)); |
| |
| result->arg0 = arm_result.x0; |
| result->arg1 = arm_result.x1; |
| result->arg2 = arm_result.x2; |
| result->arg3 = arm_result.x3; |
| |
| return ZX_OK; |
| } |