1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/kernelhwsrv/kernel/eka/compsupp/rvct2_1/aeabimem.cia Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,65 @@
1.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of the License "ARM EABI LICENCE.txt"
1.8 +// which accompanies this distribution, and is available
1.9 +// in kernel/eka/compsupp.
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +#include <e32cmn.h>
1.20 +
1.21 +// Call our implementations of memcpy/move/set/clr rather than the ARM supplied
1.22 +// ones.
1.23 +//
1.24 +// Note that the AEABI switched the order of arg2 and arg3 to save an intruction
1.25 +// when calling 'memset' from 'memclr'.
1.26 +//
1.27 +// Prototypes are:
1.28 +// void __aeabi_memset8(TAny* aTrg, unsigned int aLength, TInt aValue);
1.29 +// void __aeabi_memset4(TAny* aTrg, unsigned int aLength, TInt aValue);
1.30 +// void __aeabi_memset(TAny* aTrg, unsigned int aLength, TInt aValue);
1.31 +
1.32 +extern "C" __NAKED__ void make_mem_functions_call_euser_versions()
1.33 + {
1.34 + asm(".global __aeabi_memset8 ");
1.35 + asm("__aeabi_memset8: ");
1.36 + asm(".global __aeabi_memset4 ");
1.37 + asm("__aeabi_memset4: ");
1.38 + asm(".global __aeabi_memset ");
1.39 + asm("__aeabi_memset: ");
1.40 + asm(" mov r3, r1 ");
1.41 + asm(" mov r1, r2 ");
1.42 + asm(" mov r2, r3 ");
1.43 + asm(" b memset ");
1.44 +
1.45 + asm(".global __aeabi_memclr8 ");
1.46 + asm("__aeabi_memclr8: ");
1.47 + asm(".global __aeabi_memclr4 ");
1.48 + asm("__aeabi_memclr4: ");
1.49 + asm(".global __aeabi_memclr ");
1.50 + asm("__aeabi_memclr: ");
1.51 + asm(" b memclr ");
1.52 +
1.53 + asm(".global __aeabi_memcpy8 ");
1.54 + asm("__aeabi_memcpy8: ");
1.55 + asm(".global __aeabi_memcpy4 ");
1.56 + asm("__aeabi_memcpy4: ");
1.57 + asm(".global __aeabi_memcpy ");
1.58 + asm("__aeabi_memcpy: ");
1.59 + asm(" b memcpy ");
1.60 +
1.61 + asm(".global __aeabi_memmove8 ");
1.62 + asm("__aeabi_memmove8: ");
1.63 + asm(".global __aeabi_memmove4 ");
1.64 + asm("__aeabi_memmove4: ");
1.65 + asm(".global __aeabi_memmove ");
1.66 + asm("__aeabi_memmove: ");
1.67 + asm(" b memmove ");
1.68 + }