Commit abf40caeb7
Changed files (7)
lib
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,
lib/std/Target.zig
@@ -1907,6 +1907,7 @@ pub const Cpu = struct {
=> &.{ .microblaze, .microblazeel },
.msp430_eabi,
+ .msp430_interrupt,
=> &.{.msp430},
.or1k_sysv,
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",
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,
src/link/Dwarf.zig
@@ -3925,6 +3925,7 @@ fn updateLazyType(
.avr_interrupt,
.csky_interrupt,
.m68k_interrupt,
+ .msp430_interrupt,
=> .normal,
else => .nocall,
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)});
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,