Message ID | 20230327124520.2707537-12-npiggin@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | powerpc: updates, P10, PNV support | expand |
On 27/03/2023 14.45, Nicholas Piggin wrote: > The next change will load the kernels at different addresses depending > on test options, so this needs to be reverted back to dynamic > discovery. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > powerpc/cstart64.S | 19 ++++++++++++++----- > 1 file changed, 14 insertions(+), 5 deletions(-) > > diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S > index 1bd0437..0592e03 100644 > --- a/powerpc/cstart64.S > +++ b/powerpc/cstart64.S > @@ -33,9 +33,14 @@ start: > * We were loaded at QEMU's kernel load address, but we're not > * allowed to link there due to how QEMU deals with linker VMAs, > * so we just linked at zero. This means the first thing to do is > - * to find our stack and toc, and then do a relocate. > + * to find our stack and toc, and then do a relocate. powernv and > + * pseries load addreses are not the same, so find the address With s/addreses/addresses/ : Acked-by: Thomas Huth <thuth@redhat.com>
diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S index 1bd0437..0592e03 100644 --- a/powerpc/cstart64.S +++ b/powerpc/cstart64.S @@ -33,9 +33,14 @@ start: * We were loaded at QEMU's kernel load address, but we're not * allowed to link there due to how QEMU deals with linker VMAs, * so we just linked at zero. This means the first thing to do is - * to find our stack and toc, and then do a relocate. + * to find our stack and toc, and then do a relocate. powernv and + * pseries load addreses are not the same, so find the address + * dynamically: */ - LOAD_REG_IMMEDIATE(r31, SPAPR_KERNEL_LOAD_ADDR) + bl 0f +0: mflr r31 + subi r31, r31, 0b - start /* QEMU's kernel load address */ + ld r1, (p_stack - start)(r31) ld r2, (p_toc - start)(r31) add r1, r1, r31 @@ -114,8 +119,11 @@ p_toc: .llong tocptr p_dyn: .llong dynamic_start .text +start_text: .align 3 +p_toc_text: .llong tocptr +.align 3 .globl hcall hcall: sc 1 @@ -185,9 +193,10 @@ call_handler: std r0,_CCR(r1) /* restore TOC pointer */ - - LOAD_REG_IMMEDIATE(r31, SPAPR_KERNEL_LOAD_ADDR) - ld r2, (p_toc - start)(r31) + bl 0f +0: mflr r31 + subi r31, r31, 0b - start_text + ld r2, (p_toc_text - start_text)(r31) /* FIXME: build stack frame */
The next change will load the kernels at different addresses depending on test options, so this needs to be reverted back to dynamic discovery. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- powerpc/cstart64.S | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)