Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
redox-os
syscall
Commits
adfd9702
Verified
Commit
adfd9702
authored
Jan 10, 2021
by
Jeremy Soller
Browse files
0.2.2 - fix compilation on aarch64
parent
45c7ca85
Pipeline
#8941
failed with stages
in 48 seconds
Changes
3
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Cargo.toml
View file @
adfd9702
[package]
name
=
"redox_syscall"
version
=
"0.2.
1
"
version
=
"0.2.
2
"
description
=
"A Rust library to access raw Redox system calls"
license
=
"MIT"
authors
=
[
"Jeremy Soller <jackpot51@gmail.com>"
]
...
...
src/arch/x86_64.rs
View file @
adfd9702
...
...
@@ -41,3 +41,87 @@ syscall! {
syscall4
(
a
,
b
,
c
,
d
,
e
,);
syscall5
(
a
,
b
,
c
,
d
,
e
,
f
,);
}
#[derive(Copy,
Clone,
Debug,
Default)]
#[repr(C)]
pub
struct
IntRegisters
{
// TODO: Some of these don't get set by Redox yet. Should they?
pub
r15
:
usize
,
pub
r14
:
usize
,
pub
r13
:
usize
,
pub
r12
:
usize
,
pub
rbp
:
usize
,
pub
rbx
:
usize
,
pub
r11
:
usize
,
pub
r10
:
usize
,
pub
r9
:
usize
,
pub
r8
:
usize
,
pub
rax
:
usize
,
pub
rcx
:
usize
,
pub
rdx
:
usize
,
pub
rsi
:
usize
,
pub
rdi
:
usize
,
// pub orig_rax: usize,
pub
rip
:
usize
,
pub
cs
:
usize
,
pub
rflags
:
usize
,
pub
rsp
:
usize
,
pub
ss
:
usize
,
// pub fs_base: usize,
// pub gs_base: usize,
// pub ds: usize,
// pub es: usize,
pub
fs
:
usize
,
// pub gs: usize
}
impl
Deref
for
IntRegisters
{
type
Target
=
[
u8
];
fn
deref
(
&
self
)
->
&
[
u8
]
{
unsafe
{
slice
::
from_raw_parts
(
self
as
*
const
IntRegisters
as
*
const
u8
,
mem
::
size_of
::
<
IntRegisters
>
())
}
}
}
impl
DerefMut
for
IntRegisters
{
fn
deref_mut
(
&
mut
self
)
->
&
mut
[
u8
]
{
unsafe
{
slice
::
from_raw_parts_mut
(
self
as
*
mut
IntRegisters
as
*
mut
u8
,
mem
::
size_of
::
<
IntRegisters
>
())
}
}
}
#[derive(Clone,
Copy,
Debug,
Default)]
#[repr(packed)]
pub
struct
FloatRegisters
{
pub
fcw
:
u16
,
pub
fsw
:
u16
,
pub
ftw
:
u8
,
pub
_reserved
:
u8
,
pub
fop
:
u16
,
pub
fip
:
u64
,
pub
fdp
:
u64
,
pub
mxcsr
:
u32
,
pub
mxcsr_mask
:
u32
,
pub
st_space
:
[
u128
;
8
],
pub
xmm_space
:
[
u128
;
16
]
}
impl
Deref
for
FloatRegisters
{
type
Target
=
[
u8
];
fn
deref
(
&
self
)
->
&
[
u8
]
{
unsafe
{
slice
::
from_raw_parts
(
self
as
*
const
FloatRegisters
as
*
const
u8
,
mem
::
size_of
::
<
FloatRegisters
>
())
}
}
}
impl
DerefMut
for
FloatRegisters
{
fn
deref_mut
(
&
mut
self
)
->
&
mut
[
u8
]
{
unsafe
{
slice
::
from_raw_parts_mut
(
self
as
*
mut
FloatRegisters
as
*
mut
u8
,
mem
::
size_of
::
<
FloatRegisters
>
())
}
}
}
src/data.rs
View file @
adfd9702
...
...
@@ -252,92 +252,6 @@ impl DerefMut for TimeSpec {
}
}
#[derive(Copy,
Clone,
Debug,
Default)]
#[repr(C)]
#[cfg(target_arch
=
"x86_64"
)]
pub
struct
IntRegisters
{
// TODO: Some of these don't get set by Redox yet. Should they?
pub
r15
:
usize
,
pub
r14
:
usize
,
pub
r13
:
usize
,
pub
r12
:
usize
,
pub
rbp
:
usize
,
pub
rbx
:
usize
,
pub
r11
:
usize
,
pub
r10
:
usize
,
pub
r9
:
usize
,
pub
r8
:
usize
,
pub
rax
:
usize
,
pub
rcx
:
usize
,
pub
rdx
:
usize
,
pub
rsi
:
usize
,
pub
rdi
:
usize
,
// pub orig_rax: usize,
pub
rip
:
usize
,
pub
cs
:
usize
,
pub
rflags
:
usize
,
pub
rsp
:
usize
,
pub
ss
:
usize
,
// pub fs_base: usize,
// pub gs_base: usize,
// pub ds: usize,
// pub es: usize,
pub
fs
:
usize
,
// pub gs: usize
}
impl
Deref
for
IntRegisters
{
type
Target
=
[
u8
];
fn
deref
(
&
self
)
->
&
[
u8
]
{
unsafe
{
slice
::
from_raw_parts
(
self
as
*
const
IntRegisters
as
*
const
u8
,
mem
::
size_of
::
<
IntRegisters
>
())
}
}
}
impl
DerefMut
for
IntRegisters
{
fn
deref_mut
(
&
mut
self
)
->
&
mut
[
u8
]
{
unsafe
{
slice
::
from_raw_parts_mut
(
self
as
*
mut
IntRegisters
as
*
mut
u8
,
mem
::
size_of
::
<
IntRegisters
>
())
}
}
}
#[derive(Clone,
Copy,
Debug,
Default)]
#[repr(packed)]
#[cfg(target_arch
=
"x86_64"
)]
pub
struct
FloatRegisters
{
pub
fcw
:
u16
,
pub
fsw
:
u16
,
pub
ftw
:
u8
,
pub
_reserved
:
u8
,
pub
fop
:
u16
,
pub
fip
:
u64
,
pub
fdp
:
u64
,
pub
mxcsr
:
u32
,
pub
mxcsr_mask
:
u32
,
pub
st_space
:
[
u128
;
8
],
pub
xmm_space
:
[
u128
;
16
]
}
impl
Deref
for
FloatRegisters
{
type
Target
=
[
u8
];
fn
deref
(
&
self
)
->
&
[
u8
]
{
unsafe
{
slice
::
from_raw_parts
(
self
as
*
const
FloatRegisters
as
*
const
u8
,
mem
::
size_of
::
<
FloatRegisters
>
())
}
}
}
impl
DerefMut
for
FloatRegisters
{
fn
deref_mut
(
&
mut
self
)
->
&
mut
[
u8
]
{
unsafe
{
slice
::
from_raw_parts_mut
(
self
as
*
mut
FloatRegisters
as
*
mut
u8
,
mem
::
size_of
::
<
FloatRegisters
>
())
}
}
}
#[derive(Clone,
Copy,
Debug,
Default)]
#[repr(C)]
pub
struct
PtraceEvent
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment