Add some very basic support for the Intel32 ABI.
In 32-bit mode, all function arguments are passed on the stack, not in registers. This ABI support is not complete or properly tested, but at least it doesn't try to pass arguments in r8.
This commit is contained in:
@@ -106,9 +106,17 @@ impl ArgAssigner for Args {
|
||||
|
||||
/// Legalize `sig`.
|
||||
pub fn legalize_signature(sig: &mut ir::Signature, flags: &shared_settings::Flags, _current: bool) {
|
||||
let bits = if flags.is_64bit() { 64 } else { 32 };
|
||||
let bits;
|
||||
let mut args;
|
||||
|
||||
if flags.is_64bit() {
|
||||
bits = 64;
|
||||
args = Args::new(bits, &ARG_GPRS, 8);
|
||||
} else {
|
||||
bits = 32;
|
||||
args = Args::new(bits, &[], 0);
|
||||
}
|
||||
|
||||
let mut args = Args::new(bits, &ARG_GPRS, 8);
|
||||
legalize_args(&mut sig.argument_types, &mut args);
|
||||
|
||||
let mut rets = Args::new(bits, &RET_GPRS, 2);
|
||||
|
||||
Reference in New Issue
Block a user