Loading...
Searching...
No Matches
arm_smccc.h File Reference

ARM secure monitor call functions. More...

`#include <l4/sys/types.h>`
`#include <l4/sys/utcb.h>`
`#include <l4/sys/ipc.h>`
Include dependency graph for arm_smccc.h:

Go to the source code of this file.

## Functions

l4_msgtag_t | l4_arm_smccc_call (l4_cap_idx_t pfc, l4_umword_t func, l4_umword_t in0, l4_umword_t in1, l4_umword_t in2, l4_umword_t in3, l4_umword_t in4, l4_umword_t in5, l4_umword_t *out0, l4_umword_t *out1, l4_umword_t *out2, l4_umword_t *out3, l4_umword_t client_id) L4_NOTHROW
| C interface for calling the ARM secure monitor, see L4::Arm_smccc::call() for the C++ interface.

## Detailed Description

ARM secure monitor call functions.

Definition in file arm_smccc.h.

## Function Documentation

## l4_arm_smccc_call()

l4_msgtag_t l4_arm_smccc_call | ( | l4_cap_idx_t | pfc,
|  | l4_umword_t | func,
|  | l4_umword_t | in0,
|  | l4_umword_t | in1,
|  | l4_umword_t | in2,
|  | l4_umword_t | in3,
|  | l4_umword_t | in4,
|  | l4_umword_t | in5,
|  | l4_umword_t * | out0,
|  | l4_umword_t * | out1,
|  | l4_umword_t * | out2,
|  | l4_umword_t * | out3,
|  | l4_umword_t | client_id )

inline

C interface for calling the ARM secure monitor, see L4::Arm_smccc::call() for the C++ interface.

Parameters

  | pfc | Capability of the SMC kernel object. The input parameters consist of a function identifier, 6 arguments and a client id. Results are returned in 4 output parameters.

  func

  Function identifier.
  - Bit 31 has to be set: This marks the call as Fast Call. Yielding Calls (bit 31 unset) are rejected by the kernel.
  - Bit 30 defines the calling convention:
  - Bit 30 == 1: 64-bit calling convention.
  - Bit 30 == 0: 32-bit calling convention.
  - Bits 24..29 determine the service call ID. The permitted IDs are set in the kernel configuration. By default only service IDs >= 0x30000000 (Trusted Application Calls and Trusted OS Calls) are allowed.

  [in] | in0 | First input parameter.
  [in] | in1 | Second input parameter.
  [in] | in2 | Third input parameter.
  [in] | in3 | Fourth input parameter.
  [in] | in4 | Fifth input parameter.
  [in] | in5 | Sixth input parameter.
  [out] | out0 | First output parameter.
  [out] | out1 | Second output parameter.
  [out] | out2 | Third output parameter.
  [out] | out3 | Fourth output parameter.
  [in] | client_id | Client ID. According to the specification, this value might be ignored by certain functions.

Return values

  -L4_ENOSYS | Either bit 31 of the function call not set or service ID outside the range permitted by kernel configuration.
  -L4_EINVAL | Invalid number of parameters.
  <0 | Other L4 error.
  0 | Success.

Definition at line 42 of file arm_smccc.h.

References L4_NOTHROW, and l4_utcb().

Here is the call graph for this function: