summaryrefslogtreecommitdiff
path: root/include/services/lfa_holding_pen.h
blob: 00473e898c6d92ec21816b3e8a2169fd0587d16e (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
/*
 * Copyright (c) 2025, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#ifndef LFA_HOLDING_PEN_H
#define LFA_HOLDING_PEN_H

#include <stdbool.h>
#include <stdint.h>

#include <services/lfa_svc.h>

bool lfa_holding_start(void);
enum lfa_retc lfa_holding_wait(void);
void lfa_holding_release(enum lfa_retc status);

typedef uint64_t holding_lock_t;
extern holding_lock_t lfa_r_holding_lock_var;
extern uint64_t lfa_r_ep_addresses[PLATFORM_CORE_COUNT];
extern uint64_t lfa_r_context_ids[PLATFORM_CORE_COUNT];

void lfa_load_relocatable(void);
void lfa_r_holding_lock(holding_lock_t *lock);
void lfa_r_holding_unlock(holding_lock_t *lock);
void lfa_r_holding_wait(holding_lock_t *lock);
void lfa_r_holding_wait_warm_reset(holding_lock_t *lock);

#endif