Re: build error
- Posted by mattlewis (admin) Apr 03, 2013
- 1697 views
Well, having enough arm eubins is part of more mature support, to me. Also, we don't currently have any "official" eubins for ARM. I think generous and adventurous souls have uploaded theirs.
We have official eubins for ARM: http://openeuphoria.org/eubins/linux/4.1.0/arm-32-bit/
(They are out of date, but this is the case for all the linux eubins, sadly.)
Oh, whoops, I wasn't paying attention, apparently.
Hmm...yes, they seem to have some kind of fake out going on between soft and hard float stuff. It's still a bit over my head. They mention runtime detection of hard vs soft float. I think we'll need to figure that out in order to get the ABI correct.
I'd have hoped that GCC would have taken care of all that stuff for us...
I don't think it can. I mean, as far as our compiled C it's no problem, but be_callc.c is a whole 'nother ball of wax. In general, 4 integer registers are used for passing parameters, and then stuff goes onto the stack.
For hardfloat, the floating point registers are used (and actually, I suspect that my current implementation will break when passing floats instead of doubles, but I haven't tested it yet...we need to add C_FLOAT tests to t_callc.e). There are 16 of those, and I think they all can be used. They're also used to return floating point return values.
But soft floats break up floating point values across registers / the stack (well, doubles get spread out, floats obviously fit inside of the regular 32-bit registers).
Matt