From f616734f3ad754aa9b7cefaa0fb0e03c7a5b6b3a Mon Sep 17 00:00:00 2001 From: Till Straumann Date: Sat, 16 Jul 2011 01:29:45 +0000 Subject: 2011-07-15 Till Straumann * 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. --- .../lib/libbsp/powerpc/motorola_powerpc/ChangeLog | 9 ++++++ .../libbsp/powerpc/motorola_powerpc/Makefile.am | 25 ++++++++++++++- .../libbsp/powerpc/motorola_powerpc/configure.ac | 13 ++++++-- .../libbsp/powerpc/motorola_powerpc/include/bsp.h | 31 +++++++++++++++++++ .../motorola_powerpc/make/custom/qemuprep.cfg | 36 ++++++++++++++++++++++ .../libbsp/powerpc/motorola_powerpc/preinstall.am | 7 +++++ .../motorola_powerpc/qemu_fakerom/.cvsignore | 1 + .../motorola_powerpc/qemu_fakerom/Makefile.am | 31 +++++++++++++++++++ 8 files changed, 150 insertions(+), 3 deletions(-) create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/make/custom/qemuprep.cfg create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/.cvsignore create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/qemu_fakerom/Makefile.am (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 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 + + * 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 * 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 #include #include + +#ifdef qemu +#include +#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_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 -- cgit v1.2.3