rpi-hal 0.10.0

Hardware abstraction layer for bare-metal Raspberry Pi: BCM2836/BCM2837 (Pi 2, Pi 3), with preliminary BCM2711 (Pi 4), BCM2835 (Pi 1, Pi Zero) and BCM2712 (Pi 5) support
Documentation
// The AArch32 `__unhandled_exception` used when the `fault-report`
// feature is off: park the core and say nothing.
//
// Its own file, and included only when that feature is off, for the
// reason `mmu_fallback.s` is: two definitions of one symbol in this
// crate's single stream of `global_asm!` are a duplicate definition to
// the assembler, not a weak symbol for the linker to resolve. Whether it
// complained depended on which codegen unit each landed in, which is to
// say it was luck.
//
// Weak, so an application can still define its own
// `#[no_mangle] extern "C" fn __unhandled_exception(kind: u32)` and
// override this -- which is the whole reason the default is as useless
// as it is. A fault that parks silently is indistinguishable from a hang
// in a driver, a deadlock or a wedged peripheral, and finding that out
// has cost this project a session that ruled out three peripherals
// first. `lr` is the faulting address (biased by exception type), and
// `DFAR`/`DFSR` (data abort) or `IFAR`/`IFSR` (prefetch abort) say where
// and why. `rpi-hal`'s own implementation of all that is the
// `fault-report` feature; this is what is there instead of it.
.section ".text.fault"
.weak __unhandled_exception
__unhandled_exception:
    wfe
    b       __unhandled_exception