blob: 14a40201f4a0e1fcb798b5526f384717aff1e31e [file] [log] [blame]
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +02001/*
2 * Copyright (c) 2019, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8/*********** WARNING: This is an auto-generated file. Do not edit! ***********/
9
10#ifndef __TFM_SPM_DB_INC__
11#define __TFM_SPM_DB_INC__
12
13#include "spm_api.h"
14
15/**************************************************************************/
16/** IRQ count per partition */
17/**************************************************************************/
18#define TFM_PARTITION_TFM_SP_STORAGE_IRQ_COUNT 0
19
20#ifdef TFM_PARTITION_AUDIT_LOG
21#define TFM_PARTITION_TFM_SP_AUDIT_LOG_IRQ_COUNT 0
22#endif /* TFM_PARTITION_AUDIT_LOG */
23
24#define TFM_PARTITION_TFM_SP_CRYPTO_IRQ_COUNT 0
25
26#ifdef TFM_PARTITION_PLATFORM
27#define TFM_PARTITION_TFM_SP_PLATFORM_IRQ_COUNT 0
28#endif /* TFM_PARTITION_PLATFORM */
29
30#define TFM_PARTITION_TFM_SP_INITIAL_ATTESTATION_IRQ_COUNT 0
31
32#ifdef TFM_PARTITION_TEST_CORE
33#define TFM_PARTITION_TFM_SP_CORE_TEST_IRQ_COUNT 0
34#endif /* TFM_PARTITION_TEST_CORE */
35
36#ifdef TFM_PARTITION_TEST_CORE
37#define TFM_PARTITION_TFM_SP_CORE_TEST_2_IRQ_COUNT 0
38#endif /* TFM_PARTITION_TEST_CORE */
39
40#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
41#define TFM_PARTITION_TFM_SP_SECURE_TEST_PARTITION_IRQ_COUNT 0
42#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
43
44#ifdef TFM_PARTITION_TEST_CORE_IPC
45#define TFM_PARTITION_TFM_SP_IPC_SERVICE_TEST_IRQ_COUNT 0
46#endif /* TFM_PARTITION_TEST_CORE_IPC */
47
48#ifdef TFM_PARTITION_TEST_CORE_IPC
49#define TFM_PARTITION_TFM_SP_IPC_CLIENT_TEST_IRQ_COUNT 0
50#endif /* TFM_PARTITION_TEST_CORE_IPC */
51
David Hu33f2fd22019-08-16 15:32:39 +080052#ifdef TFM_ENABLE_IRQ_TEST
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +020053#define TFM_PARTITION_TFM_IRQ_TEST_1_IRQ_COUNT 1
David Hu33f2fd22019-08-16 15:32:39 +080054#endif /* TFM_ENABLE_IRQ_TEST */
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +020055
56/**************************************************************************/
57/** Declarations of partition init functions */
58/**************************************************************************/
Summer Qin423dbef2019-08-22 15:59:35 +080059#ifdef TFM_PSA_API
60extern psa_status_t tfm_nspm_thread_entry(void);
61#endif
62
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +020063extern int32_t tfm_sst_req_mngr_init(void);
64
65#ifdef TFM_PARTITION_AUDIT_LOG
66extern int32_t audit_core_init(void);
67#endif /* TFM_PARTITION_AUDIT_LOG */
68
69extern int32_t tfm_crypto_init(void);
70
71#ifdef TFM_PARTITION_PLATFORM
72extern int32_t platform_sp_init(void);
73#endif /* TFM_PARTITION_PLATFORM */
74
75extern int32_t attest_partition_init(void);
76
77#ifdef TFM_PARTITION_TEST_CORE
78extern int32_t core_test_init(void);
79#endif /* TFM_PARTITION_TEST_CORE */
80
81#ifdef TFM_PARTITION_TEST_CORE
82extern int32_t core_test_2_init(void);
83#endif /* TFM_PARTITION_TEST_CORE */
84
85#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
86extern int32_t tfm_secure_client_service_init(void);
87#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
88
89#ifdef TFM_PARTITION_TEST_CORE_IPC
90extern int32_t ipc_service_test_main(void);
91#endif /* TFM_PARTITION_TEST_CORE_IPC */
92
93#ifdef TFM_PARTITION_TEST_CORE_IPC
94extern int32_t ipc_client_test_main(void);
95#endif /* TFM_PARTITION_TEST_CORE_IPC */
96
David Hu33f2fd22019-08-16 15:32:39 +080097#ifdef TFM_ENABLE_IRQ_TEST
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +020098extern int32_t tfm_irq_test_1_init(void);
David Hu33f2fd22019-08-16 15:32:39 +080099#endif /* TFM_ENABLE_IRQ_TEST */
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200100
101/**************************************************************************/
102/** Memory region declarations */
103/**************************************************************************/
Summer Qin423dbef2019-08-22 15:59:35 +0800104#ifdef TFM_PSA_API
105REGION_DECLARE(Image$$, ARM_LIB_STACK, $$ZI$$Base);
106REGION_DECLARE(Image$$, ARM_LIB_STACK, $$ZI$$Limit);
107
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200108REGION_DECLARE(Image$$, TFM_SP_STORAGE, $$Base);
109REGION_DECLARE(Image$$, TFM_SP_STORAGE, $$Limit);
110REGION_DECLARE(Image$$, TFM_SP_STORAGE, $$RO$$Base);
111REGION_DECLARE(Image$$, TFM_SP_STORAGE, $$RO$$Limit);
112REGION_DECLARE(Image$$, TFM_SP_STORAGE, _DATA$$RW$$Base);
113REGION_DECLARE(Image$$, TFM_SP_STORAGE, _DATA$$RW$$Limit);
114REGION_DECLARE(Image$$, TFM_SP_STORAGE, _DATA$$ZI$$Base);
115REGION_DECLARE(Image$$, TFM_SP_STORAGE, _DATA$$ZI$$Limit);
116REGION_DECLARE(Image$$, TFM_SP_STORAGE, _STACK$$ZI$$Base);
117REGION_DECLARE(Image$$, TFM_SP_STORAGE, _STACK$$ZI$$Limit);
118
119#ifdef TFM_PARTITION_AUDIT_LOG
120REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, $$Base);
121REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, $$Limit);
122REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, $$RO$$Base);
123REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, $$RO$$Limit);
124REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, _DATA$$RW$$Base);
125REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, _DATA$$RW$$Limit);
126REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, _DATA$$ZI$$Base);
127REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, _DATA$$ZI$$Limit);
128REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, _STACK$$ZI$$Base);
129REGION_DECLARE(Image$$, TFM_SP_AUDIT_LOG, _STACK$$ZI$$Limit);
130#endif /* TFM_PARTITION_AUDIT_LOG */
131
132REGION_DECLARE(Image$$, TFM_SP_CRYPTO, $$Base);
133REGION_DECLARE(Image$$, TFM_SP_CRYPTO, $$Limit);
134REGION_DECLARE(Image$$, TFM_SP_CRYPTO, $$RO$$Base);
135REGION_DECLARE(Image$$, TFM_SP_CRYPTO, $$RO$$Limit);
136REGION_DECLARE(Image$$, TFM_SP_CRYPTO, _DATA$$RW$$Base);
137REGION_DECLARE(Image$$, TFM_SP_CRYPTO, _DATA$$RW$$Limit);
138REGION_DECLARE(Image$$, TFM_SP_CRYPTO, _DATA$$ZI$$Base);
139REGION_DECLARE(Image$$, TFM_SP_CRYPTO, _DATA$$ZI$$Limit);
140REGION_DECLARE(Image$$, TFM_SP_CRYPTO, _STACK$$ZI$$Base);
141REGION_DECLARE(Image$$, TFM_SP_CRYPTO, _STACK$$ZI$$Limit);
142
143#ifdef TFM_PARTITION_PLATFORM
144REGION_DECLARE(Image$$, TFM_SP_PLATFORM, $$Base);
145REGION_DECLARE(Image$$, TFM_SP_PLATFORM, $$Limit);
146REGION_DECLARE(Image$$, TFM_SP_PLATFORM, $$RO$$Base);
147REGION_DECLARE(Image$$, TFM_SP_PLATFORM, $$RO$$Limit);
148REGION_DECLARE(Image$$, TFM_SP_PLATFORM, _DATA$$RW$$Base);
149REGION_DECLARE(Image$$, TFM_SP_PLATFORM, _DATA$$RW$$Limit);
150REGION_DECLARE(Image$$, TFM_SP_PLATFORM, _DATA$$ZI$$Base);
151REGION_DECLARE(Image$$, TFM_SP_PLATFORM, _DATA$$ZI$$Limit);
152REGION_DECLARE(Image$$, TFM_SP_PLATFORM, _STACK$$ZI$$Base);
153REGION_DECLARE(Image$$, TFM_SP_PLATFORM, _STACK$$ZI$$Limit);
154#endif /* TFM_PARTITION_PLATFORM */
155
156REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, $$Base);
157REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, $$Limit);
158REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, $$RO$$Base);
159REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, $$RO$$Limit);
160REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, _DATA$$RW$$Base);
161REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, _DATA$$RW$$Limit);
162REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, _DATA$$ZI$$Base);
163REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, _DATA$$ZI$$Limit);
164REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, _STACK$$ZI$$Base);
165REGION_DECLARE(Image$$, TFM_SP_INITIAL_ATTESTATION, _STACK$$ZI$$Limit);
166
167#ifdef TFM_PARTITION_TEST_CORE
168REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, $$Base);
169REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, $$Limit);
170REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, $$RO$$Base);
171REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, $$RO$$Limit);
172REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, _DATA$$RW$$Base);
173REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, _DATA$$RW$$Limit);
174REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, _DATA$$ZI$$Base);
175REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, _DATA$$ZI$$Limit);
176REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, _STACK$$ZI$$Base);
177REGION_DECLARE(Image$$, TFM_SP_CORE_TEST, _STACK$$ZI$$Limit);
178#endif /* TFM_PARTITION_TEST_CORE */
179
180#ifdef TFM_PARTITION_TEST_CORE
181REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, $$Base);
182REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, $$Limit);
183REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, $$RO$$Base);
184REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, $$RO$$Limit);
185REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, _DATA$$RW$$Base);
186REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, _DATA$$RW$$Limit);
187REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, _DATA$$ZI$$Base);
188REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, _DATA$$ZI$$Limit);
189REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, _STACK$$ZI$$Base);
190REGION_DECLARE(Image$$, TFM_SP_CORE_TEST_2, _STACK$$ZI$$Limit);
191#endif /* TFM_PARTITION_TEST_CORE */
192
193#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
194REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, $$Base);
195REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, $$Limit);
196REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, $$RO$$Base);
197REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, $$RO$$Limit);
198REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, _DATA$$RW$$Base);
199REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, _DATA$$RW$$Limit);
200REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, _DATA$$ZI$$Base);
201REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, _DATA$$ZI$$Limit);
202REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, _STACK$$ZI$$Base);
203REGION_DECLARE(Image$$, TFM_SP_SECURE_TEST_PARTITION, _STACK$$ZI$$Limit);
204#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
205
206#ifdef TFM_PARTITION_TEST_CORE_IPC
207REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, $$Base);
208REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, $$Limit);
209REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, $$RO$$Base);
210REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, $$RO$$Limit);
211REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, _DATA$$RW$$Base);
212REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, _DATA$$RW$$Limit);
213REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, _DATA$$ZI$$Base);
214REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, _DATA$$ZI$$Limit);
215REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, _STACK$$ZI$$Base);
216REGION_DECLARE(Image$$, TFM_SP_IPC_SERVICE_TEST, _STACK$$ZI$$Limit);
217#endif /* TFM_PARTITION_TEST_CORE_IPC */
218
219#ifdef TFM_PARTITION_TEST_CORE_IPC
220REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, $$Base);
221REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, $$Limit);
222REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, $$RO$$Base);
223REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, $$RO$$Limit);
224REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, _DATA$$RW$$Base);
225REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, _DATA$$RW$$Limit);
226REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, _DATA$$ZI$$Base);
227REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, _DATA$$ZI$$Limit);
228REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, _STACK$$ZI$$Base);
229REGION_DECLARE(Image$$, TFM_SP_IPC_CLIENT_TEST, _STACK$$ZI$$Limit);
230#endif /* TFM_PARTITION_TEST_CORE_IPC */
231
David Hu33f2fd22019-08-16 15:32:39 +0800232#ifdef TFM_ENABLE_IRQ_TEST
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200233REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, $$Base);
234REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, $$Limit);
235REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, $$RO$$Base);
236REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, $$RO$$Limit);
237REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, _DATA$$RW$$Base);
238REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, _DATA$$RW$$Limit);
239REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, _DATA$$ZI$$Base);
240REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, _DATA$$ZI$$Limit);
241REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, _STACK$$ZI$$Base);
242REGION_DECLARE(Image$$, TFM_IRQ_TEST_1, _STACK$$ZI$$Limit);
David Hu33f2fd22019-08-16 15:32:39 +0800243#endif /* TFM_ENABLE_IRQ_TEST */
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200244
Summer Qin423dbef2019-08-22 15:59:35 +0800245#endif /* defined(TFM_PSA_API) */
246
Edison Ai66fbdf12019-07-08 16:05:07 +0800247#ifndef TFM_PSA_API
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200248/**************************************************************************/
249/** Context stacks for IRQ handling */
250/**************************************************************************/
251/* The max size of the context stack can be calculated as a function of the IRQ
252 * count of the secure partition:
253 *
254 * max_stack_size = intr_ctx_size + (IRQ_CNT * (intr_ctx_size + hndl_ctx_size))
255 *
256 * where:
257 * intr_ctx: Frame pushed when the partition is interrupted
258 * hndl_ctx: Frame pushed when the partition is handling an interrupt
259 */
Summer Qin423dbef2019-08-22 15:59:35 +0800260static uint32_t ns_interrupt_ctx_stack[
261 sizeof(struct interrupted_ctx_stack_frame_t) / sizeof(uint32_t)];
262
263static uint32_t tfm_core_interrupt_ctx_stack[
264 sizeof(struct interrupted_ctx_stack_frame_t) / sizeof(uint32_t)];
265
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200266static uint32_t ctx_stack_TFM_SP_STORAGE[
267 (sizeof(struct interrupted_ctx_stack_frame_t) +
268 (TFM_PARTITION_TFM_SP_STORAGE_IRQ_COUNT) * (
269 sizeof(struct interrupted_ctx_stack_frame_t) +
270 sizeof(struct handler_ctx_stack_frame_t)
271 )) / sizeof(uint32_t)];
272
273#ifdef TFM_PARTITION_AUDIT_LOG
274static uint32_t ctx_stack_TFM_SP_AUDIT_LOG[
275 (sizeof(struct interrupted_ctx_stack_frame_t) +
276 (TFM_PARTITION_TFM_SP_AUDIT_LOG_IRQ_COUNT) * (
277 sizeof(struct interrupted_ctx_stack_frame_t) +
278 sizeof(struct handler_ctx_stack_frame_t)
279 )) / sizeof(uint32_t)];
280#endif /* TFM_PARTITION_AUDIT_LOG */
281
282static uint32_t ctx_stack_TFM_SP_CRYPTO[
283 (sizeof(struct interrupted_ctx_stack_frame_t) +
284 (TFM_PARTITION_TFM_SP_CRYPTO_IRQ_COUNT) * (
285 sizeof(struct interrupted_ctx_stack_frame_t) +
286 sizeof(struct handler_ctx_stack_frame_t)
287 )) / sizeof(uint32_t)];
288
289#ifdef TFM_PARTITION_PLATFORM
290static uint32_t ctx_stack_TFM_SP_PLATFORM[
291 (sizeof(struct interrupted_ctx_stack_frame_t) +
292 (TFM_PARTITION_TFM_SP_PLATFORM_IRQ_COUNT) * (
293 sizeof(struct interrupted_ctx_stack_frame_t) +
294 sizeof(struct handler_ctx_stack_frame_t)
295 )) / sizeof(uint32_t)];
296#endif /* TFM_PARTITION_PLATFORM */
297
298static uint32_t ctx_stack_TFM_SP_INITIAL_ATTESTATION[
299 (sizeof(struct interrupted_ctx_stack_frame_t) +
300 (TFM_PARTITION_TFM_SP_INITIAL_ATTESTATION_IRQ_COUNT) * (
301 sizeof(struct interrupted_ctx_stack_frame_t) +
302 sizeof(struct handler_ctx_stack_frame_t)
303 )) / sizeof(uint32_t)];
304
305#ifdef TFM_PARTITION_TEST_CORE
306static uint32_t ctx_stack_TFM_SP_CORE_TEST[
307 (sizeof(struct interrupted_ctx_stack_frame_t) +
308 (TFM_PARTITION_TFM_SP_CORE_TEST_IRQ_COUNT) * (
309 sizeof(struct interrupted_ctx_stack_frame_t) +
310 sizeof(struct handler_ctx_stack_frame_t)
311 )) / sizeof(uint32_t)];
312#endif /* TFM_PARTITION_TEST_CORE */
313
314#ifdef TFM_PARTITION_TEST_CORE
315static uint32_t ctx_stack_TFM_SP_CORE_TEST_2[
316 (sizeof(struct interrupted_ctx_stack_frame_t) +
317 (TFM_PARTITION_TFM_SP_CORE_TEST_2_IRQ_COUNT) * (
318 sizeof(struct interrupted_ctx_stack_frame_t) +
319 sizeof(struct handler_ctx_stack_frame_t)
320 )) / sizeof(uint32_t)];
321#endif /* TFM_PARTITION_TEST_CORE */
322
323#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
324static uint32_t ctx_stack_TFM_SP_SECURE_TEST_PARTITION[
325 (sizeof(struct interrupted_ctx_stack_frame_t) +
326 (TFM_PARTITION_TFM_SP_SECURE_TEST_PARTITION_IRQ_COUNT) * (
327 sizeof(struct interrupted_ctx_stack_frame_t) +
328 sizeof(struct handler_ctx_stack_frame_t)
329 )) / sizeof(uint32_t)];
330#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
331
332#ifdef TFM_PARTITION_TEST_CORE_IPC
333static uint32_t ctx_stack_TFM_SP_IPC_SERVICE_TEST[
334 (sizeof(struct interrupted_ctx_stack_frame_t) +
335 (TFM_PARTITION_TFM_SP_IPC_SERVICE_TEST_IRQ_COUNT) * (
336 sizeof(struct interrupted_ctx_stack_frame_t) +
337 sizeof(struct handler_ctx_stack_frame_t)
338 )) / sizeof(uint32_t)];
339#endif /* TFM_PARTITION_TEST_CORE_IPC */
340
341#ifdef TFM_PARTITION_TEST_CORE_IPC
342static uint32_t ctx_stack_TFM_SP_IPC_CLIENT_TEST[
343 (sizeof(struct interrupted_ctx_stack_frame_t) +
344 (TFM_PARTITION_TFM_SP_IPC_CLIENT_TEST_IRQ_COUNT) * (
345 sizeof(struct interrupted_ctx_stack_frame_t) +
346 sizeof(struct handler_ctx_stack_frame_t)
347 )) / sizeof(uint32_t)];
348#endif /* TFM_PARTITION_TEST_CORE_IPC */
349
David Hu33f2fd22019-08-16 15:32:39 +0800350#ifdef TFM_ENABLE_IRQ_TEST
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200351static uint32_t ctx_stack_TFM_IRQ_TEST_1[
352 (sizeof(struct interrupted_ctx_stack_frame_t) +
353 (TFM_PARTITION_TFM_IRQ_TEST_1_IRQ_COUNT) * (
354 sizeof(struct interrupted_ctx_stack_frame_t) +
355 sizeof(struct handler_ctx_stack_frame_t)
356 )) / sizeof(uint32_t)];
David Hu33f2fd22019-08-16 15:32:39 +0800357#endif /* TFM_ENABLE_IRQ_TEST */
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200358
Summer Qin423dbef2019-08-22 15:59:35 +0800359
360uint32_t *ctx_stack_list[] =
361{
362 ns_interrupt_ctx_stack,
363 tfm_core_interrupt_ctx_stack,
364 ctx_stack_TFM_SP_STORAGE,
365#ifdef TFM_PARTITION_AUDIT_LOG
366 ctx_stack_TFM_SP_AUDIT_LOG,
367#endif /* TFM_PARTITION_AUDIT_LOG */
368 ctx_stack_TFM_SP_CRYPTO,
369#ifdef TFM_PARTITION_PLATFORM
370 ctx_stack_TFM_SP_PLATFORM,
371#endif /* TFM_PARTITION_PLATFORM */
372 ctx_stack_TFM_SP_INITIAL_ATTESTATION,
373#ifdef TFM_PARTITION_TEST_CORE
374 ctx_stack_TFM_SP_CORE_TEST,
375#endif /* TFM_PARTITION_TEST_CORE */
376#ifdef TFM_PARTITION_TEST_CORE
377 ctx_stack_TFM_SP_CORE_TEST_2,
378#endif /* TFM_PARTITION_TEST_CORE */
379#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
380 ctx_stack_TFM_SP_SECURE_TEST_PARTITION,
381#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
382#ifdef TFM_PARTITION_TEST_CORE_IPC
383 ctx_stack_TFM_SP_IPC_SERVICE_TEST,
384#endif /* TFM_PARTITION_TEST_CORE_IPC */
385#ifdef TFM_PARTITION_TEST_CORE_IPC
386 ctx_stack_TFM_SP_IPC_CLIENT_TEST,
387#endif /* TFM_PARTITION_TEST_CORE_IPC */
388#ifdef TFM_ENABLE_IRQ_TEST
389 ctx_stack_TFM_IRQ_TEST_1,
390#endif /* TFM_ENABLE_IRQ_TEST */
391};
Edison Ai66fbdf12019-07-08 16:05:07 +0800392#endif /* !defined(TFM_PSA_API) */
393
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200394/**************************************************************************/
Summer Qin423dbef2019-08-22 15:59:35 +0800395/** The static data of the partition list */
396/**************************************************************************/
397const struct spm_partition_static_data_t static_data_list[] =
398{
399 {
400 .partition_id = TFM_SP_NON_SECURE_ID,
401#ifdef TFM_PSA_API
402 .partition_flags = SPM_PART_FLAG_APP_ROT | SPM_PART_FLAG_IPC,
403 .partition_priority = TFM_PRIORITY_LOW,
404 .partition_init = tfm_nspm_thread_entry,
405#else
406 .partition_flags = 0,
407#endif
408 },
409
410#ifndef TFM_PSA_API
411 {
412 .partition_id = TFM_SP_CORE_ID,
413 .partition_flags = SPM_PART_FLAG_APP_ROT | SPM_PART_FLAG_PSA_ROT,
414 },
415#endif
416
417 {
418 .partition_id = TFM_SP_STORAGE_ID,
419 .partition_flags = SPM_PART_FLAG_IPC
420 | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
421 ,
422 .partition_priority = TFM_PRIORITY(NORMAL),
423 .partition_init = tfm_sst_req_mngr_init,
424 },
425
426#ifdef TFM_PARTITION_AUDIT_LOG
427 {
428 .partition_id = TFM_SP_AUDIT_LOG_ID,
429 .partition_flags = 0
430 | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
431 ,
432 .partition_priority = TFM_PRIORITY(NORMAL),
433 .partition_init = audit_core_init,
434 },
435#endif /* TFM_PARTITION_AUDIT_LOG */
436
437 {
438 .partition_id = TFM_SP_CRYPTO_ID,
439 .partition_flags = SPM_PART_FLAG_IPC
440 | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
441 ,
442 .partition_priority = TFM_PRIORITY(NORMAL),
443 .partition_init = tfm_crypto_init,
444 },
445
446#ifdef TFM_PARTITION_PLATFORM
447 {
448 .partition_id = TFM_SP_PLATFORM_ID,
449 .partition_flags = 0
450 | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
451 ,
452 .partition_priority = TFM_PRIORITY(NORMAL),
453 .partition_init = platform_sp_init,
454 },
455#endif /* TFM_PARTITION_PLATFORM */
456
457 {
458 .partition_id = TFM_SP_INITIAL_ATTESTATION_ID,
459 .partition_flags = SPM_PART_FLAG_IPC
460 | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
461 ,
462 .partition_priority = TFM_PRIORITY(NORMAL),
463 .partition_init = attest_partition_init,
464 },
465
466#ifdef TFM_PARTITION_TEST_CORE
467 {
468 .partition_id = TFM_SP_CORE_TEST_ID,
469 .partition_flags = SPM_PART_FLAG_IPC
470 | SPM_PART_FLAG_APP_ROT
471 ,
472 .partition_priority = TFM_PRIORITY(NORMAL),
473 .partition_init = core_test_init,
474 },
475#endif /* TFM_PARTITION_TEST_CORE */
476
477#ifdef TFM_PARTITION_TEST_CORE
478 {
479 .partition_id = TFM_SP_CORE_TEST_2_ID,
480 .partition_flags = SPM_PART_FLAG_IPC
481 | SPM_PART_FLAG_APP_ROT
482 ,
483 .partition_priority = TFM_PRIORITY(NORMAL),
484 .partition_init = core_test_2_init,
485 },
486#endif /* TFM_PARTITION_TEST_CORE */
487
488#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
489 {
490 .partition_id = TFM_SP_SECURE_TEST_PARTITION_ID,
491 .partition_flags = SPM_PART_FLAG_IPC
492 | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
493 ,
494 .partition_priority = TFM_PRIORITY(NORMAL),
495 .partition_init = tfm_secure_client_service_init,
496 },
497#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
498
499#ifdef TFM_PARTITION_TEST_CORE_IPC
500 {
501 .partition_id = TFM_SP_IPC_SERVICE_TEST_ID,
502 .partition_flags = SPM_PART_FLAG_IPC
503 | SPM_PART_FLAG_PSA_ROT | SPM_PART_FLAG_APP_ROT
504 ,
505 .partition_priority = TFM_PRIORITY(HIGH),
506 .partition_init = ipc_service_test_main,
507 },
508#endif /* TFM_PARTITION_TEST_CORE_IPC */
509
510#ifdef TFM_PARTITION_TEST_CORE_IPC
511 {
512 .partition_id = TFM_SP_IPC_CLIENT_TEST_ID,
513 .partition_flags = SPM_PART_FLAG_IPC
514 | SPM_PART_FLAG_APP_ROT
515 ,
516 .partition_priority = TFM_PRIORITY(NORMAL),
517 .partition_init = ipc_client_test_main,
518 },
519#endif /* TFM_PARTITION_TEST_CORE_IPC */
520
521#ifdef TFM_ENABLE_IRQ_TEST
522 {
523 .partition_id = TFM_IRQ_TEST_1_ID,
524 .partition_flags = SPM_PART_FLAG_IPC
525 | SPM_PART_FLAG_APP_ROT
526 ,
527 .partition_priority = TFM_PRIORITY(NORMAL),
528 .partition_init = tfm_irq_test_1_init,
529 },
530#endif /* TFM_ENABLE_IRQ_TEST */
531
532};
533
534/**************************************************************************/
535/** The platform data of the partition list */
536/**************************************************************************/
537const struct tfm_spm_partition_platform_data_t *platform_data_list[] =
538{
539 NULL,
540
541#ifndef TFM_PSA_API
542 NULL,
543#endif
544
545 NULL,
546
547#ifdef TFM_PARTITION_AUDIT_LOG
548 /* FIXME: Only adding the first mmio region */
549#ifdef AUDIT_UART_REDIRECTION
550 TFM_PERIPHERAL_UART1,
551#else /* AUDIT_UART_REDIRECTION */
552 NULL,
553#endif /* AUDIT_UART_REDIRECTION */
554#endif /* TFM_PARTITION_AUDIT_LOG */
555
556 NULL,
557
558#ifdef TFM_PARTITION_PLATFORM
559 NULL,
560#endif /* TFM_PARTITION_PLATFORM */
561
562 NULL,
563
564#ifdef TFM_PARTITION_TEST_CORE
565 /* FIXME: Only adding the first mmio region */
566 TFM_PERIPHERAL_FPGA_IO,
567#endif /* TFM_PARTITION_TEST_CORE */
568
569#ifdef TFM_PARTITION_TEST_CORE
570 NULL,
571#endif /* TFM_PARTITION_TEST_CORE */
572
573#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
574 /* FIXME: Only adding the first mmio region */
575 TFM_PERIPHERAL_STD_UART,
576#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
577
578#ifdef TFM_PARTITION_TEST_CORE_IPC
579 NULL,
580#endif /* TFM_PARTITION_TEST_CORE_IPC */
581
582#ifdef TFM_PARTITION_TEST_CORE_IPC
583 NULL,
584#endif /* TFM_PARTITION_TEST_CORE_IPC */
585
586#ifdef TFM_ENABLE_IRQ_TEST
587 /* FIXME: Only adding the first mmio region */
588 TFM_PERIPHERAL_TIMER0,
589#endif /* TFM_ENABLE_IRQ_TEST */
590
591};
592
593/**************************************************************************/
594/** The memory data of the partition list */
595/**************************************************************************/
596#ifdef TFM_PSA_API
597const struct tfm_spm_partition_memory_data_t memory_data_list[] =
598{
599 {
600 .stack_bottom = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Base),
601 .stack_top = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Limit),
602 .rw_start = PART_REGION_ADDR(ARM_LIB_STACK, $$ZI$$Base),
603 },
604 {
605 .code_start = PART_REGION_ADDR(TFM_SP_STORAGE, $$Base),
606 .code_limit = PART_REGION_ADDR(TFM_SP_STORAGE, $$Limit),
607 .ro_start = PART_REGION_ADDR(TFM_SP_STORAGE, $$RO$$Base),
608 .ro_limit = PART_REGION_ADDR(TFM_SP_STORAGE, $$RO$$Limit),
609 .rw_start = PART_REGION_ADDR(TFM_SP_STORAGE, _DATA$$RW$$Base),
610 .rw_limit = PART_REGION_ADDR(TFM_SP_STORAGE, _DATA$$RW$$Limit),
611 .zi_start = PART_REGION_ADDR(TFM_SP_STORAGE, _DATA$$ZI$$Base),
612 .zi_limit = PART_REGION_ADDR(TFM_SP_STORAGE, _DATA$$ZI$$Limit),
613 .stack_bottom = PART_REGION_ADDR(TFM_SP_STORAGE, _STACK$$ZI$$Base),
614 .stack_top = PART_REGION_ADDR(TFM_SP_STORAGE, _STACK$$ZI$$Limit),
615 },
616
617#ifdef TFM_PARTITION_AUDIT_LOG
618 {
619 .code_start = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, $$Base),
620 .code_limit = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, $$Limit),
621 .ro_start = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, $$RO$$Base),
622 .ro_limit = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, $$RO$$Limit),
623 .rw_start = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, _DATA$$RW$$Base),
624 .rw_limit = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, _DATA$$RW$$Limit),
625 .zi_start = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, _DATA$$ZI$$Base),
626 .zi_limit = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, _DATA$$ZI$$Limit),
627 .stack_bottom = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, _STACK$$ZI$$Base),
628 .stack_top = PART_REGION_ADDR(TFM_SP_AUDIT_LOG, _STACK$$ZI$$Limit),
629 },
630#endif /* TFM_PARTITION_AUDIT_LOG */
631
632 {
633 .code_start = PART_REGION_ADDR(TFM_SP_CRYPTO, $$Base),
634 .code_limit = PART_REGION_ADDR(TFM_SP_CRYPTO, $$Limit),
635 .ro_start = PART_REGION_ADDR(TFM_SP_CRYPTO, $$RO$$Base),
636 .ro_limit = PART_REGION_ADDR(TFM_SP_CRYPTO, $$RO$$Limit),
637 .rw_start = PART_REGION_ADDR(TFM_SP_CRYPTO, _DATA$$RW$$Base),
638 .rw_limit = PART_REGION_ADDR(TFM_SP_CRYPTO, _DATA$$RW$$Limit),
639 .zi_start = PART_REGION_ADDR(TFM_SP_CRYPTO, _DATA$$ZI$$Base),
640 .zi_limit = PART_REGION_ADDR(TFM_SP_CRYPTO, _DATA$$ZI$$Limit),
641 .stack_bottom = PART_REGION_ADDR(TFM_SP_CRYPTO, _STACK$$ZI$$Base),
642 .stack_top = PART_REGION_ADDR(TFM_SP_CRYPTO, _STACK$$ZI$$Limit),
643 },
644
645#ifdef TFM_PARTITION_PLATFORM
646 {
647 .code_start = PART_REGION_ADDR(TFM_SP_PLATFORM, $$Base),
648 .code_limit = PART_REGION_ADDR(TFM_SP_PLATFORM, $$Limit),
649 .ro_start = PART_REGION_ADDR(TFM_SP_PLATFORM, $$RO$$Base),
650 .ro_limit = PART_REGION_ADDR(TFM_SP_PLATFORM, $$RO$$Limit),
651 .rw_start = PART_REGION_ADDR(TFM_SP_PLATFORM, _DATA$$RW$$Base),
652 .rw_limit = PART_REGION_ADDR(TFM_SP_PLATFORM, _DATA$$RW$$Limit),
653 .zi_start = PART_REGION_ADDR(TFM_SP_PLATFORM, _DATA$$ZI$$Base),
654 .zi_limit = PART_REGION_ADDR(TFM_SP_PLATFORM, _DATA$$ZI$$Limit),
655 .stack_bottom = PART_REGION_ADDR(TFM_SP_PLATFORM, _STACK$$ZI$$Base),
656 .stack_top = PART_REGION_ADDR(TFM_SP_PLATFORM, _STACK$$ZI$$Limit),
657 },
658#endif /* TFM_PARTITION_PLATFORM */
659
660 {
661 .code_start = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, $$Base),
662 .code_limit = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, $$Limit),
663 .ro_start = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, $$RO$$Base),
664 .ro_limit = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, $$RO$$Limit),
665 .rw_start = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, _DATA$$RW$$Base),
666 .rw_limit = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, _DATA$$RW$$Limit),
667 .zi_start = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, _DATA$$ZI$$Base),
668 .zi_limit = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, _DATA$$ZI$$Limit),
669 .stack_bottom = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, _STACK$$ZI$$Base),
670 .stack_top = PART_REGION_ADDR(TFM_SP_INITIAL_ATTESTATION, _STACK$$ZI$$Limit),
671 },
672
673#ifdef TFM_PARTITION_TEST_CORE
674 {
675 .code_start = PART_REGION_ADDR(TFM_SP_CORE_TEST, $$Base),
676 .code_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST, $$Limit),
677 .ro_start = PART_REGION_ADDR(TFM_SP_CORE_TEST, $$RO$$Base),
678 .ro_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST, $$RO$$Limit),
679 .rw_start = PART_REGION_ADDR(TFM_SP_CORE_TEST, _DATA$$RW$$Base),
680 .rw_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST, _DATA$$RW$$Limit),
681 .zi_start = PART_REGION_ADDR(TFM_SP_CORE_TEST, _DATA$$ZI$$Base),
682 .zi_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST, _DATA$$ZI$$Limit),
683 .stack_bottom = PART_REGION_ADDR(TFM_SP_CORE_TEST, _STACK$$ZI$$Base),
684 .stack_top = PART_REGION_ADDR(TFM_SP_CORE_TEST, _STACK$$ZI$$Limit),
685 },
686#endif /* TFM_PARTITION_TEST_CORE */
687
688#ifdef TFM_PARTITION_TEST_CORE
689 {
690 .code_start = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, $$Base),
691 .code_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, $$Limit),
692 .ro_start = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, $$RO$$Base),
693 .ro_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, $$RO$$Limit),
694 .rw_start = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, _DATA$$RW$$Base),
695 .rw_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, _DATA$$RW$$Limit),
696 .zi_start = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, _DATA$$ZI$$Base),
697 .zi_limit = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, _DATA$$ZI$$Limit),
698 .stack_bottom = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, _STACK$$ZI$$Base),
699 .stack_top = PART_REGION_ADDR(TFM_SP_CORE_TEST_2, _STACK$$ZI$$Limit),
700 },
701#endif /* TFM_PARTITION_TEST_CORE */
702
703#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
704 {
705 .code_start = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, $$Base),
706 .code_limit = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, $$Limit),
707 .ro_start = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, $$RO$$Base),
708 .ro_limit = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, $$RO$$Limit),
709 .rw_start = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, _DATA$$RW$$Base),
710 .rw_limit = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, _DATA$$RW$$Limit),
711 .zi_start = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, _DATA$$ZI$$Base),
712 .zi_limit = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, _DATA$$ZI$$Limit),
713 .stack_bottom = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, _STACK$$ZI$$Base),
714 .stack_top = PART_REGION_ADDR(TFM_SP_SECURE_TEST_PARTITION, _STACK$$ZI$$Limit),
715 },
716#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
717
718#ifdef TFM_PARTITION_TEST_CORE_IPC
719 {
720 .code_start = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, $$Base),
721 .code_limit = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, $$Limit),
722 .ro_start = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, $$RO$$Base),
723 .ro_limit = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, $$RO$$Limit),
724 .rw_start = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, _DATA$$RW$$Base),
725 .rw_limit = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, _DATA$$RW$$Limit),
726 .zi_start = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, _DATA$$ZI$$Base),
727 .zi_limit = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, _DATA$$ZI$$Limit),
728 .stack_bottom = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, _STACK$$ZI$$Base),
729 .stack_top = PART_REGION_ADDR(TFM_SP_IPC_SERVICE_TEST, _STACK$$ZI$$Limit),
730 },
731#endif /* TFM_PARTITION_TEST_CORE_IPC */
732
733#ifdef TFM_PARTITION_TEST_CORE_IPC
734 {
735 .code_start = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, $$Base),
736 .code_limit = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, $$Limit),
737 .ro_start = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, $$RO$$Base),
738 .ro_limit = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, $$RO$$Limit),
739 .rw_start = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, _DATA$$RW$$Base),
740 .rw_limit = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, _DATA$$RW$$Limit),
741 .zi_start = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, _DATA$$ZI$$Base),
742 .zi_limit = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, _DATA$$ZI$$Limit),
743 .stack_bottom = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, _STACK$$ZI$$Base),
744 .stack_top = PART_REGION_ADDR(TFM_SP_IPC_CLIENT_TEST, _STACK$$ZI$$Limit),
745 },
746#endif /* TFM_PARTITION_TEST_CORE_IPC */
747
748#ifdef TFM_ENABLE_IRQ_TEST
749 {
750 .code_start = PART_REGION_ADDR(TFM_IRQ_TEST_1, $$Base),
751 .code_limit = PART_REGION_ADDR(TFM_IRQ_TEST_1, $$Limit),
752 .ro_start = PART_REGION_ADDR(TFM_IRQ_TEST_1, $$RO$$Base),
753 .ro_limit = PART_REGION_ADDR(TFM_IRQ_TEST_1, $$RO$$Limit),
754 .rw_start = PART_REGION_ADDR(TFM_IRQ_TEST_1, _DATA$$RW$$Base),
755 .rw_limit = PART_REGION_ADDR(TFM_IRQ_TEST_1, _DATA$$RW$$Limit),
756 .zi_start = PART_REGION_ADDR(TFM_IRQ_TEST_1, _DATA$$ZI$$Base),
757 .zi_limit = PART_REGION_ADDR(TFM_IRQ_TEST_1, _DATA$$ZI$$Limit),
758 .stack_bottom = PART_REGION_ADDR(TFM_IRQ_TEST_1, _STACK$$ZI$$Base),
759 .stack_top = PART_REGION_ADDR(TFM_IRQ_TEST_1, _STACK$$ZI$$Limit),
760 },
761#endif /* TFM_ENABLE_IRQ_TEST */
762
763};
764#endif /* defined(TFM_PSA_API) */
765
766/**************************************************************************/
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200767/** The partition list for the DB */
768/**************************************************************************/
Summer Qin423dbef2019-08-22 15:59:35 +0800769static struct spm_partition_desc_t partition_list [] =
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200770{
Summer Qin423dbef2019-08-22 15:59:35 +0800771 {{}}, /* placeholder for Non-secure internal partition */
Mingyang Sunda01a972019-07-12 17:32:59 +0800772#ifndef TFM_PSA_API
Summer Qin423dbef2019-08-22 15:59:35 +0800773 {{}}, /* placeholder for TF-M Core internal partition */
Mingyang Sunda01a972019-07-12 17:32:59 +0800774#endif /* !ifndefined(TFM_PSA_API) */
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200775
776 /* -----------------------------------------------------------------------*/
777 /* - Partition DB record for TFM_SP_STORAGE */
778 /* -----------------------------------------------------------------------*/
779 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200780 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800781 .runtime_data = {},
782 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200783 .platform_data = NULL,
784
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200785 },
786
787 /* -----------------------------------------------------------------------*/
788 /* - Partition DB record for TFM_SP_AUDIT_LOG */
789 /* -----------------------------------------------------------------------*/
790#ifdef TFM_PARTITION_AUDIT_LOG
791 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200792 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800793 .runtime_data = {},
794 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200795 .platform_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200796
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200797 },
798#endif /* TFM_PARTITION_AUDIT_LOG */
799
800 /* -----------------------------------------------------------------------*/
801 /* - Partition DB record for TFM_SP_CRYPTO */
802 /* -----------------------------------------------------------------------*/
803 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200804 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800805 .runtime_data = {},
806 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200807 .platform_data = NULL,
808
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200809 },
810
811 /* -----------------------------------------------------------------------*/
812 /* - Partition DB record for TFM_SP_PLATFORM */
813 /* -----------------------------------------------------------------------*/
814#ifdef TFM_PARTITION_PLATFORM
815 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200816 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800817 .runtime_data = {},
818 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200819 .platform_data = NULL,
820
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200821 },
822#endif /* TFM_PARTITION_PLATFORM */
823
824 /* -----------------------------------------------------------------------*/
825 /* - Partition DB record for TFM_SP_INITIAL_ATTESTATION */
826 /* -----------------------------------------------------------------------*/
827 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200828 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800829 .runtime_data = {},
830 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200831 .platform_data = NULL,
832
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200833 },
834
835 /* -----------------------------------------------------------------------*/
836 /* - Partition DB record for TFM_SP_CORE_TEST */
837 /* -----------------------------------------------------------------------*/
838#ifdef TFM_PARTITION_TEST_CORE
839 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200840 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800841 .runtime_data = {},
842 .static_data = NULL,
843 .platform_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200844
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200845 },
846#endif /* TFM_PARTITION_TEST_CORE */
847
848 /* -----------------------------------------------------------------------*/
849 /* - Partition DB record for TFM_SP_CORE_TEST_2 */
850 /* -----------------------------------------------------------------------*/
851#ifdef TFM_PARTITION_TEST_CORE
852 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200853 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800854 .runtime_data = {},
855 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200856 .platform_data = NULL,
857
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200858 },
859#endif /* TFM_PARTITION_TEST_CORE */
860
861 /* -----------------------------------------------------------------------*/
862 /* - Partition DB record for TFM_SP_SECURE_TEST_PARTITION */
863 /* -----------------------------------------------------------------------*/
864#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
865 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200866 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800867 .runtime_data = {},
868 .static_data = NULL,
869 .platform_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200870
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200871 },
872#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
873
874 /* -----------------------------------------------------------------------*/
875 /* - Partition DB record for TFM_SP_IPC_SERVICE_TEST */
876 /* -----------------------------------------------------------------------*/
877#ifdef TFM_PARTITION_TEST_CORE_IPC
878 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200879 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800880 .runtime_data = {},
881 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200882 .platform_data = NULL,
883
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200884 },
885#endif /* TFM_PARTITION_TEST_CORE_IPC */
886
887 /* -----------------------------------------------------------------------*/
888 /* - Partition DB record for TFM_SP_IPC_CLIENT_TEST */
889 /* -----------------------------------------------------------------------*/
890#ifdef TFM_PARTITION_TEST_CORE_IPC
891 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200892 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800893 .runtime_data = {},
894 .static_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200895 .platform_data = NULL,
896
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200897 },
898#endif /* TFM_PARTITION_TEST_CORE_IPC */
899
900 /* -----------------------------------------------------------------------*/
901 /* - Partition DB record for TFM_IRQ_TEST_1 */
902 /* -----------------------------------------------------------------------*/
David Hu33f2fd22019-08-16 15:32:39 +0800903#ifdef TFM_ENABLE_IRQ_TEST
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200904 {
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200905 /* Runtime data */
Summer Qin423dbef2019-08-22 15:59:35 +0800906 .runtime_data = {},
907 .static_data = NULL,
908 .platform_data = NULL,
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200909
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200910 },
David Hu33f2fd22019-08-16 15:32:39 +0800911#endif /* TFM_ENABLE_IRQ_TEST */
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200912
913};
914
915struct spm_partition_db_t g_spm_partition_db = {
916 .is_init = 0,
917 .partition_count = sizeof(partition_list) / sizeof(partition_list[0]),
Edison Ai66fbdf12019-07-08 16:05:07 +0800918#ifndef TFM_PSA_API
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200919 .running_partition_idx = 0,
Edison Ai66fbdf12019-07-08 16:05:07 +0800920#endif
Mate Toth-Pal3ad2e3e2019-07-11 21:43:37 +0200921 .partitions = partition_list,
922};
923
924#endif /* __TFM_SPM_DB_INC__ */