All of lore.kernel.org
 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 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.