mirror of https://github.com/rust-lang/rust.git
rustc: MIPS32 support
This commit is contained in:
parent
0ecd9e03ff
commit
5150b9811b
|
@ -244,7 +244,7 @@ DRIVER_CRATE := $(S)src/driver/driver.rs
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
# FIXME: x86-ism
|
# FIXME: x86-ism
|
||||||
LLVM_COMPONENTS=x86 arm ipo bitreader bitwriter linker asmparser jit mcjit \
|
LLVM_COMPONENTS=x86 arm mips ipo bitreader bitwriter linker asmparser jit mcjit \
|
||||||
interpreter
|
interpreter
|
||||||
|
|
||||||
define DEF_LLVM_VARS
|
define DEF_LLVM_VARS
|
||||||
|
|
|
@ -41,8 +41,14 @@ struct Registers {
|
||||||
data: [u32 * 16]
|
data: [u32 * 16]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
|
struct Registers {
|
||||||
|
data: [u32 * 32]
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
struct Context {
|
struct Context {
|
||||||
regs: Registers,
|
regs: Registers,
|
||||||
next: *Context,
|
next: *Context,
|
||||||
|
@ -69,6 +75,7 @@ struct BoxedRegion {
|
||||||
|
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
struct Task {
|
struct Task {
|
||||||
// Public fields
|
// Public fields
|
||||||
refcount: intptr_t, // 0
|
refcount: intptr_t, // 0
|
||||||
|
|
|
@ -203,6 +203,7 @@ pub mod types {
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
pub mod arch {
|
pub mod arch {
|
||||||
pub mod c95 {
|
pub mod c95 {
|
||||||
pub type c_char = i8;
|
pub type c_char = i8;
|
||||||
|
|
|
@ -28,6 +28,7 @@ pub mod inst {
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
pub const bits: uint = 32;
|
pub const bits: uint = 32;
|
||||||
|
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
|
|
@ -1097,6 +1097,9 @@ pub mod consts {
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
pub use os::consts::arm::*;
|
pub use os::consts::arm::*;
|
||||||
|
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
|
use os::consts::mips::*;
|
||||||
|
|
||||||
pub mod x86 {
|
pub mod x86 {
|
||||||
pub const ARCH: &str = "x86";
|
pub const ARCH: &str = "x86";
|
||||||
}
|
}
|
||||||
|
@ -1106,6 +1109,9 @@ pub mod consts {
|
||||||
pub mod arm {
|
pub mod arm {
|
||||||
pub const ARCH: &str = "arm";
|
pub const ARCH: &str = "arm";
|
||||||
}
|
}
|
||||||
|
pub mod mips {
|
||||||
|
pub const ARCH: &str = "mips";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -91,6 +91,7 @@ pub pure fn Path(s: &str) -> Path {
|
||||||
mod stat {
|
mod stat {
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
pub mod arch {
|
pub mod arch {
|
||||||
use libc;
|
use libc;
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,7 @@ pub mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
pub fn size_of_32() {
|
pub fn size_of_32() {
|
||||||
assert size_of::<uint>() == 4u;
|
assert size_of::<uint>() == 4u;
|
||||||
assert size_of::<*uint>() == 4u;
|
assert size_of::<*uint>() == 4u;
|
||||||
|
@ -196,6 +197,7 @@ pub mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
pub fn align_of_32() {
|
pub fn align_of_32() {
|
||||||
assert pref_align_of::<uint>() == 4u;
|
assert pref_align_of::<uint>() == 4u;
|
||||||
assert pref_align_of::<*uint>() == 4u;
|
assert pref_align_of::<*uint>() == 4u;
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
use back::target_strs;
|
||||||
|
use driver::session;
|
||||||
|
use session::sess_os_to_meta_os;
|
||||||
|
use metadata::loader::meta_section_name;
|
||||||
|
|
||||||
|
pub fn get_target_strs(target_os: session::os) -> target_strs::t {
|
||||||
|
return target_strs::t {
|
||||||
|
module_asm: ~"",
|
||||||
|
|
||||||
|
meta_sect_name: meta_section_name(sess_os_to_meta_os(target_os)),
|
||||||
|
|
||||||
|
data_layout: match target_os {
|
||||||
|
session::os_macos => {
|
||||||
|
~"e-p:32:32:32" +
|
||||||
|
~"-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" +
|
||||||
|
~"-f32:32:32-f64:64:64" +
|
||||||
|
~"-v64:64:64-v128:64:128" +
|
||||||
|
~"-a0:0:64-n32"
|
||||||
|
}
|
||||||
|
|
||||||
|
session::os_win32 => {
|
||||||
|
~"e-p:32:32:32" +
|
||||||
|
~"-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" +
|
||||||
|
~"-f32:32:32-f64:64:64" +
|
||||||
|
~"-v64:64:64-v128:64:128" +
|
||||||
|
~"-a0:0:64-n32"
|
||||||
|
}
|
||||||
|
|
||||||
|
session::os_linux => {
|
||||||
|
~"e-p:32:32:32" +
|
||||||
|
~"-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" +
|
||||||
|
~"-f32:32:32-f64:64:64" +
|
||||||
|
~"-v64:64:64-v128:64:128" +
|
||||||
|
~"-a0:0:64-n32"
|
||||||
|
}
|
||||||
|
|
||||||
|
session::os_android => {
|
||||||
|
~"e-p:32:32:32" +
|
||||||
|
~"-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" +
|
||||||
|
~"-f32:32:32-f64:64:64" +
|
||||||
|
~"-v64:64:64-v128:64:128" +
|
||||||
|
~"-a0:0:64-n32"
|
||||||
|
}
|
||||||
|
|
||||||
|
session::os_freebsd => {
|
||||||
|
~"e-p:32:32:32" +
|
||||||
|
~"-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" +
|
||||||
|
~"-f32:32:32-f64:64:64" +
|
||||||
|
~"-v64:64:64-v128:64:128" +
|
||||||
|
~"-a0:0:64-n32"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
target_triple: match target_os {
|
||||||
|
session::os_macos => ~"mips-apple-darwin",
|
||||||
|
session::os_win32 => ~"mips-pc-mingw32",
|
||||||
|
session::os_linux => ~"mips-unknown-linux-gnu",
|
||||||
|
session::os_android => ~"mips-unknown-android-gnu",
|
||||||
|
session::os_freebsd => ~"mips-unknown-freebsd"
|
||||||
|
},
|
||||||
|
|
||||||
|
cc_args: ~[]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Local Variables:
|
||||||
|
// mode: rust
|
||||||
|
// fill-column: 78;
|
||||||
|
// indent-tabs-mode: nil
|
||||||
|
// c-basic-offset: 4
|
||||||
|
// buffer-file-coding-system: utf-8-unix
|
||||||
|
// End:
|
||||||
|
//
|
|
@ -11,7 +11,7 @@
|
||||||
use core::prelude::*;
|
use core::prelude::*;
|
||||||
|
|
||||||
use back::link;
|
use back::link;
|
||||||
use back::{arm, x86, x86_64};
|
use back::{arm, x86, x86_64, mips};
|
||||||
use driver::session::{Aggressive};
|
use driver::session::{Aggressive};
|
||||||
use driver::session::{Session, Session_, OptLevel, No, Less, Default};
|
use driver::session::{Session, Session_, OptLevel, No, Less, Default};
|
||||||
use driver::session;
|
use driver::session;
|
||||||
|
@ -94,7 +94,8 @@ pub fn default_configuration(sess: Session, +argv0: ~str, input: input) ->
|
||||||
let (end,arch,wordsz) = match sess.targ_cfg.arch {
|
let (end,arch,wordsz) = match sess.targ_cfg.arch {
|
||||||
session::arch_x86 => (~"little",~"x86",~"32"),
|
session::arch_x86 => (~"little",~"x86",~"32"),
|
||||||
session::arch_x86_64 => (~"little",~"x86_64",~"64"),
|
session::arch_x86_64 => (~"little",~"x86_64",~"64"),
|
||||||
session::arch_arm => (~"little",~"arm",~"32")
|
session::arch_arm => (~"little",~"arm",~"32"),
|
||||||
|
session::arch_mips => (~"little",~"arm",~"32")
|
||||||
};
|
};
|
||||||
|
|
||||||
return ~[ // Target bindings.
|
return ~[ // Target bindings.
|
||||||
|
@ -472,6 +473,8 @@ pub fn get_arch(triple: ~str) -> Option<session::arch> {
|
||||||
} else if str::contains(triple, ~"arm") ||
|
} else if str::contains(triple, ~"arm") ||
|
||||||
str::contains(triple, ~"xscale") {
|
str::contains(triple, ~"xscale") {
|
||||||
Some(session::arch_arm)
|
Some(session::arch_arm)
|
||||||
|
} else if str::contains(triple, ~"mips") {
|
||||||
|
Some(session::arch_mips)
|
||||||
} else { None }
|
} else { None }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -490,12 +493,14 @@ pub fn build_target_config(sopts: @session::options,
|
||||||
let (int_type, uint_type, float_type) = match arch {
|
let (int_type, uint_type, float_type) = match arch {
|
||||||
session::arch_x86 => (ast::ty_i32, ast::ty_u32, ast::ty_f64),
|
session::arch_x86 => (ast::ty_i32, ast::ty_u32, ast::ty_f64),
|
||||||
session::arch_x86_64 => (ast::ty_i64, ast::ty_u64, ast::ty_f64),
|
session::arch_x86_64 => (ast::ty_i64, ast::ty_u64, ast::ty_f64),
|
||||||
session::arch_arm => (ast::ty_i32, ast::ty_u32, ast::ty_f64)
|
session::arch_arm => (ast::ty_i32, ast::ty_u32, ast::ty_f64),
|
||||||
|
session::arch_mips => (ast::ty_i32, ast::ty_u32, ast::ty_f64)
|
||||||
};
|
};
|
||||||
let target_strs = match arch {
|
let target_strs = match arch {
|
||||||
session::arch_x86 => x86::get_target_strs(os),
|
session::arch_x86 => x86::get_target_strs(os),
|
||||||
session::arch_x86_64 => x86_64::get_target_strs(os),
|
session::arch_x86_64 => x86_64::get_target_strs(os),
|
||||||
session::arch_arm => arm::get_target_strs(os)
|
session::arch_arm => arm::get_target_strs(os),
|
||||||
|
session::arch_mips => mips::get_target_strs(os)
|
||||||
};
|
};
|
||||||
let target_cfg = @session::config {
|
let target_cfg = @session::config {
|
||||||
os: os,
|
os: os,
|
||||||
|
|
|
@ -33,7 +33,7 @@ use syntax;
|
||||||
pub enum os { os_win32, os_macos, os_linux, os_android, os_freebsd, }
|
pub enum os { os_win32, os_macos, os_linux, os_android, os_freebsd, }
|
||||||
|
|
||||||
#[deriving_eq]
|
#[deriving_eq]
|
||||||
pub enum arch { arch_x86, arch_x86_64, arch_arm, }
|
pub enum arch { arch_x86, arch_x86_64, arch_arm, arch_mips, }
|
||||||
|
|
||||||
pub enum crate_type { bin_crate, lib_crate, unknown_crate, }
|
pub enum crate_type { bin_crate, lib_crate, unknown_crate, }
|
||||||
|
|
||||||
|
|
|
@ -1484,7 +1484,9 @@ pub fn call_memcpy(cx: block, dst: ValueRef, src: ValueRef,
|
||||||
let _icx = cx.insn_ctxt("call_memcpy");
|
let _icx = cx.insn_ctxt("call_memcpy");
|
||||||
let ccx = cx.ccx();
|
let ccx = cx.ccx();
|
||||||
let key = match ccx.sess.targ_cfg.arch {
|
let key = match ccx.sess.targ_cfg.arch {
|
||||||
session::arch_x86 | session::arch_arm => ~"llvm.memcpy.p0i8.p0i8.i32",
|
session::arch_x86
|
||||||
|
| session::arch_arm
|
||||||
|
| session::arch_mips => ~"llvm.memcpy.p0i8.p0i8.i32",
|
||||||
session::arch_x86_64 => ~"llvm.memcpy.p0i8.p0i8.i64"
|
session::arch_x86_64 => ~"llvm.memcpy.p0i8.p0i8.i64"
|
||||||
};
|
};
|
||||||
let memcpy = ccx.intrinsics.get(&key);
|
let memcpy = ccx.intrinsics.get(&key);
|
||||||
|
@ -1526,7 +1528,9 @@ pub fn memzero(cx: block, llptr: ValueRef, llty: TypeRef) {
|
||||||
|
|
||||||
let intrinsic_key;
|
let intrinsic_key;
|
||||||
match ccx.sess.targ_cfg.arch {
|
match ccx.sess.targ_cfg.arch {
|
||||||
session::arch_x86 | session::arch_arm => {
|
session::arch_x86
|
||||||
|
| session::arch_arm
|
||||||
|
| session::arch_mips => {
|
||||||
intrinsic_key = ~"llvm.memset.p0i8.i32";
|
intrinsic_key = ~"llvm.memset.p0i8.i32";
|
||||||
}
|
}
|
||||||
session::arch_x86_64 => {
|
session::arch_x86_64 => {
|
||||||
|
|
|
@ -766,7 +766,8 @@ pub fn T_int(targ_cfg: @session::config) -> TypeRef {
|
||||||
return match targ_cfg.arch {
|
return match targ_cfg.arch {
|
||||||
session::arch_x86 => T_i32(),
|
session::arch_x86 => T_i32(),
|
||||||
session::arch_x86_64 => T_i64(),
|
session::arch_x86_64 => T_i64(),
|
||||||
session::arch_arm => T_i32()
|
session::arch_arm => T_i32(),
|
||||||
|
session::arch_mips => T_i32()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -803,7 +804,8 @@ pub fn T_float(targ_cfg: @session::config) -> TypeRef {
|
||||||
return match targ_cfg.arch {
|
return match targ_cfg.arch {
|
||||||
session::arch_x86 => T_f64(),
|
session::arch_x86 => T_f64(),
|
||||||
session::arch_x86_64 => T_f64(),
|
session::arch_x86_64 => T_f64(),
|
||||||
session::arch_arm => T_f64()
|
session::arch_arm => T_f64(),
|
||||||
|
session::arch_mips => T_f64()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,7 @@ pub mod back {
|
||||||
pub mod abi;
|
pub mod abi;
|
||||||
pub mod upcall;
|
pub mod upcall;
|
||||||
pub mod arm;
|
pub mod arm;
|
||||||
|
pub mod mips;
|
||||||
pub mod x86;
|
pub mod x86;
|
||||||
pub mod x86_64;
|
pub mod x86_64;
|
||||||
pub mod rpath;
|
pub mod rpath;
|
||||||
|
|
|
@ -27,6 +27,7 @@ A BigDigit is half the size of machine word size.
|
||||||
*/
|
*/
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
pub type BigDigit = u16;
|
pub type BigDigit = u16;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,6 +43,7 @@ pub mod BigDigit {
|
||||||
|
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
pub const bits: uint = 16;
|
pub const bits: uint = 16;
|
||||||
|
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
@ -530,6 +532,7 @@ priv pure fn get_radix_base(radix: uint) -> (uint, uint) {
|
||||||
|
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
priv pure fn get_radix_base(radix: uint) -> (uint, uint) {
|
priv pure fn get_radix_base(radix: uint) -> (uint, uint) {
|
||||||
assert 1 < radix && radix <= 16;
|
assert 1 < radix && radix <= 16;
|
||||||
match radix {
|
match radix {
|
||||||
|
@ -946,6 +949,7 @@ mod biguint_tests {
|
||||||
|
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
fn test_shl_bits() {
|
fn test_shl_bits() {
|
||||||
check(~[0x3210, 0x7654, 0xba98, 0xfedc,
|
check(~[0x3210, 0x7654, 0xba98, 0xfedc,
|
||||||
0x3210, 0x7654, 0xba98, 0xfedc], 4,
|
0x3210, 0x7654, 0xba98, 0xfedc], 4,
|
||||||
|
@ -962,6 +966,7 @@ mod biguint_tests {
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore(cfg(target_arch = "x86"))]
|
#[ignore(cfg(target_arch = "x86"))]
|
||||||
#[ignore(cfg(target_arch = "arm"))]
|
#[ignore(cfg(target_arch = "arm"))]
|
||||||
|
#[ignore(cfg(target_arch = "mips"))]
|
||||||
fn test_shr() {
|
fn test_shr() {
|
||||||
fn check(v: ~[BigDigit], shift: uint, ans: ~[BigDigit]) {
|
fn check(v: ~[BigDigit], shift: uint, ans: ~[BigDigit]) {
|
||||||
assert BigUint::new(v) >> shift == BigUint::new(ans);
|
assert BigUint::new(v) >> shift == BigUint::new(ans);
|
||||||
|
@ -989,6 +994,7 @@ mod biguint_tests {
|
||||||
|
|
||||||
#[cfg(target_arch = "arm")]
|
#[cfg(target_arch = "arm")]
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
|
#[cfg(target_arch = "mips")]
|
||||||
fn test_shr_bits() {
|
fn test_shr_bits() {
|
||||||
check(~[0x2100, 0x6543, 0xa987, 0xedcb,
|
check(~[0x2100, 0x6543, 0xa987, 0xedcb,
|
||||||
0x210f, 0x6543, 0xa987, 0xedcb, 0xf], 4,
|
0x210f, 0x6543, 0xa987, 0xedcb, 0xf], 4,
|
||||||
|
|
|
@ -1504,6 +1504,7 @@ pub mod test {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub mod impl32 {
|
pub mod impl32 {
|
||||||
use net::tcp::test::*;
|
use net::tcp::test::*;
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,7 @@ pub struct uv_tcp_t_32bit_unix_riders {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub struct uv_tcp_t_32bit_unix_riders {
|
pub struct uv_tcp_t_32bit_unix_riders {
|
||||||
a29: *u8, a30: *u8, a31: *u8,
|
a29: *u8, a30: *u8, a31: *u8,
|
||||||
}
|
}
|
||||||
|
@ -187,6 +188,7 @@ pub struct uv_write_t_32bit_unix_riders {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub struct uv_write_t_32bit_unix_riders {
|
pub struct uv_write_t_32bit_unix_riders {
|
||||||
a13: *u8, a14: *u8, a15: *u8,
|
a13: *u8, a14: *u8, a15: *u8,
|
||||||
a16: *u8,
|
a16: *u8,
|
||||||
|
@ -215,6 +217,7 @@ pub struct uv_async_t_32bit_unix_riders {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub struct uv_async_t_32bit_unix_riders {
|
pub struct uv_async_t_32bit_unix_riders {
|
||||||
a10: *u8,
|
a10: *u8,
|
||||||
}
|
}
|
||||||
|
@ -244,6 +247,7 @@ pub struct uv_timer_t_32bit_unix_riders {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub struct uv_timer_t_32bit_unix_riders {
|
pub struct uv_timer_t_32bit_unix_riders {
|
||||||
a10: *u8, a11: *u8, a12: *u8
|
a10: *u8, a11: *u8, a12: *u8
|
||||||
}
|
}
|
||||||
|
@ -273,6 +277,7 @@ pub struct sockaddr_in6 {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub struct sockaddr_in6 {
|
pub struct sockaddr_in6 {
|
||||||
a0: *u8, a1: *u8,
|
a0: *u8, a1: *u8,
|
||||||
a2: *u8, a3: *u8,
|
a2: *u8, a3: *u8,
|
||||||
|
@ -291,7 +296,8 @@ pub mod addr_in_impl {
|
||||||
a2: *u8, a3: *u8,
|
a2: *u8, a3: *u8,
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub struct addr_in {
|
pub struct addr_in {
|
||||||
a0: *u8, a1: *u8,
|
a0: *u8, a1: *u8,
|
||||||
a2: *u8, a3: *u8,
|
a2: *u8, a3: *u8,
|
||||||
|
@ -319,6 +325,7 @@ pub mod addrinfo_impl {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub struct addrinfo {
|
pub struct addrinfo {
|
||||||
a00: *u8, a01: *u8, a02: *u8, a03: *u8,
|
a00: *u8, a01: *u8, a02: *u8, a03: *u8,
|
||||||
a04: *u8, a05: *u8, a06: *u8, a07: *u8,
|
a04: *u8, a05: *u8, a06: *u8, a07: *u8,
|
||||||
|
@ -402,6 +409,7 @@ pub mod uv_ll_struct_stubgen {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub fn gen_stub_arch() -> uv_tcp_t {
|
pub fn gen_stub_arch() -> uv_tcp_t {
|
||||||
uv_tcp_t {
|
uv_tcp_t {
|
||||||
fields: uv_handle_fields {
|
fields: uv_handle_fields {
|
||||||
|
@ -546,6 +554,7 @@ pub mod uv_ll_struct_stubgen {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub fn gen_stub_arch() -> uv_async_t {
|
pub fn gen_stub_arch() -> uv_async_t {
|
||||||
uv_async_t {
|
uv_async_t {
|
||||||
fields: uv_handle_fields {
|
fields: uv_handle_fields {
|
||||||
|
@ -602,6 +611,7 @@ pub mod uv_ll_struct_stubgen {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch = "x86")]
|
#[cfg(target_arch = "x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub fn gen_stub_arch() -> uv_timer_t {
|
pub fn gen_stub_arch() -> uv_timer_t {
|
||||||
uv_timer_t {
|
uv_timer_t {
|
||||||
fields: uv_handle_fields {
|
fields: uv_handle_fields {
|
||||||
|
@ -662,6 +672,7 @@ pub mod uv_ll_struct_stubgen {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub fn gen_stub_arch() -> uv_write_t {
|
pub fn gen_stub_arch() -> uv_write_t {
|
||||||
uv_write_t {
|
uv_write_t {
|
||||||
fields: uv_handle_fields {
|
fields: uv_handle_fields {
|
||||||
|
@ -1748,6 +1759,7 @@ pub mod test {
|
||||||
}
|
}
|
||||||
#[cfg(target_arch="x86")]
|
#[cfg(target_arch="x86")]
|
||||||
#[cfg(target_arch="arm")]
|
#[cfg(target_arch="arm")]
|
||||||
|
#[cfg(target_arch="mips")]
|
||||||
pub mod impl32 {
|
pub mod impl32 {
|
||||||
use uv_ll::test::*;
|
use uv_ll::test::*;
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -97,6 +97,12 @@ void LLVMInitializeARMTarget();
|
||||||
void LLVMInitializeARMTargetMC();
|
void LLVMInitializeARMTargetMC();
|
||||||
void LLVMInitializeARMAsmPrinter();
|
void LLVMInitializeARMAsmPrinter();
|
||||||
void LLVMInitializeARMAsmParser();
|
void LLVMInitializeARMAsmParser();
|
||||||
|
|
||||||
|
void LLVMInitializeMipsTargetInfo();
|
||||||
|
void LLVMInitializeMipsTarget();
|
||||||
|
void LLVMInitializeMipsTargetMC();
|
||||||
|
void LLVMInitializeMipsAsmPrinter();
|
||||||
|
void LLVMInitializeMipsAsmParser();
|
||||||
// Only initialize the platforms supported by Rust here,
|
// Only initialize the platforms supported by Rust here,
|
||||||
// because using --llvm-root will have multiple platforms
|
// because using --llvm-root will have multiple platforms
|
||||||
// that rustllvm doesn't actually link to and it's pointless to put target info
|
// that rustllvm doesn't actually link to and it's pointless to put target info
|
||||||
|
@ -114,6 +120,12 @@ void LLVMRustInitializeTargets() {
|
||||||
LLVMInitializeARMTargetMC();
|
LLVMInitializeARMTargetMC();
|
||||||
LLVMInitializeARMAsmPrinter();
|
LLVMInitializeARMAsmPrinter();
|
||||||
LLVMInitializeARMAsmParser();
|
LLVMInitializeARMAsmParser();
|
||||||
|
|
||||||
|
LLVMInitializeMipsTargetInfo();
|
||||||
|
LLVMInitializeMipsTarget();
|
||||||
|
LLVMInitializeMipsTargetMC();
|
||||||
|
LLVMInitializeMipsAsmPrinter();
|
||||||
|
LLVMInitializeMipsAsmParser();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Custom memory manager for MCJITting. It needs special features
|
// Custom memory manager for MCJITting. It needs special features
|
||||||
|
|
|
@ -384,18 +384,25 @@ LLVMInitializeScalarOpts
|
||||||
LLVMInitializeTarget
|
LLVMInitializeTarget
|
||||||
LLVMInitializeTransformUtils
|
LLVMInitializeTransformUtils
|
||||||
LLVMInitializeARMAsmLexer
|
LLVMInitializeARMAsmLexer
|
||||||
|
LLVMInitializeMipsAsmLexer
|
||||||
LLVMInitializeX86AsmLexer
|
LLVMInitializeX86AsmLexer
|
||||||
LLVMInitializeARMAsmParser
|
LLVMInitializeARMAsmParser
|
||||||
|
LLVMInitializeMipsAsmParser
|
||||||
LLVMInitializeX86AsmParser
|
LLVMInitializeX86AsmParser
|
||||||
LLVMInitializeARMAsmPrinter
|
LLVMInitializeARMAsmPrinter
|
||||||
|
LLVMInitializeMipsAsmPrinter
|
||||||
LLVMInitializeX86AsmPrinter
|
LLVMInitializeX86AsmPrinter
|
||||||
LLVMInitializeARMDisassembler
|
LLVMInitializeARMDisassembler
|
||||||
|
LLVMInitializeMipsDisassembler
|
||||||
LLVMInitializeX86Disassembler
|
LLVMInitializeX86Disassembler
|
||||||
LLVMInitializeARMTarget
|
LLVMInitializeARMTarget
|
||||||
|
LLVMInitializeMipsTarget
|
||||||
LLVMInitializeX86Target
|
LLVMInitializeX86Target
|
||||||
LLVMInitializeARMTargetMC
|
LLVMInitializeARMTargetMC
|
||||||
|
LLVMInitializeMipsTargetMC
|
||||||
LLVMInitializeX86TargetMC
|
LLVMInitializeX86TargetMC
|
||||||
LLVMInitializeARMTargetInfo
|
LLVMInitializeARMTargetInfo
|
||||||
|
LLVMInitializeMipsTargetInfo
|
||||||
LLVMInitializeX86TargetInfo
|
LLVMInitializeX86TargetInfo
|
||||||
LLVMInsertBasicBlock
|
LLVMInsertBasicBlock
|
||||||
LLVMInsertBasicBlockInContext
|
LLVMInsertBasicBlockInContext
|
||||||
|
|
Loading…
Reference in New Issue