// 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(fxbug.dev/32803): handle No rights required?
    /// Make Secure Monitor Call (SMC) from user space.
    smc_call(handle:RESOURCE handle, SmcParameters parameters)
        -> (status status, SmcResult out_smc_result);
};
