summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-10 23:50:48 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-10 23:50:48 +0000
commitf9877d257769bd19f38189024fc38b14fe5460ca (patch)
treeec627f3578b388f153d090a42167f22da9548e72 /c/src/lib
parent2004-11-10 Richard Campbell <richard.campbell@oarcorp.com> (diff)
downloadrtems-f9877d257769bd19f38189024fc38b14fe5460ca.tar.bz2
2004-11-10 Richard Campbell <richard.campbell@oarcorp.com>
* Makefile.am, configure.ac, bootloader/Makefile.am, include/bsp.h, wrapup/Makefile.am: Add MVME2100 BSP and MPC8240 support. There was also a significant amount of spelling and whitespace cleanup. * README.MVME2100: New file.
Diffstat (limited to 'c/src/lib')
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog7
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am22
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/README.MVME2100123
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/bootloader/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac10
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h40
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.am2
7 files changed, 200 insertions, 6 deletions
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog
index ebbe2b70e0..d7183642ff 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog
@@ -1,3 +1,10 @@
+2004-11-10 Richard Campbell <richard.campbell@oarcorp.com>
+
+ * Makefile.am, configure.ac, bootloader/Makefile.am, include/bsp.h,
+ wrapup/Makefile.am: Add MVME2100 BSP and MPC8240 support. There was
+ also a significant amount of spelling and whitespace cleanup.
+ * README.MVME2100: New file.
+
2004-11-05 Joel Sherrill <joel@OARcorp.com>
* startup/linkcmds: Add .gnu.linkonce.b and .gnu.linkonce.bs sections.
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am
index b3d09acf20..d322e589db 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am
@@ -25,6 +25,7 @@ include_bspdir = $(includedir)/bsp
include_HEADERS += ../../powerpc/shared/include/nvram.h
include_HEADERS += ../../shared/include/coverhd.h
+include_HEADERS += ../../shared/tod.h
EXTRA_DIST = ../../powerpc/shared/start/start.S
start$(LIB_VARIANT).$(OBJEXT): ../../powerpc/shared/start/start.S
@@ -57,6 +58,20 @@ startup_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
noinst_DATA += startup$(LIB_VARIANT).rel
+EXTRA_PROGRAMS += tod.rel
+CLEANFILES += tod.rel
+tod_rel_SOURCES = ../../shared/tod.c ../../powerpc/shared/tod/todcfg.c
+tod_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
+tod_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+EXTRA_PROGRAMS += tod_g.rel
+CLEANFILES += tod_g.rel
+tod_g_rel_SOURCES = $(tod_rel_SOURCES)
+tod_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
+tod_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+noinst_DATA += tod$(LIB_VARIANT).rel
+
EXTRA_PROGRAMS += pclock.rel
CLEANFILES += pclock.rel
pclock_rel_SOURCES = ../../powerpc/shared/clock/p_clock.c
@@ -229,7 +244,8 @@ noinst_DATA += vme$(LIB_VARIANT).rel
all-local: $(PREINSTALL_FILES) $(TMPINSTALL_FILES)
-EXTRA_DIST += BOOTING README.MVME2300 README.OTHERBOARDS README.dec21140
+EXTRA_DIST += BOOTING README.mtx603e README.MVME2100 README.MVME2300 \
+ README.OTHERBOARDS README.mcp750 README.MVME2307 README.dec21140
EXTRA_DIST += times.mcp750 times.mvme2307
PREINSTALL_DIRS =
@@ -275,6 +291,10 @@ $(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
+$(PROJECT_INCLUDE)/tod.h: ../../shared/tod.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tod.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/tod.h
+
$(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT): start$(LIB_VARIANT).$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT)
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/README.MVME2100 b/c/src/lib/libbsp/powerpc/motorola_powerpc/README.MVME2100
new file mode 100644
index 0000000000..d12dd8035f
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/README.MVME2100
@@ -0,0 +1,123 @@
+#
+# $Id$
+#
+
+The MVME2100 is a Motorola VMEbus board which is similar to the other
+Motorola PowerPC boards supported by this BSP. But it does not support
+the Motorola CPU Configuration Register. This makes it impossible to
+dynamically probe and determine that you are executing on this board
+variant. So this BSP variant must be explicitly built to only support
+the MVME2100. The complete list of differences found so far is:
+
+ * No CPU Configuration Register
+ * one COM port
+ * COM port is on PCI IRQ not ISA IRQ
+ * limited on RAM (32 or 64 MB)
+ * uses the EPIC interrupt controller on the MPC8240
+ * does not have an ISA bus but has an ISA I/O address space
+ * cannot set DBAT2 in bspstart like other variants because
+ there are PCI/ISA Interrupt Acknowledge registers at this space
+ This BSP may have left some PCI memory uncovered
+ * PPCBug starts programs with vectors still in ROM
+
+Supported Features:
+ - Interrupt driven console using termios
+ - Network device driver
+ - Real-Time Clock driver
+ - Clock Tick Device Driver
+
+Things to address:
+ - Does not return to monitor
+ - Level 1 cache is disabled for now
+ - Check on trying to read CPU Configuration Register for CHRP/Prep for PCI
+ and report a failure if in the wrong mode. May be able to set the model
+ but it may be hard to test if we break PPCBug.
+ - Use NVRAM for network configuration information
+
+BSP Features Not Implemented:
+ - VMEbus mapped in but untested
+ - OpenPIC features not required for BSP are not supported
+
+Memory Map
+==========
+ BAT Mapping
+
+ ffff ffff |------------------------------------| ----- ffff ffff
+ | ROM/FLASH Bank 0 | |
+ fff0 0000 |------------------------------------| |
+ | System I/O | |
+ ffe0 0000 |------------------------------------| |
+ | Replicated ROM/FLASH Bank 0 | |
+ | Replicated System I/O | |
+ ff80 0000 |------------------------------------| |
+ | ROM/FLASH Bank 1 | DBAT3
+ ff00 0000 |------------------------------------| - Supervisor R/W
+ | PCI Interrupt Acknowledge | - Cache Inhibited
+ fef0 0000 |------------------------------------| - Guarded
+ | PCI Configuration Data Register | |
+ fee0 0000 |------------------------------------| |
+ | PCI Configuration Address Register | |
+ fec0 0000 |------------------------------------| |
+ | PCI I/O Space | |
+ fe80 0000 |------------------------------------| |
+ | PCI/ISA I/O Space | |
+ fe00 0000 |------------------------------------| |
+ | PCI/ISA Memory Space | |
+ fd00 0000 |------------------------------------| |
+ | | |
+ | xxxxxxxxxxxxxx| ----- f000 0000
+ | x not mapped |
+ | xxxxxxxxxxxxxx| ----- 9000 0000
+ | | |
+ | | |
+ | PCI Memory Space | DBAT2
+ | | - Supervisor R/W
+ | | - Cache Inhibited
+ | | - Guarded
+ | | |
+ | | |
+ | | |
+ 8000 0000 |------------------------------------| ----- 8000 0000
+ | x |
+ | x not mapped |
+ | Reserved xxxxxxxxxxxxxx| ----- 1000 0000
+ | | |
+ | | |
+ 0200 0000 |------------------------------------| |
+ | | |
+ | | |
+ | | |
+ | | |
+ | DRAM (32MB) | DBAT1/IBAT1
+ | | - Supervisor R/W
+ | | |
+ | | |
+ | | |
+ | | |
+ 0000 0000 |------------------------------------| ----- 0000 0000
+
+
+TTCP Performance on First Day Run
+=================================
+Fedora Core 1 on (according to /proc/cpuinfo) a 300 Mhz P3 using Netgear
+10/100 CardBus NIC on a dedicated 10BaseT LAN.
+
+ON MVME2100: ttcp -t -s 192.168.2.107
+REPORTED ON MVME2100:
+ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp -> 192.168.2.107
+ttcp-t: socket
+ttcp-t: connect
+ttcp-t: 16777216 bytes in 20.80 real seconds = 787.69 KB/sec +++
+ttcp-t: 2048 I/O calls, msec/call = 10.40, calls/sec = 98.46
+ttcp-t: 0.0user 20.8sys 0:20real 100% 0i+0d 0maxrss 0+0pf 0+0csw
+
+ON MVME2100: ttcp -t -s 192.168.2.107
+REPORTED ON MVME2100:
+ttcp -r -s
+ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp
+ttcp-r: socket
+ttcp-r: accept from 192.168.2.107
+ttcp-r: 16777216 bytes in 15.41 real seconds = 1063.21 KB/sec +++
+ttcp-r: 11588 I/O calls, msec/call = 1.36, calls/sec = 751.98
+ttcp-r: 0.0user 15.4sys 0:15real 100% 0i+0d 0maxrss 0+0pf 0+0csw
+
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/bootloader/Makefile.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/bootloader/Makefile.am
index 2dd5f82d6e..f1defd5919 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/bootloader/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/bootloader/Makefile.am
@@ -29,7 +29,7 @@ DEFAULT_INCLUDES =
# Remove references to EABI when compiling bootloader
BOOTLOADER_CPU_FLAGS=$(subst -msdata=eabi,,$(subst -meabi,,$(CPU_CFLAGS)))
-AM_CPPFLAGS = -D__BOOT__ -DDEBUG
+AM_CPPFLAGS = -D__BOOT__
AM_CFLAGS = $(GCC_SPECS) -specs bsp_specs -qrtems -mrelocatable -msoft-float \
-mstrict-align -fno-builtin -Wall -mmultiple -mstring -O2 \
-fomit-frame-pointer -ffixed-r13 -mno-sdata $(BOOTLOADER_CPU_CFLAGS)
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac b/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac
index c7b2bc9916..115828ebe4 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac
@@ -31,6 +31,16 @@ RTEMS_BSPOPTS_HELP([PPC_USE_DATA_CACHE],
of PowerPC 603e revisions and emulator versions.
The BSP actually contains the call that enables this.])
+RTEMS_BSPOPTS_SET([mvme2100],[mvme2100],[1])
+RTEMS_BSPOPTS_SET([mvme2100],[*],[])
+RTEMS_BSPOPTS_HELP([mvme2100],
+[Defined for MVME2100 -- undefined for others])
+
+RTEMS_BSPOPTS_SET([mpc8240],[mvme2100],[1])
+RTEMS_BSPOPTS_SET([mpc8240],[*],[])
+RTEMS_BSPOPTS_HELP([mpc8240],
+[Defined for boards with MPC8240 -- undefined for others])
+
## HACK: This should better be propagated through the BSP's bsp.h.
## however, this BSP doesn't have one :(
AC_DEFINE_UNQUOTED([USE_ENHANCED_INTR_API],[1],
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h b/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h
index dc7b0d3b91..4d88ce7ca7 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h
@@ -26,26 +26,58 @@
* - Interrupt stack space is not minimum if defined.
*/
+#if !defined(mvme2100)
#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 2
+#endif
+
#define CONFIGURE_INTERRUPT_STACK_MEMORY (16 * 1024)
-/* fundamental addresses for this BSP (PREPxxx are from libcpu/io.h) */
-#define _IO_BASE PREP_ISA_IO_BASE
+/* fundamental addresses for BSP (CHRPxxx and PREPxxx are from libcpu/io.h) */
+#if defined(mvme2100)
+#define _IO_BASE CHRP_ISA_IO_BASE
+#define _ISA_MEM_BASE CHRP_ISA_MEM_BASE
+/* address of our ram on the PCI bus */
+#define PCI_DRAM_OFFSET CHRP_PCI_DRAM_OFFSET
+#define PCI_MEM_BASE 0x80000000
+#define PCI_MEM_BASE_ADJUSTMENT 0
+
+#else
+#define _IO_BASE PREP_ISA_IO_BASE
#define _ISA_MEM_BASE PREP_ISA_MEM_BASE
/* address of our ram on the PCI bus */
#define PCI_DRAM_OFFSET PREP_PCI_DRAM_OFFSET
/* offset of pci memory as seen from the CPU */
#define PCI_MEM_BASE PREP_ISA_MEM_BASE
+#define PCI_MEM_BASE_ADJUSTMENT PREP_ISA_MEM_BASE
+#endif
+
/*
- * base address definitions for several devices
+ * Base address definitions for several devices
*
+ * MVME2100 is very similar but has fewer devices and uses on-CPU EPIC
+ * implementation of OpenPIC controller. It also cannot be probed to
+ * find out what it is which is VERY different from other Motorola boards.
*/
+
+#if defined(mvme2100)
+#define BSP_UART_IOBASE_COM1 ((_IO_BASE)+0x01e10000)
+/* #define BSP_UART_IOBASE_COM1 (0xffe10000) */
+#define BSP_OPEN_PIC_BASE_OFFSET 0x40000
+
+#define MVME_HAS_DEC21140
+#else
#define BSP_UART_IOBASE_COM1 ((_IO_BASE)+0x3f8)
#define BSP_UART_IOBASE_COM2 ((_IO_BASE)+0x2f8)
+
#define BSP_KBD_IOBASE ((_IO_BASE)+0x60)
#define BSP_VGA_IOBASE ((_IO_BASE)+0x3c0)
+#if defined(mvme2300)
+#define MVME_HAS_DEC21140
+#endif
+#endif
+
#define BSP_CONSOLE_PORT BSP_UART_COM1
#define BSP_UART_BAUD_BASE 115200
@@ -60,9 +92,11 @@
#define inport_byte(port,value) (value = inb(port))
#define inport_word(port,value) (value = inw(port))
#define inport_long(port,value) (value = inl(port))
+
/*
* Vital Board data Start using DATA RESIDUAL
*/
+
/*
* Total memory using RESIDUAL DATA
*/
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.am
index b927d7e433..c076ce56a1 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/wrapup/Makefile.am
@@ -12,7 +12,7 @@ ___libbsp_a_LIBADD = ../startup$(LIB_VARIANT).rel \
../irq$(LIB_VARIANT).rel ../openpic$(LIB_VARIANT).rel \
../pci$(LIB_VARIANT).rel ../residual$(LIB_VARIANT).rel \
../vectors$(LIB_VARIANT).rel ../motorola$(LIB_VARIANT).rel \
- ../vme$(LIB_VARIANT).rel
+ ../tod$(LIB_VARIANT).rel ../vme$(LIB_VARIANT).rel
___libbsp_a_LIBADD += \
../../../../libcpu/@RTEMS_CPU@/shared/cpuIdent$(LIB_VARIANT).rel \
../../../../libcpu/@RTEMS_CPU@/shared/stack$(LIB_VARIANT).rel \