Alexei Fedorov | 719714f | 2019-10-03 10:57:53 +0100 | [diff] [blame] | 1 | /* |
Shruti Gupta | 9d0cfe8 | 2023-04-17 10:57:26 +0100 | [diff] [blame] | 2 | * Copyright (c) 2019-2023, Arm Limited. All rights reserved. |
Alexei Fedorov | 719714f | 2019-10-03 10:57:53 +0100 | [diff] [blame] | 3 | * |
| 4 | * SPDX-License-Identifier: BSD-3-Clause |
| 5 | */ |
| 6 | |
| 7 | #ifndef PAUTH_H |
| 8 | #define PAUTH_H |
| 9 | |
Shruti Gupta | 9d0cfe8 | 2023-04-17 10:57:26 +0100 | [diff] [blame] | 10 | #include <stdbool.h> |
Alexei Fedorov | 719714f | 2019-10-03 10:57:53 +0100 | [diff] [blame] | 11 | #include <stdint.h> |
| 12 | |
| 13 | #ifdef __aarch64__ |
Shruti Gupta | 21a30ed | 2024-01-13 23:07:43 +0000 | [diff] [blame^] | 14 | /* Number of ARMv8.3-PAuth keys */ |
| 15 | #define NUM_KEYS 5U |
| 16 | |
| 17 | static const char * const key_name[] = {"IA", "IB", "DA", "DB", "GA"}; |
| 18 | |
Alexei Fedorov | 719714f | 2019-10-03 10:57:53 +0100 | [diff] [blame] | 19 | /* Initialize 128-bit ARMv8.3-PAuth key */ |
| 20 | uint128_t init_apkey(void); |
| 21 | |
| 22 | /* Program APIAKey_EL1 key and enable ARMv8.3-PAuth */ |
| 23 | void pauth_init_enable(void); |
Alexei Fedorov | 52fd733 | 2020-01-08 14:02:18 +0000 | [diff] [blame] | 24 | |
| 25 | /* Disable ARMv8.3-PAuth */ |
| 26 | void pauth_disable(void); |
Shruti Gupta | 9d0cfe8 | 2023-04-17 10:57:26 +0100 | [diff] [blame] | 27 | |
| 28 | /* |
| 29 | * Fill Pauth Keys and template with random values if keys werenot initialized earlier, |
| 30 | * Else Copy PAuth key registers to template. |
| 31 | */ |
Shruti Gupta | 21a30ed | 2024-01-13 23:07:43 +0000 | [diff] [blame^] | 32 | void pauth_test_lib_fill_regs_and_template(uint128_t *pauth_keys_arr); |
Shruti Gupta | 9d0cfe8 | 2023-04-17 10:57:26 +0100 | [diff] [blame] | 33 | |
| 34 | /* Read and Compare PAuth registers with provided template values. */ |
Shruti Gupta | 21a30ed | 2024-01-13 23:07:43 +0000 | [diff] [blame^] | 35 | bool pauth_test_lib_compare_template(uint128_t *pauth_keys_before, uint128_t *pauth_keys_after); |
Shruti Gupta | 9d0cfe8 | 2023-04-17 10:57:26 +0100 | [diff] [blame] | 36 | |
| 37 | /* Read and Store PAuth registers in template. */ |
Shruti Gupta | 21a30ed | 2024-01-13 23:07:43 +0000 | [diff] [blame^] | 38 | void pauth_test_lib_read_keys(uint128_t *pauth_keys_arr); |
Shruti Gupta | 9d0cfe8 | 2023-04-17 10:57:26 +0100 | [diff] [blame] | 39 | |
| 40 | /* Test PAuth instructions. */ |
| 41 | void pauth_test_lib_test_intrs(void); |
| 42 | |
Alexei Fedorov | 719714f | 2019-10-03 10:57:53 +0100 | [diff] [blame] | 43 | #endif /* __aarch64__ */ |
| 44 | |
| 45 | #endif /* PAUTH_H */ |