aboutsummaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2021-12-18 06:11:46 +0100
committerRobin Voetter <robin@voetter.nl>2021-12-21 01:41:51 +0100
commitddd2ef822f99979d3ea61583a91ab236942e6367 (patch)
treea95dc4847af72a411d1a638e10b0fc056d67e511 /src/arch
parent2f7e98c129ca3c86fe20c043078bcc7f2fe477d6 (diff)
downloadzig-ddd2ef822f99979d3ea61583a91ab236942e6367.tar.gz
zig-ddd2ef822f99979d3ea61583a91ab236942e6367.zip
stage2: @returnAddress()
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/aarch64/CodeGen.zig5
-rw-r--r--src/arch/arm/CodeGen.zig5
-rw-r--r--src/arch/riscv64/CodeGen.zig5
-rw-r--r--src/arch/x86_64/CodeGen.zig5
4 files changed, 20 insertions, 0 deletions
diff --git a/src/arch/aarch64/CodeGen.zig b/src/arch/aarch64/CodeGen.zig
index fda673631d..1c6d54485b 100644
--- a/src/arch/aarch64/CodeGen.zig
+++ b/src/arch/aarch64/CodeGen.zig
@@ -547,6 +547,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
.block => try self.airBlock(inst),
.br => try self.airBr(inst),
.breakpoint => try self.airBreakpoint(),
+ .ret_addr => try self.airRetAddr(),
.fence => try self.airFence(),
.call => try self.airCall(inst),
.cond_br => try self.airCondBr(inst),
@@ -1416,6 +1417,10 @@ fn airBreakpoint(self: *Self) !void {
return self.finishAirBookkeeping();
}
+fn airRetAddr(self: *Self) !void {
+ return self.fail("TODO implement airRetAddr for {}", .{self.target.cpu.arch});
+}
+
fn airFence(self: *Self) !void {
return self.fail("TODO implement fence() for {}", .{self.target.cpu.arch});
//return self.finishAirBookkeeping();
diff --git a/src/arch/arm/CodeGen.zig b/src/arch/arm/CodeGen.zig
index bcc1b927e7..0039d78434 100644
--- a/src/arch/arm/CodeGen.zig
+++ b/src/arch/arm/CodeGen.zig
@@ -545,6 +545,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
.block => try self.airBlock(inst),
.br => try self.airBr(inst),
.breakpoint => try self.airBreakpoint(),
+ .ret_addr => try self.airRetAddr(),
.fence => try self.airFence(),
.call => try self.airCall(inst),
.cond_br => try self.airCondBr(inst),
@@ -1850,6 +1851,10 @@ fn airBreakpoint(self: *Self) !void {
return self.finishAirBookkeeping();
}
+fn airRetAddr(self: *Self) !void {
+ return self.fail("TODO implement airRetAddr for {}", .{self.target.cpu.arch});
+}
+
fn airFence(self: *Self) !void {
return self.fail("TODO implement fence() for {}", .{self.target.cpu.arch});
//return self.finishAirBookkeeping();
diff --git a/src/arch/riscv64/CodeGen.zig b/src/arch/riscv64/CodeGen.zig
index 1d67ad0abf..51703681e9 100644
--- a/src/arch/riscv64/CodeGen.zig
+++ b/src/arch/riscv64/CodeGen.zig
@@ -526,6 +526,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
.block => try self.airBlock(inst),
.br => try self.airBr(inst),
.breakpoint => try self.airBreakpoint(),
+ .ret_addr => try self.airRetAddr(),
.fence => try self.airFence(),
.call => try self.airCall(inst),
.cond_br => try self.airCondBr(inst),
@@ -1354,6 +1355,10 @@ fn airBreakpoint(self: *Self) !void {
return self.finishAirBookkeeping();
}
+fn airRetAddr(self: *Self) !void {
+ return self.fail("TODO implement airRetAddr for {}", .{self.target.cpu.arch});
+}
+
fn airFence(self: *Self) !void {
return self.fail("TODO implement fence() for {}", .{self.target.cpu.arch});
//return self.finishAirBookkeeping();
diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig
index 8fadcdd5f5..3b40293527 100644
--- a/src/arch/x86_64/CodeGen.zig
+++ b/src/arch/x86_64/CodeGen.zig
@@ -579,6 +579,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
.block => try self.airBlock(inst),
.br => try self.airBr(inst),
.breakpoint => try self.airBreakpoint(),
+ .ret_addr => try self.airRetAddr(),
.fence => try self.airFence(),
.call => try self.airCall(inst),
.cond_br => try self.airCondBr(inst),
@@ -1839,6 +1840,10 @@ fn airBreakpoint(self: *Self) !void {
return self.finishAirBookkeeping();
}
+fn airRetAddr(self: *Self) !void {
+ return self.fail("TODO implement airRetAddr for {}", .{self.target.cpu.arch});
+}
+
fn airFence(self: *Self) !void {
return self.fail("TODO implement fence() for {}", .{self.target.cpu.arch});
//return self.finishAirBookkeeping();