1
0
Fork 0
forked from len0rd/rockbox

arm: add support for processors with hardware division

ARMv7-M has hardware division, so it doesn't require __div0
or any support functions for 32-bit division.

Change-Id: I840683a1a77d737f378899ca4bcf858216b81014
This commit is contained in:
Aidan MacDonald 2025-01-10 16:30:22 +00:00 committed by Solomon Peachy
parent 7e8a818d95
commit 639b587fc7
12 changed files with 25 additions and 14 deletions

View file

@ -66,7 +66,7 @@ enum codec_status codec_start(enum codec_entry_call_reason reason)
return codec_main(reason);
}
#if defined(CPU_ARM) && (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if defined(ARM_NEED_DIV0)
void __attribute__((naked)) __div0(void)
{
asm volatile("bx %0" : : "r"(ci->__div0));

View file

@ -154,7 +154,7 @@ struct codec_api {
bool (*loop_track)(void);
/* kernel/ system */
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
#if defined(ARM_NEED_DIV0)
void (*__div0)(void);
#endif
unsigned (*sleep)(unsigned ticks);

View file

@ -1,8 +1,10 @@
predictor.c
#ifdef CPU_ARM
#if defined(CPU_ARM)
predictor-arm.S
#if !defined(ARM_HAVE_HW_DIV)
udiv32_arm.S
#elif defined CPU_COLDFIRE
#endif
#elif defined(CPU_COLDFIRE)
predictor-cf.S
#endif
entropy.c

View file

@ -125,7 +125,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
#ifndef __ASSEMBLER__
#if defined(CPU_ARM) && (ARM_ARCH < 5 || defined(USE_IRAM))
#if defined(CPU_ARM) && (ARM_ARCH < 5 || defined(USE_IRAM)) && !defined(ARM_HAVE_HW_DIV)
/* optimised unsigned integer division for ARMv4, in IRAM */
unsigned udiv32_arm(unsigned a, unsigned b);
#define UDIV32(a, b) udiv32_arm(a, b)