[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 3/6] xen/riscv: introduce function for physical offset calculation
On Fri, 2023-07-07 at 11:35 +0200, Jan Beulich wrote: > On 07.07.2023 11:12, Oleksii wrote: > > On Thu, 2023-07-06 at 13:18 +0200, Jan Beulich wrote: > > > On 19.06.2023 15:34, Oleksii Kurochko wrote: > > > > --- a/xen/arch/riscv/riscv64/head.S > > > > +++ b/xen/arch/riscv/riscv64/head.S > > > > @@ -29,6 +29,8 @@ ENTRY(start) > > > > > > > > jal reset_stack > > > > > > > > + jal calc_phys_offset > > > > + > > > > tail start_xen > > > > > > > > .section .text, "ax", %progbits > > > > > > Since you call a C function, the code to save/restore a0/a1 needs > > > to > > > move here (from patch 4). > > Thanks. It makes sense. > > It would be better to move save/restore a0/a1 ( from patch 4 )code > > here. > > > > The only one reason I didn't do that before that calc_phys_offset > > doesn't touch that and it is guaranteed that it will not ( as it > > doesn't have arguments ) > > How does a function not having parameters guarantee that registers > used for parameter passing aren't touched? Inside a function, the > compiler is free to use argument-passing registers just like other > temporary ones; their values don't need preserving, from all I know > (otherwise the RISC-V ABI would be different to all other ABIs I > know of). Well, you are right that it doesn't guarantee and the calling convention tells that arg registers should be saved/restored before/after function call. But I haven't seen yet that compiler touch arg registers if function accepts 'void' as an function argument. So 'guarantee' isn't correct word. Thanks for the note. ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |