From: Thomas Sailer <sailer@scs.ch>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] MIPS build environment
Date: Sat, 29 Jan 2005 11:36:30 +0100 [thread overview]
Message-ID: <1106994990.5393.8.camel@gamecube.scs.ch> (raw)
In-Reply-To: <e7af2eca2d0ca4432255ff965eb51330@embeddededge.com>
On Fri, 2005-01-28 at 18:13 -0800, Dan Malek wrote:
> to assist with the alternative :-) I'd like it if
> we can just find a way to invoke 'mipseb-*'
> or 'mipsel-*' based upon the configuration
> chosen and let it go at that.
That would be great!
> Unless I'm doing something wrong, I also have
> to use binutils with the 'allow_branch_to_undefined'
> patch.
It looks to me that the code uses bal in an attempt to be position
independent. It also uses a rather complicated got loading sequence.
This is IMO futile, as the rest of u-boot (especially the copy to RAM
routine) isn't position independent. So you can as well just load the
full address of the called routines into a temporary register and jump
through the register. See the patch below.
Tom
--- start.S.jnx 2005-01-20 21:51:00.000000000 +0100
+++ start.S 2005-01-20 22:01:39.000000000 +0100
@@ -28,6 +28,35 @@
#include <asm/regdef.h>
#include <asm/mipsregs.h>
+#define NEWASM
+
+#ifdef NEWASM
+
+#define BAL(x) \
+ lui t0, %hi(x) ; \
+ ori t0, t0, %lo(x) ; \
+ jalr t0
+
+#define LOADGOT \
+ lui gp, %hi(_GLOBAL_OFFSET_TABLE_) ; \
+ ori gp, gp, %lo(_GLOBAL_OFFSET_TABLE_)
+
+#else
+
+#define BAL(x) \
+ bal x
+
+#define LOADGOT \
+ bal 1f ; \
+ nop ; \
+ .word _GLOBAL_OFFSET_TABLE_ - 1f + 4 ; \
+1: ; \
+ move gp, ra ; \
+ lw t1, 0(ra) ; \
+ add gp, t1
+
+#endif
+
#define RVECENT(f,n) \
b f; nop
@@ -237,18 +266,18 @@
#ifdef CONFIG_INCA_IP
/* Disable INCA-IP Watchdog.
*/
- bal disable_incaip_wdt
+ BAL(disable_incaip_wdt)
nop
#endif
/* Initialize any external memory.
*/
- bal memsetup
+ BAL(memsetup)
nop
/* Initialize caches...
*/
- bal mips_cache_reset
+ BAL(mips_cache_reset)
nop
/* ... and enable them.
@@ -260,7 +289,7 @@
/* Set up temporary stack.
*/
li a0, CFG_INIT_SP_OFFSET
- bal mips_cache_lock
+ BAL(mips_cache_lock)
nop
li t0, CFG_SDRAM_BASE + CFG_INIT_SP_OFFSET
@@ -268,13 +297,8 @@
/* Initialize GOT pointer.
*/
- bal 1f
- nop
- .word _GLOBAL_OFFSET_TABLE_ - 1f + 4
-1:
- move gp, ra
- lw t1, 0(ra)
- add gp, t1
+ LOADGOT
+
la t9, board_init_f
j t9
nop
next prev parent reply other threads:[~2005-01-29 10:36 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-29 2:13 [U-Boot-Users] MIPS build environment Dan Malek
2005-01-29 10:36 ` Thomas Sailer [this message]
2005-01-29 17:08 ` Wolfgang Denk
2005-01-29 23:54 ` Thomas Sailer
2005-01-30 1:22 ` Wolfgang Denk
2005-01-29 17:03 ` Wolfgang Denk
2005-01-30 0:20 ` Eugene Surovegin
2005-01-30 1:24 ` Wolfgang Denk
2005-01-30 1:43 ` Eugene Surovegin
2005-01-30 4:40 ` Dan Malek
2005-01-30 9:18 ` Wolfgang Denk
2005-01-30 10:33 ` Eugene Surovegin
2005-01-30 9:13 ` Wolfgang Denk
2005-01-30 10:26 ` Eugene Surovegin
2005-09-24 23:16 ` Wolfgang Denk
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=1106994990.5393.8.camel@gamecube.scs.ch \
--to=sailer@scs.ch \
--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.