blob: b039311252dc33c98d8e891110b213590c15699e [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.
// TODO(fxb/39732): This should be read as "library zx".
library zz;
// 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);