summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2008-07-22 05:47:31 +0000
committerTill Straumann <strauman@slac.stanford.edu>2008-07-22 05:47:31 +0000
commite1095fc5217e4a41bb485608f309f16da0293d05 (patch)
treebc31b86877ec12c7a1094e45cd2bfada9032eaae /c
parent2008-07-21 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-e1095fc5217e4a41bb485608f309f16da0293d05.tar.bz2
2008-07-21 Till Straumann <strauman@slac.stanford.edu>
* dlentry/dlentry.S: load R13 with _SDA_BASE_ so that SVR4-ABI access of short data area works. No support for R2/sdata2/eabi, so far but that would be easy (atm R2 is loaded with got address IIRC).
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/virtex/ChangeLog7
-rw-r--r--c/src/lib/libbsp/powerpc/virtex/dlentry/dlentry.S3
2 files changed, 10 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/virtex/ChangeLog b/c/src/lib/libbsp/powerpc/virtex/ChangeLog
index 453b40a110..1206fed7b9 100644
--- a/c/src/lib/libbsp/powerpc/virtex/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/virtex/ChangeLog
@@ -1,5 +1,12 @@
2008-07-21 Till Straumann <strauman@slac.stanford.edu>
+ * dlentry/dlentry.S: load R13 with _SDA_BASE_ so that
+ SVR4-ABI access of short data area works. No support
+ for R2/sdata2/eabi, so far but that would be easy
+ (atm R2 is loaded with got address IIRC).
+
+2008-07-21 Till Straumann <strauman@slac.stanford.edu>
+
* startup/linkcmds: fixed sdata/sbss areas -- these
must be contiguous for SVR4 complicant access via R13.
Use kludged layout so that sbss, bss, sbss2 are all
diff --git a/c/src/lib/libbsp/powerpc/virtex/dlentry/dlentry.S b/c/src/lib/libbsp/powerpc/virtex/dlentry/dlentry.S
index afca899ef4..abf015566c 100644
--- a/c/src/lib/libbsp/powerpc/virtex/dlentry/dlentry.S
+++ b/c/src/lib/libbsp/powerpc/virtex/dlentry/dlentry.S
@@ -130,6 +130,9 @@ text_length:
la r5,environ@l(r5) /* environp */
li r4, 0 /* argv */
li r3, 0 /* argc */
+ .extern SYM(_SDA_BASE_)
+ lis r13,SYM(_SDA_BASE_)@h
+ ori r13,r13,SYM(_SDA_BASE_)@l
.extern SYM (boot_card)
b SYM (boot_card) /* call the first C routine */