zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit abf40caeb7d85d8fc842fe82215b19902b749481 (tree)
parent beb507a1edadb2829478d066b80ea62ed537157a
Author: Alex Rønne Petersen <alex@alexrp.com>
Date:   Mon, 20 Oct 2025 18:37:13 +0200

std.builtin: add CallingConvention.msp430_interrupt

Supported by LLVM and CBE.

Diffstat:
Mlib/std/Target.zig | 1+
Mlib/std/builtin.zig | 1+
Msrc/Sema.zig | 3+++
Msrc/Zcu.zig | 1+
Msrc/codegen/c.zig | 1+
Msrc/codegen/llvm.zig | 1+
Msrc/link/Dwarf.zig | 1+
7 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/lib/std/Target.zig b/lib/std/Target.zig @@ -1907,6 +1907,7 @@ pub const Cpu = struct { => &.{ .microblaze, .microblazeel }, .msp430_eabi, + .msp430_interrupt, => &.{.msp430}, .or1k_sysv, diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig @@ -326,6 +326,7 @@ pub const CallingConvention = union(enum(u8)) { /// The standard `msp430` calling convention. msp430_eabi: CommonOptions, + msp430_interrupt: CommonOptions, /// The standard `or1k` calling convention. or1k_sysv: CommonOptions, diff --git a/src/Sema.zig b/src/Sema.zig @@ -9137,6 +9137,7 @@ fn callConvIsCallable(cc: std.builtin.CallingConvention.Tag) bool { .m68k_interrupt, .mips_interrupt, .mips64_interrupt, + .msp430_interrupt, .riscv32_interrupt, .riscv64_interrupt, .x86_interrupt, @@ -9301,6 +9302,7 @@ fn funcCommon( .avr_interrupt, .csky_interrupt, .m68k_interrupt, + .msp430_interrupt, .avr_signal, => return sema.fail(block, param_src, "parameters are not allowed with '{s}' calling convention", .{@tagName(cc)}), else => {}, @@ -9528,6 +9530,7 @@ fn finishFunc( .avr_interrupt, .csky_interrupt, .m68k_interrupt, + .msp430_interrupt, .avr_signal, => if (return_type.zigTypeTag(zcu) != .void and return_type.zigTypeTag(zcu) != .noreturn) { return sema.fail(block, ret_ty_src, "function with calling convention '{s}' must return 'void' or 'noreturn'", .{@tagName(cc_resolved)}); diff --git a/src/Zcu.zig b/src/Zcu.zig @@ -4426,6 +4426,7 @@ pub fn callconvSupported(zcu: *Zcu, cc: std.builtin.CallingConvention) union(enu .riscv32_ilp32_v, .m68k_rtd, .m68k_interrupt, + .msp430_interrupt, => |opts| opts.incoming_stack_alignment == null, .arm_aapcs_vfp, diff --git a/src/codegen/c.zig b/src/codegen/c.zig @@ -8113,6 +8113,7 @@ fn toCallingConvention(cc: std.builtin.CallingConvention, zcu: *Zcu) ?[]const u8 .avr_interrupt, .csky_interrupt, .m68k_interrupt, + .msp430_interrupt, .x86_interrupt, .x86_64_interrupt, => "interrupt", diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig @@ -11900,6 +11900,7 @@ fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: *const s .avr_interrupt => .avr_intrcc, .m68k_rtd => .m68k_rtdcc, .m68k_interrupt => .m68k_intrcc, + .msp430_interrupt => .msp430_intrcc, .amdgcn_kernel => .amdgpu_kernel, .amdgcn_cs => .amdgpu_cs, .nvptx_device => .ptx_device, diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig @@ -3925,6 +3925,7 @@ fn updateLazyType( .avr_interrupt, .csky_interrupt, .m68k_interrupt, + .msp430_interrupt, => .normal, else => .nocall,