diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2007-12-02 21:33:24 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2007-12-02 21:33:24 +0000 |
commit | 33967e89cefc2bc4e96d3883ca97ba7382733832 (patch) | |
tree | c76497c9215f727acc052cb1da999825498a4254 | |
parent | 8a327926d3fa82a6b46a5a065ec48220468ee039 (diff) |
Add a workaround for the MVME197LE reset issue when not system controller.
-rw-r--r-- | sys/arch/mvme88k/mvme88k/locore.S | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/arch/mvme88k/mvme88k/locore.S b/sys/arch/mvme88k/mvme88k/locore.S index d06e8c8d224..180da932eee 100644 --- a/sys/arch/mvme88k/mvme88k/locore.S +++ b/sys/arch/mvme88k/mvme88k/locore.S @@ -1,4 +1,4 @@ -/* $OpenBSD: locore.S,v 1.55 2007/12/02 21:28:40 miod Exp $ */ +/* $OpenBSD: locore.S,v 1.56 2007/12/02 21:33:23 miod Exp $ */ /* * Copyright (c) 2005, Miodrag Vallat. * Copyright (c) 1998 Steve Murphree, Jr. @@ -346,9 +346,22 @@ GLOBAL(doboot) set r4, r4, 1<23> /* set SYSRST bit - bit 23 */ st r4, r3, 0x0060 /* and store it back */ 1: - ld r4, r3, 0x0104 /* try local reset, then */ + /* + * MVME197LE Errata #7: + * ``When asserting the RST bit in the VMEchip2 GCSR, the pulse + * generated is too short for the BusSwitch1 to recognize + * properly.'' + */ +#ifdef MVME197 + or.u r2, r0, hi16(0x20000) +#endif + ld r4, r3, 0x0104 /* try local reset, then... */ set r4, r4, 1<7> st r4, r3, 0x0104 +#ifdef MVME197 + bcnd.n ne0,r2, 1b /* ...for a while */ + subu r2, r2, 1 +#endif /* * We will be here if the reset above failed. In this case, |