@mwk @millihertz @becomethewaifu the basic idea is, you run a tiny trusted loader stub that creates a page table with maps for a subset of the RAM and one axi interface to PL, sets the interrupt vector table to an unmapped address, disables interrupts, and drops to userspace.
Now you're stuck running your application in a "padded cell" with no access to the outside world except a single mailbox channel via that axi interface to the PL (most notably, no access to other hard peripherals or the DRP).
And it's locked in userspace with no way to ever get back into kernel mode (since there's no interrupts and even if you did manage to trigger one you'd just hard fault with a bad vector table)
So great, you have an isolated application security domain, but how do you do threading?