OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [mips/] [cfe.c] - Rev 816

Compare with Previous | Blame | View Log

/* cfe.c -- I/O code for the MIPS boards running CFE.  */
 
/*
 * Copyright 2001, 2002, 2003
 * Broadcom Corporation. All rights reserved.
 * 
 * This software is furnished under license and may be used and copied only
 * in accordance with the following terms and conditions.  Subject to these
 * conditions, you may download, copy, install, use, modify and distribute
 * modified or unmodified copies of this software in source and/or binary
 * form. No title or ownership is transferred hereby.
 * 
 * 1) Any source code used, modified or distributed must reproduce and
 *    retain this copyright notice and list of conditions as they appear in
 *    the source file.
 * 
 * 2) No right is granted to use any trade name, trademark, or logo of
 *    Broadcom Corporation.  The "Broadcom Corporation" name may not be
 *    used to endorse or promote products derived from this software
 *    without the prior written permission of Broadcom Corporation.
 * 
 * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
 *    WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
 *    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
 *    NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
 *    FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
 *    LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 */
 
#include "cfe_api.h"
 
void *__libcfe_init (long handle, long a1, long cfe_entrypoint, long a3);
void __libcfe_exit (long status);
 
char inbyte (void);
int outbyte (char c);
 
/* Echo input characters?  */
int	__libcfe_echo_input = 0;
 
/* CFE handle used to access console device.  */
static int cfe_conshandle;
 
 
/* Initialize firmware callbacks.  Called from crt0_cfe.  Returns desired
   stack pointer.  */
void *
__libcfe_init (long handle, long a1, long entrypoint, long a3)
{
  cfe_init (handle, entrypoint);
  cfe_conshandle = cfe_getstdhandle (CFE_STDHANDLE_CONSOLE);
 
  __libcfe_meminit ();
  return __libcfe_stack_top ();
}
 
/* Exit back to monitor, with the given status code.  */
void
__libcfe_exit (long status)
{
  outbyte ('\r');
  outbyte ('\n');
  cfe_exit (CFE_FLG_WARMSTART, status);
}
 
char
inbyte (void)
{
  unsigned char c;
  int rv;
 
  while (cfe_read (cfe_conshandle, &c, 1) != 1)
    ;
  if (c == '\r')
    c = '\n';
  if (__libcfe_echo_input)
    outbyte (c);
  return c;
}
 
int
outbyte (char c)
{
  int res;
 
  do
    {
      res = cfe_write (cfe_conshandle, &c, 1);
    }
  while (res == 0);
  if (c == '\n')
    outbyte ('\r');
  return 0;
}
 
/* This is the MIPS cache flush function call.  No defines are provided
   by libgloss for 'cache', and CFE doesn't let you flush ranges, so
   we just flush all I & D for every call.  */
int
_flush_cache (char *addr, int nbytes, int cache)
{
  cfe_flushcache (0);
  return 0;
}
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.