| ... | @@ -2489,6 +2489,25 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { | ... | @@ -2489,6 +2489,25 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { |
| 2489 | }, | 2489 | }, |
| 2490 | else => return self.fail(src, "TODO implement getSetReg for arm {}", .{mcv}), | 2490 | else => return self.fail(src, "TODO implement getSetReg for arm {}", .{mcv}), |
| 2491 | }, | 2491 | }, |
| | 2492 | .aarch64 => switch (mcv) { |
| | 2493 | .dead => unreachable, |
| | 2494 | .ptr_stack_offset => unreachable, |
| | 2495 | .ptr_embedded_in_code => unreachable, |
| | 2496 | .unreach, .none => return, // Nothing to do. |
| | 2497 | .undef => { |
| | 2498 | if (!self.wantSafety()) |
| | 2499 | return; // The already existing value will do just fine. |
| | 2500 | // Write the debug undefined value. |
| | 2501 | switch (reg.size()) { |
| | 2502 | 32 => return self.genSetReg(src, reg, .{ .immediate = 0xaaaaaaaa }), |
| | 2503 | 64 => return self.genSetReg(src, reg, .{ .immediate = 0xaaaaaaaaaaaaaaaa }), |
| | 2504 | else => unreachable, // unexpected register size |
| | 2505 | } |
| | 2506 | }, |
| | 2507 | .immediate => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}), |
| | 2508 | .register => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}), |
| | 2509 | else => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}), |
| | 2510 | }, |
| 2492 | .riscv64 => switch (mcv) { | 2511 | .riscv64 => switch (mcv) { |
| 2493 | .dead => unreachable, | 2512 | .dead => unreachable, |
| 2494 | .ptr_stack_offset => unreachable, | 2513 | .ptr_stack_offset => unreachable, |