Merge branch 'fsgsbase' into 'master'

Add fsbase/gsbase reg struct and more ELF auxiliary vectors.

See merge request redox-os/syscall!67
This commit is contained in:
4lDO2
2021-08-06 12:45:08 +00:00
2 changed files with 27 additions and 1 deletions
+25 -1
View File
@@ -109,7 +109,8 @@ pub struct FloatRegisters {
pub mxcsr: u32,
pub mxcsr_mask: u32,
pub st_space: [u128; 8],
pub xmm_space: [u128; 16]
pub xmm_space: [u128; 16],
// TODO: YMM/ZMM
}
impl Deref for FloatRegisters {
@@ -128,3 +129,26 @@ impl DerefMut for FloatRegisters {
}
}
}
#[derive(Clone, Copy, Debug, Default)]
#[repr(packed)]
pub struct EnvRegisters {
pub fsbase: u64,
pub gsbase: u64,
// TODO: PKRU?
}
impl Deref for EnvRegisters {
type Target = [u8];
fn deref(&self) -> &[u8] {
unsafe {
slice::from_raw_parts(self as *const EnvRegisters as *const u8, mem::size_of::<EnvRegisters>())
}
}
}
impl DerefMut for EnvRegisters {
fn deref_mut(&mut self) -> &mut [u8] {
unsafe {
slice::from_raw_parts_mut(self as *mut EnvRegisters as *mut u8, mem::size_of::<EnvRegisters>())
}
}
}
+2
View File
@@ -295,6 +295,8 @@ bitflags! {
// Auxiliery vector types
pub const AT_NULL: usize = 0;
pub const AT_PHDR: usize = 3;
pub const AT_PHENT: usize = 4;
pub const AT_PHNUM: usize = 5;
pub const AT_ENTRY: usize = 9;
bitflags! {