diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2024-10-28 22:47:57 +0100 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2024-11-02 10:44:18 +0100 |
| commit | c217fd2b9ca06d51b8c67a7a556e61ae71a25dbb (patch) | |
| tree | e9be8fff60e7b1d1d42305b9c6bfcd910a0ae60b /src/codegen | |
| parent | 3a5142af8dcafea7062588b9d217ae82735c0bac (diff) | |
| download | zig-c217fd2b9ca06d51b8c67a7a556e61ae71a25dbb.tar.gz zig-c217fd2b9ca06d51b8c67a7a556e61ae71a25dbb.zip | |
cbe: Support some more calling conventions.
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/c.zig | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index d7b2ca3d09..a56c1e7951 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, .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` }; } |
