mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-09 07:08:59 +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) {
|
pub const NEON128 = switch (native_arch) {
|
||||||
|
.thumb => extern struct {
|
||||||
|
Low: ULONGLONG,
|
||||||
|
High: LONGLONG,
|
||||||
|
},
|
||||||
.aarch64 => extern union {
|
.aarch64 => extern union {
|
||||||
DUMMYSTRUCTNAME: extern struct {
|
DUMMYSTRUCTNAME: extern struct {
|
||||||
Low: ULONGLONG,
|
Low: ULONGLONG,
|
||||||
|
|
@ -4252,6 +4256,54 @@ pub const CONTEXT = switch (native_arch) {
|
||||||
ctx.Rsp = sp;
|
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 {
|
.aarch64 => extern struct {
|
||||||
ContextFlags: ULONG align(16),
|
ContextFlags: ULONG align(16),
|
||||||
Cpsr: ULONG,
|
Cpsr: ULONG,
|
||||||
|
|
@ -4326,6 +4378,23 @@ pub const RUNTIME_FUNCTION = switch (native_arch) {
|
||||||
EndAddress: DWORD,
|
EndAddress: DWORD,
|
||||||
UnwindData: 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 {
|
.aarch64 => extern struct {
|
||||||
BeginAddress: DWORD,
|
BeginAddress: DWORD,
|
||||||
DUMMYUNIONNAME: extern union {
|
DUMMYUNIONNAME: extern union {
|
||||||
|
|
@ -4349,6 +4418,25 @@ pub const KNONVOLATILE_CONTEXT_POINTERS = switch (native_arch) {
|
||||||
FloatingContext: [16]?*M128A,
|
FloatingContext: [16]?*M128A,
|
||||||
IntegerContext: [16]?*ULONG64,
|
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 {
|
.aarch64 => extern struct {
|
||||||
X19: ?*DWORD64,
|
X19: ?*DWORD64,
|
||||||
X20: ?*DWORD64,
|
X20: ?*DWORD64,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue