Add support for Arm64EC to the Standard Library

This commit is contained in:
Daniel Paoliello
2024-03-27 10:49:21 -07:00
parent 99d0186b1d
commit 32f5ca4be7
12 changed files with 72 additions and 46 deletions

View File

@@ -23,6 +23,7 @@ pub const MIN_ALIGN: usize = 8;
#[cfg(any(
target_arch = "x86_64",
target_arch = "aarch64",
target_arch = "arm64ec",
target_arch = "loongarch64",
target_arch = "mips64",
target_arch = "mips64r6",

View File

@@ -1,4 +1,4 @@
// Bindings generated by `windows-bindgen` 0.55.0
// Bindings generated by `windows-bindgen` 0.56.0
#![allow(non_snake_case, non_upper_case_globals, non_camel_case_types, dead_code, clippy::all)]
#[link(name = "advapi32")]
@@ -345,7 +345,7 @@ extern "system" {
}
#[link(name = "kernel32")]
extern "system" {
pub fn GetSystemTimePreciseAsFileTime(lpsystemtimeasfiletime: *mut FILETIME) -> ();
pub fn GetSystemTimePreciseAsFileTime(lpsystemtimeasfiletime: *mut FILETIME);
}
#[link(name = "kernel32")]
extern "system" {
@@ -1018,7 +1018,7 @@ impl Clone for CONTEXT_0_0 {
}
}
#[repr(C)]
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
pub struct CONTEXT {
pub P1Home: u64,
pub P2Home: u64,
@@ -1067,30 +1067,30 @@ pub struct CONTEXT {
pub LastExceptionToRip: u64,
pub LastExceptionFromRip: u64,
}
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
impl Copy for CONTEXT {}
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
impl Clone for CONTEXT {
fn clone(&self) -> Self {
*self
}
}
#[repr(C)]
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
pub union CONTEXT_0 {
pub FltSave: XSAVE_FORMAT,
pub Anonymous: CONTEXT_0_0,
}
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
impl Copy for CONTEXT_0 {}
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
impl Clone for CONTEXT_0 {
fn clone(&self) -> Self {
*self
}
}
#[repr(C)]
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
pub struct CONTEXT_0_0 {
pub Header: [M128A; 2],
pub Legacy: [M128A; 8],
@@ -1111,9 +1111,9 @@ pub struct CONTEXT_0_0 {
pub Xmm14: M128A,
pub Xmm15: M128A,
}
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
impl Copy for CONTEXT_0_0 {}
#[cfg(target_arch = "x86_64")]
#[cfg(any(target_arch = "arm64ec", target_arch = "x86_64"))]
impl Clone for CONTEXT_0_0 {
fn clone(&self) -> Self {
*self
@@ -3339,7 +3339,7 @@ pub const FILE_WRITE_EA: FILE_ACCESS_RIGHTS = 16u32;
pub const FILE_WRITE_THROUGH: NTCREATEFILE_CREATE_OPTIONS = 2u32;
pub const FIONBIO: i32 = -2147195266i32;
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
pub struct FLOATING_SAVE_AREA {
pub ControlWord: u32,
pub StatusWord: u32,
@@ -3351,9 +3351,9 @@ pub struct FLOATING_SAVE_AREA {
pub RegisterArea: [u8; 80],
pub Cr0NpxState: u32,
}
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Copy for FLOATING_SAVE_AREA {}
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Clone for FLOATING_SAVE_AREA {
fn clone(&self) -> Self {
*self
@@ -4106,7 +4106,7 @@ impl Clone for WSABUF {
}
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
pub struct WSADATA {
pub wVersion: u16,
pub wHighVersion: u16,
@@ -4116,9 +4116,9 @@ pub struct WSADATA {
pub szDescription: [i8; 257],
pub szSystemStatus: [i8; 129],
}
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Copy for WSADATA {}
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Clone for WSADATA {
fn clone(&self) -> Self {
*self
@@ -4286,7 +4286,7 @@ pub const WSA_SECURE_HOST_NOT_FOUND: WSA_ERROR = 11032i32;
pub const WSA_WAIT_EVENT_0: WSA_ERROR = 0i32;
pub const WSA_WAIT_IO_COMPLETION: WSA_ERROR = 192i32;
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
pub struct XSAVE_FORMAT {
pub ControlWord: u16,
pub StatusWord: u16,
@@ -4305,9 +4305,9 @@ pub struct XSAVE_FORMAT {
pub XmmRegisters: [M128A; 16],
pub Reserved4: [u8; 96],
}
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Copy for XSAVE_FORMAT {}
#[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Clone for XSAVE_FORMAT {
fn clone(&self) -> Self {
*self

View File

@@ -332,7 +332,7 @@ pub fn abort_internal() -> ! {
core::arch::asm!("int $$0x29", in("ecx") c::FAST_FAIL_FATAL_APP_EXIT, options(noreturn, nostack));
} else if #[cfg(all(target_arch = "arm", target_feature = "thumb-mode"))] {
core::arch::asm!(".inst 0xDEFB", in("r0") c::FAST_FAIL_FATAL_APP_EXIT, options(noreturn, nostack));
} else if #[cfg(target_arch = "aarch64")] {
} else if #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))] {
core::arch::asm!("brk 0xF003", in("x0") c::FAST_FAIL_FATAL_APP_EXIT, options(noreturn, nostack));
} else {
core::intrinsics::abort();