<div dir="ltr">Hi,<div><br></div><div>In ./Configure, there is this comment:<br></div><div><br></div><div><div>        # big-endian platform. This is because ARMv7 processor always</div><div>        # picks instructions in little-endian order. Another similar</div><div>        # limitation is that -mthumb can't "cross" -march=armv6t2</div><div>        # boundary, because that's where it became Thumb-2. Well, this</div><div>        # limitation is a bit artificial, because it's not really</div><div>        # impossible, but it's deemed too tricky to support. </div></div><div><br></div><div><div>Cortex-M3 and Cortex-M4 processors are -mthumb, -march=armv7-m, which is exactly the problematic configuration, if I understand that comment correctly. I am interested in getting libcrypto working for these processors with the assembly language optimizations enabled. Specifically, the configuration I am interested in is:</div><div><br></div><div>CC=arm-none-eabi-gcc -mcpu=cortex-m3 -march=armv7-m -mthumb  -D__ARM_MAX_ARCH__=7.<br></div><div><br></div><div>Currently, the assembly language source files don't compile because they expect to be able to use ARM (-marm) instructions when __ARM_MAX_ARCH__ >= 7. Further, they try to do feature detection for NEON in that case, but I'd prefer to not have the feature detection compiled in, since I know NEON is never available.</div><div><br></div><div><div>Has anybody started working on this?</div></div><div><br></div><div>If not, my thinking was to refactor the assembly language code so that all the ARM-only (-marm) code is cleanly separated from the unified (-mthumb and -marm) code, move the detection of NEON from the assembly language code to the C wrappers, and recognize two new settings, OPENSSL_NO_ARM_NEON and OPENSSL_ARM_THUMB_ONLY, to accommodate this. Does this seem like a reasonable strategy? It would be quite a large change so I think it would be good to have some coordination ahead of time.</div><div><br></div><div>Cheers,</div><div>Brian</div>-- <br><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><a href="https://briansmith.org/" target="_blank">https://briansmith.org/</a></div><div><br></div></div></div></div></div></div></div>
</div></div>