Rev 606 | Rev 625 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 606 | Rev 610 | ||
|---|---|---|---|
| Line 215... | Line 215... | ||
| 215 | ch = '\b'; |
215 | ch = '\b'; |
| 216 | 216 | ||
| 217 | chardev_push_character(&console, ch); |
217 | chardev_push_character(&console, ch); |
| 218 | } |
218 | } |
| 219 | 219 | ||
| - | 220 | static char arc_read(chardev_t *dev) |
|
| - | 221 | { |
|
| - | 222 | char ch; |
|
| - | 223 | __u32 count; |
|
| - | 224 | long result; |
|
| - | 225 | ||
| - | 226 | result = arc_entry->read(0, &ch, 1, &count); |
|
| - | 227 | if (result || count!=1) { |
|
| - | 228 | printf("Error reading from ARC keyboard.\n"); |
|
| - | 229 | cpu_halt(); |
|
| - | 230 | } |
|
| - | 231 | if (ch == '\r') |
|
| - | 232 | return '\n'; |
|
| - | 233 | if (ch == 0x7f) |
|
| - | 234 | return '\b'; |
|
| - | 235 | return ch; |
|
| - | 236 | } |
|
| - | 237 | ||
| 220 | static void arc_write(chardev_t *dev, const char ch) |
238 | static void arc_write(chardev_t *dev, const char ch) |
| 221 | { |
239 | { |
| 222 | arc_putchar(ch); |
240 | arc_putchar(ch); |
| 223 | } |
241 | } |
| 224 | 242 | ||
| Line 233... | Line 251... | ||
| 233 | } |
251 | } |
| 234 | 252 | ||
| 235 | static chardev_operations_t arc_ops = { |
253 | static chardev_operations_t arc_ops = { |
| 236 | .resume = arc_enable, |
254 | .resume = arc_enable, |
| 237 | .suspend = arc_disable, |
255 | .suspend = arc_disable, |
| 238 | .write = arc_write |
256 | .write = arc_write, |
| - | 257 | .read = arc_read |
|
| 239 | }; |
258 | }; |
| 240 | 259 | ||
| 241 | iroutine old_timer; |
260 | iroutine old_timer; |
| 242 | /** Do polling on timer interrupt */ |
261 | /** Do polling on timer interrupt */ |
| 243 | static void timer_replace(int n, void *stack) |
262 | static void timer_replace(int n, void *stack) |