summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/motorola_powerpc
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2011-07-16 01:29:45 +0000
committerTill Straumann <strauman@slac.stanford.edu>2011-07-16 01:29:45 +0000
commitf616734f3ad754aa9b7cefaa0fb0e03c7a5b6b3a (patch)
treebb2e6de202975e79dc37fb3e9f83127c127857a7 /c/src/lib/libbsp/powerpc/motorola_powerpc
parent2011-07-15 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-f616734f3ad754aa9b7cefaa0fb0e03c7a5b6b3a.tar.bz2
2011-07-15 Till Straumann <strauman@slac.stanford.edu>
* motorola_powerpc/Makefile.am, motorola_powerpc/configure.ac, motorola_powerpc/preinstall.am, motorola_powerpc/include/bsp.h, motorola_powerpc/make/custom/qemuprep.cfg, motorola_powerpc/qemu_fakerom/Makefile.am, motorola_powerpc/qemu_fakerom/.cvsignore: Added 'qemuprep' BSP variant.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/motorola_powerpc')
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog9
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am25
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac13
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h31
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/make/custom/qemuprep.cfg36
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/preinstall.am7
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/.cvsignore1
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/Makefile.am31
8 files changed, 150 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog
index d0eee5c7f5..061f5f3853 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog
@@ -1,3 +1,12 @@
+2011-07-15 Till Straumann <strauman@slac.stanford.edu>
+
+ * motorola_powerpc/Makefile.am,
+ motorola_powerpc/configure.ac, motorola_powerpc/preinstall.am,
+ motorola_powerpc/include/bsp.h, motorola_powerpc/make/custom/qemuprep.cfg,
+ motorola_powerpc/qemu_fakerom/Makefile.am,
+ motorola_powerpc/qemu_fakerom/.cvsignore:
+ Added 'qemuprep' BSP variant.
+
2011-06-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove references to non-existing files.
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am
index 03892c5006..19b803b05f 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/Makefile.am
@@ -4,7 +4,11 @@
ACLOCAL_AMFLAGS = -I ../../../../aclocal
-SUBDIRS = . bootloader
+SUBDIRS = .
+SUBDIRS+= bootloader
+if QEMU
+SUBDIRS+= qemu_fakerom
+endif
include $(top_srcdir)/../../../../automake/compile.am
@@ -49,9 +53,12 @@ libbsp_a_SOURCES += ../../powerpc/shared/startup/bspstart.c \
../../powerpc/shared/startup/zerobss.c \
../../powerpc/shared/startup/pgtbl_setup.c \
../../powerpc/shared/startup/pgtbl_activate.c \
+ ../../powerpc/shared/startup/ppc_idle.c \
../../powerpc/shared/startup/sbrk.c ../../shared/bootcard.c \
../../shared/bspclean.c ../../shared/bsplibc.c ../../shared/bsppost.c \
../../shared/gnatinstallhandler.c
+
+
# tod
libbsp_a_SOURCES += ../../shared/tod.c ../../powerpc/shared/tod/todcfg.c
# pclock
@@ -127,6 +134,18 @@ libbsp_a_SOURCES += ../../shared/vmeUniverse/vmeUniverse.c \
../../powerpc/shared/vme/vme_universe.c \
../../powerpc/shared/vme/VMEConfig.h
+if QEMU
+if HAS_NETWORKING
+nodist_include_HEADERS += $(srcdir)/../../i386/pc386/include/wd80x3.h
+ne2000_CPPFLAGS = -D__INSIDE_RTEMS_BSD_TCPIP_STACK__
+ne2000_CPPFLAGS += '-Dbsp_cmdline_arg=rtems_bsp_cmdline_get_param_raw'
+noinst_PROGRAMS += ne2000.rel
+ne2000_rel_SOURCES = ../../i386/pc386/ne2000/ne2000.c
+ne2000_rel_CPPFLAGS = $(AM_CPPFLAGS) $(ne2000_CPPFLAGS)
+ne2000_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+endif
+endif
+
libbsp_a_LIBADD = \
polledIO.rel \
../../../libcpu/@RTEMS_CPU@/shared/cache.rel \
@@ -139,6 +158,10 @@ libbsp_a_LIBADD = \
../../../libcpu/@RTEMS_CPU@/mpc6xx/mmu.rel \
../../../libcpu/@RTEMS_CPU@/mpc6xx/timer.rel
+if QEMU
+libbsp_a_LIBADD+=ne2000.rel
+endif
+
EXTRA_DIST = BOOTING README.mtx603e README.MVME2100 README.MVME2300 \
README.MVME2400 \
README.OTHERBOARDS
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac b/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac
index f2f895caa9..694e9dafbd 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/configure.ac
@@ -48,12 +48,21 @@ RTEMS_BSPOPTS_SET([mpc8240],[*],[])
RTEMS_BSPOPTS_HELP([mpc8240],
[Defined for boards with MPC8240 -- undefined for others])
+RTEMS_BSPOPTS_SET([qemu],[qemuprep],[1])
+RTEMS_BSPOPTS_SET([qemu],[*],[])
+RTEMS_BSPOPTS_HELP([qemu],[Defined for QEMU BSP -- undefined for others])
+
RTEMS_BSP_CLEANUP_OPTIONS(0, 0)
# Explicitly list all Makefiles here
-AC_CONFIG_FILES([Makefile
-bootloader/Makefile])
+AC_CONFIG_FILES([Makefile])
+if test xx"${RTEMS_BSP}" = xxqemuprep ; then
+AC_CONFIG_FILES([qemu_fakerom/Makefile])
+fi
+AC_CONFIG_FILES([bootloader/Makefile])
RTEMS_PPC_EXCEPTIONS
+AM_CONDITIONAL([QEMU],[test xx"${RTEMS_BSP}" = xxqemuprep])
+
AC_OUTPUT
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 5b7e5ff255..f1e7fd5ff5 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/include/bsp.h
@@ -19,6 +19,14 @@
#include <libcpu/io.h>
#include <rtems/clockdrv.h>
#include <bsp/vectors.h>
+
+#ifdef qemu
+#include <rtems/bspcmdline.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
* confdefs.h overrides for this BSP:
@@ -86,11 +94,17 @@
#else
#define _IO_BASE PREP_ISA_IO_BASE
#define _ISA_MEM_BASE PREP_ISA_MEM_BASE
+#ifndef qemu
/* 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_WIN0 0
+#else
+#define PCI_DRAM_OFFSET 0
+#define PCI_MEM_BASE 0
+#define PCI_MEM_WIN0 PREP_ISA_MEM_BASE
+#endif
#endif
@@ -112,8 +126,10 @@
#define BSP_UART_IOBASE_COM1 ((_IO_BASE)+0x3f8)
#define BSP_UART_IOBASE_COM2 ((_IO_BASE)+0x2f8)
+#if ! defined(qemu)
#define BSP_KBD_IOBASE ((_IO_BASE)+0x60)
#define BSP_VGA_IOBASE ((_IO_BASE)+0x3c0)
+#endif
#if defined(mvme2300)
#define MVME_HAS_DEC21140
@@ -130,6 +146,17 @@ struct rtems_bsdnet_ifconfig;
extern int rtems_dec21140_driver_attach();
#endif
+#ifdef qemu
+#define RTEMS_BSP_NETWORK_DRIVER_NAME "ne1"
+#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_ne_driver_attach
+extern int rtems_ne_driver_attach();
+#endif
+
+#ifdef qemu
+#define BSP_IDLE_TASK_BODY bsp_ppc_idle_task_body
+extern void *bsp_ppc_idle_task_body(uintptr_t arg);
+#endif
+
#include <bsp/openpic.h>
/* BSP_PIC_DO_EOI is optionally used by the 'vmeUniverse' driver
* to implement VME IRQ priorities in software.
@@ -208,4 +235,8 @@ extern unsigned long _BSP_clear_hostbridge_errors(int enableMCP, int quiet);
#endif
+#ifdef __cplusplus
+};
+#endif
+
#endif
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/make/custom/qemuprep.cfg b/c/src/lib/libbsp/powerpc/motorola_powerpc/make/custom/qemuprep.cfg
new file mode 100644
index 0000000000..3c767d8420
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/make/custom/qemuprep.cfg
@@ -0,0 +1,36 @@
+#
+# Config file for the PowerPC 604 based mvme2307
+#
+# $Id$
+#
+
+include $(RTEMS_ROOT)/make/custom/default.cfg
+
+RTEMS_CPU=powerpc
+RTEMS_CPU_MODEL=mpc604
+
+# This contains the compiler options necessary to select the CPU model
+# and (hopefully) optimize for it.
+#
+CPU_CFLAGS = -mcpu=powerpc -mmultiple -mstring -mstrict-align -D__ppc_generic
+
+# optimize flag: typically -O2
+CFLAGS_OPTIMIZE_V = -O2 -g
+
+ifdef PURE_BINARY
+define bsp-post-link
+ $(default-bsp-post-link)
+ $(OBJCOPY) -O binary -R .comment -S $(basename $@).exe $(basename $@)$(DOWNEXT)
+endef
+else
+define bsp-post-link
+ $(default-bsp-post-link)
+ $(OBJCOPY) -O binary -R .comment -S $(basename $@).exe rtems
+ gzip -vf9 rtems
+ $(LD) -o $(basename $@)$(DOWNEXT) $(PROJECT_RELEASE)/lib/bootloader.o \
+ --just-symbols=$(basename $@).exe \
+ -b binary rtems.gz -T $(PROJECT_RELEASE)/lib/ppcboot.lds \
+ -Map $(basename $@).map && chmod 755 $@
+ rm -f rtems.gz
+endef
+endif
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/preinstall.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/preinstall.am
index 9b7ef80ce8..5430c687b7 100644
--- a/c/src/lib/libbsp/powerpc/motorola_powerpc/preinstall.am
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/preinstall.am
@@ -145,3 +145,10 @@ $(PROJECT_INCLUDE)/bsp/VMEDMA.h: ../../shared/vmeUniverse/VMEDMA.h $(PROJECT_INC
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/VMEDMA.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/VMEDMA.h
+if QEMU
+if HAS_NETWORKING
+$(PROJECT_INCLUDE)/wd80x3.h: $(srcdir)/../../i386/pc386/include/wd80x3.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/wd80x3.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/wd80x3.h
+endif
+endif
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/.cvsignore b/c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/.cvsignore
new file mode 100644
index 0000000000..70845e08eb
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/.cvsignore
@@ -0,0 +1 @@
+Makefile.in
diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/Makefile.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/Makefile.am
new file mode 100644
index 0000000000..ddd81381ec
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/Makefile.am
@@ -0,0 +1,31 @@
+##
+## $Id$
+##
+
+## NOTE: This Makefile.am does not apply RTEMS's compilation rules.
+ACLOCAL_AMFLAGS = -I ../../../../aclocal
+
+include $(top_srcdir)/../../../../automake/compile.am
+include $(top_srcdir)/../../bsp.am
+
+AUTOMAKE_OPTIONS = no-exeext
+
+project_lib_DATA = qemu_fakerom.$(OBJEXT)
+project_lib_DATA += qemu_fakerom.elf
+project_lib_DATA += qemu_fakerom.bin
+
+
+## IMPORTANT: head.S must be first, T. Straumann 12/17/2001
+qemu_fakerom.$(OBJEXT): ../../../powerpc/shared/bootloader/qemu_fakerom.S
+ $(CPPASCOMPILE) -c -o $@ $^
+
+qemu_fakeres.$(OBJEXT): ../../../powerpc/shared/bootloader/qemu_fakeres.c
+ $(CC) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o $@ $^
+
+qemu_fakerom.elf: qemu_fakerom.$(OBJEXT) qemu_fakeres.$(OBJEXT)
+ $(LD) -o $@ $^ -nostdlib -Ttext 0xfff00000 --section-start=.romentry=0xfffffffc
+
+qemu_fakerom.bin: qemu_fakerom.$(OBJEXT) qemu_fakeres.$(OBJEXT)
+ $(LD) -o $@ $^ --oformat binary -nostdlib -Ttext 0xfff00000 --section-start=.romentry=0xfffffffc
+
+include $(top_srcdir)/../../../../automake/local.am