tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
icache sync private rump component
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
Home |
Main Index |
Thread Index |
Old Index