[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it is empty
On Thu, Oct 10, 2024 at 3:05 PM Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx> wrote: > > If the BSS section is empty, then the function can just return. > > Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx> > --- > Changes from :- > > v1..v2 - New patch introduced in v3. > > xen/arch/arm/arm64/head.S | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S > index 14c3720d80..72c7b24498 100644 > --- a/xen/arch/arm/arm64/head.S > +++ b/xen/arch/arm/arm64/head.S > @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss) > PRINT("- Zero BSS -\r\n") > ldr x0, =__bss_start /* x0 := vaddr(__bss_start) */ > ldr x1, =__bss_end /* x1 := vaddr(__bss_end) */ > + cmp x1, x0 > + beq skip_bss > > 1: str xzr, [x0], #8 > cmp x0, x1 Why not just transforming the "do while" loop into a "while" one and just jump to cmp? Something like (not tested) diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S index 14c3720d80..987f243578 100644 --- a/xen/arch/arm/arm64/head.S +++ b/xen/arch/arm/arm64/head.S @@ -346,9 +346,10 @@ FUNC_LOCAL(zero_bss) PRINT("- Zero BSS -\r\n") ldr x0, =__bss_start /* x0 := vaddr(__bss_start) */ ldr x1, =__bss_end /* x1 := vaddr(__bss_end) */ + b 2f 1: str xzr, [x0], #8 - cmp x0, x1 +2: cmp x0, x1 b.lo 1b skip_bss: Frediano
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |