#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#ifdef __x86_64__
#define MAGIC_MMIO_SIGNAL_GUEST_BOOT_COMPLETE 0xd0000000
#endif
#ifdef __aarch64__
#define MAGIC_MMIO_SIGNAL_GUEST_BOOT_COMPLETE 0x40000000
#endif
#define MAGIC_VALUE_SIGNAL_GUEST_BOOT_COMPLETE 123
int main () {
int fd = open("/dev/mem", (O_RDWR | O_SYNC | O_CLOEXEC));
int mapped_size = getpagesize();
char *map_base = mmap(NULL,
mapped_size,
PROT_WRITE,
MAP_SHARED,
fd,
MAGIC_MMIO_SIGNAL_GUEST_BOOT_COMPLETE);
*map_base = MAGIC_VALUE_SIGNAL_GUEST_BOOT_COMPLETE;
msync(map_base, mapped_size, MS_ASYNC);
const char *init = "/sbin/openrc-init";
char *const argv[] = { "/sbin/init", NULL };
char *const envp[] = { };
execve(init, argv, envp);
}