tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

icache sync private rump component


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.


Home | Main Index | Thread Index | Old Index