summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/bfin
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-28 20:55:46 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-28 20:55:46 +0000
commita319ab0471ecf0fe13d6a008f3d40a03d9667287 (patch)
treebf57b5c0661ebfa826ef8aaf4b48036a74d177a0 /c/src/lib/libbsp/bfin
parent2009-05-28 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-a319ab0471ecf0fe13d6a008f3d40a03d9667287.tar.bz2
2009-05-25 Allan Hessenflow <allanh@kallisti.com>
* start/start.S: Correct call to boot_card to meet bfin abi by clearing l0 - l3 and allocating some stack space.
Diffstat (limited to 'c/src/lib/libbsp/bfin')
-rw-r--r--c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog5
-rw-r--r--c/src/lib/libbsp/bfin/bf537Stamp/start/start.S17
2 files changed, 18 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog b/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog
index edf09ed075..3fb60fcab5 100644
--- a/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog
+++ b/c/src/lib/libbsp/bfin/bf537Stamp/ChangeLog
@@ -1,5 +1,10 @@
2009-05-25 Allan Hessenflow <allanh@kallisti.com>
+ * start/start.S: Correct call to boot_card to meet bfin abi by
+ clearing l0 - l3 and allocating some stack space.
+
+2009-05-25 Allan Hessenflow <allanh@kallisti.com>
+
PR 1418/bsps
* startup/bspstart.c, startup/linkcmds: Enable caches and therefore
enable the mmu.
diff --git a/c/src/lib/libbsp/bfin/bf537Stamp/start/start.S b/c/src/lib/libbsp/bfin/bf537Stamp/start/start.S
index 09282b4b78..43c3398dbb 100644
--- a/c/src/lib/libbsp/bfin/bf537Stamp/start/start.S
+++ b/c/src/lib/libbsp/bfin/bf537Stamp/start/start.S
@@ -7,10 +7,6 @@
#include <libcpu/cecRegs.h>
#include <libcpu/coreTimerRegs.h>
-#warning Call to boot_card has changed and needs checking.
-#warning The call is "void boot_card(const char* cmdline);"
-#warning Please check and remove these warnings.
-
#ifndef LO
#define LO(con32) ((con32) & 0xFFFF)
#endif
@@ -51,6 +47,12 @@ __start:
p0.l = LO(SIC_IMASK);
[p0] = r0;
+ /* clear any pending interrupts */
+ p0.h = HI(CEC_ILAT);
+ p0.l = LO(CEC_ILAT);
+ r0 = 0xffff (z);
+ [p0] = r0;
+
/* this is so we can stay in supervisor mode and still be able to
accept interrupts later. */
p0.h = start;
@@ -96,9 +98,16 @@ start:
loop1: b[p0] = r0;
loop2: p0 +=1;
+ l0 = 0;
+ l1 = 0;
+ l2 = 0;
+ l3 = 0;
+ sp += -12;
+ /* r0 == const char *cmdline (currently null) */
p0.h = _boot_card;
p0.l = _boot_card;
call (p0);
+ sp += 12;
p0.h = _exit;
p0.l = _exit;