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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [libgloss/] [mips/] [jmr3904-io.c] - Diff between revs 148 and 158

Only display areas with differences | Details | Blame | View Log

Rev 148 Rev 158
 
 
 
 
#define READ_UINT8( _register_, _value_ ) \
#define READ_UINT8( _register_, _value_ ) \
        ((_value_) = *((volatile unsigned char *)(_register_)))
        ((_value_) = *((volatile unsigned char *)(_register_)))
 
 
#define WRITE_UINT8( _register_, _value_ ) \
#define WRITE_UINT8( _register_, _value_ ) \
        (*((volatile unsigned char *)(_register_)) = (_value_))
        (*((volatile unsigned char *)(_register_)) = (_value_))
 
 
 /* - Board specific addresses for serial chip */
 /* - Board specific addresses for serial chip */
#define DIAG_BASE       0xfffff300
#define DIAG_BASE       0xfffff300
#define DIAG_SLCR       (DIAG_BASE+0x00)
#define DIAG_SLCR       (DIAG_BASE+0x00)
#define DIAG_SLSR       (DIAG_BASE+0x04)
#define DIAG_SLSR       (DIAG_BASE+0x04)
#define DIAG_SLDICR     (DIAG_BASE+0x08)
#define DIAG_SLDICR     (DIAG_BASE+0x08)
#define DIAG_SLDISR     (DIAG_BASE+0x0C)
#define DIAG_SLDISR     (DIAG_BASE+0x0C)
#define DIAG_SFCR       (DIAG_BASE+0x10)
#define DIAG_SFCR       (DIAG_BASE+0x10)
#define DIAG_SBRG       (DIAG_BASE+0x14)
#define DIAG_SBRG       (DIAG_BASE+0x14)
#define DIAG_TFIFO      (DIAG_BASE+0x20)
#define DIAG_TFIFO      (DIAG_BASE+0x20)
#define DIAG_RFIFO      (DIAG_BASE+0x30)
#define DIAG_RFIFO      (DIAG_BASE+0x30)
 
 
#define BRG_T0          0x0000
#define BRG_T0          0x0000
#define BRG_T2          0x0100
#define BRG_T2          0x0100
#define BRG_T4          0x0200
#define BRG_T4          0x0200
#define BRG_T5          0x0300
#define BRG_T5          0x0300
 
 
 
 
#define READ_UINT16( _register_, _value_ ) \
#define READ_UINT16( _register_, _value_ ) \
     ((_value_) = *((volatile unsigned short *)(_register_)))
     ((_value_) = *((volatile unsigned short *)(_register_)))
 
 
#define WRITE_UINT16( _register_, _value_ ) \
#define WRITE_UINT16( _register_, _value_ ) \
     (*((volatile unsigned short *)(_register_)) = (_value_))
     (*((volatile unsigned short *)(_register_)) = (_value_))
 
 
unsigned char
unsigned char
inbyte (void)
inbyte (void)
{
{
  unsigned char c;
  unsigned char c;
  unsigned short disr;
  unsigned short disr;
 
 
  for (;;)
  for (;;)
    {
    {
      READ_UINT16 (DIAG_SLDISR, disr);
      READ_UINT16 (DIAG_SLDISR, disr);
      if (disr & 0x0001)
      if (disr & 0x0001)
        break;
        break;
    }
    }
  disr = disr & ~0x0001;
  disr = disr & ~0x0001;
  READ_UINT8 (DIAG_RFIFO, c);
  READ_UINT8 (DIAG_RFIFO, c);
  WRITE_UINT16 (DIAG_SLDISR, disr);
  WRITE_UINT16 (DIAG_SLDISR, disr);
  return c;
  return c;
}
}
 
 
void
void
outbyte (unsigned char c)
outbyte (unsigned char c)
{
{
  unsigned short disr;
  unsigned short disr;
 
 
  for (;;)
  for (;;)
    {
    {
      READ_UINT16 (DIAG_SLDISR, disr);
      READ_UINT16 (DIAG_SLDISR, disr);
      if (disr & 0x0002)
      if (disr & 0x0002)
        break;
        break;
    }
    }
  disr = disr & ~0x0002;
  disr = disr & ~0x0002;
  WRITE_UINT8 (DIAG_TFIFO, c);
  WRITE_UINT8 (DIAG_TFIFO, c);
  WRITE_UINT16 (DIAG_SLDISR, disr);
  WRITE_UINT16 (DIAG_SLDISR, disr);
}
}
 
 
/* Stuff required to setup IO on this board */
/* Stuff required to setup IO on this board */
void board_serial_init (void)
void board_serial_init (void)
{
{
  WRITE_UINT16 (DIAG_SLCR, 0x0020);
  WRITE_UINT16 (DIAG_SLCR, 0x0020);
  WRITE_UINT16 (DIAG_SLDICR, 0x0000);
  WRITE_UINT16 (DIAG_SLDICR, 0x0000);
  WRITE_UINT16 (DIAG_SFCR, 0x0000);
  WRITE_UINT16 (DIAG_SFCR, 0x0000);
  WRITE_UINT16 (DIAG_SBRG, BRG_T2 | 5);
  WRITE_UINT16 (DIAG_SBRG, BRG_T2 | 5);
}
}
 
 
/* If you want this to be initialized as part of the stuff which gets called
/* If you want this to be initialized as part of the stuff which gets called
   by crt0, it should be named 'hardware_init_hook'.
   by crt0, it should be named 'hardware_init_hook'.
   Local implementations may want to move or add to this function OR
   Local implementations may want to move or add to this function OR
   do the initializations after main() is entered.
   do the initializations after main() is entered.
*/
*/
void hardware_init_hook(void)
void hardware_init_hook(void)
{
{
  board_serial_init() ;
  board_serial_init() ;
}
}
 
 
/* Structure filled in by get_mem_info.  Only the size field is
/* Structure filled in by get_mem_info.  Only the size field is
   actually used (by sbrk), so the others aren't even filled in.  */
   actually used (by sbrk), so the others aren't even filled in.  */
 
 
struct s_mem
struct s_mem
{
{
  unsigned int size;
  unsigned int size;
  unsigned int icsize;
  unsigned int icsize;
  unsigned int dcsize;
  unsigned int dcsize;
};
};
 
 
/* mem_size is provided in the linker script so that we don't have to
/* mem_size is provided in the linker script so that we don't have to
   define it here. */
   define it here. */
extern char _mem_size[];
extern char _mem_size[];
 
 
void
void
get_mem_info (mem)
get_mem_info (mem)
     struct s_mem *mem;
     struct s_mem *mem;
{
{
  mem->size = (unsigned int)_mem_size;
  mem->size = (unsigned int)_mem_size;
}
}
 
 

powered by: WebSVN 2.1.0

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