diff options
| author | Julian Elischer <julian@FreeBSD.org> | 1996-10-31 00:57:28 +0000 |
|---|---|---|
| committer | Julian Elischer <julian@FreeBSD.org> | 1996-10-31 00:57:28 +0000 |
| commit | d13d3630fd5734d5e10aa2d9c03366ab2a6d6f18 (patch) | |
| tree | 1e75a2d6fa7195b51d21c1203fbd585a2d0de004 /sys | |
| parent | 7860637efdd2d8d4c597b8dcef496b2eec9db52d (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/amd64/amd64/machdep.c | 12 | ||||
| -rw-r--r-- | sys/amd64/include/md_var.h | 3 | ||||
| -rw-r--r-- | sys/i386/i386/machdep.c | 12 | ||||
| -rw-r--r-- | sys/i386/include/md_var.h | 3 | ||||
| -rw-r--r-- | sys/kern/kern_shutdown.c | 10 |
5 files changed, 34 insertions, 6 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index de5d4b7c4f10e..2cf8d5f5ac6b9 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 b8faa151de645..c8752e339e6e0 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 de5d4b7c4f10e..2cf8d5f5ac6b9 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 b8faa151de645..c8752e339e6e0 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 40d1d7403cd78..11e395b8e9575 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) { |
