gitextract_d1imolyg/ ├── .editorconfig ├── .githooks/ │ └── pre-commit ├── .github/ │ ├── FUNDING.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── build_rpi3.yml │ ├── build_rpi4.yml │ ├── sanity.yml │ ├── test_integration.yml │ ├── test_unit.yml │ └── test_xtra.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── .rubocop.yml ├── .ruby-version ├── .rustfmt.toml ├── .vscode/ │ └── settings.json ├── 00_before_we_start/ │ ├── README.CN.md │ ├── README.ES.md │ └── README.md ├── 01_wait_forever/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.ES.md │ ├── README.md │ ├── build.rs │ └── src/ │ ├── _arch/ │ │ └── aarch64/ │ │ └── cpu/ │ │ ├── boot.rs │ │ └── boot.s │ ├── bsp/ │ │ ├── raspberrypi/ │ │ │ └── kernel.ld │ │ └── raspberrypi.rs │ ├── bsp.rs │ ├── cpu/ │ │ └── boot.rs │ ├── cpu.rs │ ├── main.rs │ └── panic_wait.rs ├── 02_runtime_init/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.ES.md │ ├── README.md │ ├── build.rs │ └── src/ │ ├── _arch/ │ │ └── aarch64/ │ │ ├── cpu/ │ │ │ ├── boot.rs │ │ │ └── boot.s │ │ └── cpu.rs │ ├── bsp/ │ │ ├── raspberrypi/ │ │ │ ├── cpu.rs │ │ │ └── kernel.ld │ │ └── raspberrypi.rs │ ├── bsp.rs │ ├── cpu/ │ │ └── boot.rs │ ├── cpu.rs │ ├── main.rs │ └── panic_wait.rs ├── 03_hacky_hello_world/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.ES.md │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ └── cpu.rs │ │ ├── bsp/ │ │ │ ├── raspberrypi/ │ │ │ │ ├── console.rs │ │ │ │ ├── cpu.rs │ │ │ │ └── kernel.ld │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ └── print.rs │ └── tests/ │ └── boot_test_string.rb ├── 04_safe_globals/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ └── cpu.rs │ │ ├── bsp/ │ │ │ ├── raspberrypi/ │ │ │ │ ├── console.rs │ │ │ │ ├── cpu.rs │ │ │ │ └── kernel.ld │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ └── synchronization.rs │ └── tests/ │ └── boot_test_string.rb ├── 05_drivers_gpio_uart/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ └── cpu.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── console.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ └── synchronization.rs │ └── tests/ │ └── boot_test_string.rb ├── 06_uart_chainloader/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.md │ ├── build.rs │ ├── demo_payload_rpi3.img │ ├── demo_payload_rpi4.img │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ └── cpu.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ └── synchronization.rs │ ├── tests/ │ │ └── chainboot_test.rb │ └── update.sh ├── 07_timestamps/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ ├── cpu.rs │ │ │ └── time.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ ├── synchronization.rs │ │ └── time.rs │ └── tests/ │ └── boot_test_string.rb ├── 08_hw_debug_JTAG/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ ├── cpu.rs │ │ │ └── time.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ ├── synchronization.rs │ │ └── time.rs │ └── tests/ │ └── boot_test_string.rb ├── 09_privilege_level/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ ├── cpu.rs │ │ │ ├── exception/ │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ └── time.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── exception/ │ │ │ └── asynchronous.rs │ │ ├── exception.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ ├── synchronization.rs │ │ └── time.rs │ └── tests/ │ └── boot_test_string.rb ├── 10_virtual_mem_part1_identity_mapping/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.CN.md │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ ├── cpu.rs │ │ │ ├── exception/ │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ └── translation_table.rs │ │ │ │ └── mmu.rs │ │ │ └── time.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ ├── memory/ │ │ │ │ │ └── mmu.rs │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── common.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── exception/ │ │ │ └── asynchronous.rs │ │ ├── exception.rs │ │ ├── main.rs │ │ ├── memory/ │ │ │ ├── mmu/ │ │ │ │ └── translation_table.rs │ │ │ └── mmu.rs │ │ ├── memory.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ ├── synchronization.rs │ │ └── time.rs │ └── tests/ │ └── boot_test_string.rb ├── 11_exceptions_part1_groundwork/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ ├── cpu.rs │ │ │ ├── exception/ │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── exception.s │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ └── translation_table.rs │ │ │ │ └── mmu.rs │ │ │ └── time.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ ├── memory/ │ │ │ │ │ └── mmu.rs │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── common.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── exception/ │ │ │ └── asynchronous.rs │ │ ├── exception.rs │ │ ├── main.rs │ │ ├── memory/ │ │ │ ├── mmu/ │ │ │ │ └── translation_table.rs │ │ │ └── mmu.rs │ │ ├── memory.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ ├── synchronization.rs │ │ └── time.rs │ └── tests/ │ └── boot_test_string.rb ├── 12_integrated_testing/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ └── boot.s │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── null_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ └── boot.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ └── translation_table.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ └── libraries/ │ ├── test-macros/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── test-types/ │ ├── Cargo.toml │ └── src/ │ └── lib.rs ├── 13_exceptions_part2_peripheral_IRQs/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── null_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ └── translation_table.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ └── libraries/ │ ├── test-macros/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── test-types/ │ ├── Cargo.toml │ └── src/ │ └── lib.rs ├── 14_virtual_mem_part2_mmio_remap/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── null_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ ├── mapping_record.rs │ │ │ │ │ ├── page_alloc.rs │ │ │ │ │ ├── translation_table.rs │ │ │ │ │ └── types.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ └── libraries/ │ ├── test-macros/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── test-types/ │ ├── Cargo.toml │ └── src/ │ └── lib.rs ├── 15_virtual_mem_part3_precomputed_tables/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── kernel_virt_addr_space_size.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── null_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ ├── mapping_record.rs │ │ │ │ │ ├── page_alloc.rs │ │ │ │ │ ├── translation_table.rs │ │ │ │ │ └── types.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ ├── libraries/ │ │ ├── test-macros/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── test-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── tools/ │ └── translation_table_tool/ │ ├── arch.rb │ ├── bsp.rb │ ├── generic.rb │ ├── kernel_elf.rb │ └── main.rb ├── 16_virtual_mem_part4_higher_half_kernel/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── kernel_virt_addr_space_size.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── null_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ ├── mapping_record.rs │ │ │ │ │ ├── page_alloc.rs │ │ │ │ │ ├── translation_table.rs │ │ │ │ │ └── types.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ ├── libraries/ │ │ ├── test-macros/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── test-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── tools/ │ └── translation_table_tool/ │ ├── arch.rb │ ├── bsp.rb │ ├── generic.rb │ ├── kernel_elf.rb │ └── main.rb ├── 17_kernel_symbols/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── kernel_virt_addr_space_size.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── null_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ ├── mapping_record.rs │ │ │ │ │ ├── page_alloc.rs │ │ │ │ │ ├── translation_table.rs │ │ │ │ │ └── types.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── symbols.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ ├── kernel_symbols/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── kernel_symbols.ld │ │ └── src/ │ │ └── main.rs │ ├── kernel_symbols.mk │ ├── libraries/ │ │ ├── debug-symbol-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── test-macros/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── test-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── tools/ │ ├── kernel_symbols_tool/ │ │ ├── cmds.rb │ │ ├── kernel_elf.rb │ │ └── main.rb │ └── translation_table_tool/ │ ├── arch.rb │ ├── bsp.rb │ ├── generic.rb │ ├── kernel_elf.rb │ └── main.rb ├── 18_backtrace/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── backtrace.rs │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── backtrace.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── kernel_virt_addr_space_size.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── null_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── mmu/ │ │ │ │ │ ├── mapping_record.rs │ │ │ │ │ ├── page_alloc.rs │ │ │ │ │ ├── translation_table.rs │ │ │ │ │ └── types.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── symbols.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── 05_backtrace_sanity.rb │ │ ├── 05_backtrace_sanity.rs │ │ ├── 06_backtrace_invalid_frame.rb │ │ ├── 06_backtrace_invalid_frame.rs │ │ ├── 07_backtrace_invalid_link.rb │ │ ├── 07_backtrace_invalid_link.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ ├── kernel_symbols/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── kernel_symbols.ld │ │ └── src/ │ │ └── main.rs │ ├── kernel_symbols.mk │ ├── libraries/ │ │ ├── debug-symbol-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── test-macros/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── test-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── tools/ │ ├── kernel_symbols_tool/ │ │ ├── cmds.rb │ │ ├── kernel_elf.rb │ │ └── main.rb │ └── translation_table_tool/ │ ├── arch.rb │ ├── bsp.rb │ ├── generic.rb │ ├── kernel_elf.rb │ └── main.rb ├── 19_kernel_heap/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── backtrace.rs │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── backtrace.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── kernel_virt_addr_space_size.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── buffer_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── heap_alloc.rs │ │ │ │ ├── mmu/ │ │ │ │ │ ├── mapping_record.rs │ │ │ │ │ ├── page_alloc.rs │ │ │ │ │ ├── translation_table.rs │ │ │ │ │ └── types.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── symbols.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── 05_backtrace_sanity.rb │ │ ├── 05_backtrace_sanity.rs │ │ ├── 06_backtrace_invalid_frame.rb │ │ ├── 06_backtrace_invalid_frame.rs │ │ ├── 07_backtrace_invalid_link.rb │ │ ├── 07_backtrace_invalid_link.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ ├── kernel_symbols/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── kernel_symbols.ld │ │ └── src/ │ │ └── main.rs │ ├── kernel_symbols.mk │ ├── libraries/ │ │ ├── debug-symbol-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── test-macros/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── test-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── tools/ │ ├── kernel_symbols_tool/ │ │ ├── cmds.rb │ │ ├── kernel_elf.rb │ │ └── main.rb │ └── translation_table_tool/ │ ├── arch.rb │ ├── bsp.rb │ ├── generic.rb │ ├── kernel_elf.rb │ └── main.rb ├── 20_timer_callbacks/ │ ├── .cargo/ │ │ └── config.toml │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── kernel/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── src/ │ │ │ ├── _arch/ │ │ │ │ └── aarch64/ │ │ │ │ ├── backtrace.rs │ │ │ │ ├── cpu/ │ │ │ │ │ ├── boot.rs │ │ │ │ │ ├── boot.s │ │ │ │ │ └── smp.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── exception/ │ │ │ │ │ └── asynchronous.rs │ │ │ │ ├── exception.rs │ │ │ │ ├── exception.s │ │ │ │ ├── memory/ │ │ │ │ │ ├── mmu/ │ │ │ │ │ │ └── translation_table.rs │ │ │ │ │ └── mmu.rs │ │ │ │ └── time.rs │ │ │ ├── backtrace.rs │ │ │ ├── bsp/ │ │ │ │ ├── device_driver/ │ │ │ │ │ ├── arm/ │ │ │ │ │ │ ├── gicv2/ │ │ │ │ │ │ │ ├── gicc.rs │ │ │ │ │ │ │ └── gicd.rs │ │ │ │ │ │ └── gicv2.rs │ │ │ │ │ ├── arm.rs │ │ │ │ │ ├── bcm/ │ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller/ │ │ │ │ │ │ │ ├── local_ic.rs │ │ │ │ │ │ │ └── peripheral_ic.rs │ │ │ │ │ │ ├── bcm2xxx_interrupt_controller.rs │ │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ │ ├── bcm.rs │ │ │ │ │ └── common.rs │ │ │ │ ├── device_driver.rs │ │ │ │ ├── raspberrypi/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── driver.rs │ │ │ │ │ ├── exception/ │ │ │ │ │ │ └── asynchronous.rs │ │ │ │ │ ├── exception.rs │ │ │ │ │ ├── kernel.ld │ │ │ │ │ ├── kernel_virt_addr_space_size.ld │ │ │ │ │ ├── memory/ │ │ │ │ │ │ └── mmu.rs │ │ │ │ │ └── memory.rs │ │ │ │ └── raspberrypi.rs │ │ │ ├── bsp.rs │ │ │ ├── common.rs │ │ │ ├── console/ │ │ │ │ └── buffer_console.rs │ │ │ ├── console.rs │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── smp.rs │ │ │ ├── cpu.rs │ │ │ ├── driver.rs │ │ │ ├── exception/ │ │ │ │ ├── asynchronous/ │ │ │ │ │ └── null_irq_manager.rs │ │ │ │ └── asynchronous.rs │ │ │ ├── exception.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── memory/ │ │ │ │ ├── heap_alloc.rs │ │ │ │ ├── mmu/ │ │ │ │ │ ├── mapping_record.rs │ │ │ │ │ ├── page_alloc.rs │ │ │ │ │ ├── translation_table.rs │ │ │ │ │ └── types.rs │ │ │ │ └── mmu.rs │ │ │ ├── memory.rs │ │ │ ├── panic_wait.rs │ │ │ ├── print.rs │ │ │ ├── state.rs │ │ │ ├── symbols.rs │ │ │ ├── synchronization.rs │ │ │ └── time.rs │ │ └── tests/ │ │ ├── 00_console_sanity.rb │ │ ├── 00_console_sanity.rs │ │ ├── 01_timer_sanity.rs │ │ ├── 02_exception_sync_page_fault.rs │ │ ├── 03_exception_restore_sanity.rb │ │ ├── 03_exception_restore_sanity.rs │ │ ├── 04_exception_irq_sanity.rs │ │ ├── 05_backtrace_sanity.rb │ │ ├── 05_backtrace_sanity.rs │ │ ├── 06_backtrace_invalid_frame.rb │ │ ├── 06_backtrace_invalid_frame.rs │ │ ├── 07_backtrace_invalid_link.rb │ │ ├── 07_backtrace_invalid_link.rs │ │ ├── boot_test_string.rb │ │ ├── panic_exit_success/ │ │ │ └── mod.rs │ │ └── panic_wait_forever/ │ │ └── mod.rs │ ├── kernel_symbols/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── kernel_symbols.ld │ │ └── src/ │ │ └── main.rs │ ├── kernel_symbols.mk │ ├── libraries/ │ │ ├── debug-symbol-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── test-macros/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── test-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── tools/ │ ├── kernel_symbols_tool/ │ │ ├── cmds.rb │ │ ├── kernel_elf.rb │ │ └── main.rb │ └── translation_table_tool/ │ ├── arch.rb │ ├── bsp.rb │ ├── generic.rb │ ├── kernel_elf.rb │ └── main.rb ├── Gemfile ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.CN.md ├── README.ES.md ├── README.md ├── SPONSORING.md ├── X1_JTAG_boot/ │ ├── .vscode/ │ │ └── settings.json │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ ├── build.rs │ ├── jtag_boot_rpi3.img │ ├── jtag_boot_rpi4.img │ ├── src/ │ │ ├── _arch/ │ │ │ └── aarch64/ │ │ │ ├── cpu/ │ │ │ │ ├── boot.rs │ │ │ │ └── boot.s │ │ │ ├── cpu.rs │ │ │ └── time.rs │ │ ├── bsp/ │ │ │ ├── device_driver/ │ │ │ │ ├── bcm/ │ │ │ │ │ ├── bcm2xxx_gpio.rs │ │ │ │ │ └── bcm2xxx_pl011_uart.rs │ │ │ │ ├── bcm.rs │ │ │ │ └── common.rs │ │ │ ├── device_driver.rs │ │ │ ├── raspberrypi/ │ │ │ │ ├── cpu.rs │ │ │ │ ├── driver.rs │ │ │ │ ├── kernel.ld │ │ │ │ └── memory.rs │ │ │ └── raspberrypi.rs │ │ ├── bsp.rs │ │ ├── console/ │ │ │ └── null_console.rs │ │ ├── console.rs │ │ ├── cpu/ │ │ │ └── boot.rs │ │ ├── cpu.rs │ │ ├── driver.rs │ │ ├── main.rs │ │ ├── panic_wait.rs │ │ ├── print.rs │ │ ├── synchronization.rs │ │ └── time.rs │ ├── tests/ │ │ └── boot_test_string.rb │ └── update.sh ├── common/ │ ├── docker.mk │ ├── format.mk │ ├── operating_system.mk │ ├── serial/ │ │ ├── minipush/ │ │ │ └── progressbar_patch.rb │ │ ├── minipush.rb │ │ └── miniterm.rb │ └── tests/ │ ├── boot_test.rb │ ├── console_io_test.rb │ ├── dispatch.rb │ ├── exit_code_test.rb │ └── test.rb ├── contributor_setup.sh ├── devtool_completion.bash ├── doc/ │ ├── 09_wiring_jtag.fzz │ ├── 09_wiring_jtag.xcf │ ├── 14_BCM_driver.drawio │ ├── 14_GICv2_driver.drawio │ ├── 14_header.drawio │ ├── demo_PS1.txt │ ├── source_section_divider.txt │ └── wiring.fzz ├── docker/ │ ├── README.md │ └── rustembedded-osdev-utils/ │ ├── Dockerfile │ ├── Makefile │ ├── auto │ ├── rpi3.cfg │ └── rpi4.cfg ├── rust-toolchain.toml └── utils/ ├── devtool/ │ └── copyright.rb ├── devtool.rb ├── diff_tut_folders.bash └── update_copyright.rb