mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
std.os.windows: Define CONTEXT, RUNTIME_FUNCTION, and KNONVOLATILE_CONTEXT_POINTERS for thumb.
This commit is contained in:
parent
2e2441a89d
commit
d702a21bbc
1 changed files with 88 additions and 0 deletions
|
|
@ -4124,6 +4124,10 @@ pub const XMM_SAVE_AREA32 = switch (native_arch) {
|
|||
};
|
||||
|
||||
pub const NEON128 = switch (native_arch) {
|
||||
.thumb => extern struct {
|
||||
Low: ULONGLONG,
|
||||
High: LONGLONG,
|
||||
},
|
||||
.aarch64 => extern union {
|
||||
DUMMYSTRUCTNAME: extern struct {
|
||||
Low: ULONGLONG,
|
||||
|
|
@ -4252,6 +4256,54 @@ pub const CONTEXT = switch (native_arch) {
|
|||
ctx.Rsp = sp;
|
||||
}
|
||||
},
|
||||
.thumb => extern struct {
|
||||
ContextFlags: ULONG,
|
||||
R0: ULONG,
|
||||
R1: ULONG,
|
||||
R2: ULONG,
|
||||
R3: ULONG,
|
||||
R4: ULONG,
|
||||
R5: ULONG,
|
||||
R6: ULONG,
|
||||
R7: ULONG,
|
||||
R8: ULONG,
|
||||
R9: ULONG,
|
||||
R10: ULONG,
|
||||
R11: ULONG,
|
||||
R12: ULONG,
|
||||
Sp: ULONG,
|
||||
Lr: ULONG,
|
||||
Pc: ULONG,
|
||||
Cpsr: ULONG,
|
||||
Fpcsr: ULONG,
|
||||
Padding: ULONG,
|
||||
DUMMYUNIONNAME: extern union {
|
||||
Q: [16]NEON128,
|
||||
D: [32]ULONGLONG,
|
||||
S: [32]ULONG,
|
||||
},
|
||||
Bvr: [8]ULONG,
|
||||
Bcr: [8]ULONG,
|
||||
Wvr: [1]ULONG,
|
||||
Wcr: [1]ULONG,
|
||||
Padding2: [2]ULONG,
|
||||
|
||||
pub fn getRegs(ctx: *const CONTEXT) struct { bp: usize, ip: usize, sp: usize } {
|
||||
return .{
|
||||
.bp = ctx.DUMMYUNIONNAME.S[11],
|
||||
.ip = ctx.Pc,
|
||||
.sp = ctx.Sp,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn setIp(ctx: *CONTEXT, ip: usize) void {
|
||||
ctx.Pc = ip;
|
||||
}
|
||||
|
||||
pub fn setSp(ctx: *CONTEXT, sp: usize) void {
|
||||
ctx.Sp = sp;
|
||||
}
|
||||
},
|
||||
.aarch64 => extern struct {
|
||||
ContextFlags: ULONG align(16),
|
||||
Cpsr: ULONG,
|
||||
|
|
@ -4326,6 +4378,23 @@ pub const RUNTIME_FUNCTION = switch (native_arch) {
|
|||
EndAddress: DWORD,
|
||||
UnwindData: DWORD,
|
||||
},
|
||||
.thumb => extern struct {
|
||||
BeginAddress: DWORD,
|
||||
DUMMYUNIONNAME: extern union {
|
||||
UnwindData: DWORD,
|
||||
DUMMYSTRUCTNAME: packed struct {
|
||||
Flag: u2,
|
||||
FunctionLength: u11,
|
||||
Ret: u2,
|
||||
H: u1,
|
||||
Reg: u3,
|
||||
R: u1,
|
||||
L: u1,
|
||||
C: u1,
|
||||
StackAdjust: u10,
|
||||
},
|
||||
},
|
||||
},
|
||||
.aarch64 => extern struct {
|
||||
BeginAddress: DWORD,
|
||||
DUMMYUNIONNAME: extern union {
|
||||
|
|
@ -4349,6 +4418,25 @@ pub const KNONVOLATILE_CONTEXT_POINTERS = switch (native_arch) {
|
|||
FloatingContext: [16]?*M128A,
|
||||
IntegerContext: [16]?*ULONG64,
|
||||
},
|
||||
.thumb => extern struct {
|
||||
R4: ?*DWORD,
|
||||
R5: ?*DWORD,
|
||||
R6: ?*DWORD,
|
||||
R7: ?*DWORD,
|
||||
R8: ?*DWORD,
|
||||
R9: ?*DWORD,
|
||||
R10: ?*DWORD,
|
||||
R11: ?*DWORD,
|
||||
Lr: ?*DWORD,
|
||||
D8: ?*ULONGLONG,
|
||||
D9: ?*ULONGLONG,
|
||||
D10: ?*ULONGLONG,
|
||||
D11: ?*ULONGLONG,
|
||||
D12: ?*ULONGLONG,
|
||||
D13: ?*ULONGLONG,
|
||||
D14: ?*ULONGLONG,
|
||||
D15: ?*ULONGLONG,
|
||||
},
|
||||
.aarch64 => extern struct {
|
||||
X19: ?*DWORD64,
|
||||
X20: ?*DWORD64,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue