blob: 4cf77276e1bfb8ee843fec417017cf7f8f486f95 [file] [log] [blame]
Tejas Patel354fe572018-12-14 00:55:37 -08001/*
Venkatesh Yadav Abbarapuc8bbedc2021-04-19 07:49:57 -06002 * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
Jay Buddhabhatti26e138a2022-12-21 23:03:35 -08003 * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
Tejas Patel354fe572018-12-14 00:55:37 -08004 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef PM_SVC_MAIN_H
9#define PM_SVC_MAIN_H
10
11#include <pm_common.h>
12
Jay Buddhabhatti10498a22023-07-31 00:11:00 -070013/******************************************************************************/
14/**
15 * SECURE_REDUNDANT_CALL() - Adds redundancy to the function call. This is to
16 * avoid glitches which can skip a function call
17 * and cause altering of the code flow in security
18 * critical functions.
19 * @status: Variable which holds the return value of function executed
20 * @status_tmp: Variable which holds the return value of redundant function
21 * call executed
22 * @function: Function to be executed
23 *
24 * Return: None
25 *
26 ******************************************************************************/
27#define SECURE_REDUNDANT_CALL(status, status_tmp, function, ...) \
28 { \
29 status = function(__VA_ARGS__); \
30 status_tmp = function(__VA_ARGS__); \
31 }
32
Venkatesh Yadav Abbarapubde87592022-05-24 11:11:12 +053033int32_t pm_setup(void);
Tejas Patel59c608a2019-01-09 04:10:29 -080034uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3,
Venkatesh Yadav Abbarapud3c0eb42022-05-24 14:02:52 +053035 uint64_t x4, const void *cookie, void *handle,
Tejas Patel59c608a2019-01-09 04:10:29 -080036 uint64_t flags);
Tejas Patel354fe572018-12-14 00:55:37 -080037
Venkatesh Yadav Abbarapubde87592022-05-24 11:11:12 +053038int32_t pm_register_sgi(uint32_t sgi_num, uint32_t reset);
Tejas Patel354fe572018-12-14 00:55:37 -080039#endif /* PM_SVC_MAIN_H */