d119b0d759
Subject: [PATCH 2/2] Replace ARM arithmetic support routines with EDK2 versions. Replace the incomplete GPL licensed ARM arithmetic support routines with the ones from the EDK2 project. These cover long long multiplication and long long logical shift as well. Also remove the special case for small dividends in DivU64x32: we can simply let the compiler handle this, and emit calls to the support routines where appropriate. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Nigel Croxon <nigel.croxon@hpe.com>
34 lines
955 B
ArmAsm
34 lines
955 B
ArmAsm
#------------------------------------------------------------------------------
|
|
#
|
|
# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
|
#
|
|
# This program and the accompanying materials
|
|
# 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
|
|
# http://opensource.org/licenses/bsd-license.php
|
|
#
|
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
#include "edk2asm.h"
|
|
|
|
.text
|
|
GCC_ASM_EXPORT(__aeabi_lmul)
|
|
#
|
|
#INT64
|
|
#EFIAPI
|
|
#__aeabi_lmul (
|
|
# IN INT64 Multiplicand
|
|
# IN INT64 Multiplier
|
|
# );
|
|
#
|
|
ASM_PFX(__aeabi_lmul):
|
|
stmdb sp!, {lr}
|
|
mov lr, r0
|
|
umull r0, ip, r2, lr
|
|
mla r1, r2, r1, ip
|
|
mla r1, r3, lr, r1
|
|
ldmia sp!, {pc}
|