]> sourceware.org Git - newlib-cygwin.git/blame - libgloss/mips/jmr3904-io.c
Cygwin: console: Fix open() failure when the console owner calls exec().
[newlib-cygwin.git] / libgloss / mips / jmr3904-io.c
CommitLineData
03261851
RK
1
2
3#define READ_UINT8( _register_, _value_ ) \
4 ((_value_) = *((volatile unsigned char *)(_register_)))
5
6#define WRITE_UINT8( _register_, _value_ ) \
7 (*((volatile unsigned char *)(_register_)) = (_value_))
8
9 /* - Board specific addresses for serial chip */
10#define DIAG_BASE 0xfffff300
11#define DIAG_SLCR (DIAG_BASE+0x00)
12#define DIAG_SLSR (DIAG_BASE+0x04)
13#define DIAG_SLDICR (DIAG_BASE+0x08)
14#define DIAG_SLDISR (DIAG_BASE+0x0C)
15#define DIAG_SFCR (DIAG_BASE+0x10)
16#define DIAG_SBRG (DIAG_BASE+0x14)
17#define DIAG_TFIFO (DIAG_BASE+0x20)
18#define DIAG_RFIFO (DIAG_BASE+0x30)
19
20#define BRG_T0 0x0000
21#define BRG_T2 0x0100
22#define BRG_T4 0x0200
23#define BRG_T5 0x0300
24
25
26#define READ_UINT16( _register_, _value_ ) \
27 ((_value_) = *((volatile unsigned short *)(_register_)))
28
29#define WRITE_UINT16( _register_, _value_ ) \
30 (*((volatile unsigned short *)(_register_)) = (_value_))
31
32unsigned char
33inbyte (void)
34{
35 unsigned char c;
36 unsigned short disr;
37
38 for (;;)
39 {
40 READ_UINT16 (DIAG_SLDISR, disr);
41 if (disr & 0x0001)
42 break;
43 }
44 disr = disr & ~0x0001;
45 READ_UINT8 (DIAG_RFIFO, c);
46 WRITE_UINT16 (DIAG_SLDISR, disr);
47 return c;
48}
49
50void
51outbyte (unsigned char c)
52{
53 unsigned short disr;
54
55 for (;;)
56 {
57 READ_UINT16 (DIAG_SLDISR, disr);
58 if (disr & 0x0002)
59 break;
60 }
61 disr = disr & ~0x0002;
62 WRITE_UINT8 (DIAG_TFIFO, c);
63 WRITE_UINT16 (DIAG_SLDISR, disr);
64}
65
66/* Stuff required to setup IO on this board */
67void board_serial_init (void)
68{
69 WRITE_UINT16 (DIAG_SLCR, 0x0020);
70 WRITE_UINT16 (DIAG_SLDICR, 0x0000);
71 WRITE_UINT16 (DIAG_SFCR, 0x0000);
72 WRITE_UINT16 (DIAG_SBRG, BRG_T2 | 5);
73}
74
75/* If you want this to be initialized as part of the stuff which gets called
76 by crt0, it should be named 'hardware_init_hook'.
77 Local implementations may want to move or add to this function OR
78 do the initializations after main() is entered.
79*/
80void hardware_init_hook(void)
81{
82 board_serial_init() ;
83}
84
85/* Structure filled in by get_mem_info. Only the size field is
86 actually used (by sbrk), so the others aren't even filled in. */
87
88struct s_mem
89{
90 unsigned int size;
91 unsigned int icsize;
92 unsigned int dcsize;
93};
94
95/* mem_size is provided in the linker script so that we don't have to
96 define it here. */
97extern char _mem_size[];
98
99void
100get_mem_info (mem)
101 struct s_mem *mem;
102{
103 mem->size = (unsigned int)_mem_size;
104}
This page took 0.237039 seconds and 6 git commands to generate.