mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
std.zig.system.linux: implement s390x native CPU detection
This commit is contained in:
parent
1cd913a0ec
commit
d3e20e71be
@ -188,6 +188,77 @@ test "cpuinfo: PowerPC" {
|
||||
);
|
||||
}
|
||||
|
||||
const S390xCpuinfoImpl = struct {
|
||||
model: ?*const Target.Cpu.Model = null,
|
||||
|
||||
const cpu_names = .{
|
||||
// z900: 2064, 2066
|
||||
// z990: 2084, 2086
|
||||
// z9: 2094, 2096
|
||||
|
||||
.{ "2097", &Target.s390x.cpu.z10 },
|
||||
.{ "2098", &Target.s390x.cpu.z10 },
|
||||
.{ "2817", &Target.s390x.cpu.z196 },
|
||||
.{ "2818", &Target.s390x.cpu.z196 },
|
||||
.{ "2827", &Target.s390x.cpu.zEC12 },
|
||||
.{ "2828", &Target.s390x.cpu.zEC12 },
|
||||
.{ "2964", &Target.s390x.cpu.z13 },
|
||||
.{ "2965", &Target.s390x.cpu.z13 },
|
||||
.{ "3906", &Target.s390x.cpu.z14 },
|
||||
.{ "3907", &Target.s390x.cpu.z14 },
|
||||
.{ "8561", &Target.s390x.cpu.z15 },
|
||||
.{ "8562", &Target.s390x.cpu.z15 },
|
||||
.{ "3931", &Target.s390x.cpu.z16 },
|
||||
.{ "3932", &Target.s390x.cpu.z16 },
|
||||
.{ "9175", &Target.s390x.cpu.z17 },
|
||||
.{ "9176", &Target.s390x.cpu.z17 },
|
||||
};
|
||||
|
||||
fn line_hook(self: *S390xCpuinfoImpl, key: []const u8, value: []const u8) !bool {
|
||||
if (mem.eql(u8, key, "machine")) {
|
||||
inline for (cpu_names) |pair| {
|
||||
if (mem.eql(u8, value, pair[0])) {
|
||||
self.model = pair[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
fn finalize(self: *const S390xCpuinfoImpl, arch: Target.Cpu.Arch) ?Target.Cpu {
|
||||
const model = self.model orelse return null;
|
||||
return Target.Cpu{
|
||||
.arch = arch,
|
||||
.model = model,
|
||||
.features = model.features,
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const S390xCpuinfoParser = CpuinfoParser(S390xCpuinfoImpl);
|
||||
|
||||
test "cpuinfo: S390x" {
|
||||
try testParser(S390xCpuinfoParser, .s390x, &Target.s390x.cpu.z15,
|
||||
\\physical id : 5
|
||||
\\core id : 5
|
||||
\\book id : 5
|
||||
\\drawer id : 5
|
||||
\\dedicated : 0
|
||||
\\address : 5
|
||||
\\siblings : 1
|
||||
\\cpu cores : 1
|
||||
\\version : FF
|
||||
\\identification : 09DD98
|
||||
\\machine : 8561
|
||||
\\cpu MHz dynamic : 5200
|
||||
\\cpu MHz static : 5200
|
||||
);
|
||||
}
|
||||
|
||||
const ArmCpuinfoImpl = struct {
|
||||
const num_cores = 4;
|
||||
|
||||
@ -414,6 +485,9 @@ pub fn detectNativeCpuAndFeatures(io: Io) ?Target.Cpu {
|
||||
.riscv64, .riscv32 => {
|
||||
return RiscvCpuinfoParser.parse(current_arch, &file_reader.interface) catch null;
|
||||
},
|
||||
.s390x => {
|
||||
return S390xCpuinfoParser.parse(current_arch, &file_reader.interface) catch null;
|
||||
},
|
||||
else => {},
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user