|  | #include <arch/console.h> | 
|  | #include <pmap.h> | 
|  | #include <atomic.h> | 
|  | #include <smp.h> | 
|  | #include <kmalloc.h> | 
|  | #include <monitor.h> | 
|  | #include <process.h> | 
|  |  | 
|  | int cons_get_any_char(void) | 
|  | { | 
|  | assert(0); | 
|  | } | 
|  |  | 
|  | void cons_init() | 
|  | { | 
|  | mtpcr(PCR_SR, mfpcr(PCR_SR) | (1 << (IRQ_HOST+SR_IM_SHIFT))); | 
|  | while (mtpcr(PCR_TOHOST, 0x01L << 56)); | 
|  | } | 
|  |  | 
|  | // `High'-level console I/O.  Used by readline and cprintf. | 
|  |  | 
|  | void | 
|  | cputbuf(const char* str, int len) | 
|  | { | 
|  | for (int i = 0; i < len; i++) | 
|  | cputchar(str[i]); | 
|  | } | 
|  |  | 
|  | void poll_keyboard() | 
|  | { | 
|  | } | 
|  |  | 
|  | // Low-level console I/O | 
|  |  | 
|  | void | 
|  | cputchar(int c) | 
|  | { | 
|  | while (mtpcr(PCR_TOHOST, 0x0101000000000000 | (unsigned char)c)); | 
|  | } | 
|  |  | 
|  | int | 
|  | getchar(void) | 
|  | { | 
|  | char c = 'x'; | 
|  |  | 
|  | #warning "implement me" | 
|  | /* maybe do a qio read */ | 
|  |  | 
|  | return c; | 
|  | } | 
|  |  | 
|  | int | 
|  | iscons(int fdnum) | 
|  | { | 
|  | // used by readline | 
|  | return 1; | 
|  | } |