From f9877d257769bd19f38189024fc38b14fe5460ca Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 10 Nov 2004 23:50:48 +0000 Subject: 2004-11-10 Richard Campbell * 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. --- .../lib/libbsp/powerpc/motorola_powerpc/ChangeLog | 7 ++ .../libbsp/powerpc/motorola_powerpc/Makefile.am | 22 +++- .../powerpc/motorola_powerpc/README.MVME2100 | 123 +++++++++++++++++++++ .../motorola_powerpc/bootloader/Makefile.am | 2 +- .../libbsp/powerpc/motorola_powerpc/configure.ac | 10 ++ .../libbsp/powerpc/motorola_powerpc/include/bsp.h | 40 ++++++- .../powerpc/motorola_powerpc/wrapup/Makefile.am | 2 +- 7 files changed, 200 insertions(+), 6 deletions(-) create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/README.MVME2100 (limited to 'c/src/lib/libbsp/powerpc/motorola_powerpc') 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 + + * 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 * 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 \ -- cgit v1.2.3