authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-20 18:37:13+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-23 09:27:17+02:00
logabf40caeb7d85d8fc842fe82215b19902b749481
treebab863bd58f6d5635bdd17c77fdd860b6132f046
parentbeb507a1edadb2829478d066b80ea62ed537157a
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.builtin: add CallingConvention.msp430_interrupt

Supported by LLVM and CBE.

7 files changed, 9 insertions(+), 0 deletions(-)

lib/std/Target.zig+1
...@@ -1907,6 +1907,7 @@ pub const Cpu = struct {...@@ -1907,6 +1907,7 @@ pub const Cpu = struct {
1907 => &.{ .microblaze, .microblazeel },1907 => &.{ .microblaze, .microblazeel },
19081908
1909 .msp430_eabi,1909 .msp430_eabi,
1910 .msp430_interrupt,
1910 => &.{.msp430},1911 => &.{.msp430},
19111912
1912 .or1k_sysv,1913 .or1k_sysv,
lib/std/builtin.zig+1
...@@ -326,6 +326,7 @@ pub const CallingConvention = union(enum(u8)) {...@@ -326,6 +326,7 @@ pub const CallingConvention = union(enum(u8)) {
326326
327 /// The standard `msp430` calling convention.327 /// The standard `msp430` calling convention.
328 msp430_eabi: CommonOptions,328 msp430_eabi: CommonOptions,
329 msp430_interrupt: CommonOptions,
329330
330 /// The standard `or1k` calling convention.331 /// The standard `or1k` calling convention.
331 or1k_sysv: CommonOptions,332 or1k_sysv: CommonOptions,
src/Sema.zig+3
...@@ -9137,6 +9137,7 @@ fn callConvIsCallable(cc: std.builtin.CallingConvention.Tag) bool {...@@ -9137,6 +9137,7 @@ fn callConvIsCallable(cc: std.builtin.CallingConvention.Tag) bool {
9137 .m68k_interrupt,9137 .m68k_interrupt,
9138 .mips_interrupt,9138 .mips_interrupt,
9139 .mips64_interrupt,9139 .mips64_interrupt,
9140 .msp430_interrupt,
9140 .riscv32_interrupt,9141 .riscv32_interrupt,
9141 .riscv64_interrupt,9142 .riscv64_interrupt,
9142 .x86_interrupt,9143 .x86_interrupt,
...@@ -9301,6 +9302,7 @@ fn funcCommon(...@@ -9301,6 +9302,7 @@ fn funcCommon(
9301 .avr_interrupt,9302 .avr_interrupt,
9302 .csky_interrupt,9303 .csky_interrupt,
9303 .m68k_interrupt,9304 .m68k_interrupt,
9305 .msp430_interrupt,
9304 .avr_signal,9306 .avr_signal,
9305 => return sema.fail(block, param_src, "parameters are not allowed with '{s}' calling convention", .{@tagName(cc)}),9307 => return sema.fail(block, param_src, "parameters are not allowed with '{s}' calling convention", .{@tagName(cc)}),
9306 else => {},9308 else => {},
...@@ -9528,6 +9530,7 @@ fn finishFunc(...@@ -9528,6 +9530,7 @@ fn finishFunc(
9528 .avr_interrupt,9530 .avr_interrupt,
9529 .csky_interrupt,9531 .csky_interrupt,
9530 .m68k_interrupt,9532 .m68k_interrupt,
9533 .msp430_interrupt,
9531 .avr_signal,9534 .avr_signal,
9532 => if (return_type.zigTypeTag(zcu) != .void and return_type.zigTypeTag(zcu) != .noreturn) {9535 => if (return_type.zigTypeTag(zcu) != .void and return_type.zigTypeTag(zcu) != .noreturn) {
9533 return sema.fail(block, ret_ty_src, "function with calling convention '{s}' must return 'void' or 'noreturn'", .{@tagName(cc_resolved)});9536 return sema.fail(block, ret_ty_src, "function with calling convention '{s}' must return 'void' or 'noreturn'", .{@tagName(cc_resolved)});
src/Zcu.zig+1
...@@ -4426,6 +4426,7 @@ pub fn callconvSupported(zcu: *Zcu, cc: std.builtin.CallingConvention) union(enu...@@ -4426,6 +4426,7 @@ pub fn callconvSupported(zcu: *Zcu, cc: std.builtin.CallingConvention) union(enu
4426 .riscv32_ilp32_v,4426 .riscv32_ilp32_v,
4427 .m68k_rtd,4427 .m68k_rtd,
4428 .m68k_interrupt,4428 .m68k_interrupt,
4429 .msp430_interrupt,
4429 => |opts| opts.incoming_stack_alignment == null,4430 => |opts| opts.incoming_stack_alignment == null,
44304431
4431 .arm_aapcs_vfp,4432 .arm_aapcs_vfp,
src/codegen/c.zig+1
...@@ -8113,6 +8113,7 @@ fn toCallingConvention(cc: std.builtin.CallingConvention, zcu: *Zcu) ?[]const u8...@@ -8113,6 +8113,7 @@ fn toCallingConvention(cc: std.builtin.CallingConvention, zcu: *Zcu) ?[]const u8
8113 .avr_interrupt,8113 .avr_interrupt,
8114 .csky_interrupt,8114 .csky_interrupt,
8115 .m68k_interrupt,8115 .m68k_interrupt,
8116 .msp430_interrupt,
8116 .x86_interrupt,8117 .x86_interrupt,
8117 .x86_64_interrupt,8118 .x86_64_interrupt,
8118 => "interrupt",8119 => "interrupt",
src/codegen/llvm.zig+1
...@@ -11900,6 +11900,7 @@ fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: *const s...@@ -11900,6 +11900,7 @@ fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: *const s
11900 .avr_interrupt => .avr_intrcc,11900 .avr_interrupt => .avr_intrcc,
11901 .m68k_rtd => .m68k_rtdcc,11901 .m68k_rtd => .m68k_rtdcc,
11902 .m68k_interrupt => .m68k_intrcc,11902 .m68k_interrupt => .m68k_intrcc,
11903 .msp430_interrupt => .msp430_intrcc,
11903 .amdgcn_kernel => .amdgpu_kernel,11904 .amdgcn_kernel => .amdgpu_kernel,
11904 .amdgcn_cs => .amdgpu_cs,11905 .amdgcn_cs => .amdgpu_cs,
11905 .nvptx_device => .ptx_device,11906 .nvptx_device => .ptx_device,
src/link/Dwarf.zig+1
...@@ -3925,6 +3925,7 @@ fn updateLazyType(...@@ -3925,6 +3925,7 @@ fn updateLazyType(
3925 .avr_interrupt,3925 .avr_interrupt,
3926 .csky_interrupt,3926 .csky_interrupt,
3927 .m68k_interrupt,3927 .m68k_interrupt,
3928 .msp430_interrupt,
3928 => .normal,3929 => .normal,
39293930
3930 else => .nocall,3931 else => .nocall,