diff options
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme3100/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme3100/startup/bspstart.c | 13 |
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 ); |