aboutsummaryrefslogtreecommitdiff
path: root/kernel/uart.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-06-17 00:05:14 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-06-17 00:05:14 +0000
commit6ab8517dcba93d56e8d3015d5f4db48de36b2d7a (patch)
treeb8131ae43840142498bb1a9ece69341e9693faa2 /kernel/uart.c
parent3ac81216f8c552f9fbc234c625f3140b40981ab6 (diff)
fix nasty bug in task initialization: enable interrupts per default
new function sysrq() switch from interrupt to task driven console
Diffstat (limited to 'kernel/uart.c')
-rw-r--r--kernel/uart.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/kernel/uart.c b/kernel/uart.c
index ad9d3e6..bc0d157 100644
--- a/kernel/uart.c
+++ b/kernel/uart.c
@@ -19,7 +19,7 @@
#define BAUD 9600
#endif
-#define USE_RXCIE 1
+#define USE_RXCIE 0
#include <stdint.h>
#include <stdio.h>
@@ -81,11 +81,11 @@ uart_init(void)
#endif
UBRR0H = UBRRH_VALUE;
UBRR0L = UBRRL_VALUE;
- #if USE_U2X
+#if USE_U2X
UCSR0A |= _BV(U2X0);
- #else
+#else
UCSR0A &= ~_BV(U2X0);
- #endif
+#endif
uart_stream = fdevopen(uart_putchar, uart_getchar);
stdin = uart_stream;
@@ -109,15 +109,13 @@ uart_getchar(FILE *fd)
char c;
loop_until_bit_is_set(UCSR0A, RXC0);
+ c = UDR0;
if (bit_is_set(UCSR0A, FE0))
return -2; /* EOF */
if (bit_is_set(UCSR0A, DOR0))
return -1; /* ERR */
- c = UDR0;
- uart_putchar(c, fd); /* ECHO */
-
switch (c) {
case '\r':
c = '\n';