[rtems commit] Obsolete and remove m68k/gen68302
Joel Sherrill
joel at rtems.org
Sat Jan 23 22:53:03 UTC 2016
Module: rtems
Branch: master
Commit: 77990ec71456341463965b756db1a9d671df5611
Changeset: http://git.rtems.org/rtems/commit/?id=77990ec71456341463965b756db1a9d671df5611
Author: Joel Sherrill <joel at rtems.org>
Date: Sat Jan 23 16:44:27 2016 -0600
Obsolete and remove m68k/gen68302
closes #2543.
---
c/ACKNOWLEDGEMENTS | 6 -
c/src/lib/libbsp/m68k/acinclude.m4 | 2 -
c/src/lib/libbsp/m68k/gen68302/Makefile.am | 60 --
c/src/lib/libbsp/m68k/gen68302/README | 150 ----
c/src/lib/libbsp/m68k/gen68302/bsp_specs | 13 -
c/src/lib/libbsp/m68k/gen68302/clock/ckinit.c | 101 ---
c/src/lib/libbsp/m68k/gen68302/configure.ac | 23 -
c/src/lib/libbsp/m68k/gen68302/console/console.c | 245 ------
c/src/lib/libbsp/m68k/gen68302/include/bsp.h | 72 --
c/src/lib/libbsp/m68k/gen68302/include/coverhd.h | 119 ---
c/src/lib/libbsp/m68k/gen68302/include/m302_int.h | 542 ------------
.../libbsp/m68k/gen68302/make/custom/gen68302.cfg | 19 -
c/src/lib/libbsp/m68k/gen68302/network/network.c | 968 ---------------------
c/src/lib/libbsp/m68k/gen68302/preinstall.am | 71 --
c/src/lib/libbsp/m68k/gen68302/start/start.S | 255 ------
c/src/lib/libbsp/m68k/gen68302/startup/linkcmds | 204 -----
c/src/lib/libbsp/m68k/gen68302/timer/timer.c | 105 ---
c/src/lib/libbsp/m68k/gen68302/timer/timerisr.S | 26 -
c/src/lib/libbsp/m68k/gen68302/times | 189 ----
19 files changed, 3170 deletions(-)
diff --git a/c/ACKNOWLEDGEMENTS b/c/ACKNOWLEDGEMENTS
index 25d4a0b..7590f6c 100644
--- a/c/ACKNOWLEDGEMENTS
+++ b/c/ACKNOWLEDGEMENTS
@@ -25,12 +25,6 @@ The following persons/organizations have made contributions:
examples in the back of the IDP user's manual, and the libgloss example
support for the IDP board from the newlib/libgloss distribution.
-+ David Glessner (dwg at glenqcy.glenayre.com) of Glenayre Electronics
- submitted the support for the Motorola MC68302 CPU. This included
- the "gen68302" BSP which uses the on-chip peripherals on the MC68302
- as well as the modifications to the m68k dependent executive code to
- support m68k family members based on the mc68000 core.
-
+ Bryce Cogswell (cogswell at cs.uoregon.edu) submitted the support for MS-DOS
as a development environment as well as djgpp/go32 as a target environment.
diff --git a/c/src/lib/libbsp/m68k/acinclude.m4 b/c/src/lib/libbsp/m68k/acinclude.m4
index b755b66..13dc717 100644
--- a/c/src/lib/libbsp/m68k/acinclude.m4
+++ b/c/src/lib/libbsp/m68k/acinclude.m4
@@ -6,8 +6,6 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR],
AC_CONFIG_SUBDIRS([av5282]);;
csb360 )
AC_CONFIG_SUBDIRS([csb360]);;
- gen68302 )
- AC_CONFIG_SUBDIRS([gen68302]);;
gen68340 )
AC_CONFIG_SUBDIRS([gen68340]);;
gen68360 )
diff --git a/c/src/lib/libbsp/m68k/gen68302/Makefile.am b/c/src/lib/libbsp/m68k/gen68302/Makefile.am
deleted file mode 100644
index 65b6319..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/Makefile.am
+++ /dev/null
@@ -1,60 +0,0 @@
-ACLOCAL_AMFLAGS = -I ../../../../aclocal
-
-include $(top_srcdir)/../../../../automake/compile.am
-
-include_bspdir = $(includedir)/bsp
-
-dist_project_lib_DATA = bsp_specs
-
-include_HEADERS = include/bsp.h
-include_HEADERS += ../../shared/include/tm27.h
-
-nodist_include_HEADERS = include/bspopts.h
-nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
-DISTCLEANFILES = include/bspopts.h
-noinst_PROGRAMS =
-
-include_HEADERS += include/coverhd.h
-include_HEADERS += include/m302_int.h
-
-EXTRA_DIST = times
-
-noinst_LIBRARIES = libbspstart.a
-libbspstart_a_SOURCES = start/start.S
-project_lib_DATA = start.$(OBJEXT)
-
-dist_project_lib_DATA += startup/linkcmds
-
-noinst_LIBRARIES += libbsp.a
-libbsp_a_SOURCES =
-
-# startup
-libbsp_a_SOURCES += ../../shared/bspclean.c ../../shared/bsplibc.c \
- ../../shared/bsppredriverhook.c \
- ../../shared/bsppost.c ../../shared/bspstart.c ../../shared/bootcard.c \
- ../../shared/bspgetworkarea.c ../../shared/sbrk.c \
- ../../shared/setvec.c ../../shared/gnatinstallhandler.c
-# clock
-libbsp_a_SOURCES += clock/ckinit.c
-# console
-libbsp_a_SOURCES += console/console.c ../../shared/dummy_printk_support.c
-# timer
-libbsp_a_SOURCES += timer/timer.c timer/timerisr.S
-
-if HAS_NETWORKING
-network_CPPFLAGS = -D__INSIDE_RTEMS_BSD_TCPIP_STACK__
-noinst_PROGRAMS += network.rel
-network_rel_SOURCES = network/network.c
-network_rel_CPPFLAGS = $(AM_CPPFLAGS) $(network_CPPFLAGS)
-network_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
-endif
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/cache.rel \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
-if HAS_NETWORKING
-libbsp_a_LIBADD += network.rel
-endif
-
-include $(srcdir)/preinstall.am
-include $(top_srcdir)/../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/gen68302/README b/c/src/lib/libbsp/m68k/gen68302/README
deleted file mode 100644
index 81a079d..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/README
+++ /dev/null
@@ -1,150 +0,0 @@
-BSP NAME: gen68302
-BOARD: proprietary (see below for relevant information)
-BUS: none
-CPU FAMILY: MC68000
-COPROCESSORS: 68302 communications co-processor
-MODE: not applicable
-
-DEBUG MONITOR: none
-
-PERIPHERALS
-===========
-TIMERS: two 68302 timers, one 68302 watchdog timer
- RESOLUTION: ?
-SERIAL PORTS: three 68302 SCCs
-REAL-TIME CLOCK:
-DMA: built-in 68302, not used
-VIDEO: none
-SCSI: none
-NETWORKING: none
-
-DRIVER INFORMATION
-==================
-CLOCK DRIVER: 68302 (TIMER1)
-IOSUPP DRIVER: 68302 SCC2
-SHMSUPP: none
-TIMER DRIVER: 68302 TIMER2
-
-STDIO
-=====
-PORT: ?
-ELECTRICAL: EIA-232
-BAUD: 9600
-BITS PER CHARACTER: 8
-PARITY: None
-STOP BITS: 1
-
-NOTES
-=====
-
-Board description
------------------
-clock rate: 16 MHz
-bus width: 16 bits
-ROM: 128 kbyte (flash, 0 wait states, chip select 0)
-RAM: 256 kbyte (static, 0 wait states, chip select 1)
-
-The 68302's built-in DRAM refresh controller circuitry is neither used
-nor configured at startup.
-
-Host System
------------
-HP 9000/715, HP-UX 9.05
-gcc-2.6.3
-binutils-2.5.2
-
-
-Verification
-------------
-The 1-ms clock ISR rate was verified with an in-circuit emulator.
-
-Single processor tests:
-Multi-processort tests: not applicable
-Timing tests: see results in c/src/tests/tmtests/times
-
-Note: The board has 256 kbyte RAM, so the timing tests would not run
-with the standard executive RAM size configuration of 256 K.
-Modifying the conftbl.h files to specify 160 kbyte for workspace
-seemed to work.
-
-* Porting
-
-** Mod c/src/tests/tmtests/*/conftbl.h
-
-Modified to use 160 kbyte for executive RAM size.
-
-** Add c/make/custom/gen68302.cfg
-
-Based on m68k_no_bsp.cfg. Turned off multiprocessor support. Had to
-use a BSP-specific compiler configuration file in order to link the
-proper startup file.
-
-** Mod c/make/compilers/gcc-m68000.cfg
-
-Added "-m68000" to the AS macro so that non-68000 instructions are
-neither generated nor allowed (remember that the GNU assembler
-supports pseudo-assembler instructions (e.g. jbsr) that will be
-"intelligently" assembled.) Added "m68000/" before libgcc.a so that
-non-68000 instructions aren't included.
-
-** Add c/make/compilers/gcc-gen68302.cfg
-
-Based on modified gcc-m68000.cfg.
-
-Changed make-exe define to produce IEEE-695 output files for loading
-into the emulator.
-
-The board has no debug monitor, so I had to create a 68302-specific
-startup file (c/src/lib/libbsp/m68k/gen68302/start302/start302.s) to
-override the c/src/lib/start/m68k/start.s. START_FILE entry was
-modified to causes start302.s to be linked first (in lieu of start.s).
-
-** Mod c/src/exec/cpu/m68k/cpu.h
-
-Turned off software and hardware interrupt stack support. Added
-support in _CPU_Bitfield_Find_first_bit() and
-_CPU_Priority_Bits_index() to replace the bfffo instruction.
-
-TODO: add software-maintained interrupt stack.
-
-TODO: optimize things so that subtracting _priority from 15 isn't
-required in _CPU_Priority_Bits_index().
-
-** Mod c/src/exec/cpu/m68k/cpu.c
-
-Added the log base 2 table (__log2table) that's required by the BFFFO
-replacement in cpu.h.
-
-** Mod c/src/exec/cpu/m68k/cpu_asm.s
-
-Added _ISR_Exit that's currently used in TBD.... Added ifdef wrapper
-around ISR exit code that accessed the format nibble. Added some code
-to restore the status register and call _Thread_Dispatch.
-
-TODO: add software-maintained interrupt stack.
-
-** Mod c/src/exec/cpu/m68k/m68k.h
-
-Changed "typedef char signed8" to "typedef signed char signed8".
-
-** Add c/src/lib/libbsp/m68k/gen68302/...
-*** clock/
-
-TODO: Add set_vector support. Figure out what to do with Clock_exit().
-TODO: Pre-compute (rtems_configuration_get_microseconds_per_tick()/1000) so that
-it doesn't have to be re-computed on each Clock_isr().
-
-*** console/
-
-These files assume SCC2, but it shouldn't be too difficult to re-write
-these to use any of the other SCCs.
-
-*** include/
-*** start302/
-
-This contains the start302.s file that does some fairly tricky memory
-re-mapping so that RAM ends up at 0 and ROM ends up at 0xc00000.
-
-*** startup/
-*** timer/
-*** wrapup/
diff --git a/c/src/lib/libbsp/m68k/gen68302/bsp_specs b/c/src/lib/libbsp/m68k/gen68302/bsp_specs
deleted file mode 100644
index 5154de8..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/bsp_specs
+++ /dev/null
@@ -1,13 +0,0 @@
-%rename endfile old_endfile
-%rename startfile old_startfile
-%rename link old_link
-
-*startfile:
-%{!qrtems: %(old_startfile)} \
-%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e start}}
-
-*link:
-%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
-
-*endfile:
-%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s}
diff --git a/c/src/lib/libbsp/m68k/gen68302/clock/ckinit.c b/c/src/lib/libbsp/m68k/gen68302/clock/ckinit.c
deleted file mode 100644
index 1e4982e..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/clock/ckinit.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * This routine initializes Timer 1 for an MC68302.
- * The tick frequency is 1 millisecond.
- */
-
-/*
- * COPYRIGHT (c) 1989-2014.
- * 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 <stdlib.h> /* for atexit() */
-
-#include <bsp.h>
-#include <rtems/m68k/m68302.h>
-
-#define CLOCK_VECTOR 137
-
-#define TMR1_VAL ( RBIT_TMR_RST /* software reset the timer */\
- | RBIT_TMR_ICLK_MASTER16 /* master clock divided by 16 */\
- | RBIT_TMR_FRR /* restart timer after ref reached */\
- | RBIT_TMR_ORI) /* enable interrupt when ref reached */
-#define TRR1_VAL 1000 /* 1000 ticks @ 16MHz/16
- * = 1 millisecond tick.
- */
-
-/*
- * Clock_driver_ticks is a monotonically increasing counter of the
- * number of clock ticks since the driver was initialized.
- */
-volatile uint32_t Clock_driver_ticks;
-
-/*
- * Clock_isrs is the number of clock ISRs until the next invocation of
- * the RTEMS clock tick routine. The clock tick device driver
- * gets an interrupt once a millisecond and counts down until the
- * length of time between the user configured microseconds per tick
- * has passed.
- */
-uint32_t Clock_isrs;
-
-void Clock_exit( void );
-
-/*
- * ISR Handler
- */
-static rtems_isr Clock_isr(
- rtems_vector_number vector
-)
-{
- Clock_driver_ticks += 1;
-
- m302.reg.isr = RBIT_ISR_TIMER1; /* clear in-service bit */
- m302.reg.ter1 = (RBIT_TER_REF | RBIT_TER_CAP); /* clear timer intr request */
-
- if ( Clock_isrs == 1 ) {
- rtems_clock_tick();
- Clock_isrs = rtems_configuration_get_microseconds_per_tick() / 1000;
- }
- else
- Clock_isrs -= 1;
-}
-
-static void Install_clock(
- rtems_isr_entry clock_isr
-)
-{
- Clock_driver_ticks = 0;
- Clock_isrs = rtems_configuration_get_microseconds_per_tick() / 1000;
-
- set_vector( clock_isr, CLOCK_VECTOR, 1 );
-
- m302.reg.trr1 = TRR1_VAL; /* set timer reference register */
- m302.reg.tmr1 = TMR1_VAL; /* set timer mode register & enable */
- /*
- * Enable TIMER1 interrupts only.
- */
- m302.reg.imr |= RBIT_IMR_TIMER1; /* set 68302 int-mask to allow ints */
-
- atexit( Clock_exit );
-}
-
-void Clock_exit( void )
-{
- /* TODO: figure out what to do here */
- /* do not restore old vector */
-}
-
-rtems_device_driver Clock_initialize(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *pargp
-)
-{
- Install_clock( Clock_isr );
-
- return RTEMS_SUCCESSFUL;
-}
diff --git a/c/src/lib/libbsp/m68k/gen68302/configure.ac b/c/src/lib/libbsp/m68k/gen68302/configure.ac
deleted file mode 100644
index 29c7763..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/configure.ac
+++ /dev/null
@@ -1,23 +0,0 @@
-## Process this file with autoconf to produce a configure script.
-
-AC_PREREQ([2.69])
-AC_INIT([rtems-c-src-lib-libbsp-m68k-gen68302],[_RTEMS_VERSION],[https://devel.rtems.org/newticket])
-AC_CONFIG_SRCDIR([bsp_specs])
-RTEMS_TOP(../../../../../..)
-
-RTEMS_CANONICAL_TARGET_CPU
-AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.12.2])
-RTEMS_BSP_CONFIGURE
-
-RTEMS_PROG_CC_FOR_TARGET
-RTEMS_CANONICALIZE_TOOLS
-RTEMS_PROG_CCAS
-
-RTEMS_CHECK_NETWORKING
-AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
-
-RTEMS_BSP_CLEANUP_OPTIONS(0, 0)
-
-# Explicitly list all Makefiles here
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
diff --git a/c/src/lib/libbsp/m68k/gen68302/console/console.c b/c/src/lib/libbsp/m68k/gen68302/console/console.c
deleted file mode 100644
index 3d73b24..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/console/console.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Initialize the MC68302 SCC2 for console IO board support package.
- */
-
-/*
- * COPYRIGHT (c) 1989-2014.
- * 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.
- */
-
-#define GEN68302_INIT
-
-#include <bsp.h>
-#include <rtems/libio.h>
-
-#include <rtems/m68k/m68302.h>
-
-/* console_initialize
- *
- * This routine initializes the console IO driver.
- */
-rtems_device_driver console_initialize(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg
-)
-{
- rtems_status_code status;
- volatile m302_dualPortRAM_t *p = &m302;
-
- p->reg.pacnt |= 0x0003; /* enable RXD2 and TXD2 signals */
- /*
- * TODO: Check assembly code. I think gcc's volatile semantics force
- * this to not use a CLR.
- */
- p->reg.simode = 0; /* NMSI mode */
-
- p->reg.scc[1].scon = 0x00d8; /* 9600 baud */
- p->reg.scc[1].scm = 0x01b1;
-
- p->scc2.parm.rfcr = 0x50; /* Rx buffers in supervisor data */
- p->scc2.parm.tfcr = 0x50; /* Tx buffers in supervisor data */
- p->scc2.parm.mrblr = 0x0001; /* Max Rx buffer length is 1 byte */
-
- p->scc2.prot.uart.max_idl = 0x0000; /* 0 = maximum timeout value */
- p->scc2.prot.uart.brkcr = 0x0001; /* send 1 break char on STOP TX cmd */
- p->scc2.prot.uart.parec = 0x0000; /* reset parity error counter */
- p->scc2.prot.uart.frmec = 0x0000; /* reset framing error counter */
- p->scc2.prot.uart.nosec = 0x0000; /* reset noise error counter */
- p->scc2.prot.uart.brkec = 0x0000; /* reset break condition counter */
-
- p->scc2.prot.uart.character[0] = 0x0003; /* use <ctrl>c as control char */
- p->scc2.prot.uart.character[1] = 0x8000; /* set end of cntrl char table */
-
- p->scc2.bd.rx[0].status = 0xA000; /* RxBD0 empty, wrap, no intr */
- p->scc2.bd.rx[0].length = 0x0000;
- p->scc2.bd.rx[0].buffer =
- (uint8_t*) &m302.scc2.bd.rx[1]; /* RxBD1 is Rx buffer */
-
- p->reg.scc[1].dsr = 0x7000; /* set full-length last stop bit */
-
- p->scc2.bd.tx[0].status = 0x3000; /* TxBD0 not ready, wrap, intr */
- p->scc2.bd.tx[0].length = 0x0001;
- p->scc2.bd.tx[0].buffer =
- (uint8_t*) &m302.scc2.bd.tx[1]; /* TxBD1 is Tx buffer */
-
- p->reg.scc[1].scce = 0xFF; /* clear all SCC event flags */
- p->reg.scc[1].sccm = 0x03; /* enable only Tx & Rx interrupts */
- p->reg.scc[1].scm = 0x01BD;
-
- status = rtems_io_register_name(
- "/dev/console",
- major,
- (rtems_device_minor_number) 0
- );
-
- if (status != RTEMS_SUCCESSFUL)
- rtems_fatal_error_occurred(status);
-
- return RTEMS_SUCCESSFUL;
-
-}
-
-/* inbyte
- *
- * Receive a character from the MC68302's SCC2.
- */
-static char inbyte( void )
-{
- char ch;
-
-#define RXS (m302.scc2.bd.rx[0].status)
-#define RXD (* ((volatile char *) m302.scc2.bd.rx[0].buffer))
-
- do {
- while (RXS & RBIT_HDLC_EMPTY_BIT)
- /* Wait until character received */ ;
-
- ch = RXD;
- RXS = RBIT_HDLC_EMPTY_BIT | RBIT_HDLC_WRAP_BIT;
-
- if (ch == '\r' || ch == '\n')
- break;
- } while (ch < ' ' || ch > '~');
-
- return ch;
-}
-
-/* outbyte
- *
- * Transmit a character out on the MC68302's SCC2.
- * It may support XON/XOFF flow control.
- */
-static void outbyte(
- char ch
-)
-{
-#define TXS (m302.scc2.bd.tx[0].status)
-#define TXD (* ((volatile char *) m302.scc2.bd.tx[0].buffer))
-
-#define RXS (m302.scc2.bd.rx[0].status)
-#define RXD (* ((volatile char *) m302.scc2.bd.rx[0].buffer))
-
- while (TXS & RBIT_HDLC_READY_BIT)
- /* Wait until okay to transmit */ ;
-
- /*
- * Check for flow control requests and process.
- */
- while ( ! (RXS & RBIT_HDLC_EMPTY_BIT)) {
- if (RXD == XOFF) {
- do {
- RXS = RBIT_HDLC_EMPTY_BIT | RBIT_HDLC_WRAP_BIT;
- while (RXS & RBIT_HDLC_EMPTY_BIT)
- /* Wait until character received */ ;
- } while (RXD != XON);
- RXS = RBIT_HDLC_EMPTY_BIT | RBIT_HDLC_WRAP_BIT;
- }
- }
-
- TXD = ch;
- TXS = RBIT_HDLC_READY_BIT | RBIT_HDLC_WRAP_BIT;
- if (ch == '\n')
- outbyte('\r');
-}
-
-/*
- * Open entry point
- */
-rtems_device_driver console_open(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- return RTEMS_SUCCESSFUL;
-}
-
-/*
- * Close entry point
- */
-rtems_device_driver console_close(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- return RTEMS_SUCCESSFUL;
-}
-
-/*
- * read bytes from the serial port. We only have stdin.
- */
-rtems_device_driver console_read(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- rtems_libio_rw_args_t *rw_args;
- char *buffer;
- int maximum;
- int count = 0;
-
- rw_args = (rtems_libio_rw_args_t *) arg;
-
- buffer = rw_args->buffer;
- maximum = rw_args->count;
-
- for (count = 0; count < maximum; count++) {
- buffer[ count ] = inbyte();
- if (buffer[ count ] == '\n' || buffer[ count ] == '\r') {
- buffer[ count++ ] = '\n';
- break;
- }
- }
-
- rw_args->bytes_moved = count;
- return (count >= 0) ? RTEMS_SUCCESSFUL : RTEMS_UNSATISFIED;
-}
-
-/*
- * write bytes to the serial port. Stdout and stderr are the same.
- */
-rtems_device_driver console_write(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- int count;
- int maximum;
- rtems_libio_rw_args_t *rw_args;
- char *buffer;
-
- rw_args = (rtems_libio_rw_args_t *) arg;
-
- buffer = rw_args->buffer;
- maximum = rw_args->count;
-
- for (count = 0; count < maximum; count++) {
- if ( buffer[ count ] == '\n') {
- outbyte('\r');
- }
- outbyte( buffer[ count ] );
- }
-
- rw_args->bytes_moved = maximum;
- return 0;
-}
-
-/*
- * IO Control entry point
- */
-rtems_device_driver console_control(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg
-)
-{
- return RTEMS_SUCCESSFUL;
-}
diff --git a/c/src/lib/libbsp/m68k/gen68302/include/bsp.h b/c/src/lib/libbsp/m68k/gen68302/include/bsp.h
deleted file mode 100644
index 3cf37f6..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/include/bsp.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * @file
- *
- * @ingroup m68k_gen68302
- *
- * @brief Global BSP definitions.
- */
-
-/*
- * 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 LIBBSP_M68K_GEN68302_BSP_H
-#define LIBBSP_M68K_GEN68302_BSP_H
-
-#include <bspopts.h>
-#include <bsp/default-initial-extension.h>
-
-#include <rtems.h>
-#include <rtems/console.h>
-#include <rtems/iosupp.h>
-#include <rtems/clockdrv.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup m68k_gen68302 GEN68302 Support
- *
- * @ingroup bsp_m68k
- *
- * @brief GEN68302 support.
- */
-
-/* Constants */
-
-#define RAM_START 0
-#define RAM_END 0x040000
-
-/* Structures */
-
-#ifdef GEN68302_INIT
-#undef EXTERN
-#define EXTERN
-#else
-#undef EXTERN
-#define EXTERN extern
-#endif
-
-/* miscellaneous stuff assumed to exist */
-
-extern rtems_isr_entry M68Kvec[]; /* vector table address */
-
-/* functions */
-
-rtems_isr_entry set_vector(
- rtems_isr_entry handler,
- rtems_vector_number vector,
- int type
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/c/src/lib/libbsp/m68k/gen68302/include/coverhd.h b/c/src/lib/libbsp/m68k/gen68302/include/coverhd.h
deleted file mode 100644
index 65d586c..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/include/coverhd.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * @file
- *
- * @ingroup m68k_gen68302
- *
- * @brief C overhead definitions.
- */
-
-/* coverhd.h
- *
- * This include file has defines to represent the overhead associated
- * with calling a particular directive from C. These are used in the
- * Timing Test Suite to ignore the overhead required to pass arguments
- * to directives. On some CPUs and/or target boards, this overhead
- * is significant and makes it difficult to distinguish internal
- * RTEMS execution time from that used to call the directive.
- * This file should be updated after running the C overhead timing
- * test. Once this update has been performed, the RTEMS Time Test
- * Suite should be rebuilt to account for these overhead times in the
- * timing results.
- *
- * NOTE: If these are all zero, then the times reported include
- * all calling overhead including passing of arguments.
- *
- * 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 __COVERHD_h
-#define __COVERHD_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define CALLING_OVERHEAD_INITIALIZE_EXECUTIVE 14
-#define CALLING_OVERHEAD_SHUTDOWN_EXECUTIVE 11
-#define CALLING_OVERHEAD_TASK_CREATE 22
-#define CALLING_OVERHEAD_TASK_IDENT 17
-#define CALLING_OVERHEAD_TASK_START 18
-#define CALLING_OVERHEAD_TASK_RESTART 15
-#define CALLING_OVERHEAD_TASK_DELETE 12
-#define CALLING_OVERHEAD_TASK_SUSPEND 12
-#define CALLING_OVERHEAD_TASK_RESUME 12
-#define CALLING_OVERHEAD_TASK_SET_PRIORITY 16
-#define CALLING_OVERHEAD_TASK_MODE 15
-#define CALLING_OVERHEAD_TASK_GET_NOTE 16
-#define CALLING_OVERHEAD_TASK_SET_NOTE 16
-#define CALLING_OVERHEAD_TASK_WAKE_WHEN 31
-#define CALLING_OVERHEAD_TASK_WAKE_AFTER 11
-#define CALLING_OVERHEAD_INTERRUPT_CATCH 17
-#define CALLING_OVERHEAD_CLOCK_GET 32
-#define CALLING_OVERHEAD_CLOCK_SET 31
-#define CALLING_OVERHEAD_CLOCK_TICK 8
-
-#define CALLING_OVERHEAD_TIMER_CREATE 13
-#define CALLING_OVERHEAD_TIMER_IDENT 12
-#define CALLING_OVERHEAD_TIMER_DELETE 14
-#define CALLING_OVERHEAD_TIMER_FIRE_AFTER 19
-#define CALLING_OVERHEAD_TIMER_FIRE_WHEN 39
-#define CALLING_OVERHEAD_TIMER_RESET 12
-#define CALLING_OVERHEAD_TIMER_CANCEL 12
-#define CALLING_OVERHEAD_SEMAPHORE_CREATE 18
-#define CALLING_OVERHEAD_SEMAPHORE_IDENT 12
-#define CALLING_OVERHEAD_SEMAPHORE_DELETE 17
-#define CALLING_OVERHEAD_SEMAPHORE_OBTAIN 17
-#define CALLING_OVERHEAD_SEMAPHORE_RELEASE 12
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_CREATE 18
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_IDENT 17
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_DELETE 12
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_SEND 14
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT 14
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST 17
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE 19
-#define CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH 14
-
-#define CALLING_OVERHEAD_EVENT_SEND 15
-#define CALLING_OVERHEAD_EVENT_RECEIVE 18
-#define CALLING_OVERHEAD_SIGNAL_CATCH 14
-#define CALLING_OVERHEAD_SIGNAL_SEND 14
-#define CALLING_OVERHEAD_PARTITION_CREATE 23
-#define CALLING_OVERHEAD_PARTITION_IDENT 17
-#define CALLING_OVERHEAD_PARTITION_DELETE 12
-#define CALLING_OVERHEAD_PARTITION_GET_BUFFER 15
-#define CALLING_OVERHEAD_PARTITION_RETURN_BUFFER 15
-#define CALLING_OVERHEAD_REGION_CREATE 23
-#define CALLING_OVERHEAD_REGION_IDENT 14
-#define CALLING_OVERHEAD_REGION_DELETE 12
-#define CALLING_OVERHEAD_REGION_GET_SEGMENT 21
-#define CALLING_OVERHEAD_REGION_RETURN_SEGMENT 15
-#define CALLING_OVERHEAD_PORT_CREATE 20
-#define CALLING_OVERHEAD_PORT_IDENT 14
-#define CALLING_OVERHEAD_PORT_DELETE 12
-#define CALLING_OVERHEAD_PORT_EXTERNAL_TO_INTERNAL 18
-#define CALLING_OVERHEAD_PORT_INTERNAL_TO_EXTERNAL 18
-
-#define CALLING_OVERHEAD_IO_INITIALIZE 18
-#define CALLING_OVERHEAD_IO_OPEN 18
-#define CALLING_OVERHEAD_IO_CLOSE 18
-#define CALLING_OVERHEAD_IO_READ 18
-#define CALLING_OVERHEAD_IO_WRITE 18
-#define CALLING_OVERHEAD_IO_CONTROL 18
-#define CALLING_OVERHEAD_FATAL_ERROR_OCCURRED 11
-#define CALLING_OVERHEAD_RATE_MONOTONIC_CREATE 13
-#define CALLING_OVERHEAD_RATE_MONOTONIC_IDENT 14
-#define CALLING_OVERHEAD_RATE_MONOTONIC_DELETE 12
-#define CALLING_OVERHEAD_RATE_MONOTONIC_CANCEL 12
-#define CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD 14
-#define CALLING_OVERHEAD_MULTIPROCESSING_ANNOUNCE 8
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/c/src/lib/libbsp/m68k/gen68302/include/m302_int.h b/c/src/lib/libbsp/m68k/gen68302/include/m302_int.h
deleted file mode 100644
index 3634787..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/include/m302_int.h
+++ /dev/null
@@ -1,542 +0,0 @@
-/**
- * @file
- *
- * @ingroup m68k_gen68302
- *
- * @brief Motorola 68302 definitions.
- */
-
-/*
- * Implements the Motorola 68302 multi-protocol chip parameter
- * definition header.
- */
-
-#ifndef __M302_INT_h
-#define __M302_INT_h
-
-#ifndef uchar
-#define uchar unsigned char
-#endif
-#ifndef ushort
-#define ushort unsigned short
-#endif
-#ifndef ulong
-#define ulong unsigned long
-#endif
-
-/* Ethernet Control Register ECNTRL */
-#define ECNTRL_BIT_RESET 0x0001
-#define ECNTRL_BIT_ETHER_EN 0x0002
-#define ECNTRL_BIT_GTS 0x0004
-
-/* Ethernet DMA Configuration Status Register EDMA */
-#define EDMA_BDERR_MASK 0xFE00
-
-#define EDMA_BDSIZE_MASK 0x00C0
-#define EDMA_BDSIZE_8T_120R 0x0000
-#define EDMA_BDSIZE_16T_112R 0x0040
-#define EDMA_BDSIZE_32T_96R 0x0080
-#define EDMA_BDSIZE_64T_64R 0x00C0
-
-#define EDMA_BIT_TSRLY 0x0020
-
-#define EDMA_WMRK_MASK 0x0018
-#define EDMA_WMRK_8FIFO 0x0000
-#define EDMA_WMRK_16FIFO 0x0008
-#define EDMA_WMRK_24FIFO 0x0010
-#define EDMA_WMRK_32FIFO 0x0018
-
-#define EDMA_BLIM_MASK 0x0007
-#define EDMA_BLIM_8ACCESS 0x0003
-
-/* Ethernet Maximum Receive Buffer Length EMRBLR */
-#define EMRBLR_MASK 0x07FFE
-
-/* Interrupt Vector Register IVEC */
-#define IVEC_BIT_VG 0x0100
-#define IVEC_INV_MASK 0x00FF
-
-/* Interrupt Event Register INTR_EVENT */
-#define INTR_EVENT_BIT_RXB 0x0001
-#define INTR_EVENT_BIT_TXB 0x0002
-#define INTR_EVENT_BIT_BSY 0x0004
-#define INTR_EVENT_BIT_RFINT 0x0008
-#define INTR_EVENT_BIT_TFINT 0x0010
-#define INTR_EVENT_BIT_EBERR 0x0020
-#define INTR_EVENT_BIT_BOD 0x0040
-#define INTR_EVENT_BIT_GRA 0x0080
-#define INTR_EVENT_BIT_BABT 0x0100
-#define INTR_EVENT_BIT_BABR 0x0200
-#define INTR_EVENT_BIT_HBERR 0x0400
-
-/* Interrupt Mask Register INTR_MASK */
-#define INTR_MASK_BIT_RXIEN 0x0001
-#define INTR_MASK_BIT_TXIEN 0x0002
-#define INTR_MASK_BIT_BSYEN 0x0004
-#define INTR_MASK_BIT_RFIEN 0x0008
-#define INTR_MASK_BIT_TFIEN 0x0010
-#define INTR_MASK_BIT_EBERREN 0x0020
-#define INTR_MASK_BIT_BODEN 0x0040
-#define INTR_MASK_BIT_GRAEN 0x0080
-#define INTR_MASK_BIT_BTEN 0x0100
-#define INTR_MASK_BIT_BREN 0x0200
-#define INTR_MASK_BIT_HBEEN 0x0400
-
-/* Ethernet Configuration ECNFIG */
-#define ECNFIG_BIT_LOOP 0x0001
-#define ECNFIG_BIT_FDEN 0x0002
-#define ECNFIG_BIT_HBC 0x0004
-#define ECNFIG_BIT_RDT 0x0008
-
-/* Ethernet Test ETHER_TEST */
-#define ETHER_TEST_BIT_TWS 0x0001
-#define ETHER_TEST_BIT_RWS 0x0002
-#define ETHER_TEST_BIT_DRTY 0x0004
-#define ETHER_TEST_BIT_COLL 0x0008
-#define ETHER_TEST_BIT_SLOT 0x0010
-#define ETHER_TEST_BIT_TRND 0x0020
-#define ETHER_TEST_BIT_TBO 0x0040
-#define ETHER_TEST_BIT_RNGT 0x0080
-#define ETHER_TEST_REV_MASK 0xF000
-
-/* Ethernet AR Control Registere AR_CNTRL */
-#define AR_CNTRL_BIT_PROM 0x0400
-#define AR_CNTRL_BIT_PA_REJ 0x0800
-#define AR_CNTRL_BIT_NO_BROADCAST 0x1000
-#define AR_CNTRL_BIT_MULTI1 0x2000
-#define AR_CNTRL_BIT_INDEX_EN 0x4000
-#define AR_CNTRL_BIT_HASH_EN 0x8000
-
-#define AR_CNTRL_MULTI_MASK (AR_CNTRL_BIT_MULTI0 | AR_CNTRL_BIT_MULTI1)
-
-/* Ethernet buffer Status TX */
-#define BUF_STAT_CARRIER_LOST 0x0001
-#define BUF_STAT_UNDERRUN 0x0002
-#define BUF_STAT_RETRANS_COUNT 0x003C
-#define BUF_STAT_RETRY_LIMIT 0x0040
-#define BUF_STAT_LATE_COLLISION 0x0080
-#define BUF_STAT_HEARTBIT 0x0100
-#define BUF_STAT_DEFER 0x0200
-#define BUF_STAT_TX_CRC 0x0400
-#define BUF_STAT_LAST 0x0800
-#define BUF_STAT_INTERRUPT 0x1000
-#define BUF_STAT_WRAP 0x2000
-#define BUF_STAT_TO 0x4000
-#define BUF_STAT_READY 0x8000
-
-/* Ethernet buffer Status RX */
-#define BUF_STAT_COLLISION 0x0001
-#define BUF_STAT_OVERRUN 0x0002
-#define BUF_STAT_CRC_ERROR 0x0004
-#define BUF_STAT_SHORT 0x0008
-#define BUF_STAT_NONALIGNED 0x0010
-#define BUF_STAT_LONG 0x0020
-#define BUF_STAT_FIRST_IN_FRAME 0x0400
-#define BUF_STAT_EMPTY 0x8000
-
- /* SCC Buffer Descriptor structure
- ----------------------------------*/
-
-struct m68302_scc_bd {
- ushort stat_ctrl;
- ushort data_lgth;
- uchar *p_buffer;
-};
-
-#define M68302_scc_bd_stat_ctrl(p) \
- (((struct m68302_scc_bd *)(p)) -> stat_ctrl)
-#define M68302_scc_bd_data_lgth(p) \
- (((struct m68302_scc_bd *)(p)) -> data_lgth)
-#define M68302_scc_bd_p_buffer(p) \
- (((struct m68302_scc_bd *)(p)) -> p_buffer)
-
-struct m68302_imp {
-
-/* BASE : user data memory */
-
- uchar user_data[0x240]; /* 0x240 bytes user data */
- uchar user_reserved[0x1c0]; /* empty till 0x400 */
-
-/* BASE + 400H: PARAMETER RAM */
- struct {
- struct m68302_scc_bd scc_bd_rx[8]; /* Rx buffer descriptors */
- struct m68302_scc_bd scc_bd_tx[8]; /* Tx buffer descriptors */
-
- uchar rfcr; /* Rx function code */
- uchar tfcr; /* Tx function code */
- ushort mrblr; /* maximum Rx buffer length */
- ushort rist; /* internal state */
- uchar res1;
- uchar rbdn; /* Rx internal buffer number */
- ulong ridp;
- ushort ribc;
- ushort rtmp;
- ushort tist;
- uchar res2;
- uchar tbdn; /* Tx internal buffer number */
- ulong tidp;
- ushort tibc;
- ushort ttmp;
-
- unsigned char scc_spp [0x64]; /* SCC specific parameters */
- } parm_ram [3];
-
- uchar reserved_1 [0x100];
-
-/* BASE + 800H: INTERNAL REGISTERS */
-
- /* DMA */
-
- ushort dma_res1; /* reserved */
- ushort dma_mode; /* dma mode reg */
- ulong dma_src; /* dma source */
- ulong dma_dest; /* dma destination */
- ushort dma_count; /* dma byte count */
- uchar dma_status; /* dma status */
- uchar dma_res2; /* reserved */
- uchar dma_fct_code; /* dma function code */
- uchar dma_res3; /* reserved */
-
- /* Interrupt Controller */
-
- ushort it_mode; /* interrupt mode register */
- ushort it_pending; /* interrupt pending register */
- ushort it_mask; /* interrupt mask register */
- ushort it_inservice; /* interrupt in service register */
- ulong it_reserved; /* reserved */
-
- /* Parallel I/O */
-
- struct {
- ushort control; /* port control register */
- ushort direction; /* port data direction register */
- ushort data; /* port data value register */
- } port[2];
-
- ushort p_reserved; /* reserved */
-
- /* Chip Select */
-
- ulong cs_reserved;
-
- struct {
- ushort base; /* chip select base register */
- ushort option; /* chip select option register */
- } cs[4];
-
- /* Timer */
-
- ushort t1_mode; /* timer 1 mode register */
- ushort t1_reference; /* timer 1 reference register */
- ushort t1_capture; /* timer 1 capture register */
- ushort t1_counter; /* timer 1 counter */
- uchar tim_res1; /* reserved */
- uchar t1_event; /* timer 1 event */
-
- ushort t3_reference; /* timer 3 reference register */
- ushort t3_counter; /* timer 3 counter */
- ushort tim_res2; /* reserved */
-
- ushort t2_mode; /* timer 2 mode register */
- ushort t2_reference; /* timer 2 reference register */
- ushort t2_capture; /* timer 2 capture register */
- ushort t2_counter; /* timer 2 counter */
- uchar tim_res3; /* reserved */
- uchar t2_event; /* timer 2 event */
- ushort tim_res4[3]; /* reserved */
-
- /* command register */
-
- uchar cp_cmd; /* communication processor command register */
- uchar cp_cmd_res; /* reserved */
-
- /* reserved */
-
- uchar reserved_2[0x1e];
-
- /* SCC registers */
-
- struct scc_regs {
- ushort resvd; /* reserved */
- ushort scon; /* SCC configuration register */
- ushort scm; /* SCC mode register */
- ushort dsr; /* SCC sync register */
- uchar scce; /* SCC event register */
- uchar res1; /* reserved */
- uchar sccm; /* SCC mask register */
- uchar res2; /* reserved */
- uchar sccs; /* SCC status register */
- uchar res3; /* reserved */
- ushort res4; /* reserved */
- } scc_regs[3];
-
- /* SP (SCP + SMI) */
-
- ushort scc_mode_reg; /* scp, smi mode + clock control */
-
- /* Serial Interface */
-
- ushort serial_int_mask; /* mask register */
- ushort serial_int_mode; /* mode register */
-
- /* reserved */
-
- uchar reserved_3[0x74A];
-
-/****************** 68 EN 302 specific registers **********************/
-/** only available here if
- M68302_INTERNAL_RAM_BASE_ADD+0x1000=M68EN302_INTERNAL_RAM_BASE_ADD*/
-
- /* Module Bus Control Registers */
-
- ushort mbc; /* module bus control register MBC */
- ushort ier; /* interrupt extension register IER */
- ushort cser[4]; /* Chip Select extension registers CSERx */
- ushort pcsr; /* parity control & status register PCSR */
-
- ushort mbc_reserved;
-
- /* DRAM Controller Registers */
-
- ushort dcr; /* DRAM Configuration register DCR */
- ushort drfrsh; /* DRAM Refresh register DRFRSH */
- ushort dba[2]; /* DRAM Bank Base Address Register */
-
- uchar dram_reserved[0x7E8];
-
- /* Ethernet Controller Registers */
-
- ushort ecntrl; /* Ethernet Control Register */
- ushort edma; /* Ethernet DMA Configuration Register */
- ushort emrblr; /* Ethernet Max receive buffer length */
- ushort intr_vect; /* Interruppt vector register */
- ushort intr_event; /* Interruppt event register */
- ushort intr_mask; /* Interruppt mask register */
- ushort ecnfig; /* Ethernet Configuration */
- ushort ether_test; /* Ethernet Test register */
- ushort ar_cntrl; /* Address Recognition Control register */
-
- uchar eth_reserved[0x1EE];
-
- uchar cet[0x200]; /* CAM Entry Table */
- struct m68302_scc_bd eth_bd[128]; /* Ethernet Buffer Descriptors Table */
-
-};
-
-#define M68302imp_ a_m68302_imp ->
-
-#define M68302imp_a_scc_bd_rx(scc,bd) \
- (struct m68302_scc_bd FAR *)(&(M68302imp_ parm_ram[scc].scc_bd_rx[bd]))
-#define M68302imp_a_scc_bd_tx(scc,bd) \
- (struct m68302_scc_bd FAR *)(&(M68302imp_ parm_ram[scc].scc_bd_tx[bd]))
-
-#define M68302imp_scc_rfcr(scc) (M68302imp_ parm_ram[scc].rfcr)
-#define M68302imp_scc_tfcr(scc) (M68302imp_ parm_ram[scc].tfcr)
-#define M68302imp_scc_mrblr(scc) (M68302imp_ parm_ram[scc].mrblr)
-#define M68302imp_scc_rbdn(scc) (M68302imp_ parm_ram[scc].rbdn)
-#define M68302imp_scc_tbdn(scc) (M68302imp_ parm_ram[scc].tbdn)
-
-#define M68302imp_a_scc_spp(scc) ((struct m68302_scc_spp FAR *)(M68302imp_ parm_ram[scc].scc_spp))
-
-#define M68302imp_dma_res1 (M68302imp_ dma_res1)
-#define M68302imp_dma_mode (M68302imp_ dma_mode)
-#define M68302imp_dma_src (M68302imp_ dma_src)
-#define M68302imp_dma_dest (M68302imp_ dma_dest)
-#define M68302imp_dma_count (M68302imp_ dma_count)
-#define M68302imp_dma_status (M68302imp_ dma_status)
-#define M68302imp_dma_fct_code (M68302imp_ dma_fct_code)
-
-#define M68302imp_it_mode (M68302imp_ it_mode)
-#define M68302imp_it_pending (M68302imp_ it_pending)
-#define M68302imp_it_mask (M68302imp_ it_mask)
-#define M68302imp_it_inservice (M68302imp_ it_inservice)
-
-#define M68302imp_cs_base(i) (M68302imp_ cs[i].base)
-#define M68302imp_cs_option(i) (M68302imp_ cs[i].option)
-
-#define M68302imp_port_control(i) (M68302imp_ port[i].control)
-#define M68302imp_port_direction(i) (M68302imp_ port[i].direction)
-#define M68302imp_port_data(i) (M68302imp_ port[i].data)
-
-#define M68302imp_timer1_mode (M68302imp_ t1_mode)
-#define M68302imp_timer1_reference (M68302imp_ t1_reference)
-#define M68302imp_timer1_capture (M68302imp_ t1_capture)
-#define M68302imp_timer1_counter (M68302imp_ t1_counter)
-#define M68302imp_timer1_event (M68302imp_ t1_event)
-#define M68302imp_timer3_reference (M68302imp_ t3_reference)
-#define M68302imp_timer3_counter (M68302imp_ t3_counter)
-#define M68302imp_timer2_mode (M68302imp_ t2_mode)
-#define M68302imp_timer2_reference (M68302imp_ t2_reference)
-#define M68302imp_timer2_capture (M68302imp_ t2_capture)
-#define M68302imp_timer2_counter (M68302imp_ t2_counter)
-#define M68302imp_timer2_event (M68302imp_ t2_event)
-
-#define M68302imp_cp_cmd (M68302imp_ cp_cmd)
-
-#define M68302imp_scc_mode_reg (M68302imp_ scc_mode_reg)
-
-#define M68302imp_serial_int_mask (M68302imp_ serial_int_mask)
-#define M68302imp_serial_int_mode (M68302imp_ serial_int_mode)
-#define M68302imp_simask (M68302imp_serial_int_mask)
-#define M68302imp_simode (M68302imp_serial_int_mode)
-
-#define M68302imp_scon(i) (M68302imp_ scc_regs[i].scon)
-#define M68302imp_scm(i) (M68302imp_ scc_regs[i].scm)
-#define M68302imp_dsr(i) (M68302imp_ scc_regs[i].dsr)
-#define M68302imp_scce(i) (M68302imp_ scc_regs[i].scce)
-#define M68302imp_sccm(i) (M68302imp_ scc_regs[i].sccm)
-#define M68302imp_sccs(i) (M68302imp_ scc_regs[i].sccs)
-
-/*----------------------------------------------------------------------------*/
-
-#define M68en302imp_mbc (M68302imp_ mbc)
-#define M68en302imp_ier (M68302imp_ ier)
-#define M68en302imp_cser(i) (M68302imp_ cser[i])
-#define M68en302imp_pcsr (M68302imp_ pcsr)
-
-#define M68en302imp_dcr (M68302imp_ dcr)
-#define M68en302imp_drfrsh (M68302imp_ drfrsh)
-#define M68en302imp_dba(i) (M68302imp_ dba[i])
-
-#define M68en302imp_ecntrl (M68302imp_ ecntrl)
-#define M68en302imp_edma (M68302imp_ edma)
-#define M68en302imp_emrblr (M68302imp_ emrblr)
-#define M68en302imp_intr_vect (M68302imp_ intr_vect)
-#define M68en302imp_intr_event (M68302imp_ intr_event)
-#define M68en302imp_intr_mask (M68302imp_ intr_mask)
-#define M68en302imp_ecnfig (M68302imp_ ecnfig)
-#define M68en302imp_ether_test (M68302imp_ ether_test)
-#define M68en302imp_ar_cntrl (M68302imp_ ar_cntrl)
-
-#define M68en302imp_cet (M68302imp_ cet)
-
-#define M68302imp_a_eth_bd(bd) \
- (struct m68302_scc_bd *)(&(M68302imp_ eth_bd[bd]))
-
-/* PORTS */
-
-#define PA0 0x0001 /* PORT A bit 0 */
-#define PA1 0x0002 /* PORT A bit 1 */
-#define PA2 0x0004 /* PORT A bit 2 */
-#define PA3 0x0008 /* PORT A bit 3 */
-#define PA4 0x0010 /* PORT A bit 4 */
-#define PA5 0x0020 /* PORT A bit 5 */
-#define PA6 0x0040 /* PORT A bit 6 */
-#define PA7 0x0080 /* PORT A bit 7 */
-#define PA8 0x0100 /* PORT A bit 8 */
-#define PA9 0x0200 /* PORT A bit 9 */
-#define PA10 0x0400 /* PORT A bit 10 */
-#define PA11 0x0800 /* PORT A bit 11 */
-#define PA12 0x1000 /* PORT A bit 12 */
-#define PA13 0x2000 /* PORT A bit 13 */
-#define PA14 0x4000 /* PORT A bit 14 */
-#define PA15 0x8000 /* PORT A bit 15 */
-
-#define PB0 0x0001 /* PORT B bit 0 */
-#define PB1 0x0002 /* PORT B bit 1 */
-#define PB2 0x0004 /* PORT B bit 2 */
-#define PB3 0x0008 /* PORT B bit 3 */
-#define PB4 0x0010 /* PORT B bit 4 */
-#define PB5 0x0020 /* PORT B bit 5 */
-#define PB6 0x0040 /* PORT B bit 6 */
-#define PB7 0x0080 /* PORT B bit 7 */
-#define PB8 0x0100 /* PORT B bit 8 */
-#define PB9 0x0200 /* PORT B bit 9 */
-#define PB10 0x0400 /* PORT B bit 10 */
-
-#define PB11 0x0800 /* PORT B bit 11 */
-
-/* MODULE BUS CONTROL (MBCTL) */
-
-#define MBC_BCE 0x8000
-#define MBC_MFC2 0x4000
-#define MBC_MFC1 0x2000
-#define MBC_MFC0 0x1000
-#define MBC_BB 0x0800
-#define MBC_PPE 0x0400
-#define MBC_PM9 0x0200
-#define MBC_PM8 0x0100
-#define MBC_PM7 0x0080
-#define MBC_PM6 0x0040
-#define MBC_PM5 0x0020
-#define MBC_PM4 0x0010
-#define MBC_PM3 0x0008
-#define MBC_PM2 0x0004
-#define MBC_PM1 0x0002
-#define MBC_PM0 0x0001
-
- /* DRAM CONFIGURATION REG (DCR) */
-
-#define DCR_SU0 0x0001
-#define DCR_SU1 0x0002
-#define DCR_WP0 0x0004
-#define DCR_WP1 0x0008
-#define DCR_W0 0x0010
-#define DCR_W1 0x0020
-#define DCR_P0 0x0040
-#define DCR_P1 0x0080
-#define DCR_PE0 0x0100
-#define DCR_PE1 0x0200
-#define DCR_E0 0x0400
-#define DCR_E1 0x0800
-
-/* M68302 INTERNAL RAM BASE ADDRESS INSTALLATION */
-
-#define M68302_ram_base_add_install(base_reg_add,ram_base_add) \
- do { \
- *((ushort *)base_reg_add) = (ushort)(ram_base_add >> 12); \
- a_m68302_imp = (struct m68302_imp *)ram_base_add; \
- } while (0)
-
-#define M68302_system_ctrl_reg_install(val) (*((ulong *)M68302_SCR_ADD) = val)
-
- /* INTERRUPTION */
-
- /* Interrupt mode selection */
-
-#define M68302_it_mode_install(mode,vector_bank, \
- extvect1,extvect6,extvect7,edgetrig1,edgetrig6,edgetrig7) \
- M68302imp_it_mode = 0 | (mode << 15) | (vector_bank << 5) | \
- (extvect7 << 14) | (extvect6 << 13) | (extvect1 <<12) | \
- (edgetrig7 << 10) | (edgetrig6 << 9)|(edgetrig1 << 8)
-
- /* CHIP SELECTION */
-
- /* 'read_write' support values :
- *
- * M68302_CS_READ_ONLY for read only memory access chip select
- * M68302_CS_READ_WRITE_ONLY for write only memory access chip select
- * M68302_CS_READ_AND_WRITE for read & write memory access chip select
- *
- * 'nb_wait_state' : number of wait-state(s) from 0 to 6, 7 for external
- *
- */
-#define M68302_CS_READ_ONLY 0x02 /* read only memory access */
-#define M68302_CS_WRITE_ONLY 0x22 /* write only memory access */
-#define M68302_CS_READ_AND_WRITE 0x00 /* read and write memory access */
-
-#define M68302_cs_install(cs_nb,base_add,range,nb_wait_state,read_write) \
- do { \
- M68302imp_cs_option(cs_nb) = (((~(range - 1)) >> 11) & 0x1FFC) | \
- (nb_wait_state << 13) | (read_write & 0x2); \
- M68302imp_cs_base(cs_nb) = (((base_add >> 11) & 0x1FFC) | \
- ((read_write >> 4) & 0x2) | 1); \
- } while (0)
-
-#define M68302_set_cs_br(base_add, read_write) \
- ((((base_add) >> 11) & 0x1FFC) | (((read_write) >> 4) & 0x2) | 1)
-
-#define M68302_set_cs_or(range, nb_wait_state, read_write) \
- ((((~(range - 1)) >> 11) & 0x1FFC) | \
- ((nb_wait_state) << 13) | ((read_write) & 0x2))
-
-#define M68302_get_cs_br(cs) \
- (((ulong)((M68302imp_cs_base(cs)) & 0x1FFC)) << 11 )
-
-/* DRAM */
-
-#define M68en302_dram_install(bank,base_add,range) \
- M68en302imp_dba (bank) = \
- (((base_add >> 8) & 0xFE00) | (((~(range-1))>>16) & 0x007E) | 1)
-
-#endif
diff --git a/c/src/lib/libbsp/m68k/gen68302/make/custom/gen68302.cfg b/c/src/lib/libbsp/m68k/gen68302/make/custom/gen68302.cfg
deleted file mode 100644
index e60a641..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/make/custom/gen68302.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Config file for a "generic 68302" BSP
-#
-
-include $(RTEMS_ROOT)/make/custom/default.cfg
-
-RTEMS_CPU=m68k
-RTEMS_CPU_MODEL=m68302
-
-#
-# This contains the compiler options necessary to select the CPU model
-# and (hopefully) optimize for it.
-CPU_CFLAGS = -mcpu=68302
-
-# optimize flag: typically -O2
-CFLAGS_OPTIMIZE_V = -O2 -g -fomit-frame-pointer
-CFLAGS_OPTIMIZE_V += -ffunction-sections -fdata-sections
-
-LDFLAGS = -Wl,--gc-sections
diff --git a/c/src/lib/libbsp/m68k/gen68302/network/network.c b/c/src/lib/libbsp/m68k/gen68302/network/network.c
deleted file mode 100644
index 67cd951..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/network/network.c
+++ /dev/null
@@ -1,968 +0,0 @@
-/*
- * RTEMS driver for M68360 SCC1 Ethernet
- * W. Eric Norum
- * Saskatchewan Accelerator Laboratory
- * University of Saskatchewan
- * Saskatoon, Saskatchewan, CANADA
- * eric at skatter.usask.ca
- *
- * Modify for Motorola 68en320 Ethernet Controller
- * CXR S.A. France - 2000/09/14 - franckj at cxr.fr
- */
-#include <bsp.h>
-#include <stdio.h>
-#include <rtems/error.h>
-#include <m302_int.h>
-#include <rtems/rtems_bsdnet.h>
-
-#include <sys/param.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <errno.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <rtems/m68k/m68302.h>
-
-/*
- * Number of SCCs supported by this driver
- */
-#define NSCCDRIVER 1
-
-/*
- * Default number of buffer descriptors set aside for this driver.
- * The number of transmit buffer descriptors has to be quite large
- * since a single frame often uses four or more buffer descriptors.
- */
-#define RX_BUF_COUNT 64
-#define TX_BUF_COUNT 64
-
-/*
- * RTEMS event used by interrupt handler to signal driver tasks.
- * This must not be any of the events used by the network task synchronization.
- */
-#define INTERRUPT_EVENT RTEMS_EVENT_1
-
-/*
- * RTEMS event used to start transmit daemon.
- * This must not be the same as INTERRUPT_EVENT.
- */
-#define START_TRANSMIT_EVENT RTEMS_EVENT_2
-
-/*
- * Receive buffer size -- Allow for a full ethernet packet including CRC
- */
-#define RBUF_SIZE 1520
-
-#if (MCLBYTES < RBUF_SIZE)
-# error "Driver must have MCLBYTES > RBUF_SIZE"
-#endif
-
-static struct m68302_imp * a_m68302_imp;
-
-#define M302_ETHER_IVECTOR 0x40
-
-/*
- * Per-device data
- */
-struct scc_softc {
- struct arpcom arpcom;
- struct mbuf **rxMbuf;
- struct mbuf **txMbuf;
- int acceptBroadcast;
- int rxBdCount;
- int txBdCount;
- int txBdHead;
- int txBdTail;
- int txBdActiveCount;
-
- struct m68302_scc_bd *rxBdBase;
- struct m68302_scc_bd *txBdBase;
-
- rtems_id rxDaemonTid;
- rtems_id txDaemonTid;
-
- /*
- * Statistics
- */
- unsigned long rxInterrupts;
- unsigned long rxNotFirst;
- unsigned long rxNotLast;
- unsigned long rxGiant;
- unsigned long rxNonOctet;
- unsigned long rxRunt;
- unsigned long rxBadCRC;
- unsigned long rxOverrun;
- unsigned long rxCollision;
-
- unsigned long txInterrupts;
- unsigned long txDeferred;
- unsigned long txHeartbeat;
- unsigned long txLateCollision;
- unsigned long txRetryLimit;
- unsigned long txUnderrun;
- unsigned long txLostCarrier;
- unsigned long txRawWait;
- unsigned long txCoalesced;
- unsigned long txCoalesceFailed;
- unsigned long txRetry;
-};
-static struct scc_softc scc_softc[NSCCDRIVER];
-
-/*
- * interrupt handler
- */
-static rtems_isr
-m302Enet_interrupt_handler (rtems_vector_number v)
-{
-
- /*
- * Frame received?
- */
- if (M68en302imp_intr_event & INTR_EVENT_BIT_RFINT) {
- M68en302imp_intr_event = INTR_EVENT_BIT_RFINT;
- M68en302imp_intr_mask &= ~INTR_MASK_BIT_RFIEN;
- scc_softc[0].rxInterrupts++;
- rtems_bsdnet_event_send (scc_softc[0].rxDaemonTid, INTERRUPT_EVENT);
- }
-
- /*
- * Buffer transmitted or transmitter error?
- */
- if ((M68en302imp_intr_event & INTR_EVENT_BIT_TFINT) ||
- ((M68en302imp_intr_event & INTR_EVENT_BIT_TXB))){
- M68en302imp_intr_event = INTR_EVENT_BIT_TFINT | INTR_EVENT_BIT_TXB;
- M68en302imp_intr_mask &= ~(INTR_MASK_BIT_TFIEN | INTR_MASK_BIT_TXIEN);
- scc_softc[0].txInterrupts++;
- rtems_bsdnet_event_send (scc_softc[0].txDaemonTid, INTERRUPT_EVENT);
- }
-}
-
-/*
- * Initialize the ethernet hardware
- */
-static void
-m302Enet_initialize_hardware (struct scc_softc *sc)
-{
- int i;
- unsigned char *hwaddr;
- rtems_status_code status;
- rtems_isr_entry old_handler;
- struct m68302_scc_bd *a_bd; /* Buffer Descriptor pointer */
- ushort *cam;
-#define LBK 0x0008
-#define DSQE 0x0010
-#define FDE 0x0020
-
- /*
- * standard loopback
- */
- M68302imp_port_data (1) &= ~(LBK);
- M68302imp_port_data (1) |= (FDE);
-
- M68en302imp_ecntrl=0x0001;
- /*
- * Set dma configuration status register EDMA
- */
- i = (sc->txBdCount == 16) ? EDMA_BDSIZE_16T_112R :
- (sc->txBdCount == 32) ? EDMA_BDSIZE_32T_96R :
- (sc->txBdCount == 64) ? EDMA_BDSIZE_64T_64R :
- EDMA_BDSIZE_8T_120R;
-
- M68en302imp_edma = EDMA_BLIM_8ACCESS | EDMA_WMRK_16FIFO | EDMA_BIT_TSRLY | (ushort)i;
-
- /*
- * Set maximum receive buffer length
- */
-
- M68en302imp_emrblr = RBUF_SIZE; /* 1520 */
-
- /*
- * Set interrupt vector
- */
- M68en302imp_intr_vect = M302_ETHER_IVECTOR;
-
- M68en302imp_intr_mask=0x0;
-
- /*
- * Set ethernet Configuration
- */
- M68en302imp_ecnfig=0x0000;
-
- /*
- * Set ETHER_TEST
- */
- M68en302imp_ether_test=0x0000;
-
- /*
- * Set AR control Register
- * Ignore/accept broadcast packets as specified
- */
- M68en302imp_ar_cntrl = ((sc->acceptBroadcast) ? 0 : AR_CNTRL_BIT_NO_BROADCAST) ;
-
- /*
- * Allocate mbuf pointers
- */
- sc->rxMbuf = malloc (sc->rxBdCount * sizeof *sc->rxMbuf, M_MBUF, M_NOWAIT);
- sc->txMbuf = malloc (sc->txBdCount * sizeof *sc->txMbuf, M_MBUF, M_NOWAIT);
- if (!sc->rxMbuf || !sc->txMbuf)
- rtems_panic ("No memory for mbuf pointers");
-
- /*
- * Set our physical address
- */
- hwaddr = sc->arpcom.ac_enaddr;
-
- cam=(ushort *)(M68en302imp_cet);
- for (i=0;i<64;i++){
- cam[(4*i)]=0x00ff;
- cam[(4*i)+1]=0x00ff;
- cam[(4*i)+2]=0x00ff;
- }
-
- cam[4] = (hwaddr[0] << 8) | hwaddr[1];
- cam[5] = (hwaddr[2] << 8) | hwaddr[3];
- cam[6] = (hwaddr[4] << 8) | hwaddr[5];
-
- /*
- * Set receiver and transmitter buffer descriptor bases
- */
- a_bd = M68302imp_a_eth_bd (0); /* point to first BD */
-
- for (i=0;i<128;i++){
-
- M68302_scc_bd_stat_ctrl (a_bd + i) = 0;
- M68302_scc_bd_data_lgth (a_bd + i) = 0;
- M68302_scc_bd_p_buffer (a_bd + i) = NULL;
- }
-
- sc->txBdBase = M68302imp_a_eth_bd ( 0 ); /* point to first BD */
- sc->rxBdBase = M68302imp_a_eth_bd ( sc->txBdCount); /* point to first RX BD atfer all TX*/
-
- /*
- * Set up transmit buffer descriptors
- */
- for (i = 0 ; i < sc->txBdCount ; i++) {
- sc->txMbuf[i] = NULL;
- }
- sc->txBdHead = sc->txBdTail = 0;
- sc->txBdActiveCount = 0;
-
- /*
- * Clear any outstanding events
- */
- M68en302imp_intr_event = 0x07FF;
- /*
- * Set up interrupts
- */
-
- status = rtems_interrupt_catch (m302Enet_interrupt_handler,
- M302_ETHER_IVECTOR,
- &old_handler);
- if (status != RTEMS_SUCCESSFUL)
- rtems_panic ("Can't attach M302 ether interrupt handler: %s\r\n",
- rtems_status_text (status));
-}
-
-/*
- * Soak up buffer descriptors that have been sent
- * Note that a buffer descriptor can't be retired as soon as it becomes
- * ready. The MC68360 Errata (May 96) says that, "If an Ethernet frame is
- * made up of multiple buffers, the user should not reuse the first buffer
- * descriptor until the last buffer descriptor of the frame has had its
- * ready bit cleared by the CPM".
- */
-static void
-m302Enet_retire_tx_bd (struct scc_softc *sc)
-{
-
- uint16_t status;
- int i;
- int nRetired;
- struct mbuf *m, *n;
- int retries = 0;
- int saveStatus = 0;
-
- i = sc->txBdTail;
- nRetired = 0;
- while ((sc->txBdActiveCount != 0)
- && (((status = (sc->txBdBase + i)->stat_ctrl) & BUF_STAT_READY) == 0)) {
- /*
- * Check for errors which stop the transmitter.
- */
- if (status & (BUF_STAT_LATE_COLLISION |
- BUF_STAT_RETRY_LIMIT |
- BUF_STAT_UNDERRUN)) {
- int j;
-
- if (status & BUF_STAT_LATE_COLLISION)
- sc->txLateCollision++;
- if (status & BUF_STAT_RETRY_LIMIT)
- sc->txRetryLimit++;
- if (status & BUF_STAT_UNDERRUN)
- sc->txUnderrun++;
-
- /*
- * Reenable buffer descriptors
- */
- j = sc->txBdTail;
- for (;;) {
- status = (sc->txBdBase + j)->stat_ctrl;
- if (status & BUF_STAT_READY)
- break;
- (sc->txBdBase + j)->stat_ctrl = BUF_STAT_READY |
- (status & ( BUF_STAT_WRAP |
- BUF_STAT_INTERRUPT |
- BUF_STAT_LAST |
- BUF_STAT_TX_CRC));
- if (status & BUF_STAT_LAST)
- break;
- if (++j == sc->txBdCount)
- j = 0;
- }
-
- /*
- * Move transmitter back to the first
- * buffer descriptor in the frame.
- */
-/* m360.scc1p._tbptr = m360.scc1p.tbase +
- sc->txBdTail * sizeof (m360BufferDescriptor_t);
-*/
- /*
- * Restart the transmitter
- */
-/* M360ExecuteRISC (M360_CR_OP_RESTART_TX | M360_CR_CHAN_SCC1);*/
- continue;
- }
- saveStatus |= status;
- retries += (status >> 2) & 0xF;
- nRetired++;
- if (status & BUF_STAT_LAST) {
- /*
- * A full frame has been transmitted.
- * Free all the associated buffer descriptors.
- */
- if (saveStatus & BUF_STAT_DEFER)
- sc->txDeferred++;
- if (saveStatus & BUF_STAT_HEARTBIT)
- sc->txHeartbeat++;
- if (saveStatus & BUF_STAT_CARRIER_LOST)
- sc->txLostCarrier++;
- saveStatus = 0;
- sc->txRetry += retries;
- retries = 0;
- sc->txBdActiveCount -= nRetired;
- while (nRetired) {
- nRetired--;
- m = sc->txMbuf[sc->txBdTail];
- MFREE (m, n);
- if (++sc->txBdTail == sc->txBdCount)
- sc->txBdTail = 0;
- }
- }
- if (++i == sc->txBdCount)
- i = 0;
- }
-
-}
-
-/*
- * SCC reader task
- */
-static void
-scc_rxDaemon (void *arg)
-{
-
- struct scc_softc *sc = (struct scc_softc *)arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
- struct mbuf *m;
- uint16_t status;
- volatile struct m68302_scc_bd *rxBd;
- int rxBdIndex;
-
- /*
- * Allocate space for incoming packets and start reception
- */
- for (rxBdIndex = 0 ; ;) {
- rxBd = sc->rxBdBase + rxBdIndex;
- MGETHDR (m, M_WAIT, MT_DATA);
- MCLGET (m, M_WAIT);
- m->m_pkthdr.rcvif = ifp;
- sc->rxMbuf[rxBdIndex] = m;
- rxBd->p_buffer = mtod (m, void *);
-
- if (++rxBdIndex == sc->rxBdCount) {
- rxBd->stat_ctrl = BUF_STAT_EMPTY | BUF_STAT_INTERRUPT | BUF_STAT_WRAP;
- break;
- }
- rxBd->stat_ctrl = BUF_STAT_EMPTY | BUF_STAT_INTERRUPT;
- }
-
- /*
- * Input packet handling loop
- */
- rxBdIndex = 0;
- for (;;) {
- rxBd = sc->rxBdBase + rxBdIndex;
-
- /*
- * Wait for packet if there's not one ready
- */
- if ((status = rxBd->stat_ctrl) & BUF_STAT_EMPTY) {
- /*
- * Clear old events
- */
- M68en302imp_intr_event = INTR_EVENT_BIT_RFINT;
-
- /*
- * Wait for packet
- * Note that the buffer descriptor is checked
- * *before* the event wait -- this catches the
- * possibility that a packet arrived between the
- * `if' above, and the clearing of the event register.
- */
- while ((status = rxBd->stat_ctrl) & BUF_STAT_EMPTY) {
- rtems_interrupt_level level;
- rtems_event_set events;
-
- /*
- * Unmask RXF (Full frame received) event
- */
- rtems_interrupt_disable (level);
- M68en302imp_intr_mask |= INTR_MASK_BIT_RFIEN;
-
- rtems_interrupt_enable (level);
- rtems_bsdnet_event_receive (INTERRUPT_EVENT,
- RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT,
- &events);
- }
- }
-
- /*
- * Check that packet is valid
- */
- if ((status & (BUF_STAT_LAST |
- BUF_STAT_FIRST_IN_FRAME |
- BUF_STAT_LONG |
- BUF_STAT_NONALIGNED |
- BUF_STAT_SHORT |
- BUF_STAT_CRC_ERROR |
- BUF_STAT_OVERRUN |
- BUF_STAT_COLLISION)) ==
- (BUF_STAT_LAST |
- BUF_STAT_FIRST_IN_FRAME)) {
- /*
- * Pass the packet up the chain.
- * FIXME: Packet filtering hook could be done here.
- */
- struct ether_header *eh;
-
- m = sc->rxMbuf[rxBdIndex];
- m->m_len = m->m_pkthdr.len = rxBd->data_lgth -
- sizeof(uint32_t) -
- sizeof(struct ether_header);
- eh = mtod (m, struct ether_header *);
- m->m_data += sizeof(struct ether_header);
-
- ether_input (ifp, eh, m);
-
- /*
- * Allocate a new mbuf
- */
- MGETHDR (m, M_WAIT, MT_DATA);
- MCLGET (m, M_WAIT);
- m->m_pkthdr.rcvif = ifp;
- sc->rxMbuf[rxBdIndex] = m;
- rxBd->p_buffer = mtod (m, void *);
- }
- else {
- /*
- * Something went wrong with the reception
- */
- if (!(status & BUF_STAT_LAST))
- sc->rxNotLast++;
- if (!(status & BUF_STAT_FIRST_IN_FRAME))
- sc->rxNotFirst++;
- if (status & BUF_STAT_LONG)
- sc->rxGiant++;
- if (status & BUF_STAT_NONALIGNED)
- sc->rxNonOctet++;
- if (status & BUF_STAT_SHORT)
- sc->rxRunt++;
- if (status & BUF_STAT_CRC_ERROR)
- sc->rxBadCRC++;
- if (status & BUF_STAT_OVERRUN)
- sc->rxOverrun++;
- if (status & BUF_STAT_COLLISION)
- sc->rxCollision++;
- }
-
- /*
- * Reenable the buffer descriptor
- */
- rxBd->stat_ctrl = (status & (BUF_STAT_WRAP | BUF_STAT_INTERRUPT)) | BUF_STAT_EMPTY;
-
- /*
- * Move to next buffer descriptor
- */
- if (++rxBdIndex == sc->rxBdCount)
- rxBdIndex = 0;
- }
-
-}
-
-static void
-sendpacket (struct ifnet *ifp, struct mbuf *m)
-{
-
- struct scc_softc *sc = ifp->if_softc;
- volatile struct m68302_scc_bd *firstTxBd, *txBd;
- struct mbuf *l = NULL;
- uint16_t status;
- int nAdded;
-
- /*
- * Free up buffer descriptors
- */
- m302Enet_retire_tx_bd (sc);
- /*
- * Set up the transmit buffer descriptors.
- * No need to pad out short packets since the
- * hardware takes care of that automatically.
- * No need to copy the packet to a contiguous buffer
- * since the hardware is capable of scatter/gather DMA.
- */
- status = 0;
- nAdded = 0;
- txBd = firstTxBd = sc->txBdBase + sc->txBdHead;
- while (m) {
- /*
- * There are more mbufs in the packet than there
- * are transmit buffer descriptors.
- * Coalesce into a single buffer.
- */
- if (nAdded == sc->txBdCount) {
- struct mbuf *nm;
- int j;
- char *dest;
-
- /*
- * Get the pointer to the first mbuf of the packet
- */
- if (sc->txBdTail != sc->txBdHead)
- rtems_panic ("sendpacket coalesce");
- m = sc->txMbuf[sc->txBdTail];
-
- /*
- * Rescind the buffer descriptor READY bits
- */
- for (j = 0 ; j < sc->txBdCount ; j++)
- (sc->txBdBase + j)->stat_ctrl = 0;
-
- /*
- * Allocate an mbuf cluster
- * Toss the packet if allocation fails
- */
- MGETHDR (nm, M_DONTWAIT, MT_DATA);
- if (nm == NULL) {
- sc->txCoalesceFailed++;
- m_freem (m);
-
- return;
- }
- MCLGET (nm, M_DONTWAIT);
- if (nm->m_ext.ext_buf == NULL) {
- sc->txCoalesceFailed++;
- m_freem (m);
- m_free (nm);
-
- return;
- }
- nm->m_pkthdr = m->m_pkthdr;
- nm->m_len = nm->m_pkthdr.len;
-
- /*
- * Copy data from packet chain to mbuf cluster
- */
- sc->txCoalesced++;
- dest = nm->m_ext.ext_buf;
- while (m) {
- struct mbuf *n;
-
- if (m->m_len) {
- memcpy (dest, mtod(m, caddr_t), m->m_len);
- dest += m->m_len;
- }
- MFREE (m, n);
- m = n;
- }
-
- /*
- * Redo the send with the new mbuf cluster
- */
- m = nm;
- nAdded = 0;
- status = 0;
-
- continue;
- }
-
- /*
- * Wait for buffer descriptor to become available.
- */
- if ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
- /*
- * Clear old events
- */
- M68en302imp_intr_event = INTR_EVENT_BIT_TFINT | INTR_EVENT_BIT_TXB;
-
- /*
- * Wait for buffer descriptor to become available.
- * Note that the buffer descriptors are checked
- * *before* entering the wait loop -- this catches
- * the possibility that a buffer descriptor became
- * available between the `if' above, and the clearing
- * of the event register.
- * This is to catch the case where the transmitter
- * stops in the middle of a frame -- and only the
- * last buffer descriptor in a frame can generate
- * an interrupt.
- */
- m302Enet_retire_tx_bd (sc);
- while ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
- rtems_interrupt_level level;
- rtems_event_set events;
-
- /*
- * Unmask TXB (buffer transmitted) and
- * TXE (transmitter error) events.
- */
- rtems_interrupt_disable (level);
- M68en302imp_intr_mask |= INTR_MASK_BIT_TFIEN | INTR_MASK_BIT_TXIEN;
- rtems_interrupt_enable (level);
-
- rtems_bsdnet_event_receive (INTERRUPT_EVENT,
- RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT,
- &events);
- m302Enet_retire_tx_bd (sc);
- }
- }
-
- /*
- * The IP fragmentation routine in ip_output
- * can produce packet fragments with zero length.
- */
- if (m->m_len) {
- /*
- * Fill in the buffer descriptor.
- * Don't set the READY flag in the first buffer
- * descriptor till the whole packet has been readied.
- */
- txBd = sc->txBdBase + sc->txBdHead;
- txBd->p_buffer = mtod (m, void *);
- txBd->data_lgth = m->m_len;
-
- sc->txMbuf[sc->txBdHead] = m;
- status = nAdded ? BUF_STAT_READY : 0;
- if (++sc->txBdHead == sc->txBdCount) {
- status |= BUF_STAT_WRAP;
- sc->txBdHead = 0;
- }
- txBd->stat_ctrl = status;
- l = m;
- m = m->m_next;
- nAdded++;
-
- }
- else {
- /*
- * Just toss empty mbufs
- */
- struct mbuf *n;
- MFREE (m, n);
- m = n;
- if (l != NULL)
- l->m_next = m;
-
- }
- }
- if (nAdded) {
- /*
- * Send the packet
- */
- txBd->stat_ctrl = status | BUF_STAT_LAST | BUF_STAT_TX_CRC | BUF_STAT_INTERRUPT;
- firstTxBd->stat_ctrl |= BUF_STAT_READY;
- sc->txBdActiveCount += nAdded;
-
- }
-
-}
-
-/*
- * Driver transmit daemon
- */
-void
-scc_txDaemon (void *arg)
-{
-
- struct scc_softc *sc = (struct scc_softc *)arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
- struct mbuf *m;
- rtems_event_set events;
-
- for (;;) {
- /*
- * Wait for packet
- */
- rtems_bsdnet_event_receive (START_TRANSMIT_EVENT, RTEMS_EVENT_ANY | RTEMS_WAIT, RTEMS_NO_TIMEOUT, &events);
-
- /*
- * Send packets till queue is empty
- */
- for (;;) {
- /*
- * Get the next mbuf chain to transmit.
- */
- IF_DEQUEUE(&ifp->if_snd, m);
- if (!m)
- break;
- sendpacket (ifp, m);
- }
- ifp->if_flags &= ~IFF_OACTIVE;
- }
-
-}
-
-/*
- * Send packet (caller provides header).
- */
-static void
-scc_start (struct ifnet *ifp)
-{
- struct scc_softc *sc = ifp->if_softc;
-
- rtems_bsdnet_event_send (sc->txDaemonTid, START_TRANSMIT_EVENT);
- ifp->if_flags |= IFF_OACTIVE;
-}
-
-/*
- * Initialize and start the device
- */
-static void
-scc_init (void *arg)
-{
- struct scc_softc *sc = arg;
- struct ifnet *ifp = &sc->arpcom.ac_if;
-
- if (sc->txDaemonTid == 0) {
-
- /*
- * Set up SCC hardware
- */
- m302Enet_initialize_hardware (sc);
-
- sc->txDaemonTid = rtems_bsdnet_newproc ("SCtx", 4096, scc_txDaemon, sc);
- sc->rxDaemonTid = rtems_bsdnet_newproc ("SCrx", 4096, scc_rxDaemon, sc);
-
- }
-
- /*
- * Set flags appropriately
- */
-/* if (ifp->if_flags & IFF_PROMISC)
- m360.scc1.psmr |= 0x200;
- else
- m360.scc1.psmr &= ~0x200;
-*/
- /*
- * Tell the world that we're running.
- */
- ifp->if_flags |= IFF_RUNNING;
-
- /*
- * Enable receiver and transmitter
- */
- M68en302imp_ecntrl = ECNTRL_BIT_RESET | ECNTRL_BIT_ETHER_EN;
-
-}
-
-/*
- * Stop the device
- */
-static void
-scc_stop (struct scc_softc *sc)
-{
-
- struct ifnet *ifp = &sc->arpcom.ac_if;
-
- ifp->if_flags &= ~IFF_RUNNING;
-
- /*
- * Shut down receiver and transmitter
- */
- M68en302imp_ecntrl &= ~(ECNTRL_BIT_RESET | ECNTRL_BIT_ETHER_EN);
-
-}
-
-/*
- * Show interface statistics
- */
-static void
-scc_stats (struct scc_softc *sc)
-{
- printf (" Rx Interrupts:%-8lu", sc->rxInterrupts);
- printf (" Not First:%-8lu", sc->rxNotFirst);
- printf (" Not Last:%-8lu\r\n", sc->rxNotLast);
- printf (" Giant:%-8lu", sc->rxGiant);
- printf (" Runt:%-8lu", sc->rxRunt);
- printf (" Non-octet:%-8lu\r\n", sc->rxNonOctet);
- printf (" Bad CRC:%-8lu", sc->rxBadCRC);
- printf (" Overrun:%-8lu", sc->rxOverrun);
- printf (" Collision:%-8lu\r\n", sc->rxCollision);
-/* printf (" Discarded:%-8lu\r\n", (unsigned long)m360.scc1p.un.ethernet.disfc);
-*/
- printf (" Tx Interrupts:%-8lu", sc->txInterrupts);
- printf (" Deferred:%-8lu", sc->txDeferred);
- printf (" Missed Hearbeat:%-8lu\r\n", sc->txHeartbeat);
- printf (" No Carrier:%-8lu", sc->txLostCarrier);
- printf ("Retransmit Limit:%-8lu", sc->txRetryLimit);
- printf (" Late Collision:%-8lu\r\n", sc->txLateCollision);
- printf (" Underrun:%-8lu", sc->txUnderrun);
- printf (" Raw output wait:%-8lu", sc->txRawWait);
- printf (" Coalesced:%-8lu\r\n", sc->txCoalesced);
- printf (" Coalesce failed:%-8lu", sc->txCoalesceFailed);
- printf (" Retries:%-8lu\r\n", sc->txRetry);
-}
-
-/*
- * Driver ioctl handler
- */
-static int
-scc_ioctl (struct ifnet *ifp, ioctl_command_t command, caddr_t data)
-{
-
- struct scc_softc *sc = ifp->if_softc;
- int error = 0;
-
- switch (command) {
- case SIOCGIFADDR:
- case SIOCSIFADDR:
- ether_ioctl (ifp, command, data);
- break;
-
- case SIOCSIFFLAGS:
- switch (ifp->if_flags & (IFF_UP | IFF_RUNNING)) {
- case IFF_RUNNING:
- scc_stop (sc);
- break;
-
- case IFF_UP:
- scc_init (sc);
- break;
-
- case IFF_UP | IFF_RUNNING:
- scc_stop (sc);
- scc_init (sc);
- break;
-
- default:
- break;
- }
- break;
-
- case SIO_RTEMS_SHOW_STATS:
- scc_stats (sc);
- break;
-
- /*
- * FIXME: All sorts of multicast commands need to be added here!
- */
- default:
- error = EINVAL;
- break;
- }
- return error;
-
-}
-
-/*
- * Attach an SCC driver to the system
- */
-int
-rtems_ether1_driver_attach (struct rtems_bsdnet_ifconfig *config)
-{
- struct scc_softc *sc;
- struct ifnet *ifp;
- int mtu;
- int unitNumber;
- char *unitName;
-
- a_m68302_imp = (struct m68302_imp *)0x700000L;
- /*
- * Parse driver name
- */
- if ((unitNumber = rtems_bsdnet_parse_driver_name (config, &unitName)) < 0)
- return 0;
-
- /*
- * Is driver free?
- */
- if ((unitNumber <= 0) || (unitNumber > NSCCDRIVER)) {
- printf ("Bad SCC unit number.\r\n");
- return 0;
- }
- sc = &scc_softc[unitNumber - 1];
- ifp = &sc->arpcom.ac_if;
- if (ifp->if_softc != NULL) {
- printf ("Driver already in use.\r\n");
- return 0;
- }
-
- /*
- * Process options
- */
- if (config->hardware_address) {
- memcpy (sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN);
- }
-
- if (config->mtu)
- mtu = config->mtu;
- else
- mtu = ETHERMTU;
- if (config->rbuf_count)
- sc->rxBdCount = config->rbuf_count;
- else
- sc->rxBdCount = RX_BUF_COUNT;
- if (config->xbuf_count)
- sc->txBdCount = config->xbuf_count;
- else
- sc->txBdCount = TX_BUF_COUNT;
- sc->acceptBroadcast = !config->ignore_broadcast;
-
- /*
- * Set up network interface values
- */
- ifp->if_softc = sc;
- ifp->if_unit = unitNumber;
- ifp->if_name = unitName;
- ifp->if_mtu = mtu;
- ifp->if_init = scc_init;
- ifp->if_ioctl = scc_ioctl;
- ifp->if_start = scc_start;
- ifp->if_output = ether_output;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
- if (ifp->if_snd.ifq_maxlen == 0)
- ifp->if_snd.ifq_maxlen = ifqmaxlen;
-
- /*
- * Attach the interface
- */
- if_attach (ifp);
- ether_ifattach (ifp);
- return 1;
-};
diff --git a/c/src/lib/libbsp/m68k/gen68302/preinstall.am b/c/src/lib/libbsp/m68k/gen68302/preinstall.am
deleted file mode 100644
index 9d1687e..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/preinstall.am
+++ /dev/null
@@ -1,71 +0,0 @@
-## Automatically generated by ampolish3 - Do not edit
-
-if AMPOLISH3
-$(srcdir)/preinstall.am: Makefile.am
- $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
-endif
-
-PREINSTALL_DIRS =
-DISTCLEANFILES += $(PREINSTALL_DIRS)
-
-all-am: $(PREINSTALL_FILES)
-
-PREINSTALL_FILES =
-CLEANFILES = $(PREINSTALL_FILES)
-
-all-local: $(TMPINSTALL_FILES)
-
-TMPINSTALL_FILES =
-CLEANFILES += $(TMPINSTALL_FILES)
-
-$(PROJECT_LIB)/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_LIB)
- @: > $(PROJECT_LIB)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
-
-$(PROJECT_INCLUDE)/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_INCLUDE)
- @: > $(PROJECT_INCLUDE)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
-
-$(PROJECT_INCLUDE)/bsp/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_INCLUDE)/bsp
- @: > $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-
-$(PROJECT_LIB)/bsp_specs: bsp_specs $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/bsp_specs
-PREINSTALL_FILES += $(PROJECT_LIB)/bsp_specs
-
-$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h
-
-$(PROJECT_INCLUDE)/tm27.h: ../../shared/include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
-
-$(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h
-
-$(PROJECT_INCLUDE)/bsp/bootcard.h: ../../shared/include/bootcard.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/bootcard.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/bootcard.h
-
-$(PROJECT_INCLUDE)/coverhd.h: include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
-
-$(PROJECT_INCLUDE)/m302_int.h: include/m302_int.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/m302_int.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/m302_int.h
-
-$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
-TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
-
-$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
-PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
-
diff --git a/c/src/lib/libbsp/m68k/gen68302/start/start.S b/c/src/lib/libbsp/m68k/gen68302/start/start.S
deleted file mode 100644
index 0eb19e4..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/start/start.S
+++ /dev/null
@@ -1,255 +0,0 @@
-/* entry.s
- *
- * This file contains the entry point for the application.
- * The name of this entry point is compiler dependent.
- * It jumps to the BSP which is responsible for performing
- * all initialization.
- *
- * 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.
- */
-
-#include <rtems/asm.h>
-
- .set BAR, 0xF2 | Base Address Register location
- .set SCR, 0xF4 | System Control Register location
- .set BAR_VAL, 0x0f7f | BAR value
- .set SCR_VAL, 0x00080f00 | SCR value
- .set GIMR_VAL, 0x8780 |Global Interrupt Mode Register. (MUST BE WRITTEN).
- .set BaseAddr,(BAR_VAL&0x0fff)<<12 | MC68302 internal base address
-
- .set oSYSRAM, 0x000 | 576 bytes of internal system RAM
-
- .set oGIMR, 0x812
-
- .set oCS0_Base, 0x830 | 16 bits, Chip Sel 0 Base Reg
- .set oCS0_Option, 0x832 | 16 bits, Chip Sel 0 Option Reg
- .set oCS1_Base, 0x834 | 16 bits, Chip Sel 1 Base Reg
- .set oCS1_Option, 0x836 | 16 bits, Chip Sel 1 Option Reg
- .set oCS2_Base, 0x838 | 16 bits, Chip Sel 2 Base Reg
- .set oCS2_Option, 0x83a | 16 bits, Chip Sel 2 Option Reg
- .set oCS3_Base, 0x83c | 16 bits, Chip Sel 3 Base Reg
- .set oCS3_Option, 0x83e | 16 bits, Chip Sel 3 Option Reg
-
- .set tmpSRAM_BASE, 0x400000 | start of temporary SRAM
- .set FLASH_BASE, 0xc00000 | start of FLASH''s normal location
-
-BEGIN_CODE
- PUBLIC (M68Kvec) | Vector Table
-SYM (M68Kvec): | standard location for vectors
-V___ISSP: .long 0x00001000 |00 0 Reset: Initial SSP
-V____IPC: .long SYM(start)-V___ISSP |04 1 Reset: Initial PC
-V_BUSERR: .long Bad-V___ISSP |08 2 Bus Error
-V_ADRERR: .long Bad-V___ISSP |0c 3 Address Error
- .space 240 | reserve space for reset of vectors
-
-#if ( M68K_HAS_SEPARATE_STACKS == 1 )
-SYM (lowintstack):
- .space 4092 | reserve for interrupt stack
-SYM (hiintstack):
- .space 4 | end of interrupt stack
-#endif
-
- PUBLIC (start) | Default entry point for GNU
-SYM (start):
- move.w #0x2700,sr | Disable all interrupts
- move.w #BAR_VAL,BAR | Set Base Address Register
- move.l #SCR_VAL,SCR | Set System Control Register
- lea BaseAddr,a5
- move.w #GIMR_VAL,a5@(oGIMR) | Set Global Interrupt Mode Register
-
-|
-| Set up chip select registers for the remapping process.
-|
-
-|
-| 0 X x x x x
-| 0 000 0 0-- - --- ---- ---- ----
-| x xxx x xxx x xx
-|
- move.w #0xc001,a5@(oCS0_Base) | Expand CS0 to full size (FLASH)
- move.w #0x1f82,a5@(oCS0_Option) | 000000-03ffff, R, 0 WS
-
-|
-| X x x x x x
-| 0 100 0 0-- - --- ---- ---- ----
-| x xxx x xxx x xx
-|
- move.w #0xa801,a5@(oCS1_Base) | Set up and enable CS1 (SRAM)
- move.w #0x1f80,a5@(oCS1_Option) | 400000-43ffff, RW, 0 WS
-
-|
-| Copy the initial boot FLASH area to the temporary SRAM location.
-|
- moveq #0,d0
- movea.l d0,a0 | a0 -> start of FLASH
- lea tmpSRAM_BASE,a1 | a1 -> start of tmp SRAM
-| moveq #(endPreBoot-V___ISSP)/4,d0 | # longs to copy
- moveq #127,d0
-cpy_flash: move.l (a0)+,(a1)+ | copy
- subq.l #1,d0
- bne cpy_flash
-
-|
-| Copy remap code to 68302''s internal system RAM.
-|
- movea.w #begRemap-V___ISSP,a0 | a0 -> remap code
- lea a5@(oSYSRAM),a1 | a1 -> internal system RAM
-| moveq #(endRemap-begRemap)/2-1,d0 | d0 = # words to copy
- moveq #11,d0
-cpy_remap: move.w (a0)+,(a1)+ | copy
- dbra d0,cpy_remap
-
-|
-| Jump to the remap code in the 68302''s internal system RAM.
-|
- jmp a5@(oSYSRAM) | (effectively a jmp begRemap)
-
-|
-| This remap code, when executed from the 68302''s internal system RAM
-| will 1) remap CS1 so that SRAM is at 0
-| 2) remap CS0 so that FLASH is at FLASH_BASE
-| and 3) jump to executable code in the remapped FLASH.
-|
-begRemap: move.w #0xa001,a5@(oCS1_Base) | Move CS1 (SRAM)
- move.w #0xd801,a5@(oCS0_Base) | Move CS0 (FLASH)
- lea FLASH_BASE,a0
- jmp a0@(endRemap-V___ISSP.w) | Jump back to FLASH
-endRemap:
-|
-| Now set up the remaining chip select registers.
-|
-
-|
-| 4 0 x x x x
-| 1 000 1 111 0 000 0--- ---- ----
-| x xxx x xxx x xx
-|
- move.w #0xb1e1,a5@(oCS2_Base) | Set up and enable CS2 (dpRAM)
- move.w #0x1ff0,a5@(oCS2_Option) | 8f0000-8f07ff, RW, 0 WS
-
-|
-| 8 X x x x x
-| 1 000 0 0-- - --- ---- ---- ----
-| x xxx x xxx x xx
-|
- move.w #0xd001,a5@(oCS3_Base) | Set up and enable CS3 (IO)
- move.w #0x1f80,a5@(oCS3_Option) | 800000-83ffff, RW, 0 WS
-
-endPreBoot:
-
- move.b #0x30,0x800001 | set status LED amber
-
- .set oPIOB_Ctrl, 0x824
- .set oPIOB_DDR, 0x826
- .set oPIOB_Data, 0x828
-
- .set oPIOA_Ctrl, 0x81e
- .set oPIOA_DDR, 0x820
- .set oPIOA_Data, 0x822
-
- move.w #0x0ff8,a5@(oPIOB_Data) | Make output follow resistors.
- move.w #0x00ff,a5@(oPIOB_DDR) | Set up PB7-PB0 for output.
- move.w #0x0080,a5@(oPIOB_Ctrl) | Set up WDOG* as dedicated
- | peripheral pins.
-
- move.w #0x1fff,a5@(oPIOA_Data) | Make output follow resistors.
- move.w #0xea2a,a5@(oPIOA_DDR) | Set up PA15-PA0 for in/output.
- move.w #0x0003,a5@(oPIOA_Ctrl) | Set up TXD2/RXD2 as dedicated
- | peripheral pins.
-
-|
-| Place "Bad" in all vectors from 010 thru 0ec. Vectors 0f0 and 0f4
-| are not set because they are the 68302''s BAR and SCR.
-|
- movea.w #0x010,a0
- moveq #(0x0f0-0x010)/4-1,d0
- move.l #Bad,d1
-cpy_Bad: move.l d1,(a0)+
- dbra d0,cpy_Bad
-
- .set vbase, 0x0200
-
- lea vbase,a0
- moveq #31,d0
-cpy_Bad1: move.l d1,(a0)+
- dbra d0,cpy_Bad1
-
-|
-| Fill in special locations to configure OS
-|
- move.l #Bad,0x008 | Bus Error
- move.l #Bad,0x00c | Address Error
- move.l #Bad,0x024 | Trace
-| move.l #KE_IRET,$0b4 | pSOS+ RET_I Call
-
-| move.l #_cnsl_isr,vbase+0x028 | SCC2
- move.l #timerisr,vbase+0x018 | Timer ISR
-
- |
- | zero out uninitialized data area
- |
-zerobss:
- moveal # SYM (_clear_end),a0 | find end of .bss
- moveal # SYM (_clear_start),a1 | find beginning of .bss
- moveq #0,d0
-
-loop: movel d0,a1 at + | to zero out uninitialized
- cmpal a0,a1
- jlt loop | loop until _clear_end reached
-
- movel d0, SYM (_stack_init) | Set Stack pointer
- movw #0x3700,sr | SUPV MODE,INTERRUPTS OFF!!!
- movel d0,a7 | set master stack pointer
- movel d0,a6 | set base pointer
-
- /*
- * RTEMS should maintain a separate interrupt stack on CPUs
- * without one in hardware. This is currently not supported
- * on versions of the m68k without a HW intr stack.
- */
-
-#if ( M68K_HAS_SEPARATE_STACKS == 1 )
- lea SYM (hiintstack),a0 | a0 = high end of intr stack
- movec a0,isp | set interrupt stack
-#endif
-
- move.l #0,a7 at - | command line
- jsr SYM (boot_card)
-
- nop
-Bad: bra Bad
-
- nop
-END_CODE
-
-BEGIN_DATA
-
- PUBLIC (start_frame)
-SYM (start_frame):
- .space 4,0
-
- PUBLIC (stack_start)
-SYM (stack_start):
- .space 4,0
-END_DATA
-
-BEGIN_BSS
-
- PUBLIC (environ)
- .align 2
-SYM (environ):
- .long 0
-
- PUBLIC (heap_size)
- .set SYM (heap_size),0x2000
-
- PUBLIC (stack_size)
- .set SYM (stack_size),0x1000
-
-END_DATA
-END
diff --git a/c/src/lib/libbsp/m68k/gen68302/startup/linkcmds b/c/src/lib/libbsp/m68k/gen68302/startup/linkcmds
deleted file mode 100644
index 34f42b9..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/startup/linkcmds
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * This file contains directives for the GNU linker which are specific
- * to the Generic MC68302 board.
- *
- * COPYRIGHT (c) 1989-2007.
- * 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.
- */
-
-MEMORY
-{
- ram : org = 0x0000, l = 16M
-}
-
-m302 = 0xf7f000;
-_VBR = 0x000000; /* location of the VBR table (in RAM) */
-
-/*
- * Declare some sizes.
- */
-RamBase = DEFINED(RamBase) ? RamBase : 0x0;
-RamSize = DEFINED(RamSize) ? RamSize : 16M;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
-
-SECTIONS
-{
- ram : {
- . = 0xc00000;
- } >ram
-
- /*
- * Text, data and bss segments
- */
- .text : {
- *(.text*)
-
- /*
- * C++ constructors/destructors
- */
- *(.gnu.linkonce.t.*)
-
- /*
- * Initialization and finalization code.
- *
- * Various files can provide initialization and finalization
- * functions. crtbegin.o and crtend.o are two instances. The
- * body of these functions are in .init and .fini sections. We
- * accumulate the bodies here, and prepend function prologues
- * from crti.o and function epilogues from crtn.o. crti.o must
- * be linked first; crtn.o must be linked last. Because these
- * are wildcards, it doesn't matter if the user does not
- * actually link against crti.o and crtn.o; the linker won't
- * look for a file to match a wildcard. The wildcard also
- * means that it doesn't matter which directory crti.o and
- * crtn.o are in.
- */
- PROVIDE (_init = .);
- *crti.o(.init)
- *(.init)
- *crtn.o(.init)
- PROVIDE (_fini = .);
- *crti.o(.fini)
- *(.fini)
- *crtn.o(.fini)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /*
- * C++ constructors/destructors
- *
- * gcc uses crtbegin.o to find the start of the constructors
- * and destructors so we make sure it is first. Because this
- * is a wildcard, it doesn't matter if the user does not
- * actually link against crtbegin.o; the linker won't look for
- * a file to match a wildcard. The wildcard also means that
- * it doesn't matter which directory crtbegin.o is in. The
- * constructor and destructor list are terminated in
- * crtend.o. The same comments apply to it.
- */
- . = ALIGN (16);
- *crtbegin.o(.ctors)
- *(.ctors)
- *crtend.o(.ctors)
- *crtbegin.o(.dtors)
- *(.dtors)
- *crtend.o(.dtors)
-
- /*
- * Exception frame info
- */
- . = ALIGN (16);
- *(.eh_frame)
-
- /*
- * Read-only data
- */
- . = ALIGN (16);
- _rodata_start = . ;
- *(.rodata*)
- KEEP (*(SORT(.rtemsroset.*)))
- *(.gnu.linkonce.r*)
-
- . = ALIGN (16);
- PROVIDE (_etext = .);
- } >ram
-
- .tdata : {
- _TLS_Data_begin = .;
- *(.tdata .tdata.* .gnu.linkonce.td.*)
- _TLS_Data_end = .;
- } >ram
-
- .tbss : {
- _TLS_BSS_begin = .;
- *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
- _TLS_BSS_end = .;
- } >ram
-
- _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
- _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
- _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
- _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
- _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
- _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
-
- .data : {
- PROVIDE (_copy_start = .);
- *(.data*)
- KEEP (*(SORT(.rtemsrwset.*)))
- *(.gnu.linkonce.d*)
- *(.gcc_except_table*)
- *(.jcr)
- . = ALIGN (16);
- PROVIDE (_edata = .);
- PROVIDE (_copy_end = .);
- } >ram
- .bss : {
- _clear_start = .;
- *(.dynbss)
- *(.bss* .gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN (16);
- PROVIDE (end = .);
-
- . += _StackSize;
- . = ALIGN (16);
- _stack_init = .;
- _clear_end = .;
-
- WorkAreaBase = .;
- } >ram
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
-
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
-
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
-
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
-
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
-
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /* These must appear regardless of . */
-}
diff --git a/c/src/lib/libbsp/m68k/gen68302/timer/timer.c b/c/src/lib/libbsp/m68k/gen68302/timer/timer.c
deleted file mode 100644
index 6749efc..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/timer/timer.c
+++ /dev/null
@@ -1,105 +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.
- */
-
-#include <rtems.h>
-#include <bsp.h>
-#include <rtems/btimer.h>
-#include <rtems/m68k/m68302.h>
-
-#define TMR2_VAL 0x071b /* Timer mode register
- * (section 3.5.2.1 in 68302 manual)
- * 15-8: "7" prescaler divide by 8 (x+1)
- * 7-6: 00 dis. intr. on capture event
- * 5: 0 active-low pulse
- * 4: 1 intr. on reaching reference
- * 3: 1 restart counter on reference
- * 2-1: 01 master clock input source
- * 0: 1 enable timer
- */
-#define TRR2_VAL 2000 /* Timer reference register
- * (section 3.5.2.2 in 68302 manual)
- * 2000 ticks @ (16MHz/1)/8 = 1-ms count
- */
-
-uint32_t Timer_interrupts;
-
-bool benchmark_timer_find_average_overhead;
-
-rtems_isr timerisr(void);
-
-void benchmark_timer_initialize( void )
-{
- m302.reg.tmr2 = 0; /* disable timer */
-
- Timer_interrupts = 0; /* clear timer ISR count */
-
- m302.reg.trr2 = TRR2_VAL; /* set timer reference register */
- m302.reg.tmr2 = TMR2_VAL; /* set timer mode register */
- m302.reg.imr |= RBIT_IMR_TIMER2; /* set 68302 int-mask to allow ints */
-}
-
-/*
- * The following controls the behavior of benchmark_timer_read().
- *
- * FIND_AVG_OVERHEAD * instructs the routine to return the "raw" count.
- *
- * AVG_OVEREHAD is the overhead for starting and stopping the timer. It
- * is usually deducted from the number returned.
- *
- * LEAST_VALID is the lowest number this routine should trust. Numbers
- * below this are "noise" and zero is returned.
- */
-
-#define AVG_OVERHEAD 0 /* It typically takes X.X microseconds */
- /* (Y countdowns) to start/stop the timer. */
- /* This value is in microseconds. */
-#define LEAST_VALID 1 /* Don't trust a clicks value lower than this */
-
-/*
- * Return timer value in 1/2-microsecond units
- */
-benchmark_timer_t benchmark_timer_read( void )
-{
- uint16_t clicks;
- uint32_t total;
-
- /*
- * Read the timer and see how many clicks it has been since counter
- * rolled over.
- */
-
- clicks = m302.reg.tcn2;
-
- /*
- * Total is calculated by taking into account the number of timer overflow
- * interrupts since the timer was initialized and clicks since the last
- * interrupts.
- */
-
- total = (Timer_interrupts * TRR2_VAL) + clicks;
-
- if ( benchmark_timer_find_average_overhead == true )
- return total; /* in XXX microsecond units */
-
- if ( total < LEAST_VALID )
- return 0; /* below timer resolution */
-
- /*
- * Convert 1/2-microsecond count into microseconds
- */
-
- return (total - AVG_OVERHEAD) >> 1;
-}
-
-void benchmark_timer_disable_subtracting_average_overhead(
- bool find_flag
-)
-{
- benchmark_timer_find_average_overhead = find_flag;
-}
diff --git a/c/src/lib/libbsp/m68k/gen68302/timer/timerisr.S b/c/src/lib/libbsp/m68k/gen68302/timer/timerisr.S
deleted file mode 100644
index 1fe3931..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/timer/timerisr.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Handle 68302 TIMER2 interrupts.
- *
- * All code in this routine is pure overhead which can perturb the
- * accuracy of RTEMS' timing test suite.
- *
- * See also: benchmark_timer_read()
- *
- * To reduce overhead this is best to be the "rawest" hardware interupt
- * handler you can write. This should be the only interrupt which can
- * occur during the measured time period.
- *
- * An external counter, Timer_interrupts, is incremented.
- */
-
-#include <rtems/asm.h>
-
-BEGIN_CODE
- PUBLIC(timerisr)
-SYM(timerisr):
- move.w #0x0040,SYM(m302)+2072 | clear interrupt in-service bit
- move.b #3,SYM(m302)+2137 | clear timer interrupt event register
- addq.l #1,SYM(Timer_interrupts) | increment timer value
- rte
-END_CODE
-END
diff --git a/c/src/lib/libbsp/m68k/gen68302/times b/c/src/lib/libbsp/m68k/gen68302/times
deleted file mode 100644
index 4d83992..0000000
--- a/c/src/lib/libbsp/m68k/gen68302/times
+++ /dev/null
@@ -1,189 +0,0 @@
-#
-# Timing Test Suite Results for the generic 68302 BSP
-#
-
-NOTE: This BSP is used submitted and no information is currently available.
-
-Board: gen68302
-CPU: Motorola 68302
-Clock Speed: 16 Mhz
-Memory Configuration: SRAM, DRAM, cache, etc
-Wait States:
-
-Times Reported in: cycles, microseconds, etc
-Timer Source: Count Down Timer, on-CPU cycle counter, etc
-
-Column A: unused
-Column B: unused
-
-# DESCRIPTION A B
-== ================================================================= ==== ====
- 1 rtems_semaphore_create 20
- rtems_semaphore_delete 21
- rtems_semaphore_obtain: available 15
- rtems_semaphore_obtain: not available -- NO_WAIT 15
- rtems_semaphore_release: no waiting tasks 16
-
- 2 rtems_semaphore_obtain: not available -- caller blocks 62
-
- 3 rtems_semaphore_release: task readied -- preempts caller 55
-
- 4 rtems_task_restart: blocked task -- preempts caller 77
- rtems_task_restart: ready task -- preempts caller 70
- rtems_semaphore_release: task readied -- returns to caller 25
- rtems_task_create 57
- rtems_task_start 31
- rtems_task_restart: suspended task -- returns to caller 36
- rtems_task_delete: suspended task 47
- rtems_task_restart: ready task -- returns to caller 37
- rtems_task_restart: blocked task -- returns to caller 46
- rtems_task_delete: blocked task 50
-
- 5 rtems_task_suspend: calling task 51
- rtems_task_resume: task readied -- preempts caller 49
-
- 6 rtems_task_restart: calling task 59
- rtems_task_suspend: returns to caller 18
- rtems_task_resume: task readied -- returns to caller 19
- rtems_task_delete: ready task 50
-
- 7 rtems_task_restart: suspended task -- preempts caller 70
-
- 8 rtems_task_set_priority: obtain current priority 12
- rtems_task_set_priority: returns to caller 27
- rtems_task_mode: obtain current mode 5
- rtems_task_mode: no reschedule 5
- rtems_task_mode: reschedule -- returns to caller 8
- rtems_task_mode: reschedule -- preempts caller 39
- rtems_clock_set 33
- rtems_clock_get 3
-
- 9 rtems_message_queue_create 110
- rtems_message_queue_send: no waiting tasks 37
- rtems_message_queue_urgent: no waiting tasks 37
- rtems_message_queue_receive: available 31
- rtems_message_queue_flush: no messages flushed 12
- rtems_message_queue_flush: messages flushed 16
- rtems_message_queue_delete 26
-
-10 rtems_message_queue_receive: not available -- NO_WAIT 15
- rtems_message_queue_receive: not available -- caller blocks 62
-
-11 rtems_message_queue_send: task readied -- preempts caller 72
-
-12 rtems_message_queue_send: task readied -- returns to caller 39
-
-13 rtems_message_queue_urgent: task readied -- preempts caller 72
-
-14 rtems_message_queue_urgent: task readied -- returns to caller 39
-
-15 rtems_event_receive: obtain current events 1
- rtems_event_receive: not available -- NO_WAIT 12
- rtems_event_receive: not available -- caller blocks 56
- rtems_event_send: no task readied 12
- rtems_event_receive: available 12
- rtems_event_send: task readied -- returns to caller 24
-
-16 rtems_event_send: task readied -- preempts caller 55
-
-17 rtems_task_set_priority: preempts caller 62
-
-18 rtems_task_delete: calling task 83
-
-19 rtems_signal_catch 9
- rtems_signal_send: returns to caller 15
- rtems_signal_send: signal to self 18
- exit ASR overhead: returns to calling task 22
- exit ASR overhead: returns to preempting task 49
-
-20 rtems_partition_create 35
- rtems_region_create 23
- rtems_partition_get_buffer: available 15
- rtems_partition_get_buffer: not available 13
- rtems_partition_return_buffer 18
- rtems_partition_delete 16
- rtems_region_get_segment: available 22
- rtems_region_get_segment: not available -- NO_WAIT 21
- rtems_region_return_segment: no waiting tasks 19
- rtems_region_get_segment: not available -- caller blocks 64
- rtems_region_return_segment: task readied -- preempts caller 74
- rtems_region_return_segment: task readied -- returns to caller 44
- rtems_region_delete 16
- rtems_io_initialize 2
- rtems_io_open 1
- rtems_io_close 1
- rtems_io_read 1
- rtems_io_write 1
- rtems_io_control 1
-
-21 rtems_task_ident 149
- rtems_message_queue_ident 145
- rtems_semaphore_ident 156
- rtems_partition_ident 145
- rtems_region_ident 148
- rtems_port_ident 145
- rtems_timer_ident 145
- rtems_rate_monotonic_ident 145
-
-22 rtems_message_queue_broadcast: task readied -- returns to caller 42
- rtems_message_queue_broadcast: no waiting tasks 17
- rtems_message_queue_broadcast: task readied -- preempts caller 78
-
-23 rtems_timer_create 14
- rtems_timer_fire_after: inactive 22
- rtems_timer_fire_after: active 24
- rtems_timer_cancel: active 15
- rtems_timer_cancel: inactive 13
- rtems_timer_reset: inactive 21
- rtems_timer_reset: active 23
- rtems_timer_fire_when: inactive 34
- rtems_timer_fire_when: active 34
- rtems_timer_delete: active 19
- rtems_timer_delete: inactive 17
- rtems_task_wake_when 69
-
-24 rtems_task_wake_after: yield -- returns to caller 9
- rtems_task_wake_after: yields -- preempts caller 45
-
-25 rtems_clock_tick 4
-
-26 _ISR_Disable 0
- _ISR_Flash 1
- _ISR_Enable 1
- _Thread_Disable_dispatch 0
- _Thread_Enable_dispatch 7
- _Thread_Set_state 11
- _Thread_Disptach (NO FP) 31
- context switch: no floating point contexts 21
- context switch: self 10
- context switch: to another task 10
- context switch: restore 1st FP task 25
- fp context switch: save idle, restore idle 31
- fp context switch: save idle, restore initialized 19
- fp context switch: save initialized, restore initialized 20
- _Thread_Resume 7
- _Thread_Unblock 7
- _Thread_Ready 9
- _Thread_Get 4
- _Semaphore_Get 2
- _Thread_Get: invalid id 0
-
-27 interrupt entry overhead: returns to interrupted task 6
- interrupt exit overhead: returns to interrupted task 6
- interrupt entry overhead: returns to nested interrupt 6
- interrupt exit overhead: returns to nested interrupt 5
- interrupt entry overhead: returns to preempting task 7
- interrupt exit overhead: returns to preempting task 36
-
-28 rtems_port_create 16
- rtems_port_external_to_internal 11
- rtems_port_internal_to_external 11
- rtems_port_delete 16
-
-29 rtems_rate_monotonic_create 15
- rtems_rate_monotonic_period: initiate period -- returns to caller 21
- rtems_rate_monotonic_period: obtain status 13
- rtems_rate_monotonic_cancel 16
- rtems_rate_monotonic_delete: inactive 18
- rtems_rate_monotonic_delete: active 20
- rtems_rate_monotonic_period: conclude periods -- caller blocks 53
More information about the vc
mailing list