summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/cmd_bootm.c4
-rw-r--r--common/cmd_date.c4
-rw-r--r--common/cmd_reginfo.c158
-rw-r--r--common/dlmalloc.c2
-rw-r--r--common/env_common.c4
-rw-r--r--common/hush.c4
-rw-r--r--common/image.c6
-rw-r--r--common/serial.c2
-rw-r--r--common/stdio.c5
9 files changed, 31 insertions, 158 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 365ceeb..8f83598 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -561,7 +561,6 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
/*******************************************************************/
/* bootm - boot application image from image in memory */
/*******************************************************************/
-static int relocated = 0;
int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
@@ -569,6 +568,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
ulong load_end = 0;
int ret;
boot_os_fn *boot_fn;
+#ifndef CONFIG_RELOC_FIXUP_WORKS
+ static int relocated = 0;
/* relocate boot function table */
if (!relocated) {
@@ -578,6 +579,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
boot_os[i] += gd->reloc_off;
relocated = 1;
}
+#endif
/* determine if we have a sub command */
if (argc > 1) {
diff --git a/common/cmd_date.c b/common/cmd_date.c
index b69e935..9f50f89 100644
--- a/common/cmd_date.c
+++ b/common/cmd_date.c
@@ -35,7 +35,11 @@ const char *weekdays[] = {
"Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur",
};
+#ifdef CONFIG_RELOC_FIXUP_WORKS
+#define RELOC(a) a
+#else
#define RELOC(a) ((typeof(a))((unsigned long)(a) + gd->reloc_off))
+#endif
int mk_date (char *, struct rtc_time *);
diff --git a/common/cmd_reginfo.c b/common/cmd_reginfo.c
index d0ebd0f..89fd9ec 100644
--- a/common/cmd_reginfo.c
+++ b/common/cmd_reginfo.c
@@ -25,8 +25,8 @@
#include <command.h>
#if defined(CONFIG_8xx)
#include <mpc8xx.h>
-#elif defined (CONFIG_405GP) || defined(CONFIG_405EP)
-#include <asm/processor.h>
+#elif defined (CONFIG_4xx)
+extern void ppc4xx_reginfo(void);
#elif defined (CONFIG_5xx)
#include <mpc5xx.h>
#elif defined (CONFIG_MPC5200)
@@ -90,158 +90,8 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
* May be some CPM info here?
*/
-#elif defined (CONFIG_405GP)
- printf ("\n405GP registers; MSR=%08x\n",mfmsr());
- printf ("\nUniversal Interrupt Controller Regs\n"
- "UIC0SR UIC0ER UIC0CR UIC0PR UIC0TR UIC0MSR UIC0VR UIC0VCR"
- "\n"
- "%08x %08x %08x %08x %08x %08x %08x %08x\n",
- mfdcr(UIC0SR),
- mfdcr(UIC0ER),
- mfdcr(UIC0CR),
- mfdcr(UIC0PR),
- mfdcr(UIC0TR),
- mfdcr(UIC0MSR),
- mfdcr(UIC0VR),
- mfdcr(UIC0VCR));
-
- puts ("\nMemory (SDRAM) Configuration\n"
- "besra besrsa besrb besrsb bear mcopt1 rtr pmit\n");
-
- mtdcr(SDRAM0_CFGADDR,SDRAM0_BESR0); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_BESRS0); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_BESR1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_BESRS1); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_BEAR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_CFG); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_RTR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_PMIT); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
-
- puts ("\n"
- "mb0cf mb1cf mb2cf mb3cf sdtr1 ecccf eccerr\n");
- mtdcr(SDRAM0_CFGADDR,SDRAM0_B0CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_B1CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_B2CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_B3CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_TR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_ECCCFG); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_ECCESR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
-
- printf ("\n\n"
- "DMA Channels\n"
- "DMASR DMASGC DMAADR\n"
- "%08x %08x %08x\n"
- "dmacr_0 dmact_0 dmada_0 dmasa_0 dmasb_0\n"
- "%08x %08x %08x %08x %08x\n"
- "dmacr_1 dmact_1 dmada_1 dmasa_1 dmasb_1\n"
- "%08x %08x %08x %08x %08x\n",
- mfdcr(DMASR), mfdcr(DMASGC),mfdcr(DMAADR),
- mfdcr(DMACR0), mfdcr(DMACT0),mfdcr(DMADA0), mfdcr(DMASA0), mfdcr(DMASB0),
- mfdcr(DMACR1), mfdcr(DMACT1),mfdcr(DMADA1), mfdcr(DMASA1), mfdcr(DMASB1));
-
- printf (
- "dmacr_2 dmact_2 dmada_2 dmasa_2 dmasb_2\n" "%08x %08x %08x %08x %08x\n"
- "dmacr_3 dmact_3 dmada_3 dmasa_3 dmasb_3\n" "%08x %08x %08x %08x %08x\n",
- mfdcr(DMACR2), mfdcr(DMACT2),mfdcr(DMADA2), mfdcr(DMASA2), mfdcr(DMASB2),
- mfdcr(DMACR3), mfdcr(DMACT3),mfdcr(DMADA3), mfdcr(DMASA3), mfdcr(DMASB3) );
-
- puts ("\n"
- "External Bus\n"
- "PBEAR PBESR0 PBESR1 EBC0_CFG\n");
- mtdcr(EBC0_CFGADDR,PBEAR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PBESR0); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PBESR1); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,EBC0_CFG); printf ("%08x ", mfdcr(EBC0_CFGDATA));
-
- puts ("\n"
- "PB0CR PB0AP PB1CR PB1AP PB2CR PB2AP PB3CR PB3AP\n");
- mtdcr(EBC0_CFGADDR,PB0CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB0AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB1CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB1AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB2CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB2AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB3CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB3AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
-
- puts ("\n"
- "PB4CR PB4AP PB5CR bp5ap PB6CR PB6AP PB7CR PB7AP\n");
- mtdcr(EBC0_CFGADDR,PB4CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB4AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB5CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB5AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB6CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB6AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB7CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB7AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
-
- puts ("\n\n");
-
-#elif defined(CONFIG_405EP)
- printf ("\n405EP registers; MSR=%08x\n",mfmsr());
- printf ("\nUniversal Interrupt Controller Regs\n"
- "UIC0SR UIC0ER UIC0CR UIC0PR UIC0TR UIC0MSR UIC0VR UIC0VCR"
- "\n"
- "%08x %08x %08x %08x %08x %08x %08x %08x\n",
- mfdcr(UIC0SR),
- mfdcr(UIC0ER),
- mfdcr(UIC0CR),
- mfdcr(UIC0PR),
- mfdcr(UIC0TR),
- mfdcr(UIC0MSR),
- mfdcr(UIC0VR),
- mfdcr(UIC0VCR));
-
- puts ("\nMemory (SDRAM) Configuration\n"
- "mcopt1 rtr pmit mb0cf mb1cf sdtr1\n");
-
- mtdcr(SDRAM0_CFGADDR,SDRAM0_CFG); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_RTR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_PMIT); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_B0CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_B1CR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
- mtdcr(SDRAM0_CFGADDR,SDRAM0_TR); printf ("%08x ", mfdcr(SDRAM0_CFGDATA));
-
- printf ("\n\n"
- "DMA Channels\n"
- "DMASR DMASGC DMAADR\n" "%08x %08x %08x\n"
- "dmacr_0 dmact_0 dmada_0 dmasa_0 dmasb_0\n" "%08x %08x %08x %08x %08x\n"
- "dmacr_1 dmact_1 dmada_1 dmasa_1 dmasb_1\n" "%08x %08x %08x %08x %08x\n",
- mfdcr(DMASR), mfdcr(DMASGC),mfdcr(DMAADR),
- mfdcr(DMACR0), mfdcr(DMACT0),mfdcr(DMADA0), mfdcr(DMASA0), mfdcr(DMASB0),
- mfdcr(DMACR1), mfdcr(DMACT1),mfdcr(DMADA1), mfdcr(DMASA1), mfdcr(DMASB1));
-
- printf (
- "dmacr_2 dmact_2 dmada_2 dmasa_2 dmasb_2\n" "%08x %08x %08x %08x %08x\n"
- "dmacr_3 dmact_3 dmada_3 dmasa_3 dmasb_3\n" "%08x %08x %08x %08x %08x\n",
- mfdcr(DMACR2), mfdcr(DMACT2),mfdcr(DMADA2), mfdcr(DMASA2), mfdcr(DMASB2),
- mfdcr(DMACR3), mfdcr(DMACT3),mfdcr(DMADA3), mfdcr(DMASA3), mfdcr(DMASB3) );
-
- puts ("\n"
- "External Bus\n"
- "PBEAR PBESR0 PBESR1 EBC0_CFG\n");
- mtdcr(EBC0_CFGADDR,PBEAR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PBESR0); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PBESR1); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,EBC0_CFG); printf ("%08x ", mfdcr(EBC0_CFGDATA));
-
- puts ("\n"
- "PB0CR PB0AP PB1CR PB1AP PB2CR PB2AP PB3CR PB3AP\n");
- mtdcr(EBC0_CFGADDR,PB0CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB0AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB1CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB1AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB2CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB2AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB3CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB3AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
-
- puts ("\n"
- "PB4CR PB4AP\n");
- mtdcr(EBC0_CFGADDR,PB4CR); printf ("%08x ", mfdcr(EBC0_CFGDATA));
- mtdcr(EBC0_CFGADDR,PB4AP); printf ("%08x ", mfdcr(EBC0_CFGDATA));
-
- puts ("\n\n");
+#elif defined (CONFIG_4xx)
+ ppc4xx_reginfo();
#elif defined(CONFIG_5xx)
volatile immap_t *immap = (immap_t *)CONFIG_SYS_IMMR;
diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index 241db8c..ca088a1 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -1494,6 +1494,7 @@ static mbinptr av_[NAV * 2 + 2] = {
IAV(120), IAV(121), IAV(122), IAV(123), IAV(124), IAV(125), IAV(126), IAV(127)
};
+#ifndef CONFIG_RELOC_FIXUP_WORKS
void malloc_bin_reloc (void)
{
unsigned long *p = (unsigned long *)(&av_[2]);
@@ -1502,6 +1503,7 @@ void malloc_bin_reloc (void)
*p++ += gd->reloc_off;
}
}
+#endif
ulong mem_malloc_start = 0;
ulong mem_malloc_end = 0;
diff --git a/common/env_common.c b/common/env_common.c
index be64d13..439a4a9 100644
--- a/common/env_common.c
+++ b/common/env_common.c
@@ -224,8 +224,10 @@ void set_default_env(void)
void env_relocate (void)
{
+#ifndef CONFIG_RELOC_FIXUP_WORKS
DEBUGF ("%s[%d] offset = 0x%lx\n", __FUNCTION__,__LINE__,
gd->reloc_off);
+#endif
#ifdef CONFIG_AMIGAONEG3SE
enable_nvram();
@@ -236,7 +238,9 @@ void env_relocate (void)
* The environment buffer is embedded with the text segment,
* just relocate the environment pointer
*/
+#ifndef CONFIG_RELOC_FIXUP_WORKS
env_ptr = (env_t *)((ulong)env_ptr + gd->reloc_off);
+#endif
DEBUGF ("%s[%d] embedded ENV at %p\n", __FUNCTION__,__LINE__,env_ptr);
#else
/*
diff --git a/common/hush.c b/common/hush.c
index 528dd25..06c5ff8 100644
--- a/common/hush.c
+++ b/common/hush.c
@@ -3270,6 +3270,7 @@ int parse_file_outer(void)
}
#ifdef __U_BOOT__
+#ifndef CONFIG_RELOC_FIXUP_WORKS
static void u_boot_hush_reloc(void)
{
unsigned long addr;
@@ -3280,6 +3281,7 @@ static void u_boot_hush_reloc(void)
r->literal = (char *)addr;
}
}
+#endif
int u_boot_hush_start(void)
{
@@ -3290,7 +3292,9 @@ int u_boot_hush_start(void)
top_vars->next = 0;
top_vars->flg_export = 0;
top_vars->flg_read_only = 1;
+#ifndef CONFIG_RELOC_FIXUP_WORKS
u_boot_hush_reloc();
+#endif
}
return 0;
}
diff --git a/common/image.c b/common/image.c
index d0f169d..6eaf41e 100644
--- a/common/image.c
+++ b/common/image.c
@@ -513,7 +513,7 @@ char *get_table_entry_name (table_entry_t *table, char *msg, int id)
{
for (; table->id >= 0; ++table) {
if (table->id == id)
-#ifdef USE_HOSTCC
+#if defined(USE_HOSTCC) || defined(CONFIG_RELOC_FIXUP_WORKS)
return table->lname;
#else
return table->lname + gd->reloc_off;
@@ -578,7 +578,11 @@ int get_table_entry_id (table_entry_t *table,
fprintf (stderr, "\n");
#else
for (t = table; t->id >= 0; ++t) {
+#ifdef CONFIG_RELOC_FIXUP_WORKS
+ if (t->sname && strcmp(t->sname, name) == 0)
+#else
if (t->sname && strcmp(t->sname + gd->reloc_off, name) == 0)
+#endif
return (t->id);
}
debug ("Invalid %s Type: %s\n", table_name, name);
diff --git a/common/serial.c b/common/serial.c
index e5ce9fd..5f9ffd7 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -93,12 +93,14 @@ struct serial_device *default_serial_console(void) __attribute__((weak, alias("_
int serial_register (struct serial_device *dev)
{
+#ifndef CONFIG_RELOC_FIXUP_WORKS
dev->init += gd->reloc_off;
dev->setbrg += gd->reloc_off;
dev->getc += gd->reloc_off;
dev->tstc += gd->reloc_off;
dev->putc += gd->reloc_off;
dev->puts += gd->reloc_off;
+#endif
dev->next = serial_devices;
serial_devices = dev;
diff --git a/common/stdio.c b/common/stdio.c
index 697df5a..870ddfd 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -201,7 +201,8 @@ int stdio_deregister(char *devname)
int stdio_init (void)
{
-#ifndef CONFIG_ARM /* already relocated for current ARM implementation */
+#if !defined(CONFIG_RELOC_FIXUP_WORKS)
+ /* already relocated for current ARM implementation */
ulong relocation_offset = gd->reloc_off;
int i;
@@ -210,7 +211,7 @@ int stdio_init (void)
stdio_names[i] = (char *) (((ulong) stdio_names[i]) +
relocation_offset);
}
-#endif
+#endif /* !CONFIG_RELOC_FIXUP_WORKS */
/* Initialize the list */
INIT_LIST_HEAD(&(devs.list));