Home | History | Annotate | Download | only in Arm
      1 //------------------------------------------------------------------------------
      2 //
      3 // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
      4 //
      5 // This program and the accompanying materials
      6 // are licensed and made available under the terms and conditions of the BSD License
      7 // which accompanies this distribution.  The full text of the license may be found at
      8 // http://opensource.org/licenses/bsd-license.php
      9 //
     10 // THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 //
     13 //------------------------------------------------------------------------------
     14 
     15 
     16 
     17     INCLUDE AsmMacroExport.inc
     18 
     19 ;
     20 ;VOID
     21 ;EFIAPI
     22 ;__aeabi_memcpy (
     23 ; IN  VOID    *Destination,
     24 ; IN  VOID    *Source,
     25 ; IN  UINT32  Size
     26 ; );
     27 ;
     28  RVCT_ASM_EXPORT __aeabi_memcpy4
     29     stmdb   sp!, {r4, lr}
     30     subs    r2, r2, #32     ; 0x20
     31     bcc     memcpy4_label2
     32 memcpy4_label1
     33     ldmcsia r1!, {r3, r4, ip, lr}
     34     stmcsia r0!, {r3, r4, ip, lr}
     35     ldmcsia r1!, {r3, r4, ip, lr}
     36     stmcsia r0!, {r3, r4, ip, lr}
     37     subcss  r2, r2, #32     ; 0x20
     38     bcs     memcpy4_label1
     39 memcpy4_label2
     40     movs    ip, r2, lsl #28
     41     ldmcsia r1!, {r3, r4, ip, lr}
     42     stmcsia r0!, {r3, r4, ip, lr}
     43     ldmmiia r1!, {r3, r4}
     44     stmmiia r0!, {r3, r4}
     45     ldmia   sp!, {r4, lr}
     46     movs    ip, r2, lsl #30
     47     ldrcs   r3, [r1], #4
     48     strcs   r3, [r0], #4
     49     bxeq    lr
     50 
     51 _memcpy4_lastbytes_aligned
     52     movs    r2, r2, lsl #31
     53     ldrcsh  r3, [r1], #2
     54     ldrmib  r2, [r1], #1
     55     strcsh  r3, [r0], #2
     56     strmib  r2, [r0], #1
     57     bx      lr
     58 
     59     END
     60 
     61