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

@ -91,7 +91,7 @@ struct codec_api ci = {
NULL, /* loop_track */
/* kernel/ system */
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
#if defined(ARM_NEED_DIV0)
__div0,
#endif
sleep,

View file

@ -463,7 +463,7 @@ static const struct plugin_api rockbox_api = {
talk_force_enqueue_next,
/* kernel/ system */
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
#if defined(ARM_NEED_DIV0)
__div0,
#endif
sleep,

View file

@ -537,7 +537,7 @@ struct plugin_api {
void (*talk_force_enqueue_next)(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

@ -22,7 +22,7 @@
****************************************************************************/
#include "plugin.h"
#if defined(CPU_ARM) && (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if defined(ARM_NEED_DIV0)
void __attribute__((naked)) __div0(void)
{
asm volatile("bx %0" : : "r"(rb->__div0));

View file

@ -593,7 +593,7 @@ static void init_ci(void)
ci.semaphore_release = rb->semaphore_release;
#endif
#if defined(CPU_ARM) && (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if defined(ARM_NEED_DIV0)
ci.__div0 = rb->__div0;
#endif
}