Hi Stefano,
On 07/26/2012 11:33 AM, Stefano Stabellini wrote:
Use r12 to pass the hypercall number to the hypervisor.
We need a register to pass the hypercall number because we might not know it at compile time and HVC only takes an immediate argument.
You're not going to JIT assemble the appropriate HVC instruction? Darn.
How many call numbers are there, though? 8? It seems like it'd be reasonable to take the approach that seems to be favored for MRC/MCR instructions, using a function containing switch statement that chooses between several inline assembly instructions based off an enum passed to the function. See for example arch_timer_reg_read in arch/arm/kernel/arch_timer.c.
Regards, Christopher