diff --git a/.gitignore b/.gitignore index 9611428d..fbbf5d70 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -**/dockcross-linux-aarch64 \ No newline at end of file +**/dockcross-linux-aarch64 diff --git a/01_bareminimum/Xargo.toml b/01_bareminimum/Xargo.toml new file mode 100644 index 00000000..d0d5706f --- /dev/null +++ b/01_bareminimum/Xargo.toml @@ -0,0 +1,5 @@ +[dependencies.core] +stage = 0 + +[dependencies.compiler_builtins] +stage = 1 diff --git a/02_multicore_rust/Xargo.toml b/02_multicore_rust/Xargo.toml new file mode 100644 index 00000000..d0d5706f --- /dev/null +++ b/02_multicore_rust/Xargo.toml @@ -0,0 +1,5 @@ +[dependencies.core] +stage = 0 + +[dependencies.compiler_builtins] +stage = 1 diff --git a/03_uart1/Xargo.toml b/03_uart1/Xargo.toml new file mode 100644 index 00000000..d0d5706f --- /dev/null +++ b/03_uart1/Xargo.toml @@ -0,0 +1,5 @@ +[dependencies.core] +stage = 0 + +[dependencies.compiler_builtins] +stage = 1 diff --git a/04_mailboxes/Cargo.lock b/04_mailboxes/Cargo.lock index 6423a007..3352bcb2 100644 --- a/04_mailboxes/Cargo.lock +++ b/04_mailboxes/Cargo.lock @@ -3,7 +3,6 @@ name = "kernel8" version = "0.1.0" dependencies = [ "raspi3_glue 0.1.0", - "rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -11,11 +10,6 @@ dependencies = [ name = "raspi3_glue" version = "0.1.0" -[[package]] -name = "rlibc" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "vcell" version = "0.1.0" @@ -30,6 +24,5 @@ dependencies = [ ] [metadata] -"checksum rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" "checksum vcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "45c297f0afb6928cd08ab1ff9d95e99392595ea25ae1b5ecf822ff8764e57a0d" "checksum volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286" diff --git a/04_mailboxes/Cargo.toml b/04_mailboxes/Cargo.toml index 8e79f96f..df9e43a9 100644 --- a/04_mailboxes/Cargo.toml +++ b/04_mailboxes/Cargo.toml @@ -6,4 +6,3 @@ authors = ["Andre Richter "] [dependencies] raspi3_glue = { path = "raspi3_glue" } volatile-register = "0.2.0" -rlibc = "1.0" diff --git a/04_mailboxes/README.md b/04_mailboxes/README.md index df509f27..9b28a564 100644 --- a/04_mailboxes/README.md +++ b/04_mailboxes/README.md @@ -35,17 +35,15 @@ Where each tag looks like: n+3. optional value buffer ``` -### rlibc +### Xargo.toml The mailbox buffer is a fixed array that is zero-initialized. To achieve zero-initialization, Rust utilizies and links to the `memset()` function, which is normally provided by `libc`. Since we are writing a `no_std` crate, we need to explicitly provide it. The -easiest way is pulling in [rlibc] by adding it as an `extern crate` to `main.rs` -and adding the dependency to `Cargo.toml`. - -[rlibc]: https://github.com/alexcrichton/rlibc +easiest way is pulling in the `mem` feature of the `compiler_builtins` by adding +it to `Xargo.toml`. ### Synchronization diff --git a/04_mailboxes/Xargo.toml b/04_mailboxes/Xargo.toml new file mode 100644 index 00000000..163024ec --- /dev/null +++ b/04_mailboxes/Xargo.toml @@ -0,0 +1,6 @@ +[dependencies.core] +stage = 0 + +[dependencies.compiler_builtins] +features = ["mem"] # for memset() et al. +stage = 1 diff --git a/04_mailboxes/kernel8.img b/04_mailboxes/kernel8.img index 4f18a092..f36cf015 100755 Binary files a/04_mailboxes/kernel8.img and b/04_mailboxes/kernel8.img differ diff --git a/04_mailboxes/src/main.rs b/04_mailboxes/src/main.rs index ed6ac757..5fa2e798 100644 --- a/04_mailboxes/src/main.rs +++ b/04_mailboxes/src/main.rs @@ -26,7 +26,6 @@ #![feature(asm)] extern crate raspi3_glue; -extern crate rlibc; // for memset et al.b extern crate volatile_register; const MMIO_BASE: u32 = 0x3F00_0000; diff --git a/05_uart0/Cargo.lock b/05_uart0/Cargo.lock index 6423a007..3352bcb2 100644 --- a/05_uart0/Cargo.lock +++ b/05_uart0/Cargo.lock @@ -3,7 +3,6 @@ name = "kernel8" version = "0.1.0" dependencies = [ "raspi3_glue 0.1.0", - "rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -11,11 +10,6 @@ dependencies = [ name = "raspi3_glue" version = "0.1.0" -[[package]] -name = "rlibc" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "vcell" version = "0.1.0" @@ -30,6 +24,5 @@ dependencies = [ ] [metadata] -"checksum rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" "checksum vcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "45c297f0afb6928cd08ab1ff9d95e99392595ea25ae1b5ecf822ff8764e57a0d" "checksum volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286" diff --git a/05_uart0/Cargo.toml b/05_uart0/Cargo.toml index 8e79f96f..df9e43a9 100644 --- a/05_uart0/Cargo.toml +++ b/05_uart0/Cargo.toml @@ -6,4 +6,3 @@ authors = ["Andre Richter "] [dependencies] raspi3_glue = { path = "raspi3_glue" } volatile-register = "0.2.0" -rlibc = "1.0" diff --git a/05_uart0/Xargo.toml b/05_uart0/Xargo.toml new file mode 100644 index 00000000..163024ec --- /dev/null +++ b/05_uart0/Xargo.toml @@ -0,0 +1,6 @@ +[dependencies.core] +stage = 0 + +[dependencies.compiler_builtins] +features = ["mem"] # for memset() et al. +stage = 1 diff --git a/05_uart0/kernel8.img b/05_uart0/kernel8.img index c37ec3fd..f2cc1a91 100755 Binary files a/05_uart0/kernel8.img and b/05_uart0/kernel8.img differ diff --git a/05_uart0/src/main.rs b/05_uart0/src/main.rs index 5d1b9351..cd0ad5c5 100644 --- a/05_uart0/src/main.rs +++ b/05_uart0/src/main.rs @@ -26,7 +26,6 @@ #![feature(asm)] extern crate raspi3_glue; -extern crate rlibc; // for memset et al.b extern crate volatile_register; const MMIO_BASE: u32 = 0x3F00_0000; diff --git a/06_random/Cargo.lock b/06_random/Cargo.lock index 6423a007..3352bcb2 100644 --- a/06_random/Cargo.lock +++ b/06_random/Cargo.lock @@ -3,7 +3,6 @@ name = "kernel8" version = "0.1.0" dependencies = [ "raspi3_glue 0.1.0", - "rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -11,11 +10,6 @@ dependencies = [ name = "raspi3_glue" version = "0.1.0" -[[package]] -name = "rlibc" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "vcell" version = "0.1.0" @@ -30,6 +24,5 @@ dependencies = [ ] [metadata] -"checksum rlibc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" "checksum vcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "45c297f0afb6928cd08ab1ff9d95e99392595ea25ae1b5ecf822ff8764e57a0d" "checksum volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286" diff --git a/06_random/Cargo.toml b/06_random/Cargo.toml index 8e79f96f..df9e43a9 100644 --- a/06_random/Cargo.toml +++ b/06_random/Cargo.toml @@ -6,4 +6,3 @@ authors = ["Andre Richter "] [dependencies] raspi3_glue = { path = "raspi3_glue" } volatile-register = "0.2.0" -rlibc = "1.0" diff --git a/06_random/Xargo.toml b/06_random/Xargo.toml new file mode 100644 index 00000000..163024ec --- /dev/null +++ b/06_random/Xargo.toml @@ -0,0 +1,6 @@ +[dependencies.core] +stage = 0 + +[dependencies.compiler_builtins] +features = ["mem"] # for memset() et al. +stage = 1 diff --git a/06_random/kernel8.img b/06_random/kernel8.img index 7c8e4fe5..f5627ac4 100755 Binary files a/06_random/kernel8.img and b/06_random/kernel8.img differ diff --git a/06_random/src/main.rs b/06_random/src/main.rs index 248ee603..f039b4d5 100644 --- a/06_random/src/main.rs +++ b/06_random/src/main.rs @@ -26,7 +26,6 @@ #![feature(asm)] extern crate raspi3_glue; -extern crate rlibc; // for memset et al.b extern crate volatile_register; const MMIO_BASE: u32 = 0x3F00_0000;