From efbb15d59ceb3dfbf4d7e4e778c815dd8d8f52cf Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Mon, 29 Sep 2014 00:28:41 -0700 Subject: [PATCH] Fix libgreen --- src/libgreen/context.rs | 17 +++++++---------- src/libgreen/stack.rs | 5 ++--- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/libgreen/context.rs b/src/libgreen/context.rs index 296615e15ff..a665d41aadf 100644 --- a/src/libgreen/context.rs +++ b/src/libgreen/context.rs @@ -188,27 +188,27 @@ fn initialize_call_frame(regs: &mut Registers, fptr: InitFn, arg: uint, // windows requires saving more registers (both general and XMM), so the windows // register context must be larger. -#[cfg(windows, target_arch = "x86_64")] +#[cfg(all(windows, target_arch = "x86_64"))] #[repr(C)] struct Registers { gpr:[libc::uintptr_t, ..14], _xmm:[simd::u32x4, ..10] } -#[cfg(not(windows), target_arch = "x86_64")] +#[cfg(all(not(windows), target_arch = "x86_64"))] #[repr(C)] struct Registers { gpr:[libc::uintptr_t, ..10], _xmm:[simd::u32x4, ..6] } -#[cfg(windows, target_arch = "x86_64")] +#[cfg(all(windows, target_arch = "x86_64"))] fn new_regs() -> Box { box() Registers { gpr:[0,..14], _xmm:[simd::u32x4(0,0,0,0),..10] } } -#[cfg(not(windows), target_arch = "x86_64")] +#[cfg(all(not(windows), target_arch = "x86_64"))] fn new_regs() -> Box { box() Registers { gpr:[0,..10], @@ -288,16 +288,13 @@ fn initialize_call_frame(regs: &mut Registers, fptr: InitFn, arg: uint, regs[14] = rust_bootstrap_green_task as libc::uintptr_t; // #56 pc, r14 --> lr } -#[cfg(target_arch = "mips")] -#[cfg(target_arch = "mipsel")] +#[cfg(any(target_arch = "mips", target_arch = "mipsel"))] type Registers = [libc::uintptr_t, ..32]; -#[cfg(target_arch = "mips")] -#[cfg(target_arch = "mipsel")] +#[cfg(any(target_arch = "mips", target_arch = "mipsel"))] fn new_regs() -> Box { box {[0, .. 32]} } -#[cfg(target_arch = "mips")] -#[cfg(target_arch = "mipsel")] +#[cfg(any(target_arch = "mips", target_arch = "mipsel"))] fn initialize_call_frame(regs: &mut Registers, fptr: InitFn, arg: uint, procedure: raw::Procedure, sp: *mut uint) { let sp = align_down(sp); diff --git a/src/libgreen/stack.rs b/src/libgreen/stack.rs index 4673e7b3ba2..23b41f6c6e7 100644 --- a/src/libgreen/stack.rs +++ b/src/libgreen/stack.rs @@ -28,11 +28,10 @@ pub struct Stack { // // DragonFly BSD also seems to suffer from the same problem. When MAP_STACK is // used, it returns the same `ptr` multiple times. -#[cfg(not(windows), not(target_os = "freebsd"), not(target_os = "dragonfly"))] +#[cfg(not(any(windows, target_os = "freebsd", target_os = "dragonfly")))] static STACK_FLAGS: libc::c_int = libc::MAP_STACK | libc::MAP_PRIVATE | libc::MAP_ANON; -#[cfg(target_os = "freebsd")] -#[cfg(target_os = "dragonfly")] +#[cfg(any(target_os = "freebsd", target_os = "dragonfly"))] static STACK_FLAGS: libc::c_int = libc::MAP_PRIVATE | libc::MAP_ANON; #[cfg(windows)] static STACK_FLAGS: libc::c_int = 0;