Skip to content

Incorrect generation of parameters for 32-bit ARM ABI

When generating code for function parameters on the stack (rather than in registers), for example abi_imm_to_mem and so on, the code assumes that the value to be written is the same size as the parameter type, e.g. byte for uint8_t and so on.

This violates the ARM ABI, which requires that parameters are widened to 32 bits minimum in all cases.

(This is the source of the "Invalid keyword" error I've been getting in Guile compiled with clang.)