Chinese SoC update, kinda anticlimactic: it's a little-endian OpenRisc 1000 (OR1K). I tested OR1K before, but I couldn't easily find the instruction encodings but I could find a Ghidra plugin. Loaded it in there, saw all garbage, decided it wasn't ignored. Turns out the Ghidra plugin only implements big-endian OR1K, which is the default, but the arch also supports little-endian, which this SoC uses. Ah well, at least I can check how much of the ISA I got right.