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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [mips/] [cfe.c] - Blame information for rev 866

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 jeremybenn
/* cfe.c -- I/O code for the MIPS boards running CFE.  */
2
 
3
/*
4
 * Copyright 2001, 2002, 2003
5
 * Broadcom Corporation. All rights reserved.
6
 *
7
 * This software is furnished under license and may be used and copied only
8
 * in accordance with the following terms and conditions.  Subject to these
9
 * conditions, you may download, copy, install, use, modify and distribute
10
 * modified or unmodified copies of this software in source and/or binary
11
 * form. No title or ownership is transferred hereby.
12
 *
13
 * 1) Any source code used, modified or distributed must reproduce and
14
 *    retain this copyright notice and list of conditions as they appear in
15
 *    the source file.
16
 *
17
 * 2) No right is granted to use any trade name, trademark, or logo of
18
 *    Broadcom Corporation.  The "Broadcom Corporation" name may not be
19
 *    used to endorse or promote products derived from this software
20
 *    without the prior written permission of Broadcom Corporation.
21
 *
22
 * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
23
 *    WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
24
 *    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
25
 *    NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
26
 *    FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
27
 *    LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28
 *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
 *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
30
 *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
31
 */
32
 
33
#include "cfe_api.h"
34
 
35
void *__libcfe_init (long handle, long a1, long cfe_entrypoint, long a3);
36
void __libcfe_exit (long status);
37
 
38
char inbyte (void);
39
int outbyte (char c);
40
 
41
/* Echo input characters?  */
42
int     __libcfe_echo_input = 0;
43
 
44
/* CFE handle used to access console device.  */
45
static int cfe_conshandle;
46
 
47
 
48
/* Initialize firmware callbacks.  Called from crt0_cfe.  Returns desired
49
   stack pointer.  */
50
void *
51
__libcfe_init (long handle, long a1, long entrypoint, long a3)
52
{
53
  cfe_init (handle, entrypoint);
54
  cfe_conshandle = cfe_getstdhandle (CFE_STDHANDLE_CONSOLE);
55
 
56
  __libcfe_meminit ();
57
  return __libcfe_stack_top ();
58
}
59
 
60
/* Exit back to monitor, with the given status code.  */
61
void
62
__libcfe_exit (long status)
63
{
64
  outbyte ('\r');
65
  outbyte ('\n');
66
  cfe_exit (CFE_FLG_WARMSTART, status);
67
}
68
 
69
char
70
inbyte (void)
71
{
72
  unsigned char c;
73
  int rv;
74
 
75
  while (cfe_read (cfe_conshandle, &c, 1) != 1)
76
    ;
77
  if (c == '\r')
78
    c = '\n';
79
  if (__libcfe_echo_input)
80
    outbyte (c);
81
  return c;
82
}
83
 
84
int
85
outbyte (char c)
86
{
87
  int res;
88
 
89
  do
90
    {
91
      res = cfe_write (cfe_conshandle, &c, 1);
92
    }
93
  while (res == 0);
94
  if (c == '\n')
95
    outbyte ('\r');
96
  return 0;
97
}
98
 
99
/* This is the MIPS cache flush function call.  No defines are provided
100
   by libgloss for 'cache', and CFE doesn't let you flush ranges, so
101
   we just flush all I & D for every call.  */
102
int
103
_flush_cache (char *addr, int nbytes, int cache)
104
{
105
  cfe_flushcache (0);
106
  return 0;
107
}

powered by: WebSVN 2.1.0

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