| // 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); |
| }; |