kernel/eka/common/arm/cmem.cia
branchGCC_SURGE
changeset 188 38a7352e23d3
parent 0 a41df078684a
child 192 8132de65a0da
equal deleted inserted replaced
187:02f19e28d12e 188:38a7352e23d3
   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