1 /*******************************************************************************
2 * The confidential and proprietary information contained in this file may      *
3 * only be used by a person authorised under and to the extent permitted        *
4 * by a subsisting licensing agreement from ARM Limited or its affiliates.      *
5 *   (C) COPYRIGHT [2001-2017] ARM Limited or its affiliates.                   *
6 *       ALL RIGHTS RESERVED                                                    *
7 * This entire notice must be reproduced on all copies of this file             *
8 * and copies of this file may only be made by a person if such person is       *
9 * permitted to do so under the terms of a subsisting license agreement         *
10 * from ARM Limited or its affiliates.                                          *
11 *******************************************************************************/
12 
13 #include <stdio.h>
14 #include <stdint.h>
15 
16 #ifdef TZM
17 #include "FreeRTOS.h"
18 #include "test_pal_log.h"
19 #include "test_pal_mem.h"
20 #include "test_pal_mem_s.h"
21 #include <arm_cmse.h>
22 #endif
23 
24 #ifndef TZM
25 /******************************************************************************/
Test_PalMalloc_s(size_t size)26 void *Test_PalMalloc_s(size_t size)
27 {
28     (void)size;
29     return NULL;
30 }
31 
32 /******************************************************************************/
Test_PalFree_s(void * pvAddress)33 void Test_PalFree_s(void *pvAddress)
34 {
35     (void)pvAddress;
36 }
37 
38 /******************************************************************************/
Test_PalRealloc_s(void * pvAddress,size_t newSize)39 void *Test_PalRealloc_s(void *pvAddress, size_t newSize)
40 {
41     (void)pvAddress;
42     (void)newSize;
43     return NULL;
44 }
45 
46 /******************************************************************************/
Test_PalDMAContigBufferAlloc_s(size_t size)47 void *Test_PalDMAContigBufferAlloc_s(size_t size)
48 {
49     (void)size;
50     return NULL;
51 }
52 
53 /******************************************************************************/
Test_PalDMAContigBufferFree_s(void * pvAddress)54 void Test_PalDMAContigBufferFree_s(void *pvAddress)
55 {
56     (void)pvAddress;
57 }
58 
59 /******************************************************************************/
Test_PalDMAContigBufferRealloc_s(void * pvAddress,size_t newSize)60 void *Test_PalDMAContigBufferRealloc_s(void *pvAddress, size_t newSize)
61 {
62     (void)pvAddress;
63     (void)newSize;
64     return NULL;
65 }
66 
67 /******************************************************************************/
Test_PalGetDMABaseAddr_s(void)68 unsigned long Test_PalGetDMABaseAddr_s(void)
69 {
70     return 0;
71 }
72 
73 /******************************************************************************/
Test_PalGetUnmanagedBaseAddr_s(void)74 unsigned long Test_PalGetUnmanagedBaseAddr_s(void)
75 {
76     return 0;
77 }
78 
79 /******************************************************************************/
Test_PalMemInit_s(unsigned long newDMABaseAddr,unsigned long newUnmanagedBaseAddr,size_t DMAsize)80 uint32_t Test_PalMemInit_s(unsigned long newDMABaseAddr,
81                unsigned long newUnmanagedBaseAddr,
82                size_t DMAsize)
83 {
84     (void)newDMABaseAddr;
85     (void)newUnmanagedBaseAddr;
86     (void)DMAsize;
87     return 1;
88 }
89 
90 /******************************************************************************/
Test_PalMemFin_s(void)91 uint32_t Test_PalMemFin_s(void)
92 {
93     return 1;
94 }
95 
96 #else
97 
98 static unsigned long unmanagedBaseAddr_s = 0;
99 static uint8_t memInitialised_s = 0;
100 
101 /******************************************************************************/
Test_PalMalloc_s(size_t size)102 void *Test_PalMalloc_s(size_t size)
103 {
104     /* A non-secure caller */
105     if (cmse_is_nsfptr(&Test_PalMalloc_s))
106         return NULL;
107 
108     /* A secure caller */
109     if (!size)
110         return NULL;
111 
112     return pvPortMalloc(size);
113 }
114 
115 /******************************************************************************/
Test_PalFree_s(void * pvAddress)116 void Test_PalFree_s(void *pvAddress)
117 {
118     /* A non-secure caller */
119     if (cmse_is_nsfptr(&Test_PalFree_s))
120         return;
121 
122     /* A secure caller */
123     if (pvAddress == NULL)
124         return;
125 
126     vPortFree(pvAddress);
127 }
128 
129 /******************************************************************************/
Test_PalRealloc_s(void * pvAddress,size_t newSize)130 void *Test_PalRealloc_s(void *pvAddress, size_t newSize)
131 {
132     /* A non-secure caller */
133     if (cmse_is_nsfptr(&Test_PalRealloc_s))
134         return NULL;
135 
136     /* A secure caller */
137     if (pvAddress == NULL)
138         return NULL;
139 
140     return pvPortRealloc(pvAddress, newSize);
141 }
142 
143 /******************************************************************************/
Test_PalDMAContigBufferAlloc_s(size_t size)144 void *Test_PalDMAContigBufferAlloc_s(size_t size)
145 {
146     return Test_PalMalloc_s(size);
147 }
148 
149 /******************************************************************************/
Test_PalDMAContigBufferFree_s(void * pvAddress)150 void Test_PalDMAContigBufferFree_s(void *pvAddress)
151 {
152     Test_PalFree_s(pvAddress);
153 }
154 
155 /******************************************************************************/
Test_PalDMAContigBufferRealloc_s(void * pvAddress,size_t newSize)156 void *Test_PalDMAContigBufferRealloc_s(void *pvAddress, size_t newSize)
157 {
158     return Test_PalRealloc_s(pvAddress, newSize);
159 }
160 
161 /******************************************************************************/
Test_PalGetDMABaseAddr_s(void)162 unsigned long Test_PalGetDMABaseAddr_s(void)
163 {
164     return 0;
165 }
166 
167 /******************************************************************************/
Test_PalGetUnmanagedBaseAddr_s(void)168 unsigned long Test_PalGetUnmanagedBaseAddr_s(void)
169 {
170     return unmanagedBaseAddr_s;
171 }
172 
173 /******************************************************************************/
Test_PalMemInit_s(unsigned long newDMABaseAddr_s,unsigned long newUnmanagedBaseAddr_s,size_t SDMAsize)174 uint32_t Test_PalMemInit_s(unsigned long newDMABaseAddr_s,
175                unsigned long newUnmanagedBaseAddr_s,
176                size_t SDMAsize)
177 {
178     /* A non-secure caller */
179     if (cmse_is_nsfptr(&Test_PalMemInit_s))
180         return 1;
181 
182     /* A secure caller */
183     if(memInitialised_s) {
184         TEST_PRINTF_ERROR("Secure memory is already initialised");
185         return 1;
186     }
187 
188     (void)newDMABaseAddr_s;
189     (void)SDMAsize;
190     unmanagedBaseAddr_s = newUnmanagedBaseAddr_s;
191     memInitialised_s = 1;
192 
193     return 0;
194 }
195 
196 /******************************************************************************/
Test_PalMemFin_s(void)197 uint32_t Test_PalMemFin_s(void)
198 {
199     /* A non-secure caller */
200     if (cmse_is_nsfptr(&Test_PalMemFin_s))
201         return 1;
202 
203     /* A secure caller */
204     unmanagedBaseAddr_s = 0;
205     memInitialised_s = 0;
206 
207     return 0;
208 }
209 #endif
210