Hi Volodymyr,
On 07/03/2019 21:04, Volodymyr Babchuk wrote:
+static void set_return(struct cpu_user_regs *regs, uint32_t ret) +{
- set_user_reg(regs, 0, ret);
- set_user_reg(regs, 1, 0);
- set_user_reg(regs, 2, 0);
- set_user_reg(regs, 3, 0);
- set_user_reg(regs, 4, 0);
- set_user_reg(regs, 5, 0);
- set_user_reg(regs, 6, 0);
- set_user_reg(regs, 7, 0);
This does not look correct to me. From patch #2, registers 4-7 are always preserved. registers 1-3 may be preserved as well depending on the call.
More importantly, Xen is now using SMCCC interface v1.1. This means, register 0-3 are used for return values, registers 4-7 are preserved.
Cheers,