From ad5a96db4c1af9680936ee2ff1b8367f208e8004 Mon Sep 17 00:00:00 2001 From: Andre Richter Date: Sun, 10 Apr 2022 12:18:11 +0200 Subject: [PATCH] Bump compiler version --- 03_hacky_hello_world/README.md | 11 ++++++----- 05_drivers_gpio_uart/README.md | 7 +++---- 05_drivers_gpio_uart/src/main.rs | 1 - 06_uart_chainloader/README.md | 2 +- 06_uart_chainloader/demo_payload_rpi3.img | Bin 7112 -> 7968 bytes 06_uart_chainloader/demo_payload_rpi4.img | Bin 7000 -> 7872 bytes 06_uart_chainloader/src/main.rs | 1 - 07_timestamps/README.md | 4 ++-- 07_timestamps/src/main.rs | 1 - 08_hw_debug_JTAG/src/main.rs | 1 - 09_privilege_level/README.md | 8 ++++---- 09_privilege_level/src/main.rs | 1 - .../README.md | 11 +++++------ .../src/main.rs | 1 - 11_exceptions_part1_groundwork/README.md | 4 ++-- 11_exceptions_part1_groundwork/src/main.rs | 1 - 12_integrated_testing/README.md | 12 +++++------- 12_integrated_testing/src/lib.rs | 1 - 13_exceptions_part2_peripheral_IRQs/README.md | 8 +++----- .../src/exception/asynchronous.rs | 2 +- .../src/lib.rs | 2 -- 14_virtual_mem_part2_mmio_remap/README.md | 14 ++++++++------ .../src/exception/asynchronous.rs | 2 +- 14_virtual_mem_part2_mmio_remap/src/lib.rs | 2 -- .../src/memory/mmu/types.rs | 4 +++- .../src/exception/asynchronous.rs | 2 +- .../src/lib.rs | 2 -- .../src/memory/mmu/types.rs | 4 +++- .../README.md | 2 +- .../src/exception/asynchronous.rs | 2 +- .../src/lib.rs | 2 -- .../src/memory/mmu/types.rs | 4 +++- X1_JTAG_boot/jtag_boot_rpi3.img | Bin 8104 -> 9000 bytes X1_JTAG_boot/jtag_boot_rpi4.img | Bin 7032 -> 7920 bytes X1_JTAG_boot/src/main.rs | 1 - rust-toolchain.toml | 2 +- 36 files changed, 54 insertions(+), 68 deletions(-) diff --git a/03_hacky_hello_world/README.md b/03_hacky_hello_world/README.md index 527757dd..b0cfee12 100644 --- a/03_hacky_hello_world/README.md +++ b/03_hacky_hello_world/README.md @@ -35,8 +35,8 @@ Stopping here. ``` ## Diff to previous - ```diff + diff -uNr 02_runtime_init/Cargo.toml 03_hacky_hello_world/Cargo.toml --- 02_runtime_init/Cargo.toml +++ 03_hacky_hello_world/Cargo.toml @@ -97,7 +97,7 @@ diff -uNr 02_runtime_init/Makefile 03_hacky_hello_world/Makefile @@ -169,3 +172,28 @@ ##------------------------------------------------------------------------------ check: - @RUSTFLAGS="$(RUSTFLAGS)" $(CHECK_CMD) --message-format=json + @RUSTFLAGS="$(RUSTFLAGS)" $(CHECK_CMD) --message-format=json + + + @@ -109,7 +109,7 @@ diff -uNr 02_runtime_init/Makefile 03_hacky_hello_world/Makefile +ifeq ($(QEMU_MACHINE_TYPE),) # QEMU is not supported for the board. + +test_boot test : -+ $(call colorecho, "\n$(QEMU_MISSING_STRING)") ++ $(call colorecho, "\n$(QEMU_MISSING_STRING)") + +else # QEMU is supported. + @@ -117,8 +117,8 @@ diff -uNr 02_runtime_init/Makefile 03_hacky_hello_world/Makefile +## Run boot test +##------------------------------------------------------------------------------ +test_boot: $(KERNEL_BIN) -+ $(call colorecho, "\nBoot test - $(BSP)") -+ @$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_RELEASE_ARGS) -kernel $(KERNEL_BIN) ++ $(call colorecho, "\nBoot test - $(BSP)") ++ @$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_RELEASE_ARGS) -kernel $(KERNEL_BIN) + +test: test_boot + @@ -358,4 +358,5 @@ diff -uNr 02_runtime_init/tests/boot_test_string.rb 03_hacky_hello_world/tests/b +# frozen_string_literal: true + +EXPECTED_PRINT = 'Stopping here' + ``` diff --git a/05_drivers_gpio_uart/README.md b/05_drivers_gpio_uart/README.md index aa39cbaa..d49adf28 100644 --- a/05_drivers_gpio_uart/README.md +++ b/05_drivers_gpio_uart/README.md @@ -1333,16 +1333,15 @@ diff -uNr 04_safe_globals/src/driver.rs 05_drivers_gpio_uart/src/driver.rs diff -uNr 04_safe_globals/src/main.rs 05_drivers_gpio_uart/src/main.rs --- 04_safe_globals/src/main.rs +++ 05_drivers_gpio_uart/src/main.rs -@@ -104,6 +104,8 @@ +@@ -104,6 +104,7 @@ //! - It is implemented in `src/_arch/__arch_name__/cpu/boot.s`. //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. +#![allow(clippy::upper_case_acronyms)] -+#![feature(const_fn_fn_ptr_basics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] -@@ -113,6 +115,7 @@ +@@ -113,6 +114,7 @@ mod bsp; mod console; mod cpu; @@ -1350,7 +1349,7 @@ diff -uNr 04_safe_globals/src/main.rs 05_drivers_gpio_uart/src/main.rs mod panic_wait; mod print; mod synchronization; -@@ -122,16 +125,54 @@ +@@ -122,16 +124,54 @@ /// # Safety /// /// - Only a single core must be active and running this function. diff --git a/05_drivers_gpio_uart/src/main.rs b/05_drivers_gpio_uart/src/main.rs index 55e80f56..70e6b116 100644 --- a/05_drivers_gpio_uart/src/main.rs +++ b/05_drivers_gpio_uart/src/main.rs @@ -105,7 +105,6 @@ //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. #![allow(clippy::upper_case_acronyms)] -#![feature(const_fn_fn_ptr_basics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] diff --git a/06_uart_chainloader/README.md b/06_uart_chainloader/README.md index b904d9d8..6f786dd8 100644 --- a/06_uart_chainloader/README.md +++ b/06_uart_chainloader/README.md @@ -457,7 +457,7 @@ diff -uNr 05_drivers_gpio_uart/src/bsp/raspberrypi/memory.rs 06_uart_chainloader diff -uNr 05_drivers_gpio_uart/src/main.rs 06_uart_chainloader/src/main.rs --- 05_drivers_gpio_uart/src/main.rs +++ 06_uart_chainloader/src/main.rs -@@ -141,38 +141,56 @@ +@@ -140,38 +140,56 @@ kernel_main() } diff --git a/06_uart_chainloader/demo_payload_rpi3.img b/06_uart_chainloader/demo_payload_rpi3.img index 1997951a5d4b8429956ff250ab5928d11b3d272f..1491d9b590d392fb5d5998c3037ed74fc8579c89 100755 GIT binary patch literal 7968 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 K$u`L^)%-8|ZV6rh delta 4430 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 diff --git a/06_uart_chainloader/demo_payload_rpi4.img b/06_uart_chainloader/demo_payload_rpi4.img index 9f463d32d7dd4c60080c8b92f3b298fa1d8f9d4c..9f7de6dfbb4dc9afc2d188340fb8a6de00dd6812 100755 GIT binary patch literal 7872 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 n+@K6e`d%*B+cs#3XIm^mudbF7%--A diff --git a/06_uart_chainloader/src/main.rs b/06_uart_chainloader/src/main.rs index e44a1ae6..32a56bda 100644 --- a/06_uart_chainloader/src/main.rs +++ b/06_uart_chainloader/src/main.rs @@ -105,7 +105,6 @@ //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. #![allow(clippy::upper_case_acronyms)] -#![feature(const_fn_fn_ptr_basics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] diff --git a/07_timestamps/README.md b/07_timestamps/README.md index 0af0b046..e6796930 100644 --- a/07_timestamps/README.md +++ b/07_timestamps/README.md @@ -538,7 +538,7 @@ diff -uNr 06_uart_chainloader/src/cpu.rs 07_timestamps/src/cpu.rs diff -uNr 06_uart_chainloader/src/main.rs 07_timestamps/src/main.rs --- 06_uart_chainloader/src/main.rs +++ 07_timestamps/src/main.rs -@@ -119,6 +119,7 @@ +@@ -118,6 +118,7 @@ mod panic_wait; mod print; mod synchronization; @@ -546,7 +546,7 @@ diff -uNr 06_uart_chainloader/src/main.rs 07_timestamps/src/main.rs /// Early init code. /// -@@ -141,56 +142,38 @@ +@@ -140,56 +141,38 @@ kernel_main() } diff --git a/07_timestamps/src/main.rs b/07_timestamps/src/main.rs index e5d1d81e..3d4ace4f 100644 --- a/07_timestamps/src/main.rs +++ b/07_timestamps/src/main.rs @@ -105,7 +105,6 @@ //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. #![allow(clippy::upper_case_acronyms)] -#![feature(const_fn_fn_ptr_basics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] diff --git a/08_hw_debug_JTAG/src/main.rs b/08_hw_debug_JTAG/src/main.rs index e5d1d81e..3d4ace4f 100644 --- a/08_hw_debug_JTAG/src/main.rs +++ b/08_hw_debug_JTAG/src/main.rs @@ -105,7 +105,6 @@ //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. #![allow(clippy::upper_case_acronyms)] -#![feature(const_fn_fn_ptr_basics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] diff --git a/09_privilege_level/README.md b/09_privilege_level/README.md index b9843495..729634ac 100644 --- a/09_privilege_level/README.md +++ b/09_privilege_level/README.md @@ -502,7 +502,7 @@ diff -uNr 08_hw_debug_JTAG/src/exception.rs 09_privilege_level/src/exception.rs diff -uNr 08_hw_debug_JTAG/src/main.rs 09_privilege_level/src/main.rs --- 08_hw_debug_JTAG/src/main.rs +++ 09_privilege_level/src/main.rs -@@ -116,6 +116,7 @@ +@@ -115,6 +115,7 @@ mod console; mod cpu; mod driver; @@ -510,7 +510,7 @@ diff -uNr 08_hw_debug_JTAG/src/main.rs 09_privilege_level/src/main.rs mod panic_wait; mod print; mod synchronization; -@@ -144,6 +145,8 @@ +@@ -143,6 +144,8 @@ /// The main function running after the early init. fn kernel_main() -> ! { @@ -519,7 +519,7 @@ diff -uNr 08_hw_debug_JTAG/src/main.rs 09_privilege_level/src/main.rs use core::time::Duration; use driver::interface::DriverManager; use time::interface::TimeManager; -@@ -155,6 +158,12 @@ +@@ -154,6 +157,12 @@ ); info!("Booting on: {}", bsp::board_name()); @@ -532,7 +532,7 @@ diff -uNr 08_hw_debug_JTAG/src/main.rs 09_privilege_level/src/main.rs info!( "Architectural timer resolution: {} ns", time::time_manager().resolution().as_nanos() -@@ -169,11 +178,15 @@ +@@ -168,11 +177,15 @@ info!(" {}. {}", i + 1, driver.compatible()); } diff --git a/09_privilege_level/src/main.rs b/09_privilege_level/src/main.rs index c3bca5c3..b4449734 100644 --- a/09_privilege_level/src/main.rs +++ b/09_privilege_level/src/main.rs @@ -105,7 +105,6 @@ //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. #![allow(clippy::upper_case_acronyms)] -#![feature(const_fn_fn_ptr_basics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] diff --git a/10_virtual_mem_part1_identity_mapping/README.md b/10_virtual_mem_part1_identity_mapping/README.md index f553e0e0..1bf427c0 100644 --- a/10_virtual_mem_part1_identity_mapping/README.md +++ b/10_virtual_mem_part1_identity_mapping/README.md @@ -1081,17 +1081,16 @@ diff -uNr 09_privilege_level/src/bsp.rs 10_virtual_mem_part1_identity_mapping/sr diff -uNr 09_privilege_level/src/main.rs 10_virtual_mem_part1_identity_mapping/src/main.rs --- 09_privilege_level/src/main.rs +++ 10_virtual_mem_part1_identity_mapping/src/main.rs -@@ -105,7 +105,9 @@ +@@ -105,6 +105,8 @@ //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. #![allow(clippy::upper_case_acronyms)] +#![allow(incomplete_features)] - #![feature(const_fn_fn_ptr_basics)] +#![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] -@@ -117,6 +119,7 @@ +@@ -116,6 +118,7 @@ mod cpu; mod driver; mod exception; @@ -1099,7 +1098,7 @@ diff -uNr 09_privilege_level/src/main.rs 10_virtual_mem_part1_identity_mapping/s mod panic_wait; mod print; mod synchronization; -@@ -127,9 +130,17 @@ +@@ -126,9 +129,17 @@ /// # Safety /// /// - Only a single core must be active and running this function. @@ -1118,7 +1117,7 @@ diff -uNr 09_privilege_level/src/main.rs 10_virtual_mem_part1_identity_mapping/s for i in bsp::driver::driver_manager().all_device_drivers().iter() { if let Err(x) = i.init() { -@@ -158,6 +169,9 @@ +@@ -157,6 +168,9 @@ ); info!("Booting on: {}", bsp::board_name()); @@ -1128,7 +1127,7 @@ diff -uNr 09_privilege_level/src/main.rs 10_virtual_mem_part1_identity_mapping/s let (_, privilege_level) = exception::current_privilege_level(); info!("Current privilege level: {}", privilege_level); -@@ -181,6 +195,13 @@ +@@ -180,6 +194,13 @@ info!("Timer test, spinning for 1 second"); time::time_manager().spin_for(Duration::from_secs(1)); diff --git a/10_virtual_mem_part1_identity_mapping/src/main.rs b/10_virtual_mem_part1_identity_mapping/src/main.rs index 5b5cb473..faa81ee8 100644 --- a/10_virtual_mem_part1_identity_mapping/src/main.rs +++ b/10_virtual_mem_part1_identity_mapping/src/main.rs @@ -106,7 +106,6 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] -#![feature(const_fn_fn_ptr_basics)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(panic_info_message)] diff --git a/11_exceptions_part1_groundwork/README.md b/11_exceptions_part1_groundwork/README.md index 4df5c939..2f90b7ff 100644 --- a/11_exceptions_part1_groundwork/README.md +++ b/11_exceptions_part1_groundwork/README.md @@ -1016,7 +1016,7 @@ diff -uNr 10_virtual_mem_part1_identity_mapping/src/exception.rs 11_exceptions_p diff -uNr 10_virtual_mem_part1_identity_mapping/src/main.rs 11_exceptions_part1_groundwork/src/main.rs --- 10_virtual_mem_part1_identity_mapping/src/main.rs +++ 11_exceptions_part1_groundwork/src/main.rs -@@ -138,6 +138,8 @@ +@@ -137,6 +137,8 @@ use driver::interface::DriverManager; use memory::mmu::interface::MMU; @@ -1025,7 +1025,7 @@ diff -uNr 10_virtual_mem_part1_identity_mapping/src/main.rs 11_exceptions_part1_ if let Err(string) = memory::mmu::mmu().enable_mmu_and_caching() { panic!("MMU: {}", string); } -@@ -195,13 +197,28 @@ +@@ -194,13 +196,28 @@ info!("Timer test, spinning for 1 second"); time::time_manager().spin_for(Duration::from_secs(1)); diff --git a/11_exceptions_part1_groundwork/src/main.rs b/11_exceptions_part1_groundwork/src/main.rs index 22912318..77ffd9cd 100644 --- a/11_exceptions_part1_groundwork/src/main.rs +++ b/11_exceptions_part1_groundwork/src/main.rs @@ -106,7 +106,6 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] -#![feature(const_fn_fn_ptr_basics)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(panic_info_message)] diff --git a/12_integrated_testing/README.md b/12_integrated_testing/README.md index 8a20a0d5..fddd4be5 100644 --- a/12_integrated_testing/README.md +++ b/12_integrated_testing/README.md @@ -1325,7 +1325,7 @@ diff -uNr 11_exceptions_part1_groundwork/src/exception.rs 12_integrated_testing/ diff -uNr 11_exceptions_part1_groundwork/src/lib.rs 12_integrated_testing/src/lib.rs --- 11_exceptions_part1_groundwork/src/lib.rs +++ 12_integrated_testing/src/lib.rs -@@ -0,0 +1,184 @@ +@@ -0,0 +1,183 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2018-2022 Andre Richter @@ -1436,7 +1436,6 @@ diff -uNr 11_exceptions_part1_groundwork/src/lib.rs 12_integrated_testing/src/li + +#![allow(clippy::upper_case_acronyms)] +#![allow(incomplete_features)] -+#![feature(const_fn_fn_ptr_basics)] +#![feature(core_intrinsics)] +#![feature(format_args_nl)] +#![feature(linkage)] @@ -1514,7 +1513,7 @@ diff -uNr 11_exceptions_part1_groundwork/src/lib.rs 12_integrated_testing/src/li diff -uNr 11_exceptions_part1_groundwork/src/main.rs 12_integrated_testing/src/main.rs --- 11_exceptions_part1_groundwork/src/main.rs +++ 12_integrated_testing/src/main.rs -@@ -6,124 +6,12 @@ +@@ -6,123 +6,12 @@ #![doc(html_logo_url = "https://git.io/JeGIp")] //! The `kernel` binary. @@ -1618,7 +1617,6 @@ diff -uNr 11_exceptions_part1_groundwork/src/main.rs 12_integrated_testing/src/m - -#![allow(clippy::upper_case_acronyms)] -#![allow(incomplete_features)] --#![feature(const_fn_fn_ptr_basics)] -#![feature(core_intrinsics)] + #![feature(format_args_nl)] @@ -1641,7 +1639,7 @@ diff -uNr 11_exceptions_part1_groundwork/src/main.rs 12_integrated_testing/src/m /// Early init code. /// -@@ -134,6 +22,7 @@ +@@ -133,6 +22,7 @@ /// - MMU + Data caching must be activated at the earliest. Without it, any atomic operations, /// e.g. the yet-to-be-introduced spinlocks in the device drivers (which currently employ /// NullLocks instead of spinlocks), will fail to work (properly) on the RPi SoCs. @@ -1649,7 +1647,7 @@ diff -uNr 11_exceptions_part1_groundwork/src/main.rs 12_integrated_testing/src/m unsafe fn kernel_init() -> ! { use driver::interface::DriverManager; use memory::mmu::interface::MMU; -@@ -160,15 +49,9 @@ +@@ -159,15 +49,9 @@ fn kernel_main() -> ! { use bsp::console::console; use console::interface::All; @@ -1666,7 +1664,7 @@ diff -uNr 11_exceptions_part1_groundwork/src/main.rs 12_integrated_testing/src/m info!("Booting on: {}", bsp::board_name()); info!("MMU online. Special regions:"); -@@ -194,31 +77,6 @@ +@@ -193,31 +77,6 @@ info!(" {}. {}", i + 1, driver.compatible()); } diff --git a/12_integrated_testing/src/lib.rs b/12_integrated_testing/src/lib.rs index 036e8e5d..51f10d7c 100644 --- a/12_integrated_testing/src/lib.rs +++ b/12_integrated_testing/src/lib.rs @@ -108,7 +108,6 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] -#![feature(const_fn_fn_ptr_basics)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(linkage)] diff --git a/13_exceptions_part2_peripheral_IRQs/README.md b/13_exceptions_part2_peripheral_IRQs/README.md index d89093df..4224d8b9 100644 --- a/13_exceptions_part2_peripheral_IRQs/README.md +++ b/13_exceptions_part2_peripheral_IRQs/README.md @@ -2376,7 +2376,7 @@ diff -uNr 12_integrated_testing/src/exception/asynchronous.rs 13_exceptions_part + pub const fn new(number: usize) -> Self { + assert!(number <= MAX_INCLUSIVE); + -+ Self { 0: number } ++ Self(number) + } + + /// Return the wrapped number. @@ -2411,17 +2411,15 @@ diff -uNr 12_integrated_testing/src/exception/asynchronous.rs 13_exceptions_part diff -uNr 12_integrated_testing/src/lib.rs 13_exceptions_part2_peripheral_IRQs/src/lib.rs --- 12_integrated_testing/src/lib.rs +++ 13_exceptions_part2_peripheral_IRQs/src/lib.rs -@@ -108,7 +108,9 @@ +@@ -108,6 +108,7 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] +#![feature(asm_const)] - #![feature(const_fn_fn_ptr_basics)] -+#![feature(const_fn_trait_bound)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(linkage)] -@@ -131,6 +133,7 @@ +@@ -130,6 +131,7 @@ pub mod exception; pub mod memory; pub mod print; diff --git a/13_exceptions_part2_peripheral_IRQs/src/exception/asynchronous.rs b/13_exceptions_part2_peripheral_IRQs/src/exception/asynchronous.rs index 0e2835b2..fb1785c2 100644 --- a/13_exceptions_part2_peripheral_IRQs/src/exception/asynchronous.rs +++ b/13_exceptions_part2_peripheral_IRQs/src/exception/asynchronous.rs @@ -119,7 +119,7 @@ impl IRQNumber<{ MAX_INCLUSIVE }> { pub const fn new(number: usize) -> Self { assert!(number <= MAX_INCLUSIVE); - Self { 0: number } + Self(number) } /// Return the wrapped number. diff --git a/13_exceptions_part2_peripheral_IRQs/src/lib.rs b/13_exceptions_part2_peripheral_IRQs/src/lib.rs index 235aca13..6133f01a 100644 --- a/13_exceptions_part2_peripheral_IRQs/src/lib.rs +++ b/13_exceptions_part2_peripheral_IRQs/src/lib.rs @@ -109,8 +109,6 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] #![feature(asm_const)] -#![feature(const_fn_fn_ptr_basics)] -#![feature(const_fn_trait_bound)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(linkage)] diff --git a/14_virtual_mem_part2_mmio_remap/README.md b/14_virtual_mem_part2_mmio_remap/README.md index ccec183c..07a82cda 100644 --- a/14_virtual_mem_part2_mmio_remap/README.md +++ b/14_virtual_mem_part2_mmio_remap/README.md @@ -2135,8 +2135,8 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/src/driver.rs 14_virtual_mem_part2 diff -uNr 13_exceptions_part2_peripheral_IRQs/src/lib.rs 14_virtual_mem_part2_mmio_remap/src/lib.rs --- 13_exceptions_part2_peripheral_IRQs/src/lib.rs +++ 14_virtual_mem_part2_mmio_remap/src/lib.rs -@@ -113,8 +113,10 @@ - #![feature(const_fn_trait_bound)] +@@ -111,8 +111,10 @@ + #![feature(asm_const)] #![feature(core_intrinsics)] #![feature(format_args_nl)] +#![feature(generic_const_exprs)] @@ -2146,7 +2146,7 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/src/lib.rs 14_virtual_mem_part2_mm #![feature(trait_alias)] #![no_std] // Testing -@@ -127,6 +129,7 @@ +@@ -125,6 +127,7 @@ mod synchronization; pub mod bsp; @@ -2154,7 +2154,7 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/src/lib.rs 14_virtual_mem_part2_mm pub mod console; pub mod cpu; pub mod driver; -@@ -179,6 +182,7 @@ +@@ -177,6 +180,7 @@ #[no_mangle] unsafe fn kernel_init() -> ! { exception::handling_init(); @@ -2639,7 +2639,7 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/src/memory/mmu/translation_table.r diff -uNr 13_exceptions_part2_peripheral_IRQs/src/memory/mmu/types.rs 14_virtual_mem_part2_mmio_remap/src/memory/mmu/types.rs --- 13_exceptions_part2_peripheral_IRQs/src/memory/mmu/types.rs +++ 14_virtual_mem_part2_mmio_remap/src/memory/mmu/types.rs -@@ -0,0 +1,373 @@ +@@ -0,0 +1,375 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2020-2022 Andre Richter @@ -2723,7 +2723,9 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/src/memory/mmu/types.rs 14_virtual + return Some(self); + } + -+ let delta = (count.abs() as usize).checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; ++ let delta = count ++ .unsigned_abs() ++ .checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; + let result = if count.is_positive() { + self.inner.as_usize().checked_add(delta)? + } else { diff --git a/14_virtual_mem_part2_mmio_remap/src/exception/asynchronous.rs b/14_virtual_mem_part2_mmio_remap/src/exception/asynchronous.rs index 0e2835b2..fb1785c2 100644 --- a/14_virtual_mem_part2_mmio_remap/src/exception/asynchronous.rs +++ b/14_virtual_mem_part2_mmio_remap/src/exception/asynchronous.rs @@ -119,7 +119,7 @@ impl IRQNumber<{ MAX_INCLUSIVE }> { pub const fn new(number: usize) -> Self { assert!(number <= MAX_INCLUSIVE); - Self { 0: number } + Self(number) } /// Return the wrapped number. diff --git a/14_virtual_mem_part2_mmio_remap/src/lib.rs b/14_virtual_mem_part2_mmio_remap/src/lib.rs index 7808f5ba..9ed0941c 100644 --- a/14_virtual_mem_part2_mmio_remap/src/lib.rs +++ b/14_virtual_mem_part2_mmio_remap/src/lib.rs @@ -109,8 +109,6 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] #![feature(asm_const)] -#![feature(const_fn_fn_ptr_basics)] -#![feature(const_fn_trait_bound)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(generic_const_exprs)] diff --git a/14_virtual_mem_part2_mmio_remap/src/memory/mmu/types.rs b/14_virtual_mem_part2_mmio_remap/src/memory/mmu/types.rs index 84214836..82d5009c 100644 --- a/14_virtual_mem_part2_mmio_remap/src/memory/mmu/types.rs +++ b/14_virtual_mem_part2_mmio_remap/src/memory/mmu/types.rs @@ -81,7 +81,9 @@ impl PageAddress { return Some(self); } - let delta = (count.abs() as usize).checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; + let delta = count + .unsigned_abs() + .checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; let result = if count.is_positive() { self.inner.as_usize().checked_add(delta)? } else { diff --git a/15_virtual_mem_part3_precomputed_tables/src/exception/asynchronous.rs b/15_virtual_mem_part3_precomputed_tables/src/exception/asynchronous.rs index 0e2835b2..fb1785c2 100644 --- a/15_virtual_mem_part3_precomputed_tables/src/exception/asynchronous.rs +++ b/15_virtual_mem_part3_precomputed_tables/src/exception/asynchronous.rs @@ -119,7 +119,7 @@ impl IRQNumber<{ MAX_INCLUSIVE }> { pub const fn new(number: usize) -> Self { assert!(number <= MAX_INCLUSIVE); - Self { 0: number } + Self(number) } /// Return the wrapped number. diff --git a/15_virtual_mem_part3_precomputed_tables/src/lib.rs b/15_virtual_mem_part3_precomputed_tables/src/lib.rs index 7808f5ba..9ed0941c 100644 --- a/15_virtual_mem_part3_precomputed_tables/src/lib.rs +++ b/15_virtual_mem_part3_precomputed_tables/src/lib.rs @@ -109,8 +109,6 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] #![feature(asm_const)] -#![feature(const_fn_fn_ptr_basics)] -#![feature(const_fn_trait_bound)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(generic_const_exprs)] diff --git a/15_virtual_mem_part3_precomputed_tables/src/memory/mmu/types.rs b/15_virtual_mem_part3_precomputed_tables/src/memory/mmu/types.rs index 84214836..82d5009c 100644 --- a/15_virtual_mem_part3_precomputed_tables/src/memory/mmu/types.rs +++ b/15_virtual_mem_part3_precomputed_tables/src/memory/mmu/types.rs @@ -81,7 +81,9 @@ impl PageAddress { return Some(self); } - let delta = (count.abs() as usize).checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; + let delta = count + .unsigned_abs() + .checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; let result = if count.is_positive() { self.inner.as_usize().checked_add(delta)? } else { diff --git a/16_virtual_mem_part4_higher_half_kernel/README.md b/16_virtual_mem_part4_higher_half_kernel/README.md index 487ce443..52ca9bfe 100644 --- a/16_virtual_mem_part4_higher_half_kernel/README.md +++ b/16_virtual_mem_part4_higher_half_kernel/README.md @@ -799,7 +799,7 @@ diff -uNr 15_virtual_mem_part3_precomputed_tables/src/bsp/raspberrypi/memory.rs diff -uNr 15_virtual_mem_part3_precomputed_tables/src/lib.rs 16_virtual_mem_part4_higher_half_kernel/src/lib.rs --- 15_virtual_mem_part3_precomputed_tables/src/lib.rs +++ 16_virtual_mem_part4_higher_half_kernel/src/lib.rs -@@ -152,11 +152,6 @@ +@@ -150,11 +150,6 @@ ) } diff --git a/16_virtual_mem_part4_higher_half_kernel/src/exception/asynchronous.rs b/16_virtual_mem_part4_higher_half_kernel/src/exception/asynchronous.rs index 0e2835b2..fb1785c2 100644 --- a/16_virtual_mem_part4_higher_half_kernel/src/exception/asynchronous.rs +++ b/16_virtual_mem_part4_higher_half_kernel/src/exception/asynchronous.rs @@ -119,7 +119,7 @@ impl IRQNumber<{ MAX_INCLUSIVE }> { pub const fn new(number: usize) -> Self { assert!(number <= MAX_INCLUSIVE); - Self { 0: number } + Self(number) } /// Return the wrapped number. diff --git a/16_virtual_mem_part4_higher_half_kernel/src/lib.rs b/16_virtual_mem_part4_higher_half_kernel/src/lib.rs index c15d35ee..76cd3792 100644 --- a/16_virtual_mem_part4_higher_half_kernel/src/lib.rs +++ b/16_virtual_mem_part4_higher_half_kernel/src/lib.rs @@ -109,8 +109,6 @@ #![allow(clippy::upper_case_acronyms)] #![allow(incomplete_features)] #![feature(asm_const)] -#![feature(const_fn_fn_ptr_basics)] -#![feature(const_fn_trait_bound)] #![feature(core_intrinsics)] #![feature(format_args_nl)] #![feature(generic_const_exprs)] diff --git a/16_virtual_mem_part4_higher_half_kernel/src/memory/mmu/types.rs b/16_virtual_mem_part4_higher_half_kernel/src/memory/mmu/types.rs index 43a96a11..b72ece28 100644 --- a/16_virtual_mem_part4_higher_half_kernel/src/memory/mmu/types.rs +++ b/16_virtual_mem_part4_higher_half_kernel/src/memory/mmu/types.rs @@ -86,7 +86,9 @@ impl PageAddress { return Some(self); } - let delta = (count.abs() as usize).checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; + let delta = count + .unsigned_abs() + .checked_mul(bsp::memory::mmu::KernelGranule::SIZE)?; let result = if count.is_positive() { self.inner.as_usize().checked_add(delta)? } else { diff --git a/X1_JTAG_boot/jtag_boot_rpi3.img b/X1_JTAG_boot/jtag_boot_rpi3.img index 14b22a47c71443e49155f7e5c782e9f24bb121bc..a55f8318566fdb849b3c50333105ee4118586b14 100755 GIT binary patch literal 9000 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 delta 4688 zcmc&%du&_P8UOCRwsW00Z#zljrnZ|t;-oDlZsQnAbCVQk)0Kh~#H39mr4*7TElqe; zqs0!4LE~ij_I5lnrnaE1y>83G3KE&Lk*u4>fWbnb;tyEuu%RUGgMeefu4`rUY!sGIsKIFRfri71sY_cMQ)+oFkC9XiMu!stx}E@I@V-D z&qGA3Q}>K;i6_9j4DjdzI!SBfI=@Zc+G3X@j|%cd(8QnVL&07Ky>X{<`IL^DI-G%b z-^w{M{nl?kn4Ypd=Zy-s(DA-crq4xwoTvD6i+l~U8%LY@+^Ba$rnPo0-{{zrWp(Vy zZLD0MZFOAl2vjbv3@jwc_o*_@(0rIrYYEA9G zAi24Zn>r4w<`bEtI=`3AajT~9UB@@>c=8c%@7_%7PLn^ccWg@H`2)YQj*{1G6HXKWbV? zj7c6_CUuIIgT^kI5j}NwW4r_tuEwPqrXxaO`Iu0^hqfw<4HZ8B!a6k~SVCh$ ze(2)n>s29BihXh0I(4SGUj6FsI`z^$wd!2j4KpodJN;~xG}sR@qQUR22K=sI7kZ+K z2A>%t&pNzO%cV5;Q@7WtyVFQ6N~0+|R2a{bVjSqgLP3bQn$wb&R`r3VEh)StSVLb! zKOOXI1;ImF?dbg3+RIPjk-*w(@78az9l5CHRg*3ma#R&MZAxd>He&>;*Fy zH*+epK#jDnlUYG|J#D3UadWLY26gv~E0-8WDV8u17s69dbpvZP82uO@(2RFchA|r6wT60>#<)JdAB$`S!DK76N(=B%c$Ep`T8j zseY0h^7I->KBMQZZg{_^U&Gk`exUz^k)}9JYx42N=yonWKu~ZWZwv(Z{J=8HQ1wAQ z=Zh26a2e5V929Y*4LD>BOP(5lcS6`#>;!m+u!h&`WMGG>LOD=|>

qBvR{>NUZ}> zfzZ4Ec$6V@23|Uj^9)QzJ;@?~RE=)=VVzpAN*bJ}=Sfy}Wq#;m?#5Dz$gPl_g5NuN zisTAlnz^6j&~ll%u;$~`@uh+~c@?Q=eY|@AT*9SAQG$!Z6(Ow@wjsNu^6(o88ff+0 z$efj87dPuv*Ue00mRd;Wfqg52{20E&Lca1&)^gwaBz}y#p?9}KcH{`JPJT=tO`w>T zL9uW?#Y7{$+?EA*H_^-6c_~&gwRhCAh2&NTjhNE>UU9a5v$5#&0C>n75bMjsB&k{#s4Y;ZTO#MASIGp;kzQY z{6A8QFP>X`v)a>h*2}4dfDM*9$dnkhQ`|@^(nUIKJpm&$0H?rkFkDJ1OGA+iPL0+h zht)b|vD+z6ROr?tCx;&;IU)!l%_pc)mjRdt&X(%bM#!|&3j2HGaWFHW@^CLP zL~~l99qz^)#9?19KMzJMF)$ZXr2O@Zm=@CjX0v@wFk|Q^-m^%$Cm?Tw@h|-sAmB7!FI#Z zhi0@@sGowUpMt2Lg7Nx^u9LS8T_;CyW~;K?V&}I(L5qd+DBCQJI%Y2=$S?DCAlCJi zP~KZKAH2*RZd1HNu4|tb?z}G=-RB6CeT+bGq{$S$>)lP zJ1}6xjLF$+FEiP~S63mVnT;SQ-;>w4amV~PaVAq>oyoNfOqN55p12YjKmP2`GU2PUPqmU2NBd;AK^iQxm|d*~8ua1M;t60m{+H2DgOA~xt@-dhw|V#|1FRDO@wv2C#*fp}VWL+)!RWvqt7(}$F;XSNFGO>E;&3ZRik7Uw zpUxz74yPGd>4s*ead zd)nqTGz9=Q;U`eJr+Be%BZ+U8lNjij+PlBmC{34frobWK=pah6ji~v~3F)Cvh0IXy zO;YuXz}&Ba#oqv@hXIo3Es{sbk~}%-lINY0-6v}o>^^zR{36#b^xU;MuE=$}PC6cL zIq7(eW@+}fA@VC+27_T*p?>A zQg4}3B{l9!zVQ$95-WD*S!i|jo9s7#Z{^ij+i$J)HW7V`-bX10uNNe~K1hzKgNUW^ zmOA(SB;(fP_=GL7(^`@kgUNX?IlsQE>z*!q$30u_Y}!b48d>>0`Pk1Mr~8s~R`V@;B(Qt2*vPzf$vS(&<6k`1C& UqJ0C6U2Qv4Ky0xo(+jKq1(g7o<^TWy diff --git a/X1_JTAG_boot/jtag_boot_rpi4.img b/X1_JTAG_boot/jtag_boot_rpi4.img index 8622b9be7170b4557239565e64e74a6903bee4cd..c7b3bf0e87b803b7a3e142ad92b2a7bb03b668ca 100755 GIT binary patch literal 7920 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 R<3D-(S#_Y$t9~}y{!d`^0zv=) diff --git a/X1_JTAG_boot/src/main.rs b/X1_JTAG_boot/src/main.rs index 808b3176..6e6cf909 100644 --- a/X1_JTAG_boot/src/main.rs +++ b/X1_JTAG_boot/src/main.rs @@ -105,7 +105,6 @@ //! 2. Once finished with architectural setup, the arch code calls `kernel_init()`. #![allow(clippy::upper_case_acronyms)] -#![feature(const_fn_fn_ptr_basics)] #![feature(format_args_nl)] #![feature(panic_info_message)] #![feature(trait_alias)] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 19f8449a..96b65c78 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "nightly-2021-12-18" +channel = "nightly-2022-04-10" components = ["llvm-tools-preview"] targets = ["aarch64-unknown-none-softfloat"]