AMD's ELAN documentation says that you write to the SYS_RST register

in the Memory Mapped Configuration Region (MMCR) to reset the CPU.
If CPU_ELAN is set, try this first to reset the CPU before the
traditional way.

Without this change, my Compulab board powers down on 'reset' instead
of rebooting.
This commit is contained in:
John Birrell 2004-03-09 02:49:24 +00:00
parent 59fac1825f
commit 15afc798fd

View File

@ -43,6 +43,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include "opt_cpu.h"
#include "opt_isa.h"
#include "opt_kstack_pages.h"
#include "opt_npx.h"
@ -77,6 +78,9 @@ __FBSDID("$FreeBSD$");
#include <machine/pcb.h>
#include <machine/pcb_ext.h>
#include <machine/vm86.h>
#ifdef CPU_ELAN
#include <machine/elan_mmcr.h>
#endif
#ifdef CPU_ELAN
#include <machine/elan_mmcr.h>
@ -559,6 +563,12 @@ cpu_reset_real()
}
outb(0xf0, 0x00); /* Reset. */
#else
#ifdef CPU_ELAN
if (elan_mmcr != NULL)
/* SYS_RST */
elan_mmcr->RESCFG = 1;
#endif
/*
* Attempt to do a CPU reset via the keyboard controller,
* do not turn of the GateA20, as any machine that fails