On 3/12/2012, at 4:22 AM, Jan K wrote: > Hi! > I'm trying to get the cross-toolchain for cortex-m0 working. The target is arm-none-eabi. > The gcc has no problem compiling my code using allowed instructions only. As long as I do not try to use / or % my code runs as expected. > When I try to divide, GCC uses and appends ARM runtime ABI functions (which is correct, since m0 has no hardware division op). > The problem is that included functions (in particular: __aeabi_idiv) use instructions that are _not_ part of the cortex-m0 instructions set (like lsleq, movne, rsbmi). > I compile and link the code with '-mcpu=cortex-m0 -mthumb' flags. > What I want to is to force gcc to include the ARM runtime ABI functions that work with cortex-m0. > How can I get it working? Am I missing something? Is it anyhow possible? How libgcc (and other GCC libraries) are compiled is defined by multilib flags. It appears that the default multilib for the compiler that you built is not "-mcpu=cortex-m0" (probably, it's something ARMv4-ish). For a quick fix try adding --with-arch=cortex-m0 to GCC configure line. -- Maxim Kuvyrkov CodeSourcery / Mentor Graphics