It'll almost certainly be to do with jsnative.c. This calls C functions with a varying number of arguments and argument types - unfortunately how it does so depends on how the underlying architecture of the CPU calls things.
It might be that just changing the #ifdef ARM to #if defined(ARM) || defined(XTENSA) would do the trick, but you'd have to do some testing (actually it should probably work the other way, testing for x86 - as that's the one that's completely crazy).
The issue is really whether floating point arguments are passed on the same stack/registers as normal args. In ARM (and prob Xtensa) they are, but in x86 they aren't.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
It'll almost certainly be to do with
jsnative.c
. This calls C functions with a varying number of arguments and argument types - unfortunately how it does so depends on how the underlying architecture of the CPU calls things.It might be that just changing the
#ifdef ARM
to#if defined(ARM) || defined(XTENSA)
would do the trick, but you'd have to do some testing (actually it should probably work the other way, testing for x86 - as that's the one that's completely crazy).The issue is really whether floating point arguments are passed on the same stack/registers as normal args. In ARM (and prob Xtensa) they are, but in x86 they aren't.