https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82717
--- Comment #5 from Alex Bradbury <asb at lowrisc dot org> --- (In reply to palmer from comment #4) > """ > @item -mabi=@var{ABI-string} > @opindex mabi > Specify integer and floating-point calling convention. @var{ABI-string} > contains two parts: the size of integer types and the registers used for > floating-point types. For example "-march=rv64ifd -mabi=lp64d" means that > "long" and pointers are 64-bit (implicitly defining "int" to be 32-bit), and > that floating-point values up to 64 bits wide are passed in F registers. > Contrast this with "-march=rv64ifd -mabi=lp64f", which still allows the > compiler to generate code that uses the F and D extensions but only allows > floating-point values up to 32 bits long to be passed in registers; or > "-march=rv64ifd -mabi=lp64", in which no floating-point arguments will be > passed in registers. > > The default for this argument is system dependent, users who want a specific > calling convention should specify one explicitly. The valid calling > conventions are: ilp32, ilp32f, ilp32d, lp64, lp64f, and lp64d. Some > calling conventions are impossible to implement on some ISAs: for example, > "-march=rv32if -mabi=ilp32d" is invalid because the ABI requires 64-bit > values be passed in F registers, but F registers are only 32 bits wide. > """ Looks great to me!