Its a fact that anybody knows that to avoid illegal instruction on mini2440 we should use the flags: -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t The question is: What means these flags? Anyone could post a link that explain better than gcc manual? -msoft-float = D: Generate output containing library calls for floating point. Q: What this means to me? -D__GCC_FLOAT_NOT_NEEDED = ? -march = D: cpu type Q: What is the difference between "armv4t" and "armv4"? -mtune=arm920t = D: Set only the instruction scheduling parameters for machine type cpu_type. The instruction set is not changed. D: - definition on gcc manual Q: - question source: http://bama.ua.edu/cgi-bin/man-cgi?gcc
flags to avoid illegal instruction
Q: What this means to me? Means that instead of having floating-point-unit processor calculations (arm920t doesn't have such processor) it will place calls to libraries that will emulate the same behavior (only much, much slower) -D__GCC_FLOAT_NOT_NEEDED means that a compile-time define/symbol will be defined, so the final code being compiled will be different in case there are any "#ifdef __GCC_FLOAT_NOT_NEEDED" statements in the code you're compiling. Q: What is the difference between "armv4t" and "armv4"? armv4t supports thumb mode, which is a 16-bit mode that achieves better code density (more program-per-kilobyte)