summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/pc386/startup/exit.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/i386/pc386/startup/exit.c69
1 files changed, 11 insertions, 58 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/startup/exit.c b/c/src/lib/libbsp/i386/pc386/startup/exit.c
index 5166049d34..6e72e4bbd8 100644
--- a/c/src/lib/libbsp/i386/pc386/startup/exit.c
+++ b/c/src/lib/libbsp/i386/pc386/startup/exit.c
@@ -37,67 +37,20 @@
#include <rtems/libio.h>
#include <pc386uart.h>
-/*-------------------------------------------------------------------------+
- | Which console is in use: either (-1) which means normal console or
- | uart id if uart was used
- +-------------------------------------------------------------------------*/
-extern int PC386ConsolePort;
-
-/*-------------------------------------------------------------------------+
-| External Prototypes
-+--------------------------------------------------------------------------*/
-extern rtems_boolean _IBMPC_scankey(char *); /* defined in 'inch.c' */
-
-/*-------------------------------------------------------------------------+
-| Function: _exit
-| Description: Shutdown the PC. Called from libc's 'exit'.
-| Global Variables: None.
-| Arguments: status - exit status (ignored).
-| Returns: Nothing.
-+--------------------------------------------------------------------------*/
-void _exit(int status)
+void bsp_cleanup()
{
- unsigned char ch, *cp;
+ unsigned char ch;
static char line[]="EXECUTIVE SHUTDOWN! Any key to reboot...";
-
- if(PC386ConsolePort == PC386_CONSOLE_PORT_CONSOLE)
- {
-
- printk("\n");
- printk(line);
- while(!_IBMPC_scankey(&ch))
- ;
- printk("\n\n");
- }
- else
- {
- /* Close console */
- __rtems_close(2);
- __rtems_close(1);
- __rtems_close(0);
-
- PC386_uart_intr_ctrl(PC386ConsolePort, PC386_UART_INTR_CTRL_DISABLE);
-
- PC386_uart_polled_write(PC386ConsolePort, '\r');
- PC386_uart_polled_write(PC386ConsolePort, '\n');
-
- for(cp=line; *cp != 0; cp++)
- {
- PC386_uart_polled_write(PC386ConsolePort, *cp);
- }
-
- PC386_uart_polled_read(PC386ConsolePort);
-
- PC386_uart_polled_write(PC386ConsolePort, '\r');
- PC386_uart_polled_write(PC386ConsolePort, '\n');
- PC386_uart_polled_write(PC386ConsolePort, '\r');
- PC386_uart_polled_write(PC386ConsolePort, '\n');
- }
-
+ /*
+ * AT this point, the console driver is disconnected => we must
+ * use polled output/input. This is exactly what printk
+ * does.
+ */
+ printk("\n");
+ printk(line);
+ ch = BSP_poll_char();
rtemsReboot();
-} /* _exit */
-
-
+}