summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-29 22:01:18 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-29 22:01:18 +0000
commit27d4569a6827cadfb2fe73264cdec868d0cc5207 (patch)
treef76c0c293ce0bc5a15e5ace59905df693dccfc7d /c
parent2008-01-29 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-27d4569a6827cadfb2fe73264cdec868d0cc5207.tar.bz2
2008-01-29 Eric Norum <norume@aps.anl.gov>
* startup/bspstart.c: Fixes a lockup which occurs when a speculative load occurs from a particular range of memory.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/mvme3100/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/mvme3100/startup/bspstart.c13
2 files changed, 18 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/mvme3100/ChangeLog b/c/src/lib/libbsp/powerpc/mvme3100/ChangeLog
index 12e38e122f..c280ddfa65 100644
--- a/c/src/lib/libbsp/powerpc/mvme3100/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/mvme3100/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-29 Eric Norum <norume@aps.anl.gov>
+
+ * startup/bspstart.c: Fixes a lockup which occurs when a speculative
+ load occurs from a particular range of memory.
+
2008-01-09 Eric Norum <norume@aps.anl.gov>
* include/bsp.h: Include <bsp/vectors.h>.
diff --git a/c/src/lib/libbsp/powerpc/mvme3100/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mvme3100/startup/bspstart.c
index 5fb1481715..c5486abf34 100644
--- a/c/src/lib/libbsp/powerpc/mvme3100/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/mvme3100/startup/bspstart.c
@@ -228,6 +228,10 @@ bsp_predriver_hook(void)
* This routine does the bulk of the system initialization.
*/
+#include <libcpu/spr.h>
+
+SPR_RW(HID1)
+
void bsp_start( void )
{
unsigned char *stack;
@@ -317,6 +321,15 @@ VpdBufRec vpdData [] = {
printk("Going to start PCI buses scanning and initialization\n");
#endif
+ {
+ /* disable checking for memory-select errors */
+ *(volatile uint32_t*)0xe1002e44 |= 1;
+ /* clear all pending errors */
+ *(volatile uint32_t*)0xe1002e40 = 0xffffffff;
+ /* enable machine check for bad bus errors */
+ _write_HID1( _read_HID1() | 0x20000 );
+ }
+
printk("Build Date: %s\n",BSP_build_date);
BSP_vpdRetrieveFields( vpdData );