Mingyang Sun | deae45d | 2021-09-06 15:31:07 +0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2021, Arm Limited. All rights reserved. |
| 3 | * |
| 4 | * SPDX-License-Identifier: BSD-3-Clause |
| 5 | * |
| 6 | */ |
| 7 | |
| 8 | #ifndef __BACKEND_H__ |
| 9 | #define __BACKEND_H__ |
| 10 | |
| 11 | #include <stdint.h> |
Mingyang Sun | deae45d | 2021-09-06 15:31:07 +0800 | [diff] [blame] | 12 | #include "spm_ipc.h" |
Ken Liu | e07c3b7 | 2021-10-14 16:19:13 +0800 | [diff] [blame^] | 13 | #include "tfm_arch.h" |
Mingyang Sun | deae45d | 2021-09-06 15:31:07 +0800 | [diff] [blame] | 14 | #include "load/spm_load_api.h" |
Ken Liu | e07c3b7 | 2021-10-14 16:19:13 +0800 | [diff] [blame^] | 15 | #include "psa/error.h" |
Mingyang Sun | deae45d | 2021-09-06 15:31:07 +0800 | [diff] [blame] | 16 | |
| 17 | /* BASIC TYPE DEFINITIONS */ |
| 18 | |
| 19 | struct backend_ops_t { |
| 20 | /* |
| 21 | * Runtime model-specific component initialization routine. This |
| 22 | * is an `assuredly` function, would panic if any error occurred. |
| 23 | */ |
| 24 | void (*comp_init_assuredly)(struct partition_t *p_pt, |
| 25 | uint32_t service_setting); |
| 26 | |
| 27 | /* |
| 28 | * Runtime model-specific kick-off method for the whole system. |
| 29 | * Returns a hardware-specific control value, which is transparent |
| 30 | * to SPM common logic. |
| 31 | */ |
| 32 | uint32_t (*system_run)(void); |
| 33 | |
| 34 | /* Runtime model-specific message handling mechanism. */ |
| 35 | psa_status_t (*messaging)(struct service_t *p_serv, |
| 36 | struct tfm_msg_body_t *p_msg); |
| 37 | |
| 38 | }; |
| 39 | |
| 40 | /* RUNTIME MODEL BACKENDS DECLARATION */ |
| 41 | |
| 42 | /* IPC backend */ |
| 43 | extern const struct backend_ops_t backend_instance; |
| 44 | |
| 45 | /* The component list, and a MACRO indicate this is not a common global. */ |
| 46 | extern struct partition_head_t partition_listhead; |
| 47 | #define PARTITION_LIST_ADDR (&partition_listhead) |
| 48 | |
Ken Liu | e07c3b7 | 2021-10-14 16:19:13 +0800 | [diff] [blame^] | 49 | /* TODO: Put this into NS Agent related service when available. */ |
| 50 | extern struct context_ctrl_t *p_spm_thread_context; |
| 51 | #define SPM_THREAD_CONTEXT p_spm_thread_context |
| 52 | |
Mingyang Sun | deae45d | 2021-09-06 15:31:07 +0800 | [diff] [blame] | 53 | #endif /* __BACKEND_H__ */ |