2010-06-17 Joel Sherrill <joel.sherrill@oarcorp.com>

* ChangeLog, Makefile.am, README, bsp_specs, configure.ac,
	preinstall.am, include/bsp.h, include/tm27.h,
	make/custom/niagara.cfg, start/bspinit.S: New files.
This commit is contained in:
Joel Sherrill
2010-06-17 16:20:34 +00:00
parent c56982c86e
commit 4d6f5f5fcd
10 changed files with 502 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
2010-06-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* ChangeLog, Makefile.am, README, bsp_specs, configure.ac,
preinstall.am, include/bsp.h, include/tm27.h,
make/custom/niagara.cfg, start/bspinit.S: New files.
2010-06-05 Gedare Bloom <gedare@gwmail.gwu.edu>
* Makefile.am: Move console driver to ../shared directory.
2010-05-15 Gedare Bloom <gedare@gwmail.gwu.edu>
* Makefile.am: Update to new ../helenos directory layout.
2010-05-13 Gedare Bloom <gedare@gwmail.gwu.edu>
* start/bspinit.S: New file.
2010-05-03 Gedare Bloom <gedare@gwmail.gwu.edu>
* Makefile.am: Add shared-score.rel to libadd.
2010-05-02 Gedare Bloom <gedare@gwmail.gwu.edu>
* Makefile.am: Uses model specific libcpu/syscall
2009-10-19 Eugen Leontie
* ChangeLog: New file.

View File

@@ -0,0 +1,83 @@
##
## $Id$
##
ACLOCAL_AMFLAGS = -I ../../../../aclocal
include $(top_srcdir)/../../../../automake/compile.am
include $(top_srcdir)/../../bsp.am
include_bspdir = $(includedir)/bsp
dist_project_lib_DATA = bsp_specs
include_HEADERS = include/bsp.h
include_HEADERS += include/tm27.h
include_HEADERS += ../shared/include/asm.h
include_bootdir = $(includedir)/boot
include_boot_HEADERS = ../shared/helenos/boot/include/align.h \
../shared/helenos/boot/include/balloc.h \
../shared/helenos/boot/include/gentypes.h \
../shared/helenos/boot/include/main.h \
../shared/helenos/boot/include/ofwarch.h \
../shared/helenos/boot/include/ofw.h \
../shared/helenos/boot/include/ofw_tree.h \
../shared/helenos/boot/include/register.h \
../shared/helenos/boot/include/stack.h \
../shared/helenos/boot/include/types.h
nodist_include_HEADERS = include/bspopts.h
nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
nodist_include_HEADERS += ../../shared/include/coverhd.h
EXTRA_DIST = ../shared/start/start.S
start.$(OBJEXT): ../shared/start/start.S
$(CPPASCOMPILE) -o $@ -c $<
project_lib_DATA = start.$(OBJEXT)
dist_project_lib_DATA += ../shared/startup/linkcmds
startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \
../../shared/bsppredriverhook.c ../../shared/bsppretaskinghook.c \
../../shared/bsppost.c \
../../shared/bootcard.c ../../shared/sbrk.c \
../shared/startup/bspgetworkarea.c \
../shared/startup/bspstart.c \
../shared/startup/setvec.c \
../../shared/gnatinstallhandler.c \
../shared/helenos/boot/genarch/balloc.c \
../shared/helenos/boot/genarch/ofw.c \
../shared/helenos/boot/genarch/ofw_tree.c \
../shared/helenos/boot/generic/string.c \
../shared/helenos/boot/sparc64/loader/ofwarch.c \
../shared/helenos/boot/sparc64/loader/main.c \
../shared/helenos/boot/sparc64/loader/ofwasm.S \
start/bspinit.S \
../shared/asm/asm.S
#clock_SOURCES = ../../shared/clock_driver_simidle.c
clock_SOURCES = ../shared/clock/ckinit.c
console_SOURCES = ../../shared/console.c ../shared/console/conscfg.c
timer_SOURCES = ../../shared/timerstub.c
noinst_LIBRARIES = libbsp.a
libbsp_a_SOURCES = $(startup_SOURCES) $(clock_SOURCES) $(console_SOURCES) \
$(timer_SOURCES)
libbsp_a_LIBADD = \
../../../libcpu/@RTEMS_CPU@/shared/shared-score.rel \
../../../libcpu/@RTEMS_CPU@/shared/cache.rel \
../../../libcpu/@RTEMS_CPU@/shared/interrupts.rel \
../../../libcpu/@RTEMS_CPU@/shared/sparc64-syscall.rel
EXTRA_DIST += times
include $(srcdir)/preinstall.am
include $(top_srcdir)/../../../../automake/local.am

View File

@@ -0,0 +1,69 @@
#
# $Id$
#
BSP NAME: niagara
BOARD:
BUS: n/a
CPU FAMILY: SPARC V9 with UltraSPARC Architecture 2005 (a.k.a. sun4v)
CPU: UltraSPARC T1 (OpenSPARC T1)
COPROCESSORS:
MODE: n/a
DEBUG MONITOR:
PERIPHERALS
===========
TIMERS: TICK and STICK registers (ASRs 4 and 24)
RESOLUTION: CPU clock resolution
SERIAL PORTS:
REAL-TIME CLOCK:
DMA: none
VIDEO: none
SCSI: none
NETWORKING: none
DRIVER INFORMATION
==================
CLOCK DRIVER:
IOSUPP DRIVER:
SHMSUPP:
TIMER DRIVER:
TTY DRIVER:
STDIO
=====
PORT:
ELECTRICAL:
BAUD:
BITS PER CHARACTER:
PARITY:
STOP BITS:
NOTES
=====
Board description
-----------------
clock rate:
bus width:
ROM:
RAM:
This BSP is designed to operate on the UltraSPARC T1 (Niagara) SPARC64
and similar processors.
This BSP has been run on the Simics simulator with the niagara target, which
simulates the OpenSPARC T1 Niagara implementation.
This BSP has been run on the M5 simulator with the SPARC_FS target, which
simulates the OpenSPARC T1 Niagara implementation.
Simics:
A commercially available simulator licensed by Virtutech.
https://www.simics.net/
M5:
An open-source simulator.
http://www.m5sim.org/wiki/index.php/Main_Page

View File

@@ -0,0 +1,15 @@
%rename endfile old_endfile
%rename startfile old_startfile
%rename link old_link
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s crtbegin.o%s -e _start}}
*endfile:
%{!qrtems: %(old_endfile)} \
%{!nostdlib: %{qrtems: crtend.o%s}}
*link:
%(old_link) %{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}

View File

@@ -0,0 +1,22 @@
## Process this file with autoconf to produce a configure script.
##
## $Id$
AC_PREREQ(2.60)
AC_INIT([rtems-c-src-lib-libbsp-sparc64-sun4v],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
AC_CONFIG_SRCDIR([bsp_specs])
RTEMS_TOP(../../../../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.10])
RTEMS_BSP_CONFIGURE
RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm])
RTEMS_CANONICALIZE_TOOLS
RTEMS_PROG_CCAS
RTEMS_BSP_CLEANUP_OPTIONS(0, 0)
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -0,0 +1,69 @@
/* bsp.h
*
* This include file contains all SPARC64 simulator definitions.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* COPYRIGHT (c) 1995.
* European Space Agency.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* Ported to Simics Niagara version of SPARC64
* Niagara modifications of respective RTEMS file: COPYRIGHT (c) 2010.
* Eugen Leontie.
*
* $Id$
*/
#ifndef _BSP_H
#define _BSP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bspopts.h>
#include <rtems.h>
#include <rtems/iosupp.h>
#include <rtems/console.h>
#include <rtems/clockdrv.h>
/* support for simulated clock tick */
/*
Thread clock_driver_sim_idle_body(uintptr_t);
#define BSP_IDLE_TASK_BODY clock_driver_sim_idle_body
*/
/* this should be defined somewhere */
rtems_isr_entry set_vector( /* returns old vector */
rtems_isr_entry handler, /* isr routine */
rtems_vector_number vector, /* vector number */
int type /* RTEMS or RAW intr */
);
/*
* Simple spin delay in microsecond units for device drivers.
* This is very dependent on the clock speed of the target.
*/
#define rtems_bsp_delay( microseconds ) \
{ register uint32_t _delay=(microseconds); \
register uint32_t _tmp = 0; /* initialized to avoid warning */ \
asm volatile( "0: \
remo 3,31,%0 ; \
cmpo 0,%0 ; \
subo 1,%1,%1 ; \
cmpobne.t 0,%1,0b " \
: "=d" (_tmp), "=d" (_delay) \
: "0" (_tmp), "1" (_delay) ); \
}
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,32 @@
/*
* tm27.h
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#ifndef _RTEMS_TMTEST27
#error "This is an RTEMS internal file you must not include directly."
#endif
#ifndef __tm27_h
#define __tm27_h
/*
* Define the interrupt mechanism for Time Test 27
*/
#define MUST_WAIT_FOR_INTERRUPT 0
#define Install_tm27_vector( handler ) /* set_vector( (handler), 6, 1 ) */
#define Cause_tm27_intr() /* XXX */
#define Clear_tm27_intr() /* XXX */
#define Lower_tm27_intr() /* empty */
#endif

View File

@@ -0,0 +1,24 @@
#
# Config file for the Niagara SPARC64 processor.
#
# $Id$
#
include $(RTEMS_ROOT)/make/custom/default.cfg
RTEMS_CPU=sparc64
RTEMS_CPU_MODEL=sun4v
# This is the actual bsp directory used during the build process.
RTEMS_BSP_FAMILY=niagara
# This contains the compiler options necessary to select the CPU model
# and (hopefully) optimize for it.
#CPU_CFLAGS = -mcpu=niagara -DSUN4V -msoft-float
#CPU_CFLAGS = -mcpu=niagara -DSUN4V -DRTEMS_DEBUG -DDEBUG_WORKSPACE
#CPU_CFLAGS = -mcpu=niagara -DSUN4V -DRTEMS_DEBUG -DDEBUG_WORKSPACE -DHAVE___ASSERT_FUNC -DBSP_GET_WORK_AREA_DEBUG -DGICADEBUG
#CPU_CFLAGS = -mcpu=niagara -DSUN4V -DGICADEBUG
CPU_CFLAGS = -mcpu=niagara -DSUN4V
#CPU_CFLAGS = -mcpu=niagara -DSUN4V -DRTEMS_DEBUG -DHAVE___ASSERT_FUNC
# optimize flag: typically -O2
CFLAGS_OPTIMIZE_V = -gstabs

View File

@@ -0,0 +1,124 @@
## 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-local: $(TMPINSTALL_FILES)
TMPINSTALL_FILES =
CLEANFILES = $(TMPINSTALL_FILES)
all-am: $(PREINSTALL_FILES)
PREINSTALL_FILES =
CLEANFILES += $(PREINSTALL_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: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
$(PROJECT_INCLUDE)/asm.h: ../shared/include/asm.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/asm.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/asm.h
$(PROJECT_INCLUDE)/boot/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)/boot
@: > $(PROJECT_INCLUDE)/boot/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(PROJECT_INCLUDE)/boot/align.h: ../shared/helenos/boot/include/align.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/align.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/align.h
$(PROJECT_INCLUDE)/boot/balloc.h: ../shared/helenos/boot/include/balloc.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/balloc.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/balloc.h
$(PROJECT_INCLUDE)/boot/gentypes.h: ../shared/helenos/boot/include/gentypes.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/gentypes.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/gentypes.h
$(PROJECT_INCLUDE)/boot/main.h: ../shared/helenos/boot/include/main.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/main.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/main.h
$(PROJECT_INCLUDE)/boot/ofwarch.h: ../shared/helenos/boot/include/ofwarch.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/ofwarch.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/ofwarch.h
$(PROJECT_INCLUDE)/boot/ofw.h: ../shared/helenos/boot/include/ofw.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/ofw.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/ofw.h
$(PROJECT_INCLUDE)/boot/ofw_tree.h: ../shared/helenos/boot/include/ofw_tree.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/ofw_tree.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/ofw_tree.h
$(PROJECT_INCLUDE)/boot/register.h: ../shared/helenos/boot/include/register.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/register.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/register.h
$(PROJECT_INCLUDE)/boot/stack.h: ../shared/helenos/boot/include/stack.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/stack.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/stack.h
$(PROJECT_INCLUDE)/boot/types.h: ../shared/helenos/boot/include/types.h $(PROJECT_INCLUDE)/boot/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/boot/types.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/boot/types.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: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
$(PROJECT_LIB)/asm.$(OBJEXT): asm.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/asm.$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/asm.$(OBJEXT)
$(PROJECT_LIB)/bspinit.$(OBJEXT): bspinit.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/bspinit.$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/bspinit.$(OBJEXT)
$(PROJECT_LIB)/linkcmds: ../shared/startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds

View File

@@ -0,0 +1,35 @@
/*
* bspinit.S
*
* BSP specific initialization for Sparc64 RTEMS -- sun4v BSP
*
* COPYRIGHT (c) 2010 Gedare Bloom.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* This code defines start code specific to the sun4v BSP
*
* $Id$
*
*/
#include <rtems/asm.h>
#include <rtems/score/cpu.h>
#define STACK_WINDOW_SAVE_AREA_SIZE (16*8)
.section .text
PUBLIC(_BSP_init)
.global _BSP_init
SYM(_BSP_init):
save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp
ret
restore