Loading...
Searching...
No Matches
L4::Arm_smccc Class Reference

Wrapper for function calls that follow the ARM SMC/HVC calling convention. More...

`#include <arm_smccc>`

Collaboration diagram for L4::Arm_smccc:

## Public Member Functions

l4_msgtag_t | call (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)
| ARM SMC/HVC function call.

## Detailed Description

Wrapper for function calls that follow the ARM SMC/HVC calling convention.

See l4_arm_smccc_call() for the corresponding C interface.

Definition at line 23 of file arm_smccc.

## Member Function Documentation

## call()

l4_msgtag_t L4::Arm_smccc::call | ( | 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 )

ARM SMC/HVC function call.

The input parameters consist of a function identifier, 6 arguments and a client id. Results are returned in 4 output parameters.

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.

The documentation for this class was generated from the following file:

- l4/sys/arm_smccc