Division is a very slow operation, so we have sped it up by disabling interrupts so we can use shadow registers and etc. However, other toolchains/environments for the eZ80 can't have CRT/libc routines disabling interrupts or using shadow registers. One example here AgonPlatform/agondev#38.
We currently provide a fallback implementation of __ldvrmu that does not use shadow registers. However, we do not have any fallback implementations for ldiv_t ldiv(long, long), __i48dvrmu, or __lldvrmu. Additionally, __llmulu clobbers SP.S, so we should also provide a fallback that does not do that.
Division is a very slow operation, so we have sped it up by disabling interrupts so we can use shadow registers and etc. However, other toolchains/environments for the eZ80 can't have CRT/libc routines disabling interrupts or using shadow registers. One example here AgonPlatform/agondev#38.
We currently provide a fallback implementation of
__ldvrmuthat does not use shadow registers. However, we do not have any fallback implementations forldiv_t ldiv(long, long),__i48dvrmu, or__lldvrmu. Additionally,__llmuluclobbersSP.S, so we should also provide a fallback that does not do that.