Shared helpers for rivet-bsp-* crates.
Small, board-shape-agnostic pieces that would otherwise be
reimplemented per board: a software watchdog fallback for boards
without real watchdog hardware, and an NS16550-compatible UART driver
(the most common "some UART is mapped somewhere" case on RV32
platforms). Nothing here is wired to the port contract directly —
each BSP's own #[no_mangle] functions call into these.