1 /*
2 * Copyright (c) 2001-2019, Arm Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7 #include <string.h>
8
9 #include "test_proj.h"
10 #include "test_proj_defs.h"
11
12 #include "dx_reg_base_host.h"
13
14 #include "test_pal_map_addrs.h"
15 #include "test_pal_log.h"
16 #include "test_pal_mem.h"
17 #include "test_pal_mem_s.h"
18 #include "board_configs.h"
19
20
21 struct ProcessMappingArea_t processMap;
22
Test_ProjMap(void)23 uint32_t Test_ProjMap(void)
24 {
25 uint32_t error = 0;
26
27 /* Initialize value */
28 memset(&processMap, 0, sizeof(struct ProcessMappingArea_t));
29
30 /* Init platform specific memories: DMAble & unmanaged */
31 error = Test_HalBoardInit();
32 if (error != 0) {
33 TEST_PRINTF_ERROR("Failed to Test_HalBoardInit 0x%x", error);
34 return error;
35 }
36 #ifdef ARCH_V8M
37 processMap.processTeeUnmanagedBaseAddr = Test_PalGetUnmanagedBaseAddr_s();
38 #else
39 processMap.processTeeUnmanagedBaseAddr = Test_PalGetUnmanagedBaseAddr();
40 #endif
41
42 /* Set relevant mapping regions for CC312-r1 tests */
43 processMap.processTeeHwRegBaseAddr = (unsigned long)Test_PalIOMap((void *)DX_BASE_CC,
44 TEST_PROJ_CC_REG_MAP_AREA_LEN);
45 processMap.processTeeHwEnvBaseAddr = (unsigned long)Test_PalIOMap((void *)DX_BASE_ENV_REGS,
46 TEST_PROJ_CC_REG_MAP_AREA_LEN);
47
48 /* Verify all Maps succeeded */
49 if ((!VALID_MAPPED_ADDR(processMap.processTeeHwRegBaseAddr)) ||
50 (!VALID_MAPPED_ADDR(processMap.processTeeHwEnvBaseAddr)) ||
51 (!VALID_MAPPED_ADDR(processMap.processTeeUnmanagedBaseAddr))) {
52 TEST_PRINTF_ERROR("Failed to map, processTeeHwRegBaseAddr 0x%lx, processTeeHwEnvBaseAddr 0x%lx, \
53 processTeeUnmanagedBaseAddr 0x%lx\n",
54 processMap.processTeeHwRegBaseAddr,
55 processMap.processTeeHwEnvBaseAddr,
56 processMap.processTeeUnmanagedBaseAddr);
57 goto end_with_error;
58
59 }
60 return TEST_OK;
61
62 end_with_error:
63 Test_ProjUnmap();
64 return TEST_MAPPING_ERR;
65
66 }
67
Test_ProjUnmap(void)68 void Test_ProjUnmap(void)
69 {
70 Test_PalUnmapAddr((void *)processMap.processTeeHwRegBaseAddr, TEST_PROJ_CC_REG_MAP_AREA_LEN);
71 Test_PalUnmapAddr((void *)processMap.processTeeHwEnvBaseAddr, TEST_PROJ_CC_REG_MAP_AREA_LEN);
72 Test_HalBoardFree();
73
74 memset((uint8_t *)&processMap, 0, sizeof(struct ProcessMappingArea_t));
75 return;
76 }
77