authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-07 00:50:29+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-07 16:47:57+02:00
logde3b22db4db5e95d3a4a30333784e8d6c2cc3818
treea1b9b3a137ced530ef8519f8cb8db8771f4a1dfc
parent9cd37a06965f1993f6e70ca3f10008d02f77334b
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.debug.cpu_context: remove support for s390x float registers

Let's for the moment assume that compilers haven't lost the plot. Fingers crossed.

1 files changed, 3 insertions(+), 38 deletions(-)

lib/std/debug/cpu_context.zig+3-38
...@@ -239,7 +239,6 @@ pub fn fromPosixSignalContext(ctx_ptr: ?*const anyopaque) ?Native {...@@ -239,7 +239,6 @@ pub fn fromPosixSignalContext(ctx_ptr: ?*const anyopaque) ?Native {
239 .s390x => switch (builtin.os.tag) {239 .s390x => switch (builtin.os.tag) {
240 .linux => .{240 .linux => .{
241 .r = uc.mcontext.gregs,241 .r = uc.mcontext.gregs,
242 .f = uc.mcontext.fregs,
243 .psw = .{242 .psw = .{
244 .mask = uc.mcontext.psw.mask,243 .mask = uc.mcontext.psw.mask,
245 .addr = uc.mcontext.psw.addr,244 .addr = uc.mcontext.psw.addr,
...@@ -1029,8 +1028,6 @@ pub const Riscv = extern struct {...@@ -1029,8 +1028,6 @@ pub const Riscv = extern struct {
1029pub const S390x = extern struct {1028pub const S390x = extern struct {
1030 /// The numbered general-purpose registers r0 - r15.1029 /// The numbered general-purpose registers r0 - r15.
1031 r: [16]u64,1030 r: [16]u64,
1032 /// The numbered floating-point registers f0 - f15. Yes, really - they can be used in DWARF CFI.
1033 f: [16]f64,
1034 /// The program counter.1031 /// The program counter.
1035 psw: extern struct {1032 psw: extern struct {
1036 mask: u64,1033 mask: u64,
...@@ -1041,26 +1038,10 @@ pub const S390x = extern struct {...@@ -1041,26 +1038,10 @@ pub const S390x = extern struct {
1041 var ctx: S390x = undefined;1038 var ctx: S390x = undefined;
1042 asm volatile (1039 asm volatile (
1043 \\ stmg %%r0, %%r15, 0(%%r2)1040 \\ stmg %%r0, %%r15, 0(%%r2)
1044 \\ std %%f0, 128(%%r2)
1045 \\ std %%f1, 136(%%r2)
1046 \\ std %%f2, 144(%%r2)
1047 \\ std %%f3, 152(%%r2)
1048 \\ std %%f4, 160(%%r2)
1049 \\ std %%f5, 168(%%r2)
1050 \\ std %%f6, 176(%%r2)
1051 \\ std %%f7, 184(%%r2)
1052 \\ std %%f8, 192(%%r2)
1053 \\ std %%f9, 200(%%r2)
1054 \\ std %%f10, 208(%%r2)
1055 \\ std %%f11, 216(%%r2)
1056 \\ std %%f12, 224(%%r2)
1057 \\ std %%f13, 232(%%r2)
1058 \\ std %%f14, 240(%%r2)
1059 \\ std %%f15, 248(%%r2)
1060 \\ epsw %%r0, %%r11041 \\ epsw %%r0, %%r1
1061 \\ stm %%r0, %%r1, 256(%%r2)1042 \\ stm %%r0, %%r1, 128(%%r2)
1062 \\ larl %%r0, .1043 \\ larl %%r0, .
1063 \\ stg %%r0, 264(%%r2)1044 \\ stg %%r0, 136(%%r2)
1064 \\ lg %%r0, 0(%%r2)1045 \\ lg %%r0, 0(%%r2)
1065 \\ lg %%r1, 8(%%r2)1046 \\ lg %%r1, 8(%%r2)
1066 :1047 :
...@@ -1072,26 +1053,10 @@ pub const S390x = extern struct {...@@ -1072,26 +1053,10 @@ pub const S390x = extern struct {
1072 pub fn dwarfRegisterBytes(ctx: *S390x, register_num: u16) DwarfRegisterError![]u8 {1053 pub fn dwarfRegisterBytes(ctx: *S390x, register_num: u16) DwarfRegisterError![]u8 {
1073 switch (register_num) {1054 switch (register_num) {
1074 0...15 => return @ptrCast(&ctx.r[register_num]),1055 0...15 => return @ptrCast(&ctx.r[register_num]),
1075 // Why???
1076 16 => return @ptrCast(&ctx.f[0]),
1077 17 => return @ptrCast(&ctx.f[2]),
1078 18 => return @ptrCast(&ctx.f[4]),
1079 19 => return @ptrCast(&ctx.f[6]),
1080 20 => return @ptrCast(&ctx.f[1]),
1081 21 => return @ptrCast(&ctx.f[3]),
1082 22 => return @ptrCast(&ctx.f[5]),
1083 23 => return @ptrCast(&ctx.f[7]),
1084 24 => return @ptrCast(&ctx.f[8]),
1085 25 => return @ptrCast(&ctx.f[10]),
1086 26 => return @ptrCast(&ctx.f[12]),
1087 27 => return @ptrCast(&ctx.f[14]),
1088 28 => return @ptrCast(&ctx.f[9]),
1089 29 => return @ptrCast(&ctx.f[11]),
1090 30 => return @ptrCast(&ctx.f[13]),
1091 31 => return @ptrCast(&ctx.f[15]),
1092 64 => return @ptrCast(&ctx.psw.mask),1056 64 => return @ptrCast(&ctx.psw.mask),
1093 65 => return @ptrCast(&ctx.psw.addr),1057 65 => return @ptrCast(&ctx.psw.addr),
10941058
1059 16...31 => return error.UnsupportedRegister, // f0 - f15
1095 48...63 => return error.UnsupportedRegister, // a0 - a151060 48...63 => return error.UnsupportedRegister, // a0 - a15
1096 68...83 => return error.UnsupportedRegister, // v16 - v311061 68...83 => return error.UnsupportedRegister, // v16 - v31
10971062