Skip to content

Commit acfa2c0

Browse files
committed
fix: make CONTEXT_ALL cross-architecture
1 parent cff4ef4 commit acfa2c0

File tree

1 file changed

+32
-9
lines changed

1 file changed

+32
-9
lines changed

src/windows.rs

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -346,15 +346,6 @@ ffi! {
346346
pub const INVALID_HANDLE_VALUE: HANDLE = -1isize as HANDLE;
347347
pub const MAX_MODULE_NAME32: usize = 255;
348348
pub const MAX_PATH: usize = 260;
349-
pub const CONTEXT_i386: u32 = 0x10000;
350-
pub const CONTEXT_CONTROL: u32 = CONTEXT_i386 | 0x01; // SS:SP, CS:IP, FLAGS, B;
351-
pub const CONTEXT_INTEGER: u32 = CONTEXT_i386 | 0x02; // AX, BX, CX, DX, SI, D;
352-
pub const CONTEXT_SEGMENTS: u32 = CONTEXT_i386 | 0x04; // DS, ES, FS, G;
353-
pub const CONTEXT_FLOATING_POINT: u32 = CONTEXT_i386 | 0x08; // 387 stat;
354-
pub const CONTEXT_DEBUG_REGISTERS: u32 = CONTEXT_i386 | 0x10; // DB 0-3,6,;
355-
pub const CONTEXT_EXTENDED_REGISTERS: u32 = CONTEXT_i386 | 0x20; // cpu specific extension;
356-
pub const CONTEXT_ALL: u32 = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS;
357-
358349

359350
pub type DWORD = u32;
360351
pub type PDWORD = *mut u32;
@@ -530,6 +521,16 @@ ffi! {
530521
pub struct ARM64_NT_NEON128 {
531522
pub D: [f64; 2],
532523
}
524+
525+
pub const CONTEXT_ARM64: DWORD = 0x00400000;
526+
pub const CONTEXT_CONTROL: DWORD = CONTEXT_ARM64 | 0x00000001;
527+
pub const CONTEXT_INTEGER: DWORD = CONTEXT_ARM64 | 0x00000002;
528+
pub const CONTEXT_FLOATING_POINT: DWORD = CONTEXT_ARM64 | 0x00000004;
529+
pub const CONTEXT_DEBUG_REGISTERS: DWORD = CONTEXT_ARM64 | 0x00000008;
530+
pub const CONTEXT_X18: DWORD = CONTEXT_ARM64 | 0x00000010;
531+
pub const CONTEXT_FULL: DWORD = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT;
532+
pub const CONTEXT_ALL: DWORD = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT
533+
| CONTEXT_DEBUG_REGISTERS | CONTEXT_X18;
533534
}
534535

535536
#[cfg(target_arch = "x86")]
@@ -575,6 +576,18 @@ ffi! {
575576
pub RegisterArea: [u8; 80],
576577
pub Spare0: DWORD,
577578
}
579+
580+
pub const CONTEXT_i386: DWORD = 0x00010000;
581+
pub const CONTEXT_i486: DWORD = 0x00010000;
582+
pub const CONTEXT_CONTROL: DWORD = CONTEXT_i386 | 0x00000001;
583+
pub const CONTEXT_INTEGER: DWORD = CONTEXT_i386 | 0x00000002;
584+
pub const CONTEXT_SEGMENTS: DWORD = CONTEXT_i386 | 0x00000004;
585+
pub const CONTEXT_FLOATING_POINT: DWORD = CONTEXT_i386 | 0x00000008;
586+
pub const CONTEXT_DEBUG_REGISTERS: DWORD = CONTEXT_i386 | 0x00000010;
587+
pub const CONTEXT_EXTENDED_REGISTERS: DWORD = CONTEXT_i386 | 0x00000020;
588+
pub const CONTEXT_FULL: DWORD = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS;
589+
pub const CONTEXT_ALL: DWORD = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS
590+
| CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS;
578591
}
579592

580593
#[cfg(target_arch = "x86_64")]
@@ -642,6 +655,16 @@ ffi! {
642655
pub Low: u64,
643656
pub High: i64,
644657
}
658+
659+
pub const CONTEXT_AMD64: DWORD = 0x00100000;
660+
pub const CONTEXT_CONTROL: DWORD = CONTEXT_AMD64 | 0x00000001;
661+
pub const CONTEXT_INTEGER: DWORD = CONTEXT_AMD64 | 0x00000002;
662+
pub const CONTEXT_SEGMENTS: DWORD = CONTEXT_AMD64 | 0x00000004;
663+
pub const CONTEXT_FLOATING_POINT: DWORD = CONTEXT_AMD64 | 0x00000008;
664+
pub const CONTEXT_DEBUG_REGISTERS: DWORD = CONTEXT_AMD64 | 0x00000010;
665+
pub const CONTEXT_FULL: DWORD = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT;
666+
pub const CONTEXT_ALL: DWORD = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS
667+
| CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS;
645668
}
646669

647670
#[repr(C)]

0 commit comments

Comments
 (0)