Changeset 973be64e in mainline for arch/mips32/src/console.c


Ignore:
Timestamp:
2005-12-10T00:19:57Z (20 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fcfac420
Parents:
705b4149
Message:

Added generic exc_register/exc_dispatch functions,
copied from ia32 architecture. Currently only mips32 uses them.

The chardev_t can now be both input & output device (was
needed for serial driver).

Broken other architectures - ia64, sparc, powerpc will not compile.

Mips32 supports input on all msim, gxemul, indy(tested emulation
in gxemul, loses characters), simics. Simics serial line
is done using polling, I was unable to make it produce
an interrupt when the key was pressed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/mips32/src/console.c

    r705b4149 r973be64e  
    2727 */
    2828
    29 #include <putchar.h>
    30 #include <arch/types.h>
    31 #include <arch/cp0.h>
     29#include <console/console.h>
    3230#include <arch/console.h>
    33 #include <arch.h>
    3431#include <arch/drivers/arc.h>
    35 #include <arch/arch.h>
    36 
    37 /** Putchar that works with MSIM & gxemul */
    38 static void cons_putchar(const char ch)
    39 {
    40         *((char *) VIDEORAM) = ch;
    41 }
    42 
    43 /** Putchar that works with simics */
    44 static void serial_putchar(const char ch)
    45 {
    46         int i;
    47 
    48         if (ch=='\n')
    49                 putchar('\r');
    50 
    51         /* Wait until transmit buffer empty */
    52         while (! ((*SERIAL_LSR) & (1<<TRANSMIT_EMPTY_BIT)))
    53                 ;
    54         *(SERIAL_PORT_BASE) = ch;
    55 }
    56 
    57 static void (*putchar_func)(const char ch) = cons_putchar;
     32#include <arch/drivers/serial.h>
     33#include <arch/drivers/msim.h>
    5834
    5935void console_init(void)
    6036{
    61         if (arc_enabled())
    62                 putchar_func = arc_putchar;
    63         /* The LSR on the start usually contains this value */
    64         else if (*SERIAL_LSR == 0x60)
    65                 putchar_func = serial_putchar;
    66         else
    67                 putchar_func = cons_putchar;
     37        chardev_t *console;
     38
     39        if (arc_enabled()) {
     40                console = arc_console();
     41        } else if (serial_init()) {
     42                console = serial_console();
     43        } else
     44                console = msim_console();
     45
     46        stdin = console;
     47        stdout = console;
    6848}
    69 
    70 void putchar(const char ch)
    71 {
    72         putchar_func(ch);
    73 }
Note: See TracChangeset for help on using the changeset viewer.