aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/c.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-11-03 14:27:09 +0100
committerGitHub <noreply@github.com>2024-11-03 14:27:09 +0100
commit3054486d1dedd49553680da2c074d1ab413797fd (patch)
tree79c3d4e9b417d14ddb11a47e26da083d5e06e8aa /src/codegen/c.zig
parent2f003f39b28176f08de51271eb66b5f3a54c7aae (diff)
parente4e3d7ab4140ae6f078d3ffd72fce4c0a5e6e59f (diff)
downloadzig-3054486d1dedd49553680da2c074d1ab413797fd.tar.gz
zig-3054486d1dedd49553680da2c074d1ab413797fd.zip
Merge pull request #21843 from alexrp/callconv-followup
Some follow-up work for #21697
Diffstat (limited to 'src/codegen/c.zig')
-rw-r--r--src/codegen/c.zig35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index 41ec422959..0410023588 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -7622,11 +7622,44 @@ fn toCallingConvention(cc: std.builtin.CallingConvention, zcu: *Zcu) ?[]const u8
.aarch64_vfabi => "aarch64_vector_pcs",
.aarch64_vfabi_sve => "aarch64_sve_pcs",
+
.arm_aapcs => "pcs(\"aapcs\")",
- .arm_aapcs_vfp => "pcs(\"aapcs-vfp\")",
+ .arm_aapcs_vfp, .arm_aapcs16_vfp => "pcs(\"aapcs-vfp\")",
+
+ .arm_interrupt => |opts| switch (opts.type) {
+ .generic => "interrupt",
+ .irq => "interrupt(\"IRQ\")",
+ .fiq => "interrupt(\"FIQ\")",
+ .swi => "interrupt(\"SWI\")",
+ .abort => "interrupt(\"ABORT\")",
+ .undef => "interrupt(\"UNDEF\")",
+ },
+
+ .avr_signal => "signal",
+
+ .mips_interrupt,
+ .mips64_interrupt,
+ => |opts| switch (opts.mode) {
+ inline else => |m| "interrupt(\"" ++ @tagName(m) ++ "\")",
+ },
+
.riscv64_lp64_v, .riscv32_ilp32_v => "riscv_vector_cc",
+
+ .riscv32_interrupt,
+ .riscv64_interrupt,
+ => |opts| switch (opts.mode) {
+ inline else => |m| "interrupt(\"" ++ @tagName(m) ++ "\")",
+ },
+
.m68k_rtd => "m68k_rtd",
+ .avr_interrupt,
+ .csky_interrupt,
+ .m68k_interrupt,
+ .x86_interrupt,
+ .x86_64_interrupt,
+ => "interrupt",
+
else => unreachable, // `Zcu.callconvSupported`
};
}