Hi, I'd like to commit a private rump component that adds a hypercall for synching icache. This will help us to test bpfjit and npf on arm and mips platforms.
I already sent a couple of emails to Antti but because he hasn't replied yet and the branching date is fast approaching, I thought I'd give a heads up to the community. I'll commit my changes if I don't hear any objections in the next few days. Basically, this component resides in librumpkern_sljit and it exposes one function: int rumpcomp_sync_icache(void *, uint64_t); This declaration doesn't go to any public header file because it's only being used inside librumpkern_sljit. On arm, rumpcomp_sync_icache() makes ARM_SYNC_ICACHE sysarch syscall while on mips it calls _cacheflush() which is defined in libc. On the kernel side, both arm and mips use a global object with a bunch of function pointers to various cpu-related routines. Those objects are defined in cpufunc.c and cache.c, respectively. For the rump kernel, I add barebone versions of those objects with only one non-NULL function pointer for icache_rync_range routine. To compile <mips/cache.h> in rump kernel, I needed to add -DMIPS3=1 to Makefile.rump for mips platforms. This is the only change outside of sljit scope. Alex
