diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-06-17 16:20:39 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-06-17 16:20:39 +0000 |
commit | df970844195f6814e35f12ad5e585f4645c2f152 (patch) | |
tree | 8bf1c5169e6db37568123585ddb9892a2e9bfead /c/src/lib/libbsp | |
parent | 2010-06-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-df970844195f6814e35f12ad5e585f4645c2f152.tar.bz2 |
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/usiii.cfg,
start/bspinit.S: New files.
Diffstat (limited to 'c/src/lib/libbsp')
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/ChangeLog | 35 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/Makefile.am | 135 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/README | 61 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/bsp_specs | 15 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/configure.ac | 29 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/include/bsp.h | 71 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/include/tm27.h | 32 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/make/custom/usiii.cfg | 27 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/preinstall.am | 222 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc64/usiii/start/bspinit.S | 51 |
10 files changed, 678 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/sparc64/usiii/ChangeLog b/c/src/lib/libbsp/sparc64/usiii/ChangeLog new file mode 100644 index 0000000000..cb1d298b34 --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/ChangeLog @@ -0,0 +1,35 @@ +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/usiii.cfg, + start/bspinit.S: New files. + +2010-06-05 Gedare Bloom <gedare@gwmail.gwu.edu> + + * make/custom/usiii.cfg: Moved sun4u.cfg to usiii.cfg + +2010-06-05 Gedare Bloom <gedare@gwmail.gwu.edu> + + * README: New file. + +2010-06-05 Gedare Bloom <gedare@gwmail.gwu.edu> + + * Makefile.am: Use ../shared/console driver. + +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. + * start/bspinit.S: Call memcpy to copy OFW's trap table. + +2010-05-10 Gedare Bloom <gedare@gwmail.gwu.edu> + + * configure.ac Makefile.am bsp_specs include/bsp.h make/custom/sun4u.cfg: + New files. Copied from sun4v.cfg. + +2010-05-10 Gedare Bloom <gedare@gwmail.gwu.edu> + + * ChangeLog: New file. diff --git a/c/src/lib/libbsp/sparc64/usiii/Makefile.am b/c/src/lib/libbsp/sparc64/usiii/Makefile.am new file mode 100644 index 0000000000..8e9a4cabdc --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/Makefile.am @@ -0,0 +1,135 @@ +## +## $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_HEADERS += ../shared/include/traptable.h + +## these are the include files used by the boot process from HelenOS Sparc64 +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 + +## These include files mimic the HelenOS kernel include layout, which +## in HelenOS-0.4.2 is more complicated than the boot include dirs. + +# assumed by the HelenOS sources to be in the root includedir. We place them +# in a kernel include directory. +include_kerneldir = $(includedir)/kernel +include_kernel_HEADERS = \ + ../shared/helenos/kernel/generic/include/align.h + +include_archdir = $(includedir)/arch +include_arch_HEADERS = \ + ../shared/helenos/kernel/sparc64/include/arch.h \ + ../shared/helenos/kernel/sparc64/include/boot.h \ + ../shared/helenos/kernel/sparc64/include/regdef.h \ + ../shared/helenos/kernel/sparc64/include/stack.h + +include_arch_sun4udir = $(includedir)/arch/sun4u +include_arch_sun4u_HEADERS = \ + ../shared/helenos/kernel/sparc64/include/sun4u/arch.h + +include_arch_mmdir = $(includedir)/arch/mm +include_arch_mm_HEADERS = \ + ../shared/helenos/kernel/sparc64/include/mm/cache_spec.h \ + ../shared/helenos/kernel/sparc64/include/mm/frame.h \ + ../shared/helenos/kernel/sparc64/include/mm/mmu.h \ + ../shared/helenos/kernel/sparc64/include/mm/page.h \ + ../shared/helenos/kernel/sparc64/include/mm/tlb.h \ + ../shared/helenos/kernel/sparc64/include/mm/tte.h + + +include_arch_mm_sun4udir = $(includedir)/arch/mm/sun4u +include_arch_mm_sun4u_HEADERS = \ + ../shared/helenos/kernel/sparc64/include/mm/sun4u/frame.h \ + ../shared/helenos/kernel/sparc64/include/mm/sun4u/mmu.h \ + ../shared/helenos/kernel/sparc64/include/mm/sun4u/page.h \ + ../shared/helenos/kernel/sparc64/include/mm/sun4u/tlb.h \ + ../shared/helenos/kernel/sparc64/include/mm/sun4u/tte.h + +include_genarch_ofwdir = $(includedir)/genarch/ofw +include_genarch_ofw_HEADERS = \ + ../shared/helenos/kernel/genarch/include/ofw/ofw_tree.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 \ + ../shared/asm/asm.S \ + start/bspinit.S + +mmu_SOURCES = \ + ../shared/helenos/kernel/sparc64/src/cache.S \ + ../shared/helenos/kernel/sparc64/src/sun4u/takemmu.S \ + ../shared/start/trap_table.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) $(mmu_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 diff --git a/c/src/lib/libbsp/sparc64/usiii/README b/c/src/lib/libbsp/sparc64/usiii/README new file mode 100644 index 0000000000..48514dc8d0 --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/README @@ -0,0 +1,61 @@ +# +# $Id$ +# + +BSP NAME: usiii +BOARD: +BUS: n/a +CPU FAMILY: SPARC V9 (a.k.a. sun4u) +CPU: UltraSPARC III +COPROCESSORS: +MODE: n/a + +DEBUG MONITOR: + +PERIPHERALS +=========== +TIMERS: TICK register (ASR 4) + 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 III SPARC64 +and similar processors. + +This BSP has been run on the Simics simulator with the serengeti target. + +Simics: +A commercially available simulator licensed by Virtutech. +https://www.simics.net/ + diff --git a/c/src/lib/libbsp/sparc64/usiii/bsp_specs b/c/src/lib/libbsp/sparc64/usiii/bsp_specs new file mode 100644 index 0000000000..640e73a53d --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/bsp_specs @@ -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} + diff --git a/c/src/lib/libbsp/sparc64/usiii/configure.ac b/c/src/lib/libbsp/sparc64/usiii/configure.ac new file mode 100644 index 0000000000..b07437156e --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/configure.ac @@ -0,0 +1,29 @@ +## Process this file with autoconf to produce a configure script. +## +## $Id$ + +AC_PREREQ(2.60) +AC_INIT([rtems-c-src-lib-libbsp-sparc64-sun4u],[_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_BSPOPTS_SET([SIMSPARC_FAST_IDLE],[*],[]) +RTEMS_BSPOPTS_HELP([SIMSPARC_FAST_IDLE], +[If defined, speed up the clock ticks while the idle task is running so +time spent in the idle task is minimized. This significantly reduces +the wall time required to execute the RTEMS test suites.]) + + +RTEMS_BSP_CLEANUP_OPTIONS(0, 0) + +# Explicitly list all Makefiles here +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/c/src/lib/libbsp/sparc64/usiii/include/bsp.h b/c/src/lib/libbsp/sparc64/usiii/include/bsp.h new file mode 100644 index 0000000000..d52945d5bb --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/include/bsp.h @@ -0,0 +1,71 @@ +/* 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 sun4u version of SPARC64 + * sun4u modifications of respective RTEMS file: + * COPYRIGHT (c) 2010. + * Eugen Leontie + * Gedare Bloom + * + * $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 diff --git a/c/src/lib/libbsp/sparc64/usiii/include/tm27.h b/c/src/lib/libbsp/sparc64/usiii/include/tm27.h new file mode 100644 index 0000000000..971636b3a0 --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/include/tm27.h @@ -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 diff --git a/c/src/lib/libbsp/sparc64/usiii/make/custom/usiii.cfg b/c/src/lib/libbsp/sparc64/usiii/make/custom/usiii.cfg new file mode 100644 index 0000000000..dc5bad95ca --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/make/custom/usiii.cfg @@ -0,0 +1,27 @@ +# +# Config file for the UltraSparc III, IV SPARC64 processors. +# TODO: currently configured and tested only for ultrasparc3 +# +# $Id$ +# +include $(RTEMS_ROOT)/make/custom/default.cfg + +RTEMS_CPU=sparc64 +RTEMS_CPU_MODEL=sun4u + +# This is the actual bsp directory used during the build process. +RTEMS_BSP_FAMILY=usiii + +# This contains the compiler options necessary to select the CPU model +# and (hopefully) optimize for it. +#CPU_CFLAGS = -mcpu=ultrasparc3 -msoft-float +#CPU_CFLAGS = -mcpu=ultrasparc3 -DRTEMS_DEBUG -DDEBUG_WORKSPACE +#CPU_CFLAGS = -mcpu=ultrasparc3 -DRTEMS_DEBUG -DDEBUG_WORKSPACE -DHAVE___ASSERT_FUNC -DBSP_GET_WORK_AREA_DEBUG -DGICADEBUG +#CPU_CFLAGS = -mcpu=ultrasparc3 -DGICADEBUG +CPU_CFLAGS = -mcpu=ultrasparc3 -DUS3 -DSUN4U +#CPU_CFLAGS = -mcpu=ultrasparc3 -mno-fpu +#CPU_CFLAGS = -mcpu=ultrasparc3 -m64 +#CPU_CFLAGS = -mcpu=ultrasparc3 -DRTEMS_DEBUG -DHAVE___ASSERT_FUNC + +# optimize flag: typically -O2 +CFLAGS_OPTIMIZE_V = -gstabs diff --git a/c/src/lib/libbsp/sparc64/usiii/preinstall.am b/c/src/lib/libbsp/sparc64/usiii/preinstall.am new file mode 100644 index 0000000000..73f10f9f2b --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/preinstall.am @@ -0,0 +1,222 @@ +## 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)/traptable.h: ../shared/include/traptable.h $(PROJECT_INCLUDE)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/traptable.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/traptable.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)/kernel/$(dirstamp): + @$(MKDIR_P) $(PROJECT_INCLUDE)/kernel + @: > $(PROJECT_INCLUDE)/kernel/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/kernel/$(dirstamp) + +$(PROJECT_INCLUDE)/kernel/align.h: ../shared/helenos/kernel/generic/include/align.h $(PROJECT_INCLUDE)/kernel/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/kernel/align.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/kernel/align.h + +$(PROJECT_INCLUDE)/arch/$(dirstamp): + @$(MKDIR_P) $(PROJECT_INCLUDE)/arch + @: > $(PROJECT_INCLUDE)/arch/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/arch/$(dirstamp) + +$(PROJECT_INCLUDE)/arch/arch.h: ../shared/helenos/kernel/sparc64/include/arch.h $(PROJECT_INCLUDE)/arch/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/arch.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/arch.h + +$(PROJECT_INCLUDE)/arch/boot.h: ../shared/helenos/kernel/sparc64/include/boot.h $(PROJECT_INCLUDE)/arch/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/boot.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/boot.h + +$(PROJECT_INCLUDE)/arch/regdef.h: ../shared/helenos/kernel/sparc64/include/regdef.h $(PROJECT_INCLUDE)/arch/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/regdef.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/regdef.h + +$(PROJECT_INCLUDE)/arch/stack.h: ../shared/helenos/kernel/sparc64/include/stack.h $(PROJECT_INCLUDE)/arch/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/stack.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/stack.h + +$(PROJECT_INCLUDE)/arch/sun4u/$(dirstamp): + @$(MKDIR_P) $(PROJECT_INCLUDE)/arch/sun4u + @: > $(PROJECT_INCLUDE)/arch/sun4u/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/arch/sun4u/$(dirstamp) + +$(PROJECT_INCLUDE)/arch/sun4u/arch.h: ../shared/helenos/kernel/sparc64/include/sun4u/arch.h $(PROJECT_INCLUDE)/arch/sun4u/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/sun4u/arch.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/sun4u/arch.h + +$(PROJECT_INCLUDE)/arch/mm/$(dirstamp): + @$(MKDIR_P) $(PROJECT_INCLUDE)/arch/mm + @: > $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) + +$(PROJECT_INCLUDE)/arch/mm/cache_spec.h: ../shared/helenos/kernel/sparc64/include/mm/cache_spec.h $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/cache_spec.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/cache_spec.h + +$(PROJECT_INCLUDE)/arch/mm/frame.h: ../shared/helenos/kernel/sparc64/include/mm/frame.h $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/frame.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/frame.h + +$(PROJECT_INCLUDE)/arch/mm/mmu.h: ../shared/helenos/kernel/sparc64/include/mm/mmu.h $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/mmu.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/mmu.h + +$(PROJECT_INCLUDE)/arch/mm/page.h: ../shared/helenos/kernel/sparc64/include/mm/page.h $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/page.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/page.h + +$(PROJECT_INCLUDE)/arch/mm/tlb.h: ../shared/helenos/kernel/sparc64/include/mm/tlb.h $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/tlb.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/tlb.h + +$(PROJECT_INCLUDE)/arch/mm/tte.h: ../shared/helenos/kernel/sparc64/include/mm/tte.h $(PROJECT_INCLUDE)/arch/mm/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/tte.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/tte.h + +$(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp): + @$(MKDIR_P) $(PROJECT_INCLUDE)/arch/mm/sun4u + @: > $(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp) + +$(PROJECT_INCLUDE)/arch/mm/sun4u/frame.h: ../shared/helenos/kernel/sparc64/include/mm/sun4u/frame.h $(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/sun4u/frame.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/sun4u/frame.h + +$(PROJECT_INCLUDE)/arch/mm/sun4u/mmu.h: ../shared/helenos/kernel/sparc64/include/mm/sun4u/mmu.h $(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/sun4u/mmu.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/sun4u/mmu.h + +$(PROJECT_INCLUDE)/arch/mm/sun4u/page.h: ../shared/helenos/kernel/sparc64/include/mm/sun4u/page.h $(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/sun4u/page.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/sun4u/page.h + +$(PROJECT_INCLUDE)/arch/mm/sun4u/tlb.h: ../shared/helenos/kernel/sparc64/include/mm/sun4u/tlb.h $(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/sun4u/tlb.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/sun4u/tlb.h + +$(PROJECT_INCLUDE)/arch/mm/sun4u/tte.h: ../shared/helenos/kernel/sparc64/include/mm/sun4u/tte.h $(PROJECT_INCLUDE)/arch/mm/sun4u/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arch/mm/sun4u/tte.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/arch/mm/sun4u/tte.h + +$(PROJECT_INCLUDE)/genarch/ofw/$(dirstamp): + @$(MKDIR_P) $(PROJECT_INCLUDE)/genarch/ofw + @: > $(PROJECT_INCLUDE)/genarch/ofw/$(dirstamp) +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/genarch/ofw/$(dirstamp) + +$(PROJECT_INCLUDE)/genarch/ofw/ofw_tree.h: ../shared/helenos/kernel/genarch/include/ofw/ofw_tree.h $(PROJECT_INCLUDE)/genarch/ofw/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/genarch/ofw/ofw_tree.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/genarch/ofw/ofw_tree.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)/linkcmds: ../shared/startup/linkcmds $(PROJECT_LIB)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds +PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds + diff --git a/c/src/lib/libbsp/sparc64/usiii/start/bspinit.S b/c/src/lib/libbsp/sparc64/usiii/start/bspinit.S new file mode 100644 index 0000000000..2646c8230b --- /dev/null +++ b/c/src/lib/libbsp/sparc64/usiii/start/bspinit.S @@ -0,0 +1,51 @@ +/* +* bspinit.S +* +* BSP specific initialization for Sparc64 RTEMS -- sun4u 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 sun4u BSP +* +* $Id$ +* +*/ + +#include <rtems/asm.h> +#include <rtems/score/cpu.h> + +#include <traptable.h> + +#define LSU_CR_IM_MASK (0x0004) /* bit 2 */ +#define LSU_CR_DM_MASK (0x0008) /* bit 3 */ + +#define STACK_WINDOW_SAVE_AREA_SIZE (16*8) + +.register %g2, #scratch +.register %g3, #scratch + +.section .text + +PUBLIC(_BSP_init) +.global _BSP_init + SYM(_BSP_init): + save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp + + /* copy firmware trap table so that RTEMS can install ISR handlers */ + setx SYM(trap_table), %l0, %o0 + rdpr %tba, %o1 + set TABLE_SIZE, %o2 + call memcpy + nop + + mov %g0, %o0 + call _take_mmu + nop + + ret + restore + |