summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libbsp/arm/gba/startup/bspclean.c
blob: d5fa3789aee925ce890ad3cce52dd14369d9ce18 (plain) (tree)





















































                                                                             
/**
 *  @file exit.c
 *
 *  Routines to shutdown and reboot the BSP.
 */
/*
 *  RTEMS GBA BSP
 *
 *  Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
 *
 *  The license and distribution terms for this file may be
 *  found in found in the file LICENSE in this distribution or at
 *  http://www.rtems.com/license/LICENSE.
 *
 *  $Id$
 */

#include <stdio.h>
#include <bsp.h>
#include <rtems/bspIo.h>
#include <rtems/libio.h>
#include <gba.h>


/**
 *  @brief rtemsReboot BSP routine reboot rtems
 *
 *  Input parameters:  None
 *
 *  Output parameters: None
 */
void rtemsReboot (void)
{
   asm volatile ("ldr  r0, =_gba_reset");
   asm volatile ("bx   r0");
}

/**
 *  @brief bsp_cleanup BSP routine wait input from user for rebooting
 *
 *  Normally at this point, the console driver is disconnected => we must
 *  use polled output/input. This is exactly what printk does.
 *
 *  @param  None
 *  @return None
 */
void bsp_cleanup(void)
{
  static const char line[]="\nEXECUTIVE SHUTDOWN! Press button to reboot...";
  printk("\n");
  printk("%s",line);
  while ( !GBA_ANY_KEY(GBA_KEY_ALL) );
  rtemsReboot();
}