ArmPkg/CompilerIntrinsicsLib: Reverse the order of the 'ldrb' instructions in __aeabi_uread4

Change __aeabi_uread4 from:
    ldrb    r2, [r0, #1]
    ldrb    r1, [r0]
    (...)
to:
    ldrb    r1, [r0]
    ldrb    r2, [r0, #1]
    (...)

This change is a workaround to handle correctly __aeabi_uread4 on ARM
Versatile Express RTSM.
It should not have any major consequence on the other ARM platforms.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12481 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2011-09-29 20:55:10 +00:00
parent fa16d12dcc
commit 68085d37f8

View File

@ -1,38 +1,38 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// //
// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
// //
// This program and the accompanying materials // This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD License // are licensed and made available under the terms and conditions of the BSD License
// which accompanies this distribution. The full text of the license may be found at // which accompanies this distribution. The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php // http://opensource.org/licenses/bsd-license.php
// //
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, // THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
// //
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
EXPORT __aeabi_uread4 EXPORT __aeabi_uread4
AREA Uread4, CODE, READONLY AREA Uread4, CODE, READONLY
; ;
;UINT32 ;UINT32
;EFIAPI ;EFIAPI
;__aeabi_uread4 ( ;__aeabi_uread4 (
; IN VOID *Pointer ; IN VOID *Pointer
; ); ; );
; ;
__aeabi_uread4 __aeabi_uread4
ldrb r2, [r0, #1] ldrb r1, [r0]
ldrb r1, [r0] ldrb r2, [r0, #1]
ldrb r3, [r0, #2] ldrb r3, [r0, #2]
ldrb r0, [r0, #3] ldrb r0, [r0, #3]
orr r1, r1, r2, lsl #8 orr r1, r1, r2, lsl #8
orr r1, r1, r3, lsl #16 orr r1, r1, r3, lsl #16
orr r0, r1, r0, lsl #24 orr r0, r1, r0, lsl #24
bx lr bx lr
END END