summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Library/ArmMonitorLib/ArmMonitorLib.c
blob: 741f5c615744dc5cc5381ff3848078f93858dd2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/** @file
  Arm Monitor Library.

  Copyright (c) 2022, Arm Limited. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#include <Library/ArmHvcLib.h>
#include <Library/ArmMonitorLib.h>
#include <Library/ArmSmcLib.h>
#include <Library/PcdLib.h>

/** Monitor call.

  An HyperVisor Call (HVC) or System Monitor Call (SMC) will be issued
  depending on the default conduit. PcdMonitorConduitHvc determines the type
  of the call: if true, do an HVC.

  @param [in,out]  Args    Arguments for the HVC/SMC.
**/
VOID
EFIAPI
ArmMonitorCall (
  IN OUT ARM_MONITOR_ARGS  *Args
  )
{
  if (FeaturePcdGet (PcdMonitorConduitHvc)) {
    ArmCallHvc ((ARM_HVC_ARGS *)Args);
  } else {
    ArmCallSmc ((ARM_SMC_ARGS *)Args);
  }
}