[PATCH 2/8] Move Mongoose-V specific devices into BSP.
Cudmore, Alan P. (GSFC-5820)
alan.p.cudmore at nasa.gov
Fri Oct 10 12:26:39 UTC 2014
If it helps, I have not heard of anyone using the Mongoose V in years.
If it's still around and being used in a new project, I'm not aware of it .
Alan
On 10/9/14 3:50 PM, "Joel Sherrill" <joel.sherrill at oarcorp.com> wrote:
>
>On 10/9/2014 2:47 PM, Gedare Bloom wrote:
>> I didn't read this, but you should consider doing some style cleanup
>> too (as a separate commit)
>Noted.
>
>FWIW I didn't change any code file contents except to note that a .h
>file moved from libcpu/ to bsp/.
>
>The big problem here is that when we did the BSP, we thought the
>Mongoose-V on-CPU IP modules might show up again. They haven't
>and moving them makes it clear they were specific to this single case.
>
>--joel
>> On Thu, Oct 9, 2014 at 2:39 PM, Joel Sherrill
>><joel.sherrill at oarcorp.com> wrote:
>>> Putting the duart in libcpu was very optimistic and presumptuous.
>>> It has never been used again on another SoC and is BSP specific.
>>> ---
>>> c/src/lib/libbsp/mips/genmongoosev/Makefile.am | 7 +-
>>> c/src/lib/libbsp/mips/genmongoosev/README | 54 +-
>>> .../libbsp/mips/genmongoosev/consoe/README.mguart | 100 +++
>>> .../lib/libbsp/mips/genmongoosev/console/conscfg.c | 2 +-
>>> .../lib/libbsp/mips/genmongoosev/console/mg5uart.c | 917
>>>+++++++++++++++++++++
>>> .../lib/libbsp/mips/genmongoosev/console/mg5uart.h | 98 +++
>>> .../libbsp/mips/genmongoosev/console/mg5uart_reg.c | 58 ++
>>> c/src/lib/libbsp/mips/genmongoosev/include/bsp.h | 2 +-
>>> .../libbsp/mips/genmongoosev/include/mongoose-v.h | 306 +++++++
>>> .../lib/libbsp/mips/genmongoosev/irq/vectorisrs.c | 2 +-
>>> c/src/lib/libbsp/mips/genmongoosev/preinstall.am | 20 +
>>> .../libbsp/mips/genmongoosev/startup/bspstart.c | 2 +-
>>> .../libbsp/mips/genmongoosev/startup/gdb-support.c | 2 +-
>>> c/src/lib/libcpu/mips/Makefile.am | 21 -
>>> .../lib/libcpu/mips/mongoosev/duart/README.mguart | 101 ---
>>> c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c | 917
>>>---------------------
>>> c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.h | 98 ---
>>> .../lib/libcpu/mips/mongoosev/duart/mg5uart_reg.c | 58 --
>>> .../lib/libcpu/mips/mongoosev/include/mongoose-v.h | 306 -------
>>> c/src/lib/libcpu/mips/preinstall.am | 14 -
>>> 20 files changed, 1562 insertions(+), 1523 deletions(-)
>>> create mode 100644
>>>c/src/lib/libbsp/mips/genmongoosev/console/README.mguart
>>> create mode 100644
>>>c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.c
>>> create mode 100644
>>>c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.h
>>> create mode 100644
>>>c/src/lib/libbsp/mips/genmongoosev/console/mg5uart_reg.c
>>> create mode 100644
>>>c/src/lib/libbsp/mips/genmongoosev/include/mongoose-v.h
>>> delete mode 100644 c/src/lib/libcpu/mips/mongoosev/duar/README.mguart
>>> delete mode 100644 c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c
>>> delete mode 100644 c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.h
>>> delete mode 100644 c/src/lib/libcpu/mips/mongoosev/duart/mg5uart_reg.c
>>> delete mode 100644
>>>c/src/lib/libcpu/mips/mongoosev/include/mongoose-v.h
>>>
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/Makefile.am
>>>b/c/src/lib/libbsp/mips/genmongoosev/Makefile.am
>>> index fe21df4..a99fd56 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/Makefile.am
>>> ++ b/c/src/lib/libbsp/mips/genmongoosev/Makefile.am
>>> @@ -16,6 +16,11 @@ include_bsp_HEADERS += include/irq.h
>>>
>>> nodist_include_HEADERS = include/bspopts.h
>>> nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
>>> +nodist_include_bsp_HEADERS += include/lr33000.h
>>> +nodist_include_bsp_HEADERS += include/lr333x0.h
>>> +nodist_include_bsp_HEADERS += include/mongoose-v.h
>>> +nodist_include_bsp_HEADERS += include/r3000.h
>>> +nodist_include_bsp_HEADERS += console/mg5uart.h
>>> DISTCLEANFILES = include/bspopts.h
>>> noinst_PROGRAMS =
>>>
>>> @@ -47,6 +52,7 @@ libbsp_a_SOURCES += clock/clockdrv.c
>>> libbsp_a_SOURCES += ../../shared/clockdrv_shell.h
>>> # console
>>> libbsp_a_SOURCES += console/conscfg.c
>>> +libbsp_a_SOURCES += console/mg5uart.c
>>> libbsp_a_SOURCES += ../../shared/console.c
>>> libbsp_a_SOURCES += ../../shared/console_select.c
>>> libbsp_a_SOURCES += ../../shared/console_control.c
>>> @@ -75,7 +81,6 @@ gdbstub_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
>>>
>>> libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/shared/cache.rel
>>> libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/shared/interrupts.rel
>>> -libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/mongoosev/duart.rel
>>>
>>> include $(srcdir)/preinstall.am
>>> include $(top_srcdir)/../../../../automake/local.am
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/README
>>>b/c/src/lib/libbsp/mips/genmongoosev/README
>>> index 97db696..87f57a9 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/README
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/README
>>> @@ -1,6 +1,56 @@
>>> BSP supporting the on-CPU capabilities of the Synova Mongoose-V.
>>> -This BSP assumes that basic HW initialization is performed by
>>> -PMON.
>>> +The Synova Mongoose-V is a radiation hardened derivative of the
>>> +LSI 33K with on-CPU peripherals.
>>> +
>>> +This BSP assumes that basic HW initialization is performed by PMON.
>>> +
>>> +Status
>>> +======
>>> +Per-task floating point enable/disable is supported for both immediate
>>> +and deferred FPU context swaps.
>>> +
>>> +Interrupt Levels are adapted reasonably well to the MIPS interrupt
>>> +model. Bit 0 of the int level is a global enable/disable,
>>>corresponding
>>> +to bit 0 of the processor's SR register. Bits 1 thru 6 are configured
>>> +as masks for the Int0 thru Int5 interrupts. The 2 software interrupt
>>> +bits are always enabled by default. Each task maintains its own
>>> +Interrupt Level setting, reconfiguring the SR register's interrupt
>>>bits
>>> +whenever scheduled in. The software ints, though not addressable via
>>> +the various Interrupt Level functions, are maintained on a per-task
>>> +basis, so if software manipulates them drectly, things should behave
>>>as
>>> +expected. At the time of these udpates, the Interrupt Level was only
>>>8
>>> +bits, and completely supporting the global enable, software ints and
>>>the
>>> +hardware ints would require 9 bits. When more than 8 bits are
>>> +available, there is no reason the software interrupts could not be
>>>added
>>> +to the Interrupt Level.
>>> +
>>> +While supporting the Int0 thru Int5 bits in this way doesn't seem
>>> +wonderfully useful, it does increase the level of compliance with the
>>> +RTEMS spec.
>>> +
>>> +Interrupt Level 0 corresponds to interrupts globally enabled, software
>>> +ints enabled and Int0 thru Int5 enabled. If values other than 0 are
>>> +supplied, they should be formulated to impose the desired bitmask.
>>> +Interrupt priority is not a strong concept on this bsp, it is provided
>>> +only by the order in which interrupts are checked.
>>> +
>>> +If during the vectoring of an interrupt, others arrive, they will all
>>>be
>>> +processed in accordance with their ordering in SR & the peripheral
>>> +register. For example, if while we're vectoring Int4, Int3 and Int5
>>>are
>>> +asserted, Int3 ill be serviced before Int5. The peripheral
>>>interrupts
>>> +are individually vectored as a consequence of Int5 being asserted,
>>> +however Int5 is not itself vectored. Within the set of peripheral
>>> +interrupts, bit 0 is vectored first, 31 is last.
>>> +
>>> +Interrupts are not nested for MIPS1 or MIPS3 processors, but are
>>> +processed serially as possible. On an unloaded 50 task RTEMS program,
>>> +runnning on a 12mhz MIPS1 processor, worst-case latencies of 100us
>>>were
>>> +observed, the average being down at 60us or below.
>>> +
>>> +
>>> +These features are principally a consequence of fixes and tweaks to
>>>the
>>> +MIPS1and MIPS3 processor support, and should be equally effective on
>>> +both levels of MIPS processors for any of their bsp's.
>>>
>>> Address Map
>>> ===========
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/console/README.mguart
>>>b/c/src/lib/libbsp/mips/genmongoosev/console/README.mguart
>>> new file mode 100644
>>> index 0000000..7c6a290
>>> --- /dev/null
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/console/README.mguart
>>> @@ -0,0 +1,100 @@
>>> +Configuration Table Use
>>> +=======================
>>> +
>>> +sDeviceName
>>> +
>>> + The name of this device.
>>> +
>>> +deviceType
>>> +
>>> + This field must be SERIAL_MG5UART.
>>> +
>>> +pDeviceFns
>>> +
>>> + The device interface control table. This may be:
>>> + + mg5uart_fns for interrupt driven IO
>>> + + mg5uart_fns_polled for polled IO
>>> +
>>> +deviceProbe
>>> +
>>> + This is the address of the routine which probes to see if the
>>>device
>>> + is present.
>>> +
>>> +pDeviceFlow
>>> +
>>> + This field is ignored as hardware flow control is not currently
>>>supported.
>>> +
>>> +ulMargin
>>> +
>>> + This is currently unused.
>>> +
>>> +ulHysteresis
>>> +
>>> + This is currently unused.
>>> +
>>> +pDeviceParams
>>> +
>>> + This is set to the default settings.
>>> +
>>> +ulCtrlPort1
>>> +
>>> + This field is the address of the command register shared by both
>>>ports.
>>> +
>>> +ulCtrlPort2
>>> +
>>> + This field is the address of the port being used.
>>> +
>>> +ulDataPort
>>> +
>>> + This field is set to MG5UART_PORTA or MG5UART_PORTB.
>>> +
>>> +getRegister
>>> +setRegister
>>> +
>>> + These do NOT follow standard conventions and are ignored.
>>> + The register address routines are hard-coded as this is
>>> + an on-CPU part and assumed to provide a 32-bit wide interface.
>>> +
>>> +getData
>>> +
>>> + This is address of the RX buffer register.
>>> +
>>> +setData
>>> +
>> + This is address of the TX buffer register.
>>> +
>>> +ulClock
>>> +
>>> + baudRate Clock
>>> +
>>> +ulIntVector
>>> +
>>> + This is the interrupt vector number associated with this chip.
>>> +
>>> +Example:
>>> +
>>> +#if (CONSOLE_USE_INTERRUPTS)
>>> +#define MG5UART_FUNCTIONS &mg5uart_fns
>>> +#else
>>> +#define MG5UART_FUNCTIONS &mg5uart_fns_polled
>>> +#endif
>>> +
>>> +{
>>> + "/dev/com0", /* sDeviceName */
>>> + SERIAL_MG5UART, /* deviceType */
>>> + MG5UART_FUNCTIONS, /* pDeviceFns */
>>> + NULL, /* deviceProbe, assume it
>>>is there */
>>> + NULL, /* pDeviceFlw */
>>> + 16, /* ulMargin */
>>> + 8, /* ulHysteresis */
>>> + (void *) NULL, /* NULL */ /* pDeviceParams */
>>> + MONGOOSEV_PERIPHERAL_COMMAND_REGISTER, /* ulCtrlPort1 */
>>> + MONGOOSEV_UART0_BASE, /* ulCtrlPort2 */
>>> + MG5UART_UART0, /* ulDataPort */
>>> + mg5uart_get_register, /* getRegister */
>>> + mg5uart_set_register, /* setRegister */
>>> + NULL, /* unused */ /* getData */
>>> NULL, /* unused */ /* setData */
>>> + 12000000, /* ulClock */
>>> + MONGOOSEV_IRQ_UART0_RX_FRAME_ERROR /* ulIntVector -- base for
>>>port */
>>> +}
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/console/conscfg.c
>>>b/c/src/lib/libbsp/mips/genmongoosev/console/conscfg.c
>>> index 61ac56e..87df736 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/console/conscfg.c
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/console/conscfg.c
>>> @@ -21,7 +21,7 @@
>>> #include <bsp/irq.h>
>>>
>>> #include <libchip/serial.h>
>>> -#include <libchip/mg5uart.h>
>>> +#include <bsp/mg5uart.h>
>>>
>>> /* #define CONSOLE_USE_INTERRUPTS */
>>>
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.c
>>>b/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.c
>>> new file mode 100644
>>> index 0000000..8c4177a
>>> --- /dev/null
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.c
>>> @@ -0,0 +1,917 @@
>>> +/**
>>> + * @file
>>> + *
>>> + * This file contains the termios TTY driver for the UART foun
>>> + * on the Synova Mongoose-V.
>>> + */
>>> +
>>> +/*
>>> + * COPYRIGHT () 1989-2012.
>>> + * On-Line Applications Research Corporation (OAR).
>>> + *
>>> + * The license and distribution terms for this file may be
>>> + * found in the file LICENSE in this ditribution or at
>>> + * http://www.rtems.org/license/LICENSE.
>>> + */
>>> +
>>> +#include <rtems.h>
>>> +#include <rtems/libio.h>
>>> +#include <rtems/score/sysstate.h>
>>> +#include <stdlib.h>
>>> +
>>> +#include <libchip/serial.h>
>>> +#include <libchip/sersupp.h>
>>> +#include <bsp/mg5uart.h>
>>> +#include <bsp/mongoose-v.h>
>>> +
>>> +#include <bsp/irq.h>
>>> +#include <bsp.h>
>>> +
>>> +/*
>>> + * Indices of registers
>>> + */
>>> +
>>> +/*
>>> + * Per chip context control
>>> + */
>>> +
>>> +typedef struct _mg5uart_context
>>> +{
>>> + int mate;
>>> +} mg5uart_context;
>>> +
>>> +/*
>>> + * Define MG5UART_STATIC to nothing while debugging so the entry
>>>points
>>> + * will show up in the symbol table.
>>> + */
>>> +
>>> +#define MG5UART_STATIC
>>> +
>>> +/* #define MG5UART_STATIC static */
>>> +
>>> +
>>> +
>>> +#define MG5UART_SETREG( _base, _register, _value ) \
>>> + MONGOOSEV_WRITE_REGISTER( _base, _register, _value )
>>> +
>>> +#define MG5UART_GETREG( _base, _register ) \
>>> + MONGOOSEV_READ_REGISTER( _base, _register )
>>> +
>>> +
>>> +/*
>>> + * Console Device Driver Support Functions
>>> + */
>>> +
>>> +MG5UART_STATIC int mg5art_baud_rate(
>>> + int minor,
>>> + uint32_t baud,
>>> + uint32_t *code
>>> +);
>>> +
>>> +MG5UART_STATIC void mg5uart_enable_interrupts(
>>> + int minor,
>>> + int mask
>>> +);
>>> +
>>> +/*
>>> + * mg5uart_isr_XXX
>>> + *
>>> + * This is the single interrupt entry point which parcels interrupts
>>> + * out to the handlers for specific sources and makes sure that the
>>> + * shared handler gets the right arguments.
>>> + *
>>> + * NOTE: Yes .. this is ugly but it provides 5 interrupt source
>>> + * wrappers which are nearly functionally identical.
>>> + */
>>> +
>>> +
>>> +extern void mips_default_isr(int vector);
>>> +
>>> +#define __ISR(_TYPE, _OFFSET) \
>>> + MG5UART_STATIC void mg5uart_process_isr_ ## _TYPE ( \
>>> + int minor \
>>> + ); \
>>> + \
>>> + MG5UART_STATIC rtems_isr mg5uart_isr_ ## _TYPE ( \
>>> + void *arg \
>>> + ) \
>>> + { \
>>> + rtems_vector_number vectr = (rtems_vector_number) arg; \
>>> + int minor; \
>>> + \
>>> + for(minor=0 ; minor<Console_Port_Count ; minor++) { \
>>> + if( Console_Port_Tbl[minor]->deviceType == SERIAL_MG5UART && \
>>> + vector == Console_Por_Tbl[minor]->ulIntVector + _OFFSET )
>>>{ \
>>> + mg5uart_process_isr_ ## _TYPE (mino); \
>>> + return; \
>>> + } \
>>> + } \
>>> + mips_default_isr( vector ); \
>>> + }
>>> +
>>> +__ISR(rx_frame_error, MG5UART_IRQ_RX_FRAME_ERRO)
>>> +__ISR(rx_overrun_error, MG5UART_IRQ_RX_OVERRUN_ERROR)
>>> +__ISR(tx_empty, MG5UART_IRQ_TX_EMPTY)
>>> +__ISR(tx_ready, MG5UART_IRQ_TX_READY)
>>> +__ISR(rx_ready, MG5UART_IRQ_RX_READY)
>>> +
>>> +/*
>>> + * mg5uart_set_attributes
>>> + *
>>> + * This function sets the UART channel to reflect the requested
>>>termios
>>> + * port settings.
>>> + */
>>> +
>>> +MG5UART_STATIC int mg5uart_set_attributes(
>>> + int minor,
>>> + const struct termios *t
>>> +)
>>> +{
>>> + uint32_t pMG5UART_port;
>>> + uint32_t pMG5UART;
>>> + uint32_t cmd, cmdSave;
>>> + uint32_t baudcmd;
>>> + uint32_t shift;
>>> + rtems_interrupt_level Irql;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + /*
>>> + * Set the baud rate
>>> + */
>>> +
>>> + if (mg5uart_baud_rate( minor, t->c_cflag, &baudcmd ) == -1)
>>> + return -1;
>>> +
>>> + /*
>>> + * Base settings
>>> + */
>>> +
>>> + /*
>>> + * Base settings
>>> + */
>>> +
>>> + cmd = MONGOOSEV_UART_CMD_RX_ENABLE | MONGOOSEV_UART_CMD_TX_ENABLE;
>>> +
>>> + /*
>>> + * Parity
>>> + */
>>> +
>>> + if (t->c_cflag & PARENB) {
>>> + cmd |= MONGOOSEV_UART_CMD_PARITY_ENABLE;
>>> + if (t->c_cflag & PARODD)
>>> + cmd |= MONGOOSEV_UART_CMD_PARITY_ODD;
>>> + else
>>> + cmd |= MONGOOSEV_UART_CMD_PARITY_EVEN;
>>> + } else {
>>> + cmd |= MONGOOSEV_UART_CMD_PARITY_DISABLE;
>>> + }
>>> +
>>> + /*
>>> + * Character Size
>>> + */
>>> +
>>> + if (t->c_cflag & CSIZE) {
>>> + switch (t->c_cflag & CSIZE) {
>>> + case CS5:
>>> + case CS6:
>>> + case CS7:
>>> + return -1;
>>> + break;
>>> + case CS8:
>>> + /* Mongoose-V only supports CS8 */
>>> + break;
>>> +
>>> + }
>>> + } /* else default to CS8 */
>>> +
>>> + /*
>>> + * Stop Bits
>>> + */
>>> +
>>> +#if 0
>>> + if (t->c_cflag & CSTOPB) {
>>> + /* 2 stop bits not supported by Mongoose-V uart */
>>> + return -1;
>>> + }
>>> +#endif
>>> +
>>> + /*
>>> + * XXX what about CTS/RTS
>>> + */
>>> +
>>> + /* XXX */
>>> +
>>> + /*
>>> + * Now write the registers
>>> + */
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> +
>>> +
>>> +
>>> + rtems_interrupt_disable(Irql);
>>> +
>>> + cmdSave = MG5UART_GETREG( pMG5UART, MG5UART_COMMAND_REISTER );
>>> +
>>> + MG5UART_SETREG( pMG5UART,
>>> + MG5UART_COMMAND_REGISTER,
>>> + (cmdSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS <<
>>>shift)) | (cmd << shift) );
>>> +
>>> + MG5UART_SETREG( pMG5UART_port, MG5UART_BAUD_RATE, baudcmd );
>>> +
>>> + rtems_interrupt_enable(Irql);
>>> + return 0;
>>> +}
>>> +
>>> +/*
>>> + * mg5uart_initialize_context
>> + *
>>> + * This function sets the default values of the per port context
>>>structure.
>>> + */
>>> +
>>> +MG5UART_STATIC void mg5uart_initialize_context(
>>> + int minor,
>>> + mg5uart_context *pmg5uartContext
>>> +)
>>> +{
>>> + int port;
>>> + unsigned int pMG5UART;
>> + unsigned int pMG5UART_port;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->uCtrlPort1;
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + pmg5uatContext->mate = -1;
>>> +
>>> + for (port=0 ; port<Console_Port_Count ; port++ )
>>> + if ( Console_Port_Tbl[port]->ulCtrlPort1 == pMG5UART &&
>>> + Conole_Port_Tbl[port]->ulCtrlPort2 != pMG5UART_port ) {
>>> + pmg5uartContext->mate = port;
>>> + break;
>>> + }
>>> + }
>>> +
>>> +}
>>> +
>>> +/*
>>> + * mg5uart_init
>>> + *
>>> + * This function initializes the DUART to a quiecsent state.
>>> + */
>>> +
>>> +MG5UART_STATIC void mg5uart_init(int minor)
>>> +{
>>> + uint32_t pMG5UART_port;
>>> + uint32_t pMG5UART;
>>> + uint32_t cmdSave;
>>> + uint32_t shift;
>>> +
>>> + mg5uart_context *pmg5uartContext;
>>> +
>>> + pmg5uartContext = (mg5uart_contxt *)
>>>malloc(sizeof(mg5uart_context));
>>> +
>>> + Console_Port_Data[minor].pDeviceContext = (void *)pmg5uartContext;
>>> +
>>> + mg5uart_initialize_context( minor, pmg5uartContext );
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> +
>>> + /*
>>> + * Disable the uart and leave this port disabled.
>>> + */
>>> +
>>> + cmdSave = MG5UART_GETREG(pMG5UART, MG5UART_COMMAND_REGISTER) &
>>>~(MONGOOSEV_UART_ALL_STATUS_BITS << shift);
>>> +
>>> + MG5UART_SETREG( pMG5UART, MG5UART_COMMAND_REGISTER, cmdSave );
>>> +
>>> + /*
>>> + * Disable interrupts on RX and TX for this port
>>> + */
>>> + mg5uart_enable_interrupts( minor, MG5UART_DISABLE_ALL );
>>> +}
>>> +
>>> +/*
>>> + * mg5uart_open
>>> + *
>>> + * This function opens a port for communication.
>>> + *
>>> + * Default state is 9600 baud, 8 bits, No parity, and 1 stop bit.
>>> + */
>>> +
>>> +MG5UART_STATIC int mg5uart_open(
>>> + int major,
>>> + int minor,
>>> + void *arg
>>> +)
>>> +{
>>> + uint32_t pMG5UART;
>>> + uint32_t pMG5UART_port;
>>> + uint32_t vector;
>>> + uint32_t cmd, cmdSave;
>>> + uint32_t baudcmd;
>>> + uint32_t shift;
>>> +
>>> + rtems_interrupt_level Irql;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> + vector = Console_Port_Tbl[minor]->ulIntVector;
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> +
>>> +
>>> + /* XXX default baud rate could be from configuration table */
>>> +
>>> + (void) mg5uart_baud_rate( minor, B19200, &baudcmd );
>>> +
>>> + /*
>>> + * Set the DUART channel to a default useable state
>>> + * B19200, 8Nx since there is no stop bit control.
>>> + */
>>> +
>>> + cmd = MONGOOSEV_UART_CMD_TX_ENABLE | MONGOOSEV_UART_CMD_RX_ENABLE;
>>> +
>>> + rtems_interrupt_disable(Irql);
>>> +
>>> + cmdSave = MG5UART_GETREG( pMG5UART, MG5UART_COMMAND_REGISTER );
>>> +
>>> + MG5UART_SETREG( pMG5UART_port, MG5UART_BAUD_RATE, baudcmd );
>>> +
>>> + MG5URT_SETREG( pMG5UART,
>>> + MG5UART_COMMAND_REGISTER,
>>> + cmd = (cmdSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS <<
>>>shift)) | (cmd << shift) );
>>> +
>>> + rtems_interrupt_enable(Irql);
>>> +
>>> + return RTEMS_SUCCESSFUL;
>>> +}
>>> +
>>> +/*
>>> + * mg5uart_close
>>> + *
>>> + * This function shuts down the requested port.
>>> + */
>>> +
>>> +MG5UART_STATIC int mg5uart_close(
>>> + int major,
>>> + int minor,
>>> + void *arg
>>> +)
>>> +{
>>> + uint32_t pMG5UART;
>>> + uint32_t pMG5UART_port;
>>> + uint32_t cmd, cmdSave;
>>> + uint32_t shift;
>>> + rtems_interrupt_level Irql;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + /*
>>> + * Disable interrupts from this channel and then disable it
>>>totally.
>>> + */
>>> +
>>> + /* XXX interrupts */
>>> +
>>> + cmd = MONGOOSEV_UART_CMD_TX_DISABLE | MONGOOSEV_UART_CMD_RX_DISABLE;
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> +
>>> +
>>> + rtems_interrupt_disable(Irql);
>>> + cmdSave = MG5UART_GETREG( pMG5UART, MG5UART_COMMAND_REGISTER );
>>> +
>>> + MG5UART_SETREG( pMG5UART,
>>> + MG5UART_COMMAND_REGISTER,
>>> + (cmdSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS <<
>>>shift)) | (cmd << shift) );
>>> + rtems_interrupt_enable(Irql);
>>> +
>>> + return(RTEMS_SUCCESSFUL);
>>> +}
>>> +
>>> +
>>> +
>>> +
>>> +/*
>>> + * mg5uart_write_polled
>>> + *
>>> + * This routine polls out the requested character.
>>> + */
>>> +
>>> +MG5UART_STATIC void mg5uart_write_polled(
>>> + int minor,
>>> + char c
>>> +)
>>> +{
>>> + uint32_t pMG5UART;
>>> + uint32_t pMG5UART_port;
>>> + uint32_t status;
>>> + int shift;
>>> + int timeout;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> +
>>> + /*
>>> + * wait for transmitter holding register to be empty
>>> + */
>>> + timeout = 2000;
>>> +
>>> + while( --timeout )
>>> + {
>>> + status = MG5UART_GETREG(pMG5UART, MG5UART_STATUS_REGISTER) >>
>>>shift;
>>> +
>>> + *
>>> + if ( (status & (MONGOOSEV_UART_TX_READY |
>>>MONGOOSEV_UART_TX_EMPTY)) ==
>>> + (MONGOOSEV_UART_TX_READY | MONGOOSEV_UART_TX_EMPTY) )
>>> + break;
>>> + */
>>> +
>>> + if((status & (MONGOOSEV_UART_TX_READY |
>>>MONGOOSEV_UART_TX_EMPTY)) )
>>> + break;
>>> +
>>> + /*
>>> + * Yield while we wait
>>> + */
>>> +
>>> +#if 0
>>> + if(_System_state_Is_up(_System_state_Get()))
>>> + {
>>> + rtems_task_wake_after(RTEMS_YIELD_PROCESSOR);
>>> + }
>>> +#endif
>>> + }
>>> +
>>> + /*
>>> + * transmit character
>>> + */
>>> +
>>> + MG5UART_SETREG(pMG5UART_port, MG5UART_TX_BUFFER, c);
>>> +}
>>> +
>>> +MG5UART_STATIC void mg5uart_process_isr_rx_error(
>>> + int minor,
>>> + uint32_t mask
>>> +)
>>> +{
>>> + uint32_t pMG5UART;
>>> + int shift;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> +
>>> + /* now clear the error */
>>> +
>>> + MG5UART_SETREG(
>>> + pMG5UART,
>>> + MG5UART_STATUS_REGISTER,
>>> + mask << shift );
>>> +}
>>> +
>>> +
>>> +MG5UART_STATIC void mg5uart_process_isr_rx_frame_error(
>>> + int minor
>>> +)
>>> +{
>>> + mg5uart_process_isr_rx_error( minor, MONGOOSEV_UART_RX_FRAME_ERROR
>>>);
>>> +}
>>> +
>>> +MG5UART_STATIC void mg5uart_process_isr_rx_overrun_error(
>>> + int minor
>>> +)
>>> +{
>>> + mg5uart_process_isr_rx_error( minor,
>>>MONGOOSEV_UART_RX_OVERRUN_ERROR );
>> +}
>>> +
>>> +
>>> +
>>> +
>>> +
>>> +
>>> +
>>> +
>>> +MG5UART_STATIC void m5uart_process_tx_isr(
>>> + int minor,
>>> + uint32_t source
>>> +)
>>> +{
>>> + uint32_t pMG5UART;
>>> + int shift;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> +
>>> + mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL_EXCEPT_TX);
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> +
>>> + MG5UART_SETREG(
>>> + pMG5UART,
>>> + MG5UART_STATUS_REGISTER,
>>> + source << shift );
>>> +
>>> + if( rtems_termios_dequeue_characters(
>>>Console_Port_Data[minor].termios_data, 1) )
>>> + {
>>> + mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL);
>>> + return;
>>> + }
>>> +
>>> + /*
>>> + * There are no more characters to transmit. The tx interrupts
>>>are be cleared
>>> + * by writing data to the uart, so just disable the tx interrupt
>>>sources.
>>> + */
>>> +
>>> + Console_Port_Data[minor].bActive = FALSE;
>>> +
>>> + /* mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL_EXCEPT_TX);
>>>*/
>>> +}
>>> +
>>> +
>>> +
>>> +MG5UART_STATIC void mg5uart_process_isr_tx_empty(
>>> + int minor
>>> +)
>>> +{
>>> + /* mg5uart_process_tx_isr( minor, MONGOOSEV_UART_TX_EMPTY ); */
>>> +}
>>> +
>>> +MG5UART_STATIC void mg5uart_process_isr_tx_ready(
>>> + int minor
>>> +)
>>> +{
>>> + mg5uart_process_tx_isr( minor, MONGOOSEV_UART_TX_READY );
>>> +}
>>> +
>>> +
>>> +
>>> +
>>> +
>>> +MG5UART_STATIC void mg5uart_process_isr_rx_ready(
>>> + int minor
>>> +)
>>> +{
>>> + uint32_t pMG5UART_port;
>>> + char c;
>>> +
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + /* reading the RX buffer automatically resets the interrupt flag */
>>> +
>>> + c = (char) MG5UART_GETREG(pMG5UART_port, MG5UART_RX_BUFFER);
>>> +
>>> + rtems_termios_enqueue_raw_characters(
>>> + Console_Port_Data[minor].termios_data,
>>> + &c, 1 ;
>>> +}
>>> +
>>> +static rtems_irq_connect_data mg5uart_rx_frame_error_cd = { \
>> + 0, /* filled in at initialization */
>>> + mg5uart_isr_rx_frame_error, /* filled in at initialization */
>>> + NULL, /* (void *) minor */
>>> + NULL,
>>> + NULL,
>>> + NULL
>>> +};
>>> +
>>> +static rtems_irq_connect_data mg5uart_rx_overrun_error_cd = { \
>>> + 0, /* filled in at initialization */
>>> + mg5uart_isr_rx_overrun_error, /* filled in at initialization */
>>> + NULL, /* (void *) minor */
>>> + NULL,
>>> + NULL,
>>> + NULL
>>> +};
>>> +
>>> +static rtems_irq_connect_data mg5uart_tx_empty_cd = { \
>>> + 0, /* filled in at initializaion */
>>> + mg5uart_isr_tx_empty, /* filled in at initialization */
>>> + NULL,id *) minor */
>>> + NULL,
>>> + NULL,
>>> + NULL
>>> +};
>>> +
>>> +static rtems_irq_connect_data mg5uart_tx_ready_cd = { \
>>> + 0, /* filled in at initialization */
>>> + mg5uart_isr_tx_ready, /* filled in at initialization */
>>> + NULL, /* (void *) minor */
>>> + NULL,
>>> + NULL,
>>> NULL
>>> +};
>>> +
>>> +static rtems_irq_connect_data mg5uart_rx_ready_cd = { \
>>> + 0, /* filled in at initialization */
>>> + mg5uart_isr_rx_ready, /* filled in at initialization */
>>> + NULL, /* (void *) minor */
>>> + NULL,
>>> + NULL,
>>> + NUL
>>> +};
>>> +
>>> +
>>> +/*
>>> + * mg5uart_initialize_interrupts
>>> + *
>>> + * This routine initializes the console's receive and transmit
>>> + * ring buffers and loads the appropriate vectors to handle the
>>>interrupts.
>>> + */
>>> +
>>> +MG5UART_STATIC void mg5uart_initialize_interrupts(int minor)
>>> +{
>>> + unsigned long v;
>>> + mg5uart_init(minor);
>>> +
>>> + Console_Port_Data[minor].bActive = FALSE;
>>> + v = Console_Port_Tbl[minor]->ulIntVector;
>>> +
>>> + mg5uart_rx_frame_error_cd.name = v + MG5UART_IRQ_RX_FRAME_ERROR;
>>> + mg5uart_rx_overrun_error_cd.name = v +
>>>MG5UART_IRQ_RX_OVERRUN_ERROR;
>>> + mg5uart_tx_empty_cd.name = v + MG5UART_IRQ_TX_EMPTY;
>>> + mg5uart_tx_ready_cd.name = v + MG5UART_IRQ_TX_READY;
>>> + mg5uart_rx_ready_cd.name = v + MG5UART_IRQ_RX_READY;
>>> +
>>> + mg5uart_rx_frame_error_cd.handle = (void
>>>*)mg5uart_rx_frame_error_cd.name;
>>> + mg5uart_rx_overrun_error_cd.handle = (void
>>>*)mg5uart_rx_overrun_error_cd.name;
>>> + mg5uart_tx_empty_cd.handle = (void
>>>*)mg5uart_tx_empty_cd.name;
>>> + mg5uart_tx_ready_cd.handle = (void
>>>*)mg5uart_tx_ready_cd.name;
>>> + mg5uart_rx_ready_cd.handle = (void
>>>*)mg5uart_rx_ready_cd.name;
>>> +
>>> +
>>> + BSP_install_rtems_irq_handler( &mg5uart_rx_frame_error_cd );
>>> + BSP_install_rtems_irq_handler( &mg5uart_rx_overrun_error_cd );
>>> + BSP_install_rtems_irq_handler( &mg5uart_tx_empty_cd );
>>> + BSP_install_rtems_irq_handler( &mg5uart_tx_ready_cd );
>>> + BSP_istall_rtems_irq_handler( &mg5uart_rx_ready_cd );
>>> +
>>> + mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL_EXCEPT_TX);
>>> +}
>>> +
>>> +/*
>>> + * mg5uart_write_support_int
>>> + *
>>> + * Console Termios output entry point when using interrupt driven
>>>output.
>>> + */
>>> +
>>> +MG5UART_STATIC int mg5uart_write_support_int(
>>> + int minor,
>>> + const char *buf,
>>> + size_t len
>>> +)
>>> +{
>>> + uint32_t pMG5UART_port;
>>> +
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + /*
>>> + * We are using interrupt driven output and termios only sends us
>>> + * one character at a time.
>>> + */
>>> +
>>> + if ( !len )
>>> + return 0;
>>> +
>>> + /*
>>> + * Put the character out and enable interrupts if necessary.
>>> + */
>>> +
>>> + MG5UART_SETREG(pMG5UART_port, MG5UART_TX_BUFFER, *buf);
>>> +
>>> + if( Console_Port_Data[minor].bActive == FALSE )
>>> + {
>>> + Console_Port_Data[minor].bActive = TRUE;
>>> + mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL);
>>> + }
>>> +
>>> + return 1;
>>> +}
>>> +
>>> +
>>> +
>>> +
>>> +/*
>>> + * mg5uart_write_support_polled
>>> + *
>>> + * Console Termios output entry point when using polled output.
>>> + *
>>> + */
>>> +
>>> +MG5UART_STATIC ssize_t mg5uart_write_support_polled(
>>> + int minor,
>>> + const char *buf,
>>> + size_t len
>>> +)
>>> +{
>>> + int nwrite = 0;
>>> +
>>> + /*
>>> + * poll each byte in the string out of the port.
>>> + */
>>> + while (nwrite < len)
>>> + {
>>> + mg5uart_write_polled(minor, *buf++);
>>> + nwrite++;
>>> + }
>>> +
>>> + /*
>>> + * return the number of bytes written.
>>> + */
>>> + return nwrite;
>>> +}
>>> +
>>> +/*
>>> + * mg5uart_inbyte_nonblocking_polled
>>> + *
>>> + * Console Termios polling input entry point.
>>> + */
>>> +
>>> +MG5UART_STATIC int mg5uart_inbyte_nonblocking_polled(
>>> + int minor
>>> +)
>>> +{
>>> + uint32_t pMG5UART;
>>> + uint32_t pMG5UART_port;
>>> + uint32_t status;
>>> + uint32_t tmp,shift;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> + pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> +
>>> + /* reset overrrun or framing errors */
>>> + status = MG5UART_GETREG(pMG5UART, MG5UART_STATUS_REGISTER) >> shift;
>>> +
>>> + if( (tmp = (status & 0x3)) )
>>> + {
>>> + MG5UART_SETREG(pMG5UART, MG5UART_STATUS_REGISTER, (tmp << shift)
>>>);
>>> + status = MG5UART_GETREG(pMG5UART, MG5UART_STATUS_REGISTER) >>
>>>shift;
>>> + }
>>> +
>>> + if ( status & MONGOOSEV_UART_RX_READY )
>>> + {
>>> + return (int) MG5UART_GETREG(pMG5UART_port, MG5UART_RX_BUFFER);
>>> + }
>>> + else
>>> + {
>>> + return -1;
>>> + }
>>> +}
>>> +
>>> +/*
>>> + * mg5uart_baud_rate
>>> + */
>>> +
>>> +MG5UART_STATIC int mg5uart_baud_rate(
>>> + int minor,
>>> + uint32_t baud,
>>> + uint32_t *code
>>> +)
>>> +{
>>> + uint32_t clock;
>>> + uint32_t tmp_code;
>>> + uint32_t baud_requested;
>>> +
>>> + baud_requested = baud & CBAUD;
>>> + if (!baud_requested)
>>> + baud_requested = B9600; /* default to 9600 baud */
>>> +
>>> + baud_requested = rtems_termios_baud_to_number( baud_requested );
>>> +
>>> + clock = (uint32_t) Console_Port_Tbl[minor]->ulClock;
>>> + if (!clock)
>>> + rtems_fatal_error_occurred(RTEMS_INVALID_NUMBER);
>>> +
>>> + /*
>>> + * Formula is Code = round(ClockFrequency / Baud - 1).
>>> + *
>>> + * Since this is integer math, we will divide by twice the baud and
>>> + * check the remaining odd bit.
>>> + */
>>> +
>>> + tmp_code = (clock / baud_requested) - 1;
>>> +
>>> + /*
>>> + * From section 12.7, "Keep C>100 for best receiver operation."
>>> + * That is 100 cycles which is not a lot of instructions. It is
>>> + * reasonable to think that the Mongoose-V could not keep
>>> + * up with C < 100.
>>> + */
>>> +
>>> + if ( tmp_code < 100 )
>>> + return RTEMS_INVALID_NUMBER;
>>> +
>>> + /*
>>> + * upper word is receiver baud and lower word is transmitter baud
>>> + */
>>> +
>>> + *code = (tmp_code << 16) | tmp_code;
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +
>>> +
>>> +
>>> +/*
>>> + * mg5uart_enable_interrupts
>>> + *
>>> + * This function enables specific interrupt sources on the DUART.
>>> + */
>>> +
>>> +MG5UART_STATIC void mg5uart_enable_interrupts(
>>> + int minor,
>>> + int mask
>>> +)
>>> +{
>>> + uint32_t pMG5UART;
>>> + uint32_t maskSave;
>>> + uint32_t shift;
>>> + rtems_interrupt_level Irql;
>>> +
>>> + pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> +
>>> + /*
>>> + * Enable interrupts on RX and TX -- not break
>>> + */
>>> +
>>> + if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> + shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> + else
>>> + shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> +
>>> +
>>> + rtems_interrupt_disable(Irql);
>>> +
>>> + maskSave = MG5UART_GETREG( pMG5UART,
>>>MG5UART_INTERRUPT_MASK_REGISTER );
>>> +
>>> + MG5UART_SETREG(
>>> + pMG5UART,
>>> + MG5UART_INTERRUPT_MASK_REGISTER,
>>> + (maskSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS << shift)) | (mask
>>><< shift) );
>>> +
>>> + rtems_interrupt_enable(Irql);
>>> +}
>>> +
>>> +
>>> +
>>> +/*
>>> + * Flow control is only supported when using interrupts
>>> + */
>>> +
>>> +const console_fns mg5uart_fns =
>>> +{
>>> + libchip_serial_default_probe, /* deviceProbe */
>>> + mg5uart_open, /* deviceFirstOpen */
>>> + NULL, /* deviceLastClose */
>>> + NULL, /* deviceRead */
>>> + mg5uart_write_support_int, /* deviceWrite */
>>> + mg5uart_initialize_interrupts, /* deviceInitialize */
>>> + mg5uart_write_polled, /* deviceWritePolled */
>>> + mg5uart_set_attributes, /* deviceSetAttributes */
>>> + TRUE /* deviceOutputUsesInterrupts */
>>> +};
>>> +
>>> +const console_fns mg5uart_fns_polled =
>>> +{
>>> + libchip_serial_default_probe, /* deviceProbe */
>>> + mg5uart_open, /* deviceFirstOpen */
>>> + mg5uart_close, /* deviceLastClose */
>>> + mg5uart_inbyte_nonblocking_polled, /* deviceRead */
>>> + mg5uart_write_support_polled, /* deviceWrite */
>>> + mg5uart_init, /* deviceInitialize */
>>> + mg5uart_write_polled, /* deviceWritePolled */
>>> + mg5uart_set_attributes, /* deviceSetAttributes */
>>> + FALSE, /* deviceOutputUsesInterrupts
>>>*/
>>> +};
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.h
>>>b/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.h
>>> new file mode 100644
>>> index 0000000..fa7bed6
>>> --- /dev/null
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart.h
>>> @@ -0,0 +1,98 @@
>>> +/*
>>> + *
>>> + * COPYRIGHT (c) 1989-1999.
>>> + * On-Line Applications Research Corporation (OAR).
>>> + *
>>> + * The license and distribution terms for this file may be
>>> + * found in the file LICENSE in this distribution or at
>>> + * http://www.rtems.org/license/LICENSE.
>>> + */
>>> +
>>> +#ifndef _MG5UART_H_
>>> +#define _MG5UART_H_
>>> +
>>> +#ifdef __cplusplus
>>> +extern "C" {
>>> +#endif
>>> +
>>> +/*
>>> + * This is the ASCII for "MG5U" which should be unique enough to
>>> + * distinguish this type of serial device from others.
>>> + */
>>> +
>>> +#define SERIAL_MG5UART 0x474D5535
>>> +
>>> +#define MG5UART_UART0 0
>>> +#define MG5UART_UART1 1
>>> +
>>> +/*
>>> + * These are just used in the interface between this driver and
>>> + * the read/write register routines when accessing the first
>>> + * control port. They are indices of registers from the bases.
>>> + */
>>> +
>>> +/* shared registers from peripheral base (i.e. from ulCtrlPort1) */
>>> +/*
>>> +#define MG5UART_COMMAND_REGISTER 0
>>> +#define MG5UART_STATUS_REGISTER 1
>>> +#define MG5UART_INTERRUPT_CAUSE_REGISTER 2
>>> +#define MG5UART_INTERRUPT_MASK_REGISTER 3
>>> +*/
>>> +
>>> +#define MG5UART_COMMAND_REGISTER 0
>>> +#define MG5UART_STATUS_REGISTER 0x04
>>> +#define MG5UART_INTERRUPT_CAUSE_REGISTER 0x08
>>> +#define MG5UART_INTERRUPT_MASK_REGISTER 0x0C
>>> +
>>> +/* port specific registers from uart base (i.e. from ulCtrlPort2) */
>>> +#define MG5UART_RX_BUFFER 0
>>> +#define MG5UART_TX_BUFFER 4
>>> +#define MG5UART_BAUD_RATE 8
>>> +
>>> +/*
>>> + * Interrupt mask values
>>> + */
>>> +
>>> +#define MG5UART_ENABLE_ALL_EXCEPT_TX MONGOOSEV_UART_ALL_RX_STATUS_BITS
>>> +
>>> +/* all rx ints on, but only tx ready. no need to also int on tx
>>>empty */
>>> +#define MG5UART_ENABLE_ALL (MONGOOSEV_UART_ALL_STATUS_BITS
>>>& ~MONGOOSEV_UART_TX_EMPTY)
>>> +
>>> +#define MG5UART_DISABLE_ALL 0x0000
>>> +
>>> +/*
>>> + * Assume vectors are sequential.
>>> + */
>>> +
>>> +#define MG5UART_IRQ_RX_FRAME_ERROR 0
>>> +#define MG5UART_IRQ_RX_OVERRUN_ERROR 1
>>> +#define MG5UART_IRQ_TX_EMPTY 2
>>> +#define MG5UART_IRQ_TX_READY 3
>>> +#define MG5UART_IRQ_RX_READY 4
>>> +/*
>>> + * Driver function table
>>> + */
>>> +
>>> +extern const console_fns mg5uart_fns;
>>> +extern const console_fns mg5uart_fns_polled;
>>> +
>>> +/*
>>> + * Default register access routines
>>> + */
>>> +
>>> +uint32_t mg5uart_get_register( /* registers are on 32-bit
>>>boundaries */
>>> + uint32_t ulCtrlPort, /* and accessed as word
>>> */
>>> + uint32_t ucRegNum
>>> +);
>>> +
>>> +void mg5uart_set_register(
>>> + uint32_t ulCtrlPort,
>>> + uint32_t ucRegNum,
>>> + uint32_t ucData
>>> +);
>>> +
>>> +#ifdef __cplusplus
>>> +}
>>> +#endif
>>> +
>>> +#endif /* _MG5UART_H_ */
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart_reg.c
>>>b/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart_reg.c
>>> new file mode 100644
>>> index 0000000..134695f
>>> --- /dev/null
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/console/mg5uart_reg.c
>>> @@ -0,0 +1,58 @@
>>> +/*
>>> + * This file contains a typical set of register access routines
>>>which may be
>>> + * used with the mg5uart chip if accesses to the chip are as follows:
>>> + *
>>> + * + registers are accessed as uint32_t 's
>>> + * + registers are only u32-aligned (no address gaps)
>>> + *
>>> + * COPYRIGHT (c) 1989-2001.
>>> + * On-Line Applications Research Corporation (OAR).
>>> + *
>>> + * The license and distribution terms for this file may be
>>> + * found in the file LICENSE in this distribution or at
>>> + * http://www.rtems.org/license/LICENSE.
>>> + */
>>> +
>>> +#include <rtems.h>
>>> +
>>> +#ifndef _MG5UART_MULTIPLIER
>>> +#define _MG5UART_MULTIPLIER 1
>>> +#define _MG5UART_NAME(_X) _X
>>> +#define _MG5UART_TYPE uint32_t
>>> +#endif
>>> +
>>> +#define CALCULATE_REGISTER_ADDRESS( _base, _reg ) \
>>> + (_MG5UART_TYPE *)((_base) + ((_reg) * _MG5UART_MULTIPLIER ))
>>> +
>>> +/*
>>> + * MG5UART Get Register Routine
>>> + */
>>> +
>>> +uint8_t _MG5UART_NAME(mg5uart_get_register)(
>>> + uint32_t ulCtrlPort,
>>> + uint8_t ucRegNum
>>> +)
>>> +{
>>> + _MG5UART_TYPE *port;
>>> +
>>> + port = CALCULATE_REGISTER_ADDRESS( ulCtrlPort, ucRegNum );
>>> +
>>> + return *port;
>>> +}
>>> +
>>> +/*
>>> + * MG5UART Set Register Routine
>>> + */
>>> +
>>> +void _MG5UART_NAME(mg5uart_set_register)(
>>> + uint32_t ulCtrlPort,
>>> + uint8_t ucRegNum,
>>> + uint8_t ucData
>>> +)
>>> +{
>>> + _MG5UART_TYPE *port;
>>> +
>>> + port = CALCULATE_REGISTER_ADDRESS( ulCtrlPort, ucRegNum );
>>> +
>>> + *port = ucData;
>>> +}
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/include/bsp.h
>>>b/c/src/lib/libbsp/mips/genmongoosev/include/bsp.h
>>> index da4c198..5146b7f 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/include/bsp.h
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/include/bsp.h
>>> @@ -28,7 +28,7 @@ extern "C" {
>>> #include <rtems/iosupp.h>
>>> #include <rtems/console.h>
>>> #include <rtems/clockdrv.h>
>>> -#include <libcpu/mongoose-v.h>
>>> +#include <bsp/mongoose-v.h>
>>>
>>> #define BSP_FEATURE_IRQ_EXTENSION
>>> #define BSP_SHARED_HANDLER_SUPPORT 1
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/include/mongoose-v.h
>>>b/c/src/lib/libbsp/mips/genmongoosev/include/mongoose-v.h
>>> new file mode 100644
>>> index 0000000..e69d25a
>>> --- /dev/null
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/include/mongoose-v.h
>>> @@ -0,0 +1,306 @@
>>> +/**
>>> + * @file
>>> + *
>>> + * MIPS Mongoose-V specific information
>>> + */
>>> +
>>> +/*
>>> + * COPYRIGHT (c) 1989-2012.
>>> + * On-Line Applications Research Corporation (OAR).
>>> + *
>>> + * The license and distribution terms for this file may be
>>> + * found in the file LICENSE in this distribution or at
>>> + * http://www.rtems.org/license/LICENSE.
>>> + */
>>> +
>>> +#ifndef __MONGOOSEV_h
>>> +#define __MONGOOSEV_h
>>> +
>>> +/*
>>> + * Macros to assist in accessing memory mapped Mongoose registers
>>> + */
>>> +
>>> +
>>> +#define MONGOOSEV_READ( _base ) \
>>> + ( *((volatile uint32_t*)(_base)) )
>>> +
>>> +#define MONGOOSEV_WRITE( _base, _value ) \
>>> + ( *((volatile uint32_t*)(_base)) = (_value) )
>>> +
>>> +#define MONGOOSEV_READ_REGISTER( _base, _register ) \
>>> + ( *((volatile uint32_t*)((_base) + (_register))) )
>>> +
>>> +#define MONGOOSEV_WRITE_REGISTER( _base, _register, _value ) \
>>> + ( *((volatile uint32_t*)((_base) + (_register))) = (_value) )
>>> +
>>> +
>>> +
>>> +
>>> +
>>> +/*
>>> + * Macros to read/write the Mongoose FPU control register.
>>> + */
>>> +
>>> +
>>> +
>>> +
>>> +/*
>>> + * BIU and DRAM Registers
>>> + */
>>> +
>>> +#define MONGOOSEV_BIU_CACHE_CONFIGURATION_REGISTER 0xFFFE0130
>>> +#define MONGOOSEV_DRAM_CONFIGURATION_REGISTER 0xFFFE0120
>>> +#define MONGOOSEV_REFRESH_TIMER_INITIAL_COUNTER_REGISTER 0xFFFE0010
>>> +#define MONGOOSEV_WAIT_STATE_CONFIGURATION_REGISTER_BASE 0xFFFE0100
>>> +
>>> +/*
>>> + * Peripheral Function Addresses
>>> + *
>>> + * NOTE: Status and Interrupt Cause use the same bits
>>> + */
>>> +
>>> +#define MONGOOSEV_PERIPHERAL_COMMAND_REGISTER
>>>0xFFFE0180
>>> +#define MONGOOSEV_PERIPHERAL_STATUS_REGISTER
>>>0xFFFE0184
>>> +#define MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_CAUSE_REGISTER
>>>0xFFFE0188
>>> +#define MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_MASK_REGISTER
>>>0xFFFE018C
>>> +
>>> +#define MONGOOSEV_WATCHDOG 0xBE000000
>>> +
>>> +/* UART Bits in Peripheral Command Register Bits (TX/RX tied together
>>>here) */
>>> +#define MONGOOSEV_UART_CMD_RESET_BOTH_PORTS 0x0001
>>> +#define MONGOOSEV_UART_CMD_LOOPBACK_CTSN 0x0002
>>> +#define MONGOOSEV_UART_CMD_LOOPBACK_RXTX 0x0004
>>> +
>>> +#define MONGOOSEV_UART_CMD_RX_ENABLE 0x001
>>> +#define MONGOOSEV_UART_CMD_RX_DISABLE 0x000
>>> +#define MONGOOSEV_UART_CMD_TX_ENABLE 0x002
>>> +#define MONGOOSEV_UART_CMD_TX_DISABLE 0x000
>>> +#define MONGOOSEV_UART_CMD_TX_READY 0x004
>>> +#define MONGOOSEV_UART_CMD_PARITY_ENABLE 0x008
>>> +#define MONGOOSEV_UART_CMD_PARITY_DISABLE 0x000
>>> +#define MONGOOSEV_UART_CMD_PARITY_EVEN 0x010
>>> +#define MONGOOSEV_UART_CMD_PARITY_ODD 0x000
>>> +
>>> +#define MONGOOSEV_UART0_CMD_SHIFT 5
>>> +#define MONGOOSEV_UART1_CMD_SHIFT 11
>>> +
>>> +#define MONGOOSEV_UART_CMD_TX_ENABLE_0 \
>>> + (MONGOOSEV_UART_CMD_TX_ENABLE << MONGOOSEV_UART0_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_RX_ENABLE_0 \
>>> + (MONGOOSEV_UART_CMD_RX_ENABLE << MONGOOSEV_UART0_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_TX_READY_0 \
>>> + (MONGOOSEV_UART_CMD_TX_READY << MONGOOSEV_UART0_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_ENABLE_0 \
>>> + (MONGOOSEV_UART_CMD_PARITY_ENABLE <<
>>>MONGOOSEV_UART0_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_DISABLE_0 \
>>> + (MONGOOSEV_UART_CMD_PARITY_DISABLE <<
>>>MONGOOSEV_UART0_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_EVEN_0 \
>>> + (MONGOOSEV_UART_CMD_PARITY_EVEN << MONGOOSEV_UART0_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_ODD_0 \
>>> + (MONGOOSEV_UART_CMD_PARITY_ODD << MONGOOSEV_UART0_CMD_SHIFT)
>>> +
>>> +#define MONGOOSEV_UART_CMD_TX_ENABLE_1 \
>>> + (MONGOOSEV_UART_CMD_TX_ENABLE << MONGOOSEV_UART1_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_RX_ENABLE_1 \
>>> + (MONGOOSEV_UART_CMD_RX_ENABLE << MONGOOSEV_UART1_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_TX_READY_1 \
>>> + (MONGOOSEV_UART_CMD_TX_READY << MONGOOSEV_UART1_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_ENABLE_1 \
>>> + (MONGOOSEV_UART_CMD_PARITY_ENABLE <<
>>>MONGOOSEV_UART1_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_DISABLE_1 \
>>> + (MONGOOSEV_UART_CMD_PARITY_DISABLE <<
>>>MONGOOSEV_UART1_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_EVEN_1 \
>>> + (MONGOOSEV_UART_CMD_PARITY_EVEN << MONGOOSEV_UART1_CMD_SHIFT)
>>> +#define MONGOOSEV_UART_CMD_PARITY_ODD_1 \
>>> + (MONGOOSEV_UART_CMD_PARITY_ODD << MONGOOSEV_UART1_CMD_SHIFT)
>>> +
>>> +/* UART Bits in Peripheral Status and Interrupt Cause Register */
>>> +#define MONGOOSEV_UART_RX_FRAME_ERROR 0x0001
>>> +#define MONGOOSEV_UART_RX_OVERRUN_ERROR 0x0002
>>> +#define MONGOOSEV_UART_TX_EMPTY 0x0004
>>> +#define MONGOOSEV_UART_TX_READY 0x0008
>>> +#define MONGOOSEV_UART_RX_READY 0x0010
>>> +
>>> +#define MONGOOSEV_UART_ALL_RX_STATUS_BITS 0x0013
>>> +#define MONGOOSEV_UART_ALL_STATUS_BITS 0x001F
>>> +
>>> +/*
>>> + * The Peripheral Interrupt Status, Cause, and Mask registers have
>>>the
>>> + * same bit assignments although some revisions of the document have
>>> + * the Cause and Status registers incorrect.
>>> + */
>>> +
>>> +#define MONGOOSEV_UART0_IRQ_SHIFT 11
>>> +#define MONGOOSEV_UART1_IRQ_SHIFT 17
>>> +
>>> +#define MONGOOSEV_UART_FRAME_ERROR_0 \
>>> + (MONGOOSEV_UART_FRAME_ERROR << MONGOOSEV_UART0_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_RX_OVERRUN_ERROR_0 \
>>> + (MONGOOSEV_UART_RX_OVERRUN_ERROR << MONGOOSEV_UART0_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_TX_EMPTY_0 \
>>> + (MONGOOSEV_UART_TX_EMPTY << MONGOOSEV_UART0_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_TX_READY_0 \
>>> + (MONGOOSEV_UART_TX_READY << MONGOOSEV_UART0_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_RX_READY_0 \
>>> + (MONGOOSEV_UART_RX_READY << MONGOOSEV_UART0_IRQ_SHIFT)
>>> +
>>> +#define MONGOOSEV_UART_FRAME_ERROR_1 \
>>> + (MONGOOSEV_UART_FRAME_ERROR << MONGOOSEV_UART1_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_RX_OVERRUN_ERROR_1 \
>>> + (MONGOOSEV_UART_RX_OVERRUN_ERROR << MONGOOSEV_UART1_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_TX_EMPTY_1 \
>>> + (MONGOOSEV_UART_TX_EMPTY << MONGOOSEV_UART1_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_TX_READY_1 \
>>> + (MONGOOSEV_UART_TX_READY << MONGOOSEV_UART1_IRQ_SHIFT)
>>> +#define MONGOOSEV_UART_RX_READY_1 \
>>> + (MONGOOSEV_UART_RX_READY << MONGOOSEV_UART1_IRQ_SHIFT)
>>> +
>>> +/*
>>> + * Bits in the Peripheral Interrupt Mask Register
>>> + */
>>> +
>>> +/*
>>> +** Interrupt Status/Cause/Mask register bits - from 31 to 0
>>> +*/
>>> +#define MONGOOSEV_EDAC_SERR_BIT 0x80000000
>>> +#define MONGOOSEV_EDAC_MERR_BIT 0x40000000
>>> +/* 29 - 24 reserved */
>>> +#define MONGOOSEV_MAVN_WRITE_ACCESS 0x00800000
>>> +#define MONGOOSEV_MAVN_READ_ACCESS 0x00400000
>>> +#define MONGOOSEV_UART_1_RX_READY 0x00200000
>>> +#define MONGOOSEV_UART_1_TX_READY 0x00100000
>>> +#define MONGOOSEV_UART_1_TX_EMPTY 0x00080000
>>> +#define MONGOOSEV_UART_1_RX_OVERRUN 0x00040000
>>> +#define MONGOOSEV_UART_1_FRAME_ERROR 0x00020000
>>> +#define MONGOOSEV_RESERVED_16 0x00010000
>>> +#define MONGOOSEV_UART_0_RX_READY 0x00008000
>>> +#define MONGOOSEV_UART_0_TX_READY 0x00004000
>>> +#define MONGOOSEV_UART_0_TX_EMPTY 0x00002000
>>> +#define MONGOOSEV_UART_0_RX_OVERRUN 0x00001000
>>> +#define MONGOOSEV_UART_0_FRAME_ERROR 0x00000800
>>> +#define MONGOOSEV_RESERVED_10 0x00000400
>>> +#define MONGOOSEV_EXTERN_INT_9 0x00000200
>>> +#define MONGOOSEV_EXTERN_INT_8 0x00000100
>>> +#define MONGOOSEV_EXTERN_INT_7 0x00000080
>>> +#define MONGOOSEV_EXTERN_INT_6 0x00000040
>>> +#define MONGOOSEV_EXTERN_INT_5 0x00000020
>>> +#define MONGOOSEV_EXTERN_INT_4 0x00000010
>>> +#define MONGOOSEV_EXTERN_INT_3 0x00000008
>>> +#define MONGOOSEV_EXTERN_INT_2 0x00000004
>>> +#define MONGOOSEV_EXTERN_INT_1 0x00000002
>>> +#define MONGOOSEV_EXTERN_INT_0 0x00000001
>>> +
>>> +
>>> +/*
>>> +** Peripheral Command bits (non-uart, those are defined above)
>>> +*/
>>> +#define MONGOOSEV_COMMAND_ENABLE_EDAC MONGOOSEV_EDAC_SERR_BIT
>>> +#define MONGOOSEV_COMMAND_OVERRIDE_EDAC MONGOOSEV_EDAC_MERR_BIT
>>> +
>>> +
>>> +
>>> +/*
>>> + * EDAC Registers
>>> + */
>>> +
>>> +#define MONGOOSEV_EDAC_ERROR_ADDRESS_REGISTER 0xFFFE0190
>>> +#define MONGOOSEV_EDAC_PARITY_TEST_MODE_REGISTER 0xFFFE0194
>>> +
>>> +/*
>>> + * MAVN Registers
>>> + */
>>> +
>>> +#define MONGOOSEV_MAVN_TEST_REGISTER 0xFFFE01B4
>>> +#define MONGOOSEV_MAVN_ACCESS_PRIVILEGE_REGISTER 0xFFFE01B8
>>> +#define MONGOOSEV_MAVN_ACCESS_VIOLATION_REGISTER 0xFFFE01BC
>>> +#define MONGOOSEV_MAVN_RANGE_0_REGISTER 0xFFFE01C0
>>> +#define MONGOOSEV_MAVN_RANGE_1_REGISTER 0xFFFE01C4
>>> +#define MONGOOSEV_MAVN_RANGE_2_REGISTER 0xFFFE01C8
>>> +#define MONGOOSEV_MAVN_RANGE_3_REGISTER 0xFFFE01CC
>>> +#define MONGOOSEV_MAVN_RANGE_4_REGISTER 0xFFFE01D0
>>> +#define MONGOOSEV_MAVN_RANGE_5_REGISTER 0xFFFE01D4
>>> +#define MONGOOSEV_MAVN_RANGE_6_REGISTER 0xFFFE01D8
>>> +#define MONGOOSEV_MAVN_RANGE_7_REGISTER 0xFFFE01DC
>>> +
>>> +/*
>>> + * Timer Base Addresses, Offsets, and Values
>>> + */
>>> +
>>> +#define MONGOOSEV_TIMER1_BASE 0xFFFE0000
>>> +#define MONGOOSEV_TIMER2_BASE 0xFFFE0008
>>> +
>>> +#define MONGOOSEV_TIMER_INITIAL_COUNTER_REGISTER 0
>>> +#define MONGOOSEV_TIMER_CONTROL_REGISTER 4
>>> +
>>> +/* Timer Control Register Constants */
>>> +#define MONGOOSEV_TIMER_CONTROL_COUNTER_ENABLE 0x04
>>> +#define MONGOOSEV_TIMER_CONTROL_INTERRUPT_ENABLE 0x02
>>> +#define MONGOOSEV_TIMER_CONTROL_TIMEOUT 0x01
>>> +
>>> +/*
>>> + * UART Base Addresses and Offsets
>>> + *
>>> + * Many bits in the peripheral command register are UART related
>>> + * and the bits are defined there.
>>> + */
>>> +
>>> +#define MONGOOSEV_UART0_BASE 0xFFFE01E8
>>> +#define MONGOOSEV_UART1_BASE 0xFFFE01F4
>>> +
>>> +#define MONGOOSEV_RX_BUFFER 0
>>> +#define MONGOOSEV_TX_BUFFER 4
>>> +#define MONGOOSEV_BAUD_RATE 8
>>> +
>>> +
>>> +/*
>>> + * Status Register Bits
>>> + */
>>> +
>>> +#define SR_CUMASK 0xf0000000 /* coproc usable bits */
>>> +#define SR_CU3 0x80000000 /* Coprocessor 3 usable */
>>> +#define SR_CU2 0x40000000 /* Coprocessor 2 usable */
>>> +#define SR_CU1 0x20000000 /* Coprocessor 1 usable */
>>> +#define SR_CU0 0x10000000 /* Coprocessor 0 usable */
>>> +#define SR_BEV 0x00400000 /* use boot exception vectors
>>>*/
>>> +#define SR_TS 0x00200000 /* TLB shutdown */
>>> +#define SR_PE 0x00100000 /* cache parity error */
>>> +#define SR_CM 0x00080000 /* cache miss */
>>> +#define SR_PZ 0x00040000 /* cache parity zero */
>>> +#define SR_SWC 0x00020000 /* swap cache */
>>> +#define SR_ISC 0x00010000 /* Isolate data cache */
>>> +#define SR_IMASK 0x0000ff00 /* Interrupt mask */
>>> +#define SR_IMASK8 0x00000000 /* mask level 8 */
>>> +#define SR_IMASK7 0x00008000 /* mask level 7 */
>>> +#define SR_IMASK6 0x0000c000 /* mask level 6 */
>>> +#define SR_IMASK5 0x0000e000 /* mask level 5 */
>>> +#define SR_IMASK4 0x0000f000 /* mask level 4 */
>>> +#define SR_IMASK3 0x0000f800 /* mask level 3 */
>>> +#define SR_IMASK2 0x0000fc00 /* mask level 2 */
>>> +#define SR_IMASK1 0x0000fe00 /* mask level 1 */
>>> +#define SR_IMASK0 0x0000ff00 /* mask level 0 */
>>> +
>>> +#define SR_IBIT8 0x00008000 /* bit level 8 */
>>> +#define SR_IBIT7 0x00004000 /* bit level 7 */
>>> +#define SR_IBIT6 0x00002000 /* bit level 6 */
>>> +#define SR_IBIT5 0x00001000 /* bit level 5 */
>>> +#define SR_IBIT4 0x00000800 /* bit level 4 */
>>> +#define SR_IBIT3 0x00000400 /* bit level 3 */
>>> +#define SR_IBIT2 0x00000200 /* bit level 2 */
>>> +#define SR_IBIT1 0x00000100 /* bit level 1 */
>>> +
>>> +#define SR_KUO 0x00000020 /* old kernel/user, 0 => k, 1
>>>=> u */
>>> +#define SR_IEO 0x00000010 /* old interrupt enable, 1 =>
>>>enable */
>>> +#define SR_KUP 0x00000008 /* prev kernel/user, 0 => k, 1
>>>=> u */
>>> +#define SR_IEP 0x00000004 /* prev interrupt enable, 1 =>
>>>enable */
>>> +#define SR_KUC 0x00000002 /* cur kernel/user, 0 => k, 1
>>>=> u */
>>> +#define SR_IEC 0x00000001 /* cur interrupt enable, 1 =>
>>>enable */
>>> +#define SR_KUMSK (SR_KUO|SR_IEO|SR_KUP|SR_IEP|SR_KUC|SR_IEC)
>>> +
>>> +#define SR_IMASKSHIFT 8
>>> +
>>> +
>>> +
>>> +#define MONGOOSEV_IC_SIZE 0x1000 /* instruction cache =
>>>4Kbytes */
>>> +#define MONGOOSEV_DC_SIZE 0x800 /* data cache 2Kbytes
>>>*/
>>> +
>>> +#endif
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/irq/vectorisrs.c
>>>b/c/src/lib/libbsp/mips/genmongoosev/irq/vectorisrs.c
>>> index 8a23643..b7210f7 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/irq/vectorisrs.c
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/irq/vectorisrs.c
>>> @@ -15,7 +15,7 @@
>>>
>>> #include <rtems.h>
>>> #include <stdlib.h>
>>> -#include <libcpu/mongoose-v.h>
>>> +#include <bsp/mongoose-v.h>
>>>
>>> #include <rtems/mips/iregdef.h>
>>> #include <rtems/mips/idtcpu.h>
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/preinstall.am
>>>b/c/src/lib/libbsp/mips/genmongoosev/preinstall.am
>>> index f11c87a..e5988a4 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/preinstall.am
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/preinstall.am
>>> @@ -69,6 +69,26 @@ $(PROJECT_INCLUDE)/bsp/bootcard.h:
>>>../../shared/include/bootcard.h $(PROJECT_INC
>>> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/bootcard.h
>>> PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/bootcard.h
>>>
>>> +$(PROJECT_INCLUDE)/bsp/lr33000.h: include/lr33000.h
>>>$(PROJECT_INCLUDE)/bsp/$(dirstamp)
>>> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/lr33000.h
>>> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/lr33000.h
>>> +
>>> +$(PROJECT_INCLUDE)/bsp/lr333x0.h: include/lr333x0.h
>>>$(PROJECT_INCLUDE)/bsp/$(dirstamp)
>>> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/lr333x0.h
>>> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/lr333x0.h
>>> +
>>> +$(PROJECT_INCLUDE)/bsp/mongoose-v.h: include/mongoose-v.h
>>>$(PROJECT_INCLUDE)/bsp/$(dirstamp)
>>> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/mongoose-v.h
>>> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/mongoose-v.h
>>> +
>>> +$(PROJECT_INCLUDE)/bsp/r3000.h: include/r3000.h
>>>$(PROJECT_INCLUDE)/bsp/$(dirstamp)
>>> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/r3000.h
>>> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/r3000.h
>>> +
>>> +$(PROJECT_INCLUDE)/bsp/mg5uart.h: console/mg5uart.h
>>>$(PROJECT_INCLUDE)/bsp/$(dirstamp)
>>> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/mg5uart.h
>>> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/mg5uart.h
>>> +
>>> $(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h
>>>$(PROJECT_INCLUDE)/$(dirstamp)
>>> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
>>> PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c
>>>b/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c
>>> index 744dd69..a8dd2cb 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c
>>> @@ -23,7 +23,7 @@
>>> #include <string.h>
>>>
>>> #include <bsp.h>
>>> -#include <libcpu/mongoose-v.h>
>>> +#include <bsp/mongoose-v.h>
>>> #include <libcpu/isr_entries.h>
>>> #include <bsp/irq-generic.h>
>>>
>>> diff --git a/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c
>>>b/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c
>>> index 5f6ec0d..481774e 100644
>>> --- a/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c
>>> +++ b/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c
>>> @@ -11,7 +11,7 @@
>>>
>>> #include <rtems.h>
>>> #include <rtems/bspIo.h>
>>> -#include <libcpu/mongoose-v.h>
>>> +#include <bsp/mongoose-v.h>
>>> #include "gdb_if.h"
>>>
>>> #include <rtems/libio.h>
>>> diff --git a/c/src/lib/libcpu/mips/Makefile.am
>>>b/c/src/lib/libcpu/mips/Makefile.am
>>> index 6dc6258..e4dd7ca 100644
>>> --- a/c/src/lib/libcpu/mips/Makefile.am
>>> +++ b/c/src/lib/libcpu/mips/Makefile.am
>>> @@ -31,10 +31,6 @@ if tx49
>>> interrupts_CPPFLAGS = -DTX49
>>> endif
>>>
>>> -if mongoosev
>>> -interrupts_CPPFLAGS = -DMONGOOSEV
>>> -endif
>>> -
>>> noinst_PROGRAMS += shared/interrupts.rel
>>> shared_interrupts_rel_SOURCES = shared/interrupts/installisrentries.c
>>>\
>>> shared/interrupts/isr_entries.S shared/interrupts/isr_entries.h
>>> @@ -42,23 +38,6 @@ shared_interrupts_rel_CPPFLAGS = $(AM_CPPFLAGS)
>>>$(interrupts_CPPFLAGS)
>>> shared_interrupts_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
>>> include_libcpu_HEADERS += shared/interrupts/isr_entries.h
>>>
>>> -EXTRA_DIST += mongoosev/README
>>> -EXTRA_DIST += mongoosev/duart/README.mguart
>>> -if mongoosev
>>> -include_libcpu_HEADERS += mongoosev/include/mongoose-v.h
>>> -
>>> -## mongoosev/duart
>>> -include_libchipdir = $(includedir)/libchip
>>> -include_libchip_HEADERS = mongoosev/duart/mg5uart.h
>>> -
>>> -noinst_PROGRAMS += mongoosev/duart.rel
>>> -mongoosev_duart_rel_SOURCES = mongoosev/duart/mg5uart.c \
>>> - mongoosev/duart/mg5uart.h mongoosev/duart/mg5uart_reg.c
>>> -mongoosev_duart_rel_CPPFLAGS = $(AM_CPPFLAGS)
>>> -mongoosev_duart_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
>>> -
>>> -endif
>>> -
>>> if tx39
>>> include_libcpu_HEADERS += tx39/include/tx3904.h
>>> endif
>>> diff --git a/c/src/lib/libcpu/mips/mongoosev/duart/README.mguart
>>>b/c/src/lib/libcpu/mips/mongoosev/duart/README.mguart
>>> deleted file mode 100644
>>> index 8073ab7..0000000
>>> --- a/c/src/lib/libcpu/mips/mongoosev/duart/README.mguart
>>> +++ /dev/null
>>> @@ -1,101 +0,0 @@
>>> -Configuration Table Use
>>> -=======================
>>> -
>>> -sDeviceName
>>> -
>>> - The name of this device.
>>> -
>>> -deviceType
>>> -
>>> - This field must be SERIAL_MG5UART.
>>> -
>>> -pDeviceFns
>>> -
>>> - The device interface control table. This may be:
>>> - + mg5uart_fns for interrupt driven IO
>>> - + mg5uart_fns_polled for polled IO
>>> -
>>> -deviceProbe
>>> -
>>> - This is the address of the routine which probes to see if the
>>>device
>>> - is present.
>>> -
>>> -pDeviceFlow
>>> -
>>> - This field is ignored as hardware flow control is not currently
>>>supported.
>>> -
>>> -ulMargin
>>> -
>>> - This is currently unused.
>>> -
>>> -ulHysteresis
>>> -
>>> - This is currently unused.
>>> -
>>> -pDeviceParams
>>> -
>>> - This is set to the default settings.
>>> -
>>> -ulCtrlPort1
>>> -
>>> - This field is the address of the command register shared by both
>>>ports.
>>> -
>>> -ulCtrlPort2
>>> -
>>> - This field is the address of the port being used.
>>> -
>>> -ulDataPort
>>> -
>>> - This field is set to MG5UART_PORTA or MG5UART_PORTB.
>>> -
>>> -getRegister
>>> -setRegister
>>> -
>>> - These do NOT follow standard conventions and are ignored.
>>> - The register address routines are hard-coded as this is
>>> - an on-CPU part and assumed to provide a 32-bit wide interface.
>>> -
>>> -getData
>>> -
>>> - This is address of the RX buffer register.
>>> -
>>> -setData
>>> -
>>> - This is address of the TX buffer register.
>>> -
>>> -ulClock
>>> -
>>> - baudRate Clock
>>> -
>>> -ulIntVector
>>> -
>>> - This is the interrupt vector number associated with this chip.
>>> -
>>> -Example:
>>> -
>>> -#if (CONSOLE_USE_INTERRUPTS)
>>> -#define MG5UART_FUNCTIONS &mg5uart_fns
>>> -#else
>>> -#define MG5UART_FUNCTIONS &mg5uart_fns_polled
>>> -#endif
>>> -
>>> -{
>>> - "/dev/com0", /* sDeviceName */
>>> - SERIAL_MG5UART, /* deviceType */
>>> - MG5UART_FUNCTIONS, /* pDeviceFns */
>>> - NULL, /* deviceProbe, assume it
>>>is there */
>>> - NULL, /* pDeviceFlow */
>>> - 16, /* ulMargin */
>>> - 8, /* ulHysteresis */
>>> - (void *) NULL, /* NULL */ /* pDeviceParams */
>>> - MONGOOSEV_PERIPHERAL_COMMAND_REGISTER, /* ulCtrlPort1 */
>>> - MONGOOSEV_UART0_BASE, /* ulCtrlPort2 */
>>> - MG5UART_UART0, /* ulDataPort */
>>> - mg5uart_get_register, /* getRegister */
>>> - mg5uart_set_register, /* setRegister */
>>> - NULL, /* unused */ /* getData */
>>> - NULL, /* unused */ /* setData */
>>> - 12000000, /* ulClock */
>>> - MONGOOSEV_IRQ_UART0_RX_FRAME_ERROR /* ulIntVector -- base for
>>>port */
>>> -}
>>> -
>>> diff --git a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c
>>>b/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c
>>> deleted file mode 100644
>>> index 50f6586..0000000
>>> --- a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c
>>> +++ /dev/null
>>> @@ -1,917 +0,0 @@
>>> -/**
>>> - * @file
>>> - *
>>> - * This file contains the termios TTY driver for the UART found
>>> - * on the Synova Mongoose-V.
>>> - */
>>> -
>>> -/*
>>> - * COPYRIGHT (c) 1989-2012.
>>> - * On-Line Applications Research Corporation (OAR).
>>> - *
>>> - * The license and distribution terms for this file may be
>>> - * found in the file LICENSE in this distribution or at
>>> - * http://www.rtems.org/license/LICENSE.
>>> - */
>>> -
>>> -#include <rtems.h>
>>> -#include <rtems/libio.h>
>>> -#include <rtems/score/sysstate.h>
>>> -#include <stdlib.h>
>>> -
>>> -#include <libchip/serial.h>
>>> -#include <libchip/mg5uart.h>
>>> -#include <libchip/sersupp.h>
>>> -#include <libcpu/mongoose-v.h>
>>> -
>>> -#include <bsp/irq.h>
>>> -#include <bsp.h>
>>> -
>>> -/*
>>> - * Indices of registers
>>> - */
>>> -
>>> -/*
>>> - * Per chip context control
>>> - */
>>> -
>>> -typedef struct _mg5uart_context
>>> -{
>>> - int mate;
>>> -} mg5uart_context;
>>> -
>>> -/*
>>> - * Define MG5UART_STATIC to nothing while debugging so the entry
>>>points
>>> - * will show up in the symbol table.
>>> - */
>>> -
>>> -#define MG5UART_STATIC
>>> -
>>> -/* #define MG5UART_STATIC static */
>>> -
>>> -
>>> -
>>> -#define MG5UART_SETREG( _base, _register, _value ) \
>>> - MONGOOSEV_WRITE_REGISTER( _base, _register, _value )
>>> -
>>> -#define MG5UART_GETREG( _base, _register ) \
>>> - MONGOOSEV_READ_REGISTER( _base, _register )
>>> -
>>> -
>>> -/*
>>> - * Console Device Driver Support Functions
>>> - */
>>> -
>>> -MG5UART_STATIC int mg5uart_baud_rate(
>>> - int minor,
>>> - uint32_t baud,
>>> - uint32_t *code
>>> -);
>>> -
>>> -MG5UART_STATIC void mg5uart_enable_interrupts(
>>> - int minor,
>>> - int mask
>>> -);
>>> -
>>> -/*
>>> - * mg5uart_isr_XXX
>>> - *
>>> - * This is the single interrupt entry point which parcels interrupts
>>> - * out to the handlers for specific sources and makes sure that the
>>> - * shared handler gets the right arguments.
>>> - *
>>> - * NOTE: Yes .. this is ugly but it provides 5 interrupt source
>>> - * wrappers which are nearly functionally identical.
>>> - */
>>> -
>>> -
>>> -extern void mips_default_isr(int vector);
>>> -
>>> -#define __ISR(_TYPE, _OFFSET) \
>>> - MG5UART_STATIC void mg5uart_process_isr_ ## _TYPE ( \
>>> - int minor \
>>> - ); \
>>> - \
>>> - MG5UART_STATIC rtems_isr mg5uart_isr_ ## _TYPE ( \
>>> - void *arg \
>>> - ) \
>>> - { \
>>> - rtems_vector_number vector = (rtems_vector_number) arg; \
>>> - int minor; \
>>> - \
>>> - for(minor=0 ; minor<Console_Port_Count ; minor++) { \
>>> - if( Console_Port_Tbl[minor]->deviceType == SERIAL_MG5UART && \
>>> - vector == Console_Port_Tbl[minor]->ulIntVector + _OFFSET )
>>>{ \
>>> - mg5uart_process_isr_ ## _TYPE (minor); \
>>> - return; \
>>> - } \
>>> - } \
>>> - mips_default_isr( vector ); \
>>> - }
>>> -
>>> -__ISR(rx_frame_error, MG5UART_IRQ_RX_FRAME_ERROR)
>>> -__ISR(rx_overrun_error, MG5UART_IRQ_RX_OVERRUN_ERROR)
>>> -__ISR(tx_empty, MG5UART_IRQ_TX_EMPTY)
>>> -__ISR(tx_ready, MG5UART_IRQ_TX_READY)
>>> -__ISR(rx_ready, MG5UART_IRQ_RX_READY)
>>> -
>>> -/*
>>> - * mg5uart_set_attributes
>>> - *
>>> - * This function sets the UART channel to reflect the requested
>>>termios
>>> - * port settings.
>>> - */
>>> -
>>> -MG5UART_STATIC int mg5uart_set_attributes(
>>> - int minor,
>>> - const struct termios *t
>>> -)
>>> -{
>>> - uint32_t pMG5UART_port;
>>> - uint32_t pMG5UART;
>>> - uint32_t cmd, cmdSave;
>>> - uint32_t baudcmd;
>>> - uint32_t shift;
>>> - rtems_interrupt_level Irql;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - /*
>>> - * Set the baud rate
>>> - */
>>> -
>>> - if (mg5uart_baud_rate( minor, t->c_cflag, &baudcmd ) == -1)
>>> - return -1;
>>> -
>>> - /*
>>> - * Base settings
>>> - */
>>> -
>>> - /*
>>> - * Base settings
>>> - */
>>> -
>>> - cmd = MONGOOSEV_UART_CMD_RX_ENABLE | MONGOOSEV_UART_CMD_TX_ENABLE;
>>> -
>>> - /*
>>> - * Parity
>>> - */
>>> -
>>> - if (t->c_cflag & PARENB) {
>>> - cmd |= MONGOOSEV_UART_CMD_PARITY_ENABLE;
>>> - if (t->c_cflag & PARODD)
>>> - cmd |= MONGOOSEV_UART_CMD_PARITY_ODD;
>>> - else
>>> - cmd |= MONGOOSEV_UART_CMD_PARITY_EVEN;
>>> - } else {
>>> - cmd |= MONGOOSEV_UART_CMD_PARITY_DISABLE;
>>> - }
>>> -
>>> - /*
>>> - * Character Size
>>> - */
>>> -
>>> - if (t->c_cflag & CSIZE) {
>>> - switch (t->c_cflag & CSIZE) {
>>> - case CS5:
>>> - case CS6:
>>> - case CS7:
>>> - return -1;
>>> - break;
>>> - case CS8:
>>> - /* Mongoose-V only supports CS8 */
>>> - break;
>>> -
>>> - }
>>> - } /* else default to CS8 */
>>> -
>>> - /*
>>> - * Stop Bits
>>> - */
>>> -
>>> -#if 0
>>> - if (t->c_cflag & CSTOPB) {
>>> - /* 2 stop bits not supported by Mongoose-V uart */
>>> - return -1;
>>> - }
>>> -#endif
>>> -
>>> - /*
>>> - * XXX what about CTS/RTS
>>> - */
>>> -
>>> - /* XXX */
>>> -
>>> - /*
>>> - * Now write the registers
>>> - */
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> -
>>> -
>>> -
>>> - rtems_interrupt_disable(Irql);
>>> -
>>> - cmdSave = MG5UART_GETREG( pMG5UART, MG5UART_COMMAND_REGISTER );
>>> -
>>> - MG5UART_SETREG( pMG5UART,
>>> - MG5UART_COMMAND_REGISTER,
>>> - (cmdSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS <<
>>>shift)) | (cmd << shift) );
>>> -
>>> - MG5UART_SETREG( pMG5UART_port, MG5UART_BAUD_RATE, baudcmd );
>>> -
>>> - rtems_interrupt_enable(Irql);
>>> - return 0;
>>> -}
>>> -
>>> -/*
>>> - * mg5uart_initialize_context
>>> - *
>>> - * This function sets the default values of the per port context
>>>structure.
>>> - */
>>> -
>>> -MG5UART_STATIC void mg5uart_initialize_context(
>>> - int minor,
>>> - mg5uart_context *pmg5uartContext
>>> -)
>>> -{
>>> - int port;
>>> - unsigned int pMG5UART;
>>> - unsigned int pMG5UART_port;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - pmg5uartContext->mate = -1;
>>> -
>>> - for (port=0 ; port<Console_Port_Count ; port++ ) {
>>> - if ( Console_Port_Tbl[port]->ulCtrlPort1 == pMG5UART &&
>>> - Console_Port_Tbl[port]->ulCtrlPort2 != pMG5UART_port ) {
>>> - pmg5uartContext->mate = port;
>>> - break;
>>> - }
>>> - }
>>> -
>>> -}
>>> -
>>> -/*
>>> - * mg5uart_init
>>> - *
>>> - * This function initializes the DUART to a quiecsent state.
>>> - */
>>> -
>>> -MG5UART_STATIC void mg5uart_init(int minor)
>>> -{
>>> - uint32_t pMG5UART_port;
>>> - uint32_t pMG5UART;
>>> - uint32_t cmdSave;
>>> - uint32_t shift;
>>> -
>>> - mg5uart_context *pmg5uartContext;
>>> -
>>> - pmg5uartContext = (mg5uart_context *)
>>>malloc(sizeof(mg5uart_context));
>>> -
>>> - Console_Port_Data[minor].pDeviceContext = (void *)pmg5uartContext;
>>> -
>>> - mg5uart_initialize_context( minor, pmg5uartContext );
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> -
>>> - /*
>>> - * Disable the uart and leave this port disabled.
>>> - */
>>> -
>>> - cmdSave = MG5UART_GETREG(pMG5UART, MG5UART_COMMAND_REGISTER) &
>>>~(MONGOOSEV_UART_ALL_STATUS_BITS << shift);
>>> -
>>> - MG5UART_SETREG( pMG5UART, MG5UART_COMMAND_REGISTER, cmdSave );
>>> -
>>> - /*
>>> - * Disable interrupts on RX and TX for this port
>>> - */
>>> - mg5uart_enable_interrupts( minor, MG5UART_DISABLE_ALL );
>>> -}
>>> -
>>> -/*
>>> - * mg5uart_open
>>> - *
>>> - * This function opens a port for communication.
>>> - *
>>> - * Default state is 9600 baud, 8 bits, No parity, and 1 stop bit.
>>> - */
>>> -
>>> -MG5UART_STATIC int mg5uart_open(
>>> - int major,
>>> - int minor,
>>> - void *arg
>>> -)
>>> -{
>>> - uint32_t pMG5UART;
>>> - uint32_t pMG5UART_port;
>>> - uint32_t vector;
>>> - uint32_t cmd, cmdSave;
>>> - uint32_t baudcmd;
>>> - uint32_t shift;
>>> -
>>> - rtems_interrupt_level Irql;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> - vector = Console_Port_Tbl[minor]->ulIntVector;
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> -
>>> -
>>> - /* XXX default baud rate could be from configuration table */
>>> -
>>> - (void) mg5uart_baud_rate( minor, B19200, &baudcmd );
>>> -
>>> - /*
>>> - * Set the DUART channel to a default useable state
>>> - * B19200, 8Nx since there is no stop bit control.
>>> - */
>>> -
>>> - cmd = MONGOOSEV_UART_CMD_TX_ENABLE | MONGOOSEV_UART_CMD_RX_ENABLE;
>>> -
>>> - rtems_interrupt_disable(Irql);
>>> -
>>> - cmdSave = MG5UART_GETREG( pMG5UART, MG5UART_COMMAND_REGISTER );
>>> -
>>> - MG5UART_SETREG( pMG5UART_port, MG5UART_BAUD_RATE, baudcmd );
>>> -
>>> - MG5UART_SETREG( pMG5UART,
>>> - MG5UART_COMMAND_REGISTER,
>>> - cmd = (cmdSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS <<
>>>shift)) | (cmd << shift) );
>>> -
>>> - rtems_interrupt_enable(Irql);
>>> -
>>> - return RTEMS_SUCCESSFUL;
>>> -}
>>> -
>>> -/*
>>> - * mg5uart_close
>>> - *
>>> - * This function shuts down the requested port.
>>> - */
>>> -
>>> -MG5UART_STATIC int mg5uart_close(
>>> - int major,
>>> - int minor,
>>> - void *arg
>>> -)
>>> -{
>>> - uint32_t pMG5UART;
>>> - uint32_t pMG5UART_port;
>>> - uint32_t cmd, cmdSave;
>>> - uint32_t shift;
>>> - rtems_interrupt_level Irql;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - /*
>>> - * Disable interrupts from this channel and then disable it
>>>totally.
>>> - */
>>> -
>>> - /* XXX interrupts */
>>> -
>>> - cmd = MONGOOSEV_UART_CMD_TX_DISABLE | MONGOOSEV_UART_CMD_RX_DISABLE;
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_CMD_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_CMD_SHIFT;
>>> -
>>> -
>>> - rtems_interrupt_disable(Irql);
>>> - cmdSave = MG5UART_GETREG( pMG5UART, MG5UART_COMMAND_REGISTER );
>>> -
>>> - MG5UART_SETREG( pMG5UART,
>>> - MG5UART_COMMAND_REGISTER,
>>> - (cmdSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS <<
>>>shift)) | (cmd << shift) );
>>> - rtems_interrupt_enable(Irql);
>>> -
>>> - return(RTEMS_SUCCESSFUL);
>>> -}
>>> -
>>> -
>>> -
>>> -
>>> -/*
>>> - * mg5uart_write_polled
>>> - *
>>> - * This routine polls out the requested character.
>>> - */
>>> -
>>> -MG5UART_STATIC void mg5uart_write_polled(
>>> - int minor,
>>> - char c
>>> -)
>>> -{
>>> - uint32_t pMG5UART;
>>> - uint32_t pMG5UART_port;
>>> - uint32_t status;
>>> - int shift;
>>> - int timeout;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> -
>>> - /*
>>> - * wait for transmitter holding register to be empty
>>> - */
>>> - timeout = 2000;
>>> -
>>> - while( --timeout )
>>> - {
>>> - status = MG5UART_GETREG(pMG5UART, MG5UART_STATUS_REGISTER) >>
>>>shift;
>>> -
>>> - /*
>>> - if ( (status & (MONGOOSEV_UART_TX_READY |
>>>MONGOOSEV_UART_TX_EMPTY)) ==
>>> - (MONGOOSEV_UART_TX_READY | MONGOOSEV_UART_TX_EMPTY) )
>>> - break;
>>> - */
>>> -
>>> - if( (status & (MONGOOSEV_UART_TX_READY |
>>>MONGOOSEV_UART_TX_EMPTY)) )
>>> - break;
>>> -
>>> - /*
>>> - * Yield while we wait
>>> - */
>>> -
>>> -#if 0
>>> - if(_System_state_Is_up(_System_state_Get()))
>>> - {
>>> - rtems_task_wake_after(RTEMS_YIELD_PROCESSOR);
>>> - }
>>> -#endif
>>> - }
>>> -
>>> - /*
>>> - * transmit character
>>> - */
>>> -
>>> - MG5UART_SETREG(pMG5UART_port, MG5UART_TX_BUFFER, c);
>>> -}
>>> -
>>> -MG5UART_STATIC void mg5uart_process_isr_rx_error(
>>> - int minor,
>>> - uint32_t mask
>>> -)
>>> -{
>>> - uint32_t pMG5UART;
>>> - int shift;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> -
>>> - /* now clear the error */
>>> -
>>> - MG5UART_SETREG(
>>> - pMG5UART,
>>> - MG5UART_STATUS_REGISTER,
>>> - mask << shift );
>>> -}
>>> -
>>> -
>>> -MG5UART_STATIC void mg5uart_process_isr_rx_frame_error(
>>> - int minor
>>> -)
>>> -{
>>> - mg5uart_process_isr_rx_error( minor, MONGOOSEV_UART_RX_FRAME_ERROR
>>>);
>>> -}
>>> -
>>> -MG5UART_STATIC void mg5uart_process_isr_rx_overrun_error(
>>> - int minor
>>> -)
>>> -{
>>> - mg5uart_process_isr_rx_error( minor,
>>>MONGOOSEV_UART_RX_OVERRUN_ERROR );
>>> -}
>>> -
>>> -
>>> -
>>> -
>>> -
>>> -
>>> -
>>> -
>>> -MG5UART_STATIC void mg5uart_process_tx_isr(
>>> - int minor,
>>> - uint32_t source
>>> -)
>>> -{
>>> - uint32_t pMG5UART;
>>> - int shift;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> -
>>> - mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL_EXCEPT_TX);
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> -
>>> - MG5UART_SETREG(
>>> - pMG5UART,
>>> - MG5UART_STATUS_REGISTER,
>>> - source << shift );
>>> -
>>> - if( rtems_termios_dequeue_characters(
>>>Console_Port_Data[minor].termios_data, 1) )
>>> - {
>>> - mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL);
>>> - return;
>>> - }
>>> -
>>> - /*
>>> - * There are no more characters to transmit. The tx interrupts
>>>are be cleared
>>> - * by writing data to the uart, so just disable the tx interrupt
>>>sources.
>>> - */
>>> -
>>> - Console_Port_Data[minor].bActive = FALSE;
>>> -
>>> - /* mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL_EXCEPT_TX);
>>>*/
>>> -}
>>> -
>>> -
>>> -
>>> -MG5UART_STATIC void mg5uart_process_isr_tx_empty(
>>> - int minor
>>> -)
>>> -{
>>> - /* mg5uart_process_tx_isr( minor, MONGOOSEV_UART_TX_EMPTY ); */
>>> -}
>>> -
>>> -MG5UART_STATIC void mg5uart_process_isr_tx_ready(
>>> - int minor
>>> -)
>>> -{
>>> - mg5uart_process_tx_isr( minor, MONGOOSEV_UART_TX_READY );
>>> -}
>>> -
>>> -
>>> -
>>> -
>>> -
>>> -MG5UART_STATIC void mg5uart_process_isr_rx_ready(
>>> - int minor
>>> -)
>>> -{
>>> - uint32_t pMG5UART_port;
>>> - char c;
>>> -
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - /* reading the RX buffer automatically resets the interrupt flag */
>>> -
>>> - c = (char) MG5UART_GETREG(pMG5UART_port, MG5UART_RX_BUFFER);
>>> -
>>> - rtems_termios_enqueue_raw_characters(
>>> - Console_Port_Data[minor].termios_data,
>>> - &c, 1 );
>>> -}
>>> -
>>> -static rtems_irq_connect_data mg5uart_rx_frame_error_cd = { \
>>> - 0, /* filled in at initialization */
>>> - mg5uart_isr_rx_frame_error, /* filled in at initialization */
>>> - NULL, /* (void *) minor */
>>> - NULL,
>>> - NULL,
>>> - NULL
>>> -};
>>> -
>>> -static rtems_irq_connect_data mg5uart_rx_overrun_error_cd = { \
>>> - 0, /* filled in at initialization */
>>> - mg5uart_isr_rx_overrun_error, /* filled in at initialization */
>>> - NULL, /* (void *) minor */
>>> - NULL,
>>> - NULL,
>>> - NULL
>>> -};
>>> -
>>> -static rtems_irq_connect_data mg5uart_tx_empty_cd = { \
>>> - 0, /* filled in at initialization */
>>> - mg5uart_isr_tx_empty, /* filled in at initialization */
>>> - NULL, /* (void *) minor */
>>> - NULL,
>>> - NULL,
>>> - NULL
>>> -};
>>> -
>>> -static rtems_irq_connect_data mg5uart_tx_ready_cd = { \
>>> - 0, /* filled in at initialization */
>>> - mg5uart_isr_tx_ready, /* filled in at initialization */
>>> - NULL, /* (void *) minor */
>>> - NULL,
>>> - NULL,
>>> - NULL
>>> -};
>>> -
>>> -static rtems_irq_connect_data mg5uart_rx_ready_cd = { \
>>> - 0, /* filled in at initialization */
>>> - mg5uart_isr_rx_ready, /* filled in at initialization */
>>> - NULL, /* (void *) minor */
>>> - NULL,
>>> - NULL,
>>> - NULL
>>> -};
>>> -
>>> -
>>> -/*
>>> - * mg5uart_initialize_interrupts
>>> - *
>>> - * This routine initializes the console's receive and transmit
>>> - * ring buffers and loads the appropriate vectors to handle the
>>>interrupts.
>>> - */
>>> -
>>> -MG5UART_STATIC void mg5uart_initialize_interrupts(int minor)
>>> -{
>>> - unsigned long v;
>>> - mg5uart_init(minor);
>>> -
>>> - Console_Port_Data[minor].bActive = FALSE;
>>> - v = Console_Port_Tbl[minor]->ulIntVector;
>>> -
>>> - mg5uart_rx_frame_error_cd.name = v + MG5UART_IRQ_RX_FRAME_ERROR;
>>> - mg5uart_rx_overrun_error_cd.name = v +
>>>MG5UART_IRQ_RX_OVERRUN_ERROR;
>>> - mg5uart_tx_empty_cd.name = v + MG5UART_IRQ_TX_EMPTY;
>>> - mg5uart_tx_ready_cd.name = v + MG5UART_IRQ_TX_READY;
>>> - mg5uart_rx_ready_cd.name = v + MG5UART_IRQ_RX_READY;
>>> -
>>> - mg5uart_rx_frame_error_cd.handle = (void
>>>*)mg5uart_rx_frame_error_cd.name;
>>> - mg5uart_rx_overrun_error_cd.handle = (void
>>>*)mg5uart_rx_overrun_error_cd.name;
>>> - mg5uart_tx_empty_cd.handle = (void
>>>*)mg5uart_tx_empty_cd.name;
>>> - mg5uart_tx_ready_cd.handle = (void
>>>*)mg5uart_tx_ready_cd.name;
>>> - mg5uart_rx_ready_cd.handle = (void
>>>*)mg5uart_rx_ready_cd.name;
>>> -
>>> -
>>> - BSP_install_rtems_irq_handler( &mg5uart_rx_frame_error_cd );
>>> - BSP_install_rtems_irq_handler( &mg5uart_rx_overrun_error_cd );
>>> - BSP_install_rtems_irq_handler( &mg5uart_tx_empty_cd );
>>> - BSP_install_rtems_irq_handler( &mg5uart_tx_ready_cd );
>>> - BSP_install_rtems_irq_handler( &mg5uart_rx_ready_cd );
>>> -
>>> - mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL_EXCEPT_TX);
>>> -}
>>> -
>>> -/*
>>> - * mg5uart_write_support_int
>>> - *
>>> - * Console Termios output entry point when using interrupt driven
>>>output.
>>> - */
>>> -
>>> -MG5UART_STATIC int mg5uart_write_support_int(
>>> - int minor,
>>> - const char *buf,
>>> - size_t len
>>> -)
>>> -{
>>> - uint32_t pMG5UART_port;
>>> -
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - /*
>>> - * We are using interrupt driven output and termios only sends us
>>> - * one character at a time.
>>> - */
>>> -
>>> - if ( !len )
>>> - return 0;
>>> -
>>> - /*
>>> - * Put the character out and enable interrupts if necessary.
>>> - */
>>> -
>>> - MG5UART_SETREG(pMG5UART_port, MG5UART_TX_BUFFER, *buf);
>>> -
>>> - if( Console_Port_Data[minor].bActive == FALSE )
>>> - {
>>> - Console_Port_Data[minor].bActive = TRUE;
>>> - mg5uart_enable_interrupts(minor, MG5UART_ENABLE_ALL);
>>> - }
>>> -
>>> - return 1;
>>> -}
>>> -
>>> -
>>> -
>>> -
>>> -/*
>>> - * mg5uart_write_support_polled
>>> - *
>>> - * Console Termios output entry point when using polled output.
>>> - *
>>> - */
>>> -
>>> -MG5UART_STATIC ssize_t mg5uart_write_support_polled(
>>> - int minor,
>>> - const char *buf,
>>> - size_t len
>>> -)
>>> -{
>>> - int nwrite = 0;
>>> -
>>> - /*
>>> - * poll each byte in the string out of the port.
>>> - */
>>> - while (nwrite < len)
>>> - {
>>> - mg5uart_write_polled(minor, *buf++);
>>> - nwrite++;
>>> - }
>>> -
>>> - /*
>>> - * return the number of bytes written.
>>> - */
>>> - return nwrite;
>>> -}
>>> -
>>> -/*
>>> - * mg5uart_inbyte_nonblocking_polled
>>> - *
>>> - * Console Termios polling input entry point.
>>> - */
>>> -
>>> -MG5UART_STATIC int mg5uart_inbyte_nonblocking_polled(
>>> - int minor
>>> -)
>>> -{
>>> - uint32_t pMG5UART;
>>> - uint32_t pMG5UART_port;
>>> - uint32_t status;
>>> - uint32_t tmp,shift;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> - pMG5UART_port = Console_Port_Tbl[minor]->ulCtrlPort2;
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> -
>>> - /* reset overrrun or framing errors */
>>> - status = MG5UART_GETREG(pMG5UART, MG5UART_STATUS_REGISTER) >> shift;
>>> -
>>> - if( (tmp = (status & 0x3)) )
>>> - {
>>> - MG5UART_SETREG(pMG5UART, MG5UART_STATUS_REGISTER, (tmp << shift)
>>>);
>>> - status = MG5UART_GETREG(pMG5UART, MG5UART_STATUS_REGISTER) >>
>>>shift;
>>> - }
>>> -
>>> - if ( status & MONGOOSEV_UART_RX_READY )
>>> - {
>>> - return (int) MG5UART_GETREG(pMG5UART_port, MG5UART_RX_BUFFER);
>>> - }
>>> - else
>>> - {
>>> - return -1;
>>> - }
>>> -}
>>> -
>>> -/*
>>> - * mg5uart_baud_rate
>>> - */
>>> -
>>> -MG5UART_STATIC int mg5uart_baud_rate(
>>> - int minor,
>>> - uint32_t baud,
>>> - uint32_t *code
>>> -)
>>> -{
>>> - uint32_t clock;
>>> - uint32_t tmp_code;
>>> - uint32_t baud_requested;
>>> -
>>> - baud_requested = baud & CBAUD;
>>> - if (!baud_requested)
>>> - baud_requested = B9600; /* default to 9600 baud */
>>> -
>>> - baud_requested = rtems_termios_baud_to_number( baud_requested );
>>> -
>>> - clock = (uint32_t) Console_Port_Tbl[minor]->ulClock;
>>> - if (!clock)
>>> - rtems_fatal_error_occurred(RTEMS_INVALID_NUMBER);
>>> -
>>> - /*
>>> - * Formula is Code = round(ClockFrequency / Baud - 1).
>>> - *
>>> - * Since this is integer math, we will divide by twice the baud and
>>> - * check the remaining odd bit.
>>> - */
>>> -
>>> - tmp_code = (clock / baud_requested) - 1;
>>> -
>>> - /*
>>> - * From section 12.7, "Keep C>100 for best receiver operation."
>>> - * That is 100 cycles which is not a lot of instructions. It is
>>> - * reasonable to think that the Mongoose-V could not keep
>>> - * up with C < 100.
>>> - */
>>> -
>>> - if ( tmp_code < 100 )
>>> - return RTEMS_INVALID_NUMBER;
>>> -
>>> - /*
>>> - * upper word is receiver baud and lower word is transmitter baud
>>> - */
>>> -
>>> - *code = (tmp_code << 16) | tmp_code;
>>> -
>>> - return 0;
>>> -}
>>> -
>>> -
>>> -
>>> -
>>> -/*
>>> - * mg5uart_enable_interrupts
>>> - *
>>> - * This function enables specific interrupt sources on the DUART.
>>> - */
>>> -
>>> -MG5UART_STATIC void mg5uart_enable_interrupts(
>>> - int minor,
>>> - int mask
>>> -)
>>> -{
>>> - uint32_t pMG5UART;
>>> - uint32_t maskSave;
>>> - uint32_t shift;
>>> - rtems_interrupt_level Irql;
>>> -
>>> - pMG5UART = Console_Port_Tbl[minor]->ulCtrlPort1;
>>> -
>>> - /*
>>> - * Enable interrupts on RX and TX -- not break
>>> - */
>>> -
>>> - if ( Console_Port_Tbl[minor]->ulDataPort == MG5UART_UART0 )
>>> - shift = MONGOOSEV_UART0_IRQ_SHIFT;
>>> - else
>>> - shift = MONGOOSEV_UART1_IRQ_SHIFT;
>>> -
>>> -
>>> - rtems_interrupt_disable(Irql);
>>> -
>>> - maskSave = MG5UART_GETREG( pMG5UART,
>>>MG5UART_INTERRUPT_MASK_REGISTER );
>>> -
>>> - MG5UART_SETREG(
>>> - pMG5UART,
>>> - MG5UART_INTERRUPT_MASK_REGISTER,
>>> - (maskSave & ~(MONGOOSEV_UART_ALL_STATUS_BITS << shift)) | (mask
>>><< shift) );
>>> -
>>> - rtems_interrupt_enable(Irql);
>>> -}
>>> -
>>> -
>>> -
>>> -/*
>>> - * Flow control is only supported when using interrupts
>>> - */
>>> -
>>> -const console_fns mg5uart_fns =
>>> -{
>>> - libchip_serial_default_probe, /* deviceProbe */
>>> - mg5uart_open, /* deviceFirstOpen */
>>> - NULL, /* deviceLastClose */
>>> - NULL, /* deviceRead */
>>> - mg5uart_write_support_int, /* deviceWrite */
>>> - mg5uart_initialize_interrupts, /* deviceInitialize */
>>> - mg5uart_write_polled, /* deviceWritePolled */
>>> - mg5uart_set_attributes, /* deviceSetAttributes */
>>> - TRUE /* deviceOutputUsesInterrupts */
>>> -};
>>> -
>>> -const console_fns mg5uart_fns_polled =
>>> -{
>>> - libchip_serial_default_probe, /* deviceProbe */
>>> - mg5uart_open, /* deviceFirstOpen */
>>> - mg5uart_close, /* deviceLastClose */
>>> - mg5uart_inbyte_nonblocking_polled, /* deviceRead */
>>> - mg5uart_write_support_polled, /* deviceWrite */
>>> - mg5uart_init, /* deviceInitialize */
>>> - mg5uart_write_polled, /* deviceWritePolled */
>>> - mg5uart_set_attributes, /* deviceSetAttributes */
>>> - FALSE, /* deviceOutputUsesInterrupts
>>>*/
>>> -};
>>> diff --git a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.h
>>>b/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.h
>>> deleted file mode 100644
>>> index fa7bed6..0000000
>>> --- a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.h
>>> +++ /dev/null
>>> @@ -1,98 +0,0 @@
>>> -/*
>>> - *
>>> - * COPYRIGHT (c) 1989-1999.
>>> - * On-Line Applications Research Corporation (OAR).
>>> - *
>>> - * The license and distribution terms for this file may be
>>> - * found in the file LICENSE in this distribution or at
>>> - * http://www.rtems.org/license/LICENSE.
>>> - */
>>> -
>>> -#ifndef _MG5UART_H_
>>> -#define _MG5UART_H_
>>> -
>>> -#ifdef __cplusplus
>>> -extern "C" {
>>> -#endif
>>> -
>>> -/*
>>> - * This is the ASCII for "MG5U" which should be unique enough to
>>> - * distinguish this type of serial device from others.
>>> - */
>>> -
>>> -#define SERIAL_MG5UART 0x474D5535
>>> -
>>> -#define MG5UART_UART0 0
>>> -#define MG5UART_UART1 1
>>> -
>>> -/*
>>> - * These are just used in the interface between this driver and
>>> - * the read/write register routines when accessing the first
>>> - * control port. They are indices of registers from the bases.
>>> - */
>>> -
>>> -/* shared registers from peripheral base (i.e. from ulCtrlPort1) */
>>> -/*
>>> -#define MG5UART_COMMAND_REGISTER 0
>>> -#define MG5UART_STATUS_REGISTER 1
>>> -#define MG5UART_INTERRUPT_CAUSE_REGISTER 2
>>> -#define MG5UART_INTERRUPT_MASK_REGISTER 3
>>> -*/
>>> -
>>> -#define MG5UART_COMMAND_REGISTER 0
>>> -#define MG5UART_STATUS_REGISTER 0x04
>>> -#define MG5UART_INTERRUPT_CAUSE_REGISTER 0x08
>>> -#define MG5UART_INTERRUPT_MASK_REGISTER 0x0C
>>> -
>>> -/* port specific registers from uart base (i.e. from ulCtrlPort2) */
>>> -#define MG5UART_RX_BUFFER 0
>>> -#define MG5UART_TX_BUFFER 4
>>> -#define MG5UART_BAUD_RATE 8
>>> -
>>> -/*
>>> - * Interrupt mask values
>>> - */
>>> -
>>> -#define MG5UART_ENABLE_ALL_EXCEPT_TX MONGOOSEV_UART_ALL_RX_STATUS_BITS
>>> -
>>> -/* all rx ints on, but only tx ready. no need to also int on tx
>>>empty */
>>> -#define MG5UART_ENABLE_ALL (MONGOOSEV_UART_ALL_STATUS_BITS
>>>& ~MONGOOSEV_UART_TX_EMPTY)
>>> -
>>> -#define MG5UART_DISABLE_ALL 0x0000
>>> -
>>> -/*
>>> - * Assume vectors are sequential.
>>> - */
>>> -
>>> -#define MG5UART_IRQ_RX_FRAME_ERROR 0
>>> -#define MG5UART_IRQ_RX_OVERRUN_ERROR 1
>>> -#define MG5UART_IRQ_TX_EMPTY 2
>>> -#define MG5UART_IRQ_TX_READY 3
>>> -#define MG5UART_IRQ_RX_READY 4
>>> -/*
>>> - * Driver function table
>>> - */
>>> -
>>> -extern const console_fns mg5uart_fns;
>>> -extern const console_fns mg5uart_fns_polled;
>>> -
>>> -/*
>>> - * Default register access routines
>>> - */
>>> -
>>> -uint32_t mg5uart_get_register( /* registers are on 32-bit
>>>boundaries */
>>> - uint32_t ulCtrlPort, /* and accessed as word
>>> */
>>> - uint32_t ucRegNum
>>> -);
>>> -
>>> -void mg5uart_set_register(
>>> - uint32_t ulCtrlPort,
>>> - uint32_t ucRegNum,
>>> - uint32_t ucData
>>> -);
>>> -
>>> -#ifdef __cplusplus
>>> -}
>>> -#endif
>>> -
>>> -#endif /* _MG5UART_H_ */
>>> diff --git a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart_reg.c
>>>b/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart_reg.c
>>> deleted file mode 100644
>>> index 134695f..0000000
>>> --- a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart_reg.c
>>> +++ /dev/null
>>> @@ -1,58 +0,0 @@
>>> -/*
>>> - * This file contains a typical set of register access routines
>>>which may be
>>> - * used with the mg5uart chip if accesses to the chip are as follows:
>>> - *
>>> - * + registers are accessed as uint32_t 's
>>> - * + registers are only u32-aligned (no address gaps)
>>> - *
>>> - * COPYRIGHT (c) 1989-2001.
>>> - * On-Line Applications Research Corporation (OAR).
>>> - *
>>> - * The license and distribution terms for this file may be
>>> - * found in the file LICENSE in this distribution or at
>>> - * http://www.rtems.org/license/LICENSE.
>>> - */
>>> -
>>> -#include <rtems.h>
>>> -
>>> -#ifndef _MG5UART_MULTIPLIER
>>> -#define _MG5UART_MULTIPLIER 1
>>> -#define _MG5UART_NAME(_X) _X
>>> -#define _MG5UART_TYPE uint32_t
>>> -#endif
>>> -
>>> -#define CALCULATE_REGISTER_ADDRESS( _base, _reg ) \
>>> - (_MG5UART_TYPE *)((_base) + ((_reg) * _MG5UART_MULTIPLIER ))
>>> -
>>> -/*
>>> - * MG5UART Get Register Routine
>>> - */
>>> -
>>> -uint8_t _MG5UART_NAME(mg5uart_get_register)(
>>> - uint32_t ulCtrlPort,
>>> - uint8_t ucRegNum
>>> -)
>>> -{
>>> - _MG5UART_TYPE *port;
>>> -
>>> - port = CALCULATE_REGISTER_ADDRESS( ulCtrlPort, ucRegNum );
>>> -
>>> - return *port;
>>> -}
>>> -
>>> -/*
>>> - * MG5UART Set Register Routine
>>> - */
>>> -
>>> -void _MG5UART_NAME(mg5uart_set_register)(
>>> - uint32_t ulCtrlPort,
>>> - uint8_t ucRegNum,
>>> - uint8_t ucData
>>> -)
>>> -{
>>> - _MG5UART_TYPE *port;
>>> -
>>> - port = CALCULATE_REGISTER_ADDRESS( ulCtrlPort, ucRegNum );
>>> -
>>> - *port = ucData;
>>> -}
>>> diff --git a/c/src/lib/libcpu/mips/mongoosev/include/mongoose-v.h
>>>b/c/src/lib/libcpu/mips/mongoosev/include/mongoose-v.h
>>> deleted file mode 100644
>>> index b8ded3d..0000000
>>> --- a/c/src/lib/libcpu/mips/mongoosev/include/mongoose-v.h
>>> +++ /dev/null
>>> @@ -1,306 +0,0 @@
>>> -/**
>>> - * @file
>>> - *
>>> - * MIPS Mongoose-V specific information
>>> - */
>>> -
>>> -/*
>>> - * COPYRIGHT (c) 1989-2012.
>>> - * On-Line Applications Research Corporation (OAR).
>>> - *
>>> - * The license and distribution terms for this file may be
>>> - * found in the file LICENSE in this distribution or at
>>> - * http://www.rtems.org/license/LICENSE.
>>> - */
>>> -
>>> -#ifndef __MONGOOSEV_h
>>> -#define __MONGOOSEV_h
>>> -
>>> -/*
>>> - * Macros to assist in accessing memory mapped Mongoose registers
>>> - */
>>> -
>>> -
>>> -#define MONGOOSEV_READ( _base ) \
>>> - ( *((volatile uint32_t*)(_base)) )
>>> -
>>> -#define MONGOOSEV_WRITE( _base, _value ) \
>>> - ( *((volatile uint32_t*)(_base)) = (_value) )
>>> -
>>> -#define MONGOOSEV_READ_REGISTER( _base, _register ) \
>>> - ( *((volatile uint32_t*)((_base) + (_register))) )
>>> -
>>> -#define MONGOOSEV_WRITE_REGISTER( _base, _register, _value ) \
>>> - ( *((volatile uint32_t*)((_base) + (_register))) = (_value) )
>>> -
>>> -
>>> -
>>> -
>>> -
>>> -/*
>>> - * Macros to read/write the Mongoose FPU control register.
>>> - */
>>> -
>>> -
>>> -
>>> -
>>> -/*
>>> - * BIU and DRAM Registers
>>> - */
>>> -
>>> -#define MONGOOSEV_BIU_CACHE_CONFIGURATION_REGISTER 0xFFFE0130
>>> -#define MONGOOSEV_DRAM_CONFIGURATION_REGISTER 0xFFFE0120
>>> -#define MONGOOSEV_REFRESH_TIMER_INITIAL_COUNTER_REGISTER 0xFFFE0010
>>> -#define MONGOOSEV_WAIT_STATE_CONFIGURATION_REGISTER_BASE 0xFFFE0100
>>> -
>>> -/*
>>> - * Peripheral Function Addresses
>>> - *
>>> - * NOTE: Status and Interrupt Cause use the same bits
>>> - */
>>> -
>>> -#define MONGOOSEV_PERIPHERAL_COMMAND_REGISTER
>>>0xFFFE0180
>>> -#define MONGOOSEV_PERIPHERAL_STATUS_REGISTER
>>>0xFFFE0184
>>> -#define MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_CAUSE_REGISTER
>>>0xFFFE0188
>>> -#define MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_MASK_REGISTER
>>>0xFFFE018C
>>> -
>>> -#define MONGOOSEV_WATCHDOG 0xBE000000
>>> -
>>> -/* UART Bits in Peripheral Command Register Bits (TX/RX tied together
>>>here) */
>>> -#define MONGOOSEV_UART_CMD_RESET_BOTH_PORTS 0x0001
>>> -#define MONGOOSEV_UART_CMD_LOOPBACK_CTSN 0x0002
>>> -#define MONGOOSEV_UART_CMD_LOOPBACK_RXTX 0x0004
>>> -
>>> -#define MONGOOSEV_UART_CMD_RX_ENABLE 0x001
>>> -#define MONGOOSEV_UART_CMD_RX_DISABLE 0x000
>>> -#define MONGOOSEV_UART_CMD_TX_ENABLE 0x002
>>> -#define MONGOOSEV_UART_CMD_TX_DISABLE 0x000
>>> -#define MONGOOSEV_UART_CMD_TX_READY 0x004
>>> -#define MONGOOSEV_UART_CMD_PARITY_ENABLE 0x008
>>> -#define MONGOOSEV_UART_CMD_PARITY_DISABLE 0x000
>>> -#define MONGOOSEV_UART_CMD_PARITY_EVEN 0x010
>>> -#define MONGOOSEV_UART_CMD_PARITY_ODD 0x000
>>> -
>>> -#define MONGOOSEV_UART0_CMD_SHIFT 5
>>> -#define MONGOOSEV_UART1_CMD_SHIFT 11
>>> -
>>> -#define MONGOOSEV_UART_CMD_TX_ENABLE_0 \
>>> - (MONGOOSEV_UART_CMD_TX_ENABLE << MONGOOSEV_UART0_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_RX_ENABLE_0 \
>>> - (MONGOOSEV_UART_CMD_RX_ENABLE << MONGOOSEV_UART0_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_TX_READY_0 \
>>> - (MONGOOSEV_UART_CMD_TX_READY << MONGOOSEV_UART0_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_ENABLE_0 \
>>> - (MONGOOSEV_UART_CMD_PARITY_ENABLE <<
>>>MONGOOSEV_UART0_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_DISABLE_0 \
>>> - (MONGOOSEV_UART_CMD_PARITY_DISABLE <<
>>>MONGOOSEV_UART0_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_EVEN_0 \
>>> - (MONGOOSEV_UART_CMD_PARITY_EVEN << MONGOOSEV_UART0_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_ODD_0 \
>>> - (MONGOOSEV_UART_CMD_PARITY_ODD << MONGOOSEV_UART0_CMD_SHIFT)
>>> -
>>> -#define MONGOOSEV_UART_CMD_TX_ENABLE_1 \
>>> - (MONGOOSEV_UART_CMD_TX_ENABLE << MONGOOSEV_UART1_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_RX_ENABLE_1 \
>>> - (MONGOOSEV_UART_CMD_RX_ENABLE << MONGOOSEV_UART1_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_TX_READY_1 \
>>> - (MONGOOSEV_UART_CMD_TX_READY << MONGOOSEV_UART1_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_ENABLE_1 \
>>> - (MONGOOSEV_UART_CMD_PARITY_ENABLE <<
>>>MONGOOSEV_UART1_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_DISABLE_1 \
>>> - (MONGOOSEV_UART_CMD_PARITY_DISABLE <<
>>>MONGOOSEV_UART1_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_EVEN_1 \
>>> - (MONGOOSEV_UART_CMD_PARITY_EVEN << MONGOOSEV_UART1_CMD_SHIFT)
>>> -#define MONGOOSEV_UART_CMD_PARITY_ODD_1 \
>>> - (MONGOOSEV_UART_CMD_PARITY_ODD << MONGOOSEV_UART1_CMD_SHIFT)
>>> -
>>> -/* UART Bits in Peripheral Status and Interrupt Cause Register */
>>> -#define MONGOOSEV_UART_RX_FRAME_ERROR 0x0001
>>> -#define MONGOOSEV_UART_RX_OVERRUN_ERROR 0x0002
>>> -#define MONGOOSEV_UART_TX_EMPTY 0x0004
>>> -#define MONGOOSEV_UART_TX_READY 0x0008
>>> -#define MONGOOSEV_UART_RX_READY 0x0010
>>> -
>>> -#define MONGOOSEV_UART_ALL_RX_STATUS_BITS 0x0013
>>> -#define MONGOOSEV_UART_ALL_STATUS_BITS 0x001F
>>> -
>>> -/*
>>> - * The Peripheral Interrupt Status, Cause, and Mask registers have
>>>the
>>> - * same bit assignments although some revisions of the document have
>>> - * the Cause and Status registers incorrect.
>>> - */
>>> -
>>> -#define MONGOOSEV_UART0_IRQ_SHIFT 11
>>> -#define MONGOOSEV_UART1_IRQ_SHIFT 17
>>> -
>>> -#define MONGOOSEV_UART_FRAME_ERROR_0 \
>>> - (MONGOOSEV_UART_FRAME_ERROR << MONGOOSEV_UART0_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_RX_OVERRUN_ERROR_0 \
>>> - (MONGOOSEV_UART_RX_OVERRUN_ERROR << MONGOOSEV_UART0_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_TX_EMPTY_0 \
>>> - (MONGOOSEV_UART_TX_EMPTY << MONGOOSEV_UART0_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_TX_READY_0 \
>>> - (MONGOOSEV_UART_TX_READY << MONGOOSEV_UART0_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_RX_READY_0 \
>>> - (MONGOOSEV_UART_RX_READY << MONGOOSEV_UART0_IRQ_SHIFT)
>>> -
>>> -#define MONGOOSEV_UART_FRAME_ERROR_1 \
>>> - (MONGOOSEV_UART_FRAME_ERROR << MONGOOSEV_UART1_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_RX_OVERRUN_ERROR_1 \
>>> - (MONGOOSEV_UART_RX_OVERRUN_ERROR << MONGOOSEV_UART1_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_TX_EMPTY_1 \
>>> - (MONGOOSEV_UART_TX_EMPTY << MONGOOSEV_UART1_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_TX_READY_1 \
>>> - (MONGOOSEV_UART_TX_READY << MONGOOSEV_UART1_IRQ_SHIFT)
>>> -#define MONGOOSEV_UART_RX_READY_1 \
>>> - (MONGOOSEV_UART_RX_READY << MONGOOSEV_UART1_IRQ_SHIFT)
>>> -
>>> -/*
>>> - * Bits in the Peripheral Interrupt Mask Register
>>> - */
>>> -
>>> -/*
>>> -** Interrupt Status/Cause/Mask register bits - from 31 to 0
>>> -*/
>>> -#define MONGOOSEV_EDAC_SERR_BIT 0x80000000
>>> -#define MONGOOSEV_EDAC_MERR_BIT 0x40000000
>>> -/* 29 - 24 reserved */
>>> -#define MONGOOSEV_MAVN_WRITE_ACCESS 0x00800000
>>> -#define MONGOOSEV_MAVN_READ_ACCESS 0x00400000
>>> -#define MONGOOSEV_UART_1_RX_READY 0x00200000
>>> -#define MONGOOSEV_UART_1_TX_READY 0x00100000
>>> -#define MONGOOSEV_UART_1_TX_EMPTY 0x00080000
>>> -#define MONGOOSEV_UART_1_RX_OVERRUN 0x00040000
>>> -#define MONGOOSEV_UART_1_FRAME_ERROR 0x00020000
>>> -#define MONGOOSEV_RESERVED_16 0x00010000
>>> -#define MONGOOSEV_UART_0_RX_READY 0x00008000
>>> -#define MONGOOSEV_UART_0_TX_READY 0x00004000
>>> -#define MONGOOSEV_UART_0_TX_EMPTY 0x00002000
>>> -#define MONGOOSEV_UART_0_RX_OVERRUN 0x00001000
>>> -#define MONGOOSEV_UART_0_FRAME_ERROR 0x00000800
>>> -#define MONGOOSEV_RESERVED_10 0x00000400
>>> -#define MONGOOSEV_EXTERN_INT_9 0x00000200
>>> -#define MONGOOSEV_EXTERN_INT_8 0x00000100
>>> -#define MONGOOSEV_EXTERN_INT_7 0x00000080
>>> -#define MONGOOSEV_EXTERN_INT_6 0x00000040
>>> -#define MONGOOSEV_EXTERN_INT_5 0x00000020
>>> -#define MONGOOSEV_EXTERN_INT_4 0x00000010
>>> -#define MONGOOSEV_EXTERN_INT_3 0x00000008
>>> -#define MONGOOSEV_EXTERN_INT_2 0x00000004
>>> -#define MONGOOSEV_EXTERN_INT_1 0x00000002
>>> -#define MONGOOSEV_EXTERN_INT_0 0x00000001
>>> -
>>> -
>>> -/*
>>> -** Peripheral Command bits (non-uart, those are defined above)
>>> -*/
>>> -#define MONGOOSEV_COMMAND_ENABLE_EDAC MONGOOSEV_EDAC_SERR_BIT
>>> -#define MONGOOSEV_COMMAND_OVERRIDE_EDAC MONGOOSEV_EDAC_MERR_BIT
>>> -
>>> -
>>> -
>>> -/*
>>> - * EDAC Registers
>>> - */
>>> -
>>> -#define MONGOOSEV_EDAC_ERROR_ADDRESS_REGISTER 0xFFFE0190
>>> -#define MONGOOSEV_EDAC_PARITY_TEST_MODE_REGISTER 0xFFFE0194
>>> -
>>> -/*
>>> - * MAVN Registers
>>> - */
>>> -
>>> -#define MONGOOSEV_MAVN_TEST_REGISTER 0xFFFE01B4
>>> -#define MONGOOSEV_MAVN_ACCESS_PRIVILEGE_REGISTER 0xFFFE01B8
>>> -#define MONGOOSEV_MAVN_ACCESS_VIOLATION_REGISTER 0xFFFE01BC
>>> -#define MONGOOSEV_MAVN_RANGE_0_REGISTER 0xFFFE01C0
>>> -#define MONGOOSEV_MAVN_RANGE_1_REGISTER 0xFFFE01C4
>>> -#define MONGOOSEV_MAVN_RANGE_2_REGISTER 0xFFFE01C8
>>> -#define MONGOOSEV_MAVN_RANGE_3_REGISTER 0xFFFE01CC
>>> -#define MONGOOSEV_MAVN_RANGE_4_REGISTER 0xFFFE01D0
>>> -#define MONGOOSEV_MAVN_RANGE_5_REGISTER 0xFFFE01D4
>>> -#define MONGOOSEV_MAVN_RANGE_6_REGISTER 0xFFFE01D8
>>> -#define MONGOOSEV_MAVN_RANGE_7_REGISTER 0xFFFE01DC
>>> -
>>> -/*
>>> - * Timer Base Addresses, Offsets, and Values
>>> - */
>>> -
>>> -#define MONGOOSEV_TIMER1_BASE 0xFFFE0000
>>> -#define MONGOOSEV_TIMER2_BASE 0xFFFE0008
>>> -
>>> -#define MONGOOSEV_TIMER_INITIAL_COUNTER_REGISTER 0
>>> -#define MONGOOSEV_TIMER_CONTROL_REGISTER 4
>>> -
>>> -/* Timer Control Register Constants */
>>> -#define MONGOOSEV_TIMER_CONTROL_COUNTER_ENABLE 0x04
>>> -#define MONGOOSEV_TIMER_CONTROL_INTERRUPT_ENABLE 0x02
>>> -#define MONGOOSEV_TIMER_CONTROL_TIMEOUT 0x01
>>> -
>>> -/*
>>> - * UART Base Addresses and Offsets
>>> - *
>>> - * Many bits in the peripheral command register are UART related
>>> - * and the bits are defined there.
>>> - */
>>> -
>>> -#define MONGOOSEV_UART0_BASE 0xFFFE01E8
>>> -#define MONGOOSEV_UART1_BASE 0xFFFE01F4
>>> -
>>> -#define MONGOOSEV_RX_BUFFER 0
>>> -#define MONGOOSEV_TX_BUFFER 4
>>> -#define MONGOOSEV_BAUD_RATE 8
>>> -
>>> -
>>> -/*
>>> - * Status Register Bits
>>> - */
>>> -
>>> -#define SR_CUMASK 0xf0000000 /* coproc usable bits */
>>> -#define SR_CU3 0x80000000 /* Coprocessor 3 usable */
>>> -#define SR_CU2 0x40000000 /* Coprocessor 2 usable */
>>> -#define SR_CU1 0x20000000 /* Coprocessor 1 usable */
>>> -#define SR_CU0 0x10000000 /* Coprocessor 0 usable */
>>> -#define SR_BEV 0x00400000 /* use boot exception vectors
>>>*/
>>> -#define SR_TS 0x00200000 /* TLB shutdown */
>>> -#define SR_PE 0x00100000 /* cache parity error */
>>> -#define SR_CM 0x00080000 /* cache miss */
>>> -#define SR_PZ 0x00040000 /* cache parity zero */
>>> -#define SR_SWC 0x00020000 /* swap cache */
>>> -#define SR_ISC 0x00010000 /* Isolate data cache */
>>> -#define SR_IMASK 0x0000ff00 /* Interrupt mask */
>>> -#define SR_IMASK8 0x00000000 /* mask level 8 */
>>> -#define SR_IMASK7 0x00008000 /* mask level 7 */
>>> -#define SR_IMASK6 0x0000c000 /* mask level 6 */
>>> -#define SR_IMASK5 0x0000e000 /* mask level 5 */
>>> -#define SR_IMASK4 0x0000f000 /* mask level 4 */
>>> -#define SR_IMASK3 0x0000f800 /* mask level 3 */
>>> -#define SR_IMASK2 0x0000fc00 /* mask level 2 */
>>> -#define SR_IMASK1 0x0000fe00 /* mask level 1 */
>>> -#define SR_IMASK0 0x0000ff00 /* mask level 0 */
>>> -
>>> -#define SR_IBIT8 0x00008000 /* bit level 8 */
>>> -#define SR_IBIT7 0x00004000 /* bit level 7 */
>>> -#define SR_IBIT6 0x00002000 /* bit level 6 */
>>> -#define SR_IBIT5 0x00001000 /* bit level 5 */
>>> -#define SR_IBIT4 0x00000800 /* bit level 4 */
>>> -#define SR_IBIT3 0x00000400 /* bit level 3 */
>>> -#define SR_IBIT2 0x00000200 /* bit level 2 */
>>> -#define SR_IBIT1 0x00000100 /* bit level 1 */
>>> -
>>> -#define SR_KUO 0x00000020 /* old kernel/user, 0 => k, 1
>>>=> u */
>>> -#define SR_IEO 0x00000010 /* old interrupt enable, 1 =>
>>>enable */
>>> -#define SR_KUP 0x00000008 /* prev kernel/user, 0 => k, 1
>>>=> u */
>>> -#define SR_IEP 0x00000004 /* prev interrupt enable, 1 =>
>>>enable */
>>> -#define SR_KUC 0x00000002 /* cur kernel/user, 0 => k, 1
>>>=> u */
>>> -#define SR_IEC 0x00000001 /* cur interrupt enable, 1 =>
>>>enable */
>>> -#define SR_KUMSK (SR_KUO|SR_IEO|SR_KUP|SR_IEP|SR_KUC|SR_IEC)
>>> -
>>> -#define SR_IMASKSHIFT 8
>>> -
>>> -
>>> -
>>> -#define MONGOOSEV_IC_SIZE 0x1000 /* instruction cache =
>>>4Kbytes */
>>> -#define MONGOOSEV_DC_SIZE 0x800 /* data cache 2Kbytes
>>>*/
>>> -
>>> -#endif
>>> diff --git a/c/src/lib/libcpu/mips/preinstall.am
>>>b/c/src/lib/libcpu/mips/preinstall.am
>>> index 4a83d60..85aec82 100644
>>> --- a/c/src/lib/libcpu/mips/preinstall.am
>>> +++ b/c/src/lib/libcpu/mips/preinstall.am
>>> @@ -26,20 +26,6 @@ $(PROJECT_INCLUDE)/libcpu/isr_entries.h:
>>>shared/interrupts/isr_entries.h $(PROJE
>>> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libcpu/isr_entries.h
>>> PREINSTALL_FILES += $(PROJECT_INCLUDE)/libcpu/isr_entries.h
>>>
>>> -if mongoosev
>>> -$(PROJECT_INCLUDE)/libcpu/mongoose-v.h:
>>>mongoosev/include/mongoose-v.h $(PROJECT_INCLUDE)/libcpu/$(dirstamp)
>>> - $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libcpu/mongoose-v.h
>>> -PREINSTALL_FILES += $(PROJECT_INCLUDE)/libcpu/mongoose-v.h
>>> -
>>> -$(PROJECT_INCLUDE)/libchip/$(dirstamp):
>>> - @$(MKDIR_P) $(PROJECT_INCLUDE)/libchip
>>> - @: > $(PROJECT_INCLUDE)/libchip/$(dirstamp)
>>> -PREINSTALL_DIRS += $(PROJECT_INCLUDE)/libchip/$(dirstamp)
>>> -
>>> -$(PROJECT_INCLUDE)/libchip/mg5uart.h: mongoosev/duart/mg5uart.h
>>>$(PROJECT_INCLUDE)/libchip/$(dirstamp)
>>> - $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libchip/mg5uart.h
>>> -PREINSTALL_FILES += $(PROJECT_INCLUDE)/libchip/mg5uart.h
>>> -endif
>>> if tx39
>>> $(PROJECT_INCLUDE)/libcpu/tx3904.h: tx39/include/tx3904.h
>>>$(PROJECT_INCLUDE)/libcpu/$(dirstamp)
>>> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libcpu/tx3904.h
>>> --
>>> 1.9.3
>>>
>>> _______________________________________________
>>> devel mailing list
>>> devel at rtems.org
>>> http://lists.rtems.org/mailman/listinfo/devel
>
>--
>Joel Sherrill, Ph.D. Director of Research & Development
>joel.sherrill at OARcorp.com On-Line Applications Research
>Ask me about RTEMS: a free RTOS Huntsville AL 35805
>Support Available (256) 722-9985
>
>_______________________________________________
>devel mailing list
>devel at rtems.org
>http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list