Skip to content

Commit ccdae50

Browse files
committed
Auto merge of #3477 - devnexen:musl_user_fpxregs_struct, r=JohnTitor
iadding yser_fpxregs_struct data to linux/musl i686. close #3476
2 parents c20e16f + 1198797 commit ccdae50

File tree

1 file changed

+74
-0
lines changed
  • src/unix/linux_like/linux/musl/b32/x86

1 file changed

+74
-0
lines changed

src/unix/linux_like/linux/musl/b32/x86/mod.rs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,22 @@ s! {
157157
}
158158

159159
s_no_extra_traits! {
160+
pub struct user_fpxregs_struct {
161+
pub cwd: ::c_ushort,
162+
pub swd: ::c_ushort,
163+
pub twd: ::c_ushort,
164+
pub fop: ::c_ushort,
165+
pub fip: ::c_long,
166+
pub fcs: ::c_long,
167+
pub foo: ::c_long,
168+
pub fos: ::c_long,
169+
pub mxcsr: ::c_long,
170+
__reserved: ::c_long,
171+
pub st_space: [::c_long; 32],
172+
pub xmm_space: [::c_long; 32],
173+
padding: [::c_long; 56],
174+
}
175+
160176
pub struct ucontext_t {
161177
pub uc_flags: ::c_ulong,
162178
pub uc_link: *mut ucontext_t,
@@ -169,6 +185,64 @@ s_no_extra_traits! {
169185

170186
cfg_if! {
171187
if #[cfg(feature = "extra_traits")] {
188+
impl PartialEq for user_fpxregs_struct {
189+
fn eq(&self, other: &user_fpxregs_struct) -> bool {
190+
self.cwd == other.cwd
191+
&& self.swd == other.swd
192+
&& self.twd == other.twd
193+
&& self.fop == other.fop
194+
&& self.fip == other.fip
195+
&& self.fcs == other.fcs
196+
&& self.foo == other.foo
197+
&& self.fos == other.fos
198+
&& self.mxcsr == other.mxcsr
199+
// Ignore __reserved field
200+
&& self.st_space == other.st_space
201+
&& self.xmm_space == other.xmm_space
202+
// Ignore padding field
203+
}
204+
}
205+
206+
impl Eq for user_fpxregs_struct {}
207+
208+
impl ::fmt::Debug for user_fpxregs_struct {
209+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
210+
f.debug_struct("user_fpxregs_struct")
211+
.field("cwd", &self.cwd)
212+
.field("swd", &self.swd)
213+
.field("twd", &self.twd)
214+
.field("fop", &self.fop)
215+
.field("fip", &self.fip)
216+
.field("fcs", &self.fcs)
217+
.field("foo", &self.foo)
218+
.field("fos", &self.fos)
219+
.field("mxcsr", &self.mxcsr)
220+
// Ignore __reserved field
221+
.field("st_space", &self.st_space)
222+
.field("xmm_space", &self.xmm_space)
223+
// Ignore padding field
224+
.finish()
225+
}
226+
}
227+
228+
impl ::hash::Hash for user_fpxregs_struct {
229+
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
230+
self.cwd.hash(state);
231+
self.swd.hash(state);
232+
self.twd.hash(state);
233+
self.fop.hash(state);
234+
self.fip.hash(state);
235+
self.fcs.hash(state);
236+
self.foo.hash(state);
237+
self.fos.hash(state);
238+
self.mxcsr.hash(state);
239+
// Ignore __reserved field
240+
self.st_space.hash(state);
241+
self.xmm_space.hash(state);
242+
// Ignore padding field
243+
}
244+
}
245+
172246
impl PartialEq for ucontext_t {
173247
fn eq(&self, other: &ucontext_t) -> bool {
174248
self.uc_flags == other.uc_flags

0 commit comments

Comments
 (0)