blob: 3b9e4bbff1d3b99cabf64b39b9a5df46b1fbecc6 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library zx;
// TODO(scottmg): ARM_SMC_xyz.
struct SmcParameters {
uint32 func_id;
uint64 arg1;
uint64 arg2;
uint64 arg3;
uint64 arg4;
uint64 arg5;
uint64 arg6;
uint16 client_id;
uint16 secure_os_id;
struct SmcResult {
uint64 arg0;
uint64 arg1;
uint64 arg2;
uint64 arg3;
uint64 arg6; // at least one implementation uses it as a way to return session_id.
[Transport = "Syscall"]
protocol smc {
// TODO(ZX-2967): handle No rights required?
// TODO(scottmg): No handle type?
/// Make Secure Monitor Call (SMC) from user space.
smc_call(handle handle, SmcParameters parameters) -> (status status, SmcResult out_smc_result);