mirror of
https://github.com/ziglang/zig.git
synced 2026-10-14 10:27:43 -04:00
compiler-rt: don't export __clear_cache when no impl available
This commit is contained in:
2 files changed
+24
-10
No files matched your search
@@ -10,10 +10,29 @@ comptime {
|
||||
const strong_linkage = if (is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.Strong;
|
||||
|
||||
switch (builtin.arch) {
|
||||
.i386, .x86_64 => @export(@import("compiler_rt/stack_probe.zig").zig_probe_stack, .{ .name = "__zig_probe_stack", .linkage = linkage }),
|
||||
.aarch64, .aarch64_be, .aarch64_32, .arm, .armeb, .thumb, .thumbeb => {
|
||||
@export(@import("compiler_rt/clear_cache.zig").clear_cache, .{ .name = "__clear_cache", .linkage = linkage });
|
||||
.i386,
|
||||
.x86_64,
|
||||
=> @export(@import("compiler_rt/stack_probe.zig").zig_probe_stack, .{
|
||||
.name = "__zig_probe_stack",
|
||||
.linkage = linkage,
|
||||
}),
|
||||
|
||||
.aarch64,
|
||||
.aarch64_be,
|
||||
.aarch64_32,
|
||||
=> @export(@import("compiler_rt/clear_cache.zig").clear_cache, .{
|
||||
.name = "__clear_cache",
|
||||
.linkage = linkage,
|
||||
}),
|
||||
|
||||
.arm, .armeb, .thumb, .thumbeb => switch (builtin.os.tag) {
|
||||
.linux => @export(@import("compiler_rt/clear_cache.zig").clear_cache, .{
|
||||
.name = "__clear_cache",
|
||||
.linkage = linkage,
|
||||
}),
|
||||
else => {},
|
||||
},
|
||||
|
||||
else => {},
|
||||
}
|
||||
|
||||
|
||||
@@ -54,15 +54,10 @@ pub fn clear_cache(start: usize, end: usize) callconv(.C) void {
|
||||
// sysarch(ARM_SYNC_ICACHE, &arg);
|
||||
@compileError("TODO: implement for NetBSD/FreeBSD");
|
||||
} else if (os == .linux) {
|
||||
const result = std.os.linux.syscall3(
|
||||
std.os.linux.SYS_cacheflush,
|
||||
start,
|
||||
end,
|
||||
0,
|
||||
);
|
||||
const result = std.os.linux.syscall3(std.os.linux.SYS_cacheflush, start, end, 0);
|
||||
std.debug.assert(result == 0);
|
||||
} else {
|
||||
@compileError("compilerrt_abort");
|
||||
@compileError("no __clear_cache implementation available for this target");
|
||||
}
|
||||
} else if (os == .linux and mips) {
|
||||
@compileError("TODO");
|
||||
|
||||
Reference in new issue
Block a user