summaryrefslogtreecommitdiff
path: root/cpu/mpc5xxx/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'cpu/mpc5xxx/start.S')
-rw-r--r--cpu/mpc5xxx/start.S41
1 files changed, 41 insertions, 0 deletions
diff --git a/cpu/mpc5xxx/start.S b/cpu/mpc5xxx/start.S
index 0557909..e0873ed 100644
--- a/cpu/mpc5xxx/start.S
+++ b/cpu/mpc5xxx/start.S
@@ -103,6 +103,47 @@ boot_cold:
boot_warm:
mfmsr r5 /* save msr contents */
+#if defined(CFG_LOWBOOT)
+ lis r4, CFG_DEFAULT_MBAR@h
+ lis r3, 0x0000FF00@h
+ ori r3, r3, 0x0000FF00@l
+ stw r3, 0x4(r4)
+ lis r3, 0x0000FFFF@h
+ ori r3, r3, 0x0000FFFF@l
+ stw r3, 0x8(r4)
+ lis r3, 0x00047800@h
+ ori r3, r3, 0x00047800@l
+ stw r3, 0x300(r4)
+ lis r3, 0x02010000@h
+ ori r3, r3, 0x02010000@l
+ stw r3, 0x54(r4)
+
+#if defined(CFG_LOWBOOT08)
+ lis r3, 0xff800160@h
+ ori r3, r3, 0xff800160@l
+#endif
+#if defined(CFG_LOWBOOT16)
+ lis r3, 0xff000160@h
+ ori r3, r3, 0xff000160@l
+#endif
+ mtlr r3
+ blr
+lowboot_reentry: /* FLASH_BASE + 0x160 */
+
+ lis r3, 0x0000FF00@h
+ ori r3, r3, 0x0000FF00@l
+ stw r3, 0x4c(r4)
+ lis r3, 0x0000FFFF@h
+ ori r3, r3, 0x0000FFFF@l
+ stw r3, 0x50(r4)
+ lis r3, 0x00047800@h
+ ori r3, r3, 0x00047800@l
+ stw r3, 0x300(r4)
+ lis r3, 0x02000001@h
+ ori r3, r3, 0x02000001@l
+ stw r3, 0x54(r4)
+#endif /* CFG_LOWBOOT */
+
#if defined(CFG_DEFAULT_MBAR) && !defined(CFG_RAMBOOT)
lis r3, CFG_MBAR@h
ori r3, r3, CFG_MBAR@l