All of lore.kernel.org
 help / color / mirror / Atom feed
From: York Sun <yorksun@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] powerpc/mpc85xx: Use GOT when loading IVORs post-relocation
Date: Thu, 23 Apr 2015 20:35:24 -0700	[thread overview]
Message-ID: <5539B9FC.3020700@freescale.com> (raw)
In-Reply-To: <BLUPR03MB14755DA977505DE436A3A16DE2EC0@BLUPR03MB1475.namprd03.prod.outlook.com>

Shaohui,

Thanks for confirmation. Please reply with your Test-by or Acked-by signature.
The signature will be capture when the patch is applied.

York

On 04/23/2015 08:01 PM, Xie Shaohui-B21989 wrote:
> Tested on T4240QDS_NAND and T4240QDS_SDCARD, the hang issue fixed.
> Thanks!
> 
> Best Regards, 
> Shaohui Xie
> 
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Friday, April 24, 2015 9:02 AM
>> To: u-boot at lists.denx.de; Sun York-R58495
>> Cc: Wood Scott-B07421; Alexander Graf; Xie Shaohui-B21989
>> Subject: [PATCH] powerpc/mpc85xx: Use GOT when loading IVORs post-
>> relocation
>>
>> Commit 96d2bb952bb ("powerpc/mpc85xx: Don't relocate exception vectors")
>> simplified IVOR initialization a bit too much, failing to use the post-
>> relocation offset.  This doesn't cause a problem with normal NOR boot, in
>> which both the pre-relocation and post-relocation addresses are 64 KiB
>> aligned.  However, if TEXT_BASE is only 4 KiB aligned, such as for
>> NAND/SD/etc. boot on some targets, as well as the QEMU target, the post-
>> relocation address will not be the same in the lower 16 bits, as
>> reserve_uboot() ensures that the relocation address is always 64 KiB
>> aligned even if the pre-relocation address was not.
>>
>> Use the GOT to get the proper post-relocation offsets.
>>
>> Fixes: 96d2bb952bb ("powerpc/mpc85xx: Don't relocate exception vectors")
>> Signed-off-by: Scott Wood <scottwood@freescale.com>
>> Cc: Alexander Graf <agraf@suse.de>
>> Cc: Shaohui Xie <Shaohui.Xie@freescale.com>
>> ---
>>  arch/powerpc/cpu/mpc85xx/start.S | 35 ++++++++++++++++++++--------------
>> -
>>  1 file changed, 20 insertions(+), 15 deletions(-)
>>
>> diff --git a/arch/powerpc/cpu/mpc85xx/start.S
>> b/arch/powerpc/cpu/mpc85xx/start.S
>> index 28f04ee..e61d8e0 100644
>> --- a/arch/powerpc/cpu/mpc85xx/start.S
>> +++ b/arch/powerpc/cpu/mpc85xx/start.S
>> @@ -1664,41 +1664,46 @@ clear_bss:
>>  	 */
>>  	.globl	trap_init
>>  trap_init:
>> +	mflr	r11
>> +	bl	_GLOBAL_OFFSET_TABLE_-4
>> +	mflr	r12
>> +
>>  	/* Update IVORs as per relocation */
>>  	mtspr	IVPR,r3
>>
>> -	li	r4,CriticalInput at l
>> +	lwz	r4,CriticalInput at got(r12)
>>  	mtspr	IVOR0,r4	/* 0: Critical input */
>> -	li	r4,MachineCheck at l
>> +	lwz	r4,MachineCheck at got(r12)
>>  	mtspr	IVOR1,r4	/* 1: Machine check */
>> -	li	r4,DataStorage at l
>> +	lwz	r4,DataStorage at got(r12)
>>  	mtspr	IVOR2,r4	/* 2: Data storage */
>> -	li	r4,InstStorage at l
>> +	lwz	r4,InstStorage at got(r12)
>>  	mtspr	IVOR3,r4	/* 3: Instruction storage */
>> -	li	r4,ExtInterrupt at l
>> +	lwz	r4,ExtInterrupt at got(r12)
>>  	mtspr	IVOR4,r4	/* 4: External interrupt */
>> -	li	r4,Alignment at l
>> +	lwz	r4,Alignment at got(r12)
>>  	mtspr	IVOR5,r4	/* 5: Alignment */
>> -	li	r4,ProgramCheck at l
>> +	lwz	r4,ProgramCheck at got(r12)
>>  	mtspr	IVOR6,r4	/* 6: Program check */
>> -	li	r4,FPUnavailable at l
>> +	lwz	r4,FPUnavailable at got(r12)
>>  	mtspr	IVOR7,r4	/* 7: floating point unavailable */
>> -	li	r4,SystemCall at l
>> +	lwz	r4,SystemCall at got(r12)
>>  	mtspr	IVOR8,r4	/* 8: System call */
>>  	/* 9: Auxiliary processor unavailable(unsupported) */
>> -	li	r4,Decrementer at l
>> +	lwz	r4,Decrementer at got(r12)
>>  	mtspr	IVOR10,r4	/* 10: Decrementer */
>> -	li	r4,IntervalTimer at l
>> +	lwz	r4,IntervalTimer at got(r12)
>>  	mtspr	IVOR11,r4	/* 11: Interval timer */
>> -	li	r4,WatchdogTimer at l
>> +	lwz	r4,WatchdogTimer at got(r12)
>>  	mtspr	IVOR12,r4	/* 12: Watchdog timer */
>> -	li	r4,DataTLBError at l
>> +	lwz	r4,DataTLBError at got(r12)
>>  	mtspr	IVOR13,r4	/* 13: Data TLB error */
>> -	li	r4,InstructionTLBError at l
>> +	lwz	r4,InstructionTLBError at got(r12)
>>  	mtspr	IVOR14,r4	/* 14: Instruction TLB error */
>> -	li	r4,DebugBreakpoint at l
>> +	lwz	r4,DebugBreakpoint at got(r12)
>>  	mtspr	IVOR15,r4	/* 15: Debug */
>>
>> +	mtlr	r11
>>  	blr
>>
>>  .globl unlock_ram_in_cache
>> --
>> 2.1.0
> 

  reply	other threads:[~2015-04-24  3:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-24  1:01 [U-Boot] [PATCH] powerpc/mpc85xx: Use GOT when loading IVORs post-relocation Scott Wood
2015-04-24  3:01 ` Shaohui Xie
2015-04-24  3:35   ` York Sun [this message]
2015-04-24  3:48 ` Shaohui Xie
2015-05-05 16:26   ` York Sun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5539B9FC.3020700@freescale.com \
    --to=yorksun@freescale.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.