I'm sort of experimenting with AArch64, and I've set up my "OS" to run in EL1. The IRQ vector table is loaded and working, etc. And if I make a mistake in alignment I get a nice exception where I print out ESR and ELR. But... Can I generate my own exception? I want the same behavior (i.e. print out ESR, ELR and restart) if some condition in EL1 is true, something like if (cond == 1) generate_exception()... Is that possible, or is generating exceptions only up to the CPU?
Specifically, if it's CPU-specific, it's on the Raspberry Pi 3B+, so BCM2837B0 ARM Cortex A-53...
I would say that your question has more to do with the proprietary interrupt controller used in the BCM2836/BCM2837 than with Aarch64 per se.
I would suggest to use a mailbox interrupt, as documented in this document.
Another valuable source of information would be the Raspberry Pi Bare Bones project, since it does provide code using interrupts and mailboxes.
With an Aarch64 processor using a standard GIC, you could have sent a SGI (Software Generated Interrupt) to any of the four cores.