public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Curt Brune <curt@cucy.com>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH] ARM720t -- Relocating Exception Vectors
Date: Wed, 7 Jul 2004 10:33:37 -0700	[thread overview]
Message-ID: <20040707103337.A15046@cucy.com> (raw)
In-Reply-To: <96A7A8B8A8ACBA4DAF7FD558BD32799BF56070@svex01001>

Attached is a new patch for relocating the exception vectors, which
addresses your concerns:

On Wed, Jul 07, 2004 at 09:21:08AM +0200, Friedrich, Lars wrote:
> No offense, but this is a bad hack. The copy code belongs from
> a 'structured' point of view to where the relocation is done and not
> just attached to the end of the source code.

Agreed -- moved the vector relocation code to where the main
relocation resides.

> And from an 'optimized code' point of view it belongs there, too, as
> _TEXT_BASE is already loaded there into an register for example,
> no need to do this multiple times. I don't quite see the necessarity
> for a loop, too. There are 7 exception vectors, never more, never less.
> The copy procedure can be handled by a single ldmia/stmia pair.

Almost -- I also need to copy the 7 words after the vectors that
contain the absolute addresses of the exception handlers.  In total
that takes two ldmia/stmia pairs.

Thanks for the criticism -- the code is a bit tighter now (down to 7
instructions from 14, no branches and no loops).

Cheers,
Curt

-- 

========================================================================
 Curt Brune           | Phone   1.650.380.2528 |     Managing Principal
 curt at cucy.com        | WWW       www.cucy.com |           Cucy Systems
========================================================================
             Cucy Systems -- Software. Integration. Training.
========================================================================
-------------- next part --------------
diff -purN new/u-boot/cpu/arm720t/start.S u-boot/cpu/arm720t/start.S
--- new/u-boot/cpu/arm720t/start.S	Thu Jul  1 09:30:47 2004
+++ u-boot/cpu/arm720t/start.S	Wed Jul  7 10:17:33 2004
@@ -129,6 +129,14 @@ relocate:				/* relocate U-Boot to RAM	 
 	cmp     r0, r1                  /* don't reloc during debug         */
 	beq     stack_setup
 
+	ldr     r2, =0x0		/* Relocate the exception vectors   */
+	cmp     r1, r2                  /* and associated data to address   */
+	ldmneia	r0!, {r3-r10}           /* 0x0. Do nothing if TEXT_BASE is  */
+	stmneia	r2!, {r3-r10}		/* 0x0. Copy the first 15 words.    */
+	ldmneia	r0, {r3-r9}             
+	stmneia	r2, {r3-r9}		
+	adrne	r0, _start		/* restore r0                       */
+	
 	ldr	r2, _armboot_start
 	ldr	r3, _bss_start
 	sub	r2, r3, r2		/* r2 <- size of armboot            */

  parent reply	other threads:[~2004-07-07 17:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-07-07  7:21 [U-Boot-Users] [PATCH] ARM720t -- Relocating Exception Vectors Friedrich, Lars
2004-07-07 14:37 ` Curt Brune
2004-07-07 17:33 ` Curt Brune [this message]
  -- strict thread matches above, loose matches on Subject: below --
2004-07-07  0:28 Curt Brune

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=20040707103337.A15046@cucy.com \
    --to=curt@cucy.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox