I thought I was doing OK with the Hazard3 (risc-v) side, and indeed I got the on-board LED to flash as required.
However, as soon as I tried to get interrupts working, things went from bad to worse; I can now only get the clock to run at the crystal frequency (12 MHz) no matter how much I try to mimic the code in the SDK. And, if I do manage to get the program running, I’m as like as not to get an interrupt 14 (USBCTRL) which I haven’t started. I suspect it’s to do with the on-board debug feature; setting up the USB clock crashes the RPi jtag adaptor.