blob: 82c49aa604799cc5b6554416b6e7a99bf98f0ca6 [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.
type SmcParameters = struct {
func_id uint32;
arg1 uint64;
arg2 uint64;
arg3 uint64;
arg4 uint64;
arg5 uint64;
arg6 uint64;
client_id uint16;
secure_os_id uint16;
};
type SmcResult = struct {
arg0 uint64;
arg1 uint64;
arg2 uint64;
arg3 uint64;
arg6 uint64; // at least one implementation uses it as a way to return session_id.
};
@transport("Syscall")
protocol smc {
// TODO(fxbug.dev/32803): handle No rights required?
/// Make Secure Monitor Call (SMC) from user space.
smc_call(resource struct {
handle handle:RESOURCE;
parameters SmcParameters;
}) -> (struct {
status status;
out_smc_result SmcResult;
});
};