| /* |
| * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved. |
| * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| #ifndef PM_SVC_MAIN_H |
| #define PM_SVC_MAIN_H |
| |
| #include <pm_common.h> |
| |
| extern bool pwrdwn_req_received; |
| |
| /******************************************************************************/ |
| /** |
| * SECURE_REDUNDANT_CALL() - Adds redundancy to the function call. This is to |
| * avoid glitches which can skip a function call |
| * and cause altering of the code flow in security |
| * critical functions. |
| * @status: Variable which holds the return value of function executed |
| * @status_tmp: Variable which holds the return value of redundant function |
| * call executed |
| * @function: Function to be executed |
| * |
| * Return: None |
| * |
| ******************************************************************************/ |
| #define SECURE_REDUNDANT_CALL(status, status_tmp, function, ...) \ |
| { \ |
| status = function(__VA_ARGS__); \ |
| status_tmp = function(__VA_ARGS__); \ |
| } |
| |
| void request_cpu_pwrdwn(void); |
| int32_t pm_setup(void); |
| uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3, |
| uint64_t x4, const void *cookie, void *handle, |
| uint64_t flags); |
| |
| int32_t pm_register_sgi(uint32_t sgi_num, uint32_t reset); |
| #endif /* PM_SVC_MAIN_H */ |