blob: a504a51e2b241e42187e13c860c2f379bdb2326a [file] [log] [blame]
Soby Mathewb4c6df42022-11-09 11:13:29 +00001/*
2 * SPDX-License-Identifier: BSD-3-Clause
3 * SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
4 */
5
6#ifndef RUN_H
7#define RUN_H
8
AlexeiFedorovf72ab302023-04-27 16:45:04 +01009struct granule;
AlexeiFedorovec35c542023-04-27 17:52:02 +010010struct rec;
AlexeiFedorovf72ab302023-04-27 16:45:04 +010011struct rec_aux_data;
12
13void init_rec_aux_data(struct rec_aux_data *aux_data, void *rec_aux,
14 unsigned long num_aux);
15void *map_rec_aux(struct granule *rec_aux_pages[], unsigned long num_aux);
16void unmap_rec_aux(void *rec_aux, unsigned long num_aux);
Arunachalam Ganapathyf6491212023-02-23 16:04:34 +000017
Soby Mathewb4c6df42022-11-09 11:13:29 +000018/*
19 * Function to enter Realm with `regs` pointing to GP Regs to be
20 * restored/saved when entering/exiting the Realm. This function
21 * returns with the Realm exception code which is populated by
22 * Realm_exit() on aarch64.
23 */
24int run_realm(unsigned long *regs);
25
Arunachalam Ganapathyf6491212023-02-23 16:04:34 +000026/*
27 * Configure CPTR_EL2 register to not trap FPU or SVE access for Realm and
28 * restore the saved SIMD state from memory to registers.
29 */
30void rec_simd_enable_restore(struct rec *rec);
31
Arunachalam Ganapathy51119932023-03-23 12:32:49 +000032/*
33 * Save the current SIMD state from registers to memory and configure CPTR_EL2
34 * register to trap FPU or SVE access for Realm.
35 */
36void rec_simd_save_disable(struct rec *rec);
37
Soby Mathewb4c6df42022-11-09 11:13:29 +000038#endif /* RUN_H */