179 asm(" strb r2, [r3], #1"); |
179 asm(" strb r2, [r3], #1"); |
180 asm(" strb r2, [r3], #1"); |
180 asm(" strb r2, [r3], #1"); |
181 asm("small_fill_end: "); |
181 asm("small_fill_end: "); |
182 __JUMP(,lr); |
182 __JUMP(,lr); |
183 |
183 |
|
184 } |
|
185 |
184 #ifdef __EABI__ |
186 #ifdef __EABI__ |
185 // The AEABI switched the order of arg2 and arg3 to save an intruction when |
187 //mikek N.B. These __aeabi_mem functions are also defined in rvct/compsupp/aeabimem.cpp |
186 // calling 'memset' from 'memclr' |
188 // and should be implemented in the compsupp library, not here, when we build one for gcce. |
187 asm(".global __aeabi_memset8 "); |
189 |
188 asm("__aeabi_memset8: "); |
190 #define EXPORT_EABI_MEMSET_VENEER(name) \ |
189 asm(".global __aeabi_memset4 "); |
191 extern "C" EXPORT_C __NAKED__ TAny* (name)(TAny* /*aTrg*/, unsigned int /*aLength*/, TInt /*aValue*/ ) \ |
190 asm("__aeabi_memset4: "); |
192 { \ |
191 asm(".global __aeabi_memset "); |
193 asm(" and r2, r2, #255"); \ |
192 asm("__aeabi_memset: "); |
194 asm(" b fill "); \ |
193 asm(" and r2, r2, #255"); |
195 } |
194 asm(" b fill "); |
196 |
195 #endif |
197 EXPORT_EABI_MEMSET_VENEER(__aeabi_memset8) |
196 } |
198 EXPORT_EABI_MEMSET_VENEER(__aeabi_memset4) |
|
199 EXPORT_EABI_MEMSET_VENEER(__aeabi_memset) |
|
200 |
|
201 #define EXPORT_EABI_MEMCLR_ALIAS(alias) \ |
|
202 extern "C" EXPORT_C __NAKED__ TAny* (alias)(TAny* /*aTrg*/, unsigned int /*aLength*/ ) \ |
|
203 { \ |
|
204 asm(" b memclr "); \ |
|
205 } |
|
206 |
|
207 EXPORT_EABI_MEMCLR_ALIAS(__aeabi_memclr8) |
|
208 EXPORT_EABI_MEMCLR_ALIAS(__aeabi_memclr4) |
|
209 EXPORT_EABI_MEMCLR_ALIAS(__aeabi_memclr) |
|
210 |
|
211 #define EXPORT_EABI_MEMMOVE_ALIAS(alias,func) \ |
|
212 extern "C" EXPORT_C __NAKED__ TAny* (alias)(TAny* /*aTrg*/, const TAny* /*aSrc*/, unsigned int /*aLength*/) \ |
|
213 { \ |
|
214 asm(" b " #func ); \ |
|
215 } |
|
216 |
|
217 EXPORT_EABI_MEMMOVE_ALIAS(__aeabi_memcpy8,memcpy) |
|
218 EXPORT_EABI_MEMMOVE_ALIAS(__aeabi_memcpy4,memcpy) |
|
219 EXPORT_EABI_MEMMOVE_ALIAS(__aeabi_memcpy,memcpy) |
|
220 EXPORT_EABI_MEMMOVE_ALIAS(__aeabi_memmove8,memmove) |
|
221 EXPORT_EABI_MEMMOVE_ALIAS(__aeabi_memmove4,memmove) |
|
222 EXPORT_EABI_MEMMOVE_ALIAS(__aeabi_memmove,memmove) |
|
223 #endif // __EABI__ |
197 |
224 |
198 #endif // USE_REPLACEMENT_MEMSET |
225 #endif // USE_REPLACEMENT_MEMSET |
199 |
226 |
200 #ifndef USE_REPLACEMENT_MEMCPY |
227 #ifndef USE_REPLACEMENT_MEMCPY |
201 |
228 |