| ... | ... | @@ -239,7 +239,6 @@ pub fn fromPosixSignalContext(ctx_ptr: ?*const anyopaque) ?Native { |
| 239 | 239 | .s390x => switch (builtin.os.tag) { |
| 240 | 240 | .linux => .{ |
| 241 | 241 | .r = uc.mcontext.gregs, |
| 242 | | .f = uc.mcontext.fregs, |
| 243 | 242 | .psw = .{ |
| 244 | 243 | .mask = uc.mcontext.psw.mask, |
| 245 | 244 | .addr = uc.mcontext.psw.addr, |
| ... | ... | @@ -1029,8 +1028,6 @@ pub const Riscv = extern struct { |
| 1029 | 1028 | pub const S390x = extern struct { |
| 1030 | 1029 | /// The numbered general-purpose registers r0 - r15. |
| 1031 | 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 | 1031 | /// The program counter. |
| 1035 | 1032 | psw: extern struct { |
| 1036 | 1033 | mask: u64, |
| ... | ... | @@ -1041,26 +1038,10 @@ pub const S390x = extern struct { |
| 1041 | 1038 | var ctx: S390x = undefined; |
| 1042 | 1039 | asm volatile ( |
| 1043 | 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 | 1041 | \\ epsw %%r0, %%r1 |
| 1061 | | \\ stm %%r0, %%r1, 256(%%r2) |
| 1042 | \\ stm %%r0, %%r1, 128(%%r2) |
| 1062 | 1043 | \\ larl %%r0, . |
| 1063 | | \\ stg %%r0, 264(%%r2) |
| 1044 | \\ stg %%r0, 136(%%r2) |
| 1064 | 1045 | \\ lg %%r0, 0(%%r2) |
| 1065 | 1046 | \\ lg %%r1, 8(%%r2) |
| 1066 | 1047 | : |
| ... | ... | @@ -1072,26 +1053,10 @@ pub const S390x = extern struct { |
| 1072 | 1053 | pub fn dwarfRegisterBytes(ctx: *S390x, register_num: u16) DwarfRegisterError![]u8 { |
| 1073 | 1054 | switch (register_num) { |
| 1074 | 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 | 1056 | 64 => return @ptrCast(&ctx.psw.mask), |
| 1093 | 1057 | 65 => return @ptrCast(&ctx.psw.addr), |
| 1094 | 1058 | |
| 1059 | 16...31 => return error.UnsupportedRegister, // f0 - f15 |
| 1095 | 1060 | 48...63 => return error.UnsupportedRegister, // a0 - a15 |
| 1096 | 1061 | 68...83 => return error.UnsupportedRegister, // v16 - v31 |
| 1097 | 1062 | |