summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/machdep.c12
-rw-r--r--sys/amd64/include/md_var.h3
-rw-r--r--sys/i386/i386/machdep.c12
-rw-r--r--sys/i386/include/md_var.h3
-rw-r--r--sys/kern/kern_shutdown.c10
5 files changed, 34 insertions, 6 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index de5d4b7c4f10..2cf8d5f5ac6b 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
- * $Id: machdep.c,v 1.207 1996/10/05 10:44:03 jkh Exp $
+ * $Id: machdep.c,v 1.208 1996/10/20 18:35:32 phk Exp $
*/
#include "npx.h"
@@ -690,6 +690,16 @@ cpu_boot(int howto)
}
/*
+ * Shutdown the CPU as much as possible
+ */
+void
+cpu_halt(void)
+{
+ for (;;)
+ __asm__ ("hlt");
+}
+
+/*
* Clear registers on exec
*/
void
diff --git a/sys/amd64/include/md_var.h b/sys/amd64/include/md_var.h
index b8faa151de64..c8752e339e6e 100644
--- a/sys/amd64/include/md_var.h
+++ b/sys/amd64/include/md_var.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: md_var.h,v 1.8 1996/03/02 19:37:45 peter Exp $
+ * $Id: md_var.h,v 1.9 1996/07/01 18:12:24 bde Exp $
*/
#ifndef _MACHINE_MD_VAR_H_
@@ -55,6 +55,7 @@ struct reg;
void bcopyb __P((const void *from, void *to, size_t len));
void cpu_reset __P((void));
+void cpu_halt __P((void));
void doreti_iret __P((void)) __asm(__STRING(doreti_iret));
void doreti_iret_fault __P((void)) __asm(__STRING(doreti_iret_fault));
void doreti_popl_ds __P((void)) __asm(__STRING(doreti_popl_ds));
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index de5d4b7c4f10..2cf8d5f5ac6b 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
- * $Id: machdep.c,v 1.207 1996/10/05 10:44:03 jkh Exp $
+ * $Id: machdep.c,v 1.208 1996/10/20 18:35:32 phk Exp $
*/
#include "npx.h"
@@ -690,6 +690,16 @@ cpu_boot(int howto)
}
/*
+ * Shutdown the CPU as much as possible
+ */
+void
+cpu_halt(void)
+{
+ for (;;)
+ __asm__ ("hlt");
+}
+
+/*
* Clear registers on exec
*/
void
diff --git a/sys/i386/include/md_var.h b/sys/i386/include/md_var.h
index b8faa151de64..c8752e339e6e 100644
--- a/sys/i386/include/md_var.h
+++ b/sys/i386/include/md_var.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: md_var.h,v 1.8 1996/03/02 19:37:45 peter Exp $
+ * $Id: md_var.h,v 1.9 1996/07/01 18:12:24 bde Exp $
*/
#ifndef _MACHINE_MD_VAR_H_
@@ -55,6 +55,7 @@ struct reg;
void bcopyb __P((const void *from, void *to, size_t len));
void cpu_reset __P((void));
+void cpu_halt __P((void));
void doreti_iret __P((void)) __asm(__STRING(doreti_iret));
void doreti_iret_fault __P((void)) __asm(__STRING(doreti_iret_fault));
void doreti_popl_ds __P((void)) __asm(__STRING(doreti_popl_ds));
diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c
index 40d1d7403cd7..11e395b8e957 100644
--- a/sys/kern/kern_shutdown.c
+++ b/sys/kern/kern_shutdown.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_shutdown.c 8.3 (Berkeley) 1/21/94
- * $Id: kern_shutdown.c,v 1.8 1996/09/14 04:31:01 bde Exp $
+ * $Id: kern_shutdown.c,v 1.9 1996/10/30 21:40:22 julian Exp $
*/
#include "opt_ddb.h"
@@ -229,7 +229,13 @@ boot(howto)
printf("\n");
printf("The operating system has halted.\n");
printf("Please press any key to reboot.\n\n");
- while (cngetc() == -1); /* no console, halt means STOP HERE */
+ switch (cngetc()) {
+ case -1: /* No console, just die */
+ cpu_halt();
+ /* NOTREACHED */
+ default:
+ break;
+ }
} else {
if (howto & RB_DUMP) {
if (!cold) {