summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc')
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/ChangeLog10
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/console/console.c26
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c1
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/startup/imbx8xx.c4
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/startup/mmutlbtab.c15
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/startup/start.S40
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/vectors/vectors_init.c5
7 files changed, 88 insertions, 13 deletions
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/ChangeLog b/c/src/lib/libbsp/powerpc/mbx8xx/ChangeLog
index 79541a2195..c5351cec98 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/ChangeLog
@@ -1,3 +1,13 @@
+2005-09-12 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>
+
+ PR 822/bsps
+ * console/console.c, startup/bspstart.c, startup/imbx8xx.c,
+ startup/mmutlbtab.c, startup/start.S, vectors/vectors_init.c:
+ Currently the MBX8xx BSP does not boot, because some logical errors
+ are in the startup code. Additionally, the mpc8xx shared clock driver
+ does not support the clocking scheme of some of the board variants,
+ which are clocked from a 32768Hz (!) external crystal.
+
2005-05-26 Ralf Corsepius <ralf.corsepius@rtems.org>
* include/bsp.h: New header guard.
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/console/console.c b/c/src/lib/libbsp/powerpc/mbx8xx/console/console.c
index e5507eeb0c..c723c80c48 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/console/console.c
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/console/console.c
@@ -537,6 +537,13 @@ serial_init()
unsigned int dpaddr, memaddr;
bd_t *bd;
+#if NVRAM_CONFIGURE == 1
+ if ( ((nvram->console_mode & 0x06) != 0x04 ) ||
+ ((nvram->console_mode & 0x30) != 0x20 )) {
+ /*
+ * FIXME: refine this condition...
+ */
+#endif
bd = eppcbugInfo;
cp = cpmp;
@@ -642,7 +649,26 @@ serial_init()
/* Enable transmitter/receiver.
*/
sp->smc_smcmr |= SMCMR_REN | SMCMR_TEN;
+#if NVRAM_CONFIGURE == 1
+ }
+ else {
+ const char bootmsg_text[]= "using EPPC bug for console I/O\n";
+ _EPPCBug_pollWrite((nvram->console_printk_port & 0x70) >> 4,
+ bootmsg_text,
+ sizeof(bootmsg_text)-1);
+ }
+#endif
+#if NVRAM_CONFIGURE == 1
+ if ((nvram->console_mode & 0x30) == 0x20 ) {
+ BSP_output_char = _BSP_output_char;
+ }
+ else {
+ BSP_output_char = serial_putchar;
+ }
+#else
+
BSP_output_char = serial_putchar;
+#endif
}
void
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c
index e6e94a44cf..fbce715f0b 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c
@@ -196,6 +196,7 @@ void bsp_start(void)
Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
Cpu_table.postdriver_hook = bsp_postdriver_hook;
+
if( Cpu_table.interrupt_stack_size < 4 * 1024 )
Cpu_table.interrupt_stack_size = 4 * 1024;
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/startup/imbx8xx.c b/c/src/lib/libbsp/powerpc/mbx8xx/startup/imbx8xx.c
index 19d8c59b77..81cf3c94f5 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/startup/imbx8xx.c
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/startup/imbx8xx.c
@@ -271,6 +271,7 @@ void _InitMBX8xx (void)
m8xx.sccrk = M8xx_UNLOCK_KEY; /* unlock SCCR */
m8xx.sccr = 0x02800000; /* for MBX860/MBX821 */
+#if 0 /* IMD hack: do not init PLL after EPPCbug load */
/* Initialize the PLL, Low-Power, and Reset Control Register (PLPRCR) */
/* - set the clock speed and set normal power mode */
m8xx.plprck = M8xx_UNLOCK_KEY; /* unlock PLPRCR */
@@ -301,6 +302,7 @@ void _InitMBX8xx (void)
#else
#error "MBX board not defined"
#endif
+#endif
/* Unlock the timebase and decrementer registers. */
m8xx.tbk = M8xx_UNLOCK_KEY;
/*
@@ -316,6 +318,7 @@ void _InitMBX8xx (void)
_mtspr( M8xx_TBU_WR, r1 );
_mtspr( M8xx_TBL_WR, r1 );
+#if 0 /* IMD hack: do not init UPMs after EPPCbug load */
/*
* Memory Controller Initialization
*/
@@ -584,6 +587,7 @@ void _InitMBX8xx (void)
#endif
m8xx.memc[7]._br = M8xx_BR_BA(0xFC000000) | M8xx_BR_AT(0) | M8xx_BR_PS8 |
M8xx_BR_MS_GPCM | M8xx_MEMC_BR_V;
+#endif /* IMD hack */
/*
* PCMCIA initialization
*/
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/startup/mmutlbtab.c b/c/src/lib/libbsp/powerpc/mbx8xx/startup/mmutlbtab.c
index 47b34f3e12..608e622391 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/startup/mmutlbtab.c
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/startup/mmutlbtab.c
@@ -31,19 +31,8 @@
* location is equal to its real address.
*/
MMU_TLB_table_t MMU_TLB_table[] = {
-#if ( defined(mbx860_001b) )
- /*
- * DRAM: CS1, Start address 0x00000000, 2M,
- * ASID=0x0, APG=0x0, not guarded memory, copyback data cache policy,
- * R/W,X for all, no ASID comparison, not cache-inhibited.
- * Last 512K block is cache-inhibited, but not guarded for use by EPPCBug.
- * EPN TWC RPN
- */
- { 0x00000200, 0x05, 0x000009FD }, /* DRAM - PS=512K */
- { 0x00080200, 0x05, 0x000809FD }, /* DRAM - PS=512K */
- { 0x00100200, 0x05, 0x001009FD }, /* DRAM - PS=512K */
- { 0x00180200, 0x05, 0x001809FF }, /* DRAM - PS=512K, cache-inhibited */
-#elif ( defined(mbx860_002b) || \
+#if ( defined(mbx860_001b) || \
+ defined(mbx860_002b) || \
defined(mbx860_003b) || \
defined(mbx821_001b) || \
defined(mbx821_002b) || \
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/startup/start.S b/c/src/lib/libbsp/powerpc/mbx8xx/startup/start.S
index b254746247..bd1bbdbd7a 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/startup/start.S
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/startup/start.S
@@ -239,6 +239,46 @@ spin:
cmpwi r3, 0x1
beq .spin
/*
+ * test function: blink orange led once
+ */
+#define LEDBLINK_DELAY (5*1000*1000)
+#define LEDPORT 0xFA100001
+#define LEDMASK 0xf0
+#define LEDON 0x00
+#define LEDOFF 0x08
+
+ PUBLIC_VAR(ledblink)
+SYM(ledblink):
+ lis r3,LEDBLINK_DELAY>>16
+ledblink1:
+ subi r3,r3,1
+ cmpi 0,1,r3,0
+ bne ledblink1
+ /*
+ * turn orange led off
+ */
+ lis r3,LEDPORT@ha
+ lbz r0,LEDPORT@l(r3)
+ andi. r0,r0,LEDMASK
+ ori r0,r0,LEDOFF
+ stb r0,LEDPORT@l(r3)
+
+ lis r3,LEDBLINK_DELAY>>16
+ledblink2:
+ subi r3,r3,1
+ cmpi 0,1,r3,0
+ bne ledblink2
+ /*
+ * turn orange led on
+ */
+ lis r3,LEDPORT@ha
+ lbz r0,LEDPORT@l(r3)
+ andi. r0,r0,LEDMASK
+ ori r0,r0,LEDON
+ stb r0,LEDPORT@l(r3)
+
+ blr
+/*
* #define LOADED_BY_EPPCBUG
*/
#define LOADED_BY_EPPCBUG
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/vectors/vectors_init.c b/c/src/lib/libbsp/powerpc/mbx8xx/vectors/vectors_init.c
index 5c97bb892e..e1f4b8f460 100644
--- a/c/src/lib/libbsp/powerpc/mbx8xx/vectors/vectors_init.c
+++ b/c/src/lib/libbsp/powerpc/mbx8xx/vectors/vectors_init.c
@@ -115,6 +115,11 @@ void initialize_exceptions()
if (!mpc8xx_vector_is_valid (i)) {
continue;
}
+#if 0 /* FIXME: refine this condition, leave Syscall for EPPCBug console */
+ if (i == ASM_SYS_VECTOR) {
+ continue;
+ }
+#endif
exception_table[i].exceptIndex = i;
exception_table[i].hdl = exception_config.defaultRawEntry.hdl;
exception_table[i].hdl.vector = i;