vmap: Use {map,unmap}_segment() helpers
[akaros.git] / kern / arch / riscv / console.c
index 29c7b46..1f92e1a 100644 (file)
@@ -1,5 +1,4 @@
 #include <arch/console.h>
-#include <console.h>
 #include <pmap.h>
 #include <atomic.h>
 #include <smp.h>
@@ -12,10 +11,10 @@ int cons_get_any_char(void)
        assert(0);
 }
 
-void
-cons_init(void)
+void cons_init()
 {
-       while (mtpcr(PCR_TOHOST, 0x0180000000000000));
+       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.
@@ -29,18 +28,6 @@ cputbuf(const char* str, int len)
 
 void poll_keyboard()
 {
-       uintptr_t fh = mtpcr(PCR_FROMHOST, 0);
-       if (fh == 0)
-               return;
-       assert((fh >> 56) == 0x01);
-
-       char c = fh;
-       if (c == 'G')
-               send_kernel_message(core_id(), __run_mon, 0, 0, 0, KMSG_ROUTINE);
-       else
-               send_kernel_message(core_id(), __cons_add_char, (long)&cons_buf,
-                                   (long)c, 0, KMSG_ROUTINE);
-       cons_init();
 }
 
 // Low-level console I/O
@@ -54,8 +41,11 @@ cputchar(int c)
 int
 getchar(void)
 {
-       char c;
-       kb_get_from_buf(&cons_buf, &c, 1);
+       char c = 'x';
+
+       #warning "implement me"
+       /* maybe do a qio read */
+
        return c;
 }