arm/libgcc: Support signed 64-bit division
commitf6bb293f1c2ed33f09159a5e0b094e81576ef7f3
authorRob Barnes <robbarnes@google.com>
Wed, 27 Jul 2022 18:57:07 +0000 (27 18:57 +0000)
committerMartin L Roth <gaumless@gmail.com>
Sat, 13 Aug 2022 17:20:32 +0000 (13 17:20 +0000)
tree5df9a923571495be99201347970e1b62dc861fa1
parentb11f9f7e162759cf5ae0f033e125e9158520030d
arm/libgcc: Support signed 64-bit division

Add support for signed 64-bit division. The implementation mostly
relies on __aeabi_uldivmod, which is already implemented.

ldivmod.S was adapted from CrOS EC version of ldivmod.S:
https://chromium.googlesource.com/chromiumos/platform/ec/+/main/third_party/libaeabi-cortexm0/core/cortex-m0/ldivmod.S

The CrOS EC version was adapted from:
https://github.com/bobbl/libaeabi-cortexm0/blob/master/ldivmod.S

BUG=b:240316722
BRANCH=None
TEST=Signed division works in PSP verstage (runs on ARM)

Change-Id: I53785c732b0fa35a4809bc054f1482c5461ada7b
Signed-off-by: Rob Barnes <robbarnes@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/66207
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
AUTHORS
src/arch/arm/libgcc/Makefile.inc
src/arch/arm/libgcc/ldivmod.S [new file with mode: 0644]