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 {
19071907 => &.{ .microblaze, .microblazeel },
19081908
19091909 .msp430_eabi,
1910 .msp430_interrupt,
19101911 => &.{.msp430},
19111912
19121913 .or1k_sysv,
lib/std/builtin.zig+1
......@@ -326,6 +326,7 @@ pub const CallingConvention = union(enum(u8)) {
326326
327327 /// The standard `msp430` calling convention.
328328 msp430_eabi: CommonOptions,
329 msp430_interrupt: CommonOptions,
329330
330331 /// The standard `or1k` calling convention.
331332 or1k_sysv: CommonOptions,
src/Sema.zig+3
......@@ -9137,6 +9137,7 @@ fn callConvIsCallable(cc: std.builtin.CallingConvention.Tag) bool {
91379137 .m68k_interrupt,
91389138 .mips_interrupt,
91399139 .mips64_interrupt,
9140 .msp430_interrupt,
91409141 .riscv32_interrupt,
91419142 .riscv64_interrupt,
91429143 .x86_interrupt,
......@@ -9301,6 +9302,7 @@ fn funcCommon(
93019302 .avr_interrupt,
93029303 .csky_interrupt,
93039304 .m68k_interrupt,
9305 .msp430_interrupt,
93049306 .avr_signal,
93059307 => return sema.fail(block, param_src, "parameters are not allowed with '{s}' calling convention", .{@tagName(cc)}),
93069308 else => {},
......@@ -9528,6 +9530,7 @@ fn finishFunc(
95289530 .avr_interrupt,
95299531 .csky_interrupt,
95309532 .m68k_interrupt,
9533 .msp430_interrupt,
95319534 .avr_signal,
95329535 => if (return_type.zigTypeTag(zcu) != .void and return_type.zigTypeTag(zcu) != .noreturn) {
95339536 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
44264426 .riscv32_ilp32_v,
44274427 .m68k_rtd,
44284428 .m68k_interrupt,
4429 .msp430_interrupt,
44294430 => |opts| opts.incoming_stack_alignment == null,
44304431
44314432 .arm_aapcs_vfp,
src/codegen/c.zig+1
......@@ -8113,6 +8113,7 @@ fn toCallingConvention(cc: std.builtin.CallingConvention, zcu: *Zcu) ?[]const u8
81138113 .avr_interrupt,
81148114 .csky_interrupt,
81158115 .m68k_interrupt,
8116 .msp430_interrupt,
81168117 .x86_interrupt,
81178118 .x86_64_interrupt,
81188119 => "interrupt",
src/codegen/llvm.zig+1
......@@ -11900,6 +11900,7 @@ fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: *const s
1190011900 .avr_interrupt => .avr_intrcc,
1190111901 .m68k_rtd => .m68k_rtdcc,
1190211902 .m68k_interrupt => .m68k_intrcc,
11903 .msp430_interrupt => .msp430_intrcc,
1190311904 .amdgcn_kernel => .amdgpu_kernel,
1190411905 .amdgcn_cs => .amdgpu_cs,
1190511906 .nvptx_device => .ptx_device,
src/link/Dwarf.zig+1
......@@ -3925,6 +3925,7 @@ fn updateLazyType(
39253925 .avr_interrupt,
39263926 .csky_interrupt,
39273927 .m68k_interrupt,
3928 .msp430_interrupt,
39283929 => .normal,
39293930
39303931 else => .nocall,